diff --git a/privacyidea/api/system.py b/privacyidea/api/system.py index 49c03a845c37235b9ebfcd73bcf7a0e79bae331c..fe32e00b20e40fce4ab49ea0fab520778357090c 100644 --- a/privacyidea/api/system.py +++ b/privacyidea/api/system.py @@ -83,6 +83,25 @@ log = logging.getLogger(__name__) system_blueprint = Blueprint('system_blueprint', __name__) +@system_blueprint.route('/mfa_management_url', methods=['GET']) +@log_with(log) +def mfa_management_url(): + """ + Get the url of site for user's MFA management or an empty string if such url is not configured. + + :return: Url of site that manages MFA or an empty string + :rtype: str + """ + + cfg = current_app.config + manage_mfa_url = cfg.get("PERUN_MANAGE_MFA_SERVICES_URL", "") + + if not manage_mfa_url: + g.audit_object.log({'mfa_management_url': f"Url for management of MFA services could not be provided" + f"because 'PERUN_MANAGE_MFA_SERVICES_URL' was not configured in 'pi.cfg'"}) + + return send_result(manage_mfa_url) + @system_blueprint.route('/documentation', methods=['GET']) @admin_required @prepolicy(check_base_action, request, ACTION.CONFIGDOCUMENTATION) diff --git a/privacyidea/api/token.py b/privacyidea/api/token.py index 59b1dd8bc686d86b9786982e653ea228bdb3930b..8160ba1009adc63fef6de917a2b6141d5ff9b01a 100644 --- a/privacyidea/api/token.py +++ b/privacyidea/api/token.py @@ -55,10 +55,22 @@ # You should have received a copy of the GNU Affero General Public # License along with this program. If not, see <http://www.gnu.org/licenses/>. # +import json +import os +import re +import uuid +import jwt +from datetime import datetime +from http import HTTPStatus + +import requests +import yaml from flask import (Blueprint, request, g, current_app) from ..lib.log import log_with from .lib.utils import optional, send_result, send_csv_result, required, getParam + +from ..lib.tokenclass import ROLLOUTSTATE from ..lib.user import get_user_from_param from ..lib.token import (init_token, get_tokens_paginate, assign_token, unassign_token, remove_token, enable_token, @@ -74,6 +86,7 @@ from ..lib.token import (init_token, get_tokens_paginate, assign_token, assign_tokengroup, unassign_tokengroup, set_tokengroups) from werkzeug.datastructures import FileStorage from cgi import FieldStorage +from perun.connector import AdaptersManager from privacyidea.lib.error import (ParameterError, TokenAdminError) from privacyidea.lib.importotp import (parseOATHcsv, parseSafeNetXML, parseYubicoCSV, parsePSKCdata, GPGImport) @@ -125,6 +138,162 @@ To see how to authenticate read :ref:`rest_auth`. """ +def get_usable_tokens(user, all_user_tokens=None): + if not all_user_tokens: + all_user_tokens = get_tokens(user=user) + + token_dicts = [tokenobject.get_as_dict() for tokenobject in + all_user_tokens] + usable_tokens = [] + + for token in token_dicts: + if ( + token["active"] + and not token["revoked"] + and not token["locked"] + and not token["rollout_state"] == ROLLOUTSTATE.CLIENTWAIT + and not token["rollout_state"] == ROLLOUTSTATE.VERIFYPENDING + ): + usable_tokens.append(token) + + return usable_tokens + + +def get_usable_tokens_count(user, all_user_tokens=None): + usable_tokens = get_usable_tokens(user, all_user_tokens) + return len(usable_tokens) + + +@token_blueprint.route('/count_usable', methods=['GET']) +@prepolicy(check_base_action, request, action=ACTION.COUNT_USABLE) +@event("count_usable_tokens", request, g) +@log_with(log) +def count_usable_api(): + """ + Get the number of usable tokens of given user. + + :jsonparam serial: The serial number of a single token. + + :return: Number of usable tokens of given user + :rtype: int + """ + # If the API is called by a user, we pass the User Object to the function + user = request.User + res = get_usable_tokens_count(user=user) + return send_result(res) + + +def perform_backchannel_logout(user): + cfg = current_app.config + logout_endpoint_url = cfg.get("PERUN_LOGOUT_ENDPOINT_URL") + + if not logout_endpoint_url: + g.audit_object.log({'logout_result_msg': f"Backchannel logout skipped for user '{user.login}' " + f"because 'PERUN_LOGOUT_ENDPOINT_URL' was not configured in 'pi.cfg'"}) + return + + headers = { + "Content-type": "application/x-www-form-urlencoded" + } + jti = str(uuid.uuid4()) + token = { + "iss": cfg.get("PERUN_ISSUER"), + "sub": f"{user.login}@{user.realm}", + "aud": cfg.get("PERUN_AUDIENCE"), + "iat": int(datetime.now().timestamp()), + "jti": jti, + "events": { + "http://schemas.openid.net/event/backchannel-logout": {} + } + } + encoded_token = jwt.encode(payload=token, + key=cfg.get("PERUN_JWT_SIGNKEY"), + algorithm=cfg.get("PERUN_SIGNING_ALG")) + + response = requests.post(logout_endpoint_url, + headers=headers, + data={"logout_token": encoded_token}, + ) + + if response.status_code == HTTPStatus.NO_CONTENT: + g.audit_object.log({'logout_result_msg': f"First token was registered and backchannel " + f"logout was successfully performed for user: '{user.login}'"}) + else: + g.audit_object.log({'logout_result_msg': f"Attempted backchannel logout for user: '" + f"{user.login}' failed with the result '{response.status_code}' - " + f"'{response.text}'"}) + + +def load_attrs_manager_config(config_filepath): + if os.path.exists(config_filepath): + with open(config_filepath, 'r') as f: + config = yaml.safe_load(f) + return config + else: + log.info(f"Attempted to load attributes manager config from " + f"'{config_filepath}' but the file was not found.'") + return None + + +def get_adapters_manager(): + cfg = load_attrs_manager_config('/etc/perun-connector.yaml') + + if not cfg: + log.debug("Wasn't able to load the attributes manager config") + return None + + adapters_manager = AdaptersManager(cfg['attributes_manager_config'], + cfg['attributes_map']) + + return adapters_manager + + +def set_perun_user_attributes(user, attrs_to_set, action_name): + adapters_manager = get_adapters_manager() + + if not adapters_manager: + log.debug( + f"'{action_name}' wasn't performed because the AdaptersManager " + "couldn't be loaded.") + return + + perun_user_id_candidates = re.findall(r'\d+', user.uid) + perun_user_id = int(perun_user_id_candidates[0]) + + adapters_manager.set_user_attributes(perun_user_id, attrs_to_set) + + +def enable_mfa_everywhere(user): + cfg = current_app.config + mfa_enforce_attr_name = cfg.get("PERUN_ENFORCE_MFA_ATTR_NAME") + mfa_enforce_attr_value = "{\"all\":true}" + mfa_enforce_action_name = "MFA activation" + + if not mfa_enforce_attr_name: + g.audit_object.log({'mfa_activation_msg': f"MFA activation skipped for user '{user.login}' " + f"because 'PERUN_ENFORCE_MFA_ATTR_NAME' was not configured in 'pi.cfg'"}) + return + + set_perun_user_attributes(user, + {mfa_enforce_attr_name: mfa_enforce_attr_value}, + mfa_enforce_action_name) + +def update_user_active_token_types(user, all_user_tokens=None): + usable_tokens = get_usable_tokens(user, all_user_tokens) + active_token_types = [token["tokentype"] for token in usable_tokens] + unique_active_token_types = list(set(active_token_types)) + unique_active_token_types.sort() + + cfg = current_app.config + mfa_active_tokens_attr_name = cfg.get("PERUN_AVAILABLE_TOKEN_TYPES_ATTR_NAME") + mfa_active_tokens_attr_value = unique_active_token_types + mfa_enforce_action_name = "Update of user's active token types" + + set_perun_user_attributes(user, + {mfa_active_tokens_attr_name: mfa_active_tokens_attr_value}, + mfa_enforce_action_name) + + @token_blueprint.route('/init', methods=['POST']) @prepolicy(check_max_token_realm, request) @prepolicy(check_max_token_user, request) @@ -306,6 +475,7 @@ def init(): # tokenrealm = res['realms'] user = request.User + user_usable_tokens_before = get_usable_tokens_count(user) tokenobject = init_token(param, user, tokenrealms=tokenrealms) @@ -317,6 +487,12 @@ def init(): init_details = tokenobject.get_init_detail(param, user) response_details.update(init_details) + user_usable_tokens_after = get_usable_tokens_count(user) + has_first_usable_token = user_usable_tokens_before == 0 and user_usable_tokens_after > 0 + if has_first_usable_token: + perform_backchannel_logout(user) + enable_mfa_everywhere(user) + g.audit_object.log({'user': user.login, 'realm': user.realm, 'serial': tokenobject.token.serial, @@ -331,7 +507,7 @@ def init(): # log.debug("setting random pin for token with serial " # "%s and user: %s" % (serial, user)) # setPin(newpin, None, serial) - + # finally we render the info as qr immage, if the qr parameter # is provided and if the token supports this # if 'qr' in param and tokenobject is not None: diff --git a/privacyidea/lib/auditmodules/customloggeraudit.py b/privacyidea/lib/auditmodules/customloggeraudit.py new file mode 100644 index 0000000000000000000000000000000000000000..fccbf0ab25c8b85a08eeffdbf66ccc4607dd6901 --- /dev/null +++ b/privacyidea/lib/auditmodules/customloggeraudit.py @@ -0,0 +1,284 @@ +# -*- coding: utf-8 -*- +# +# 2019-11-06 Cornelius Kölbel <cornelius.koelbel@netknights.it> +# initial code for writing audit information to a file +# 2023-14-04 Peter Bolha <485456@mail.muni.cz> +# addition of custom logging properties +# +# This code is free software; you can redistribute it and/or +# modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +# License as published by the Free Software Foundation; either +# version 3 of the License, or any later version. +# +# This code is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# +__doc__ = """The Logger Audit Module is used to write audit entries to the +Python logging module. + +The Custom Logger Audit Module is configured like this: + + PI_AUDIT_MODULE = "privacyidea.lib.auditmodules.customloggeraudit" + PI_AUDIT_SERVERNAME = "your choice" + + PI_LOGCONFIG = "/etc/privacyidea/logging.cfg" + +The LoggerAudit Class uses the same PI logging config as you could use anyways. +To explicitly write audit logs, you need to add something like the following to +the logging.cfg + +Example: + +[handlers] +keys=file,audit + +[loggers] +keys=root,privacyidea,audit + +... + +[logger_audit] +handlers=audit +qualname=privacyidea.lib.auditmodules.customloggeraudit +level=INFO + +[handler_audit] +class=logging.handlers.RotatingFileHandler +backupCount=14 +maxBytes=10000000 +formatter=detail +level=INFO +args=('/var/log/privacyidea/audit.log',) + +""" + +import json +import logging +import logging.config +from datetime import datetime + +from privacyidea.api.token import get_usable_tokens_count, get_usable_tokens, \ + update_user_active_token_types +from privacyidea.lib.auditmodules.base import Audit as AuditBase +from privacyidea.lib.token import get_tokens +from privacyidea.lib.user import User + + +class Audit(AuditBase): + """ + This is a custom LoggerAudit module, which writes the audit entries + to the Python logging. It builds upon LoggerAudit module and adds custom + information regarding operations with tokes via API. + + .. note:: This audit module does not provide a *Read* capability. + """ + + # TODO adjust docs + # TODO mark that custom loggerfile must exist and have proper + # permissions in order to work + def __init__(self, config=None, startdate=None): + super(Audit, self).__init__(config, startdate) + self.name = "customloggeraudit" + + self.qualname = self.config.get("PI_AUDIT_LOGGER_QUALNAME", __name__) + self.logger = logging.getLogger(self.qualname) + + self.custom_logger_qualname = self.config.get("PERUN_CUSTOM_LOGGER_QUALNAME", + "custom_logger") + self.custom_logger = logging.getLogger(self.custom_logger_qualname) + + def get_user_object(self): + login = self.audit_data["user"] + realm = self.audit_data["realm"] + resolver = self.audit_data["resolver"] + + return User(login=login, realm=realm, resolver=resolver) + + def has_usable_token(self, user, all_user_tokens=None): + return get_usable_tokens_count(user, all_user_tokens) > 0 + + def handle_token_creation(self): + user = self.get_user_object() + all_user_tokens = get_tokens(user=user) + + if len(all_user_tokens) == 1: + token_type = self.audit_data["token_type"] + serial = self.audit_data["serial"] + + if self.has_usable_token(user, all_user_tokens): + self.custom_logger.info( + f"user '{user.login}' has successfully registered their " + f"first " + f"token. It is of type '{token_type}' with serial '" + f"{serial}'" + ) + else: + self.custom_logger.info( + f"user '{user.login}' has attempted registration of " + f"their first token. It was of type '{token_type}' with " + f"serial '{serial}' but something went wrong and the " + f"registered token is not usable." + ) + + update_user_active_token_types(user, all_user_tokens) + + def handle_token_deletion(self): + user = self.get_user_object() + serial = self.audit_data["serial"] + all_user_tokens = get_tokens(user=user) + + if not self.has_usable_token(user, all_user_tokens): + self.custom_logger.info( + f"user '{user.login}' has deleted a token with serial '" + f"{serial}' leaving them with no usable tokens left." + ) + + update_user_active_token_types(user, all_user_tokens) + + def handle_single_token_disabling(self): + user = self.get_user_object() + serial = self.audit_data["serial"] + + if not self.has_usable_token(user): + self.custom_logger.info( + f"user '{user.login}' has disabled a token with serial '" + f"{serial}'. All the remaining user's tokens are not " + f"currently " + f"usable." + ) + + update_user_active_token_types(user) + + def handle_all_tokens_disabling(self): + user = self.get_user_object() + all_user_tokens = get_tokens(user=user) + affected_serials = [ + tokenobject.get_as_dict()["serial"] for tokenobject in + all_user_tokens + ] + self.custom_logger.info( + f"user '{user.login}' has disabled all of their tokens. Affected " + f"token serial numbers: {affected_serials}" + ) + + update_user_active_token_types(user, all_user_tokens) + + def handle_all_tokens_enabling(self): + user = self.get_user_object() + all_user_tokens = get_tokens(user=user) + affected_serials = [ + tokenobject.get_as_dict()["serial"] for tokenobject in + all_user_tokens + ] + all_tokens_enabled_message = ( + f"user '{user.login}' has enabled all " + f"of their tokens. Affected token " + f"serial numbers: " + f"{affected_serials}." + ) + + if not self.has_usable_token(user, all_user_tokens): + all_tokens_enabled_message += ( + " Despite this action, user still does not have any usable " + "tokens." + ) + + self.custom_logger.info(all_tokens_enabled_message) + + update_user_active_token_types(user, all_user_tokens) + + def handle_single_token_enabling(self): + user = self.get_user_object() + serial = self.audit_data["serial"] + + # enabling this token caused the user to have usable tokens again + if get_usable_tokens_count(user) == 1: + self.custom_logger.info( + f"user '{user.login}' has enabled a token with serial '" + f"{serial}'. User has a usable token again." + ) + + update_user_active_token_types(user) + + def handle_single_token_revoking(self): + user = self.get_user_object() + serial = self.audit_data["serial"] + all_user_tokens = get_tokens(user=user) + + if not self.has_usable_token(user, all_user_tokens): + self.custom_logger.info( + f"user '{user.login}' has revoked a token with serial '" + f"{serial}' leaving them with no usable tokens left." + ) + + update_user_active_token_types(user, all_user_tokens) + + def handle_all_tokens_revoking(self): + user = self.get_user_object() + all_user_tokens = get_tokens(user=user) + affected_serials = [ + tokenobject.get_as_dict()["serial"] for tokenobject in + all_user_tokens + ] + self.custom_logger.info( + f"user '{user.login}' has revoked all of their tokens. Affected " + f"token serial numbers: {affected_serials}" + ) + + update_user_active_token_types(user, all_user_tokens) + + def add_custom_log_info(self): + api_call = self.audit_data["action"] + + # creation of a new token + if api_call == "POST /token/init": + self.handle_token_creation() + # deletion of an existing token + elif api_call == "DELETE /token/<serial>": + self.handle_token_deletion() + elif api_call == "POST /token/disable": + # disabling of a single user's token + if self.audit_data["serial"]: + self.handle_single_token_disabling() + # disabling of all user's tokens + else: + self.handle_all_tokens_disabling() + # enabling of all user's tokens + elif api_call == "POST /token/enable": + # enabling of a single user's token + if self.audit_data["serial"]: + self.handle_single_token_enabling() + # enabling of all user's tokens + else: + self.handle_all_tokens_enabling() + elif api_call == "POST /token/revoke": + # revoking of a single user's token + if self.audit_data["serial"]: + self.handle_single_token_revoking() + # revoking of all user's tokens + else: + self.handle_all_tokens_revoking() + + def finalize_log(self): + """ + This method is used to log the data + e.g. write the data to a file. + """ + self.audit_data["policies"] = ",".join( + self.audit_data.get("policies", [])) + self.audit_data["timestamp"] = datetime.utcnow().isoformat() + if self.audit_data.get("startdate"): + duration = datetime.utcnow() - self.audit_data.get("startdate") + self.audit_data["duration"] = "{0!s}".format(duration) + self.audit_data["startdate"] = self.audit_data.get( + "startdate").isoformat() + self.logger.info( + "{0!s}".format(json.dumps(self.audit_data, sort_keys=True))) + self.add_custom_log_info() + self.audit_data = {} diff --git a/privacyidea/lib/policy.py b/privacyidea/lib/policy.py index 12a26ca262602ae7abb5a581dbb214c3bd668c6b..e89898eb8ae403d27f08abf33e73fd366cdcba08 100644 --- a/privacyidea/lib/policy.py +++ b/privacyidea/lib/policy.py @@ -245,6 +245,7 @@ class ACTION(object): GETCHALLENGES = "getchallenges" COPYTOKENPIN = "copytokenpin" COPYTOKENUSER = "copytokenuser" + COUNT_USABLE = "count_usable" DEFAULT_TOKENTYPE = "default_tokentype" DELETE = "delete" DISABLE = "disable" @@ -1626,6 +1627,12 @@ def get_static_policy_definitions(scope=None): 'Admin is allowed to import token files.'), 'mainmenu': [MAIN_MENU.TOKENS], 'group': GROUP.SYSTEM}, + ACTION.COUNT_USABLE: {'type': 'bool', + "desc": _( + "Admin is allowed to get the number " + "of user's usable tokens."), + 'mainmenu': [MAIN_MENU.TOKENS], + 'group': GROUP.TOKEN}, ACTION.DELETE: {'type': 'bool', 'desc': _( 'Admin is allowed to remove tokens from the ' @@ -1997,6 +2004,10 @@ def get_static_policy_definitions(scope=None): "tokens."), 'mainmenu': [MAIN_MENU.TOKENS], 'group': GROUP.TOKEN}, + ACTION.COUNT_USABLE: {'type': 'bool', + "desc": _("The user is allowed to get the number of their usable tokens."), + 'mainmenu': [MAIN_MENU.TOKENS], + 'group': GROUP.TOKEN}, ACTION.DELETE: {'type': 'bool', "desc": _( "The user is allowed to delete his own " diff --git a/privacyidea/static/aegis.svg b/privacyidea/static/aegis.svg new file mode 100644 index 0000000000000000000000000000000000000000..939bba9d50ac97fc27a900e18254c66420c86a43 --- /dev/null +++ b/privacyidea/static/aegis.svg @@ -0,0 +1,4377 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with qrencode 4.1.1 (https://fukuchi.org/works/qrencode/index.html) --> + +<svg + width="4.34cm" + height="4.34cm" + viewBox="0 0 41 41" + preserveAspectRatio="none" + version="1.1" + id="svg1175" + sodipodi:docname="aegis.svg" + xml:space="preserve" + inkscape:version="1.2.2 (732a01da63, 2022-12-09, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs1179" /><sodipodi:namedview + id="namedview1177" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="cm" + showgrid="false" + inkscape:zoom="3.5755327" + inkscape:cx="197.17342" + inkscape:cy="135.50428" + inkscape:window-width="2486" + inkscape:window-height="1376" + inkscape:window-x="74" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="svg1175" /><g + id="QRcode"><rect + x="0" + y="0" + width="41" + height="41" + fill="#ffffff" + id="rect25" /><g + id="Pattern" + transform="translate(4,4)"><rect + x="0" + y="0" + width="1" + height="1" + fill="#000000" + id="rect27" /><rect + x="1" + y="0" + width="1" + height="1" + fill="#000000" + id="rect29" /><rect + x="2" + y="0" + width="1" + height="1" + fill="#000000" + id="rect31" /><rect + x="3" + y="0" + width="1" + height="1" + fill="#000000" + id="rect33" /><rect + x="4" + y="0" + width="1" + height="1" + fill="#000000" + id="rect35" /><rect + x="5" + y="0" + width="1" + height="1" + fill="#000000" + id="rect37" /><rect + x="6" + y="0" + width="1" + height="1" + fill="#000000" + id="rect39" /><rect + x="10" + y="0" + width="1" + height="1" + fill="#000000" + id="rect41" /><rect + x="12" + y="0" + width="1" + height="1" + fill="#000000" + id="rect43" /><rect + x="13" + y="0" + width="1" + height="1" + fill="#000000" + id="rect45" /><rect + x="16" + y="0" + width="1" + height="1" + fill="#000000" + id="rect47" /><rect + x="17" + y="0" + width="1" + height="1" + fill="#000000" + id="rect49" /><rect + x="18" + y="0" + width="1" + height="1" + fill="#000000" + id="rect51" /><rect + x="19" + y="0" + width="1" + height="1" + fill="#000000" + id="rect53" /><rect + x="20" + y="0" + width="1" + height="1" + fill="#000000" + id="rect55" /><rect + x="21" + y="0" + width="1" + height="1" + fill="#000000" + id="rect57" /><rect + x="22" + y="0" + width="1" + height="1" + fill="#000000" + id="rect59" /><rect + x="23" + y="0" + width="1" + height="1" + fill="#000000" + id="rect61" /><rect + x="26" + y="0" + width="1" + height="1" + fill="#000000" + id="rect63" /><rect + x="27" + y="0" + width="1" + height="1" + fill="#000000" + id="rect65" /><rect + x="28" + y="0" + width="1" + height="1" + fill="#000000" + id="rect67" /><rect + x="29" + y="0" + width="1" + height="1" + fill="#000000" + id="rect69" /><rect + x="30" + y="0" + width="1" + height="1" + fill="#000000" + id="rect71" /><rect + x="31" + y="0" + width="1" + height="1" + fill="#000000" + id="rect73" /><rect + x="32" + y="0" + width="1" + height="1" + fill="#000000" + id="rect75" /><rect + x="0" + y="1" + width="1" + height="1" + fill="#000000" + id="rect77" /><rect + x="6" + y="1" + width="1" + height="1" + fill="#000000" + id="rect79" /><rect + x="8" + y="1" + width="1" + height="1" + fill="#000000" + id="rect81" /><rect + x="10" + y="1" + width="1" + height="1" + fill="#000000" + id="rect83" /><rect + x="13" + y="1" + width="1" + height="1" + fill="#000000" + id="rect85" /><rect + x="14" + y="1" + width="1" + height="1" + fill="#000000" + id="rect87" /><rect + x="15" + y="1" + width="1" + height="1" + fill="#000000" + id="rect89" /><rect + x="18" + y="1" + width="1" + height="1" + fill="#000000" + id="rect91" /><rect + x="20" + y="1" + width="1" + height="1" + fill="#000000" + id="rect93" /><rect + x="26" + y="1" + width="1" + height="1" + fill="#000000" + id="rect95" /><rect + x="32" + y="1" + width="1" + height="1" + fill="#000000" + id="rect97" /><rect + x="0" + y="2" + width="1" + height="1" + fill="#000000" + id="rect99" /><rect + x="2" + y="2" + width="1" + height="1" + fill="#000000" + id="rect101" /><rect + x="3" + y="2" + width="1" + height="1" + fill="#000000" + id="rect103" /><rect + x="4" + y="2" + width="1" + height="1" + fill="#000000" + id="rect105" /><rect + x="6" + y="2" + width="1" + height="1" + fill="#000000" + id="rect107" /><rect + x="12" + y="2" + width="1" + height="1" + fill="#000000" + id="rect109" /><rect + x="14" + y="2" + width="1" + height="1" + fill="#000000" + id="rect111" /><rect + x="15" + y="2" + width="1" + height="1" + fill="#000000" + id="rect113" /><rect + x="16" + y="2" + width="1" + height="1" + fill="#000000" + id="rect115" /><rect + x="19" + y="2" + width="1" + height="1" + fill="#000000" + id="rect117" /><rect + x="20" + y="2" + width="1" + height="1" + fill="#000000" + id="rect119" /><rect + x="21" + y="2" + width="1" + height="1" + fill="#000000" + id="rect121" /><rect + x="23" + y="2" + width="1" + height="1" + fill="#000000" + id="rect123" /><rect + x="26" + y="2" + width="1" + height="1" + fill="#000000" + id="rect125" /><rect + x="28" + y="2" + width="1" + height="1" + fill="#000000" + id="rect127" /><rect + x="29" + y="2" + width="1" + height="1" + fill="#000000" + id="rect129" /><rect + x="30" + y="2" + width="1" + height="1" + fill="#000000" + id="rect131" /><rect + x="32" + y="2" + width="1" + height="1" + fill="#000000" + id="rect133" /><rect + x="0" + y="3" + width="1" + height="1" + fill="#000000" + id="rect135" /><rect + x="2" + y="3" + width="1" + height="1" + fill="#000000" + id="rect137" /><rect + x="3" + y="3" + width="1" + height="1" + fill="#000000" + id="rect139" /><rect + x="4" + y="3" + width="1" + height="1" + fill="#000000" + id="rect141" /><rect + x="6" + y="3" + width="1" + height="1" + fill="#000000" + id="rect143" /><rect + x="8" + y="3" + width="1" + height="1" + fill="#000000" + id="rect145" /><rect + x="9" + y="3" + width="1" + height="1" + fill="#000000" + id="rect147" /><rect + x="10" + y="3" + width="1" + height="1" + fill="#000000" + id="rect149" /><rect + x="12" + y="3" + width="1" + height="1" + fill="#000000" + id="rect151" /><rect + x="13" + y="3" + width="1" + height="1" + fill="#000000" + id="rect153" /><rect + x="14" + y="3" + width="1" + height="1" + fill="#000000" + id="rect155" /><rect + x="17" + y="3" + width="1" + height="1" + fill="#000000" + id="rect157" /><rect + x="19" + y="3" + width="1" + height="1" + fill="#000000" + id="rect159" /><rect + x="20" + y="3" + width="1" + height="1" + fill="#000000" + id="rect161" /><rect + x="22" + y="3" + width="1" + height="1" + fill="#000000" + id="rect163" /><rect + x="23" + y="3" + width="1" + height="1" + fill="#000000" + id="rect165" /><rect + x="24" + y="3" + width="1" + height="1" + fill="#000000" + id="rect167" /><rect + x="26" + y="3" + width="1" + height="1" + fill="#000000" + id="rect169" /><rect + x="28" + y="3" + width="1" + height="1" + fill="#000000" + id="rect171" /><rect + x="29" + y="3" + width="1" + height="1" + fill="#000000" + id="rect173" /><rect + x="30" + y="3" + width="1" + height="1" + fill="#000000" + id="rect175" /><rect + x="32" + y="3" + width="1" + height="1" + fill="#000000" + id="rect177" /><rect + x="0" + y="4" + width="1" + height="1" + fill="#000000" + id="rect179" /><rect + x="2" + y="4" + width="1" + height="1" + fill="#000000" + id="rect181" /><rect + x="3" + y="4" + width="1" + height="1" + fill="#000000" + id="rect183" /><rect + x="4" + y="4" + width="1" + height="1" + fill="#000000" + id="rect185" /><rect + x="6" + y="4" + width="1" + height="1" + fill="#000000" + id="rect187" /><rect + x="9" + y="4" + width="1" + height="1" + fill="#000000" + id="rect189" /><rect + x="14" + y="4" + width="1" + height="1" + fill="#000000" + id="rect191" /><rect + x="16" + y="4" + width="1" + height="1" + fill="#000000" + id="rect193" /><rect + x="18" + y="4" + width="1" + height="1" + fill="#000000" + id="rect195" /><rect + x="19" + y="4" + width="1" + height="1" + fill="#000000" + id="rect197" /><rect + x="21" + y="4" + width="1" + height="1" + fill="#000000" + id="rect199" /><rect + x="23" + y="4" + width="1" + height="1" + fill="#000000" + id="rect201" /><rect + x="26" + y="4" + width="1" + height="1" + fill="#000000" + id="rect203" /><rect + x="28" + y="4" + width="1" + height="1" + fill="#000000" + id="rect205" /><rect + x="29" + y="4" + width="1" + height="1" + fill="#000000" + id="rect207" /><rect + x="30" + y="4" + width="1" + height="1" + fill="#000000" + id="rect209" /><rect + x="32" + y="4" + width="1" + height="1" + fill="#000000" + id="rect211" /><rect + x="0" + y="5" + width="1" + height="1" + fill="#000000" + id="rect213" /><rect + x="6" + y="5" + width="1" + height="1" + fill="#000000" + id="rect215" /><rect + x="8" + y="5" + width="1" + height="1" + fill="#000000" + id="rect217" /><rect + x="9" + y="5" + width="1" + height="1" + fill="#000000" + id="rect219" /><rect + x="11" + y="5" + width="1" + height="1" + fill="#000000" + id="rect221" /><rect + x="12" + y="5" + width="1" + height="1" + fill="#000000" + id="rect223" /><rect + x="15" + y="5" + width="1" + height="1" + fill="#000000" + id="rect225" /><rect + x="16" + y="5" + width="1" + height="1" + fill="#000000" + id="rect227" /><rect + x="20" + y="5" + width="1" + height="1" + fill="#000000" + id="rect229" /><rect + x="21" + y="5" + width="1" + height="1" + fill="#000000" + id="rect231" /><rect + x="22" + y="5" + width="1" + height="1" + fill="#000000" + id="rect233" /><rect + x="24" + y="5" + width="1" + height="1" + fill="#000000" + id="rect235" /><rect + x="26" + y="5" + width="1" + height="1" + fill="#000000" + id="rect237" /><rect + x="32" + y="5" + width="1" + height="1" + fill="#000000" + id="rect239" /><rect + x="0" + y="6" + width="1" + height="1" + fill="#000000" + id="rect241" /><rect + x="1" + y="6" + width="1" + height="1" + fill="#000000" + id="rect243" /><rect + x="2" + y="6" + width="1" + height="1" + fill="#000000" + id="rect245" /><rect + x="3" + y="6" + width="1" + height="1" + fill="#000000" + id="rect247" /><rect + x="4" + y="6" + width="1" + height="1" + fill="#000000" + id="rect249" /><rect + x="5" + y="6" + width="1" + height="1" + fill="#000000" + id="rect251" /><rect + x="6" + y="6" + width="1" + height="1" + fill="#000000" + id="rect253" /><rect + x="8" + y="6" + width="1" + height="1" + fill="#000000" + id="rect255" /><rect + x="10" + y="6" + width="1" + height="1" + fill="#000000" + id="rect257" /><rect + x="12" + y="6" + width="1" + height="1" + fill="#000000" + id="rect259" /><rect + x="14" + y="6" + width="1" + height="1" + fill="#000000" + id="rect261" /><rect + x="16" + y="6" + width="1" + height="1" + fill="#000000" + id="rect263" /><rect + x="18" + y="6" + width="1" + height="1" + fill="#000000" + id="rect265" /><rect + x="20" + y="6" + width="1" + height="1" + fill="#000000" + id="rect267" /><rect + x="22" + y="6" + width="1" + height="1" + fill="#000000" + id="rect269" /><rect + x="24" + y="6" + width="1" + height="1" + fill="#000000" + id="rect271" /><rect + x="26" + y="6" + width="1" + height="1" + fill="#000000" + id="rect273" /><rect + x="27" + y="6" + width="1" + height="1" + fill="#000000" + id="rect275" /><rect + x="28" + y="6" + width="1" + height="1" + fill="#000000" + id="rect277" /><rect + x="29" + y="6" + width="1" + height="1" + fill="#000000" + id="rect279" /><rect + x="30" + y="6" + width="1" + height="1" + fill="#000000" + id="rect281" /><rect + x="31" + y="6" + width="1" + height="1" + fill="#000000" + id="rect283" /><rect + x="32" + y="6" + width="1" + height="1" + fill="#000000" + id="rect285" /><rect + x="9" + y="7" + width="1" + height="1" + fill="#000000" + id="rect287" /><rect + x="10" + y="7" + width="1" + height="1" + fill="#000000" + id="rect289" /><rect + x="11" + y="7" + width="1" + height="1" + fill="#000000" + id="rect291" /><rect + x="15" + y="7" + width="1" + height="1" + fill="#000000" + id="rect293" /><rect + x="16" + y="7" + width="1" + height="1" + fill="#000000" + id="rect295" /><rect + x="18" + y="7" + width="1" + height="1" + fill="#000000" + id="rect297" /><rect + x="19" + y="7" + width="1" + height="1" + fill="#000000" + id="rect299" /><rect + x="21" + y="7" + width="1" + height="1" + fill="#000000" + id="rect301" /><rect + x="22" + y="7" + width="1" + height="1" + fill="#000000" + id="rect303" /><rect + x="0" + y="8" + width="1" + height="1" + fill="#000000" + id="rect305" /><rect + x="1" + y="8" + width="1" + height="1" + fill="#000000" + id="rect307" /><rect + x="2" + y="8" + width="1" + height="1" + fill="#000000" + id="rect309" /><rect + x="3" + y="8" + width="1" + height="1" + fill="#000000" + id="rect311" /><rect + x="4" + y="8" + width="1" + height="1" + fill="#000000" + id="rect313" /><rect + x="6" + y="8" + width="1" + height="1" + fill="#000000" + id="rect315" /><rect + x="7" + y="8" + width="1" + height="1" + fill="#000000" + id="rect317" /><rect + x="8" + y="8" + width="1" + height="1" + fill="#000000" + id="rect319" /><rect + x="9" + y="8" + width="1" + height="1" + fill="#000000" + id="rect321" /><rect + x="11" + y="8" + width="1" + height="1" + fill="#000000" + id="rect323" /><rect + x="13" + y="8" + width="1" + height="1" + fill="#000000" + id="rect325" /><rect + x="14" + y="8" + width="1" + height="1" + fill="#000000" + id="rect327" /><rect + x="15" + y="8" + width="1" + height="1" + fill="#000000" + id="rect329" /><rect + x="17" + y="8" + width="1" + height="1" + fill="#000000" + id="rect331" /><rect + x="18" + y="8" + width="1" + height="1" + fill="#000000" + id="rect333" /><rect + x="20" + y="8" + width="1" + height="1" + fill="#000000" + id="rect335" /><rect + x="25" + y="8" + width="1" + height="1" + fill="#000000" + id="rect337" /><rect + x="27" + y="8" + width="1" + height="1" + fill="#000000" + id="rect339" /><rect + x="29" + y="8" + width="1" + height="1" + fill="#000000" + id="rect341" /><rect + x="31" + y="8" + width="1" + height="1" + fill="#000000" + id="rect343" /><rect + x="0" + y="9" + width="1" + height="1" + fill="#000000" + id="rect345" /><rect + x="1" + y="9" + width="1" + height="1" + fill="#000000" + id="rect347" /><rect + x="2" + y="9" + width="1" + height="1" + fill="#000000" + id="rect349" /><rect + x="3" + y="9" + width="1" + height="1" + fill="#000000" + id="rect351" /><rect + x="4" + y="9" + width="1" + height="1" + fill="#000000" + id="rect353" /><rect + x="7" + y="9" + width="1" + height="1" + fill="#000000" + id="rect355" /><rect + x="10" + y="9" + width="1" + height="1" + fill="#000000" + id="rect357" /><rect + x="12" + y="9" + width="1" + height="1" + fill="#000000" + id="rect359" /><rect + x="13" + y="9" + width="1" + height="1" + fill="#000000" + id="rect361" /><rect + x="16" + y="9" + width="1" + height="1" + fill="#000000" + id="rect363" /><rect + x="17" + y="9" + width="1" + height="1" + fill="#000000" + id="rect365" /><rect + x="19" + y="9" + width="1" + height="1" + fill="#000000" + id="rect367" /><rect + x="20" + y="9" + width="1" + height="1" + fill="#000000" + id="rect369" /><rect + x="23" + y="9" + width="1" + height="1" + fill="#000000" + id="rect371" /><rect + x="26" + y="9" + width="1" + height="1" + fill="#000000" + id="rect373" /><rect + x="30" + y="9" + width="1" + height="1" + fill="#000000" + id="rect375" /><rect + x="31" + y="9" + width="1" + height="1" + fill="#000000" + id="rect377" /><rect + x="32" + y="9" + width="1" + height="1" + fill="#000000" + id="rect379" /><rect + x="1" + y="10" + width="1" + height="1" + fill="#000000" + id="rect381" /><rect + x="2" + y="10" + width="1" + height="1" + fill="#000000" + id="rect383" /><rect + x="5" + y="10" + width="1" + height="1" + fill="#000000" + id="rect385" /><rect + x="6" + y="10" + width="1" + height="1" + fill="#000000" + id="rect387" /><rect + x="7" + y="10" + width="1" + height="1" + fill="#000000" + id="rect389" /><rect + x="8" + y="10" + width="1" + height="1" + fill="#000000" + id="rect391" /><rect + x="10" + y="10" + width="1" + height="1" + fill="#000000" + id="rect393" /><rect + x="14" + y="10" + width="1" + height="1" + fill="#000000" + id="rect395" /><rect + x="15" + y="10" + width="1" + height="1" + fill="#000000" + id="rect397" /><rect + x="22" + y="10" + width="1" + height="1" + fill="#000000" + id="rect399" /><rect + x="25" + y="10" + width="1" + height="1" + fill="#000000" + id="rect401" /><rect + x="26" + y="10" + width="1" + height="1" + fill="#000000" + id="rect403" /><rect + x="28" + y="10" + width="1" + height="1" + fill="#000000" + id="rect405" /><rect + x="29" + y="10" + width="1" + height="1" + fill="#000000" + id="rect407" /><rect + x="31" + y="10" + width="1" + height="1" + fill="#000000" + id="rect409" /><rect + x="1" + y="11" + width="1" + height="1" + fill="#000000" + id="rect411" /><rect + x="2" + y="11" + width="1" + height="1" + fill="#000000" + id="rect413" /><rect + x="3" + y="11" + width="1" + height="1" + fill="#000000" + id="rect415" /><rect + x="7" + y="11" + width="1" + height="1" + fill="#000000" + id="rect417" /><rect + x="12" + y="11" + width="1" + height="1" + fill="#000000" + id="rect419" /><rect + x="14" + y="11" + width="1" + height="1" + fill="#000000" + id="rect421" /><rect + x="16" + y="11" + width="1" + height="1" + fill="#000000" + id="rect423" /><rect + x="20" + y="11" + width="1" + height="1" + fill="#000000" + id="rect425" /><rect + x="21" + y="11" + width="1" + height="1" + fill="#000000" + id="rect427" /><rect + x="22" + y="11" + width="1" + height="1" + fill="#000000" + id="rect429" /><rect + x="23" + y="11" + width="1" + height="1" + fill="#000000" + id="rect431" /><rect + x="24" + y="11" + width="1" + height="1" + fill="#000000" + id="rect433" /><rect + x="25" + y="11" + width="1" + height="1" + fill="#000000" + id="rect435" /><rect + x="26" + y="11" + width="1" + height="1" + fill="#000000" + id="rect437" /><rect + x="28" + y="11" + width="1" + height="1" + fill="#000000" + id="rect439" /><rect + x="30" + y="11" + width="1" + height="1" + fill="#000000" + id="rect441" /><rect + x="0" + y="12" + width="1" + height="1" + fill="#000000" + id="rect443" /><rect + x="1" + y="12" + width="1" + height="1" + fill="#000000" + id="rect445" /><rect + x="2" + y="12" + width="1" + height="1" + fill="#000000" + id="rect447" /><rect + x="4" + y="12" + width="1" + height="1" + fill="#000000" + id="rect449" /><rect + x="5" + y="12" + width="1" + height="1" + fill="#000000" + id="rect451" /><rect + x="6" + y="12" + width="1" + height="1" + fill="#000000" + id="rect453" /><rect + x="7" + y="12" + width="1" + height="1" + fill="#000000" + id="rect455" /><rect + x="9" + y="12" + width="1" + height="1" + fill="#000000" + id="rect457" /><rect + x="10" + y="12" + width="1" + height="1" + fill="#000000" + id="rect459" /><rect + x="12" + y="12" + width="1" + height="1" + fill="#000000" + id="rect461" /><rect + x="13" + y="12" + width="1" + height="1" + fill="#000000" + id="rect463" /><rect + x="14" + y="12" + width="1" + height="1" + fill="#000000" + id="rect465" /><rect + x="15" + y="12" + width="1" + height="1" + fill="#000000" + id="rect467" /><rect + x="16" + y="12" + width="1" + height="1" + fill="#000000" + id="rect469" /><rect + x="17" + y="12" + width="1" + height="1" + fill="#000000" + id="rect471" /><rect + x="19" + y="12" + width="1" + height="1" + fill="#000000" + id="rect473" /><rect + x="22" + y="12" + width="1" + height="1" + fill="#000000" + id="rect475" /><rect + x="25" + y="12" + width="1" + height="1" + fill="#000000" + id="rect477" /><rect + x="27" + y="12" + width="1" + height="1" + fill="#000000" + id="rect479" /><rect + x="28" + y="12" + width="1" + height="1" + fill="#000000" + id="rect481" /><rect + x="29" + y="12" + width="1" + height="1" + fill="#000000" + id="rect483" /><rect + x="2" + y="13" + width="1" + height="1" + fill="#000000" + id="rect485" /><rect + x="5" + y="13" + width="1" + height="1" + fill="#000000" + id="rect487" /><rect + x="7" + y="13" + width="1" + height="1" + fill="#000000" + id="rect489" /><rect + x="9" + y="13" + width="1" + height="1" + fill="#000000" + id="rect491" /><rect + x="16" + y="13" + width="1" + height="1" + fill="#000000" + id="rect493" /><rect + x="18" + y="13" + width="1" + height="1" + fill="#000000" + id="rect495" /><rect + x="19" + y="13" + width="1" + height="1" + fill="#000000" + id="rect497" /><rect + x="20" + y="13" + width="1" + height="1" + fill="#000000" + id="rect499" /><rect + x="21" + y="13" + width="1" + height="1" + fill="#000000" + id="rect501" /><rect + x="23" + y="13" + width="1" + height="1" + fill="#000000" + id="rect503" /><rect + x="26" + y="13" + width="1" + height="1" + fill="#000000" + id="rect505" /><rect + x="31" + y="13" + width="1" + height="1" + fill="#000000" + id="rect507" /><rect + x="32" + y="13" + width="1" + height="1" + fill="#000000" + id="rect509" /><rect + x="1" + y="14" + width="1" + height="1" + fill="#000000" + id="rect511" /><rect + x="4" + y="14" + width="1" + height="1" + fill="#000000" + id="rect513" /><rect + x="6" + y="14" + width="1" + height="1" + fill="#000000" + id="rect515" /><rect + x="8" + y="14" + width="1" + height="1" + fill="#000000" + id="rect517" /><rect + x="9" + y="14" + width="1" + height="1" + fill="#000000" + id="rect519" /><rect + x="10" + y="14" + width="1" + height="1" + fill="#000000" + id="rect521" /><rect + x="11" + y="14" + width="1" + height="1" + fill="#000000" + id="rect523" /><rect + x="12" + y="14" + width="1" + height="1" + fill="#000000" + id="rect525" /><rect + x="14" + y="14" + width="1" + height="1" + fill="#000000" + id="rect527" /><rect + x="15" + y="14" + width="1" + height="1" + fill="#000000" + id="rect529" /><rect + x="16" + y="14" + width="1" + height="1" + fill="#000000" + id="rect531" /><rect + x="17" + y="14" + width="1" + height="1" + fill="#000000" + id="rect533" /><rect + x="18" + y="14" + width="1" + height="1" + fill="#000000" + id="rect535" /><rect + x="20" + y="14" + width="1" + height="1" + fill="#000000" + id="rect537" /><rect + x="21" + y="14" + width="1" + height="1" + fill="#000000" + id="rect539" /><rect + x="25" + y="14" + width="1" + height="1" + fill="#000000" + id="rect541" /><rect + x="28" + y="14" + width="1" + height="1" + fill="#000000" + id="rect543" /><rect + x="31" + y="14" + width="1" + height="1" + fill="#000000" + id="rect545" /><rect + x="1" + y="15" + width="1" + height="1" + fill="#000000" + id="rect547" /><rect + x="2" + y="15" + width="1" + height="1" + fill="#000000" + id="rect549" /><rect + x="3" + y="15" + width="1" + height="1" + fill="#000000" + id="rect551" /><rect + x="4" + y="15" + width="1" + height="1" + fill="#000000" + id="rect553" /><rect + x="8" + y="15" + width="1" + height="1" + fill="#000000" + id="rect555" /><rect + x="11" + y="15" + width="1" + height="1" + fill="#000000" + id="rect557" /><rect + x="14" + y="15" + width="1" + height="1" + fill="#000000" + id="rect559" /><rect + x="15" + y="15" + width="1" + height="1" + fill="#000000" + id="rect561" /><rect + x="16" + y="15" + width="1" + height="1" + fill="#000000" + id="rect563" /><rect + x="21" + y="15" + width="1" + height="1" + fill="#000000" + id="rect565" /><rect + x="22" + y="15" + width="1" + height="1" + fill="#000000" + id="rect567" /><rect + x="23" + y="15" + width="1" + height="1" + fill="#000000" + id="rect569" /><rect + x="25" + y="15" + width="1" + height="1" + fill="#000000" + id="rect571" /><rect + x="26" + y="15" + width="1" + height="1" + fill="#000000" + id="rect573" /><rect + x="30" + y="15" + width="1" + height="1" + fill="#000000" + id="rect575" /><rect + x="0" + y="16" + width="1" + height="1" + fill="#000000" + id="rect577" /><rect + x="2" + y="16" + width="1" + height="1" + fill="#000000" + id="rect579" /><rect + x="3" + y="16" + width="1" + height="1" + fill="#000000" + id="rect581" /><rect + x="6" + y="16" + width="1" + height="1" + fill="#000000" + id="rect583" /><rect + x="7" + y="16" + width="1" + height="1" + fill="#000000" + id="rect585" /><rect + x="8" + y="16" + width="1" + height="1" + fill="#000000" + id="rect587" /><rect + x="9" + y="16" + width="1" + height="1" + fill="#000000" + id="rect589" /><rect + x="10" + y="16" + width="1" + height="1" + fill="#000000" + id="rect591" /><rect + x="11" + y="16" + width="1" + height="1" + fill="#000000" + id="rect593" /><rect + x="12" + y="16" + width="1" + height="1" + fill="#000000" + id="rect595" /><rect + x="13" + y="16" + width="1" + height="1" + fill="#000000" + id="rect597" /><rect + x="14" + y="16" + width="1" + height="1" + fill="#000000" + id="rect599" /><rect + x="15" + y="16" + width="1" + height="1" + fill="#000000" + id="rect601" /><rect + x="17" + y="16" + width="1" + height="1" + fill="#000000" + id="rect603" /><rect + x="19" + y="16" + width="1" + height="1" + fill="#000000" + id="rect605" /><rect + x="22" + y="16" + width="1" + height="1" + fill="#000000" + id="rect607" /><rect + x="23" + y="16" + width="1" + height="1" + fill="#000000" + id="rect609" /><rect + x="24" + y="16" + width="1" + height="1" + fill="#000000" + id="rect611" /><rect + x="25" + y="16" + width="1" + height="1" + fill="#000000" + id="rect613" /><rect + x="27" + y="16" + width="1" + height="1" + fill="#000000" + id="rect615" /><rect + x="28" + y="16" + width="1" + height="1" + fill="#000000" + id="rect617" /><rect + x="31" + y="16" + width="1" + height="1" + fill="#000000" + id="rect619" /><rect + x="0" + y="17" + width="1" + height="1" + fill="#000000" + id="rect621" /><rect + x="1" + y="17" + width="1" + height="1" + fill="#000000" + id="rect623" /><rect + x="2" + y="17" + width="1" + height="1" + fill="#000000" + id="rect625" /><rect + x="3" + y="17" + width="1" + height="1" + fill="#000000" + id="rect627" /><rect + x="4" + y="17" + width="1" + height="1" + fill="#000000" + id="rect629" /><rect + x="5" + y="17" + width="1" + height="1" + fill="#000000" + id="rect631" /><rect + x="8" + y="17" + width="1" + height="1" + fill="#000000" + id="rect633" /><rect + x="10" + y="17" + width="1" + height="1" + fill="#000000" + id="rect635" /><rect + x="12" + y="17" + width="1" + height="1" + fill="#000000" + id="rect637" /><rect + x="13" + y="17" + width="1" + height="1" + fill="#000000" + id="rect639" /><rect + x="16" + y="17" + width="1" + height="1" + fill="#000000" + id="rect641" /><rect + x="17" + y="17" + width="1" + height="1" + fill="#000000" + id="rect643" /><rect + x="18" + y="17" + width="1" + height="1" + fill="#000000" + id="rect645" /><rect + x="19" + y="17" + width="1" + height="1" + fill="#000000" + id="rect647" /><rect + x="20" + y="17" + width="1" + height="1" + fill="#000000" + id="rect649" /><rect + x="21" + y="17" + width="1" + height="1" + fill="#000000" + id="rect651" /><rect + x="22" + y="17" + width="1" + height="1" + fill="#000000" + id="rect653" /><rect + x="23" + y="17" + width="1" + height="1" + fill="#000000" + id="rect655" /><rect + x="24" + y="17" + width="1" + height="1" + fill="#000000" + id="rect657" /><rect + x="26" + y="17" + width="1" + height="1" + fill="#000000" + id="rect659" /><rect + x="29" + y="17" + width="1" + height="1" + fill="#000000" + id="rect661" /><rect + x="31" + y="17" + width="1" + height="1" + fill="#000000" + id="rect663" /><rect + x="32" + y="17" + width="1" + height="1" + fill="#000000" + id="rect665" /><rect + x="0" + y="18" + width="1" + height="1" + fill="#000000" + id="rect667" /><rect + x="2" + y="18" + width="1" + height="1" + fill="#000000" + id="rect669" /><rect + x="4" + y="18" + width="1" + height="1" + fill="#000000" + id="rect671" /><rect + x="5" + y="18" + width="1" + height="1" + fill="#000000" + id="rect673" /><rect + x="6" + y="18" + width="1" + height="1" + fill="#000000" + id="rect675" /><rect + x="7" + y="18" + width="1" + height="1" + fill="#000000" + id="rect677" /><rect + x="8" + y="18" + width="1" + height="1" + fill="#000000" + id="rect679" /><rect + x="9" + y="18" + width="1" + height="1" + fill="#000000" + id="rect681" /><rect + x="10" + y="18" + width="1" + height="1" + fill="#000000" + id="rect683" /><rect + x="13" + y="18" + width="1" + height="1" + fill="#000000" + id="rect685" /><rect + x="14" + y="18" + width="1" + height="1" + fill="#000000" + id="rect687" /><rect + x="15" + y="18" + width="1" + height="1" + fill="#000000" + id="rect689" /><rect + x="17" + y="18" + width="1" + height="1" + fill="#000000" + id="rect691" /><rect + x="20" + y="18" + width="1" + height="1" + fill="#000000" + id="rect693" /><rect + x="21" + y="18" + width="1" + height="1" + fill="#000000" + id="rect695" /><rect + x="25" + y="18" + width="1" + height="1" + fill="#000000" + id="rect697" /><rect + x="26" + y="18" + width="1" + height="1" + fill="#000000" + id="rect699" /><rect + x="27" + y="18" + width="1" + height="1" + fill="#000000" + id="rect701" /><rect + x="28" + y="18" + width="1" + height="1" + fill="#000000" + id="rect703" /><rect + x="29" + y="18" + width="1" + height="1" + fill="#000000" + id="rect705" /><rect + x="31" + y="18" + width="1" + height="1" + fill="#000000" + id="rect707" /><rect + x="0" + y="19" + width="1" + height="1" + fill="#000000" + id="rect709" /><rect + x="1" + y="19" + width="1" + height="1" + fill="#000000" + id="rect711" /><rect + x="2" + y="19" + width="1" + height="1" + fill="#000000" + id="rect713" /><rect + x="3" + y="19" + width="1" + height="1" + fill="#000000" + id="rect715" /><rect + x="4" + y="19" + width="1" + height="1" + fill="#000000" + id="rect717" /><rect + x="5" + y="19" + width="1" + height="1" + fill="#000000" + id="rect719" /><rect + x="8" + y="19" + width="1" + height="1" + fill="#000000" + id="rect721" /><rect + x="11" + y="19" + width="1" + height="1" + fill="#000000" + id="rect723" /><rect + x="12" + y="19" + width="1" + height="1" + fill="#000000" + id="rect725" /><rect + x="15" + y="19" + width="1" + height="1" + fill="#000000" + id="rect727" /><rect + x="16" + y="19" + width="1" + height="1" + fill="#000000" + id="rect729" /><rect + x="21" + y="19" + width="1" + height="1" + fill="#000000" + id="rect731" /><rect + x="28" + y="19" + width="1" + height="1" + fill="#000000" + id="rect733" /><rect + x="30" + y="19" + width="1" + height="1" + fill="#000000" + id="rect735" /><rect + x="1" + y="20" + width="1" + height="1" + fill="#000000" + id="rect737" /><rect + x="2" + y="20" + width="1" + height="1" + fill="#000000" + id="rect739" /><rect + x="6" + y="20" + width="1" + height="1" + fill="#000000" + id="rect741" /><rect + x="8" + y="20" + width="1" + height="1" + fill="#000000" + id="rect743" /><rect + x="10" + y="20" + width="1" + height="1" + fill="#000000" + id="rect745" /><rect + x="13" + y="20" + width="1" + height="1" + fill="#000000" + id="rect747" /><rect + x="14" + y="20" + width="1" + height="1" + fill="#000000" + id="rect749" /><rect + x="15" + y="20" + width="1" + height="1" + fill="#000000" + id="rect751" /><rect + x="17" + y="20" + width="1" + height="1" + fill="#000000" + id="rect753" /><rect + x="22" + y="20" + width="1" + height="1" + fill="#000000" + id="rect755" /><rect + x="23" + y="20" + width="1" + height="1" + fill="#000000" + id="rect757" /><rect + x="24" + y="20" + width="1" + height="1" + fill="#000000" + id="rect759" /><rect + x="25" + y="20" + width="1" + height="1" + fill="#000000" + id="rect761" /><rect + x="27" + y="20" + width="1" + height="1" + fill="#000000" + id="rect763" /><rect + x="28" + y="20" + width="1" + height="1" + fill="#000000" + id="rect765" /><rect + x="31" + y="20" + width="1" + height="1" + fill="#000000" + id="rect767" /><rect + x="0" + y="21" + width="1" + height="1" + fill="#000000" + id="rect769" /><rect + x="4" + y="21" + width="1" + height="1" + fill="#000000" + id="rect771" /><rect + x="5" + y="21" + width="1" + height="1" + fill="#000000" + id="rect773" /><rect + x="10" + y="21" + width="1" + height="1" + fill="#000000" + id="rect775" /><rect + x="11" + y="21" + width="1" + height="1" + fill="#000000" + id="rect777" /><rect + x="14" + y="21" + width="1" + height="1" + fill="#000000" + id="rect779" /><rect + x="16" + y="21" + width="1" + height="1" + fill="#000000" + id="rect781" /><rect + x="17" + y="21" + width="1" + height="1" + fill="#000000" + id="rect783" /><rect + x="18" + y="21" + width="1" + height="1" + fill="#000000" + id="rect785" /><rect + x="19" + y="21" + width="1" + height="1" + fill="#000000" + id="rect787" /><rect + x="20" + y="21" + width="1" + height="1" + fill="#000000" + id="rect789" /><rect + x="21" + y="21" + width="1" + height="1" + fill="#000000" + id="rect791" /><rect + x="22" + y="21" + width="1" + height="1" + fill="#000000" + id="rect793" /><rect + x="23" + y="21" + width="1" + height="1" + fill="#000000" + id="rect795" /><rect + x="26" + y="21" + width="1" + height="1" + fill="#000000" + id="rect797" /><rect + x="27" + y="21" + width="1" + height="1" + fill="#000000" + id="rect799" /><rect + x="29" + y="21" + width="1" + height="1" + fill="#000000" + id="rect801" /><rect + x="31" + y="21" + width="1" + height="1" + fill="#000000" + id="rect803" /><rect + x="32" + y="21" + width="1" + height="1" + fill="#000000" + id="rect805" /><rect + x="0" + y="22" + width="1" + height="1" + fill="#000000" + id="rect807" /><rect + x="3" + y="22" + width="1" + height="1" + fill="#000000" + id="rect809" /><rect + x="6" + y="22" + width="1" + height="1" + fill="#000000" + id="rect811" /><rect + x="7" + y="22" + width="1" + height="1" + fill="#000000" + id="rect813" /><rect + x="9" + y="22" + width="1" + height="1" + fill="#000000" + id="rect815" /><rect + x="14" + y="22" + width="1" + height="1" + fill="#000000" + id="rect817" /><rect + x="15" + y="22" + width="1" + height="1" + fill="#000000" + id="rect819" /><rect + x="16" + y="22" + width="1" + height="1" + fill="#000000" + id="rect821" /><rect + x="21" + y="22" + width="1" + height="1" + fill="#000000" + id="rect823" /><rect + x="25" + y="22" + width="1" + height="1" + fill="#000000" + id="rect825" /><rect + x="29" + y="22" + width="1" + height="1" + fill="#000000" + id="rect827" /><rect + x="31" + y="22" + width="1" + height="1" + fill="#000000" + id="rect829" /><rect + x="0" + y="23" + width="1" + height="1" + fill="#000000" + id="rect831" /><rect + x="3" + y="23" + width="1" + height="1" + fill="#000000" + id="rect833" /><rect + x="4" + y="23" + width="1" + height="1" + fill="#000000" + id="rect835" /><rect + x="9" + y="23" + width="1" + height="1" + fill="#000000" + id="rect837" /><rect + x="12" + y="23" + width="1" + height="1" + fill="#000000" + id="rect839" /><rect + x="15" + y="23" + width="1" + height="1" + fill="#000000" + id="rect841" /><rect + x="16" + y="23" + width="1" + height="1" + fill="#000000" + id="rect843" /><rect + x="20" + y="23" + width="1" + height="1" + fill="#000000" + id="rect845" /><rect + x="21" + y="23" + width="1" + height="1" + fill="#000000" + id="rect847" /><rect + x="23" + y="23" + width="1" + height="1" + fill="#000000" + id="rect849" /><rect + x="25" + y="23" + width="1" + height="1" + fill="#000000" + id="rect851" /><rect + x="27" + y="23" + width="1" + height="1" + fill="#000000" + id="rect853" /><rect + x="28" + y="23" + width="1" + height="1" + fill="#000000" + id="rect855" /><rect + x="29" + y="23" + width="1" + height="1" + fill="#000000" + id="rect857" /><rect + x="30" + y="23" + width="1" + height="1" + fill="#000000" + id="rect859" /><rect + x="0" + y="24" + width="1" + height="1" + fill="#000000" + id="rect861" /><rect + x="2" + y="24" + width="1" + height="1" + fill="#000000" + id="rect863" /><rect + x="3" + y="24" + width="1" + height="1" + fill="#000000" + id="rect865" /><rect + x="4" + y="24" + width="1" + height="1" + fill="#000000" + id="rect867" /><rect + x="6" + y="24" + width="1" + height="1" + fill="#000000" + id="rect869" /><rect + x="8" + y="24" + width="1" + height="1" + fill="#000000" + id="rect871" /><rect + x="11" + y="24" + width="1" + height="1" + fill="#000000" + id="rect873" /><rect + x="12" + y="24" + width="1" + height="1" + fill="#000000" + id="rect875" /><rect + x="13" + y="24" + width="1" + height="1" + fill="#000000" + id="rect877" /><rect + x="17" + y="24" + width="1" + height="1" + fill="#000000" + id="rect879" /><rect + x="18" + y="24" + width="1" + height="1" + fill="#000000" + id="rect881" /><rect + x="20" + y="24" + width="1" + height="1" + fill="#000000" + id="rect883" /><rect + x="22" + y="24" + width="1" + height="1" + fill="#000000" + id="rect885" /><rect + x="23" + y="24" + width="1" + height="1" + fill="#000000" + id="rect887" /><rect + x="24" + y="24" + width="1" + height="1" + fill="#000000" + id="rect889" /><rect + x="25" + y="24" + width="1" + height="1" + fill="#000000" + id="rect891" /><rect + x="26" + y="24" + width="1" + height="1" + fill="#000000" + id="rect893" /><rect + x="27" + y="24" + width="1" + height="1" + fill="#000000" + id="rect895" /><rect + x="28" + y="24" + width="1" + height="1" + fill="#000000" + id="rect897" /><rect + x="29" + y="24" + width="1" + height="1" + fill="#000000" + id="rect899" /><rect + x="32" + y="24" + width="1" + height="1" + fill="#000000" + id="rect901" /><rect + x="8" + y="25" + width="1" + height="1" + fill="#000000" + id="rect903" /><rect + x="11" + y="25" + width="1" + height="1" + fill="#000000" + id="rect905" /><rect + x="13" + y="25" + width="1" + height="1" + fill="#000000" + id="rect907" /><rect + x="16" + y="25" + width="1" + height="1" + fill="#000000" + id="rect909" /><rect + x="17" + y="25" + width="1" + height="1" + fill="#000000" + id="rect911" /><rect + x="18" + y="25" + width="1" + height="1" + fill="#000000" + id="rect913" /><rect + x="19" + y="25" + width="1" + height="1" + fill="#000000" + id="rect915" /><rect + x="20" + y="25" + width="1" + height="1" + fill="#000000" + id="rect917" /><rect + x="21" + y="25" + width="1" + height="1" + fill="#000000" + id="rect919" /><rect + x="22" + y="25" + width="1" + height="1" + fill="#000000" + id="rect921" /><rect + x="24" + y="25" + width="1" + height="1" + fill="#000000" + id="rect923" /><rect + x="28" + y="25" + width="1" + height="1" + fill="#000000" + id="rect925" /><rect + x="30" + y="25" + width="1" + height="1" + fill="#000000" + id="rect927" /><rect + x="32" + y="25" + width="1" + height="1" + fill="#000000" + id="rect929" /><rect + x="0" + y="26" + width="1" + height="1" + fill="#000000" + id="rect931" /><rect + x="1" + y="26" + width="1" + height="1" + fill="#000000" + id="rect933" /><rect + x="2" + y="26" + width="1" + height="1" + fill="#000000" + id="rect935" /><rect + x="3" + y="26" + width="1" + height="1" + fill="#000000" + id="rect937" /><rect + x="4" + y="26" + width="1" + height="1" + fill="#000000" + id="rect939" /><rect + x="5" + y="26" + width="1" + height="1" + fill="#000000" + id="rect941" /><rect + x="6" + y="26" + width="1" + height="1" + fill="#000000" + id="rect943" /><rect + x="8" + y="26" + width="1" + height="1" + fill="#000000" + id="rect945" /><rect + x="10" + y="26" + width="1" + height="1" + fill="#000000" + id="rect947" /><rect + x="13" + y="26" + width="1" + height="1" + fill="#000000" + id="rect949" /><rect + x="14" + y="26" + width="1" + height="1" + fill="#000000" + id="rect951" /><rect + x="15" + y="26" + width="1" + height="1" + fill="#000000" + id="rect953" /><rect + x="16" + y="26" + width="1" + height="1" + fill="#000000" + id="rect955" /><rect + x="17" + y="26" + width="1" + height="1" + fill="#000000" + id="rect957" /><rect + x="20" + y="26" + width="1" + height="1" + fill="#000000" + id="rect959" /><rect + x="23" + y="26" + width="1" + height="1" + fill="#000000" + id="rect961" /><rect + x="24" + y="26" + width="1" + height="1" + fill="#000000" + id="rect963" /><rect + x="26" + y="26" + width="1" + height="1" + fill="#000000" + id="rect965" /><rect + x="28" + y="26" + width="1" + height="1" + fill="#000000" + id="rect967" /><rect + x="30" + y="26" + width="1" + height="1" + fill="#000000" + id="rect969" /><rect + x="31" + y="26" + width="1" + height="1" + fill="#000000" + id="rect971" /><rect + x="0" + y="27" + width="1" + height="1" + fill="#000000" + id="rect973" /><rect + x="6" + y="27" + width="1" + height="1" + fill="#000000" + id="rect975" /><rect + x="9" + y="27" + width="1" + height="1" + fill="#000000" + id="rect977" /><rect + x="10" + y="27" + width="1" + height="1" + fill="#000000" + id="rect979" /><rect + x="11" + y="27" + width="1" + height="1" + fill="#000000" + id="rect981" /><rect + x="15" + y="27" + width="1" + height="1" + fill="#000000" + id="rect983" /><rect + x="16" + y="27" + width="1" + height="1" + fill="#000000" + id="rect985" /><rect + x="18" + y="27" + width="1" + height="1" + fill="#000000" + id="rect987" /><rect + x="20" + y="27" + width="1" + height="1" + fill="#000000" + id="rect989" /><rect + x="21" + y="27" + width="1" + height="1" + fill="#000000" + id="rect991" /><rect + x="22" + y="27" + width="1" + height="1" + fill="#000000" + id="rect993" /><rect + x="23" + y="27" + width="1" + height="1" + fill="#000000" + id="rect995" /><rect + x="24" + y="27" + width="1" + height="1" + fill="#000000" + id="rect997" /><rect + x="28" + y="27" + width="1" + height="1" + fill="#000000" + id="rect999" /><rect + x="29" + y="27" + width="1" + height="1" + fill="#000000" + id="rect1001" /><rect + x="30" + y="27" + width="1" + height="1" + fill="#000000" + id="rect1003" /><rect + x="31" + y="27" + width="1" + height="1" + fill="#000000" + id="rect1005" /><rect + x="32" + y="27" + width="1" + height="1" + fill="#000000" + id="rect1007" /><rect + x="0" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1009" /><rect + x="2" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1011" /><rect + x="3" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1013" /><rect + x="4" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1015" /><rect + x="6" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1017" /><rect + x="8" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1019" /><rect + x="9" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1021" /><rect + x="12" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1023" /><rect + x="13" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1025" /><rect + x="14" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1027" /><rect + x="15" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1029" /><rect + x="17" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1031" /><rect + x="24" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1033" /><rect + x="25" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1035" /><rect + x="26" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1037" /><rect + x="27" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1039" /><rect + x="28" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1041" /><rect + x="31" + y="28" + width="1" + height="1" + fill="#000000" + id="rect1043" /><rect + x="0" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1045" /><rect + x="2" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1047" /><rect + x="3" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1049" /><rect + x="4" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1051" /><rect + x="6" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1053" /><rect + x="8" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1055" /><rect + x="11" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1057" /><rect + x="16" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1059" /><rect + x="18" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1061" /><rect + x="19" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1063" /><rect + x="20" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1065" /><rect + x="23" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1067" /><rect + x="28" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1069" /><rect + x="29" + y="29" + width="1" + height="1" + fill="#000000" + id="rect1071" /><rect + x="0" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1073" /><rect + x="2" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1075" /><rect + x="3" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1077" /><rect + x="4" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1079" /><rect + x="6" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1081" /><rect + x="8" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1083" /><rect + x="15" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1085" /><rect + x="16" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1087" /><rect + x="17" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1089" /><rect + x="18" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1091" /><rect + x="22" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1093" /><rect + x="24" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1095" /><rect + x="26" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1097" /><rect + x="30" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1099" /><rect + x="31" + y="30" + width="1" + height="1" + fill="#000000" + id="rect1101" /><rect + x="0" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1103" /><rect + x="6" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1105" /><rect + x="8" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1107" /><rect + x="9" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1109" /><rect + x="10" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1111" /><rect + x="14" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1113" /><rect + x="15" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1115" /><rect + x="16" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1117" /><rect + x="18" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1119" /><rect + x="20" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1121" /><rect + x="21" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1123" /><rect + x="22" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1125" /><rect + x="25" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1127" /><rect + x="26" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1129" /><rect + x="29" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1131" /><rect + x="30" + y="31" + width="1" + height="1" + fill="#000000" + id="rect1133" /><rect + x="0" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1135" /><rect + x="1" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1137" /><rect + x="2" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1139" /><rect + x="3" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1141" /><rect + x="4" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1143" /><rect + x="5" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1145" /><rect + x="6" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1147" /><rect + x="8" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1149" /><rect + x="12" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1151" /><rect + x="13" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1153" /><rect + x="14" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1155" /><rect + x="15" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1157" /><rect + x="17" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1159" /><rect + x="22" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1161" /><rect + x="23" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1163" /><rect + x="24" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1165" /><rect + x="26" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1167" /><rect + x="27" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1169" /><rect + x="31" + y="32" + width="1" + height="1" + fill="#000000" + id="rect1171" /></g></g><image + width="7.9309731" + height="7.9309731" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 + +" + id="image1293" + x="16.534513" + y="16.534513" /></svg> diff --git a/privacyidea/static/components/config/factories/config.js b/privacyidea/static/components/config/factories/config.js index 75e8c16c442f48040ac4543b66f4636d4a0b3879..b2beaed0d3f0aaa865ebad65fc9f45dbbe52dd0f 100644 --- a/privacyidea/static/components/config/factories/config.js +++ b/privacyidea/static/components/config/factories/config.js @@ -435,6 +435,17 @@ myApp.factory("ConfigFactory", ["AuthFactory", "$http", "$state", "$rootScope", 'Content-Type': 'application/json'} }).then(function(response) { callback(response.data) }, function(error) { AuthFactory.authError(error.data) }); }, + getMfaManagementUrl: function() { + return new Promise(function(resolve, reject) { + $http.get(systemUrl + "/mfa_management_url", { + headers: {'PI-Authorization': AuthFactory.getAuthToken(), + 'Content-Type': 'application/json'} + }).then(function(response) { resolve(response.data) }).catch(function(error) { + AuthFactory.authError(error.data); + reject(error); + }); + }); + }, getRadius: function(callback, identifier) { if (!identifier) {identifier = "";} $http.get(radiusServerUrl + "/" + identifier, { diff --git a/privacyidea/static/components/dialogs/views/dialog.mfa.activated.html b/privacyidea/static/components/dialogs/views/dialog.mfa.activated.html new file mode 100644 index 0000000000000000000000000000000000000000..5518279049f0c8f245248eed3e1dd4a84282b85c --- /dev/null +++ b/privacyidea/static/components/dialogs/views/dialog.mfa.activated.html @@ -0,0 +1,27 @@ +<!-- Modal --> +<div class="modal fade" id="dialogMFAActivated" tabindex="-1" + role="dialog" + aria-labelledby="myModalDialog" + aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" + aria-label="Close"> + <span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="myModalDialog" translate> + {{ browserLanguage === 'cs' ? 'VÃcefázové ověřenà bylo aktivováno' : 'Multi-factor authentication has been activated' }}</h4> + </div> + <div class="modal-body"> + <p translate> + {{ browserLanguage === 'cs' ? 'VÅ¡echny služby budou od tohoto okamžiku vyžadovat vÃcefázové ověřenÃ. Nastavenà můžete pozdÄ›ji zmÄ›nit a vybrat si služby, pro které budete mÃt vÃcefázové ověřenà aktivováno.' : 'All services will now require multi-factor authentication. If you want to change this, you can manage the list of services for which you will have MFA activated later in this setup.' }} + </p> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-primary" + data-dismiss="modal">OK + </button> + </div> + </div> + </div> +</div> diff --git a/privacyidea/static/components/dialogs/views/dialog.welcome.html b/privacyidea/static/components/dialogs/views/dialog.welcome.html index 80895e71149e076922dce2503d2694633564a010..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/privacyidea/static/components/dialogs/views/dialog.welcome.html +++ b/privacyidea/static/components/dialogs/views/dialog.welcome.html @@ -1,172 +0,0 @@ -<!-- Modal --> - -<div class="modal fade lock-dialog" id="dialogWelcome" tabindex="-1" - role="dialog" - ng-show="welcomeStep < 5" - data-backdrop="static" data-keyboard="false" - aria-labelledby="myModalLabel" - aria-hidden="true"> - <div class="modal-dialog"> - - <div class="modal-content" ng-show="welcomeStep === 0"> - <div class="modal-header"> - <h4 class="modal-title" id="myModalLabel" translate - >Welcome</h4> - </div> - - <!-- In case of no subscription and less than 50 users --> - <div class="modal-body" translate> - <p>First, we would like to give you some background - information on privacyIDEA.</p> - <p>privacyIDEA is an <b>Enterprise Level</b> - Multi Factor Authentication System. It is open source. - The core developers are employed at NetKnights GmbH, Germany. - NetKnights provides the - <a target=netknights - href="https://netknights.it/en/produkte/privacyidea/">privacyIDEA Enterprise Edition</a> - including <b>Support and Service Level Agreements</b>. - Moreover NetKnights provides services, consultancy and - paid programming of new features. - </p> - </div> - - <div class="modal-footer"> - <button type="button" class="btn btn-default" - ng-click="nextWelcome()" translate>Next - </button> - </div> - </div> - - <div class="modal-content" ng-show="welcomeStep === 1"> - <div class="modal-header"> - <h4 class="modal-title" id="myModalLabel" translate - >The value of open source</h4> - </div> - <div class="modal-body" translate> - <p> - You are reading books, which do not belong to you anymore. Your ebook reader - only provides them for the time of reading. You are using software as a service - and you do not have any control, when the software will be updated, - which features will be added or removed or if the service might even be stopped. - You only get a legal right of time limited use. - </p> - <p> - You could install proprietary software on your own server, but you also have only - limited rights in regards to this installation. You are not allowed to modify or pass along - this proprietary software. - </p> - <p> - The open source software privacyIDEA now is <b>your property</b>! No one can take away this software - or this installation. According to the license AGPLv3 you can modify or distribute this software. - You do not have to worry about end-of-life. - </p> - <p> - <b>Using open source is not about spending no money, but is is about full control you get over - your own system! Forever!</b> - </p> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" - ng-click="nextWelcome()" translate>Next - </button> - </div> - </div> - - <div class="modal-content" ng-show="welcomeStep === 2"> - <div class="modal-header"> - <h4 class="modal-title" id="myModalLabel" translate - >The added value of privacyIDEA Enterprise Edition</h4> - </div> - <div class="modal-body"> - <p translate>According to the - <a target=license href="https://github.com/privacyidea/privacyidea/blob/master/LICENSE">AGPLv3</a> - </p> - <p class="text-center" translate> - <b>THIS SOFTWARE COMES WITHOUT ANY WARRANTY!</b> - </p> - <p translate>The added values of the - <a target=netknights - href="https://netknights.it/en/produkte/privacyidea/">privacyIDEA Enterprise Edition</a> - are</p> - <ul translate> - <li>Support and - <a target=netknights href="https://netknights.it/en/leistungen/service-level-agreements/"> - Service Level Agreements by NetKnights</a>, Germany. - </li> - <li>Stable enterprise packages for Debian, Ubuntu, RHEL allow for an easy update and secure - operations. - </li> - <li>An exclusive <b>Appliance</b>-Tool, which allows easy setup of RADIUS clients, MySQL master - master replications, - backup and restore... - </li> - <li>Exclusive timely news and bug reports.</li> - <li>Depending on the support level you get help with updates and yearly consultancy.</li> - <li>By buying the - <a target=netknights - href="https://netknights.it/en/produkte/privacyidea/">privacyIDEA Enterprise Edition</a> - you ensure that professional developers can work full time - on privacyIDEA, add new features and fix bugs in a timely manner. In addition you allow for - external services - like code audits. - </li> - </ul> - <p translate> - <a target=netknights href="https://netknights.it/en/unternehmen/kontakt/"> - Ask for the privacyIDEA Enterprise Edition, now!</a> - </p> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" - ng-click="nextWelcome()" translate>Next - </button> - </div> - </div> - - <div class="modal-content" ng-show="welcomeStep === 3"> - <div class="modal-header"> - <h4 class="modal-title" id="myModalLabel" translate - >Thank you for improving your security!</h4> - </div> - <div class="modal-body" translate> - <p>Thank you for using privacyIDEA and making your network - and thus this world a more secure place!</p> - <p>Have fun using privacyIDEA!</p> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" - ng-click="resetWelcome()" translate> - Read again - </button> - <button type="button" class="btn btn-success" - ng-click="nextWelcome()" translate>Dive In! - </button> - </div> - </div> - - <div class="modal-content" ng-show="welcomeStep === 4"> - <!-- In case of no subscription and more than 50 users --> - <div class="modal-body" translate> - <p><b>You are using privacyIDEA with more than 50 users.</b></p> - <p>Thank you for your trust!</p> - <p>For the productive enterprise use we recommend the - <a target=netknights - href="https://netknights.it/en/produkte/privacyidea/">privacyIDEA Enterprise Edition</a>. - </p> - <p>NetKnights provides the - <a target=netknights - href="https://netknights.it/en/produkte/privacyidea/">privacyIDEA Enterprise Edition</a> - including <b>Support and Service Level Agreements</b>. - Moreover NetKnights provides services, consultancy and - paid programming of new features. - </p> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-success" - ng-click="nextWelcome()" translate>Okay - </button> - </div> - </div> - </div> -</div> - diff --git a/privacyidea/static/components/login/factories/webauthn.js b/privacyidea/static/components/login/factories/webauthn.js index e1fa79193575872dbdba927fb9ba4623ec61da8c..92f5e42ae875f9be0f6d1b0ccd7caeb1e0f07ef6 100644 --- a/privacyidea/static/components/login/factories/webauthn.js +++ b/privacyidea/static/components/login/factories/webauthn.js @@ -55,7 +55,10 @@ angular .then(callback) .catch(function(e) { inform.add( - domExceptionErrorMessage[e.name] + " / " + e.message, + domExceptionErrorMessage[e.name] + " / " + + gettextCatalog.getString( + "Error when enrolling - you are probably trying to enroll the same token twice!" + ), { type: "danger", ttl: 10000 diff --git a/privacyidea/static/components/token/controllers/tokenControllers.js b/privacyidea/static/components/token/controllers/tokenControllers.js index c7bdaac465256f2a1eae2486917bc9ed72331a3c..0afe40bb8b850090129684c67dfc2ee8b915c306 100644 --- a/privacyidea/static/components/token/controllers/tokenControllers.js +++ b/privacyidea/static/components/token/controllers/tokenControllers.js @@ -90,7 +90,7 @@ myApp.controller("tokenController", ['TokenFactory', 'ConfigFactory', '$scope', if ($scope.pin_change) { $location.path("/pinchange"); } - + // listen to the reload broadcast $scope.$on("piReload", function() { /* Due to the parameter "live_search" in the get function @@ -190,6 +190,15 @@ myApp.controller("tokenEnrollController", ["$scope", "TokenFactory", "$timeout", useIt: false }; $scope.enrolling = false; + $scope.awaitingBackupcodeEnroll = false; + $scope.awaitingSetupCompletion = false; + $scope.awaitingTOTPAppDisclaimerConfirm = false; + $scope.hasUsableTokens = false; + $scope.hasSeenMFADialog = false; + $scope.hasDownloadedBackupcodes = false; + $scope.isVisibleTOTPAppCode = false; + $scope.initiallyAllowedTokenTypes = ['totp']; + $scope.mfaManagementUrl = ""; $scope.formInit = { tokenTypes: {"hotp": gettextCatalog.getString("HOTP: event based One Time Passwords"), @@ -435,6 +444,7 @@ myApp.controller("tokenEnrollController", ["$scope", "TokenFactory", "$timeout", var otps_count = Object.keys($scope.enrolledToken.otps).length; $scope.otp_row_count = parseInt(otps_count/5 + 0.5); $scope.otp_rows = Object.keys($scope.enrolledToken.otps).slice(0, $scope.otp_row_count); + $scope.enrolledOtps = Object.values($scope.enrolledToken.otps); } if ($scope.enrolledToken.certificate) { var blob = new Blob([ $scope.enrolledToken.certificate ], @@ -470,7 +480,12 @@ myApp.controller("tokenEnrollController", ["$scope", "TokenFactory", "$timeout", }; $scope.enrollToken = function () { - $scope.enrolling = true; + $scope.enrolling = true + + if (!$scope.hasUsableTokens) { + $scope.awaitingTOTPAppDisclaimerConfirm = true; + } + //debug: console.log($scope.newUser.user); //debug: console.log($scope.newUser.realm); //debug: console.log($scope.newUser.pin); @@ -484,6 +499,71 @@ myApp.controller("tokenEnrollController", ["$scope", "TokenFactory", "$timeout", ); }; + $scope.calculateHasUsableTokens = async function () { + // Having usable tokens is a prerequisite for enrolling some token types. + // Admin, however can enroll any token at any time for any user. + if ($scope.loggedInUser.role === 'admin') { + $scope.hasUsableTokens = true; + return $scope.hasUsableTokens; + } + + $scope.newUser.user = fixUser($scope.newUser.user); + + try { + const data = await TokenFactory.getUsableTokensCount($scope.newUser); + if (data) { + $scope.hasUsableTokens = data.result.value > 0; + return $scope.hasUsableTokens; + } else { + console.log("Request for usable tokens count didn't return any data."); + } + } catch(error) { + console.log("An Error occurred while fetching the number of available tokens.") + } + + return false; + }; + + $scope.enrollInitialBackupcodes = function () { + $scope.enrolledToken = null; + $scope.enrolling = false; + $scope.awaitingBackupcodeEnroll = true; + $scope.form.type = 'backupcode'; + $scope.form.description = navigator.language === 'cs' ? 'záložnà kódy' : 'backup codes'; + $scope.enrollToken(); + } + + $scope.showMFAActivationDialog = function () { + const dialogMFAActivated = $('#dialogMFAActivated'); + + dialogMFAActivated.modal(); + + // Continue to next stage after the modal has been closed + dialogMFAActivated.on('hidden.bs.modal', async function () { + await $scope.calculateHasUsableTokens(); + $scope.enrollInitialBackupcodes(); + }); + }; + + $scope.redirectToMfaManagement = async function () { + // Url was correctly configured and returned by the endpoint + if ($scope.mfaManagementUrl !== "") { + window.open($scope.mfaManagementUrl, "_blank") + } + } + + $scope.isAllowedInitially = function (tokentype) { + return $scope.initiallyAllowedTokenTypes.includes(tokentype); + }; + + $scope.toggleTOTPAppCodeVisibility = function () { + $scope.isVisibleTOTPAppCode = !$scope.isVisibleTOTPAppCode; + }; + + $scope.toggleAwaitingTOTPAppDisclaimer = function () { + $scope.awaitingTOTPAppDisclaimerConfirm = !$scope.awaitingTOTPAppDisclaimerConfirm; + }; + $scope.pollTokenInfo = function () { TokenFactory.getTokenForSerial($scope.enrolledToken.serial, function(data) { $scope.enrolledToken.rollout_state = data.result.value.tokens[0].rollout_state; @@ -550,12 +630,17 @@ myApp.controller("tokenEnrollController", ["$scope", "TokenFactory", "$timeout", token.subject = (response.detail.u2fRegisterResponse || response.detail.webAuthnRegisterResponse).subject; token.vendor = token.subject.split(" ")[0]; - console.log(token); }); }); $scope.click_wait = true; }; + // get the list of configured RADIUS server identifiers + $scope.loadMfaManagementUrl = async function() { + const data = await ConfigFactory.getMfaManagementUrl(); + $scope.mfaManagementUrl = data.result.value; + }; + // get the list of configured RADIUS server identifiers $scope.getRADIUSIdentifiers = function() { ConfigFactory.getRadiusNames(function(data){ @@ -647,6 +732,66 @@ myApp.controller("tokenEnrollController", ["$scope", "TokenFactory", "$timeout", return true; }; + $scope.getBackupcodePDF = function () { + const { jsPDF } = window.jspdf; + const now = new Date().toLocaleString('cs-CZ'); + const serial = $scope.enrolledToken.serial; + const rows = $scope.enrolledOtps.map((element, index) => ({id: `${index + 1}`, otp: element})); + const privacyIDEAColor = $('.progress-bar').css('background-color'); + const rgbArray = privacyIDEAColor.match(/\d+/g).map(num => parseInt(num)); + + var doc = new jsPDF(); + const fontSizeBig = 18; + const fontSizeSmall = 12; + const xOffset = 30; + const yOffset = 10; + const colorGray = 100; + const colorBlack = 0; + + // Assuming content is a centered block with left and right margins + const contentWidth = doc.internal.pageSize.getWidth() - xOffset * 2; + + // Print description texts + doc.setFontSize(fontSizeBig); + doc.text(`Token: ${serial}`, xOffset, yOffset); + + doc.setFontSize(fontSizeSmall); + doc.text(`User: ${$scope.newUser.user}`, xOffset, yOffset * 2); + + doc.setTextColor(colorGray); + doc.text(now, xOffset, yOffset * 3); + + // Prepare table with OTP keys + doc.autoTable({ + head: [{id: '#', otp: 'OTP'}], + headStyles: { + halign: 'center', + textColor: 255, + fillColor: rgbArray + }, + body: rows, + startY: yOffset * 7, + margin: {left: xOffset, right: xOffset}, + tableWidth: contentWidth, + columnStyles: { + id: { fontStyle: 'bold', halign: 'center' }, + }, + }); + $scope.hasDownloadedBackupcodes = true; + + return {doc: doc, serial: serial}; + } + + $scope.printBackupcodePDF = function () { + const result = $scope.getBackupcodePDF() + window.open(result.doc.output('bloburl'), '_blank').print(); + } + + $scope.downloadBackupcodePDF = function () { + const result = $scope.getBackupcodePDF() + result.doc.save(`${result.serial}.pdf`) + } + // =========================================================== // =============== Date stuff =============================== // =========================================================== diff --git a/privacyidea/static/components/token/factories/token.js b/privacyidea/static/components/token/factories/token.js index a6501a04128a70ad99ebde15b8fe96440d691c01..febc72abb964a4bcaeb8d62ce417ef96bcb05cf5 100644 --- a/privacyidea/static/components/token/factories/token.js +++ b/privacyidea/static/components/token/factories/token.js @@ -256,6 +256,22 @@ angular.module("TokenModule", ["privacyideaAuth"]) params: params, headers: {'PI-Authorization': AuthFactory.getAuthToken()} }).then(function (response) { callback(response.data) }, function(error) { AuthFactory.authError(error.data) }); - } + }, + getUsableTokensCount: function (userObject) { + return new Promise(function(resolve, reject) { + const username = fixUser(userObject.user); + let params = {}; + if (username) { + params.user = username; + params.realm = userObject.realm; + } + $http.get(tokenUrl + "/count_usable", { + headers: {'PI-Authorization': AuthFactory.getAuthToken()} + }).then(function (response) { resolve(response.data) }) + .catch(function(error) { + reject(error); + }); + }) + }, }; }]); diff --git a/privacyidea/static/components/token/states/states.js b/privacyidea/static/components/token/states/states.js index 2d1c904c69aaadf4408a464e31957f20605687c9..43b8cef67e6b25488c5406926d19f8e6b6fac53e 100644 --- a/privacyidea/static/components/token/states/states.js +++ b/privacyidea/static/components/token/states/states.js @@ -64,7 +64,7 @@ angular.module('privacyideaApp.tokenStates', ['ui.router', 'privacyideaApp.versi }) .state('token.enroll', { url: "/enroll/:realmname/:username", - templateUrl: tokenpath + "token.enroll.html" + versioningSuffixProviderProvider.$get().$get(), + templateUrl: tokenpath + "token.modified.enroll.html" + versioningSuffixProviderProvider.$get().$get(), controller: "tokenEnrollController", params: { realmname: null, username: null }, }) @@ -75,7 +75,7 @@ angular.module('privacyideaApp.tokenStates', ['ui.router', 'privacyideaApp.versi }) .state('token.wizard', { url: "/wizard", - templateUrl: tokenpath + "token.enroll.html" + versioningSuffixProviderProvider.$get().$get(), + templateUrl: tokenpath + "token.modified.enroll.html" + versioningSuffixProviderProvider.$get().$get(), controller: "tokenEnrollController" }) .state('token.import', { diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.1of2.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.1of2.html new file mode 100644 index 0000000000000000000000000000000000000000..05e247af49237395720bf2d602035dea1575c4b7 --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.1of2.html @@ -0,0 +1,11 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.1of5.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.1of5.html new file mode 100644 index 0000000000000000000000000000000000000000..2e91f76e798b980b4cd689a80c6e8196e85e424f --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.1of5.html @@ -0,0 +1,29 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><b>2</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><b>3</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><b>4</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.2of2.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.2of2.html new file mode 100644 index 0000000000000000000000000000000000000000..a2e563259b967d745e10d4d8e47176003025df19 --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.2of2.html @@ -0,0 +1,11 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.2of5.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.2of5.html new file mode 100644 index 0000000000000000000000000000000000000000..4be75c3976cba841ec750d19e4b233090d52ab38 --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.2of5.html @@ -0,0 +1,29 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>2</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><b>3</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><b>4</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.3of5.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.3of5.html new file mode 100644 index 0000000000000000000000000000000000000000..4f38da72ebfa828d2da0d1f5a932957c01f611a9 --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.3of5.html @@ -0,0 +1,29 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>2</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>3</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><b>4</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.4of5.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.4of5.html new file mode 100644 index 0000000000000000000000000000000000000000..2f2e2aa6c1034c7e3a10ddb6860be003c4d6bb98 --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.4of5.html @@ -0,0 +1,29 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>2</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>3</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>4</b></span> + </div> + + <span class="line empty"></span> + + <div class="steps empty"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/progress_bars/progress.bar.5of5.html b/privacyidea/static/components/token/views/progress_bars/progress.bar.5of5.html new file mode 100644 index 0000000000000000000000000000000000000000..5402c750703014ec39e0f4e9e06679ba4d4491a6 --- /dev/null +++ b/privacyidea/static/components/token/views/progress_bars/progress.bar.5of5.html @@ -0,0 +1,29 @@ +<div class="progresses"> + <div class="steps filled"> + <span><b>1</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>2</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>3</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><b>4</b></span> + </div> + + <span class="line filled"></span> + + <div class="steps filled"> + <span><i class="glyphicon glyphicon-ok"></i></span> + </div> +</div> \ No newline at end of file diff --git a/privacyidea/static/components/token/views/token.enrolled.backupcode.html b/privacyidea/static/components/token/views/token.enrolled.backupcode.html index 795ec7930ee3d10c832f8b80963e7d315badd96a..00d2d5a947a3c1f4274c36b6d02cc522887adac4 100644 --- a/privacyidea/static/components/token/views/token.enrolled.backupcode.html +++ b/privacyidea/static/components/token/views/token.enrolled.backupcode.html @@ -1,59 +1,41 @@ -<div class="row"> - <div class="col-sm-12"> - <uib-accordion close-others="oneAtATime"> - <div uib-accordion-group - class="panel-default" - heading="{{ 'The OTP values'|translate }}"> - <div id="paperOtpTable"> - <div ng-include="instanceUrl+'/'+piCustomization+ - '/views/includes/token.enrolled.tan.top.html'"></div> - <div class="table-responsive"> - <table class="table table-bordered table-striped - tantoken"> - <thead> - <tr> - <th translate>#</th> - <th>OTP</th> - <th translate>#</th> - <th>OTP</th> - <th translate>#</th> - <th>OTP</th> - <th translate>#</th> - <th>OTP</th> - <th translate>#</th> - <th>OTP</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="key in otp_rows"> - <td>{{ $index }}</td> - <td>{{ enrolledToken.otps[$index] }}</td> - <td>{{ $index+(1*otp_row_count) }}</td> - <td>{{ enrolledToken.otps[$index+ - (1*otp_row_count)] }}</td> - <td>{{ $index+(2*otp_row_count) }}</td> - <td>{{ enrolledToken.otps[$index+ - (2*otp_row_count)] }}</td> - <td>{{ $index+(3*otp_row_count) }}</td> - <td>{{ enrolledToken.otps[$index+ - (3*otp_row_count)] }}</td> - <td>{{ $index+(4*otp_row_count) }}</td> - <td>{{ enrolledToken.otps[$index+ - (4*otp_row_count)] }}</td> - </tr> - </tbody> - </table> - </div> - <div ng-include="instanceUrl+'/'+piCustomization+ - '/views/includes/token.enrolled.tan.bottom.html'"></div> +<div> + <div class="progress-bar" id="colorSampleElement"></div> + <h3 class="main-heading-element" translate><b>{{ browserLanguage === 'cs' ? 'Uložte si záložnà kódy pro obnovenà pÅ™Ãstupu' : 'Save backup codes for restoring access to your account' }}</b></h3> + <button class="btn-default btn margin-vertical margin-right" + ng-click="downloadBackupcodePDF()"> + <span class="glyphicon glyphicon-download-alt"></span> + <span ng-show="browserLanguage === 'en'"><b>Download</b></span> + <span ng-show="browserLanguage === 'cs'"><b>Uložit</b></span> + </button> + <button class="btn-default btn margin-vertical" + ng-click="printBackupcodePDF()"> + <span class="glyphicon glyphicon-print"></span> + <span ng-show="browserLanguage === 'en'"><b>Print</b></span> + <span ng-show="browserLanguage === 'cs'"><b>Vytisknout</b></span> + </button> + <div class="row margin-bottom"> + <div class="col-sm-12"> + <uib-accordion close-others="oneAtATime"> + <div uib-accordion-group + heading="{{ browserLanguage === 'cs' ? 'Zobrazit záložnà kódy' : 'Show backup codes' }}"> + <ul class="list-group no-margin-bottom"> + <li class="list-group-item alternate-row" ng-repeat="otp in enrolledOtps"><b>{{$index + 1}}.</b> + {{otp}} + </li> + </ul> </div> - </div> - </uib-accordion> + </uib-accordion> + </div> + </div> + <div> + <h5><b>{{ browserLanguage === 'cs' ? 'ProÄ jsou záložnà kódy důležité?' : 'Why are backup codes important?' }}</b></h5> + <p ng-show="browserLanguage === 'en'"> + In case you lose access to your token (e.g. lost smartphone) you can still authenticate using backup codes. You can simply enter a backup code instead of the code generated by the authenticator application or a password manager. Keep in mind that the backup codes are <b>single use</b>, meaning each code gets <b>invalidated after being used</b> to authenticate. If you have used up most or all of your + codes, it is recommended to generate new ones. + </p> + <p ng-show="browserLanguage === 'cs'"> + V pÅ™ÃpadÄ›, že ztratÃte pÅ™Ãstup ke svému tokenu (napÅ™. pÅ™i ztrátÄ› smartphonu), můžete se pÅ™ihlásit pomocà záložnÃch kódů. Můžete jednoduÅ¡e zadat záložnà kód mÃsto kódu vygenerovaného autentizaÄnà aplikacà nebo správcem hesel. Záložnà kódy jsou <b>jednorázové</b>, což znamená, že každý kód je <b>po jednom použità zneplatnÄ›n</b>. Pokud jste spotÅ™ebovali vÄ›tÅ¡inu nebo vÅ¡echny své kódy, doporuÄujeme vygenerovat si nové. + </p> </div> </div> -<button class="btn-default btn" - ng-click="printOtp()"> - <span class="glyphicon glyphicon-print"></span> - <span ng-show="browserLanguage === 'en'">print or download as PDF</span> - <span ng-show="browserLanguage === 'cs'">vytisknout nebo uložit jako PDF</span> -</button> + diff --git a/privacyidea/static/components/token/views/token.enrolled.totp.html b/privacyidea/static/components/token/views/token.enrolled.totp.html index 8e55f73f58c94d86a90e4587577868811cb565db..0d67ff3b5d0bd9df75a788f7e75554e17e284bde 100644 --- a/privacyidea/static/components/token/views/token.enrolled.totp.html +++ b/privacyidea/static/components/token/views/token.enrolled.totp.html @@ -1,53 +1,101 @@ -<div class="row"> - <div ng-hide="form['2stepinit'] && enrolledToken.rollout_state !== 'clientwait'" - ng-class="$state.includes('token.wizard') == true && form['2stepinit'] == false ? 'col-sm-12' : 'col-sm-6'"> - <img width="{{ qrCodeWidth }}" - ng-class="$state.includes('token.wizard') == true && form['2stepinit'] == false ? 'centered' : 'not-centered'" - ng-src="{{ enrolledToken.googleurl.img }}"/> +<div class="totp-verify-mobile limit-max-width"> + <div ng-show="enrolledToken.rollout_state === 'enrolled'" class="limit-max-width'"> + <h3 class="main-heading-element" translate>Token enrolled</h3> + <div class="margin-bottom"> + {{ browserLanguage === 'cs' ? 'VaÅ¡e aplikace pro ověřovacà kódy byla úspěšnÄ› zaregistrována a ověřena.' : 'Your verification code app has been successfully enrolled and verified.' }} + </div> </div> - <div ng-hide="form['2stepinit']" - ng-class="$state.includes('token.wizard') == true && form['2stepinit'] == false ? 'col-sm-12' : 'col-sm-6'"> - <uib-accordion close-others="oneAtATime" ng-show="show_seed"> - <div uib-accordion-group - class="panel-default" - heading="{{ 'The OTP key'|translate }}"> - Hex: {{ enrolledToken.otpkey.value }}<br/> - Base32: {{ enrolledToken.otpkey.value_b32 }} + <div ng-show="enrolledToken.rollout_state === 'verify'" class="limit-max-width"> + <h3 class="main-heading-element"><b>{{ browserLanguage === 'cs' ? 'Nastavenà autentizace' : 'Authentication setup' }}</b> + </h3> + <div class="margin-bottom-large max-available-width"> + <div class="margin-bottom" ng-show="browserLanguage === 'en'"> + Scan the QR code with your authenticator app, e.g. + <a href="https://getaegis.app/" target="_blank" rel="noopener nofollow"><b>Aegis Authenticator</b></a> (Android) + or <a href="https://raivo-otp.com/" target="_blank" rel="noopener nofollow"><b>Raivo OTP</b></a> (iOS). + + If you cannot scan a QR code and you have the app in this device, + <a href="" ng-click="toggleTOTPAppCodeVisibility()"><b>click here</b></a> to reveal the text code. </div> - </uib-accordion> + <div class="margin-bottom" ng-show="browserLanguage === 'cs'"> + Naskenujte QR kód svou aplikacà pro ověřovacà kódy, napÅ™. + <a href="https://getaegis.app/" target="_blank" rel="noopener nofollow"><b>Aegis Authenticator</b></a> (Android) + nebo <a href="https://raivo-otp.com/" target="_blank" rel="noopener nofollow"><b>Raivo OTP</b></a> (iOS). - <div class="col-sm-12" ng-hide="$state.includes('token.wizard')"> - <p translate ng-show="enrolledToken.googleurl.value"> - Click <a href="{{ enrolledToken.googleurl.value }}">here</a> or scan - the QR Code, if you - want to add the Token to your Google Authenticator. - </p> - <p translate> - The QR Code contains the secret key of your token. You need to + Pokud nemůžete QR kód naskenovat a aplikaci máte v tomto zaÅ™ÃzenÃ, + <a href="" ng-click="toggleTOTPAppCodeVisibility()"><b>kliknÄ›te zde</b></a> pro zobrazenà kódu v textové podobÄ›. + </div> + <div class="totp-app-init-panel" ng-show="isVisibleTOTPAppCode"> + <div class="card-body"> + <h4 class="card-title"><b>{{ browserLanguage == 'cs' ? 'tajný klÃÄ pro ruÄnà vloženÃ' : 'secret key for manual input' }}</b></h4> + <div ng-show="enrolledToken.googleurl.value"> + <h6 class="card-subtitle mb-2 text-muted" ng-show="browserLanguage === 'en'"> + You can try clicking the link below instead of scanning the QR code. + </h6> + <h6 class="card-subtitle mb-2 text-muted" ng-show="browserLanguage === 'cs'"> + MÃsto skenovánà QR kódu můžete zkusit kliknout na odkaz nÞe. + </h6> + <p class="card-text totp-app-init-code"> + <b>{{ browserLanguage == 'cs' ? 'Odkaz' : 'Link' }}:</b> <a href="{{ enrolledToken.googleurl.value }}">{{ browserLanguage == 'cs' ? 'kliknÄ›te zde' : 'click here' }}</a> + </p> + </div> + <h6 class="card-subtitle mb-2 text-muted" ng-show="browserLanguage === 'en'"> + If nothing happened after clicking the link above, try copying one of these codes into your TOTP app manually. + </h6> + <h6 class="card-subtitle mb-2 text-muted" ng-show="browserLanguage === 'cs'"> + Pokud se po kliknutà na výše uvedený odkaz nic nestalo, zkuste jeden z tÄ›chto kódů zkopÃrovat do aplikace TOTP ruÄnÄ›. + </h6> + <p class="card-text totp-app-init-code"><b>{{ browserLanguage == 'cs' ? 'Base32 (nejÄastÄ›jÅ¡Ã)' : 'Base32 (most common)' }}:</b> {{ enrolledToken.otpkey.value_b32}}</p> + <p class="card-text totp-app-init-code"><b>{{ browserLanguage == 'cs' ? 'HexadecimálnÄ›' : 'Hexadecimal' }}:</b> {{ enrolledToken.otpkey.value }}</p> + </div> + </div> + </div> + <div ng-hide="form['2stepinit'] && enrolledToken.rollout_state !== 'clientwait'" + ng-class="$state.includes('token.wizard') == true && form['2stepinit'] == false ? 'col-sm-12' : 'col-sm-6'"> + <img width="{{ qrCodeWidth }}" + ng-class="$state.includes('token.wizard') == true && form['2stepinit'] == false ? 'centered limit-max-width' : 'not-centered limit-max-width'" + ng-src="{{ enrolledToken.googleurl.img }}"/> + </div> + <div ng-hide="form['2stepinit']" + ng-class="$state.includes('token.wizard') == true && form['2stepinit'] == false ? 'col-sm-12' : 'col-sm-6'"> + <div class="col-sm-12 margin-bottom-large"> + <p translate>The QR Code contains the secret key of your token. You need to protect it. <b>If you are in doubt, that someone else saw it, please - regenerate the QR Code, when no one else is watching.</b> - </p> - <button ng-click="regenerateToken()" class="btn btn-warning" translate> - Regenerate QR Code - </button> + regenerate the QR Code, when no one else is watching.</b></p> + <button ng-click="regenerateToken()" class="btn btn-warning" translate> + Regenerate QR Code + </button> + </div> </div> - </div> - <div class="col-sm-6" ng-show="form['2stepinit'] && enrolledToken.rollout_state === 'clientwait'"> - <p translate> - Your token {{ enrolledToken.serial }} is not completely enrolled, yet. - </p> - <p translate> - Please scan the QR code with the privacyIDEA authenticator app and enter - the generated code below. - </p> - <div class="form-group"> - <label for="clientpart" translate>Client Part</label> - <input type="text" ng-model="$parent.clientpart" - autofocus - class="form-control" - name="clientpart"> - <button type="button" ng-click="sendClientPart()" - class="btn btn-primary" translate>Enroll Token</button> + <div class="col-sm-6" ng-show="form['2stepinit'] && enrolledToken.rollout_state === 'clientwait'"> + <p translate> + Your token {{ enrolledToken.serial }} is not completely enrolled, yet. + </p> + <p translate> + Please scan the QR code with the privacyIDEA authenticator app and enter + the generated code below. + </p> + <div class="form-group"> + <label for="clientpart" translate>Client Part</label> + <input type="text" ng-model="$parent.clientpart" + autofocus + class="form-control" + name="clientpart"> + <button type="button" ng-click="sendClientPart()" + class="btn btn-primary" translate>Enroll Token + </button> + </div> + </div> + <div class="padding-top inline-block"> + <p ng-show="browserLanguage === 'en'"><b>Insert a verification code from your application</b></p> + <p ng-show="browserLanguage === 'cs'"><b>Vložte ověřovacà kód z aplikace</b></p> + <p ng-show="browserLanguage === 'en'"> + Your application will display a six-digit code after scanning the QR code. Please enter the code into the field below. + </p> + <p ng-show="browserLanguage === 'cs'"> + VaÅ¡e aplikace po naskenovánà QR kódu zobrazà šestimÃstný kód. Zadejte prosÃm kód do pole nÞe. + </p> </div> </div> </div> + diff --git a/privacyidea/static/components/token/views/token.html b/privacyidea/static/components/token/views/token.html index 347aebc28004c44b7e7fa35a8470c9c44c5e67f3..d8b6c186d25527171d8921aff65145305f41852c 100644 --- a/privacyidea/static/components/token/views/token.html +++ b/privacyidea/static/components/token/views/token.html @@ -1,7 +1,7 @@ <div class="well" ng-controller="tokenController"> <div class="row"> - <div class="col-lg-3 sticky" ng-hide="token_wizard"> + <div class="col-lg-3 desktop-sticky" ng-hide="token_wizard"> <div class="pa-sidebar panel"> <ul class="nav nav-pills nav-stacked"> <li role="presentation" @@ -112,7 +112,7 @@ </div> <div ng-class="{'col-lg-9': !token_wizard, 'col-lg-12': token_wizard}" - ui-view class="slide panel"> + ui-view class="slide panel panel-margins"> </div> </div> </div> diff --git a/privacyidea/static/components/token/views/token.info.backupcode.html b/privacyidea/static/components/token/views/token.info.backupcode.html new file mode 100644 index 0000000000000000000000000000000000000000..eb1345a2c188ab1999ce7bc4d4586028ea6043b7 --- /dev/null +++ b/privacyidea/static/components/token/views/token.info.backupcode.html @@ -0,0 +1,12 @@ +<div ng-show="browserLanguage === 'en'"> + This method can be enabled after verification codes have been set up. Backup codes are + <b>single-use</b> codes used for gaining access to your account in case you lose access to your primary verification + device. You can store them in PDF or print them. It is highly recommended to keep them <b>separately</b> from the device that you use to sign in regularly. + If you have used up most or all of your codes, it is recommended to generate new ones. +</div> +<div ng-show="browserLanguage === 'cs'"> + Tuto metodu lze aktivovat po nastavenà ověřovacÃch kódů. Záložnà kódy jsou + <b>jednorázové</b> kódy použitelné k zÃskánà pÅ™Ãstupu k VaÅ¡emu úÄtu v pÅ™ÃpadÄ›, že ztratÃte pÅ™Ãstup ke svému primárnÃmu zaÅ™ÃzenÃ. + Můžete si je uložit do souboru PDF nebo vytisknout. DoporuÄujeme uchovávat je <b>oddÄ›lenÄ›</b> od zaÅ™ÃzenÃ, kterým se běžnÄ› ověřujete. + Pokud jste spotÅ™ebovali vÄ›tÅ¡inu nebo vÅ¡echny své kódy, doporuÄujeme vygenerovat si nové. +</div> diff --git a/privacyidea/static/components/token/views/token.info.totp.html b/privacyidea/static/components/token/views/token.info.totp.html new file mode 100644 index 0000000000000000000000000000000000000000..4778b9956b2461b3f7666656a7ca1053d454642b --- /dev/null +++ b/privacyidea/static/components/token/views/token.info.totp.html @@ -0,0 +1,6 @@ +<div ng-show="browserLanguage === 'en'"> + Verification codes are generated by an authenticator application or by a password manager installed in your device, e.g. <a href="https://getaegis.app/" target="_blank" rel="noopener nofollow"><b>Aegis Authenticator</b></a> (Android) or <a href="https://raivo-otp.com/" target="_blank" rel="noopener nofollow"><b>Raivo OTP</b></a> (iOS). It will display a new verification code every 30 seconds. You can copy this code and insert it or type it while logging in. +</div> +<div ng-show="browserLanguage === 'cs'"> + Ověřovacà kódy jsou generovány ověřovacà aplikacà nebo správcem hesel nainstalovaným ve vaÅ¡em zaÅ™ÃzenÃ, napÅ™. <a href="https://getaegis.app/" target="_blank" rel="noopener nofollow"><b>Aegis Authenticator</b></a> (pro Android) nebo <a href="https://raivo-otp.com/" target="_blank" rel="noopener nofollow"><b>Raivo OTP</b></a> (pro iOS). Každých 30 sekund se zobrazà nový ověřovacà kód. Tento kód můžete zkopÃrovat a vložit nebo opsat pÅ™i pÅ™ihlaÅ¡ovánÃ. +</div> diff --git a/privacyidea/static/components/token/views/token.info.webauthn.html b/privacyidea/static/components/token/views/token.info.webauthn.html new file mode 100644 index 0000000000000000000000000000000000000000..2b26a936ed3102f98c19798a750372982e584906 --- /dev/null +++ b/privacyidea/static/components/token/views/token.info.webauthn.html @@ -0,0 +1,7 @@ +<div ng-show="browserLanguage === 'en'"> + This method can be enabled after verification codes have been set up. + Security keys (and passkeys) are a more secure and easier to use alternative to verification codes, but they are more complex to set up for the first time and they are not available for all devices and web browsers. Security keys are based on an open standard defined by the W3C and FIDO Alliance. You can use your smartphone, computer or a physical security token (e.g. a YubiKey) for verification. +</div> +<div ng-show="browserLanguage === 'cs'"> + Tuto metodu lze aktivovat po nastavenà ověřovacÃch kódů. BezpeÄnostnà klÃÄe (a tzv. passkeys) jsou bezpeÄnÄ›jšà a snáze použitelnou alternativou k ověřovacÃm kódům, ale jejich prvotnà nastavenà je složitÄ›jšà a nejsou dostupné pro vÅ¡echna zaÅ™Ãzenà a webové prohlÞeÄe. BezpeÄnostnà klÃÄe jsou založeny na otevÅ™eném standardu definovaném organizacemi W3C a FIDO Alliance. K ověřenà můžete použÃt svůj chytrý telefon, poÄÃtaÄ nebo fyzický bezpeÄnostnà token (napÅ™. YubiKey). +</div> diff --git a/privacyidea/static/components/token/views/token.modified.enroll.html b/privacyidea/static/components/token/views/token.modified.enroll.html new file mode 100644 index 0000000000000000000000000000000000000000..58b30fefaa96c1bf4e667192725f7b7206af0f03 --- /dev/null +++ b/privacyidea/static/components/token/views/token.modified.enroll.html @@ -0,0 +1,360 @@ +<div ng-init="calculateHasUsableTokens()" class="panel padded-panel"> + <!-- Hide the form, after the token was enrolled --> + <!-- 1/5 Show this only before the initial TOTP token is registered --> + <div ng-hide="enrolledToken || awaitingBackupcodeEnroll || awaitingSetupCompletion"> + <div ng-if="!hasUsableTokens"> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.1of5.html'"></ng-include> + </div> + <div ng-if="hasUsableTokens"> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.1of2.html'"></ng-include> + </div> + + <h3 class="main-heading-element" translate><b> + {{ browserLanguage == 'cs' ? 'VÃcefázové ověřenÃ' : 'Multi-factor authentication' }}</b></h3> + + <form name="formEnrollToken" role="form" validate ng-init="form.type = 'totp'"> + <div class="form-group" ng-repeat="(type, desc) in formInit.tokenTypes"> + <input class="form-check-input" type="radio" name="{type}" id="radio{{ type }}" value="{{ type }}" + ng-model="form.type" + ng-change="changeTokenType()" + ng-hide="!(hasUsableTokens || isAllowedInitially(type))" + ng-checked="type === 'totp'" + > + <label class="form-check-label custom-form-check-label" for="radio{{ type }}" + ng-hide="!(hasUsableTokens || isAllowedInitially(type))"> + <span ng-show="type === 'backupcode' && hasUsableTokens">{{ browserLanguage == 'cs' ? 'záložnà kódy' : 'backup codes' + }}</span> + <span ng-show="type === 'totp'">{{ browserLanguage == 'cs' ? 'ověřovacà kódy' : 'verification codes' + }}</span> + <span ng-show="type === 'webauthn' && hasUsableTokens">{{ browserLanguage == 'cs' ? 'bezpeÄnostnà klÃÄ' : 'security key' + }}</span> + <span ng-hide="type === 'backupcode' || type === 'totp' || type === 'webauthn'">{{ desc }}</span> + </label> + <div ng-if="type === 'backupcode' || type === 'totp' || type === 'webauthn'"> + <ng-include ng-hide="!(hasUsableTokens || isAllowedInitially(type))" + src="instanceUrl + '/static/components/token/views/token.info.' + type + '.html'"></ng-include> + </div> + </div> + + <!-- The description input field for all token types --> + <div class="form-group" ng-hide="loggedInUser.role == 'user' && !checkRight('setdescription')"> + <label for="description" translate>Description</label> + <p ng-show="browserLanguage === 'en'"> + Optionally, you can provide a description for your token. This will help you tell them apart if you + enroll multiple tokens. For example, you can use your device name or the authenticator app name as a + hint. + </p> + <p ng-show="browserLanguage === 'cs'"> + Můžete zadat popis svého tokenu (nepovinné). Popis sloužà k rozliÅ¡enà tokenů, pokud si jich + zaregistrujete vÃce. + Můžete napÅ™Ãklad použÃt název svého zaÅ™Ãzenà nebo název ověřovacà aplikace. + </p> + <input type="text" class="form-control" id="description" + autocomplete="new-password" + placeholder="Samsung - Aegis" + ng-model="form.description"/> + </div> + + <!-- User Assignment --> + <div ng-if="loggedInUser.role == 'admin' && $state.includes('token.rollover') == false"> + <h4 translate><b>Assign token to user</b></h4> + + <div assign-user new-user-object="newUser" realms="realms" + default-realm="defaultRealm"></div> + + <div class="msg-block" + ng-show="formEnrollToken.otppin2.$error.passwordVerify"> + <span class="msg-error" translate>OTP PINs do not match!</span> + </div> + </div> + <!-- Token PIN --> + <div class="form-group" + ng-if="loggedInUser.role == 'user' && !hidePin && + (!$state.includes('token.wizard') || getRightsValue('otp_pin_minlength'))&& + checkRight('enrollpin')"> + <label for="otppin" translate>PIN</label> + <input name="otppin" ng-model="newUser.pin" + type=password class="form-control" + equals="{{ pin2 }}" + placeholder="{{ 'Type a password'|translate }}"> + <input name="otppin2" ng-model="pin2" + type=password class="form-control" + equals="{{ newUser.pin }}" + placeholder="{{ 'Repeat password'|translate }}"> + </div> + + <!-- Extended attributes --> + <uib-accordion ng-hide="$state.includes('token.wizard') || + loggedInUser.role=='user'"> + <div uib-accordion-group + class="panel-default" + heading="{{ 'Extended Attributes'|translate }}"> + <div class="form-group col-sm-6"> + <label for="validity_start" + translate>Validity Start + </label> + <p class="input-group col-sm-12"> + <input type="text" class="form-control" + name="validity_start" + uib-datepicker-popup="yyyy-MM-ddTHH:mmZ" + ng-model="form.validity_period_start" + is-open="startOpened" + min-date="today" + show-button-bar="false" + close-text="Close"/> + <span class="input-group-btn"> + <button type="button" class="btn btn-default" + ng-click="startOpened = openDate($event)"> + <i class="glyphicon glyphicon-calendar"></i> + </button> + </span> + </p> + </div> + <div class="form-group col-sm-6"> + <label for="validity_end" + translate>Validity End + </label> + <p class="input-group col-sm-12"> + <input type="text" class="form-control" + name="validity_end" + uib-datepicker-popup="yyyy-MM-ddTHH:mmZ" + ng-model="form.validity_period_end" + is-open="endOpened" + show-button-bar="false" + min-date="today" + close-text="Close"/> + <span class="input-group-btn"> + <button type="button" class="btn btn-default" + ng-click="endOpened = openDate($event)"><i + class="glyphicon glyphicon-calendar"></i> + </button> + </span> + </p> + </div> + <p class="help" translate> + The start time and the end time of the validity period + should be entered in the format + <em>YYYY-MM-DDThh:mm+oooo</em>. + </p> + </div> + </uib-accordion> + + <!-- pass the rollover info in the form --> + <input type="checkbox" ng-show="false" name="rollover" + ng-init="form.rollover = $state.includes('token.rollover')" + ng-model="form.rollover"/> + <div class="text-center"> + <button type="button" ng-click="enrollToken();" + ng-disabled="!checkEnroll() || formEnrollToken.$invalid || enrolling" + class="btn btn-primary margin-bottom"> + <span ng-if="$state.includes('token.rollover') == false">{{ browserLanguage == 'cs' ? 'PokraÄovat' : 'Continue' + }}</span> + <span ng-if="$state.includes('token.rollover')" translate>Rollover Token</span> + </button> + </div> + </form> + + <!-- Configurable epilog --> + <div ng-if="$state.includes('token.wizard')" + ng-include="instanceUrl+'/'+piCustomization+ + '/views/includes/token.enroll.pre.bottom.html'"></div> + </div> + + <!-- Intermediate step to make sure the user has some TOTP app installed --> + <!-- 2/5 Show this after the initial TOTP token was registered --> + <div ng-show="enrolledToken && awaitingTOTPAppDisclaimerConfirm "> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.2of5.html'"></ng-include> + <h3 class="main-heading-element" translate><b> + {{ browserLanguage == 'cs' ? 'Máte aplikaci pro ukládánà ověřovacÃch kódů?' : 'Do you have a TOTP application?' + }}</b> + </h3> + <div class="margin-bottom-large"> + <p ng-show="browserLanguage === 'cs'"> + Dalšà krok aktivace vyžaduje, abyste na svém chytrém telefonu mÄ›li nainstalovanou aplikaci pro správu + ověřovacÃch kódů, nebo abyste mÄ›li správce hesel, který generovánà TOTP kódů podporuje. + Pokud takovou aplikaci nemáte, můžete využÃt napÅ™Ãklad <a + href="https://getaegis.app/" + target="_blank" + rel="noopener nofollow"><b>Aegis + Authenticator</b></a> (pro Android) nebo <a href="https://raivo-otp.com/" target="_blank" + rel="noopener nofollow"><b>Raivo OTP</b></a> (pro iOS), + pÅ™ÃpadnÄ› <b><a href="https://keepassxc.org/download/" target="_blank" + rel="noopener nofollow">KeePassXC</a></b> (Windows, macOS, Linux). + </p> + <p ng-show="browserLanguage !== 'cs'"> + The next step of activation requires that you have a TOTP app installed in your smartphone, or that you + have + a password manager with TOTP support. If you don't + have such app already, you can use for example <a href="https://getaegis.app/" target="_blank" + rel="noopener nofollow"><b>Aegis Authenticator</b></a> + (Android), <a href="https://raivo-otp.com/" target="_blank" rel="noopener nofollow"><b>Raivo + OTP</b></a> (iOS), or <b><a href="https://keepassxc.org/download/" target="_blank" + rel="noopener nofollow">KeePassXC</a></b> (Windows, macOS, Linux). + </p> + </div> + + <div class="qr-codes totp-verify-mobile"> + <div id="androidAppQrCode" class="max-available-width margin-bottom-large"> + <h5 class="margin-bottom"><b>Aegis Authenticator (Android)</b></h5> + <img src="static/aegis.svg" ng-style="{'width': qrCodeWidth + 'px', 'height': qrCodeWidth + 'px'}"> + </div> + <div id="iosAppQrCode" class="max-available-width margin-bottom-large"> + <h5 class="margin-bottom"><b>Raivo OTP (iOS)</b></h5> + <img src="static/raivo.svg" ng-style="{'width': qrCodeWidth + 'px', 'height': qrCodeWidth + 'px'}"> + </div> + </div> + + <div class="text-center"> + <button type="button" ng-click="toggleAwaitingTOTPAppDisclaimer()" + class="btn btn-primary margin-bottom"> + <span>{{ browserLanguage == 'cs' ? 'Mám aplikaci pro ověřenÃ' : 'I have a TOTP app' }}</span> + </button> + </div> + </div> + + <!-- Show this information after the token was enrolled completely --> + <!-- 3/5 Show this after the user was reminded to download a TOTP app --> + <div ng-show="enrolledToken && !awaitingBackupcodeEnroll && !awaitingTOTPAppDisclaimerConfirm"> + <div ng-if="!hasUsableTokens"> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.3of5.html'"></ng-include> + </div> + <div ng-if="hasUsableTokens"> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.2of2.html'"></ng-include> + </div> + + <!-- This is the token data section. It differs for every token type--> + <ng-include src="instanceUrl + + '/static/components/token/views/token.enrolled.' + form.type + '.html' + fileVersionSuffix"> + </ng-include> + + <!-- Verify Token enrollment --> + <div ng-show="enrolledToken.rollout_state === 'verify'"> + <div class="form-group verify-totp"> + <input type="text" ng-model="verifyResponse" + autofocus + class="form-control" + placeholder="123456" + name="verifyResponse"> + </div> + <div class="text-center"> + <button type="button" ng-click="sendVerifyResponse();" + class="btn btn-primary margin-bottom" translate>Verify Token + </button> + </div> + </div> + + <!-- Token Wizard --> + <div ng-if="$state.includes('token.wizard')" + ng-include="instanceUrl+'/'+piCustomization+ + '/views/includes/token.enroll.post.bottom.html'"></div> + + <div class="text-center" ng-hide="click_wait || enrolledToken.rollout_state === 'clientwait' + || enrolledToken.rollout_state === 'verify'"> + <!-- Confirm MFA activation dialog after registering initial token --> + <button ng-click="hasSeenMFADialog = true; showMFAActivationDialog()" + ng-hide="hasUsableTokens || hasSeenMFADialog" + class="btn btn-primary margin-bottom"> + {{ browserLanguage == 'cs' ? 'PokraÄovat' : 'Continue' }} + </button> + + <!-- Finish the enrollment process if this wasn't the user's initial token --> + <button ng-click="enrolledToken = null; enrolling = false;" + ng-hide="!hasUsableTokens" + ui-sref="token.list" + class="btn btn-outline-secondary margin-bottom" translate> + {{ browserLanguage == 'cs' ? 'ZavÅ™Ãt' : 'Close' }} + </button> + </div> + </div> + + <!-- 4/5 Show this after the initial TOTP token was registered --> + <div ng-show="awaitingBackupcodeEnroll"> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.4of5.html'"></ng-include> + + <!-- This is the token data section. It differs for every token type--> + <ng-include src="instanceUrl + + '/static/components/token/views/token.enrolled.' + form.type + '.html' + fileVersionSuffix"> + </ng-include> + <div class="text-center"> + <button ng-click="awaitingBackupcodeEnroll = false; awaitingSetupCompletion = true; enrolledToken = null; loadMfaManagementUrl()" + ng-disabled="!hasDownloadedBackupcodes" + class="btn btn-primary margin-bottom"> + {{ browserLanguage == 'cs' ? 'Záložnà kódy mám' : 'I have my backup codes' }} + </button> + </div> + </div> + + <!-- 5/5 Show this after the initial TOTP token and the initial backupcodes have been registered --> + <div ng-show="awaitingSetupCompletion"> + <ng-include + src="instanceUrl + '/static/components/token/views/progress_bars/progress.bar.5of5.html'"></ng-include> + + <div class="totp-verify-mobile"> + <h3 class="main-heading-element"><b> + {{ browserLanguage == 'cs' ? 'VÃcefázové ověřenà bylo úspěšnÄ› nastaveno.' : 'Multi-factor authentication has been successfully set up!' + }} + </b></h3> + + <p ng-show="browserLanguage === 'en'"><b>Which services will now require multi-factor + authentication?</b></p> + <p ng-show="browserLanguage === 'cs'"><b>Které služby budou nynà vyžadovat vÃcefázové + ověřenÃ?</b></p> + <p ng-show="browserLanguage === 'en'"> + Multi-factor authentication is currently activated for all services. + <span ng-hide="mfaManagementUrl === ''">To manage your settings, click the Service settings button below.</span> + </p> + <p ng-show="browserLanguage === 'cs'"> + VÃcefázové ověřenà je nynà aktivnà pro vÅ¡echny služby. + <span ng-hide="mfaManagementUrl === ''">Chcete-li upravit toto nastavenÃ, použijte tlaÄÃtko Nastavenà služeb nÞe. </span> + </p> + + <!-- Open Perun settings in a new tab --> + <button class="btn-default btn margin-bottom-large" + ng-hide="mfaManagementUrl === ''" ng-click="redirectToMfaManagement();"> + {{ browserLanguage == 'cs' ? 'Nastavenà služeb' : 'Service settings' }} + </button> + </div> + + <div class="totp-verify-mobile"> + <h3 ng-show="browserLanguage === 'en'"><b>Add another method of multi-factor authentication + (optional)</b></h3> + <h3 ng-show="browserLanguage === 'cs'"><b>PÅ™idat dalšà metodu vÃcefázového ověřenà + (nepovinné)</b></h3> + <p ng-show="browserLanguage === 'en'"><b> + We highly recommend setting up an additional method of authentication using security keys, + for easier and more secure log in from your devices. + You can set up multiple security keys and sign in with the one you have most handy. + </b></p> + <p ng-show="browserLanguage === 'cs'"><b> + DoporuÄujeme nastavit dalšà metodu ověřovánà pomocà bezpeÄnostnÃch klÃÄů, pro snadnÄ›jšà a + bezpeÄnÄ›jšà pÅ™ihlaÅ¡ovánà ze svých zaÅ™ÃzenÃ. + Můžete si nastavit vÃce bezpeÄnostnÃch klÃÄů a pÅ™ihlásit se pomocà toho, který máte zrovna + po ruce. + </b></p> + <button class="btn-default btn margin-bottom-large" + ng-click="calculateHasUsableTokens(); awaitingSetupCompletion = false; form.type='webauthn'; form.description=''; enrolling=false"> + {{ browserLanguage == 'cs' ? 'PÅ™idat bezpeÄnostnà klÃÄ' : 'Set up a security key' }} + </button> + </div> + <div class="text-center"> + <button ng-click="awaitingSetupCompletion=false" + ui-sref="token.list" + ng-hide="$state.includes('token.wizard')" + class="btn btn-outline-secondary margin-bottom" translate> + {{ browserLanguage == 'cs' ? 'ZavÅ™Ãt' : 'Close' }} + </button> + <button ng-click="logout()" + ui-sref="token.list" + ng-hide="!$state.includes('token.wizard')" + class="btn btn-outline-secondary margin-bottom" translate> + {{ browserLanguage == 'cs' ? 'Odhlásit' : 'Log out' }} + </button> + </div> + </div> +</div> diff --git a/privacyidea/static/css/token-enroll-flow.css b/privacyidea/static/css/token-enroll-flow.css new file mode 100644 index 0000000000000000000000000000000000000000..f321774381ffe41bbdfe96cc176c7ccfeab0df66 --- /dev/null +++ b/privacyidea/static/css/token-enroll-flow.css @@ -0,0 +1,183 @@ +:root { + --primary-bg-color: #337ab7; + --primary-border-color: #2e6da4; + --secondary-bg-color: #f9f9f9; + --secondary-border-color: #c0c0c0; +} + +.margin-bottom { + margin-bottom: 15px; +} + +.margin-bottom-large { + margin-bottom: 45px; +} + +.margin-top { + margin-top: 15px; +} + +.margin-right { + margin-right: 15px; +} + +.margin-vertical { + margin-top: 15px; + margin-bottom: 15px; +} + +.no-margin-bottom { + margin-bottom: 0; +} + +.padding-top { + padding-top: 15px; +} + +.max-available-width { + max-width: -webkit-fill-available; +} + +.main-heading-element { + margin-top: 20px; + margin-bottom: 20px; +} + +.padded-panel { + padding-left: 10%; + padding-right: 10%; + margin-bottom: 0; +} + + +.form-control-top { + margin-top: 10px; +} + +input[type="radio"] { + margin-bottom: 0; +} + +.custom-form-check-label { + display: contents; +} + +.inline-block { + display: inline-block; +} + +.limit-max-width { + max-width: 100%; +} + +.totp-app-init-panel { + margin-bottom: 15px; + border: 1px solid var(--secondary-border-color); + border-radius: 5px; + background-color: var(--secondary-bg-color); + padding: 10px +} + +.totp-app-init-code { + word-wrap: break-word; +} + +@media (max-width: 1200px) { + .panel-margins { + margin-top: 15px; + margin-left: 15px; + margin-right: 15px; + } +} + +.verify-totp { + width: 30%; +} + +.qr-codes { + display: flex; + justify-content: space-between; +} + +@media (max-width: 600px) { + .verify-totp { + width: 100%; + } + + .totp-verify-mobile { + display: flex; + flex-direction: column; + align-items: center; + } +} + +@media (min-width: 1200px) { + .desktop-sticky { + position: sticky; + top: 0; + } +} + +.alternate-row:nth-child(even) { + background-color: var(--secondary-bg-color); +} + +/* Progress bar */ +body { + background-color: #eee; + font-family: "Poppins", sans-serif; + font-weight: 300; +} + +.progresses { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 15px; + margin-bottom: 45px; +} + +.line { + width: 100%; + height: 6px; +} + +.empty { + background: lightgray +} + +.filled { + background: var(--primary-bg-color); +} + +.steps { + display: flex; + color: #fff; + font-size: 14px; + width: 40px; + height: 40px; + align-items: center; + justify-content: center; + border-radius: 50%; + padding: 20px; +} + +/* hide links to PI docs */ + +a[href*="privacyidea.readthedocs.io"] { + display: none !important; +} + +/* search bar */ + +#find-user { + margin-right: 1em; +} + +#androidAppQrCode img { + max-width: -webkit-fill-available; +} + +#iosAppQrCode img { + max-width: -webkit-fill-available; +} \ No newline at end of file diff --git a/privacyidea/static/jspdf.plugin.autotable.min.js b/privacyidea/static/jspdf.plugin.autotable.min.js new file mode 100644 index 0000000000000000000000000000000000000000..3de19629e387c7271b46441f10cc7772afae68d7 --- /dev/null +++ b/privacyidea/static/jspdf.plugin.autotable.min.js @@ -0,0 +1,10 @@ +/*! + * + * jsPDF AutoTable plugin v3.5.28 + * + * Copyright (c) 2022 Simon Bengtsson, https://github.com/simonbengtsson/jsPDF-AutoTable + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + * + */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(function(){try{return require("jspdf")}catch(t){}}());else if("function"==typeof define&&define.amd)define(["jspdf"],e);else{var n="object"==typeof exports?e(function(){try{return require("jspdf")}catch(t){}}()):e(t.jspdf);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof globalThis?globalThis:void 0!==this?this:"undefined"!=typeof window?window:"undefined"!=typeof self?self:global,(function(t){return function(){"use strict";var e={662:function(t,e){var n,o=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},n(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function o(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)});Object.defineProperty(e,"__esModule",{value:!0}),e.CellHookData=e.HookData=void 0;var r=function(t,e,n){this.table=e,this.pageNumber=e.pageNumber,this.pageCount=this.pageNumber,this.settings=e.settings,this.cursor=n,this.doc=t.getDocument()};e.HookData=r;var i=function(t){function e(e,n,o,r,i,l){var a=t.call(this,e,n,l)||this;return a.cell=o,a.row=r,a.column=i,a.section=r.section,a}return o(e,t),e}(r);e.CellHookData=i},790:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var o=n(148),r=n(938),i=n(323),l=n(587),a=n(49),s=n(858);e.default=function(t){t.API.autoTable=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];1===e.length?t=e[0]:(console.error("Use of deprecated autoTable initiation"),(t=e[2]||{}).columns=e[0],t.body=e[1]);var o=(0,l.parseInput)(this,t),r=(0,s.createTable)(this,o);return(0,a.drawTable)(this,r),this},t.API.lastAutoTable=!1,t.API.previousAutoTable=!1,t.API.autoTable.previous=!1,t.API.autoTableText=function(t,e,n,o){(0,r.default)(t,e,n,o,this)},t.API.autoTableSetDefaults=function(t){return i.DocHandler.setDefaults(t,this),this},t.autoTableSetDefaults=function(t,e){i.DocHandler.setDefaults(t,e)},t.API.autoTableHtmlToJson=function(t,e){if(void 0===e&&(e=!1),"undefined"==typeof window)return console.error("Cannot run autoTableHtmlToJson in non browser environment"),null;var n=new i.DocHandler(this),r=(0,o.parseHtml)(n,t,window,e,!1),l=r.head,a=r.body;return{columns:l[0].map((function(t){return t.content})),rows:a,data:a}},t.API.autoTableEndPosY=function(){console.error("Use of deprecated function: autoTableEndPosY. Use doc.lastAutoTable.finalY instead.");var t=this.lastAutoTable;return t&&t.finalY?t.finalY:0},t.API.autoTableAddPageContent=function(e){return console.error("Use of deprecated function: autoTableAddPageContent. Use jsPDF.autoTableSetDefaults({didDrawPage: () => {}}) instead."),t.API.autoTable.globalDefaults||(t.API.autoTable.globalDefaults={}),t.API.autoTable.globalDefaults.addPageContent=e,this},t.API.autoTableAddPage=function(){return console.error("Use of deprecated function: autoTableAddPage. Use doc.addPage()"),this.addPage(),this}}},938:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,o,r){o=o||{};var i=1.15,l=r.internal.scaleFactor,a=r.internal.getFontSize()/l,s="",u=1;if("middle"!==o.valign&&"bottom"!==o.valign&&"center"!==o.halign&&"right"!==o.halign||(u=(s="string"==typeof t?t.split(/\r\n|\r|\n/g):t).length||1),n+=a*(2-i),"middle"===o.valign?n-=u/2*a*i:"bottom"===o.valign&&(n-=u*a*i),"center"===o.halign||"right"===o.halign){var d=a;if("center"===o.halign&&(d*=.5),s&&u>=1){for(var h=0;h<s.length;h++)r.text(s[h],e-r.getStringUnitWidth(s[h])*d,n),n+=a*i;return r}e-=r.getStringUnitWidth(t)*d}return"justify"===o.halign?r.text(t,e,n,{maxWidth:o.maxWidth||100,align:"justify"}):r.text(t,e,n),r}},200:function(t,e){function n(t,e){var n=t>0,o=e||0===e;return n&&o?"DF":n?"S":o?"F":null}Object.defineProperty(e,"__esModule",{value:!0}),e.parseSpacing=e.getFillStyle=e.addTableBorder=e.getStringWidth=void 0,e.getStringWidth=function(t,e,n){return n.applyStyles(e,!0),(Array.isArray(t)?t:[t]).map((function(t){return n.getTextWidth(t)})).reduce((function(t,e){return Math.max(t,e)}),0)},e.addTableBorder=function(t,e,o,r){var i=e.settings.tableLineWidth,l=e.settings.tableLineColor;t.applyStyles({lineWidth:i,lineColor:l});var a=n(i,!1);a&&t.rect(o.x,o.y,e.getWidth(t.pageSize().width),r.y-o.y,a)},e.getFillStyle=n,e.parseSpacing=function(t,e){var n,o,r,i;if(t=t||e,Array.isArray(t)){if(t.length>=4)return{top:t[0],right:t[1],bottom:t[2],left:t[3]};if(3===t.length)return{top:t[0],right:t[1],bottom:t[2],left:t[1]};if(2===t.length)return{top:t[0],right:t[1],bottom:t[0],left:t[1]};t=1===t.length?t[0]:e}return"object"==typeof t?("number"==typeof t.vertical&&(t.top=t.vertical,t.bottom=t.vertical),"number"==typeof t.horizontal&&(t.right=t.horizontal,t.left=t.horizontal),{left:null!==(n=t.left)&&void 0!==n?n:e,top:null!==(o=t.top)&&void 0!==o?o:e,right:null!==(r=t.right)&&void 0!==r?r:e,bottom:null!==(i=t.bottom)&&void 0!==i?i:e}):("number"!=typeof t&&(t=e),{top:t,right:t,bottom:t,left:t})}},913:function(t,e){var n,o=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},n(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function o(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)});Object.defineProperty(e,"__esModule",{value:!0}),e.getTheme=e.defaultStyles=e.HtmlRowInput=e.FONT_ROW_RATIO=void 0,e.FONT_ROW_RATIO=1.15;var r=function(t){function e(e){var n=t.call(this)||this;return n._element=e,n}return o(e,t),e}(Array);e.HtmlRowInput=r,e.defaultStyles=function(t){return{font:"helvetica",fontStyle:"normal",overflow:"linebreak",fillColor:!1,textColor:20,halign:"left",valign:"top",fontSize:10,cellPadding:5/t,lineColor:200,lineWidth:0,cellWidth:"auto",minCellHeight:0,minCellWidth:0}},e.getTheme=function(t){return{striped:{table:{fillColor:255,textColor:80,fontStyle:"normal"},head:{textColor:255,fillColor:[41,128,185],fontStyle:"bold"},body:{},foot:{textColor:255,fillColor:[41,128,185],fontStyle:"bold"},alternateRow:{fillColor:245}},grid:{table:{fillColor:255,textColor:80,fontStyle:"normal",lineWidth:.1},head:{textColor:255,fillColor:[26,188,156],fontStyle:"bold",lineWidth:0},body:{},foot:{textColor:255,fillColor:[26,188,156],fontStyle:"bold",lineWidth:0},alternateRow:{}},plain:{head:{fontStyle:"bold"},foot:{fontStyle:"bold"}}}[t]}},259:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.parseCss=void 0;var o=n(200);function r(t,e){var n=i(t,e);if(!n)return null;var o=n.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d*))?\)$/);if(!o||!Array.isArray(o))return null;var r=[parseInt(o[1]),parseInt(o[2]),parseInt(o[3])];return 0===parseInt(o[4])||isNaN(r[0])||isNaN(r[1])||isNaN(r[2])?null:r}function i(t,e){var n=e(t);return"rgba(0, 0, 0, 0)"===n||"transparent"===n||"initial"===n||"inherit"===n?null==t.parentElement?null:i(t.parentElement,e):n}e.parseCss=function(t,e,n,i,l){var a={},s=96/72,u=r(e,(function(t){return l.getComputedStyle(t).backgroundColor}));null!=u&&(a.fillColor=u);var d=r(e,(function(t){return l.getComputedStyle(t).color}));null!=d&&(a.textColor=d);var h=r(e,(function(t){return l.getComputedStyle(t).borderTopColor}));null!=h&&(a.lineColor=h);var c=function(t,e){var n=[t.paddingTop,t.paddingRight,t.paddingBottom,t.paddingLeft],r=96/(72/e),i=(parseInt(t.lineHeight)-parseInt(t.fontSize))/e/2,l=n.map((function(t){return parseInt(t||"0")/r})),a=(0,o.parseSpacing)(l,0);i>a.top&&(a.top=i);i>a.bottom&&(a.bottom=i);return a}(i,n);c&&(a.cellPadding=c);var f=parseInt(i.borderTopWidth||"");(f=f/s/n)&&(a.lineWidth=f);var g=["left","right","center","justify"];-1!==g.indexOf(i.textAlign)&&(a.halign=i.textAlign),-1!==(g=["middle","bottom","top"]).indexOf(i.verticalAlign)&&(a.valign=i.verticalAlign);var p=parseInt(i.fontSize||"");isNaN(p)||(a.fontSize=p/s);var y=function(t){var e="";("bold"===t.fontWeight||"bolder"===t.fontWeight||parseInt(t.fontWeight)>=700)&&(e="bold");"italic"!==t.fontStyle&&"oblique"!==t.fontStyle||(e+="italic");return e}(i);y&&(a.fontStyle=y);var v=(i.fontFamily||"").toLowerCase();return-1!==t.indexOf(v)&&(a.font=v),a}},323:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.DocHandler=void 0;var n={},o=function(){function t(t){this.jsPDFDocument=t,this.userStyles={textColor:t.getTextColor?this.jsPDFDocument.getTextColor():0,fontSize:t.internal.getFontSize(),fontStyle:t.internal.getFont().fontStyle,font:t.internal.getFont().fontName,lineWidth:t.getLineWidth?this.jsPDFDocument.getLineWidth():0,lineColor:t.getDrawColor?this.jsPDFDocument.getDrawColor():0}}return t.setDefaults=function(t,e){void 0===e&&(e=null),e?e.__autoTableDocumentDefaults=t:n=t},t.unifyColor=function(t){return Array.isArray(t)?t:"number"==typeof t?[t,t,t]:"string"==typeof t?[t]:null},t.prototype.applyStyles=function(e,n){var o,r,i;void 0===n&&(n=!1),e.fontStyle&&this.jsPDFDocument.setFontStyle&&this.jsPDFDocument.setFontStyle(e.fontStyle);var l=this.jsPDFDocument.internal.getFont(),a=l.fontStyle,s=l.fontName;if(e.font&&(s=e.font),e.fontStyle){a=e.fontStyle;var u=this.getFontList()[s];u&&-1===u.indexOf(a)&&(this.jsPDFDocument.setFontStyle&&this.jsPDFDocument.setFontStyle(u[0]),a=u[0])}if(this.jsPDFDocument.setFont(s,a),e.fontSize&&this.jsPDFDocument.setFontSize(e.fontSize),!n){var d=t.unifyColor(e.fillColor);d&&(o=this.jsPDFDocument).setFillColor.apply(o,d),(d=t.unifyColor(e.textColor))&&(r=this.jsPDFDocument).setTextColor.apply(r,d),(d=t.unifyColor(e.lineColor))&&(i=this.jsPDFDocument).setDrawColor.apply(i,d),"number"==typeof e.lineWidth&&this.jsPDFDocument.setLineWidth(e.lineWidth)}},t.prototype.splitTextToSize=function(t,e,n){return this.jsPDFDocument.splitTextToSize(t,e,n)},t.prototype.rect=function(t,e,n,o,r){return this.jsPDFDocument.rect(t,e,n,o,r)},t.prototype.getLastAutoTable=function(){return this.jsPDFDocument.lastAutoTable||null},t.prototype.getTextWidth=function(t){return this.jsPDFDocument.getTextWidth(t)},t.prototype.getDocument=function(){return this.jsPDFDocument},t.prototype.setPage=function(t){this.jsPDFDocument.setPage(t)},t.prototype.addPage=function(){return this.jsPDFDocument.addPage()},t.prototype.getFontList=function(){return this.jsPDFDocument.getFontList()},t.prototype.getGlobalOptions=function(){return n||{}},t.prototype.getDocumentOptions=function(){return this.jsPDFDocument.__autoTableDocumentDefaults||{}},t.prototype.pageSize=function(){var t=this.jsPDFDocument.internal.pageSize;return null==t.width&&(t={width:t.getWidth(),height:t.getHeight()}),t},t.prototype.scaleFactor=function(){return this.jsPDFDocument.internal.scaleFactor},t.prototype.pageNumber=function(){var t=this.jsPDFDocument.internal.getCurrentPageInfo();return t?t.pageNumber:this.jsPDFDocument.internal.getNumberOfPages()},t}();e.DocHandler=o},148:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.parseHtml=void 0;var o=n(259),r=n(913);function i(t,e,n,i,a,s){for(var u=new r.HtmlRowInput(i),d=0;d<i.cells.length;d++){var h=i.cells[d],c=n.getComputedStyle(h);if(a||"none"!==c.display){var f=void 0;s&&(f=(0,o.parseCss)(t,h,e,c,n)),u.push({rowSpan:h.rowSpan,colSpan:h.colSpan,styles:f,_element:h,content:l(h)})}}var g=n.getComputedStyle(i);if(u.length>0&&(a||"none"!==g.display))return u}function l(t){var e=t.cloneNode(!0);return e.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/ +/g," "),e.innerHTML=e.innerHTML.split(/\<br.*?\>/).map((function(t){return t.trim()})).join("\n"),e.innerText||e.textContent||""}e.parseHtml=function(t,e,n,o,r){var l,a,s;void 0===o&&(o=!1),void 0===r&&(r=!1),s="string"==typeof e?n.document.querySelector(e):e;var u=Object.keys(t.getFontList()),d=t.scaleFactor(),h=[],c=[],f=[];if(!s)return console.error("Html table could not be found with input: ",e),{head:h,body:c,foot:f};for(var g=0;g<s.rows.length;g++){var p=s.rows[g],y=null===(a=null===(l=null==p?void 0:p.parentElement)||void 0===l?void 0:l.tagName)||void 0===a?void 0:a.toLowerCase(),v=i(u,d,n,p,o,r);v&&("thead"===y?h.push(v):"tfoot"===y?f.push(v):c.push(v))}return{head:h,body:c,foot:f}}},587:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.parseInput=void 0;var o=n(148),r=n(360),i=n(200),l=n(323),a=n(291);function s(t,e,n){var o=t[0]||e[0]||n[0]||[],r=[];return Object.keys(o).filter((function(t){return"_element"!==t})).forEach((function(t){var e,n=1;"object"!=typeof(e=Array.isArray(o)?o[parseInt(t)]:o[t])||Array.isArray(e)||(n=(null==e?void 0:e.colSpan)||1);for(var i=0;i<n;i++){var l={dataKey:Array.isArray(o)?r.length:t+(i>0?"_".concat(i):"")};r.push(l)}})),r}e.parseInput=function(t,e){var n=new l.DocHandler(t),u=n.getDocumentOptions(),d=n.getGlobalOptions();(0,a.default)(n,d,u,e);var h,c=(0,r.assign)({},d,u,e);"undefined"!=typeof window&&(h=window);var f=function(t,e,n){for(var o={styles:{},headStyles:{},bodyStyles:{},footStyles:{},alternateRowStyles:{},columnStyles:{}},i=function(i){if("columnStyles"===i){var l=t[i],a=e[i],s=n[i];o.columnStyles=(0,r.assign)({},l,a,s)}else{var u=[t,e,n].map((function(t){return t[i]||{}}));o[i]=(0,r.assign)({},u[0],u[1],u[2])}},l=0,a=Object.keys(o);l<a.length;l++){i(a[l])}return o}(d,u,e),g=function(t,e,n){for(var o={didParseCell:[],willDrawCell:[],didDrawCell:[],didDrawPage:[]},r=0,i=[t,e,n];r<i.length;r++){var l=i[r];l.didParseCell&&o.didParseCell.push(l.didParseCell),l.willDrawCell&&o.willDrawCell.push(l.willDrawCell),l.didDrawCell&&o.didDrawCell.push(l.didDrawCell),l.didDrawPage&&o.didDrawPage.push(l.didDrawPage)}return o}(d,u,e),p=function(t,e){var n,o,r,l,a,s,u,d,h,c,f,g,p,y=(0,i.parseSpacing)(e.margin,40/t.scaleFactor()),v=null!==(n=function(t,e){var n=t.getLastAutoTable(),o=t.scaleFactor(),r=t.pageNumber(),i=!1;if(n&&n.startPageNumber){i=n.startPageNumber+n.pageNumber-1===r}if("number"==typeof e)return e;if((null==e||!1===e)&&i&&null!=(null==n?void 0:n.finalY))return n.finalY+20/o;return null}(t,e.startY))&&void 0!==n?n:y.top;g=!0===e.showFoot?"everyPage":!1===e.showFoot?"never":null!==(o=e.showFoot)&&void 0!==o?o:"everyPage";p=!0===e.showHead?"everyPage":!1===e.showHead?"never":null!==(r=e.showHead)&&void 0!==r?r:"everyPage";var m=null!==(l=e.useCss)&&void 0!==l&&l,b=e.theme||(m?"plain":"striped"),w=!!e.horizontalPageBreak,S=null!==(a=e.horizontalPageBreakRepeat)&&void 0!==a?a:null;return{includeHiddenHtml:null!==(s=e.includeHiddenHtml)&&void 0!==s&&s,useCss:m,theme:b,startY:v,margin:y,pageBreak:null!==(u=e.pageBreak)&&void 0!==u?u:"auto",rowPageBreak:null!==(d=e.rowPageBreak)&&void 0!==d?d:"auto",tableWidth:null!==(h=e.tableWidth)&&void 0!==h?h:"auto",showHead:p,showFoot:g,tableLineWidth:null!==(c=e.tableLineWidth)&&void 0!==c?c:0,tableLineColor:null!==(f=e.tableLineColor)&&void 0!==f?f:200,horizontalPageBreak:w,horizontalPageBreakRepeat:S}}(n,c),y=function(t,e,n){var r=e.head||[],i=e.body||[],l=e.foot||[];if(e.html){var a=e.includeHiddenHtml;if(n){var u=(0,o.parseHtml)(t,e.html,n,a,e.useCss)||{};r=u.head||r,i=u.body||r,l=u.foot||r}else console.error("Cannot parse html in non browser environment")}return{columns:e.columns||s(r,i,l),head:r,body:i,foot:l}}(n,c,h);return{id:e.tableId,content:y,hooks:g,styles:f,settings:p}}},291:function(t,e){function n(t){t.rowHeight?(console.error("Use of deprecated style rowHeight. It is renamed to minCellHeight."),t.minCellHeight||(t.minCellHeight=t.rowHeight)):t.columnWidth&&(console.error("Use of deprecated style columnWidth. It is renamed to cellWidth."),t.cellWidth||(t.cellWidth=t.columnWidth))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,o,r){for(var i=function(e){e&&"object"!=typeof e&&console.error("The options parameter should be of type object, is: "+typeof e),void 0!==e.extendWidth&&(e.tableWidth=e.extendWidth?"auto":"wrap",console.error("Use of deprecated option: extendWidth, use tableWidth instead.")),void 0!==e.margins&&(void 0===e.margin&&(e.margin=e.margins),console.error("Use of deprecated option: margins, use margin instead.")),e.startY&&"number"!=typeof e.startY&&(console.error("Invalid value for startY option",e.startY),delete e.startY),!e.didDrawPage&&(e.afterPageContent||e.beforePageContent||e.afterPageAdd)&&(console.error("The afterPageContent, beforePageContent and afterPageAdd hooks are deprecated. Use didDrawPage instead"),e.didDrawPage=function(n){t.applyStyles(t.userStyles),e.beforePageContent&&e.beforePageContent(n),t.applyStyles(t.userStyles),e.afterPageContent&&e.afterPageContent(n),t.applyStyles(t.userStyles),e.afterPageAdd&&n.pageNumber>1&&n.afterPageAdd(n),t.applyStyles(t.userStyles)}),["createdHeaderCell","drawHeaderRow","drawRow","drawHeaderCell"].forEach((function(t){e[t]&&console.error('The "'.concat(t,'" hook has changed in version 3.0, check the changelog for how to migrate.'))})),[["showFoot","showFooter"],["showHead","showHeader"],["didDrawPage","addPageContent"],["didParseCell","createdCell"],["headStyles","headerStyles"]].forEach((function(t){var n=t[0],o=t[1];e[o]&&(console.error("Use of deprecated option ".concat(o,". Use ").concat(n," instead")),e[n]=e[o])})),[["padding","cellPadding"],["lineHeight","rowHeight"],"fontSize","overflow"].forEach((function(t){var n="string"==typeof t?t:t[0],o="string"==typeof t?t:t[1];void 0!==e[n]&&(void 0===e.styles[o]&&(e.styles[o]=e[n]),console.error("Use of deprecated option: "+n+", use the style "+o+" instead."))}));for(var o=0,r=["styles","bodyStyles","headStyles","footStyles"];o<r.length;o++){n(e[r[o]]||{})}for(var i=e.columnStyles||{},l=0,a=Object.keys(i);l<a.length;l++){n(i[a[l]]||{})}},l=0,a=[e,o,r];l<a.length;l++){i(a[l])}}},287:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.Column=e.Cell=e.Row=e.Table=void 0;var o=n(913),r=n(662),i=n(200),l=function(){function t(t,e){this.pageNumber=1,this.pageCount=1,this.id=t.id,this.settings=t.settings,this.styles=t.styles,this.hooks=t.hooks,this.columns=e.columns,this.head=e.head,this.body=e.body,this.foot=e.foot}return t.prototype.getHeadHeight=function(t){return this.head.reduce((function(e,n){return e+n.getMaxCellHeight(t)}),0)},t.prototype.getFootHeight=function(t){return this.foot.reduce((function(e,n){return e+n.getMaxCellHeight(t)}),0)},t.prototype.allRows=function(){return this.head.concat(this.body).concat(this.foot)},t.prototype.callCellHooks=function(t,e,n,o,i,l){for(var a=0,s=e;a<s.length;a++){var u=!1===(0,s[a])(new r.CellHookData(t,this,n,o,i,l));if(n.text=Array.isArray(n.text)?n.text:[n.text],u)return!1}return!0},t.prototype.callEndPageHooks=function(t,e){t.applyStyles(t.userStyles);for(var n=0,o=this.hooks.didDrawPage;n<o.length;n++){(0,o[n])(new r.HookData(t,this,e))}},t.prototype.getWidth=function(t){if("number"==typeof this.settings.tableWidth)return this.settings.tableWidth;if("wrap"===this.settings.tableWidth)return this.columns.reduce((function(t,e){return t+e.wrappedWidth}),0);var e=this.settings.margin;return t-e.left-e.right},t}();e.Table=l;var a=function(){function t(t,e,n,r,i){void 0===i&&(i=!1),this.height=0,this.raw=t,t instanceof o.HtmlRowInput&&(this.raw=t._element,this.element=t._element),this.index=e,this.section=n,this.cells=r,this.spansMultiplePages=i}return t.prototype.getMaxCellHeight=function(t){var e=this;return t.reduce((function(t,n){var o;return Math.max(t,(null===(o=e.cells[n.index])||void 0===o?void 0:o.height)||0)}),0)},t.prototype.hasRowSpan=function(t){var e=this;return t.filter((function(t){var n=e.cells[t.index];return!!n&&n.rowSpan>1})).length>0},t.prototype.canEntireRowFit=function(t,e){return this.getMaxCellHeight(e)<=t},t.prototype.getMinimumRowHeight=function(t,e){var n=this;return t.reduce((function(t,r){var i=n.cells[r.index];if(!i)return 0;var l=i.styles.fontSize/e.scaleFactor()*o.FONT_ROW_RATIO,a=i.padding("vertical")+l;return a>t?a:t}),0)},t}();e.Row=a;var s=function(){function t(t,e,n){var o,r;this.contentHeight=0,this.contentWidth=0,this.wrappedWidth=0,this.minReadableWidth=0,this.minWidth=0,this.width=0,this.height=0,this.x=0,this.y=0,this.styles=e,this.section=n,this.raw=t;var i=t;null==t||"object"!=typeof t||Array.isArray(t)?(this.rowSpan=1,this.colSpan=1):(this.rowSpan=t.rowSpan||1,this.colSpan=t.colSpan||1,i=null!==(r=null!==(o=t.content)&&void 0!==o?o:t.title)&&void 0!==r?r:t,t._element&&(this.raw=t._element));var l=null!=i?""+i:"";this.text=l.split(/\r\n|\r|\n/g)}return t.prototype.getTextPos=function(){var t,e;if("top"===this.styles.valign)t=this.y+this.padding("top");else if("bottom"===this.styles.valign)t=this.y+this.height-this.padding("bottom");else{var n=this.height-this.padding("vertical");t=this.y+n/2+this.padding("top")}if("right"===this.styles.halign)e=this.x+this.width-this.padding("right");else if("center"===this.styles.halign){var o=this.width-this.padding("horizontal");e=this.x+o/2+this.padding("left")}else e=this.x+this.padding("left");return{x:e,y:t}},t.prototype.getContentHeight=function(t){var e=(Array.isArray(this.text)?this.text.length:1)*(this.styles.fontSize/t*o.FONT_ROW_RATIO)+this.padding("vertical");return Math.max(e,this.styles.minCellHeight)},t.prototype.padding=function(t){var e=(0,i.parseSpacing)(this.styles.cellPadding,0);return"vertical"===t?e.top+e.bottom:"horizontal"===t?e.left+e.right:e[t]},t}();e.Cell=s;var u=function(){function t(t,e,n){this.wrappedWidth=0,this.minReadableWidth=0,this.minWidth=0,this.width=0,this.dataKey=t,this.raw=e,this.index=n}return t.prototype.getMaxCustomCellWidth=function(t){for(var e=0,n=0,o=t.allRows();n<o.length;n++){var r=o[n].cells[this.index];r&&"number"==typeof r.styles.cellWidth&&(e=Math.max(e,r.styles.cellWidth))}return e},t}();e.Column=u},360:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.assign=void 0,e.assign=function(t,e,n,o,r){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(t),l=1;l<arguments.length;l++){var a=arguments[l];if(null!=a)for(var s in a)Object.prototype.hasOwnProperty.call(a,s)&&(i[s]=a[s])}return i}},858:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.createTable=void 0;var o=n(323),r=n(287),i=n(189),l=n(913),a=n(360);function s(t,e,n,o,i,l){var a={};return e.map((function(e,s){for(var u=0,h={},c=0,f=0,g=0,p=n;g<p.length;g++){var y=p[g];if(null==a[y.index]||0===a[y.index].left)if(0===f){var v=void 0,m={};"object"!=typeof(v=Array.isArray(e)?e[y.index-c-u]:e[y.dataKey])||Array.isArray(v)||(m=(null==v?void 0:v.styles)||{});var b=d(t,y,s,i,o,l,m),w=new r.Cell(v,b,t);h[y.dataKey]=w,h[y.index]=w,f=w.colSpan-1,a[y.index]={left:w.rowSpan-1,times:f}}else f--,c++;else a[y.index].left--,f=a[y.index].times,u++}return new r.Row(e,s,t,h)}))}function u(t,e){var n={};return t.forEach((function(t){if(null!=t.raw){var o=function(t,e){if("head"===t){if("object"==typeof e)return e.header||e.title||null;if("string"==typeof e||"number"==typeof e)return e}else if("foot"===t&&"object"==typeof e)return e.footer;return null}(e,t.raw);null!=o&&(n[t.dataKey]=o)}})),Object.keys(n).length>0?n:null}function d(t,e,n,o,r,i,s){var u,d=(0,l.getTheme)(o);"head"===t?u=r.headStyles:"body"===t?u=r.bodyStyles:"foot"===t&&(u=r.footStyles);var h=(0,a.assign)({},d.table,d[t],r.styles,u),c=r.columnStyles[e.dataKey]||r.columnStyles[e.index]||{},f="body"===t?c:{},g="body"===t&&n%2==0?(0,a.assign)({},d.alternateRow,r.alternateRowStyles):{},p=(0,l.defaultStyles)(i),y=(0,a.assign)({},p,h,g,f);return(0,a.assign)(y,s)}e.createTable=function(t,e){var n=new o.DocHandler(t),l=function(t,e){var n=t.content,o=function(t){return t.map((function(t,e){var n,o,i;return i="object"==typeof t&&null!==(o=null!==(n=t.dataKey)&&void 0!==n?n:t.key)&&void 0!==o?o:e,new r.Column(i,t,e)}))}(n.columns);if(0===n.head.length){(i=u(o,"head"))&&n.head.push(i)}if(0===n.foot.length){var i;(i=u(o,"foot"))&&n.foot.push(i)}var l=t.settings.theme,a=t.styles;return{columns:o,head:s("head",n.head,o,a,l,e),body:s("body",n.body,o,a,l,e),foot:s("foot",n.foot,o,a,l,e)}}(e,n.scaleFactor()),a=new r.Table(e,l);return(0,i.calculateWidths)(n,a),n.applyStyles(n.userStyles),a}},49:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.addPage=e.drawTable=void 0;var o=n(913),r=n(200),i=n(287),l=n(323),a=n(360),s=n(938),u=n(435);function d(t,e,n){var r=t.styles.fontSize/n.scaleFactor()*o.FONT_ROW_RATIO,i=t.padding("vertical"),l=Math.floor((e-i)/r);return Math.max(0,l)}function h(t,e,n,o,r,l,s){var u=function(t,e,n,o){var r=e.settings.margin.bottom,i=e.settings.showFoot;("everyPage"===i||"lastPage"===i&&n)&&(r+=e.getFootHeight(e.columns));return t.pageSize().height-o.y-r}(t,e,o,l);if(n.canEntireRowFit(u,s))c(t,e,n,l,s);else if(function(t,e,n,o){var r=t.pageSize().height,i=o.settings.margin,l=r-(i.top+i.bottom);"body"===e.section&&(l-=o.getHeadHeight(o.columns)+o.getFootHeight(o.columns));var a=e.getMinimumRowHeight(o.columns,t),s=a<n;if(a>l)return console.error("Will not be able to print row ".concat(e.index," correctly since it's minimum height is larger than page height")),!0;if(!s)return!1;var u=e.hasRowSpan(o.columns);return e.getMaxCellHeight(o.columns)>l?(u&&console.error("The content of row ".concat(e.index," will not be drawn correctly since drawing rows with a height larger than the page height and has cells with rowspans is not supported.")),!0):!u&&"avoid"!==o.settings.rowPageBreak}(t,n,u,e)){var f=function(t,e,n,o){var r={};t.spansMultiplePages=!0,t.height=0;for(var l=0,s=0,u=n.columns;s<u.length;s++){var h=u[s];if(m=t.cells[h.index]){Array.isArray(m.text)||(m.text=[m.text]);var c=new i.Cell(m.raw,m.styles,m.section);(c=(0,a.assign)(c,m)).text=[];var f=d(m,e,o);m.text.length>f&&(c.text=m.text.splice(f,m.text.length));var g=o.scaleFactor();m.contentHeight=m.getContentHeight(g),m.contentHeight>=e&&(m.contentHeight=e,c.styles.minCellHeight-=e),m.contentHeight>t.height&&(t.height=m.contentHeight),c.contentHeight=c.getContentHeight(g),c.contentHeight>l&&(l=c.contentHeight),r[h.index]=c}}var p=new i.Row(t.raw,-1,t.section,r,!0);p.height=l;for(var y=0,v=n.columns;y<v.length;y++){var m;h=v[y],(c=p.cells[h.index])&&(c.height=p.height),(m=t.cells[h.index])&&(m.height=t.height)}return p}(n,u,e,t);c(t,e,n,l,s),g(t,e,r,l,s),h(t,e,f,o,r,l,s)}else g(t,e,r,l,s),h(t,e,n,o,r,l,s)}function c(t,e,n,o,r){o.x=e.settings.margin.left;for(var i=0,l=r;i<l.length;i++){var a=l[i],u=n.cells[a.index];if(u)if(t.applyStyles(u.styles),u.x=o.x,u.y=o.y,!1!==e.callCellHooks(t,e.hooks.willDrawCell,u,n,a,o)){f(t,u,o);var d=u.getTextPos();(0,s.default)(u.text,d.x,d.y,{halign:u.styles.halign,valign:u.styles.valign,maxWidth:Math.ceil(u.width-u.padding("left")-u.padding("right"))},t.getDocument()),e.callCellHooks(t,e.hooks.didDrawCell,u,n,a,o),o.x+=a.width}else o.x+=a.width;else o.x+=a.width}o.y+=n.height}function f(t,e,n){var o=e.styles;if(t.getDocument().setFillColor(t.getDocument().getFillColor()),"number"==typeof o.lineWidth){var i=(0,r.getFillStyle)(o.lineWidth,o.fillColor);i&&t.rect(e.x,n.y,e.width,e.height,i)}else if("object"==typeof o.lineWidth){t.rect(e.x,n.y,e.width,e.height,"F");var l=Object.keys(o.lineWidth),a=o.lineWidth;l.map((function(i){var l=(0,r.getFillStyle)(a[i],o.fillColor);!function(t,e,n,o,r,i){var l,a,s,u;switch(o){case"top":l=n.x,a=n.y,s=n.x+e.width,u=n.y;break;case"left":l=n.x,a=n.y,s=n.x,u=n.y+e.height;break;case"right":l=n.x+e.width,a=n.y,s=n.x+e.width,u=n.y+e.height;break;default:l=n.x,a=n.y+e.height-i,s=n.x+e.width,u=n.y+e.height-i}t.getDocument().setLineWidth(i),t.getDocument().line(l,a,s,u,r)}(t,e,n,i,l||"S",a[i])}))}}function g(t,e,n,o,i){void 0===i&&(i=[]),t.applyStyles(t.userStyles),"everyPage"===e.settings.showFoot&&e.foot.forEach((function(n){return c(t,e,n,o,i)})),e.callEndPageHooks(t,o);var l=e.settings.margin;(0,r.addTableBorder)(t,e,n,o),p(t),e.pageNumber++,e.pageCount++,o.x=l.left,o.y=l.top,n.y=l.top,"everyPage"===e.settings.showHead&&e.head.forEach((function(n){return c(t,e,n,o,i)}))}function p(t){var e=t.pageNumber();t.setPage(e+1),t.pageNumber()===e&&t.addPage()}e.drawTable=function(t,e){var n=e.settings,o=n.startY,i=n.margin,s={x:i.left,y:o},d=e.getHeadHeight(e.columns)+e.getFootHeight(e.columns),f=o+i.bottom+d;"avoid"===n.pageBreak&&(f+=e.allRows().reduce((function(t,e){return t+e.height}),0));var y=new l.DocHandler(t);("always"===n.pageBreak||null!=n.startY&&f>y.pageSize().height)&&(p(y),s.y=i.top);var v=(0,a.assign)({},s);e.startPageNumber=y.pageNumber(),!0===n.horizontalPageBreak?function(t,e,n,o){u.default.calculateAllColumnsCanFitInPage(t,e).map((function(r,i){t.applyStyles(t.userStyles),i>0?g(t,e,n,o,r.columns):function(t,e,n,o){var r=e.settings;t.applyStyles(t.userStyles),("firstPage"===r.showHead||"everyPage"===r.showHead)&&e.head.forEach((function(r){return c(t,e,r,n,o)}))}(t,e,o,r.columns),function(t,e,n,o,r){t.applyStyles(t.userStyles),e.body.forEach((function(i,l){var a=l===e.body.length-1;h(t,e,i,a,n,o,r)}))}(t,e,n,o,r.columns),function(t,e,n,o){var r=e.settings;t.applyStyles(t.userStyles),("lastPage"===r.showFoot||"everyPage"===r.showFoot)&&e.foot.forEach((function(r){return c(t,e,r,n,o)}))}(t,e,o,r.columns)}))}(y,e,v,s):(y.applyStyles(y.userStyles),"firstPage"!==n.showHead&&"everyPage"!==n.showHead||e.head.forEach((function(t){return c(y,e,t,s,e.columns)})),y.applyStyles(y.userStyles),e.body.forEach((function(t,n){var o=n===e.body.length-1;h(y,e,t,o,v,s,e.columns)})),y.applyStyles(y.userStyles),"lastPage"!==n.showFoot&&"everyPage"!==n.showFoot||e.foot.forEach((function(t){return c(y,e,t,s,e.columns)}))),(0,r.addTableBorder)(y,e,v,s),e.callEndPageHooks(y,s),e.finalY=s.y,t.lastAutoTable=e,t.previousAutoTable=e,t.autoTable&&(t.autoTable.previous=e),y.applyStyles(y.userStyles)},e.addPage=g},435:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var o=n(200),r=function(t,e){var n=(0,o.parseSpacing)(e.settings.margin,0);return t.pageSize().width-(n.left+n.right)},i=function(t,e,n){void 0===n&&(n={});var o=r(t,e),i=e.settings.horizontalPageBreakRepeat,l=null,a=[],s=[],u=e.columns.length,d=n&&n.start?n.start:0;for(null!=i&&(l=e.columns.find((function(t){return t.dataKey===i||t.index===i})))&&(a.push(l.index),s.push(e.columns[l.index]),o-=l.wrappedWidth);d<u;)if((null==l?void 0:l.index)!==d){var h=e.columns[d].wrappedWidth;if(o<h){0!==d&&d!==n.start||(a.push(d),s.push(e.columns[d]));break}a.push(d),s.push(e.columns[d]),o-=h,d++}else d++;return{colIndexes:a,columns:s,lastIndex:d}};e.default={getColumnsCanFitInPage:i,calculateAllColumnsCanFitInPage:function(t,e){for(var n=[],o=0,r=e.columns.length;o<r;){var l=i(t,e,{start:0===o?0:o});l&&l.columns&&l.columns.length?(o=l.lastIndex,n.push(l)):o++}return n},getPageAvailableWidth:r}},189:function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.ellipsize=e.resizeColumns=e.calculateWidths=void 0;var o=n(200),r=n(435);function i(t,e,n){for(var o=e,r=t.reduce((function(t,e){return t+e.wrappedWidth}),0),l=0;l<t.length;l++){var a=t[l],s=o*(a.wrappedWidth/r),u=a.width+s,d=n(a),h=u<d?d:u;e-=h-a.width,a.width=h}if(e=Math.round(1e10*e)/1e10){var c=t.filter((function(t){return!(e<0)||t.width>n(t)}));c.length&&(e=i(c,e,n))}return e}function l(t,e,n,r,i){return t.map((function(t){return function(t,e,n,r,i){var l=1e4*r.scaleFactor();if((e=Math.ceil(e*l)/l)>=(0,o.getStringWidth)(t,n,r))return t;for(;e<(0,o.getStringWidth)(t+i,n,r)&&!(t.length<=1);)t=t.substring(0,t.length-1);return t.trim()+i}(t,e,n,r,i)}))}e.calculateWidths=function(t,e){!function(t,e){var n=t.scaleFactor(),i=e.settings.horizontalPageBreak,l=r.default.getPageAvailableWidth(t,e);e.allRows().forEach((function(r){for(var a=0,s=e.columns;a<s.length;a++){var u=s[a],d=r.cells[u.index];if(d){var h=e.hooks.didParseCell;e.callCellHooks(t,h,d,r,u,null);var c=d.padding("horizontal");d.contentWidth=(0,o.getStringWidth)(d.text,d.styles,t)+c;var f=(0,o.getStringWidth)(d.text.join(" ").split(/\s+/),d.styles,t);if(d.minReadableWidth=f+d.padding("horizontal"),"number"==typeof d.styles.cellWidth)d.minWidth=d.styles.cellWidth,d.wrappedWidth=d.styles.cellWidth;else if("wrap"===d.styles.cellWidth||!0===i)d.contentWidth>l?(d.minWidth=l,d.wrappedWidth=l):(d.minWidth=d.contentWidth,d.wrappedWidth=d.contentWidth);else{var g=10/n;d.minWidth=d.styles.minCellWidth||g,d.wrappedWidth=d.contentWidth,d.minWidth>d.wrappedWidth&&(d.wrappedWidth=d.minWidth)}}}})),e.allRows().forEach((function(t){for(var n=0,o=e.columns;n<o.length;n++){var r=o[n],i=t.cells[r.index];if(i&&1===i.colSpan)r.wrappedWidth=Math.max(r.wrappedWidth,i.wrappedWidth),r.minWidth=Math.max(r.minWidth,i.minWidth),r.minReadableWidth=Math.max(r.minReadableWidth,i.minReadableWidth);else{var l=e.styles.columnStyles[r.dataKey]||e.styles.columnStyles[r.index]||{},a=l.cellWidth||l.minCellWidth;a&&"number"==typeof a&&(r.minWidth=a,r.wrappedWidth=a)}i&&(i.colSpan>1&&!r.minWidth&&(r.minWidth=i.minWidth),i.colSpan>1&&!r.wrappedWidth&&(r.wrappedWidth=i.minWidth))}}))}(t,e);var n=[],a=0;e.columns.forEach((function(t){var o=t.getMaxCustomCellWidth(e);o?t.width=o:(t.width=t.wrappedWidth,n.push(t)),a+=t.width}));var s=e.getWidth(t.pageSize().width)-a;s&&(s=i(n,s,(function(t){return Math.max(t.minReadableWidth,t.minWidth)}))),s&&(s=i(n,s,(function(t){return t.minWidth}))),s=Math.abs(s),!e.settings.horizontalPageBreak&&s>.1/t.scaleFactor()&&(s=s<1?s:Math.round(s),console.error("Of the table content, ".concat(s," units width could not fit page"))),function(t){for(var e=t.allRows(),n=0;n<e.length;n++)for(var o=e[n],r=null,i=0,l=0,a=0;a<t.columns.length;a++){var s=t.columns[a];if((l-=1)>1&&t.columns[a+1])i+=s.width,delete o.cells[s.index];else if(r){var u=r;delete o.cells[s.index],r=null,u.width=s.width+i}else{if(!(u=o.cells[s.index]))continue;if(l=u.colSpan,i=0,u.colSpan>1){r=u,i+=s.width;continue}u.width=s.width+i}}}(e),function(t,e){for(var n={count:0,height:0},o=0,r=t.allRows();o<r.length;o++){for(var i=r[o],a=0,s=t.columns;a<s.length;a++){var u=s[a],d=i.cells[u.index];if(d){e.applyStyles(d.styles,!0);var h=d.width-d.padding("horizontal");if("linebreak"===d.styles.overflow)d.text=e.splitTextToSize(d.text,h+1/e.scaleFactor(),{fontSize:d.styles.fontSize});else if("ellipsize"===d.styles.overflow)d.text=l(d.text,h,d.styles,e,"...");else if("hidden"===d.styles.overflow)d.text=l(d.text,h,d.styles,e,"");else if("function"==typeof d.styles.overflow){var c=d.styles.overflow(d.text,h);d.text="string"==typeof c?[c]:c}d.contentHeight=d.getContentHeight(e.scaleFactor());var f=d.contentHeight/d.rowSpan;d.rowSpan>1&&n.count*n.height<f*d.rowSpan?n={height:f,count:d.rowSpan}:n&&n.count>0&&n.height>f&&(f=n.height),f>i.height&&(i.height=f)}}n.count--}}(e,t),function(t){for(var e={},n=1,o=t.allRows(),r=0;r<o.length;r++)for(var i=o[r],l=0,a=t.columns;l<a.length;l++){var s=a[l],u=e[s.index];if(n>1)n--,delete i.cells[s.index];else if(u)u.cell.height+=i.height,n=u.cell.colSpan,delete i.cells[s.index],u.left--,u.left<=1&&delete e[s.index];else{var d=i.cells[s.index];if(!d)continue;if(d.height=i.height,d.rowSpan>1){var h=o.length-r,c=d.rowSpan>h?h:d.rowSpan;e[s.index]={cell:d,left:c,row:i}}}}}(e)},e.resizeColumns=i,e.ellipsize=l},84:function(e){if(void 0===t){var n=new Error("Cannot find module 'undefined'");throw n.code="MODULE_NOT_FOUND",n}e.exports=t}},n={};function o(t){var r=n[t];if(void 0!==r)return r.exports;var i=n[t]={exports:{}};return e[t].call(i.exports,i,i.exports,o),i.exports}var r={};return function(){var t=r;Object.defineProperty(t,"__esModule",{value:!0}),t.Cell=t.Column=t.Row=t.Table=t.CellHookData=t.__drawTable=t.__createTable=t.applyPlugin=void 0;var e=o(790),n=o(587),i=o(49),l=o(858),a=o(287);Object.defineProperty(t,"Table",{enumerable:!0,get:function(){return a.Table}});var s=o(662);Object.defineProperty(t,"CellHookData",{enumerable:!0,get:function(){return s.CellHookData}});var u=o(287);function d(t){(0,e.default)(t)}Object.defineProperty(t,"Cell",{enumerable:!0,get:function(){return u.Cell}}),Object.defineProperty(t,"Column",{enumerable:!0,get:function(){return u.Column}}),Object.defineProperty(t,"Row",{enumerable:!0,get:function(){return u.Row}}),t.applyPlugin=d,t.__createTable=function(t,e){var o=(0,n.parseInput)(t,e);return(0,l.createTable)(t,o)},t.__drawTable=function(t,e){(0,i.drawTable)(t,e)};try{var h=o(84);h.jsPDF&&(h=h.jsPDF),d(h)}catch(t){}t.default=function(t,e){var o=(0,n.parseInput)(t,e),r=(0,l.createTable)(t,o);(0,i.drawTable)(t,r)}}(),r}()})); \ No newline at end of file diff --git a/privacyidea/static/jspdf.umd.min.js b/privacyidea/static/jspdf.umd.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a9781f1dc03f77453adf11c8be05105330fefadc --- /dev/null +++ b/privacyidea/static/jspdf.umd.min.js @@ -0,0 +1,398 @@ +/** @license + * + * jsPDF - PDF Document creation from JavaScript + * Version 2.5.1 Built on 2022-01-28T15:37:57.789Z + * CommitID 00000000 + * + * Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF + * 2015-2021 yWorks GmbH, http://www.yworks.com + * 2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX + * 2016-2018 Aras Abbasi <aras.abbasi@gmail.com> + * 2010 Aaron Spike, https://github.com/acspike + * 2012 Willow Systems Corporation, https://github.com/willowsystems + * 2012 Pablo Hess, https://github.com/pablohess + * 2012 Florian Jenett, https://github.com/fjenett + * 2013 Warren Weckesser, https://github.com/warrenweckesser + * 2013 Youssef Beddad, https://github.com/lifof + * 2013 Lee Driscoll, https://github.com/lsdriscoll + * 2013 Stefan Slonevskiy, https://github.com/stefslon + * 2013 Jeremy Morel, https://github.com/jmorel + * 2013 Christoph Hartmann, https://github.com/chris-rock + * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria + * 2014 James Makes, https://github.com/dollaruw + * 2014 Diego Casorran, https://github.com/diegocr + * 2014 Steven Spungin, https://github.com/Flamenco + * 2014 Kenneth Glassey, https://github.com/Gavvers + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Contributor(s): + * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango, + * kim3er, mfo, alnorth, Flamenco + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).jspdf={})}(this,(function(t){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(){return"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this}();function n(){r.console&&"function"==typeof r.console.log&&r.console.log.apply(r.console,arguments)}var i={log:n,warn:function(t){r.console&&("function"==typeof r.console.warn?r.console.warn.apply(r.console,arguments):n.call(null,arguments))},error:function(t){r.console&&("function"==typeof r.console.error?r.console.error.apply(r.console,arguments):n(t))}};function a(t,e,r){var n=new XMLHttpRequest;n.open("GET",t),n.responseType="blob",n.onload=function(){l(n.response,e,r)},n.onerror=function(){i.error("could not download file")},n.send()}function o(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch(t){}return e.status>=200&&e.status<=299}function s(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(r){var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var c,u,l=r.saveAs||("object"!==("undefined"==typeof window?"undefined":e(window))||window!==r?function(){}:"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype?function(t,e,n){var i=r.URL||r.webkitURL,c=document.createElement("a");e=e||t.name||"download",c.download=e,c.rel="noopener","string"==typeof t?(c.href=t,c.origin!==location.origin?o(c.href)?a(t,e,n):s(c,c.target="_blank"):s(c)):(c.href=i.createObjectURL(t),setTimeout((function(){i.revokeObjectURL(c.href)}),4e4),setTimeout((function(){s(c)}),0))}:"msSaveOrOpenBlob"in navigator?function(t,r,n){if(r=r||t.name||"download","string"==typeof t)if(o(t))a(t,r,n);else{var c=document.createElement("a");c.href=t,c.target="_blank",setTimeout((function(){s(c)}))}else navigator.msSaveOrOpenBlob(function(t,r){return void 0===r?r={autoBom:!1}:"object"!==e(r)&&(i.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t}(t,n),r)}:function(t,n,i,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof t)return a(t,n,i);var s="application/octet-stream"===t.type,c=/constructor/i.test(r.HTMLElement)||r.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&c)&&"object"===("undefined"==typeof FileReader?"undefined":e(FileReader))){var l=new FileReader;l.onloadend=function(){var t=l.result;t=u?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=t:location=t,o=null},l.readAsDataURL(t)}else{var h=r.URL||r.webkitURL,f=h.createObjectURL(t);o?o.location=f:location.href=f,o=null,setTimeout((function(){h.revokeObjectURL(f)}),4e4)}}); +/** + * A class to parse color values + * @author Stoyan Stefanov <sstoo@gmail.com> + * {@link http://www.phpied.com/rgb-color-parser-in-javascript/} + * @license Use it if you like it + */function h(t){var e;t=t||"",this.ok=!1,"#"==t.charAt(0)&&(t=t.substr(1,6));t={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"}[t=(t=t.replace(/ /g,"")).toLowerCase()]||t;for(var r=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(t){return[parseInt(t[1]),parseInt(t[2]),parseInt(t[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}}],n=0;n<r.length;n++){var i=r[n].re,a=r[n].process,o=i.exec(t);o&&(e=a(o),this.r=e[0],this.g=e[1],this.b=e[2],this.ok=!0)}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"},this.toHex=function(){var t=this.r.toString(16),e=this.g.toString(16),r=this.b.toString(16);return 1==t.length&&(t="0"+t),1==e.length&&(e="0"+e),1==r.length&&(r="0"+r),"#"+t+e+r}} +/** + * @license + * Joseph Myers does not specify a particular license for his work. + * + * Author: Joseph Myers + * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js + * + * Modified by: Owen Leong + */ +function f(t,e){var r=t[0],n=t[1],i=t[2],a=t[3];r=p(r,n,i,a,e[0],7,-680876936),a=p(a,r,n,i,e[1],12,-389564586),i=p(i,a,r,n,e[2],17,606105819),n=p(n,i,a,r,e[3],22,-1044525330),r=p(r,n,i,a,e[4],7,-176418897),a=p(a,r,n,i,e[5],12,1200080426),i=p(i,a,r,n,e[6],17,-1473231341),n=p(n,i,a,r,e[7],22,-45705983),r=p(r,n,i,a,e[8],7,1770035416),a=p(a,r,n,i,e[9],12,-1958414417),i=p(i,a,r,n,e[10],17,-42063),n=p(n,i,a,r,e[11],22,-1990404162),r=p(r,n,i,a,e[12],7,1804603682),a=p(a,r,n,i,e[13],12,-40341101),i=p(i,a,r,n,e[14],17,-1502002290),r=g(r,n=p(n,i,a,r,e[15],22,1236535329),i,a,e[1],5,-165796510),a=g(a,r,n,i,e[6],9,-1069501632),i=g(i,a,r,n,e[11],14,643717713),n=g(n,i,a,r,e[0],20,-373897302),r=g(r,n,i,a,e[5],5,-701558691),a=g(a,r,n,i,e[10],9,38016083),i=g(i,a,r,n,e[15],14,-660478335),n=g(n,i,a,r,e[4],20,-405537848),r=g(r,n,i,a,e[9],5,568446438),a=g(a,r,n,i,e[14],9,-1019803690),i=g(i,a,r,n,e[3],14,-187363961),n=g(n,i,a,r,e[8],20,1163531501),r=g(r,n,i,a,e[13],5,-1444681467),a=g(a,r,n,i,e[2],9,-51403784),i=g(i,a,r,n,e[7],14,1735328473),r=m(r,n=g(n,i,a,r,e[12],20,-1926607734),i,a,e[5],4,-378558),a=m(a,r,n,i,e[8],11,-2022574463),i=m(i,a,r,n,e[11],16,1839030562),n=m(n,i,a,r,e[14],23,-35309556),r=m(r,n,i,a,e[1],4,-1530992060),a=m(a,r,n,i,e[4],11,1272893353),i=m(i,a,r,n,e[7],16,-155497632),n=m(n,i,a,r,e[10],23,-1094730640),r=m(r,n,i,a,e[13],4,681279174),a=m(a,r,n,i,e[0],11,-358537222),i=m(i,a,r,n,e[3],16,-722521979),n=m(n,i,a,r,e[6],23,76029189),r=m(r,n,i,a,e[9],4,-640364487),a=m(a,r,n,i,e[12],11,-421815835),i=m(i,a,r,n,e[15],16,530742520),r=v(r,n=m(n,i,a,r,e[2],23,-995338651),i,a,e[0],6,-198630844),a=v(a,r,n,i,e[7],10,1126891415),i=v(i,a,r,n,e[14],15,-1416354905),n=v(n,i,a,r,e[5],21,-57434055),r=v(r,n,i,a,e[12],6,1700485571),a=v(a,r,n,i,e[3],10,-1894986606),i=v(i,a,r,n,e[10],15,-1051523),n=v(n,i,a,r,e[1],21,-2054922799),r=v(r,n,i,a,e[8],6,1873313359),a=v(a,r,n,i,e[15],10,-30611744),i=v(i,a,r,n,e[6],15,-1560198380),n=v(n,i,a,r,e[13],21,1309151649),r=v(r,n,i,a,e[4],6,-145523070),a=v(a,r,n,i,e[11],10,-1120210379),i=v(i,a,r,n,e[2],15,718787259),n=v(n,i,a,r,e[9],21,-343485551),t[0]=S(r,t[0]),t[1]=S(n,t[1]),t[2]=S(i,t[2]),t[3]=S(a,t[3])}function d(t,e,r,n,i,a){return e=S(S(e,t),S(n,a)),S(e<<i|e>>>32-i,r)}function p(t,e,r,n,i,a,o){return d(e&r|~e&n,t,e,i,a,o)}function g(t,e,r,n,i,a,o){return d(e&n|r&~n,t,e,i,a,o)}function m(t,e,r,n,i,a,o){return d(e^r^n,t,e,i,a,o)}function v(t,e,r,n,i,a,o){return d(r^(e|~n),t,e,i,a,o)}function b(t){var e,r=t.length,n=[1732584193,-271733879,-1732584194,271733878];for(e=64;e<=t.length;e+=64)f(n,y(t.substring(e-64,e)));t=t.substring(e-64);var i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(e=0;e<t.length;e++)i[e>>2]|=t.charCodeAt(e)<<(e%4<<3);if(i[e>>2]|=128<<(e%4<<3),e>55)for(f(n,i),e=0;e<16;e++)i[e]=0;return i[14]=8*r,f(n,i),n}function y(t){var e,r=[];for(e=0;e<64;e+=4)r[e>>2]=t.charCodeAt(e)+(t.charCodeAt(e+1)<<8)+(t.charCodeAt(e+2)<<16)+(t.charCodeAt(e+3)<<24);return r}c=r.atob.bind(r),u=r.btoa.bind(r);var w="0123456789abcdef".split("");function N(t){for(var e="",r=0;r<4;r++)e+=w[t>>8*r+4&15]+w[t>>8*r&15];return e}function L(t){return String.fromCharCode((255&t)>>0,(65280&t)>>8,(16711680&t)>>16,(4278190080&t)>>24)}function A(t){return function(t){return t.map(L).join("")}(b(t))}var x="5d41402abc4b2a76b9719d911017c592"!=function(t){for(var e=0;e<t.length;e++)t[e]=N(t[e]);return t.join("")}(b("hello"));function S(t,e){if(x){var r=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(r>>16)<<16|65535&r}return t+e&4294967295} +/** + * @license + * FPDF is released under a permissive license: there is no usage restriction. + * You may embed it freely in your application (commercial or not), with or + * without modifications. + * + * Reference: http://www.fpdf.org/en/script/script37.php + */function _(t,e){var r,n,i,a;if(t!==r){for(var o=(i=t,a=1+(256/t.length>>0),new Array(a+1).join(i)),s=[],c=0;c<256;c++)s[c]=c;var u=0;for(c=0;c<256;c++){var l=s[c];u=(u+l+o.charCodeAt(c))%256,s[c]=s[u],s[u]=l}r=t,n=s}else s=n;var h=e.length,f=0,d=0,p="";for(c=0;c<h;c++)d=(d+(l=s[f=(f+1)%256]))%256,s[f]=s[d],s[d]=l,o=s[(s[f]+s[d])%256],p+=String.fromCharCode(e.charCodeAt(c)^o);return p} +/** + * @license + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + * Author: Owen Leong (@owenl131) + * Date: 15 Oct 2020 + * References: + * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt + * https://github.com/foliojs/pdfkit/blob/master/lib/security.js + * http://www.fpdf.org/en/script/script37.php + */var P={print:4,modify:8,copy:16,"annot-forms":32};function k(t,e,r,n){this.v=1,this.r=2;var i=192;t.forEach((function(t){if(void 0!==P.perm)throw new Error("Invalid permission: "+t);i+=P[t]})),this.padding="(¿N^NuŠAd\0NVÿú\b..\0¶Ãh>€/\f©þdSiz";var a=(e+this.padding).substr(0,32),o=(r+this.padding).substr(0,32);this.O=this.processOwnerPassword(a,o),this.P=-(1+(255^i)),this.encryptionKey=A(a+this.O+this.lsbFirstWord(this.P)+this.hexToBytes(n)).substr(0,5),this.U=_(this.encryptionKey,this.padding)}function F(t){if(/[^\u0000-\u00ff]/.test(t))throw new Error("Invalid PDF Name Object: "+t+", Only accept ASCII characters.");for(var e="",r=t.length,n=0;n<r;n++){var i=t.charCodeAt(n);if(i<33||35===i||37===i||40===i||41===i||47===i||60===i||62===i||91===i||93===i||123===i||125===i||i>126)e+="#"+("0"+i.toString(16)).slice(-2);else e+=t[n]}return e}function I(t){if("object"!==e(t))throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");var n={};this.subscribe=function(t,e,r){if(r=r||!1,"string"!=typeof t||"function"!=typeof e||"boolean"!=typeof r)throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");n.hasOwnProperty(t)||(n[t]={});var i=Math.random().toString(35);return n[t][i]=[e,!!r],i},this.unsubscribe=function(t){for(var e in n)if(n[e][t])return delete n[e][t],0===Object.keys(n[e]).length&&delete n[e],!0;return!1},this.publish=function(e){if(n.hasOwnProperty(e)){var a=Array.prototype.slice.call(arguments,1),o=[];for(var s in n[e]){var c=n[e][s];try{c[0].apply(t,a)}catch(t){r.console&&i.error("jsPDF PubSub Error",t.message,t)}c[1]&&o.push(s)}o.length&&o.forEach(this.unsubscribe)}},this.getTopics=function(){return n}}function C(t){if(!(this instanceof C))return new C(t);var e="opacity,stroke-opacity".split(",");for(var r in t)t.hasOwnProperty(r)&&e.indexOf(r)>=0&&(this[r]=t[r]);this.id="",this.objectNumber=-1}function j(t,e){this.gState=t,this.matrix=e,this.id="",this.objectNumber=-1}function O(t,e,r,n,i){if(!(this instanceof O))return new O(t,e,r,n,i);this.type="axial"===t?2:3,this.coords=e,this.colors=r,j.call(this,n,i)}function B(t,e,r,n,i){if(!(this instanceof B))return new B(t,e,r,n,i);this.boundingBox=t,this.xStep=e,this.yStep=r,this.stream="",this.cloneIndex=0,j.call(this,n,i)}function M(t){var n,a="string"==typeof arguments[0]?arguments[0]:"p",o=arguments[1],s=arguments[2],c=arguments[3],f=[],d=1,p=16,g="S",m=null;"object"===e(t=t||{})&&(a=t.orientation,o=t.unit||o,s=t.format||s,c=t.compress||t.compressPdf||c,null!==(m=t.encryption||null)&&(m.userPassword=m.userPassword||"",m.ownerPassword=m.ownerPassword||"",m.userPermissions=m.userPermissions||[]),d="number"==typeof t.userUnit?Math.abs(t.userUnit):1,void 0!==t.precision&&(n=t.precision),void 0!==t.floatPrecision&&(p=t.floatPrecision),g=t.defaultPathOperation||"S"),f=t.filters||(!0===c?["FlateEncode"]:f),o=o||"mm",a=(""+(a||"P")).toLowerCase();var v=t.putOnlyUsedFonts||!1,b={},y={internal:{},__private__:{}};y.__private__.PubSub=I;var w="1.3",N=y.__private__.getPdfVersion=function(){return w};y.__private__.setPdfVersion=function(t){w=t};var L={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};y.__private__.getPageFormats=function(){return L};var A=y.__private__.getPageFormat=function(t){return L[t]};s=s||"a4";var x={COMPAT:"compat",ADVANCED:"advanced"},S=x.COMPAT;function _(){this.saveGraphicsState(),ht(new Vt(_t,0,0,-_t,0,Rr()*_t).toString()+" cm"),this.setFontSize(this.getFontSize()/_t),g="n",S=x.ADVANCED}function P(){this.restoreGraphicsState(),g="S",S=x.COMPAT}var j=y.__private__.combineFontStyleAndFontWeight=function(t,e){if("bold"==t&&"normal"==e||"bold"==t&&400==e||"normal"==t&&"italic"==e||"bold"==t&&"italic"==e)throw new Error("Invalid Combination of fontweight and fontstyle");return e&&(t=400==e||"normal"===e?"italic"===t?"italic":"normal":700!=e&&"bold"!==e||"normal"!==t?(700==e?"bold":e)+""+t:"bold"),t};y.advancedAPI=function(t){var e=S===x.COMPAT;return e&&_.call(this),"function"!=typeof t||(t(this),e&&P.call(this)),this},y.compatAPI=function(t){var e=S===x.ADVANCED;return e&&P.call(this),"function"!=typeof t||(t(this),e&&_.call(this)),this},y.isAdvancedAPI=function(){return S===x.ADVANCED};var E,q=function(t){if(S!==x.ADVANCED)throw new Error(t+" is only available in 'advanced' API mode. You need to call advancedAPI() first.")},D=y.roundToPrecision=y.__private__.roundToPrecision=function(t,e){var r=n||e;if(isNaN(t)||isNaN(r))throw new Error("Invalid argument passed to jsPDF.roundToPrecision");return t.toFixed(r).replace(/0+$/,"")};E=y.hpf=y.__private__.hpf="number"==typeof p?function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.hpf");return D(t,p)}:"smart"===p?function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.hpf");return D(t,t>-1&&t<1?16:5)}:function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.hpf");return D(t,16)};var R=y.f2=y.__private__.f2=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.f2");return D(t,2)},T=y.__private__.f3=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.f3");return D(t,3)},U=y.scale=y.__private__.scale=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.scale");return S===x.COMPAT?t*_t:S===x.ADVANCED?t:void 0},z=function(t){return S===x.COMPAT?Rr()-t:S===x.ADVANCED?t:void 0},H=function(t){return U(z(t))};y.__private__.setPrecision=y.setPrecision=function(t){"number"==typeof parseInt(t,10)&&(n=parseInt(t,10))};var W,V="00000000000000000000000000000000",G=y.__private__.getFileId=function(){return V},Y=y.__private__.setFileId=function(t){return V=void 0!==t&&/^[a-fA-F0-9]{32}$/.test(t)?t.toUpperCase():V.split("").map((function(){return"ABCDEF0123456789".charAt(Math.floor(16*Math.random()))})).join(""),null!==m&&(Ye=new k(m.userPermissions,m.userPassword,m.ownerPassword,V)),V};y.setFileId=function(t){return Y(t),this},y.getFileId=function(){return G()};var J=y.__private__.convertDateToPDFDate=function(t){var e=t.getTimezoneOffset(),r=e<0?"+":"-",n=Math.floor(Math.abs(e/60)),i=Math.abs(e%60),a=[r,Q(n),"'",Q(i),"'"].join("");return["D:",t.getFullYear(),Q(t.getMonth()+1),Q(t.getDate()),Q(t.getHours()),Q(t.getMinutes()),Q(t.getSeconds()),a].join("")},X=y.__private__.convertPDFDateToDate=function(t){var e=parseInt(t.substr(2,4),10),r=parseInt(t.substr(6,2),10)-1,n=parseInt(t.substr(8,2),10),i=parseInt(t.substr(10,2),10),a=parseInt(t.substr(12,2),10),o=parseInt(t.substr(14,2),10);return new Date(e,r,n,i,a,o,0)},K=y.__private__.setCreationDate=function(t){var e;if(void 0===t&&(t=new Date),t instanceof Date)e=J(t);else{if(!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(t))throw new Error("Invalid argument passed to jsPDF.setCreationDate");e=t}return W=e},Z=y.__private__.getCreationDate=function(t){var e=W;return"jsDate"===t&&(e=X(W)),e};y.setCreationDate=function(t){return K(t),this},y.getCreationDate=function(t){return Z(t)};var $,Q=y.__private__.padd2=function(t){return("0"+parseInt(t)).slice(-2)},tt=y.__private__.padd2Hex=function(t){return("00"+(t=t.toString())).substr(t.length)},et=0,rt=[],nt=[],it=0,at=[],ot=[],st=!1,ct=nt,ut=function(){et=0,it=0,nt=[],rt=[],at=[],Qt=Kt(),te=Kt()};y.__private__.setCustomOutputDestination=function(t){st=!0,ct=t};var lt=function(t){st||(ct=t)};y.__private__.resetCustomOutputDestination=function(){st=!1,ct=nt};var ht=y.__private__.out=function(t){return t=t.toString(),it+=t.length+1,ct.push(t),ct},ft=y.__private__.write=function(t){return ht(1===arguments.length?t.toString():Array.prototype.join.call(arguments," "))},dt=y.__private__.getArrayBuffer=function(t){for(var e=t.length,r=new ArrayBuffer(e),n=new Uint8Array(r);e--;)n[e]=t.charCodeAt(e);return r},pt=[["Helvetica","helvetica","normal","WinAnsiEncoding"],["Helvetica-Bold","helvetica","bold","WinAnsiEncoding"],["Helvetica-Oblique","helvetica","italic","WinAnsiEncoding"],["Helvetica-BoldOblique","helvetica","bolditalic","WinAnsiEncoding"],["Courier","courier","normal","WinAnsiEncoding"],["Courier-Bold","courier","bold","WinAnsiEncoding"],["Courier-Oblique","courier","italic","WinAnsiEncoding"],["Courier-BoldOblique","courier","bolditalic","WinAnsiEncoding"],["Times-Roman","times","normal","WinAnsiEncoding"],["Times-Bold","times","bold","WinAnsiEncoding"],["Times-Italic","times","italic","WinAnsiEncoding"],["Times-BoldItalic","times","bolditalic","WinAnsiEncoding"],["ZapfDingbats","zapfdingbats","normal",null],["Symbol","symbol","normal",null]];y.__private__.getStandardFonts=function(){return pt};var gt=t.fontSize||16;y.__private__.setFontSize=y.setFontSize=function(t){return gt=S===x.ADVANCED?t/_t:t,this};var mt,vt=y.__private__.getFontSize=y.getFontSize=function(){return S===x.COMPAT?gt:gt*_t},bt=t.R2L||!1;y.__private__.setR2L=y.setR2L=function(t){return bt=t,this},y.__private__.getR2L=y.getR2L=function(){return bt};var yt,wt=y.__private__.setZoomMode=function(t){var e=[void 0,null,"fullwidth","fullheight","fullpage","original"];if(/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(t))mt=t;else if(isNaN(t)){if(-1===e.indexOf(t))throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "'+t+'" is not recognized.');mt=t}else mt=parseInt(t,10)};y.__private__.getZoomMode=function(){return mt};var Nt,Lt=y.__private__.setPageMode=function(t){if(-1==[void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"].indexOf(t))throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+t+'" is not recognized.');yt=t};y.__private__.getPageMode=function(){return yt};var At=y.__private__.setLayoutMode=function(t){if(-1==[void 0,null,"continuous","single","twoleft","tworight","two"].indexOf(t))throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "'+t+'" is not recognized.');Nt=t};y.__private__.getLayoutMode=function(){return Nt},y.__private__.setDisplayMode=y.setDisplayMode=function(t,e,r){return wt(t),At(e),Lt(r),this};var xt={title:"",subject:"",author:"",keywords:"",creator:""};y.__private__.getDocumentProperty=function(t){if(-1===Object.keys(xt).indexOf(t))throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");return xt[t]},y.__private__.getDocumentProperties=function(){return xt},y.__private__.setDocumentProperties=y.setProperties=y.setDocumentProperties=function(t){for(var e in xt)xt.hasOwnProperty(e)&&t[e]&&(xt[e]=t[e]);return this},y.__private__.setDocumentProperty=function(t,e){if(-1===Object.keys(xt).indexOf(t))throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");return xt[t]=e};var St,_t,Pt,kt,Ft,It={},Ct={},jt=[],Ot={},Bt={},Mt={},Et={},qt=null,Dt=0,Rt=[],Tt=new I(y),Ut=t.hotfixes||[],zt={},Ht={},Wt=[],Vt=function t(e,r,n,i,a,o){if(!(this instanceof t))return new t(e,r,n,i,a,o);isNaN(e)&&(e=1),isNaN(r)&&(r=0),isNaN(n)&&(n=0),isNaN(i)&&(i=1),isNaN(a)&&(a=0),isNaN(o)&&(o=0),this._matrix=[e,r,n,i,a,o]};Object.defineProperty(Vt.prototype,"sx",{get:function(){return this._matrix[0]},set:function(t){this._matrix[0]=t}}),Object.defineProperty(Vt.prototype,"shy",{get:function(){return this._matrix[1]},set:function(t){this._matrix[1]=t}}),Object.defineProperty(Vt.prototype,"shx",{get:function(){return this._matrix[2]},set:function(t){this._matrix[2]=t}}),Object.defineProperty(Vt.prototype,"sy",{get:function(){return this._matrix[3]},set:function(t){this._matrix[3]=t}}),Object.defineProperty(Vt.prototype,"tx",{get:function(){return this._matrix[4]},set:function(t){this._matrix[4]=t}}),Object.defineProperty(Vt.prototype,"ty",{get:function(){return this._matrix[5]},set:function(t){this._matrix[5]=t}}),Object.defineProperty(Vt.prototype,"a",{get:function(){return this._matrix[0]},set:function(t){this._matrix[0]=t}}),Object.defineProperty(Vt.prototype,"b",{get:function(){return this._matrix[1]},set:function(t){this._matrix[1]=t}}),Object.defineProperty(Vt.prototype,"c",{get:function(){return this._matrix[2]},set:function(t){this._matrix[2]=t}}),Object.defineProperty(Vt.prototype,"d",{get:function(){return this._matrix[3]},set:function(t){this._matrix[3]=t}}),Object.defineProperty(Vt.prototype,"e",{get:function(){return this._matrix[4]},set:function(t){this._matrix[4]=t}}),Object.defineProperty(Vt.prototype,"f",{get:function(){return this._matrix[5]},set:function(t){this._matrix[5]=t}}),Object.defineProperty(Vt.prototype,"rotation",{get:function(){return Math.atan2(this.shx,this.sx)}}),Object.defineProperty(Vt.prototype,"scaleX",{get:function(){return this.decompose().scale.sx}}),Object.defineProperty(Vt.prototype,"scaleY",{get:function(){return this.decompose().scale.sy}}),Object.defineProperty(Vt.prototype,"isIdentity",{get:function(){return 1===this.sx&&(0===this.shy&&(0===this.shx&&(1===this.sy&&(0===this.tx&&0===this.ty))))}}),Vt.prototype.join=function(t){return[this.sx,this.shy,this.shx,this.sy,this.tx,this.ty].map(E).join(t)},Vt.prototype.multiply=function(t){var e=t.sx*this.sx+t.shy*this.shx,r=t.sx*this.shy+t.shy*this.sy,n=t.shx*this.sx+t.sy*this.shx,i=t.shx*this.shy+t.sy*this.sy,a=t.tx*this.sx+t.ty*this.shx+this.tx,o=t.tx*this.shy+t.ty*this.sy+this.ty;return new Vt(e,r,n,i,a,o)},Vt.prototype.decompose=function(){var t=this.sx,e=this.shy,r=this.shx,n=this.sy,i=this.tx,a=this.ty,o=Math.sqrt(t*t+e*e),s=(t/=o)*r+(e/=o)*n;r-=t*s,n-=e*s;var c=Math.sqrt(r*r+n*n);return s/=c,t*(n/=c)<e*(r/=c)&&(t=-t,e=-e,s=-s,o=-o),{scale:new Vt(o,0,0,c,0,0),translate:new Vt(1,0,0,1,i,a),rotate:new Vt(t,e,-e,t,0,0),skew:new Vt(1,0,s,1,0,0)}},Vt.prototype.toString=function(t){return this.join(" ")},Vt.prototype.inversed=function(){var t=this.sx,e=this.shy,r=this.shx,n=this.sy,i=this.tx,a=this.ty,o=1/(t*n-e*r),s=n*o,c=-e*o,u=-r*o,l=t*o;return new Vt(s,c,u,l,-s*i-u*a,-c*i-l*a)},Vt.prototype.applyToPoint=function(t){var e=t.x*this.sx+t.y*this.shx+this.tx,r=t.x*this.shy+t.y*this.sy+this.ty;return new Cr(e,r)},Vt.prototype.applyToRectangle=function(t){var e=this.applyToPoint(t),r=this.applyToPoint(new Cr(t.x+t.w,t.y+t.h));return new jr(e.x,e.y,r.x-e.x,r.y-e.y)},Vt.prototype.clone=function(){var t=this.sx,e=this.shy,r=this.shx,n=this.sy,i=this.tx,a=this.ty;return new Vt(t,e,r,n,i,a)},y.Matrix=Vt;var Gt=y.matrixMult=function(t,e){return e.multiply(t)},Yt=new Vt(1,0,0,1,0,0);y.unitMatrix=y.identityMatrix=Yt;var Jt=function(t,e){if(!Bt[t]){var r=(e instanceof O?"Sh":"P")+(Object.keys(Ot).length+1).toString(10);e.id=r,Bt[t]=r,Ot[r]=e,Tt.publish("addPattern",e)}};y.ShadingPattern=O,y.TilingPattern=B,y.addShadingPattern=function(t,e){return q("addShadingPattern()"),Jt(t,e),this},y.beginTilingPattern=function(t){q("beginTilingPattern()"),Br(t.boundingBox[0],t.boundingBox[1],t.boundingBox[2]-t.boundingBox[0],t.boundingBox[3]-t.boundingBox[1],t.matrix)},y.endTilingPattern=function(t,e){q("endTilingPattern()"),e.stream=ot[$].join("\n"),Jt(t,e),Tt.publish("endTilingPattern",e),Wt.pop().restore()};var Xt=y.__private__.newObject=function(){var t=Kt();return Zt(t,!0),t},Kt=y.__private__.newObjectDeferred=function(){return et++,rt[et]=function(){return it},et},Zt=function(t,e){return e="boolean"==typeof e&&e,rt[t]=it,e&&ht(t+" 0 obj"),t},$t=y.__private__.newAdditionalObject=function(){var t={objId:Kt(),content:""};return at.push(t),t},Qt=Kt(),te=Kt(),ee=y.__private__.decodeColorString=function(t){var e=t.split(" ");if(2!==e.length||"g"!==e[1]&&"G"!==e[1]){if(5===e.length&&("k"===e[4]||"K"===e[4])){e=[(1-e[0])*(1-e[3]),(1-e[1])*(1-e[3]),(1-e[2])*(1-e[3]),"r"]}}else{var r=parseFloat(e[0]);e=[r,r,r,"r"]}for(var n="#",i=0;i<3;i++)n+=("0"+Math.floor(255*parseFloat(e[i])).toString(16)).slice(-2);return n},re=y.__private__.encodeColorString=function(t){var r;"string"==typeof t&&(t={ch1:t});var n=t.ch1,i=t.ch2,a=t.ch3,o=t.ch4,s="draw"===t.pdfColorType?["G","RG","K"]:["g","rg","k"];if("string"==typeof n&&"#"!==n.charAt(0)){var c=new h(n);if(c.ok)n=c.toHex();else if(!/^\d*\.?\d*$/.test(n))throw new Error('Invalid color "'+n+'" passed to jsPDF.encodeColorString.')}if("string"==typeof n&&/^#[0-9A-Fa-f]{3}$/.test(n)&&(n="#"+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]),"string"==typeof n&&/^#[0-9A-Fa-f]{6}$/.test(n)){var u=parseInt(n.substr(1),16);n=u>>16&255,i=u>>8&255,a=255&u}if(void 0===i||void 0===o&&n===i&&i===a)if("string"==typeof n)r=n+" "+s[0];else switch(t.precision){case 2:r=R(n/255)+" "+s[0];break;case 3:default:r=T(n/255)+" "+s[0]}else if(void 0===o||"object"===e(o)){if(o&&!isNaN(o.a)&&0===o.a)return r=["1.","1.","1.",s[1]].join(" ");if("string"==typeof n)r=[n,i,a,s[1]].join(" ");else switch(t.precision){case 2:r=[R(n/255),R(i/255),R(a/255),s[1]].join(" ");break;default:case 3:r=[T(n/255),T(i/255),T(a/255),s[1]].join(" ")}}else if("string"==typeof n)r=[n,i,a,o,s[2]].join(" ");else switch(t.precision){case 2:r=[R(n),R(i),R(a),R(o),s[2]].join(" ");break;case 3:default:r=[T(n),T(i),T(a),T(o),s[2]].join(" ")}return r},ne=y.__private__.getFilters=function(){return f},ie=y.__private__.putStream=function(t){var e=(t=t||{}).data||"",r=t.filters||ne(),n=t.alreadyAppliedFilters||[],i=t.addLength1||!1,a=e.length,o=t.objectId,s=function(t){return t};if(null!==m&&void 0===o)throw new Error("ObjectId must be passed to putStream for file encryption");null!==m&&(s=Ye.encryptor(o,0));var c={};!0===r&&(r=["FlateEncode"]);var u=t.additionalKeyValues||[],l=(c=void 0!==M.API.processDataByFilters?M.API.processDataByFilters(e,r):{data:e,reverseChain:[]}).reverseChain+(Array.isArray(n)?n.join(" "):n.toString());if(0!==c.data.length&&(u.push({key:"Length",value:c.data.length}),!0===i&&u.push({key:"Length1",value:a})),0!=l.length)if(l.split("/").length-1==1)u.push({key:"Filter",value:l});else{u.push({key:"Filter",value:"["+l+"]"});for(var h=0;h<u.length;h+=1)if("DecodeParms"===u[h].key){for(var f=[],d=0;d<c.reverseChain.split("/").length-1;d+=1)f.push("null");f.push(u[h].value),u[h].value="["+f.join(" ")+"]"}}ht("<<");for(var p=0;p<u.length;p++)ht("/"+u[p].key+" "+u[p].value);ht(">>"),0!==c.data.length&&(ht("stream"),ht(s(c.data)),ht("endstream"))},ae=y.__private__.putPage=function(t){var e=t.number,r=t.data,n=t.objId,i=t.contentsObjId;Zt(n,!0),ht("<</Type /Page"),ht("/Parent "+t.rootDictionaryObjId+" 0 R"),ht("/Resources "+t.resourceDictionaryObjId+" 0 R"),ht("/MediaBox ["+parseFloat(E(t.mediaBox.bottomLeftX))+" "+parseFloat(E(t.mediaBox.bottomLeftY))+" "+E(t.mediaBox.topRightX)+" "+E(t.mediaBox.topRightY)+"]"),null!==t.cropBox&&ht("/CropBox ["+E(t.cropBox.bottomLeftX)+" "+E(t.cropBox.bottomLeftY)+" "+E(t.cropBox.topRightX)+" "+E(t.cropBox.topRightY)+"]"),null!==t.bleedBox&&ht("/BleedBox ["+E(t.bleedBox.bottomLeftX)+" "+E(t.bleedBox.bottomLeftY)+" "+E(t.bleedBox.topRightX)+" "+E(t.bleedBox.topRightY)+"]"),null!==t.trimBox&&ht("/TrimBox ["+E(t.trimBox.bottomLeftX)+" "+E(t.trimBox.bottomLeftY)+" "+E(t.trimBox.topRightX)+" "+E(t.trimBox.topRightY)+"]"),null!==t.artBox&&ht("/ArtBox ["+E(t.artBox.bottomLeftX)+" "+E(t.artBox.bottomLeftY)+" "+E(t.artBox.topRightX)+" "+E(t.artBox.topRightY)+"]"),"number"==typeof t.userUnit&&1!==t.userUnit&&ht("/UserUnit "+t.userUnit),Tt.publish("putPage",{objId:n,pageContext:Rt[e],pageNumber:e,page:r}),ht("/Contents "+i+" 0 R"),ht(">>"),ht("endobj");var a=r.join("\n");return S===x.ADVANCED&&(a+="\nQ"),Zt(i,!0),ie({data:a,filters:ne(),objectId:i}),ht("endobj"),n},oe=y.__private__.putPages=function(){var t,e,r=[];for(t=1;t<=Dt;t++)Rt[t].objId=Kt(),Rt[t].contentsObjId=Kt();for(t=1;t<=Dt;t++)r.push(ae({number:t,data:ot[t],objId:Rt[t].objId,contentsObjId:Rt[t].contentsObjId,mediaBox:Rt[t].mediaBox,cropBox:Rt[t].cropBox,bleedBox:Rt[t].bleedBox,trimBox:Rt[t].trimBox,artBox:Rt[t].artBox,userUnit:Rt[t].userUnit,rootDictionaryObjId:Qt,resourceDictionaryObjId:te}));Zt(Qt,!0),ht("<</Type /Pages");var n="/Kids [";for(e=0;e<Dt;e++)n+=r[e]+" 0 R ";ht(n+"]"),ht("/Count "+Dt),ht(">>"),ht("endobj"),Tt.publish("postPutPages")},se=function(t){Tt.publish("putFont",{font:t,out:ht,newObject:Xt,putStream:ie}),!0!==t.isAlreadyPutted&&(t.objectNumber=Xt(),ht("<<"),ht("/Type /Font"),ht("/BaseFont /"+F(t.postScriptName)),ht("/Subtype /Type1"),"string"==typeof t.encoding&&ht("/Encoding /"+t.encoding),ht("/FirstChar 32"),ht("/LastChar 255"),ht(">>"),ht("endobj"))},ce=function(){for(var t in It)It.hasOwnProperty(t)&&(!1===v||!0===v&&b.hasOwnProperty(t))&&se(It[t])},ue=function(t){t.objectNumber=Xt();var e=[];e.push({key:"Type",value:"/XObject"}),e.push({key:"Subtype",value:"/Form"}),e.push({key:"BBox",value:"["+[E(t.x),E(t.y),E(t.x+t.width),E(t.y+t.height)].join(" ")+"]"}),e.push({key:"Matrix",value:"["+t.matrix.toString()+"]"});var r=t.pages[1].join("\n");ie({data:r,additionalKeyValues:e,objectId:t.objectNumber}),ht("endobj")},le=function(){for(var t in zt)zt.hasOwnProperty(t)&&ue(zt[t])},he=function(t,e){var r,n=[],i=1/(e-1);for(r=0;r<1;r+=i)n.push(r);if(n.push(1),0!=t[0].offset){var a={offset:0,color:t[0].color};t.unshift(a)}if(1!=t[t.length-1].offset){var o={offset:1,color:t[t.length-1].color};t.push(o)}for(var s="",c=0,u=0;u<n.length;u++){for(r=n[u];r>t[c+1].offset;)c++;var l=t[c].offset,h=(r-l)/(t[c+1].offset-l),f=t[c].color,d=t[c+1].color;s+=tt(Math.round((1-h)*f[0]+h*d[0]).toString(16))+tt(Math.round((1-h)*f[1]+h*d[1]).toString(16))+tt(Math.round((1-h)*f[2]+h*d[2]).toString(16))}return s.trim()},fe=function(t,e){e||(e=21);var r=Xt(),n=he(t.colors,e),i=[];i.push({key:"FunctionType",value:"0"}),i.push({key:"Domain",value:"[0.0 1.0]"}),i.push({key:"Size",value:"["+e+"]"}),i.push({key:"BitsPerSample",value:"8"}),i.push({key:"Range",value:"[0.0 1.0 0.0 1.0 0.0 1.0]"}),i.push({key:"Decode",value:"[0.0 1.0 0.0 1.0 0.0 1.0]"}),ie({data:n,additionalKeyValues:i,alreadyAppliedFilters:["/ASCIIHexDecode"],objectId:r}),ht("endobj"),t.objectNumber=Xt(),ht("<< /ShadingType "+t.type),ht("/ColorSpace /DeviceRGB");var a="/Coords ["+E(parseFloat(t.coords[0]))+" "+E(parseFloat(t.coords[1]))+" ";2===t.type?a+=E(parseFloat(t.coords[2]))+" "+E(parseFloat(t.coords[3])):a+=E(parseFloat(t.coords[2]))+" "+E(parseFloat(t.coords[3]))+" "+E(parseFloat(t.coords[4]))+" "+E(parseFloat(t.coords[5])),ht(a+="]"),t.matrix&&ht("/Matrix ["+t.matrix.toString()+"]"),ht("/Function "+r+" 0 R"),ht("/Extend [true true]"),ht(">>"),ht("endobj")},de=function(t,e){var r=Kt(),n=Xt();e.push({resourcesOid:r,objectOid:n}),t.objectNumber=n;var i=[];i.push({key:"Type",value:"/Pattern"}),i.push({key:"PatternType",value:"1"}),i.push({key:"PaintType",value:"1"}),i.push({key:"TilingType",value:"1"}),i.push({key:"BBox",value:"["+t.boundingBox.map(E).join(" ")+"]"}),i.push({key:"XStep",value:E(t.xStep)}),i.push({key:"YStep",value:E(t.yStep)}),i.push({key:"Resources",value:r+" 0 R"}),t.matrix&&i.push({key:"Matrix",value:"["+t.matrix.toString()+"]"}),ie({data:t.stream,additionalKeyValues:i,objectId:t.objectNumber}),ht("endobj")},pe=function(t){var e;for(e in Ot)Ot.hasOwnProperty(e)&&(Ot[e]instanceof O?fe(Ot[e]):Ot[e]instanceof B&&de(Ot[e],t))},ge=function(t){for(var e in t.objectNumber=Xt(),ht("<<"),t)switch(e){case"opacity":ht("/ca "+R(t[e]));break;case"stroke-opacity":ht("/CA "+R(t[e]))}ht(">>"),ht("endobj")},me=function(){var t;for(t in Mt)Mt.hasOwnProperty(t)&&ge(Mt[t])},ve=function(){for(var t in ht("/XObject <<"),zt)zt.hasOwnProperty(t)&&zt[t].objectNumber>=0&&ht("/"+t+" "+zt[t].objectNumber+" 0 R");Tt.publish("putXobjectDict"),ht(">>")},be=function(){Ye.oid=Xt(),ht("<<"),ht("/Filter /Standard"),ht("/V "+Ye.v),ht("/R "+Ye.r),ht("/U <"+Ye.toHexString(Ye.U)+">"),ht("/O <"+Ye.toHexString(Ye.O)+">"),ht("/P "+Ye.P),ht(">>"),ht("endobj")},ye=function(){for(var t in ht("/Font <<"),It)It.hasOwnProperty(t)&&(!1===v||!0===v&&b.hasOwnProperty(t))&&ht("/"+t+" "+It[t].objectNumber+" 0 R");ht(">>")},we=function(){if(Object.keys(Ot).length>0){for(var t in ht("/Shading <<"),Ot)Ot.hasOwnProperty(t)&&Ot[t]instanceof O&&Ot[t].objectNumber>=0&&ht("/"+t+" "+Ot[t].objectNumber+" 0 R");Tt.publish("putShadingPatternDict"),ht(">>")}},Ne=function(t){if(Object.keys(Ot).length>0){for(var e in ht("/Pattern <<"),Ot)Ot.hasOwnProperty(e)&&Ot[e]instanceof y.TilingPattern&&Ot[e].objectNumber>=0&&Ot[e].objectNumber<t&&ht("/"+e+" "+Ot[e].objectNumber+" 0 R");Tt.publish("putTilingPatternDict"),ht(">>")}},Le=function(){if(Object.keys(Mt).length>0){var t;for(t in ht("/ExtGState <<"),Mt)Mt.hasOwnProperty(t)&&Mt[t].objectNumber>=0&&ht("/"+t+" "+Mt[t].objectNumber+" 0 R");Tt.publish("putGStateDict"),ht(">>")}},Ae=function(t){Zt(t.resourcesOid,!0),ht("<<"),ht("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),ye(),we(),Ne(t.objectOid),Le(),ve(),ht(">>"),ht("endobj")},xe=function(){var t=[];ce(),me(),le(),pe(t),Tt.publish("putResources"),t.forEach(Ae),Ae({resourcesOid:te,objectOid:Number.MAX_SAFE_INTEGER}),Tt.publish("postPutResources")},Se=function(){Tt.publish("putAdditionalObjects");for(var t=0;t<at.length;t++){var e=at[t];Zt(e.objId,!0),ht(e.content),ht("endobj")}Tt.publish("postPutAdditionalObjects")},_e=function(t){Ct[t.fontName]=Ct[t.fontName]||{},Ct[t.fontName][t.fontStyle]=t.id},Pe=function(t,e,r,n,i){var a={id:"F"+(Object.keys(It).length+1).toString(10),postScriptName:t,fontName:e,fontStyle:r,encoding:n,isStandardFont:i||!1,metadata:{}};return Tt.publish("addFont",{font:a,instance:this}),It[a.id]=a,_e(a),a.id},ke=function(t){for(var e=0,r=pt.length;e<r;e++){var n=Pe.call(this,t[e][0],t[e][1],t[e][2],pt[e][3],!0);!1===v&&(b[n]=!0);var i=t[e][0].split("-");_e({id:n,fontName:i[0],fontStyle:i[1]||""})}Tt.publish("addFonts",{fonts:It,dictionary:Ct})},Fe=function(t){return t.foo=function(){try{return t.apply(this,arguments)}catch(t){var e=t.stack||"";~e.indexOf(" at ")&&(e=e.split(" at ")[1]);var n="Error in function "+e.split("\n")[0].split("<")[0]+": "+t.message;if(!r.console)throw new Error(n);r.console.error(n,t),r.alert&&alert(n)}},t.foo.bar=t,t.foo},Ie=function(t,e){var r,n,i,a,o,s,c,u,l;if(i=(e=e||{}).sourceEncoding||"Unicode",o=e.outputEncoding,(e.autoencode||o)&&It[St].metadata&&It[St].metadata[i]&&It[St].metadata[i].encoding&&(a=It[St].metadata[i].encoding,!o&&It[St].encoding&&(o=It[St].encoding),!o&&a.codePages&&(o=a.codePages[0]),"string"==typeof o&&(o=a[o]),o)){for(c=!1,s=[],r=0,n=t.length;r<n;r++)(u=o[t.charCodeAt(r)])?s.push(String.fromCharCode(u)):s.push(t[r]),s[r].charCodeAt(0)>>8&&(c=!0);t=s.join("")}for(r=t.length;void 0===c&&0!==r;)t.charCodeAt(r-1)>>8&&(c=!0),r--;if(!c)return t;for(s=e.noBOM?[]:[254,255],r=0,n=t.length;r<n;r++){if((l=(u=t.charCodeAt(r))>>8)>>8)throw new Error("Character at position "+r+" of string '"+t+"' exceeds 16bits. Cannot be encoded into UCS-2 BE");s.push(l),s.push(u-(l<<8))}return String.fromCharCode.apply(void 0,s)},Ce=y.__private__.pdfEscape=y.pdfEscape=function(t,e){return Ie(t,e).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},je=y.__private__.beginPage=function(t){ot[++Dt]=[],Rt[Dt]={objId:0,contentsObjId:0,userUnit:Number(d),artBox:null,bleedBox:null,cropBox:null,trimBox:null,mediaBox:{bottomLeftX:0,bottomLeftY:0,topRightX:Number(t[0]),topRightY:Number(t[1])}},Me(Dt),lt(ot[$])},Oe=function(t,e){var r,n,o;switch(a=e||a,"string"==typeof t&&(r=A(t.toLowerCase()),Array.isArray(r)&&(n=r[0],o=r[1])),Array.isArray(t)&&(n=t[0]*_t,o=t[1]*_t),isNaN(n)&&(n=s[0],o=s[1]),(n>14400||o>14400)&&(i.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"),n=Math.min(14400,n),o=Math.min(14400,o)),s=[n,o],a.substr(0,1)){case"l":o>n&&(s=[o,n]);break;case"p":n>o&&(s=[o,n])}je(s),pr(fr),ht(Lr),0!==kr&&ht(kr+" J"),0!==Fr&&ht(Fr+" j"),Tt.publish("addPage",{pageNumber:Dt})},Be=function(t){t>0&&t<=Dt&&(ot.splice(t,1),Rt.splice(t,1),Dt--,$>Dt&&($=Dt),this.setPage($))},Me=function(t){t>0&&t<=Dt&&($=t)},Ee=y.__private__.getNumberOfPages=y.getNumberOfPages=function(){return ot.length-1},qe=function(t,e,r){var n,a=void 0;return r=r||{},t=void 0!==t?t:It[St].fontName,e=void 0!==e?e:It[St].fontStyle,n=t.toLowerCase(),void 0!==Ct[n]&&void 0!==Ct[n][e]?a=Ct[n][e]:void 0!==Ct[t]&&void 0!==Ct[t][e]?a=Ct[t][e]:!1===r.disableWarning&&i.warn("Unable to look up font label for font '"+t+"', '"+e+"'. Refer to getFontList() for available fonts."),a||r.noFallback||null==(a=Ct.times[e])&&(a=Ct.times.normal),a},De=y.__private__.putInfo=function(){var t=Xt(),e=function(t){return t};for(var r in null!==m&&(e=Ye.encryptor(t,0)),ht("<<"),ht("/Producer ("+Ce(e("jsPDF "+M.version))+")"),xt)xt.hasOwnProperty(r)&&xt[r]&&ht("/"+r.substr(0,1).toUpperCase()+r.substr(1)+" ("+Ce(e(xt[r]))+")");ht("/CreationDate ("+Ce(e(W))+")"),ht(">>"),ht("endobj")},Re=y.__private__.putCatalog=function(t){var e=(t=t||{}).rootDictionaryObjId||Qt;switch(Xt(),ht("<<"),ht("/Type /Catalog"),ht("/Pages "+e+" 0 R"),mt||(mt="fullwidth"),mt){case"fullwidth":ht("/OpenAction [3 0 R /FitH null]");break;case"fullheight":ht("/OpenAction [3 0 R /FitV null]");break;case"fullpage":ht("/OpenAction [3 0 R /Fit]");break;case"original":ht("/OpenAction [3 0 R /XYZ null null 1]");break;default:var r=""+mt;"%"===r.substr(r.length-1)&&(mt=parseInt(mt)/100),"number"==typeof mt&&ht("/OpenAction [3 0 R /XYZ null null "+R(mt)+"]")}switch(Nt||(Nt="continuous"),Nt){case"continuous":ht("/PageLayout /OneColumn");break;case"single":ht("/PageLayout /SinglePage");break;case"two":case"twoleft":ht("/PageLayout /TwoColumnLeft");break;case"tworight":ht("/PageLayout /TwoColumnRight")}yt&&ht("/PageMode /"+yt),Tt.publish("putCatalog"),ht(">>"),ht("endobj")},Te=y.__private__.putTrailer=function(){ht("trailer"),ht("<<"),ht("/Size "+(et+1)),ht("/Root "+et+" 0 R"),ht("/Info "+(et-1)+" 0 R"),null!==m&&ht("/Encrypt "+Ye.oid+" 0 R"),ht("/ID [ <"+V+"> <"+V+"> ]"),ht(">>")},Ue=y.__private__.putHeader=function(){ht("%PDF-"+w),ht("%ºß¬à ")},ze=y.__private__.putXRef=function(){var t="0000000000";ht("xref"),ht("0 "+(et+1)),ht("0000000000 65535 f ");for(var e=1;e<=et;e++){"function"==typeof rt[e]?ht((t+rt[e]()).slice(-10)+" 00000 n "):void 0!==rt[e]?ht((t+rt[e]).slice(-10)+" 00000 n "):ht("0000000000 00000 n ")}},He=y.__private__.buildDocument=function(){ut(),lt(nt),Tt.publish("buildDocument"),Ue(),oe(),Se(),xe(),null!==m&&be(),De(),Re();var t=it;return ze(),Te(),ht("startxref"),ht(""+t),ht("%%EOF"),lt(ot[$]),nt.join("\n")},We=y.__private__.getBlob=function(t){return new Blob([dt(t)],{type:"application/pdf"})},Ve=y.output=y.__private__.output=Fe((function(t,e){switch("string"==typeof(e=e||{})?e={filename:e}:e.filename=e.filename||"generated.pdf",t){case void 0:return He();case"save":y.save(e.filename);break;case"arraybuffer":return dt(He());case"blob":return We(He());case"bloburi":case"bloburl":if(void 0!==r.URL&&"function"==typeof r.URL.createObjectURL)return r.URL&&r.URL.createObjectURL(We(He()))||void 0;i.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");break;case"datauristring":case"dataurlstring":var n="",a=He();try{n=u(a)}catch(t){n=u(unescape(encodeURIComponent(a)))}return"data:application/pdf;filename="+e.filename+";base64,"+n;case"pdfobjectnewwindow":if("[object Window]"===Object.prototype.toString.call(r)){var o="https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js",s=' integrity="sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==" crossorigin="anonymous"';e.pdfObjectUrl&&(o=e.pdfObjectUrl,s="");var c='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><script src="'+o+'"'+s+'><\/script><script >PDFObject.embed("'+this.output("dataurlstring")+'", '+JSON.stringify(e)+");<\/script></body></html>",l=r.open();return null!==l&&l.document.write(c),l}throw new Error("The option pdfobjectnewwindow just works in a browser-environment.");case"pdfjsnewwindow":if("[object Window]"===Object.prototype.toString.call(r)){var h='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe id="pdfViewer" src="'+(e.pdfJsUrl||"examples/PDF.js/web/viewer.html")+"?file=&downloadName="+e.filename+'" width="500px" height="400px" /></body></html>',f=r.open();if(null!==f){f.document.write(h);var d=this;f.document.documentElement.querySelector("#pdfViewer").onload=function(){f.document.title=e.filename,f.document.documentElement.querySelector("#pdfViewer").contentWindow.PDFViewerApplication.open(d.output("bloburl"))}}return f}throw new Error("The option pdfjsnewwindow just works in a browser-environment.");case"dataurlnewwindow":if("[object Window]"!==Object.prototype.toString.call(r))throw new Error("The option dataurlnewwindow just works in a browser-environment.");var p='<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe src="'+this.output("datauristring",e)+'"></iframe></body></html>',g=r.open();if(null!==g&&(g.document.write(p),g.document.title=e.filename),g||"undefined"==typeof safari)return g;break;case"datauri":case"dataurl":return r.document.location.href=this.output("datauristring",e);default:return null}})),Ge=function(t){return!0===Array.isArray(Ut)&&Ut.indexOf(t)>-1};switch(o){case"pt":_t=1;break;case"mm":_t=72/25.4;break;case"cm":_t=72/2.54;break;case"in":_t=72;break;case"px":_t=1==Ge("px_scaling")?.75:96/72;break;case"pc":case"em":_t=12;break;case"ex":_t=6;break;default:if("number"!=typeof o)throw new Error("Invalid unit: "+o);_t=o}var Ye=null;K(),Y();var Je=function(t){return null!==m?Ye.encryptor(t,0):function(t){return t}},Xe=y.__private__.getPageInfo=y.getPageInfo=function(t){if(isNaN(t)||t%1!=0)throw new Error("Invalid argument passed to jsPDF.getPageInfo");return{objId:Rt[t].objId,pageNumber:t,pageContext:Rt[t]}},Ke=y.__private__.getPageInfoByObjId=function(t){if(isNaN(t)||t%1!=0)throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");for(var e in Rt)if(Rt[e].objId===t)break;return Xe(e)},Ze=y.__private__.getCurrentPageInfo=y.getCurrentPageInfo=function(){return{objId:Rt[$].objId,pageNumber:$,pageContext:Rt[$]}};y.addPage=function(){return Oe.apply(this,arguments),this},y.setPage=function(){return Me.apply(this,arguments),lt.call(this,ot[$]),this},y.insertPage=function(t){return this.addPage(),this.movePage($,t),this},y.movePage=function(t,e){var r,n;if(t>e){r=ot[t],n=Rt[t];for(var i=t;i>e;i--)ot[i]=ot[i-1],Rt[i]=Rt[i-1];ot[e]=r,Rt[e]=n,this.setPage(e)}else if(t<e){r=ot[t],n=Rt[t];for(var a=t;a<e;a++)ot[a]=ot[a+1],Rt[a]=Rt[a+1];ot[e]=r,Rt[e]=n,this.setPage(e)}return this},y.deletePage=function(){return Be.apply(this,arguments),this},y.__private__.text=y.text=function(t,r,n,i,a){var o,s,c,u,l,h,f,d,p,g=(i=i||{}).scope||this;if("number"==typeof t&&"number"==typeof r&&("string"==typeof n||Array.isArray(n))){var m=n;n=r,r=t,t=m}if(arguments[3]instanceof Vt==!1?(c=arguments[4],u=arguments[5],"object"===e(f=arguments[3])&&null!==f||("string"==typeof c&&(u=c,c=null),"string"==typeof f&&(u=f,f=null),"number"==typeof f&&(c=f,f=null),i={flags:f,angle:c,align:u})):(q("The transform parameter of text() with a Matrix value"),p=a),isNaN(r)||isNaN(n)||null==t)throw new Error("Invalid arguments passed to jsPDF.text");if(0===t.length)return g;var v="",y=!1,w="number"==typeof i.lineHeightFactor?i.lineHeightFactor:hr,N=g.internal.scaleFactor;function L(t){return t=t.split("\t").join(Array(i.TabLen||9).join(" ")),Ce(t,f)}function A(t){for(var e,r=t.concat(),n=[],i=r.length;i--;)"string"==typeof(e=r.shift())?n.push(e):Array.isArray(t)&&(1===e.length||void 0===e[1]&&void 0===e[2])?n.push(e[0]):n.push([e[0],e[1],e[2]]);return n}function _(t,e){var r;if("string"==typeof t)r=e(t)[0];else if(Array.isArray(t)){for(var n,i,a=t.concat(),o=[],s=a.length;s--;)"string"==typeof(n=a.shift())?o.push(e(n)[0]):Array.isArray(n)&&"string"==typeof n[0]&&(i=e(n[0],n[1],n[2]),o.push([i[0],i[1],i[2]]));r=o}return r}var P=!1,k=!0;if("string"==typeof t)P=!0;else if(Array.isArray(t)){var F=t.concat();s=[];for(var I,C=F.length;C--;)("string"!=typeof(I=F.shift())||Array.isArray(I)&&"string"!=typeof I[0])&&(k=!1);P=k}if(!1===P)throw new Error('Type of text must be string or Array. "'+t+'" is not recognized.');"string"==typeof t&&(t=t.match(/[\r?\n]/)?t.split(/\r\n|\r|\n/g):[t]);var j=gt/g.internal.scaleFactor,O=j*(w-1);switch(i.baseline){case"bottom":n-=O;break;case"top":n+=j-O;break;case"hanging":n+=j-2*O;break;case"middle":n+=j/2-O}if((h=i.maxWidth||0)>0&&("string"==typeof t?t=g.splitTextToSize(t,h):"[object Array]"===Object.prototype.toString.call(t)&&(t=t.reduce((function(t,e){return t.concat(g.splitTextToSize(e,h))}),[]))),o={text:t,x:r,y:n,options:i,mutex:{pdfEscape:Ce,activeFontKey:St,fonts:It,activeFontSize:gt}},Tt.publish("preProcessText",o),t=o.text,c=(i=o.options).angle,p instanceof Vt==!1&&c&&"number"==typeof c){c*=Math.PI/180,0===i.rotationDirection&&(c=-c),S===x.ADVANCED&&(c=-c);var B=Math.cos(c),M=Math.sin(c);p=new Vt(B,M,-M,B,0,0)}else c&&c instanceof Vt&&(p=c);S!==x.ADVANCED||p||(p=Yt),void 0!==(l=i.charSpace||_r)&&(v+=E(U(l))+" Tc\n",this.setCharSpace(this.getCharSpace()||0)),void 0!==(d=i.horizontalScale)&&(v+=E(100*d)+" Tz\n");i.lang;var D=-1,R=void 0!==i.renderingMode?i.renderingMode:i.stroke,T=g.internal.getCurrentPageInfo().pageContext;switch(R){case 0:case!1:case"fill":D=0;break;case 1:case!0:case"stroke":D=1;break;case 2:case"fillThenStroke":D=2;break;case 3:case"invisible":D=3;break;case 4:case"fillAndAddForClipping":D=4;break;case 5:case"strokeAndAddPathForClipping":D=5;break;case 6:case"fillThenStrokeAndAddToPathForClipping":D=6;break;case 7:case"addToPathForClipping":D=7}var z=void 0!==T.usedRenderingMode?T.usedRenderingMode:-1;-1!==D?v+=D+" Tr\n":-1!==z&&(v+="0 Tr\n"),-1!==D&&(T.usedRenderingMode=D),u=i.align||"left";var H,W=gt*w,V=g.internal.pageSize.getWidth(),G=It[St];l=i.charSpace||_r,h=i.maxWidth||0,f=Object.assign({autoencode:!0,noBOM:!0},i.flags);var Y=[];if("[object Array]"===Object.prototype.toString.call(t)){var J;s=A(t),"left"!==u&&(H=s.map((function(t){return g.getStringUnitWidth(t,{font:G,charSpace:l,fontSize:gt,doKerning:!1})*gt/N})));var X,K=0;if("right"===u){r-=H[0],t=[],C=s.length;for(var Z=0;Z<C;Z++)0===Z?(X=br(r),J=yr(n)):(X=U(K-H[Z]),J=-W),t.push([s[Z],X,J]),K=H[Z]}else if("center"===u){r-=H[0]/2,t=[],C=s.length;for(var $=0;$<C;$++)0===$?(X=br(r),J=yr(n)):(X=U((K-H[$])/2),J=-W),t.push([s[$],X,J]),K=H[$]}else if("left"===u){t=[],C=s.length;for(var Q=0;Q<C;Q++)t.push(s[Q])}else{if("justify"!==u)throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');t=[],C=s.length,h=0!==h?h:V;for(var tt=0;tt<C;tt++)J=0===tt?yr(n):-W,X=0===tt?br(r):0,tt<C-1?Y.push(E(U((h-H[tt])/(s[tt].split(" ").length-1)))):Y.push(0),t.push([s[tt],X,J])}}var et="boolean"==typeof i.R2L?i.R2L:bt;!0===et&&(t=_(t,(function(t,e,r){return[t.split("").reverse().join(""),e,r]}))),o={text:t,x:r,y:n,options:i,mutex:{pdfEscape:Ce,activeFontKey:St,fonts:It,activeFontSize:gt}},Tt.publish("postProcessText",o),t=o.text,y=o.mutex.isHex||!1;var rt=It[St].encoding;"WinAnsiEncoding"!==rt&&"StandardEncoding"!==rt||(t=_(t,(function(t,e,r){return[L(t),e,r]}))),s=A(t),t=[];for(var nt,it,at,ot=0,st=1,ct=Array.isArray(s[0])?st:ot,ut="",lt=function(t,e,r){var n="";return r instanceof Vt?(r="number"==typeof i.angle?Gt(r,new Vt(1,0,0,1,t,e)):Gt(new Vt(1,0,0,1,t,e),r),S===x.ADVANCED&&(r=Gt(new Vt(1,0,0,-1,0,0),r)),n=r.join(" ")+" Tm\n"):n=E(t)+" "+E(e)+" Td\n",n},ft=0;ft<s.length;ft++){switch(ut="",ct){case st:at=(y?"<":"(")+s[ft][0]+(y?">":")"),nt=parseFloat(s[ft][1]),it=parseFloat(s[ft][2]);break;case ot:at=(y?"<":"(")+s[ft]+(y?">":")"),nt=br(r),it=yr(n)}void 0!==Y&&void 0!==Y[ft]&&(ut=Y[ft]+" Tw\n"),0===ft?t.push(ut+lt(nt,it,p)+at):ct===ot?t.push(ut+at):ct===st&&t.push(ut+lt(nt,it,p)+at)}t=ct===ot?t.join(" Tj\nT* "):t.join(" Tj\n"),t+=" Tj\n";var dt="BT\n/";return dt+=St+" "+gt+" Tf\n",dt+=E(gt*w)+" TL\n",dt+=xr+"\n",dt+=v,dt+=t,ht(dt+="ET"),b[St]=!0,g};var $e=y.__private__.clip=y.clip=function(t){return ht("evenodd"===t?"W*":"W"),this};y.clipEvenOdd=function(){return $e("evenodd")},y.__private__.discardPath=y.discardPath=function(){return ht("n"),this};var Qe=y.__private__.isValidStyle=function(t){var e=!1;return-1!==[void 0,null,"S","D","F","DF","FD","f","f*","B","B*","n"].indexOf(t)&&(e=!0),e};y.__private__.setDefaultPathOperation=y.setDefaultPathOperation=function(t){return Qe(t)&&(g=t),this};var tr=y.__private__.getStyle=y.getStyle=function(t){var e=g;switch(t){case"D":case"S":e="S";break;case"F":e="f";break;case"FD":case"DF":e="B";break;case"f":case"f*":case"B":case"B*":e=t}return e},er=y.close=function(){return ht("h"),this};y.stroke=function(){return ht("S"),this},y.fill=function(t){return rr("f",t),this},y.fillEvenOdd=function(t){return rr("f*",t),this},y.fillStroke=function(t){return rr("B",t),this},y.fillStrokeEvenOdd=function(t){return rr("B*",t),this};var rr=function(t,r){"object"===e(r)?ar(r,t):ht(t)},nr=function(t){null===t||S===x.ADVANCED&&void 0===t||(t=tr(t),ht(t))};function ir(t,e,r,n,i){var a=new B(e||this.boundingBox,r||this.xStep,n||this.yStep,this.gState,i||this.matrix);a.stream=this.stream;var o=t+"$$"+this.cloneIndex+++"$$";return Jt(o,a),a}var ar=function(t,e){var r=Bt[t.key],n=Ot[r];if(n instanceof O)ht("q"),ht(or(e)),n.gState&&y.setGState(n.gState),ht(t.matrix.toString()+" cm"),ht("/"+r+" sh"),ht("Q");else if(n instanceof B){var i=new Vt(1,0,0,-1,0,Rr());t.matrix&&(i=i.multiply(t.matrix||Yt),r=ir.call(n,t.key,t.boundingBox,t.xStep,t.yStep,i).id),ht("q"),ht("/Pattern cs"),ht("/"+r+" scn"),n.gState&&y.setGState(n.gState),ht(e),ht("Q")}},or=function(t){switch(t){case"f":case"F":return"W n";case"f*":return"W* n";case"B":return"W S";case"B*":return"W* S";case"S":return"W S";case"n":return"W n"}},sr=y.moveTo=function(t,e){return ht(E(U(t))+" "+E(H(e))+" m"),this},cr=y.lineTo=function(t,e){return ht(E(U(t))+" "+E(H(e))+" l"),this},ur=y.curveTo=function(t,e,r,n,i,a){return ht([E(U(t)),E(H(e)),E(U(r)),E(H(n)),E(U(i)),E(H(a)),"c"].join(" ")),this};y.__private__.line=y.line=function(t,e,r,n,i){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||!Qe(i))throw new Error("Invalid arguments passed to jsPDF.line");return S===x.COMPAT?this.lines([[r-t,n-e]],t,e,[1,1],i||"S"):this.lines([[r-t,n-e]],t,e,[1,1]).stroke()},y.__private__.lines=y.lines=function(t,e,r,n,i,a){var o,s,c,u,l,h,f,d,p,g,m,v;if("number"==typeof t&&(v=r,r=e,e=t,t=v),n=n||[1,1],a=a||!1,isNaN(e)||isNaN(r)||!Array.isArray(t)||!Array.isArray(n)||!Qe(i)||"boolean"!=typeof a)throw new Error("Invalid arguments passed to jsPDF.lines");for(sr(e,r),o=n[0],s=n[1],u=t.length,g=e,m=r,c=0;c<u;c++)2===(l=t[c]).length?(g=l[0]*o+g,m=l[1]*s+m,cr(g,m)):(h=l[0]*o+g,f=l[1]*s+m,d=l[2]*o+g,p=l[3]*s+m,g=l[4]*o+g,m=l[5]*s+m,ur(h,f,d,p,g,m));return a&&er(),nr(i),this},y.path=function(t){for(var e=0;e<t.length;e++){var r=t[e],n=r.c;switch(r.op){case"m":sr(n[0],n[1]);break;case"l":cr(n[0],n[1]);break;case"c":ur.apply(this,n);break;case"h":er()}}return this},y.__private__.rect=y.rect=function(t,e,r,n,i){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||!Qe(i))throw new Error("Invalid arguments passed to jsPDF.rect");return S===x.COMPAT&&(n=-n),ht([E(U(t)),E(H(e)),E(U(r)),E(U(n)),"re"].join(" ")),nr(i),this},y.__private__.triangle=y.triangle=function(t,e,r,n,i,a,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(i)||isNaN(a)||!Qe(o))throw new Error("Invalid arguments passed to jsPDF.triangle");return this.lines([[r-t,n-e],[i-r,a-n],[t-i,e-a]],t,e,[1,1],o,!0),this},y.__private__.roundedRect=y.roundedRect=function(t,e,r,n,i,a,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(i)||isNaN(a)||!Qe(o))throw new Error("Invalid arguments passed to jsPDF.roundedRect");var s=4/3*(Math.SQRT2-1);return i=Math.min(i,.5*r),a=Math.min(a,.5*n),this.lines([[r-2*i,0],[i*s,0,i,a-a*s,i,a],[0,n-2*a],[0,a*s,-i*s,a,-i,a],[2*i-r,0],[-i*s,0,-i,-a*s,-i,-a],[0,2*a-n],[0,-a*s,i*s,-a,i,-a]],t+i,e,[1,1],o,!0),this},y.__private__.ellipse=y.ellipse=function(t,e,r,n,i){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||!Qe(i))throw new Error("Invalid arguments passed to jsPDF.ellipse");var a=4/3*(Math.SQRT2-1)*r,o=4/3*(Math.SQRT2-1)*n;return sr(t+r,e),ur(t+r,e-o,t+a,e-n,t,e-n),ur(t-a,e-n,t-r,e-o,t-r,e),ur(t-r,e+o,t-a,e+n,t,e+n),ur(t+a,e+n,t+r,e+o,t+r,e),nr(i),this},y.__private__.circle=y.circle=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||!Qe(n))throw new Error("Invalid arguments passed to jsPDF.circle");return this.ellipse(t,e,r,r,n)},y.setFont=function(t,e,r){return r&&(e=j(e,r)),St=qe(t,e,{disableWarning:!1}),this};var lr=y.__private__.getFont=y.getFont=function(){return It[qe.apply(y,arguments)]};y.__private__.getFontList=y.getFontList=function(){var t,e,r={};for(t in Ct)if(Ct.hasOwnProperty(t))for(e in r[t]=[],Ct[t])Ct[t].hasOwnProperty(e)&&r[t].push(e);return r},y.addFont=function(t,e,r,n,i){var a=["StandardEncoding","MacRomanEncoding","Identity-H","WinAnsiEncoding"];return arguments[3]&&-1!==a.indexOf(arguments[3])?i=arguments[3]:arguments[3]&&-1==a.indexOf(arguments[3])&&(r=j(r,n)),i=i||"Identity-H",Pe.call(this,t,e,r,i)};var hr,fr=t.lineWidth||.200025,dr=y.__private__.getLineWidth=y.getLineWidth=function(){return fr},pr=y.__private__.setLineWidth=y.setLineWidth=function(t){return fr=t,ht(E(U(t))+" w"),this};y.__private__.setLineDash=M.API.setLineDash=M.API.setLineDashPattern=function(t,e){if(t=t||[],e=e||0,isNaN(e)||!Array.isArray(t))throw new Error("Invalid arguments passed to jsPDF.setLineDash");return t=t.map((function(t){return E(U(t))})).join(" "),e=E(U(e)),ht("["+t+"] "+e+" d"),this};var gr=y.__private__.getLineHeight=y.getLineHeight=function(){return gt*hr};y.__private__.getLineHeight=y.getLineHeight=function(){return gt*hr};var mr=y.__private__.setLineHeightFactor=y.setLineHeightFactor=function(t){return"number"==typeof(t=t||1.15)&&(hr=t),this},vr=y.__private__.getLineHeightFactor=y.getLineHeightFactor=function(){return hr};mr(t.lineHeight);var br=y.__private__.getHorizontalCoordinate=function(t){return U(t)},yr=y.__private__.getVerticalCoordinate=function(t){return S===x.ADVANCED?t:Rt[$].mediaBox.topRightY-Rt[$].mediaBox.bottomLeftY-U(t)},wr=y.__private__.getHorizontalCoordinateString=y.getHorizontalCoordinateString=function(t){return E(br(t))},Nr=y.__private__.getVerticalCoordinateString=y.getVerticalCoordinateString=function(t){return E(yr(t))},Lr=t.strokeColor||"0 G";y.__private__.getStrokeColor=y.getDrawColor=function(){return ee(Lr)},y.__private__.setStrokeColor=y.setDrawColor=function(t,e,r,n){return Lr=re({ch1:t,ch2:e,ch3:r,ch4:n,pdfColorType:"draw",precision:2}),ht(Lr),this};var Ar=t.fillColor||"0 g";y.__private__.getFillColor=y.getFillColor=function(){return ee(Ar)},y.__private__.setFillColor=y.setFillColor=function(t,e,r,n){return Ar=re({ch1:t,ch2:e,ch3:r,ch4:n,pdfColorType:"fill",precision:2}),ht(Ar),this};var xr=t.textColor||"0 g",Sr=y.__private__.getTextColor=y.getTextColor=function(){return ee(xr)};y.__private__.setTextColor=y.setTextColor=function(t,e,r,n){return xr=re({ch1:t,ch2:e,ch3:r,ch4:n,pdfColorType:"text",precision:3}),this};var _r=t.charSpace,Pr=y.__private__.getCharSpace=y.getCharSpace=function(){return parseFloat(_r||0)};y.__private__.setCharSpace=y.setCharSpace=function(t){if(isNaN(t))throw new Error("Invalid argument passed to jsPDF.setCharSpace");return _r=t,this};var kr=0;y.CapJoinStyles={0:0,butt:0,but:0,miter:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,bevel:2},y.__private__.setLineCap=y.setLineCap=function(t){var e=y.CapJoinStyles[t];if(void 0===e)throw new Error("Line cap style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return kr=e,ht(e+" J"),this};var Fr=0;y.__private__.setLineJoin=y.setLineJoin=function(t){var e=y.CapJoinStyles[t];if(void 0===e)throw new Error("Line join style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return Fr=e,ht(e+" j"),this},y.__private__.setLineMiterLimit=y.__private__.setMiterLimit=y.setLineMiterLimit=y.setMiterLimit=function(t){if(t=t||0,isNaN(t))throw new Error("Invalid argument passed to jsPDF.setLineMiterLimit");return ht(E(U(t))+" M"),this},y.GState=C,y.setGState=function(t){(t="string"==typeof t?Mt[Et[t]]:Ir(null,t)).equals(qt)||(ht("/"+t.id+" gs"),qt=t)};var Ir=function(t,e){if(!t||!Et[t]){var r=!1;for(var n in Mt)if(Mt.hasOwnProperty(n)&&Mt[n].equals(e)){r=!0;break}if(r)e=Mt[n];else{var i="GS"+(Object.keys(Mt).length+1).toString(10);Mt[i]=e,e.id=i}return t&&(Et[t]=e.id),Tt.publish("addGState",e),e}};y.addGState=function(t,e){return Ir(t,e),this},y.saveGraphicsState=function(){return ht("q"),jt.push({key:St,size:gt,color:xr}),this},y.restoreGraphicsState=function(){ht("Q");var t=jt.pop();return St=t.key,gt=t.size,xr=t.color,qt=null,this},y.setCurrentTransformationMatrix=function(t){return ht(t.toString()+" cm"),this},y.comment=function(t){return ht("#"+t),this};var Cr=function(t,e){var r=t||0;Object.defineProperty(this,"x",{enumerable:!0,get:function(){return r},set:function(t){isNaN(t)||(r=parseFloat(t))}});var n=e||0;Object.defineProperty(this,"y",{enumerable:!0,get:function(){return n},set:function(t){isNaN(t)||(n=parseFloat(t))}});var i="pt";return Object.defineProperty(this,"type",{enumerable:!0,get:function(){return i},set:function(t){i=t.toString()}}),this},jr=function(t,e,r,n){Cr.call(this,t,e),this.type="rect";var i=r||0;Object.defineProperty(this,"w",{enumerable:!0,get:function(){return i},set:function(t){isNaN(t)||(i=parseFloat(t))}});var a=n||0;return Object.defineProperty(this,"h",{enumerable:!0,get:function(){return a},set:function(t){isNaN(t)||(a=parseFloat(t))}}),this},Or=function(){this.page=Dt,this.currentPage=$,this.pages=ot.slice(0),this.pagesContext=Rt.slice(0),this.x=Pt,this.y=kt,this.matrix=Ft,this.width=qr($),this.height=Rr($),this.outputDestination=ct,this.id="",this.objectNumber=-1};Or.prototype.restore=function(){Dt=this.page,$=this.currentPage,Rt=this.pagesContext,ot=this.pages,Pt=this.x,kt=this.y,Ft=this.matrix,Dr($,this.width),Tr($,this.height),ct=this.outputDestination};var Br=function(t,e,r,n,i){Wt.push(new Or),Dt=$=0,ot=[],Pt=t,kt=e,Ft=i,je([r,n])},Mr=function(t){if(Ht[t])Wt.pop().restore();else{var e=new Or,r="Xo"+(Object.keys(zt).length+1).toString(10);e.id=r,Ht[t]=r,zt[r]=e,Tt.publish("addFormObject",e),Wt.pop().restore()}};for(var Er in y.beginFormObject=function(t,e,r,n,i){return Br(t,e,r,n,i),this},y.endFormObject=function(t){return Mr(t),this},y.doFormObject=function(t,e){var r=zt[Ht[t]];return ht("q"),ht(e.toString()+" cm"),ht("/"+r.id+" Do"),ht("Q"),this},y.getFormObject=function(t){var e=zt[Ht[t]];return{x:e.x,y:e.y,width:e.width,height:e.height,matrix:e.matrix}},y.save=function(t,e){return t=t||"generated.pdf",(e=e||{}).returnPromise=e.returnPromise||!1,!1===e.returnPromise?(l(We(He()),t),"function"==typeof l.unload&&r.setTimeout&&setTimeout(l.unload,911),this):new Promise((function(e,n){try{var i=l(We(He()),t);"function"==typeof l.unload&&r.setTimeout&&setTimeout(l.unload,911),e(i)}catch(t){n(t.message)}}))},M.API)M.API.hasOwnProperty(Er)&&("events"===Er&&M.API.events.length?function(t,e){var r,n,i;for(i=e.length-1;-1!==i;i--)r=e[i][0],n=e[i][1],t.subscribe.apply(t,[r].concat("function"==typeof n?[n]:n))}(Tt,M.API.events):y[Er]=M.API[Er]);var qr=y.getPageWidth=function(t){return(Rt[t=t||$].mediaBox.topRightX-Rt[t].mediaBox.bottomLeftX)/_t},Dr=y.setPageWidth=function(t,e){Rt[t].mediaBox.topRightX=e*_t+Rt[t].mediaBox.bottomLeftX},Rr=y.getPageHeight=function(t){return(Rt[t=t||$].mediaBox.topRightY-Rt[t].mediaBox.bottomLeftY)/_t},Tr=y.setPageHeight=function(t,e){Rt[t].mediaBox.topRightY=e*_t+Rt[t].mediaBox.bottomLeftY};return y.internal={pdfEscape:Ce,getStyle:tr,getFont:lr,getFontSize:vt,getCharSpace:Pr,getTextColor:Sr,getLineHeight:gr,getLineHeightFactor:vr,getLineWidth:dr,write:ft,getHorizontalCoordinate:br,getVerticalCoordinate:yr,getCoordinateString:wr,getVerticalCoordinateString:Nr,collections:{},newObject:Xt,newAdditionalObject:$t,newObjectDeferred:Kt,newObjectDeferredBegin:Zt,getFilters:ne,putStream:ie,events:Tt,scaleFactor:_t,pageSize:{getWidth:function(){return qr($)},setWidth:function(t){Dr($,t)},getHeight:function(){return Rr($)},setHeight:function(t){Tr($,t)}},encryptionOptions:m,encryption:Ye,getEncryptor:Je,output:Ve,getNumberOfPages:Ee,pages:ot,out:ht,f2:R,f3:T,getPageInfo:Xe,getPageInfoByObjId:Ke,getCurrentPageInfo:Ze,getPDFVersion:N,Point:Cr,Rectangle:jr,Matrix:Vt,hasHotfix:Ge},Object.defineProperty(y.internal.pageSize,"width",{get:function(){return qr($)},set:function(t){Dr($,t)},enumerable:!0,configurable:!0}),Object.defineProperty(y.internal.pageSize,"height",{get:function(){return Rr($)},set:function(t){Tr($,t)},enumerable:!0,configurable:!0}),ke.call(y,pt),St="F1",Oe(s,a),Tt.publish("initialized"),y}k.prototype.lsbFirstWord=function(t){return String.fromCharCode(t>>0&255,t>>8&255,t>>16&255,t>>24&255)},k.prototype.toHexString=function(t){return t.split("").map((function(t){return("0"+(255&t.charCodeAt(0)).toString(16)).slice(-2)})).join("")},k.prototype.hexToBytes=function(t){for(var e=[],r=0;r<t.length;r+=2)e.push(String.fromCharCode(parseInt(t.substr(r,2),16)));return e.join("")},k.prototype.processOwnerPassword=function(t,e){return _(A(e).substr(0,5),t)},k.prototype.encryptor=function(t,e){var r=A(this.encryptionKey+String.fromCharCode(255&t,t>>8&255,t>>16&255,255&e,e>>8&255)).substr(0,10);return function(t){return _(r,t)}},C.prototype.equals=function(t){var r,n="id,objectNumber,equals";if(!t||e(t)!==e(this))return!1;var i=0;for(r in this)if(!(n.indexOf(r)>=0)){if(this.hasOwnProperty(r)&&!t.hasOwnProperty(r))return!1;if(this[r]!==t[r])return!1;i++}for(r in t)t.hasOwnProperty(r)&&n.indexOf(r)<0&&i--;return 0===i},M.API={events:[]},M.version="2.5.1";var E=M.API,q=1,D=function(t){return t.replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},R=function(t){return t.replace(/\\\\/g,"\\").replace(/\\\(/g,"(").replace(/\\\)/g,")")},T=function(t){return t.toFixed(2)},U=function(t){return t.toFixed(5)};E.__acroform__={};var z=function(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t},H=function(t){return t*q},W=function(t){var e=new ct,r=Lt.internal.getHeight(t)||0,n=Lt.internal.getWidth(t)||0;return e.BBox=[0,0,Number(T(n)),Number(T(r))],e},V=E.__acroform__.setBit=function(t,e){if(t=t||0,e=e||0,isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit");return t|=1<<e},G=E.__acroform__.clearBit=function(t,e){if(t=t||0,e=e||0,isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit");return t&=~(1<<e)},Y=E.__acroform__.getBit=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit");return 0==(t&1<<e)?0:1},J=E.__acroform__.getBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf");return Y(t,e-1)},X=E.__acroform__.setBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf");return V(t,e-1)},K=E.__acroform__.clearBitForPdf=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf");return G(t,e-1)},Z=E.__acroform__.calculateCoordinates=function(t,e){var r=e.internal.getHorizontalCoordinate,n=e.internal.getVerticalCoordinate,i=t[0],a=t[1],o=t[2],s=t[3],c={};return c.lowerLeft_X=r(i)||0,c.lowerLeft_Y=n(a+s)||0,c.upperRight_X=r(i+o)||0,c.upperRight_Y=n(a)||0,[Number(T(c.lowerLeft_X)),Number(T(c.lowerLeft_Y)),Number(T(c.upperRight_X)),Number(T(c.upperRight_Y))]},$=function(t){if(t.appearanceStreamContent)return t.appearanceStreamContent;if(t.V||t.DV){var e=[],r=t._V||t.DV,n=Q(t,r),i=t.scope.internal.getFont(t.fontName,t.fontStyle).id;e.push("/Tx BMC"),e.push("q"),e.push("BT"),e.push(t.scope.__private__.encodeColorString(t.color)),e.push("/"+i+" "+T(n.fontSize)+" Tf"),e.push("1 0 0 1 0 0 Tm"),e.push(n.text),e.push("ET"),e.push("Q"),e.push("EMC");var a=W(t);return a.scope=t.scope,a.stream=e.join("\n"),a}},Q=function(t,e){var r=0===t.fontSize?t.maxFontSize:t.fontSize,n={text:"",fontSize:""},i=(e=")"==(e="("==e.substr(0,1)?e.substr(1):e).substr(e.length-1)?e.substr(0,e.length-1):e).split(" ");i=t.multiline?i.map((function(t){return t.split("\n")})):i.map((function(t){return[t]}));var a=r,o=Lt.internal.getHeight(t)||0;o=o<0?-o:o;var s=Lt.internal.getWidth(t)||0;s=s<0?-s:s;var c=function(e,r,n){if(e+1<i.length){var a=r+" "+i[e+1][0];return tt(a,t,n).width<=s-4}return!1};a++;t:for(;a>0;){e="",a--;var u,l,h=tt("3",t,a).height,f=t.multiline?o-a:(o-h)/2,d=f+=2,p=0,g=0,m=0;if(a<=0){e="(...) Tj\n",e+="% Width of Text: "+tt(e,t,a=12).width+", FieldWidth:"+s+"\n";break}for(var v="",b=0,y=0;y<i.length;y++)if(i.hasOwnProperty(y)){var w=!1;if(1!==i[y].length&&m!==i[y].length-1){if((h+2)*(b+2)+2>o)continue t;v+=i[y][m],w=!0,g=y,y--}else{v=" "==(v+=i[y][m]+" ").substr(v.length-1)?v.substr(0,v.length-1):v;var N=parseInt(y),L=c(N,v,a),A=y>=i.length-1;if(L&&!A){v+=" ",m=0;continue}if(L||A){if(A)g=N;else if(t.multiline&&(h+2)*(b+2)+2>o)continue t}else{if(!t.multiline)continue t;if((h+2)*(b+2)+2>o)continue t;g=N}}for(var x="",S=p;S<=g;S++){var _=i[S];if(t.multiline){if(S===g){x+=_[m]+" ",m=(m+1)%_.length;continue}if(S===p){x+=_[_.length-1]+" ";continue}}x+=_[0]+" "}switch(x=" "==x.substr(x.length-1)?x.substr(0,x.length-1):x,l=tt(x,t,a).width,t.textAlign){case"right":u=s-l-2;break;case"center":u=(s-l)/2;break;case"left":default:u=2}e+=T(u)+" "+T(d)+" Td\n",e+="("+D(x)+") Tj\n",e+=-T(u)+" 0 Td\n",d=-(a+2),l=0,p=w?g:g+1,b++,v=""}else;break}return n.text=e,n.fontSize=a,n},tt=function(t,e,r){var n=e.scope.internal.getFont(e.fontName,e.fontStyle),i=e.scope.getStringUnitWidth(t,{font:n,fontSize:parseFloat(r),charSpace:0})*parseFloat(r);return{height:e.scope.getStringUnitWidth("3",{font:n,fontSize:parseFloat(r),charSpace:0})*parseFloat(r)*1.5,width:i}},et={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null,isInitialized:!1},rt=function(t,e){var r={type:"reference",object:t};void 0===e.internal.getPageInfo(t.page).pageContext.annotations.find((function(t){return t.type===r.type&&t.object===r.object}))&&e.internal.getPageInfo(t.page).pageContext.annotations.push(r)},nt=function(t,r){for(var n in t)if(t.hasOwnProperty(n)){var i=n,a=t[n];r.internal.newObjectDeferredBegin(a.objId,!0),"object"===e(a)&&"function"==typeof a.putStream&&a.putStream(),delete t[i]}},it=function(t,r){if(r.scope=t,void 0!==t.internal&&(void 0===t.internal.acroformPlugin||!1===t.internal.acroformPlugin.isInitialized)){if(lt.FieldNum=0,t.internal.acroformPlugin=JSON.parse(JSON.stringify(et)),t.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error("Exception while creating AcroformDictionary");q=t.internal.scaleFactor,t.internal.acroformPlugin.acroFormDictionaryRoot=new ut,t.internal.acroformPlugin.acroFormDictionaryRoot.scope=t,t.internal.acroformPlugin.acroFormDictionaryRoot._eventID=t.internal.events.subscribe("postPutResources",(function(){!function(t){t.internal.events.unsubscribe(t.internal.acroformPlugin.acroFormDictionaryRoot._eventID),delete t.internal.acroformPlugin.acroFormDictionaryRoot._eventID,t.internal.acroformPlugin.printedOut=!0}(t)})),t.internal.events.subscribe("buildDocument",(function(){!function(t){t.internal.acroformPlugin.acroFormDictionaryRoot.objId=void 0;var e=t.internal.acroformPlugin.acroFormDictionaryRoot.Fields;for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];n.objId=void 0,n.hasAnnotation&&rt(n,t)}}(t)})),t.internal.events.subscribe("putCatalog",(function(){!function(t){if(void 0===t.internal.acroformPlugin.acroFormDictionaryRoot)throw new Error("putCatalogCallback: Root missing.");t.internal.write("/AcroForm "+t.internal.acroformPlugin.acroFormDictionaryRoot.objId+" 0 R")}(t)})),t.internal.events.subscribe("postPutPages",(function(r){!function(t,r){var n=!t;for(var i in t||(r.internal.newObjectDeferredBegin(r.internal.acroformPlugin.acroFormDictionaryRoot.objId,!0),r.internal.acroformPlugin.acroFormDictionaryRoot.putStream()),t=t||r.internal.acroformPlugin.acroFormDictionaryRoot.Kids)if(t.hasOwnProperty(i)){var a=t[i],o=[],s=a.Rect;if(a.Rect&&(a.Rect=Z(a.Rect,r)),r.internal.newObjectDeferredBegin(a.objId,!0),a.DA=Lt.createDefaultAppearanceStream(a),"object"===e(a)&&"function"==typeof a.getKeyValueListForStream&&(o=a.getKeyValueListForStream()),a.Rect=s,a.hasAppearanceStream&&!a.appearanceStreamContent){var c=$(a);o.push({key:"AP",value:"<</N "+c+">>"}),r.internal.acroformPlugin.xForms.push(c)}if(a.appearanceStreamContent){var u="";for(var l in a.appearanceStreamContent)if(a.appearanceStreamContent.hasOwnProperty(l)){var h=a.appearanceStreamContent[l];if(u+="/"+l+" ",u+="<<",Object.keys(h).length>=1||Array.isArray(h)){for(var i in h)if(h.hasOwnProperty(i)){var f=h[i];"function"==typeof f&&(f=f.call(r,a)),u+="/"+i+" "+f+" ",r.internal.acroformPlugin.xForms.indexOf(f)>=0||r.internal.acroformPlugin.xForms.push(f)}}else"function"==typeof(f=h)&&(f=f.call(r,a)),u+="/"+i+" "+f,r.internal.acroformPlugin.xForms.indexOf(f)>=0||r.internal.acroformPlugin.xForms.push(f);u+=">>"}o.push({key:"AP",value:"<<\n"+u+">>"})}r.internal.putStream({additionalKeyValues:o,objectId:a.objId}),r.internal.out("endobj")}n&&nt(r.internal.acroformPlugin.xForms,r)}(r,t)})),t.internal.acroformPlugin.isInitialized=!0}},at=E.__acroform__.arrayToPdfArray=function(t,r,n){var i=function(t){return t};if(Array.isArray(t)){for(var a="[",o=0;o<t.length;o++)switch(0!==o&&(a+=" "),e(t[o])){case"boolean":case"number":case"object":a+=t[o].toString();break;case"string":"/"!==t[o].substr(0,1)?(void 0!==r&&n&&(i=n.internal.getEncryptor(r)),a+="("+D(i(t[o].toString()))+")"):a+=t[o].toString()}return a+="]"}throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray")};var ot=function(t,e,r){var n=function(t){return t};return void 0!==e&&r&&(n=r.internal.getEncryptor(e)),(t=t||"").toString(),t="("+D(n(t))+")"},st=function(){this._objId=void 0,this._scope=void 0,Object.defineProperty(this,"objId",{get:function(){if(void 0===this._objId){if(void 0===this.scope)return;this._objId=this.scope.internal.newObjectDeferred()}return this._objId},set:function(t){this._objId=t}}),Object.defineProperty(this,"scope",{value:this._scope,writable:!0})};st.prototype.toString=function(){return this.objId+" 0 R"},st.prototype.putStream=function(){var t=this.getKeyValueListForStream();this.scope.internal.putStream({data:this.stream,additionalKeyValues:t,objectId:this.objId}),this.scope.internal.out("endobj")},st.prototype.getKeyValueListForStream=function(){var t=[],e=Object.getOwnPropertyNames(this).filter((function(t){return"content"!=t&&"appearanceStreamContent"!=t&&"scope"!=t&&"objId"!=t&&"_"!=t.substring(0,1)}));for(var r in e)if(!1===Object.getOwnPropertyDescriptor(this,e[r]).configurable){var n=e[r],i=this[n];i&&(Array.isArray(i)?t.push({key:n,value:at(i,this.objId,this.scope)}):i instanceof st?(i.scope=this.scope,t.push({key:n,value:i.objId+" 0 R"})):"function"!=typeof i&&t.push({key:n,value:i}))}return t};var ct=function(){st.call(this),Object.defineProperty(this,"Type",{value:"/XObject",configurable:!1,writable:!0}),Object.defineProperty(this,"Subtype",{value:"/Form",configurable:!1,writable:!0}),Object.defineProperty(this,"FormType",{value:1,configurable:!1,writable:!0});var t,e=[];Object.defineProperty(this,"BBox",{configurable:!1,get:function(){return e},set:function(t){e=t}}),Object.defineProperty(this,"Resources",{value:"2 0 R",configurable:!1,writable:!0}),Object.defineProperty(this,"stream",{enumerable:!1,configurable:!0,set:function(e){t=e.trim()},get:function(){return t||null}})};z(ct,st);var ut=function(){st.call(this);var t,e=[];Object.defineProperty(this,"Kids",{enumerable:!1,configurable:!0,get:function(){return e.length>0?e:void 0}}),Object.defineProperty(this,"Fields",{enumerable:!1,configurable:!1,get:function(){return e}}),Object.defineProperty(this,"DA",{enumerable:!1,configurable:!1,get:function(){if(t){var e=function(t){return t};return this.scope&&(e=this.scope.internal.getEncryptor(this.objId)),"("+D(e(t))+")"}},set:function(e){t=e}})};z(ut,st);var lt=function t(){st.call(this);var e=4;Object.defineProperty(this,"F",{enumerable:!1,configurable:!1,get:function(){return e},set:function(t){if(isNaN(t))throw new Error('Invalid value "'+t+'" for attribute F supplied.');e=t}}),Object.defineProperty(this,"showWhenPrinted",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(e,3))},set:function(t){!0===Boolean(t)?this.F=X(e,3):this.F=K(e,3)}});var r=0;Object.defineProperty(this,"Ff",{enumerable:!1,configurable:!1,get:function(){return r},set:function(t){if(isNaN(t))throw new Error('Invalid value "'+t+'" for attribute Ff supplied.');r=t}});var n=[];Object.defineProperty(this,"Rect",{enumerable:!1,configurable:!1,get:function(){if(0!==n.length)return n},set:function(t){n=void 0!==t?t:[]}}),Object.defineProperty(this,"x",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[0])?0:n[0]},set:function(t){n[0]=t}}),Object.defineProperty(this,"y",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[1])?0:n[1]},set:function(t){n[1]=t}}),Object.defineProperty(this,"width",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[2])?0:n[2]},set:function(t){n[2]=t}}),Object.defineProperty(this,"height",{enumerable:!0,configurable:!0,get:function(){return!n||isNaN(n[3])?0:n[3]},set:function(t){n[3]=t}});var i="";Object.defineProperty(this,"FT",{enumerable:!0,configurable:!1,get:function(){return i},set:function(t){switch(t){case"/Btn":case"/Tx":case"/Ch":case"/Sig":i=t;break;default:throw new Error('Invalid value "'+t+'" for attribute FT supplied.')}}});var a=null;Object.defineProperty(this,"T",{enumerable:!0,configurable:!1,get:function(){if(!a||a.length<1){if(this instanceof bt)return;a="FieldObject"+t.FieldNum++}var e=function(t){return t};return this.scope&&(e=this.scope.internal.getEncryptor(this.objId)),"("+D(e(a))+")"},set:function(t){a=t.toString()}}),Object.defineProperty(this,"fieldName",{configurable:!0,enumerable:!0,get:function(){return a},set:function(t){a=t}});var o="helvetica";Object.defineProperty(this,"fontName",{enumerable:!0,configurable:!0,get:function(){return o},set:function(t){o=t}});var s="normal";Object.defineProperty(this,"fontStyle",{enumerable:!0,configurable:!0,get:function(){return s},set:function(t){s=t}});var c=0;Object.defineProperty(this,"fontSize",{enumerable:!0,configurable:!0,get:function(){return c},set:function(t){c=t}});var u=void 0;Object.defineProperty(this,"maxFontSize",{enumerable:!0,configurable:!0,get:function(){return void 0===u?50/q:u},set:function(t){u=t}});var l="black";Object.defineProperty(this,"color",{enumerable:!0,configurable:!0,get:function(){return l},set:function(t){l=t}});var h="/F1 0 Tf 0 g";Object.defineProperty(this,"DA",{enumerable:!0,configurable:!1,get:function(){if(!(!h||this instanceof bt||this instanceof wt))return ot(h,this.objId,this.scope)},set:function(t){t=t.toString(),h=t}});var f=null;Object.defineProperty(this,"DV",{enumerable:!1,configurable:!1,get:function(){if(f)return this instanceof gt==!1?ot(f,this.objId,this.scope):f},set:function(t){t=t.toString(),f=this instanceof gt==!1?"("===t.substr(0,1)?R(t.substr(1,t.length-2)):R(t):t}}),Object.defineProperty(this,"defaultValue",{enumerable:!0,configurable:!0,get:function(){return this instanceof gt==!0?R(f.substr(1,f.length-1)):f},set:function(t){t=t.toString(),f=this instanceof gt==!0?"/"+t:t}});var d=null;Object.defineProperty(this,"_V",{enumerable:!1,configurable:!1,get:function(){if(d)return d},set:function(t){this.V=t}}),Object.defineProperty(this,"V",{enumerable:!1,configurable:!1,get:function(){if(d)return this instanceof gt==!1?ot(d,this.objId,this.scope):d},set:function(t){t=t.toString(),d=this instanceof gt==!1?"("===t.substr(0,1)?R(t.substr(1,t.length-2)):R(t):t}}),Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,get:function(){return this instanceof gt==!0?R(d.substr(1,d.length-1)):d},set:function(t){t=t.toString(),d=this instanceof gt==!0?"/"+t:t}}),Object.defineProperty(this,"hasAnnotation",{enumerable:!0,configurable:!0,get:function(){return this.Rect}}),Object.defineProperty(this,"Type",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?"/Annot":null}}),Object.defineProperty(this,"Subtype",{enumerable:!0,configurable:!1,get:function(){return this.hasAnnotation?"/Widget":null}});var p,g=!1;Object.defineProperty(this,"hasAppearanceStream",{enumerable:!0,configurable:!0,get:function(){return g},set:function(t){t=Boolean(t),g=t}}),Object.defineProperty(this,"page",{enumerable:!0,configurable:!0,get:function(){if(p)return p},set:function(t){p=t}}),Object.defineProperty(this,"readOnly",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,1))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,1):this.Ff=K(this.Ff,1)}}),Object.defineProperty(this,"required",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,2))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,2):this.Ff=K(this.Ff,2)}}),Object.defineProperty(this,"noExport",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,3))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,3):this.Ff=K(this.Ff,3)}});var m=null;Object.defineProperty(this,"Q",{enumerable:!0,configurable:!1,get:function(){if(null!==m)return m},set:function(t){if(-1===[0,1,2].indexOf(t))throw new Error('Invalid value "'+t+'" for attribute Q supplied.');m=t}}),Object.defineProperty(this,"textAlign",{get:function(){var t;switch(m){case 0:default:t="left";break;case 1:t="center";break;case 2:t="right"}return t},configurable:!0,enumerable:!0,set:function(t){switch(t){case"right":case 2:m=2;break;case"center":case 1:m=1;break;case"left":case 0:default:m=0}}})};z(lt,st);var ht=function(){lt.call(this),this.FT="/Ch",this.V="()",this.fontName="zapfdingbats";var t=0;Object.defineProperty(this,"TI",{enumerable:!0,configurable:!1,get:function(){return t},set:function(e){t=e}}),Object.defineProperty(this,"topIndex",{enumerable:!0,configurable:!0,get:function(){return t},set:function(e){t=e}});var e=[];Object.defineProperty(this,"Opt",{enumerable:!0,configurable:!1,get:function(){return at(e,this.objId,this.scope)},set:function(t){var r,n;n=[],"string"==typeof(r=t)&&(n=function(t,e,r){r||(r=1);for(var n,i=[];n=e.exec(t);)i.push(n[r]);return i}(r,/\((.*?)\)/g)),e=n}}),this.getOptions=function(){return e},this.setOptions=function(t){e=t,this.sort&&e.sort()},this.addOption=function(t){t=(t=t||"").toString(),e.push(t),this.sort&&e.sort()},this.removeOption=function(t,r){for(r=r||!1,t=(t=t||"").toString();-1!==e.indexOf(t)&&(e.splice(e.indexOf(t),1),!1!==r););},Object.defineProperty(this,"combo",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,18))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,18):this.Ff=K(this.Ff,18)}}),Object.defineProperty(this,"edit",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,19))},set:function(t){!0===this.combo&&(!0===Boolean(t)?this.Ff=X(this.Ff,19):this.Ff=K(this.Ff,19))}}),Object.defineProperty(this,"sort",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,20))},set:function(t){!0===Boolean(t)?(this.Ff=X(this.Ff,20),e.sort()):this.Ff=K(this.Ff,20)}}),Object.defineProperty(this,"multiSelect",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,22))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,22):this.Ff=K(this.Ff,22)}}),Object.defineProperty(this,"doNotSpellCheck",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,23):this.Ff=K(this.Ff,23)}}),Object.defineProperty(this,"commitOnSelChange",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,27))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,27):this.Ff=K(this.Ff,27)}}),this.hasAppearanceStream=!1};z(ht,lt);var ft=function(){ht.call(this),this.fontName="helvetica",this.combo=!1};z(ft,ht);var dt=function(){ft.call(this),this.combo=!0};z(dt,ft);var pt=function(){dt.call(this),this.edit=!0};z(pt,dt);var gt=function(){lt.call(this),this.FT="/Btn",Object.defineProperty(this,"noToggleToOff",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,15))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,15):this.Ff=K(this.Ff,15)}}),Object.defineProperty(this,"radio",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,16))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,16):this.Ff=K(this.Ff,16)}}),Object.defineProperty(this,"pushButton",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,17))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,17):this.Ff=K(this.Ff,17)}}),Object.defineProperty(this,"radioIsUnison",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,26):this.Ff=K(this.Ff,26)}});var t,r={};Object.defineProperty(this,"MK",{enumerable:!1,configurable:!1,get:function(){var t=function(t){return t};if(this.scope&&(t=this.scope.internal.getEncryptor(this.objId)),0!==Object.keys(r).length){var e,n=[];for(e in n.push("<<"),r)n.push("/"+e+" ("+D(t(r[e]))+")");return n.push(">>"),n.join("\n")}},set:function(t){"object"===e(t)&&(r=t)}}),Object.defineProperty(this,"caption",{enumerable:!0,configurable:!0,get:function(){return r.CA||""},set:function(t){"string"==typeof t&&(r.CA=t)}}),Object.defineProperty(this,"AS",{enumerable:!1,configurable:!1,get:function(){return t},set:function(e){t=e}}),Object.defineProperty(this,"appearanceState",{enumerable:!0,configurable:!0,get:function(){return t.substr(1,t.length-1)},set:function(e){t="/"+e}})};z(gt,lt);var mt=function(){gt.call(this),this.pushButton=!0};z(mt,gt);var vt=function(){gt.call(this),this.radio=!0,this.pushButton=!1;var t=[];Object.defineProperty(this,"Kids",{enumerable:!0,configurable:!1,get:function(){return t},set:function(e){t=void 0!==e?e:[]}})};z(vt,gt);var bt=function(){var t,r;lt.call(this),Object.defineProperty(this,"Parent",{enumerable:!1,configurable:!1,get:function(){return t},set:function(e){t=e}}),Object.defineProperty(this,"optionName",{enumerable:!1,configurable:!0,get:function(){return r},set:function(t){r=t}});var n,i={};Object.defineProperty(this,"MK",{enumerable:!1,configurable:!1,get:function(){var t=function(t){return t};this.scope&&(t=this.scope.internal.getEncryptor(this.objId));var e,r=[];for(e in r.push("<<"),i)r.push("/"+e+" ("+D(t(i[e]))+")");return r.push(">>"),r.join("\n")},set:function(t){"object"===e(t)&&(i=t)}}),Object.defineProperty(this,"caption",{enumerable:!0,configurable:!0,get:function(){return i.CA||""},set:function(t){"string"==typeof t&&(i.CA=t)}}),Object.defineProperty(this,"AS",{enumerable:!1,configurable:!1,get:function(){return n},set:function(t){n=t}}),Object.defineProperty(this,"appearanceState",{enumerable:!0,configurable:!0,get:function(){return n.substr(1,n.length-1)},set:function(t){n="/"+t}}),this.caption="l",this.appearanceState="Off",this._AppearanceType=Lt.RadioButton.Circle,this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(this.optionName)};z(bt,lt),vt.prototype.setAppearance=function(t){if(!("createAppearanceStream"in t)||!("getCA"in t))throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");for(var e in this.Kids)if(this.Kids.hasOwnProperty(e)){var r=this.Kids[e];r.appearanceStreamContent=t.createAppearanceStream(r.optionName),r.caption=t.getCA()}},vt.prototype.createOption=function(t){var e=new bt;return e.Parent=this,e.optionName=t,this.Kids.push(e),At.call(this.scope,e),e};var yt=function(){gt.call(this),this.fontName="zapfdingbats",this.caption="3",this.appearanceState="On",this.value="On",this.textAlign="center",this.appearanceStreamContent=Lt.CheckBox.createAppearanceStream()};z(yt,gt);var wt=function(){lt.call(this),this.FT="/Tx",Object.defineProperty(this,"multiline",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,13))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,13):this.Ff=K(this.Ff,13)}}),Object.defineProperty(this,"fileSelect",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,21))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,21):this.Ff=K(this.Ff,21)}}),Object.defineProperty(this,"doNotSpellCheck",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,23))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,23):this.Ff=K(this.Ff,23)}}),Object.defineProperty(this,"doNotScroll",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,24))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,24):this.Ff=K(this.Ff,24)}}),Object.defineProperty(this,"comb",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,25))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,25):this.Ff=K(this.Ff,25)}}),Object.defineProperty(this,"richText",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,26))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,26):this.Ff=K(this.Ff,26)}});var t=null;Object.defineProperty(this,"MaxLen",{enumerable:!0,configurable:!1,get:function(){return t},set:function(e){t=e}}),Object.defineProperty(this,"maxLength",{enumerable:!0,configurable:!0,get:function(){return t},set:function(e){Number.isInteger(e)&&(t=e)}}),Object.defineProperty(this,"hasAppearanceStream",{enumerable:!0,configurable:!0,get:function(){return this.V||this.DV}})};z(wt,lt);var Nt=function(){wt.call(this),Object.defineProperty(this,"password",{enumerable:!0,configurable:!0,get:function(){return Boolean(J(this.Ff,14))},set:function(t){!0===Boolean(t)?this.Ff=X(this.Ff,14):this.Ff=K(this.Ff,14)}}),this.password=!0};z(Nt,wt);var Lt={CheckBox:{createAppearanceStream:function(){return{N:{On:Lt.CheckBox.YesNormal},D:{On:Lt.CheckBox.YesPushDown,Off:Lt.CheckBox.OffPushDown}}},YesPushDown:function(t){var e=W(t);e.scope=t.scope;var r=[],n=t.scope.internal.getFont(t.fontName,t.fontStyle).id,i=t.scope.__private__.encodeColorString(t.color),a=Q(t,t.caption);return r.push("0.749023 g"),r.push("0 0 "+T(Lt.internal.getWidth(t))+" "+T(Lt.internal.getHeight(t))+" re"),r.push("f"),r.push("BMC"),r.push("q"),r.push("0 0 1 rg"),r.push("/"+n+" "+T(a.fontSize)+" Tf "+i),r.push("BT"),r.push(a.text),r.push("ET"),r.push("Q"),r.push("EMC"),e.stream=r.join("\n"),e},YesNormal:function(t){var e=W(t);e.scope=t.scope;var r=t.scope.internal.getFont(t.fontName,t.fontStyle).id,n=t.scope.__private__.encodeColorString(t.color),i=[],a=Lt.internal.getHeight(t),o=Lt.internal.getWidth(t),s=Q(t,t.caption);return i.push("1 g"),i.push("0 0 "+T(o)+" "+T(a)+" re"),i.push("f"),i.push("q"),i.push("0 0 1 rg"),i.push("0 0 "+T(o-1)+" "+T(a-1)+" re"),i.push("W"),i.push("n"),i.push("0 g"),i.push("BT"),i.push("/"+r+" "+T(s.fontSize)+" Tf "+n),i.push(s.text),i.push("ET"),i.push("Q"),e.stream=i.join("\n"),e},OffPushDown:function(t){var e=W(t);e.scope=t.scope;var r=[];return r.push("0.749023 g"),r.push("0 0 "+T(Lt.internal.getWidth(t))+" "+T(Lt.internal.getHeight(t))+" re"),r.push("f"),e.stream=r.join("\n"),e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:Lt.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=Lt.RadioButton.Circle.YesNormal,e.D[t]=Lt.RadioButton.Circle.YesPushDown,e},getCA:function(){return"l"},YesNormal:function(t){var e=W(t);e.scope=t.scope;var r=[],n=Lt.internal.getWidth(t)<=Lt.internal.getHeight(t)?Lt.internal.getWidth(t)/4:Lt.internal.getHeight(t)/4;n=Number((.9*n).toFixed(5));var i=Lt.internal.Bezier_C,a=Number((n*i).toFixed(5));return r.push("q"),r.push("1 0 0 1 "+U(Lt.internal.getWidth(t)/2)+" "+U(Lt.internal.getHeight(t)/2)+" cm"),r.push(n+" 0 m"),r.push(n+" "+a+" "+a+" "+n+" 0 "+n+" c"),r.push("-"+a+" "+n+" -"+n+" "+a+" -"+n+" 0 c"),r.push("-"+n+" -"+a+" -"+a+" -"+n+" 0 -"+n+" c"),r.push(a+" -"+n+" "+n+" -"+a+" "+n+" 0 c"),r.push("f"),r.push("Q"),e.stream=r.join("\n"),e},YesPushDown:function(t){var e=W(t);e.scope=t.scope;var r=[],n=Lt.internal.getWidth(t)<=Lt.internal.getHeight(t)?Lt.internal.getWidth(t)/4:Lt.internal.getHeight(t)/4;n=Number((.9*n).toFixed(5));var i=Number((2*n).toFixed(5)),a=Number((i*Lt.internal.Bezier_C).toFixed(5)),o=Number((n*Lt.internal.Bezier_C).toFixed(5));return r.push("0.749023 g"),r.push("q"),r.push("1 0 0 1 "+U(Lt.internal.getWidth(t)/2)+" "+U(Lt.internal.getHeight(t)/2)+" cm"),r.push(i+" 0 m"),r.push(i+" "+a+" "+a+" "+i+" 0 "+i+" c"),r.push("-"+a+" "+i+" -"+i+" "+a+" -"+i+" 0 c"),r.push("-"+i+" -"+a+" -"+a+" -"+i+" 0 -"+i+" c"),r.push(a+" -"+i+" "+i+" -"+a+" "+i+" 0 c"),r.push("f"),r.push("Q"),r.push("0 g"),r.push("q"),r.push("1 0 0 1 "+U(Lt.internal.getWidth(t)/2)+" "+U(Lt.internal.getHeight(t)/2)+" cm"),r.push(n+" 0 m"),r.push(n+" "+o+" "+o+" "+n+" 0 "+n+" c"),r.push("-"+o+" "+n+" -"+n+" "+o+" -"+n+" 0 c"),r.push("-"+n+" -"+o+" -"+o+" -"+n+" 0 -"+n+" c"),r.push(o+" -"+n+" "+n+" -"+o+" "+n+" 0 c"),r.push("f"),r.push("Q"),e.stream=r.join("\n"),e},OffPushDown:function(t){var e=W(t);e.scope=t.scope;var r=[],n=Lt.internal.getWidth(t)<=Lt.internal.getHeight(t)?Lt.internal.getWidth(t)/4:Lt.internal.getHeight(t)/4;n=Number((.9*n).toFixed(5));var i=Number((2*n).toFixed(5)),a=Number((i*Lt.internal.Bezier_C).toFixed(5));return r.push("0.749023 g"),r.push("q"),r.push("1 0 0 1 "+U(Lt.internal.getWidth(t)/2)+" "+U(Lt.internal.getHeight(t)/2)+" cm"),r.push(i+" 0 m"),r.push(i+" "+a+" "+a+" "+i+" 0 "+i+" c"),r.push("-"+a+" "+i+" -"+i+" "+a+" -"+i+" 0 c"),r.push("-"+i+" -"+a+" -"+a+" -"+i+" 0 -"+i+" c"),r.push(a+" -"+i+" "+i+" -"+a+" "+i+" 0 c"),r.push("f"),r.push("Q"),e.stream=r.join("\n"),e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:Lt.RadioButton.Cross.OffPushDown},N:{}};return e.N[t]=Lt.RadioButton.Cross.YesNormal,e.D[t]=Lt.RadioButton.Cross.YesPushDown,e},getCA:function(){return"8"},YesNormal:function(t){var e=W(t);e.scope=t.scope;var r=[],n=Lt.internal.calculateCross(t);return r.push("q"),r.push("1 1 "+T(Lt.internal.getWidth(t)-2)+" "+T(Lt.internal.getHeight(t)-2)+" re"),r.push("W"),r.push("n"),r.push(T(n.x1.x)+" "+T(n.x1.y)+" m"),r.push(T(n.x2.x)+" "+T(n.x2.y)+" l"),r.push(T(n.x4.x)+" "+T(n.x4.y)+" m"),r.push(T(n.x3.x)+" "+T(n.x3.y)+" l"),r.push("s"),r.push("Q"),e.stream=r.join("\n"),e},YesPushDown:function(t){var e=W(t);e.scope=t.scope;var r=Lt.internal.calculateCross(t),n=[];return n.push("0.749023 g"),n.push("0 0 "+T(Lt.internal.getWidth(t))+" "+T(Lt.internal.getHeight(t))+" re"),n.push("f"),n.push("q"),n.push("1 1 "+T(Lt.internal.getWidth(t)-2)+" "+T(Lt.internal.getHeight(t)-2)+" re"),n.push("W"),n.push("n"),n.push(T(r.x1.x)+" "+T(r.x1.y)+" m"),n.push(T(r.x2.x)+" "+T(r.x2.y)+" l"),n.push(T(r.x4.x)+" "+T(r.x4.y)+" m"),n.push(T(r.x3.x)+" "+T(r.x3.y)+" l"),n.push("s"),n.push("Q"),e.stream=n.join("\n"),e},OffPushDown:function(t){var e=W(t);e.scope=t.scope;var r=[];return r.push("0.749023 g"),r.push("0 0 "+T(Lt.internal.getWidth(t))+" "+T(Lt.internal.getHeight(t))+" re"),r.push("f"),e.stream=r.join("\n"),e}}},createDefaultAppearanceStream:function(t){var e=t.scope.internal.getFont(t.fontName,t.fontStyle).id,r=t.scope.__private__.encodeColorString(t.color);return"/"+e+" "+t.fontSize+" Tf "+r}};Lt.internal={Bezier_C:.551915024494,calculateCross:function(t){var e=Lt.internal.getWidth(t),r=Lt.internal.getHeight(t),n=Math.min(e,r);return{x1:{x:(e-n)/2,y:(r-n)/2+n},x2:{x:(e-n)/2+n,y:(r-n)/2},x3:{x:(e-n)/2,y:(r-n)/2},x4:{x:(e-n)/2+n,y:(r-n)/2+n}}}},Lt.internal.getWidth=function(t){var r=0;return"object"===e(t)&&(r=H(t.Rect[2])),r},Lt.internal.getHeight=function(t){var r=0;return"object"===e(t)&&(r=H(t.Rect[3])),r};var At=E.addField=function(t){if(it(this,t),!(t instanceof lt))throw new Error("Invalid argument passed to jsPDF.addField.");var e;return(e=t).scope.internal.acroformPlugin.printedOut&&(e.scope.internal.acroformPlugin.printedOut=!1,e.scope.internal.acroformPlugin.acroFormDictionaryRoot=null),e.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e),t.page=t.scope.internal.getCurrentPageInfo().pageNumber,this};E.AcroFormChoiceField=ht,E.AcroFormListBox=ft,E.AcroFormComboBox=dt,E.AcroFormEditBox=pt,E.AcroFormButton=gt,E.AcroFormPushButton=mt,E.AcroFormRadioButton=vt,E.AcroFormCheckBox=yt,E.AcroFormTextField=wt,E.AcroFormPasswordField=Nt,E.AcroFormAppearance=Lt,E.AcroForm={ChoiceField:ht,ListBox:ft,ComboBox:dt,EditBox:pt,Button:gt,PushButton:mt,RadioButton:vt,CheckBox:yt,TextField:wt,PasswordField:Nt,Appearance:Lt},M.AcroForm={ChoiceField:ht,ListBox:ft,ComboBox:dt,EditBox:pt,Button:gt,PushButton:mt,RadioButton:vt,CheckBox:yt,TextField:wt,PasswordField:Nt,Appearance:Lt};var xt=M.AcroForm;function St(t){return t.reduce((function(t,e,r){return t[e]=r,t}),{})}!function(t){t.__addimage__={};var r="UNKNOWN",n={PNG:[[137,80,78,71]],TIFF:[[77,77,0,42],[73,73,42,0]],JPEG:[[255,216,255,224,void 0,void 0,74,70,73,70,0],[255,216,255,225,void 0,void 0,69,120,105,102,0,0],[255,216,255,219],[255,216,255,238]],JPEG2000:[[0,0,0,12,106,80,32,32]],GIF87a:[[71,73,70,56,55,97]],GIF89a:[[71,73,70,56,57,97]],WEBP:[[82,73,70,70,void 0,void 0,void 0,void 0,87,69,66,80]],BMP:[[66,77],[66,65],[67,73],[67,80],[73,67],[80,84]]},i=t.__addimage__.getImageFileTypeByImageData=function(t,e){var i,a,o,s,c,u=r;if("RGBA"===(e=e||r)||void 0!==t.data&&t.data instanceof Uint8ClampedArray&&"height"in t&&"width"in t)return"RGBA";if(x(t))for(c in n)for(o=n[c],i=0;i<o.length;i+=1){for(s=!0,a=0;a<o[i].length;a+=1)if(void 0!==o[i][a]&&o[i][a]!==t[a]){s=!1;break}if(!0===s){u=c;break}}else for(c in n)for(o=n[c],i=0;i<o.length;i+=1){for(s=!0,a=0;a<o[i].length;a+=1)if(void 0!==o[i][a]&&o[i][a]!==t.charCodeAt(a)){s=!1;break}if(!0===s){u=c;break}}return u===r&&e!==r&&(u=e),u},a=function t(e){for(var r=this.internal.write,n=this.internal.putStream,i=(0,this.internal.getFilters)();-1!==i.indexOf("FlateEncode");)i.splice(i.indexOf("FlateEncode"),1);e.objectId=this.internal.newObject();var a=[];if(a.push({key:"Type",value:"/XObject"}),a.push({key:"Subtype",value:"/Image"}),a.push({key:"Width",value:e.width}),a.push({key:"Height",value:e.height}),e.colorSpace===b.INDEXED?a.push({key:"ColorSpace",value:"[/Indexed /DeviceRGB "+(e.palette.length/3-1)+" "+("sMask"in e&&void 0!==e.sMask?e.objectId+2:e.objectId+1)+" 0 R]"}):(a.push({key:"ColorSpace",value:"/"+e.colorSpace}),e.colorSpace===b.DEVICE_CMYK&&a.push({key:"Decode",value:"[1 0 1 0 1 0 1 0]"})),a.push({key:"BitsPerComponent",value:e.bitsPerComponent}),"decodeParameters"in e&&void 0!==e.decodeParameters&&a.push({key:"DecodeParms",value:"<<"+e.decodeParameters+">>"}),"transparency"in e&&Array.isArray(e.transparency)){for(var o="",s=0,c=e.transparency.length;s<c;s++)o+=e.transparency[s]+" "+e.transparency[s]+" ";a.push({key:"Mask",value:"["+o+"]"})}void 0!==e.sMask&&a.push({key:"SMask",value:e.objectId+1+" 0 R"});var u=void 0!==e.filter?["/"+e.filter]:void 0;if(n({data:e.data,additionalKeyValues:a,alreadyAppliedFilters:u,objectId:e.objectId}),r("endobj"),"sMask"in e&&void 0!==e.sMask){var l="/Predictor "+e.predictor+" /Colors 1 /BitsPerComponent "+e.bitsPerComponent+" /Columns "+e.width,h={width:e.width,height:e.height,colorSpace:"DeviceGray",bitsPerComponent:e.bitsPerComponent,decodeParameters:l,data:e.sMask};"filter"in e&&(h.filter=e.filter),t.call(this,h)}if(e.colorSpace===b.INDEXED){var f=this.internal.newObject();n({data:_(new Uint8Array(e.palette)),objectId:f}),r("endobj")}},o=function(){var t=this.internal.collections.addImage_images;for(var e in t)a.call(this,t[e])},s=function(){var t,e=this.internal.collections.addImage_images,r=this.internal.write;for(var n in e)r("/I"+(t=e[n]).index,t.objectId,"0","R")},u=function(){this.internal.collections.addImage_images||(this.internal.collections.addImage_images={},this.internal.events.subscribe("putResources",o),this.internal.events.subscribe("putXobjectDict",s))},l=function(){var t=this.internal.collections.addImage_images;return u.call(this),t},h=function(){return Object.keys(this.internal.collections.addImage_images).length},f=function(e){return"function"==typeof t["process"+e.toUpperCase()]},d=function(t){return"object"===e(t)&&1===t.nodeType},p=function(e,r){if("IMG"===e.nodeName&&e.hasAttribute("src")){var n=""+e.getAttribute("src");if(0===n.indexOf("data:image/"))return c(unescape(n).split("base64,").pop());var i=t.loadFile(n,!0);if(void 0!==i)return i}if("CANVAS"===e.nodeName){if(0===e.width||0===e.height)throw new Error("Given canvas must have data. Canvas width: "+e.width+", height: "+e.height);var a;switch(r){case"PNG":a="image/png";break;case"WEBP":a="image/webp";break;case"JPEG":case"JPG":default:a="image/jpeg"}return c(e.toDataURL(a,1).split("base64,").pop())}},g=function(t){var e=this.internal.collections.addImage_images;if(e)for(var r in e)if(t===e[r].alias)return e[r]},m=function(t,e,r){return t||e||(t=-96,e=-96),t<0&&(t=-1*r.width*72/t/this.internal.scaleFactor),e<0&&(e=-1*r.height*72/e/this.internal.scaleFactor),0===t&&(t=e*r.width/r.height),0===e&&(e=t*r.height/r.width),[t,e]},v=function(t,e,r,n,i,a){var o=m.call(this,r,n,i),s=this.internal.getCoordinateString,c=this.internal.getVerticalCoordinateString,u=l.call(this);if(r=o[0],n=o[1],u[i.index]=i,a){a*=Math.PI/180;var h=Math.cos(a),f=Math.sin(a),d=function(t){return t.toFixed(4)},p=[d(h),d(f),d(-1*f),d(h),0,0,"cm"]}this.internal.write("q"),a?(this.internal.write([1,"0","0",1,s(t),c(e+n),"cm"].join(" ")),this.internal.write(p.join(" ")),this.internal.write([s(r),"0","0",s(n),"0","0","cm"].join(" "))):this.internal.write([s(r),"0","0",s(n),s(t),c(e+n),"cm"].join(" ")),this.isAdvancedAPI()&&this.internal.write([1,0,0,-1,0,0,"cm"].join(" ")),this.internal.write("/I"+i.index+" Do"),this.internal.write("Q")},b=t.color_spaces={DEVICE_RGB:"DeviceRGB",DEVICE_GRAY:"DeviceGray",DEVICE_CMYK:"DeviceCMYK",CAL_GREY:"CalGray",CAL_RGB:"CalRGB",LAB:"Lab",ICC_BASED:"ICCBased",INDEXED:"Indexed",PATTERN:"Pattern",SEPARATION:"Separation",DEVICE_N:"DeviceN"};t.decode={DCT_DECODE:"DCTDecode",FLATE_DECODE:"FlateDecode",LZW_DECODE:"LZWDecode",JPX_DECODE:"JPXDecode",JBIG2_DECODE:"JBIG2Decode",ASCII85_DECODE:"ASCII85Decode",ASCII_HEX_DECODE:"ASCIIHexDecode",RUN_LENGTH_DECODE:"RunLengthDecode",CCITT_FAX_DECODE:"CCITTFaxDecode"};var y=t.image_compression={NONE:"NONE",FAST:"FAST",MEDIUM:"MEDIUM",SLOW:"SLOW"},w=t.__addimage__.sHashCode=function(t){var e,r,n=0;if("string"==typeof t)for(r=t.length,e=0;e<r;e++)n=(n<<5)-n+t.charCodeAt(e),n|=0;else if(x(t))for(r=t.byteLength/2,e=0;e<r;e++)n=(n<<5)-n+t[e],n|=0;return n},N=t.__addimage__.validateStringAsBase64=function(t){(t=t||"").toString().trim();var e=!0;return 0===t.length&&(e=!1),t.length%4!=0&&(e=!1),!1===/^[A-Za-z0-9+/]+$/.test(t.substr(0,t.length-2))&&(e=!1),!1===/^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(t.substr(-2))&&(e=!1),e},L=t.__addimage__.extractImageFromDataUrl=function(t){var e=(t=t||"").split("base64,"),r=null;if(2===e.length){var n=/^data:(\w*\/\w*);*(charset=(?!charset=)[\w=-]*)*;*$/.exec(e[0]);Array.isArray(n)&&(r={mimeType:n[1],charset:n[2],data:e[1]})}return r},A=t.__addimage__.supportsArrayBuffer=function(){return"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array};t.__addimage__.isArrayBuffer=function(t){return A()&&t instanceof ArrayBuffer};var x=t.__addimage__.isArrayBufferView=function(t){return A()&&"undefined"!=typeof Uint32Array&&(t instanceof Int8Array||t instanceof Uint8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)},S=t.__addimage__.binaryStringToUint8Array=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++)r[n]=t.charCodeAt(n);return r},_=t.__addimage__.arrayBufferToBinaryString=function(t){for(var e="",r=x(t)?t:new Uint8Array(t),n=0;n<r.length;n+=8192)e+=String.fromCharCode.apply(null,r.subarray(n,n+8192));return e};t.addImage=function(){var t,n,i,a,o,s,c,l,h;if("number"==typeof arguments[1]?(n=r,i=arguments[1],a=arguments[2],o=arguments[3],s=arguments[4],c=arguments[5],l=arguments[6],h=arguments[7]):(n=arguments[1],i=arguments[2],a=arguments[3],o=arguments[4],s=arguments[5],c=arguments[6],l=arguments[7],h=arguments[8]),"object"===e(t=arguments[0])&&!d(t)&&"imageData"in t){var f=t;t=f.imageData,n=f.format||n||r,i=f.x||i||0,a=f.y||a||0,o=f.w||f.width||o,s=f.h||f.height||s,c=f.alias||c,l=f.compression||l,h=f.rotation||f.angle||h}var p=this.internal.getFilters();if(void 0===l&&-1!==p.indexOf("FlateEncode")&&(l="SLOW"),isNaN(i)||isNaN(a))throw new Error("Invalid coordinates passed to jsPDF.addImage");u.call(this);var g=P.call(this,t,n,c,l);return v.call(this,i,a,o,s,g,h),this};var P=function(e,n,a,o){var s,c,u;if("string"==typeof e&&i(e)===r){e=unescape(e);var l=k(e,!1);(""!==l||void 0!==(l=t.loadFile(e,!0)))&&(e=l)}if(d(e)&&(e=p(e,n)),n=i(e,n),!f(n))throw new Error("addImage does not support files of type '"+n+"', please ensure that a plugin for '"+n+"' support is added.");if((null==(u=a)||0===u.length)&&(a=function(t){return"string"==typeof t||x(t)?w(t):x(t.data)?w(t.data):null}(e)),(s=g.call(this,a))||(A()&&(e instanceof Uint8Array||"RGBA"===n||(c=e,e=S(e))),s=this["process"+n.toUpperCase()](e,h.call(this),a,function(e){return e&&"string"==typeof e&&(e=e.toUpperCase()),e in t.image_compression?e:y.NONE}(o),c)),!s)throw new Error("An unknown error occurred whilst processing the image.");return s},k=t.__addimage__.convertBase64ToBinaryString=function(t,e){var r;e="boolean"!=typeof e||e;var n,i="";if("string"==typeof t){n=null!==(r=L(t))?r.data:t;try{i=c(n)}catch(t){if(e)throw N(n)?new Error("atob-Error in jsPDF.convertBase64ToBinaryString "+t.message):new Error("Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString ")}}return i};t.getImageProperties=function(e){var n,a,o="";if(d(e)&&(e=p(e)),"string"==typeof e&&i(e)===r&&(""===(o=k(e,!1))&&(o=t.loadFile(e)||""),e=o),a=i(e),!f(a))throw new Error("addImage does not support files of type '"+a+"', please ensure that a plugin for '"+a+"' support is added.");if(!A()||e instanceof Uint8Array||(e=S(e)),!(n=this["process"+a.toUpperCase()](e)))throw new Error("An unknown error occurred whilst processing the image");return n.fileType=a,n}}(M.API), +/** + * @license + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e=function(t){if(void 0!==t&&""!=t)return!0};M.API.events.push(["addPage",function(t){this.internal.getPageInfo(t.pageNumber).pageContext.annotations=[]}]),t.events.push(["putPage",function(t){for(var r,n,i,a=this.internal.getCoordinateString,o=this.internal.getVerticalCoordinateString,s=this.internal.getPageInfoByObjId(t.objId),c=t.pageContext.annotations,u=!1,l=0;l<c.length&&!u;l++)switch((r=c[l]).type){case"link":(e(r.options.url)||e(r.options.pageNumber))&&(u=!0);break;case"reference":case"text":case"freetext":u=!0}if(0!=u){this.internal.write("/Annots [");for(var h=0;h<c.length;h++){r=c[h];var f=this.internal.pdfEscape,d=this.internal.getEncryptor(t.objId);switch(r.type){case"reference":this.internal.write(" "+r.object.objId+" 0 R ");break;case"text":var p=this.internal.newAdditionalObject(),g=this.internal.newAdditionalObject(),m=this.internal.getEncryptor(p.objId),v=r.title||"Note";i="<</Type /Annot /Subtype /Text "+(n="/Rect ["+a(r.bounds.x)+" "+o(r.bounds.y+r.bounds.h)+" "+a(r.bounds.x+r.bounds.w)+" "+o(r.bounds.y)+"] ")+"/Contents ("+f(m(r.contents))+")",i+=" /Popup "+g.objId+" 0 R",i+=" /P "+s.objId+" 0 R",i+=" /T ("+f(m(v))+") >>",p.content=i;var b=p.objId+" 0 R";i="<</Type /Annot /Subtype /Popup "+(n="/Rect ["+a(r.bounds.x+30)+" "+o(r.bounds.y+r.bounds.h)+" "+a(r.bounds.x+r.bounds.w+30)+" "+o(r.bounds.y)+"] ")+" /Parent "+b,r.open&&(i+=" /Open true"),i+=" >>",g.content=i,this.internal.write(p.objId,"0 R",g.objId,"0 R");break;case"freetext":n="/Rect ["+a(r.bounds.x)+" "+o(r.bounds.y)+" "+a(r.bounds.x+r.bounds.w)+" "+o(r.bounds.y+r.bounds.h)+"] ";var y=r.color||"#000000";i="<</Type /Annot /Subtype /FreeText "+n+"/Contents ("+f(d(r.contents))+")",i+=" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#"+y+")",i+=" /Border [0 0 0]",i+=" >>",this.internal.write(i);break;case"link":if(r.options.name){var w=this.annotations._nameMap[r.options.name];r.options.pageNumber=w.page,r.options.top=w.y}else r.options.top||(r.options.top=0);if(n="/Rect ["+r.finalBounds.x+" "+r.finalBounds.y+" "+r.finalBounds.w+" "+r.finalBounds.h+"] ",i="",r.options.url)i="<</Type /Annot /Subtype /Link "+n+"/Border [0 0 0] /A <</S /URI /URI ("+f(d(r.options.url))+") >>";else if(r.options.pageNumber){switch(i="<</Type /Annot /Subtype /Link "+n+"/Border [0 0 0] /Dest ["+this.internal.getPageInfo(r.options.pageNumber).objId+" 0 R",r.options.magFactor=r.options.magFactor||"XYZ",r.options.magFactor){case"Fit":i+=" /Fit]";break;case"FitH":i+=" /FitH "+r.options.top+"]";break;case"FitV":r.options.left=r.options.left||0,i+=" /FitV "+r.options.left+"]";break;case"XYZ":default:var N=o(r.options.top);r.options.left=r.options.left||0,void 0===r.options.zoom&&(r.options.zoom=0),i+=" /XYZ "+r.options.left+" "+N+" "+r.options.zoom+"]"}}""!=i&&(i+=" >>",this.internal.write(i))}}this.internal.write("]")}}]),t.createAnnotation=function(t){var e=this.internal.getCurrentPageInfo();switch(t.type){case"link":this.link(t.bounds.x,t.bounds.y,t.bounds.w,t.bounds.h,t);break;case"text":case"freetext":e.pageContext.annotations.push(t)}},t.link=function(t,e,r,n,i){var a=this.internal.getCurrentPageInfo(),o=this.internal.getCoordinateString,s=this.internal.getVerticalCoordinateString;a.pageContext.annotations.push({finalBounds:{x:o(t),y:s(e),w:o(t+r),h:s(e+n)},options:i,type:"link"})},t.textWithLink=function(t,e,r,n){var i,a,o=this.getTextWidth(t),s=this.internal.getLineHeight()/this.internal.scaleFactor;if(void 0!==n.maxWidth){a=n.maxWidth;var c=this.splitTextToSize(t,a).length;i=Math.ceil(s*c)}else a=o,i=s;return this.text(t,e,r,n),r+=.2*s,"center"===n.align&&(e-=o/2),"right"===n.align&&(e-=o),this.link(e,r-s,a,i,n),o},t.getTextWidth=function(t){var e=this.internal.getFontSize();return this.getStringUnitWidth(t)*e/this.internal.scaleFactor}}(M.API), +/** + * @license + * Copyright (c) 2017 Aras Abbasi + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e={1569:[65152],1570:[65153,65154],1571:[65155,65156],1572:[65157,65158],1573:[65159,65160],1574:[65161,65162,65163,65164],1575:[65165,65166],1576:[65167,65168,65169,65170],1577:[65171,65172],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194],1584:[65195,65196],1585:[65197,65198],1586:[65199,65200],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262],1609:[65263,65264,64488,64489],1610:[65265,65266,65267,65268],1649:[64336,64337],1655:[64477],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393],1676:[64388,64389],1677:[64386,64387],1678:[64390,64391],1681:[64396,64397],1688:[64394,64395],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421],1729:[64422,64423,64424,64425],1733:[64480,64481],1734:[64473,64474],1735:[64471,64472],1736:[64475,64476],1737:[64482,64483],1739:[64478,64479],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431],1747:[64432,64433]},r={65247:{65154:65269,65156:65271,65160:65273,65166:65275},65248:{65154:65270,65156:65272,65160:65274,65166:65276},65165:{65247:{65248:{65258:65010}}},1617:{1612:64606,1613:64607,1614:64608,1615:64609,1616:64610}},n={1612:64606,1613:64607,1614:64608,1615:64609,1616:64610},i=[1570,1571,1573,1575];t.__arabicParser__={};var a=t.__arabicParser__.isInArabicSubstitutionA=function(t){return void 0!==e[t.charCodeAt(0)]},o=t.__arabicParser__.isArabicLetter=function(t){return"string"==typeof t&&/^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(t)},s=t.__arabicParser__.isArabicEndLetter=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length<=2},c=t.__arabicParser__.isArabicAlfLetter=function(t){return o(t)&&i.indexOf(t.charCodeAt(0))>=0};t.__arabicParser__.arabicLetterHasIsolatedForm=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length>=1};var u=t.__arabicParser__.arabicLetterHasFinalForm=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length>=2};t.__arabicParser__.arabicLetterHasInitialForm=function(t){return o(t)&&a(t)&&e[t.charCodeAt(0)].length>=3};var l=t.__arabicParser__.arabicLetterHasMedialForm=function(t){return o(t)&&a(t)&&4==e[t.charCodeAt(0)].length},h=t.__arabicParser__.resolveLigatures=function(t){var e=0,n=r,i="",a=0;for(e=0;e<t.length;e+=1)void 0!==n[t.charCodeAt(e)]?(a++,"number"==typeof(n=n[t.charCodeAt(e)])&&(i+=String.fromCharCode(n),n=r,a=0),e===t.length-1&&(n=r,i+=t.charAt(e-(a-1)),e-=a-1,a=0)):(n=r,i+=t.charAt(e-a),e-=a,a=0);return i};t.__arabicParser__.isArabicDiacritic=function(t){return void 0!==t&&void 0!==n[t.charCodeAt(0)]};var f=t.__arabicParser__.getCorrectForm=function(t,e,r){return o(t)?!1===a(t)?-1:!u(t)||!o(e)&&!o(r)||!o(r)&&s(e)||s(t)&&!o(e)||s(t)&&c(e)||s(t)&&s(e)?0:l(t)&&o(e)&&!s(e)&&o(r)&&u(r)?3:s(t)||!o(r)?1:2:-1},d=function(t){var r=0,n=0,i=0,a="",s="",c="",u=(t=t||"").split("\\s+"),l=[];for(r=0;r<u.length;r+=1){for(l.push(""),n=0;n<u[r].length;n+=1)a=u[r][n],s=u[r][n-1],c=u[r][n+1],o(a)?(i=f(a,s,c),l[r]+=-1!==i?String.fromCharCode(e[a.charCodeAt(0)][i]):a):l[r]+=a;l[r]=h(l[r])}return l.join(" ")},p=t.__arabicParser__.processArabic=t.processArabic=function(){var t,e="string"==typeof arguments[0]?arguments[0]:arguments[0].text,r=[];if(Array.isArray(e)){var n=0;for(r=[],n=0;n<e.length;n+=1)Array.isArray(e[n])?r.push([d(e[n][0]),e[n][1],e[n][2]]):r.push([d(e[n])]);t=r}else t=d(e);return"string"==typeof arguments[0]?t:(arguments[0].text=t,arguments[0])};t.events.push(["preProcessText",p])}(M.API), +/** @license + * jsPDF Autoprint Plugin + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){t.autoPrint=function(t){var e;switch((t=t||{}).variant=t.variant||"non-conform",t.variant){case"javascript":this.addJS("print({});");break;case"non-conform":default:this.internal.events.subscribe("postPutResources",(function(){e=this.internal.newObject(),this.internal.out("<<"),this.internal.out("/S /Named"),this.internal.out("/Type /Action"),this.internal.out("/N /Print"),this.internal.out(">>"),this.internal.out("endobj")})),this.internal.events.subscribe("putCatalog",(function(){this.internal.out("/OpenAction "+e+" 0 R")}))}return this}}(M.API), +/** + * @license + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e=function(){var t=void 0;Object.defineProperty(this,"pdf",{get:function(){return t},set:function(e){t=e}});var e=150;Object.defineProperty(this,"width",{get:function(){return e},set:function(t){e=isNaN(t)||!1===Number.isInteger(t)||t<0?150:t,this.getContext("2d").pageWrapXEnabled&&(this.getContext("2d").pageWrapX=e+1)}});var r=300;Object.defineProperty(this,"height",{get:function(){return r},set:function(t){r=isNaN(t)||!1===Number.isInteger(t)||t<0?300:t,this.getContext("2d").pageWrapYEnabled&&(this.getContext("2d").pageWrapY=r+1)}});var n=[];Object.defineProperty(this,"childNodes",{get:function(){return n},set:function(t){n=t}});var i={};Object.defineProperty(this,"style",{get:function(){return i},set:function(t){i=t}}),Object.defineProperty(this,"parentNode",{})};e.prototype.getContext=function(t,e){var r;if("2d"!==(t=t||"2d"))return null;for(r in e)this.pdf.context2d.hasOwnProperty(r)&&(this.pdf.context2d[r]=e[r]);return this.pdf.context2d._canvas=this,this.pdf.context2d},e.prototype.toDataURL=function(){throw new Error("toDataURL is not implemented.")},t.events.push(["initialized",function(){this.canvas=new e,this.canvas.pdf=this}])}(M.API),function(t){var r={left:0,top:0,bottom:0,right:0},n=!1,i=function(){void 0===this.internal.__cell__&&(this.internal.__cell__={},this.internal.__cell__.padding=3,this.internal.__cell__.headerFunction=void 0,this.internal.__cell__.margins=Object.assign({},r),this.internal.__cell__.margins.width=this.getPageWidth(),a.call(this))},a=function(){this.internal.__cell__.lastCell=new o,this.internal.__cell__.pages=1},o=function(){var t=arguments[0];Object.defineProperty(this,"x",{enumerable:!0,get:function(){return t},set:function(e){t=e}});var e=arguments[1];Object.defineProperty(this,"y",{enumerable:!0,get:function(){return e},set:function(t){e=t}});var r=arguments[2];Object.defineProperty(this,"width",{enumerable:!0,get:function(){return r},set:function(t){r=t}});var n=arguments[3];Object.defineProperty(this,"height",{enumerable:!0,get:function(){return n},set:function(t){n=t}});var i=arguments[4];Object.defineProperty(this,"text",{enumerable:!0,get:function(){return i},set:function(t){i=t}});var a=arguments[5];Object.defineProperty(this,"lineNumber",{enumerable:!0,get:function(){return a},set:function(t){a=t}});var o=arguments[6];return Object.defineProperty(this,"align",{enumerable:!0,get:function(){return o},set:function(t){o=t}}),this};o.prototype.clone=function(){return new o(this.x,this.y,this.width,this.height,this.text,this.lineNumber,this.align)},o.prototype.toArray=function(){return[this.x,this.y,this.width,this.height,this.text,this.lineNumber,this.align]},t.setHeaderFunction=function(t){return i.call(this),this.internal.__cell__.headerFunction="function"==typeof t?t:void 0,this},t.getTextDimensions=function(t,e){i.call(this);var r=(e=e||{}).fontSize||this.getFontSize(),n=e.font||this.getFont(),a=e.scaleFactor||this.internal.scaleFactor,o=0,s=0,c=0,u=this;if(!Array.isArray(t)&&"string"!=typeof t){if("number"!=typeof t)throw new Error("getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.");t=String(t)}var l=e.maxWidth;l>0?"string"==typeof t?t=this.splitTextToSize(t,l):"[object Array]"===Object.prototype.toString.call(t)&&(t=t.reduce((function(t,e){return t.concat(u.splitTextToSize(e,l))}),[])):t=Array.isArray(t)?t:[t];for(var h=0;h<t.length;h++)o<(c=this.getStringUnitWidth(t[h],{font:n})*r)&&(o=c);return 0!==o&&(s=t.length),{w:o/=a,h:Math.max((s*r*this.getLineHeightFactor()-r*(this.getLineHeightFactor()-1))/a,0)}},t.cellAddPage=function(){i.call(this),this.addPage();var t=this.internal.__cell__.margins||r;return this.internal.__cell__.lastCell=new o(t.left,t.top,void 0,void 0),this.internal.__cell__.pages+=1,this};var s=t.cell=function(){var t;t=arguments[0]instanceof o?arguments[0]:new o(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]),i.call(this);var e=this.internal.__cell__.lastCell,a=this.internal.__cell__.padding,s=this.internal.__cell__.margins||r,c=this.internal.__cell__.tableHeaderRow,u=this.internal.__cell__.printHeaders;return void 0!==e.lineNumber&&(e.lineNumber===t.lineNumber?(t.x=(e.x||0)+(e.width||0),t.y=e.y||0):e.y+e.height+t.height+s.bottom>this.getPageHeight()?(this.cellAddPage(),t.y=s.top,u&&c&&(this.printHeaderRow(t.lineNumber,!0),t.y+=c[0].height)):t.y=e.y+e.height||t.y),void 0!==t.text[0]&&(this.rect(t.x,t.y,t.width,t.height,!0===n?"FD":void 0),"right"===t.align?this.text(t.text,t.x+t.width-a,t.y+a,{align:"right",baseline:"top"}):"center"===t.align?this.text(t.text,t.x+t.width/2,t.y+a,{align:"center",baseline:"top",maxWidth:t.width-a-a}):this.text(t.text,t.x+a,t.y+a,{align:"left",baseline:"top",maxWidth:t.width-a-a})),this.internal.__cell__.lastCell=t,this};t.table=function(t,n,u,l,h){if(i.call(this),!u)throw new Error("No data for PDF table.");var f,d,p,g,m=[],v=[],b=[],y={},w={},N=[],L=[],A=(h=h||{}).autoSize||!1,x=!1!==h.printHeaders,S=h.css&&void 0!==h.css["font-size"]?16*h.css["font-size"]:h.fontSize||12,_=h.margins||Object.assign({width:this.getPageWidth()},r),P="number"==typeof h.padding?h.padding:3,k=h.headerBackgroundColor||"#c8c8c8",F=h.headerTextColor||"#000";if(a.call(this),this.internal.__cell__.printHeaders=x,this.internal.__cell__.margins=_,this.internal.__cell__.table_font_size=S,this.internal.__cell__.padding=P,this.internal.__cell__.headerBackgroundColor=k,this.internal.__cell__.headerTextColor=F,this.setFontSize(S),null==l)v=m=Object.keys(u[0]),b=m.map((function(){return"left"}));else if(Array.isArray(l)&&"object"===e(l[0]))for(m=l.map((function(t){return t.name})),v=l.map((function(t){return t.prompt||t.name||""})),b=l.map((function(t){return t.align||"left"})),f=0;f<l.length;f+=1)w[l[f].name]=l[f].width*(19.049976/25.4);else Array.isArray(l)&&"string"==typeof l[0]&&(v=m=l,b=m.map((function(){return"left"})));if(A||Array.isArray(l)&&"string"==typeof l[0])for(f=0;f<m.length;f+=1){for(y[g=m[f]]=u.map((function(t){return t[g]})),this.setFont(void 0,"bold"),N.push(this.getTextDimensions(v[f],{fontSize:this.internal.__cell__.table_font_size,scaleFactor:this.internal.scaleFactor}).w),d=y[g],this.setFont(void 0,"normal"),p=0;p<d.length;p+=1)N.push(this.getTextDimensions(d[p],{fontSize:this.internal.__cell__.table_font_size,scaleFactor:this.internal.scaleFactor}).w);w[g]=Math.max.apply(null,N)+P+P,N=[]}if(x){var I={};for(f=0;f<m.length;f+=1)I[m[f]]={},I[m[f]].text=v[f],I[m[f]].align=b[f];var C=c.call(this,I,w);L=m.map((function(e){return new o(t,n,w[e],C,I[e].text,void 0,I[e].align)})),this.setTableHeaderRow(L),this.printHeaderRow(1,!1)}var j=l.reduce((function(t,e){return t[e.name]=e.align,t}),{});for(f=0;f<u.length;f+=1){"rowStart"in h&&h.rowStart instanceof Function&&h.rowStart({row:f,data:u[f]},this);var O=c.call(this,u[f],w);for(p=0;p<m.length;p+=1){var B=u[f][m[p]];"cellStart"in h&&h.cellStart instanceof Function&&h.cellStart({row:f,col:p,data:B},this),s.call(this,new o(t,n,w[m[p]],O,B,f+2,j[m[p]]))}}return this.internal.__cell__.table_x=t,this.internal.__cell__.table_y=n,this};var c=function(t,e){var r=this.internal.__cell__.padding,n=this.internal.__cell__.table_font_size,i=this.internal.scaleFactor;return Object.keys(t).map((function(n){var i=t[n];return this.splitTextToSize(i.hasOwnProperty("text")?i.text:i,e[n]-r-r)}),this).map((function(t){return this.getLineHeightFactor()*t.length*n/i+r+r}),this).reduce((function(t,e){return Math.max(t,e)}),0)};t.setTableHeaderRow=function(t){i.call(this),this.internal.__cell__.tableHeaderRow=t},t.printHeaderRow=function(t,e){if(i.call(this),!this.internal.__cell__.tableHeaderRow)throw new Error("Property tableHeaderRow does not exist.");var r;if(n=!0,"function"==typeof this.internal.__cell__.headerFunction){var a=this.internal.__cell__.headerFunction(this,this.internal.__cell__.pages);this.internal.__cell__.lastCell=new o(a[0],a[1],a[2],a[3],void 0,-1)}this.setFont(void 0,"bold");for(var c=[],u=0;u<this.internal.__cell__.tableHeaderRow.length;u+=1){r=this.internal.__cell__.tableHeaderRow[u].clone(),e&&(r.y=this.internal.__cell__.margins.top||0,c.push(r)),r.lineNumber=t;var l=this.getTextColor();this.setTextColor(this.internal.__cell__.headerTextColor),this.setFillColor(this.internal.__cell__.headerBackgroundColor),s.call(this,r),this.setTextColor(l)}c.length>0&&this.setTableHeaderRow(c),this.setFont(void 0,"normal"),n=!1}}(M.API);var _t={italic:["italic","oblique","normal"],oblique:["oblique","italic","normal"],normal:["normal","oblique","italic"]},Pt=["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded"],kt=St(Pt),Ft=[100,200,300,400,500,600,700,800,900],It=St(Ft);function Ct(t){var e=t.family.replace(/"|'/g,"").toLowerCase(),r=function(t){return _t[t=t||"normal"]?t:"normal"}(t.style),n=function(t){if(!t)return 400;if("number"==typeof t)return t>=100&&t<=900&&t%100==0?t:400;if(/^\d00$/.test(t))return parseInt(t);switch(t){case"bold":return 700;case"normal":default:return 400}}(t.weight),i=function(t){return"number"==typeof kt[t=t||"normal"]?t:"normal"}(t.stretch);return{family:e,style:r,weight:n,stretch:i,src:t.src||[],ref:t.ref||{name:e,style:[i,r,n].join(" ")}}}function jt(t,e,r,n){var i;for(i=r;i>=0&&i<e.length;i+=n)if(t[e[i]])return t[e[i]];for(i=r;i>=0&&i<e.length;i-=n)if(t[e[i]])return t[e[i]]}var Ot={"sans-serif":"helvetica",fixed:"courier",monospace:"courier",terminal:"courier",cursive:"times",fantasy:"times",serif:"times"},Bt={caption:"times",icon:"times",menu:"times","message-box":"times","small-caption":"times","status-bar":"times"};function Mt(t){return[t.stretch,t.style,t.weight,t.family].join(" ")}function Et(t,e,r){for(var n=(r=r||{}).defaultFontFamily||"times",i=Object.assign({},Ot,r.genericFontFamilies||{}),a=null,o=null,s=0;s<e.length;++s)if(i[(a=Ct(e[s])).family]&&(a.family=i[a.family]),t.hasOwnProperty(a.family)){o=t[a.family];break}if(!(o=o||t[n]))throw new Error("Could not find a font-family for the rule '"+Mt(a)+"' and default family '"+n+"'.");if(o=function(t,e){if(e[t])return e[t];var r=kt[t],n=r<=kt.normal?-1:1,i=jt(e,Pt,r,n);if(!i)throw new Error("Could not find a matching font-stretch value for "+t);return i}(a.stretch,o),o=function(t,e){if(e[t])return e[t];for(var r=_t[t],n=0;n<r.length;++n)if(e[r[n]])return e[r[n]];throw new Error("Could not find a matching font-style for "+t)}(a.style,o),!(o=function(t,e){if(e[t])return e[t];if(400===t&&e[500])return e[500];if(500===t&&e[400])return e[400];var r=It[t],n=jt(e,Ft,r,t<400?-1:1);if(!n)throw new Error("Could not find a matching font-weight for value "+t);return n}(a.weight,o)))throw new Error("Failed to resolve a font for the rule '"+Mt(a)+"'.");return o}function qt(t){return t.trimLeft()}function Dt(t,e){for(var r=0;r<t.length;){if(t.charAt(r)===e)return[t.substring(0,r),t.substring(r+1)];r+=1}return null}function Rt(t){var e=t.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);return null===e?null:[e[0],t.substring(e[0].length)]}var Tt=["times"];!function(t){var r,n,a,o,s,c,u,l,f,d=function(t){return t=t||{},this.isStrokeTransparent=t.isStrokeTransparent||!1,this.strokeOpacity=t.strokeOpacity||1,this.strokeStyle=t.strokeStyle||"#000000",this.fillStyle=t.fillStyle||"#000000",this.isFillTransparent=t.isFillTransparent||!1,this.fillOpacity=t.fillOpacity||1,this.font=t.font||"10px sans-serif",this.textBaseline=t.textBaseline||"alphabetic",this.textAlign=t.textAlign||"left",this.lineWidth=t.lineWidth||1,this.lineJoin=t.lineJoin||"miter",this.lineCap=t.lineCap||"butt",this.path=t.path||[],this.transform=void 0!==t.transform?t.transform.clone():new l,this.globalCompositeOperation=t.globalCompositeOperation||"normal",this.globalAlpha=t.globalAlpha||1,this.clip_path=t.clip_path||[],this.currentPoint=t.currentPoint||new c,this.miterLimit=t.miterLimit||10,this.lastPoint=t.lastPoint||new c,this.lineDashOffset=t.lineDashOffset||0,this.lineDash=t.lineDash||[],this.margin=t.margin||[0,0,0,0],this.prevPageLastElemOffset=t.prevPageLastElemOffset||0,this.ignoreClearRect="boolean"!=typeof t.ignoreClearRect||t.ignoreClearRect,this};t.events.push(["initialized",function(){this.context2d=new p(this),r=this.internal.f2,n=this.internal.getCoordinateString,a=this.internal.getVerticalCoordinateString,o=this.internal.getHorizontalCoordinate,s=this.internal.getVerticalCoordinate,c=this.internal.Point,u=this.internal.Rectangle,l=this.internal.Matrix,f=new d}]);var p=function(t){Object.defineProperty(this,"canvas",{get:function(){return{parentNode:!1,style:!1}}});var e=t;Object.defineProperty(this,"pdf",{get:function(){return e}});var r=!1;Object.defineProperty(this,"pageWrapXEnabled",{get:function(){return r},set:function(t){r=Boolean(t)}});var n=!1;Object.defineProperty(this,"pageWrapYEnabled",{get:function(){return n},set:function(t){n=Boolean(t)}});var i=0;Object.defineProperty(this,"posX",{get:function(){return i},set:function(t){isNaN(t)||(i=t)}});var a=0;Object.defineProperty(this,"posY",{get:function(){return a},set:function(t){isNaN(t)||(a=t)}}),Object.defineProperty(this,"margin",{get:function(){return f.margin},set:function(t){var e;"number"==typeof t?e=[t,t,t,t]:((e=new Array(4))[0]=t[0],e[1]=t.length>=2?t[1]:e[0],e[2]=t.length>=3?t[2]:e[0],e[3]=t.length>=4?t[3]:e[1]),f.margin=e}});var o=!1;Object.defineProperty(this,"autoPaging",{get:function(){return o},set:function(t){o=t}});var s=0;Object.defineProperty(this,"lastBreak",{get:function(){return s},set:function(t){s=t}});var c=[];Object.defineProperty(this,"pageBreaks",{get:function(){return c},set:function(t){c=t}}),Object.defineProperty(this,"ctx",{get:function(){return f},set:function(t){t instanceof d&&(f=t)}}),Object.defineProperty(this,"path",{get:function(){return f.path},set:function(t){f.path=t}});var u=[];Object.defineProperty(this,"ctxStack",{get:function(){return u},set:function(t){u=t}}),Object.defineProperty(this,"fillStyle",{get:function(){return this.ctx.fillStyle},set:function(t){var e;e=g(t),this.ctx.fillStyle=e.style,this.ctx.isFillTransparent=0===e.a,this.ctx.fillOpacity=e.a,this.pdf.setFillColor(e.r,e.g,e.b,{a:e.a}),this.pdf.setTextColor(e.r,e.g,e.b,{a:e.a})}}),Object.defineProperty(this,"strokeStyle",{get:function(){return this.ctx.strokeStyle},set:function(t){var e=g(t);this.ctx.strokeStyle=e.style,this.ctx.isStrokeTransparent=0===e.a,this.ctx.strokeOpacity=e.a,0===e.a?this.pdf.setDrawColor(255,255,255):(e.a,this.pdf.setDrawColor(e.r,e.g,e.b))}}),Object.defineProperty(this,"lineCap",{get:function(){return this.ctx.lineCap},set:function(t){-1!==["butt","round","square"].indexOf(t)&&(this.ctx.lineCap=t,this.pdf.setLineCap(t))}}),Object.defineProperty(this,"lineWidth",{get:function(){return this.ctx.lineWidth},set:function(t){isNaN(t)||(this.ctx.lineWidth=t,this.pdf.setLineWidth(t))}}),Object.defineProperty(this,"lineJoin",{get:function(){return this.ctx.lineJoin},set:function(t){-1!==["bevel","round","miter"].indexOf(t)&&(this.ctx.lineJoin=t,this.pdf.setLineJoin(t))}}),Object.defineProperty(this,"miterLimit",{get:function(){return this.ctx.miterLimit},set:function(t){isNaN(t)||(this.ctx.miterLimit=t,this.pdf.setMiterLimit(t))}}),Object.defineProperty(this,"textBaseline",{get:function(){return this.ctx.textBaseline},set:function(t){this.ctx.textBaseline=t}}),Object.defineProperty(this,"textAlign",{get:function(){return this.ctx.textAlign},set:function(t){-1!==["right","end","center","left","start"].indexOf(t)&&(this.ctx.textAlign=t)}});var l=null;function h(t,e){if(null===l){var r=function(t){var e=[];return Object.keys(t).forEach((function(r){t[r].forEach((function(t){var n=null;switch(t){case"bold":n={family:r,weight:"bold"};break;case"italic":n={family:r,style:"italic"};break;case"bolditalic":n={family:r,weight:"bold",style:"italic"};break;case"":case"normal":n={family:r}}null!==n&&(n.ref={name:r,style:t},e.push(n))}))})),e}(t.getFontList());l=function(t){for(var e={},r=0;r<t.length;++r){var n=Ct(t[r]),i=n.family,a=n.stretch,o=n.style,s=n.weight;e[i]=e[i]||{},e[i][a]=e[i][a]||{},e[i][a][o]=e[i][a][o]||{},e[i][a][o][s]=n}return e}(r.concat(e))}return l}var p=null;Object.defineProperty(this,"fontFaces",{get:function(){return p},set:function(t){l=null,p=t}}),Object.defineProperty(this,"font",{get:function(){return this.ctx.font},set:function(t){var e;if(this.ctx.font=t,null!==(e=/^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(t))){var r=e[1],n=(e[2],e[3]),i=e[4],a=(e[5],e[6]),o=/^([.\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(i)[2];i="px"===o?Math.floor(parseFloat(i)*this.pdf.internal.scaleFactor):"em"===o?Math.floor(parseFloat(i)*this.pdf.getFontSize()):Math.floor(parseFloat(i)*this.pdf.internal.scaleFactor),this.pdf.setFontSize(i);var s=function(t){var e,r,n=[],i=t.trim();if(""===i)return Tt;if(i in Bt)return[Bt[i]];for(;""!==i;){switch(r=null,e=(i=qt(i)).charAt(0)){case'"':case"'":r=Dt(i.substring(1),e);break;default:r=Rt(i)}if(null===r)return Tt;if(n.push(r[0]),""!==(i=qt(r[1]))&&","!==i.charAt(0))return Tt;i=i.replace(/^,/,"")}return n}(a);if(this.fontFaces){var c=Et(h(this.pdf,this.fontFaces),s.map((function(t){return{family:t,stretch:"normal",weight:n,style:r}})));this.pdf.setFont(c.ref.name,c.ref.style)}else{var u="";("bold"===n||parseInt(n,10)>=700||"bold"===r)&&(u="bold"),"italic"===r&&(u+="italic"),0===u.length&&(u="normal");for(var l="",f={arial:"Helvetica",Arial:"Helvetica",verdana:"Helvetica",Verdana:"Helvetica",helvetica:"Helvetica",Helvetica:"Helvetica","sans-serif":"Helvetica",fixed:"Courier",monospace:"Courier",terminal:"Courier",cursive:"Times",fantasy:"Times",serif:"Times"},d=0;d<s.length;d++){if(void 0!==this.pdf.internal.getFont(s[d],u,{noFallback:!0,disableWarning:!0})){l=s[d];break}if("bolditalic"===u&&void 0!==this.pdf.internal.getFont(s[d],"bold",{noFallback:!0,disableWarning:!0}))l=s[d],u="bold";else if(void 0!==this.pdf.internal.getFont(s[d],"normal",{noFallback:!0,disableWarning:!0})){l=s[d],u="normal";break}}if(""===l)for(var p=0;p<s.length;p++)if(f[s[p]]){l=f[s[p]];break}l=""===l?"Times":l,this.pdf.setFont(l,u)}}}}),Object.defineProperty(this,"globalCompositeOperation",{get:function(){return this.ctx.globalCompositeOperation},set:function(t){this.ctx.globalCompositeOperation=t}}),Object.defineProperty(this,"globalAlpha",{get:function(){return this.ctx.globalAlpha},set:function(t){this.ctx.globalAlpha=t}}),Object.defineProperty(this,"lineDashOffset",{get:function(){return this.ctx.lineDashOffset},set:function(t){this.ctx.lineDashOffset=t,T.call(this)}}),Object.defineProperty(this,"lineDash",{get:function(){return this.ctx.lineDash},set:function(t){this.ctx.lineDash=t,T.call(this)}}),Object.defineProperty(this,"ignoreClearRect",{get:function(){return this.ctx.ignoreClearRect},set:function(t){this.ctx.ignoreClearRect=Boolean(t)}})};p.prototype.setLineDash=function(t){this.lineDash=t},p.prototype.getLineDash=function(){return this.lineDash.length%2?this.lineDash.concat(this.lineDash):this.lineDash.slice()},p.prototype.fill=function(){A.call(this,"fill",!1)},p.prototype.stroke=function(){A.call(this,"stroke",!1)},p.prototype.beginPath=function(){this.path=[{type:"begin"}]},p.prototype.moveTo=function(t,e){if(isNaN(t)||isNaN(e))throw i.error("jsPDF.context2d.moveTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.moveTo");var r=this.ctx.transform.applyToPoint(new c(t,e));this.path.push({type:"mt",x:r.x,y:r.y}),this.ctx.lastPoint=new c(t,e)},p.prototype.closePath=function(){var t=new c(0,0),r=0;for(r=this.path.length-1;-1!==r;r--)if("begin"===this.path[r].type&&"object"===e(this.path[r+1])&&"number"==typeof this.path[r+1].x){t=new c(this.path[r+1].x,this.path[r+1].y);break}this.path.push({type:"close"}),this.ctx.lastPoint=new c(t.x,t.y)},p.prototype.lineTo=function(t,e){if(isNaN(t)||isNaN(e))throw i.error("jsPDF.context2d.lineTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.lineTo");var r=this.ctx.transform.applyToPoint(new c(t,e));this.path.push({type:"lt",x:r.x,y:r.y}),this.ctx.lastPoint=new c(r.x,r.y)},p.prototype.clip=function(){this.ctx.clip_path=JSON.parse(JSON.stringify(this.path)),A.call(this,null,!0)},p.prototype.quadraticCurveTo=function(t,e,r,n){if(isNaN(r)||isNaN(n)||isNaN(t)||isNaN(e))throw i.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo");var a=this.ctx.transform.applyToPoint(new c(r,n)),o=this.ctx.transform.applyToPoint(new c(t,e));this.path.push({type:"qct",x1:o.x,y1:o.y,x:a.x,y:a.y}),this.ctx.lastPoint=new c(a.x,a.y)},p.prototype.bezierCurveTo=function(t,e,r,n,a,o){if(isNaN(a)||isNaN(o)||isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw i.error("jsPDF.context2d.bezierCurveTo: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo");var s=this.ctx.transform.applyToPoint(new c(a,o)),u=this.ctx.transform.applyToPoint(new c(t,e)),l=this.ctx.transform.applyToPoint(new c(r,n));this.path.push({type:"bct",x1:u.x,y1:u.y,x2:l.x,y2:l.y,x:s.x,y:s.y}),this.ctx.lastPoint=new c(s.x,s.y)},p.prototype.arc=function(t,e,r,n,a,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(a))throw i.error("jsPDF.context2d.arc: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.arc");if(o=Boolean(o),!this.ctx.transform.isIdentity){var s=this.ctx.transform.applyToPoint(new c(t,e));t=s.x,e=s.y;var u=this.ctx.transform.applyToPoint(new c(0,r)),l=this.ctx.transform.applyToPoint(new c(0,0));r=Math.sqrt(Math.pow(u.x-l.x,2)+Math.pow(u.y-l.y,2))}Math.abs(a-n)>=2*Math.PI&&(n=0,a=2*Math.PI),this.path.push({type:"arc",x:t,y:e,radius:r,startAngle:n,endAngle:a,counterclockwise:o})},p.prototype.arcTo=function(t,e,r,n,i){throw new Error("arcTo not implemented.")},p.prototype.rect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw i.error("jsPDF.context2d.rect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.rect");this.moveTo(t,e),this.lineTo(t+r,e),this.lineTo(t+r,e+n),this.lineTo(t,e+n),this.lineTo(t,e),this.lineTo(t+r,e),this.lineTo(t,e)},p.prototype.fillRect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw i.error("jsPDF.context2d.fillRect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.fillRect");if(!m.call(this)){var a={};"butt"!==this.lineCap&&(a.lineCap=this.lineCap,this.lineCap="butt"),"miter"!==this.lineJoin&&(a.lineJoin=this.lineJoin,this.lineJoin="miter"),this.beginPath(),this.rect(t,e,r,n),this.fill(),a.hasOwnProperty("lineCap")&&(this.lineCap=a.lineCap),a.hasOwnProperty("lineJoin")&&(this.lineJoin=a.lineJoin)}},p.prototype.strokeRect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw i.error("jsPDF.context2d.strokeRect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.strokeRect");v.call(this)||(this.beginPath(),this.rect(t,e,r,n),this.stroke())},p.prototype.clearRect=function(t,e,r,n){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n))throw i.error("jsPDF.context2d.clearRect: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.clearRect");this.ignoreClearRect||(this.fillStyle="#ffffff",this.fillRect(t,e,r,n))},p.prototype.save=function(t){t="boolean"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,r=0;r<this.pdf.internal.getNumberOfPages();r++)this.pdf.setPage(r+1),this.pdf.internal.out("q");if(this.pdf.setPage(e),t){this.ctx.fontSize=this.pdf.internal.getFontSize();var n=new d(this.ctx);this.ctxStack.push(this.ctx),this.ctx=n}},p.prototype.restore=function(t){t="boolean"!=typeof t||t;for(var e=this.pdf.internal.getCurrentPageInfo().pageNumber,r=0;r<this.pdf.internal.getNumberOfPages();r++)this.pdf.setPage(r+1),this.pdf.internal.out("Q");this.pdf.setPage(e),t&&0!==this.ctxStack.length&&(this.ctx=this.ctxStack.pop(),this.fillStyle=this.ctx.fillStyle,this.strokeStyle=this.ctx.strokeStyle,this.font=this.ctx.font,this.lineCap=this.ctx.lineCap,this.lineWidth=this.ctx.lineWidth,this.lineJoin=this.ctx.lineJoin,this.lineDash=this.ctx.lineDash,this.lineDashOffset=this.ctx.lineDashOffset)},p.prototype.toDataURL=function(){throw new Error("toDataUrl not implemented.")};var g=function(t){var e,r,n,i;if(!0===t.isCanvasGradient&&(t=t.getColor()),!t)return{r:0,g:0,b:0,a:0,style:t};if(/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(t))e=0,r=0,n=0,i=0;else{var a=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t);if(null!==a)e=parseInt(a[1]),r=parseInt(a[2]),n=parseInt(a[3]),i=1;else if(null!==(a=/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/.exec(t)))e=parseInt(a[1]),r=parseInt(a[2]),n=parseInt(a[3]),i=parseFloat(a[4]);else{if(i=1,"string"==typeof t&&"#"!==t.charAt(0)){var o=new h(t);t=o.ok?o.toHex():"#000000"}4===t.length?(e=t.substring(1,2),e+=e,r=t.substring(2,3),r+=r,n=t.substring(3,4),n+=n):(e=t.substring(1,3),r=t.substring(3,5),n=t.substring(5,7)),e=parseInt(e,16),r=parseInt(r,16),n=parseInt(n,16)}}return{r:e,g:r,b:n,a:i,style:t}},m=function(){return this.ctx.isFillTransparent||0==this.globalAlpha},v=function(){return Boolean(this.ctx.isStrokeTransparent||0==this.globalAlpha)};p.prototype.fillText=function(t,e,r,n){if(isNaN(e)||isNaN(r)||"string"!=typeof t)throw i.error("jsPDF.context2d.fillText: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.fillText");if(n=isNaN(n)?void 0:n,!m.call(this)){var a=q(this.ctx.transform.rotation),o=this.ctx.transform.scaleX;C.call(this,{text:t,x:e,y:r,scale:o,angle:a,align:this.textAlign,maxWidth:n})}},p.prototype.strokeText=function(t,e,r,n){if(isNaN(e)||isNaN(r)||"string"!=typeof t)throw i.error("jsPDF.context2d.strokeText: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.strokeText");if(!v.call(this)){n=isNaN(n)?void 0:n;var a=q(this.ctx.transform.rotation),o=this.ctx.transform.scaleX;C.call(this,{text:t,x:e,y:r,scale:o,renderingMode:"stroke",angle:a,align:this.textAlign,maxWidth:n})}},p.prototype.measureText=function(t){if("string"!=typeof t)throw i.error("jsPDF.context2d.measureText: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.measureText");var e=this.pdf,r=this.pdf.internal.scaleFactor,n=e.internal.getFontSize(),a=e.getStringUnitWidth(t)*n/e.internal.scaleFactor,o=function(t){var e=(t=t||{}).width||0;return Object.defineProperty(this,"width",{get:function(){return e}}),this};return new o({width:a*=Math.round(96*r/72*1e4)/1e4})},p.prototype.scale=function(t,e){if(isNaN(t)||isNaN(e))throw i.error("jsPDF.context2d.scale: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.scale");var r=new l(t,0,0,e,0,0);this.ctx.transform=this.ctx.transform.multiply(r)},p.prototype.rotate=function(t){if(isNaN(t))throw i.error("jsPDF.context2d.rotate: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.rotate");var e=new l(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0);this.ctx.transform=this.ctx.transform.multiply(e)},p.prototype.translate=function(t,e){if(isNaN(t)||isNaN(e))throw i.error("jsPDF.context2d.translate: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.translate");var r=new l(1,0,0,1,t,e);this.ctx.transform=this.ctx.transform.multiply(r)},p.prototype.transform=function(t,e,r,n,a,o){if(isNaN(t)||isNaN(e)||isNaN(r)||isNaN(n)||isNaN(a)||isNaN(o))throw i.error("jsPDF.context2d.transform: Invalid arguments",arguments),new Error("Invalid arguments passed to jsPDF.context2d.transform");var s=new l(t,e,r,n,a,o);this.ctx.transform=this.ctx.transform.multiply(s)},p.prototype.setTransform=function(t,e,r,n,i,a){t=isNaN(t)?1:t,e=isNaN(e)?0:e,r=isNaN(r)?0:r,n=isNaN(n)?1:n,i=isNaN(i)?0:i,a=isNaN(a)?0:a,this.ctx.transform=new l(t,e,r,n,i,a)};var b=function(){return this.margin[0]>0||this.margin[1]>0||this.margin[2]>0||this.margin[3]>0};p.prototype.drawImage=function(t,e,r,n,i,a,o,s,c){var h=this.pdf.getImageProperties(t),f=1,d=1,p=1,g=1;void 0!==n&&void 0!==s&&(p=s/n,g=c/i,f=h.width/n*s/n,d=h.height/i*c/i),void 0===a&&(a=e,o=r,e=0,r=0),void 0!==n&&void 0===s&&(s=n,c=i),void 0===n&&void 0===s&&(s=h.width,c=h.height);for(var m,v=this.ctx.transform.decompose(),w=q(v.rotate.shx),A=new l,S=(A=(A=(A=A.multiply(v.translate)).multiply(v.skew)).multiply(v.scale)).applyToRectangle(new u(a-e*p,o-r*g,n*f,i*d)),_=y.call(this,S),P=[],k=0;k<_.length;k+=1)-1===P.indexOf(_[k])&&P.push(_[k]);if(L(P),this.autoPaging)for(var F=P[0],I=P[P.length-1],C=F;C<I+1;C++){this.pdf.setPage(C);var j=this.pdf.internal.pageSize.width-this.margin[3]-this.margin[1],O=1===C?this.posY+this.margin[0]:this.margin[0],B=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],M=this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2],E=1===C?0:B+(C-2)*M;if(0!==this.ctx.clip_path.length){var D=this.path;m=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(m,this.posX+this.margin[3],-E+O+this.ctx.prevPageLastElemOffset),x.call(this,"fill",!0),this.path=D}var R=JSON.parse(JSON.stringify(S));R=N([R],this.posX+this.margin[3],-E+O+this.ctx.prevPageLastElemOffset)[0];var T=(C>F||C<I)&&b.call(this);T&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],j,M,null).clip().discardPath()),this.pdf.addImage(t,"JPEG",R.x,R.y,R.w,R.h,null,null,w),T&&this.pdf.restoreGraphicsState()}else this.pdf.addImage(t,"JPEG",S.x,S.y,S.w,S.h,null,null,w)};var y=function(t,e,r){var n=[];e=e||this.pdf.internal.pageSize.width,r=r||this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2];var i=this.posY+this.ctx.prevPageLastElemOffset;switch(t.type){default:case"mt":case"lt":n.push(Math.floor((t.y+i)/r)+1);break;case"arc":n.push(Math.floor((t.y+i-t.radius)/r)+1),n.push(Math.floor((t.y+i+t.radius)/r)+1);break;case"qct":var a=D(this.ctx.lastPoint.x,this.ctx.lastPoint.y,t.x1,t.y1,t.x,t.y);n.push(Math.floor((a.y+i)/r)+1),n.push(Math.floor((a.y+a.h+i)/r)+1);break;case"bct":var o=R(this.ctx.lastPoint.x,this.ctx.lastPoint.y,t.x1,t.y1,t.x2,t.y2,t.x,t.y);n.push(Math.floor((o.y+i)/r)+1),n.push(Math.floor((o.y+o.h+i)/r)+1);break;case"rect":n.push(Math.floor((t.y+i)/r)+1),n.push(Math.floor((t.y+t.h+i)/r)+1)}for(var s=0;s<n.length;s+=1)for(;this.pdf.internal.getNumberOfPages()<n[s];)w.call(this);return n},w=function(){var t=this.fillStyle,e=this.strokeStyle,r=this.font,n=this.lineCap,i=this.lineWidth,a=this.lineJoin;this.pdf.addPage(),this.fillStyle=t,this.strokeStyle=e,this.font=r,this.lineCap=n,this.lineWidth=i,this.lineJoin=a},N=function(t,e,r){for(var n=0;n<t.length;n++)switch(t[n].type){case"bct":t[n].x2+=e,t[n].y2+=r;case"qct":t[n].x1+=e,t[n].y1+=r;case"mt":case"lt":case"arc":default:t[n].x+=e,t[n].y+=r}return t},L=function(t){return t.sort((function(t,e){return t-e}))},A=function(t,e){for(var r,n,i=this.fillStyle,a=this.strokeStyle,o=this.lineCap,s=this.lineWidth,c=Math.abs(s*this.ctx.transform.scaleX),u=this.lineJoin,l=JSON.parse(JSON.stringify(this.path)),h=JSON.parse(JSON.stringify(this.path)),f=[],d=0;d<h.length;d++)if(void 0!==h[d].x)for(var p=y.call(this,h[d]),g=0;g<p.length;g+=1)-1===f.indexOf(p[g])&&f.push(p[g]);for(var m=0;m<f.length;m++)for(;this.pdf.internal.getNumberOfPages()<f[m];)w.call(this);if(L(f),this.autoPaging)for(var v=f[0],A=f[f.length-1],S=v;S<A+1;S++){this.pdf.setPage(S),this.fillStyle=i,this.strokeStyle=a,this.lineCap=o,this.lineWidth=c,this.lineJoin=u;var _=this.pdf.internal.pageSize.width-this.margin[3]-this.margin[1],P=1===S?this.posY+this.margin[0]:this.margin[0],k=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],F=this.pdf.internal.pageSize.height-this.margin[0]-this.margin[2],I=1===S?0:k+(S-2)*F;if(0!==this.ctx.clip_path.length){var C=this.path;r=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(r,this.posX+this.margin[3],-I+P+this.ctx.prevPageLastElemOffset),x.call(this,t,!0),this.path=C}if(n=JSON.parse(JSON.stringify(l)),this.path=N(n,this.posX+this.margin[3],-I+P+this.ctx.prevPageLastElemOffset),!1===e||0===S){var j=(S>v||S<A)&&b.call(this);j&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],_,F,null).clip().discardPath()),x.call(this,t,e),j&&this.pdf.restoreGraphicsState()}this.lineWidth=s}else this.lineWidth=c,x.call(this,t,e),this.lineWidth=s;this.path=l},x=function(t,e){if(("stroke"!==t||e||!v.call(this))&&("stroke"===t||e||!m.call(this))){for(var r,n,i=[],a=this.path,o=0;o<a.length;o++){var s=a[o];switch(s.type){case"begin":i.push({begin:!0});break;case"close":i.push({close:!0});break;case"mt":i.push({start:s,deltas:[],abs:[]});break;case"lt":var c=i.length;if(a[o-1]&&!isNaN(a[o-1].x)&&(r=[s.x-a[o-1].x,s.y-a[o-1].y],c>0))for(;c>=0;c--)if(!0!==i[c-1].close&&!0!==i[c-1].begin){i[c-1].deltas.push(r),i[c-1].abs.push(s);break}break;case"bct":r=[s.x1-a[o-1].x,s.y1-a[o-1].y,s.x2-a[o-1].x,s.y2-a[o-1].y,s.x-a[o-1].x,s.y-a[o-1].y],i[i.length-1].deltas.push(r);break;case"qct":var u=a[o-1].x+2/3*(s.x1-a[o-1].x),l=a[o-1].y+2/3*(s.y1-a[o-1].y),h=s.x+2/3*(s.x1-s.x),f=s.y+2/3*(s.y1-s.y),d=s.x,p=s.y;r=[u-a[o-1].x,l-a[o-1].y,h-a[o-1].x,f-a[o-1].y,d-a[o-1].x,p-a[o-1].y],i[i.length-1].deltas.push(r);break;case"arc":i.push({deltas:[],abs:[],arc:!0}),Array.isArray(i[i.length-1].abs)&&i[i.length-1].abs.push(s)}}n=e?null:"stroke"===t?"stroke":"fill";for(var g=!1,b=0;b<i.length;b++)if(i[b].arc)for(var y=i[b].abs,w=0;w<y.length;w++){var N=y[w];"arc"===N.type?P.call(this,N.x,N.y,N.radius,N.startAngle,N.endAngle,N.counterclockwise,void 0,e,!g):j.call(this,N.x,N.y),g=!0}else if(!0===i[b].close)this.pdf.internal.out("h"),g=!1;else if(!0!==i[b].begin){var L=i[b].start.x,A=i[b].start.y;O.call(this,i[b].deltas,L,A),g=!0}n&&k.call(this,n),e&&F.call(this)}},S=function(t){var e=this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor,r=e*(this.pdf.internal.getLineHeightFactor()-1);switch(this.ctx.textBaseline){case"bottom":return t-r;case"top":return t+e-r;case"hanging":return t+e-2*r;case"middle":return t+e/2-r;case"ideographic":return t;case"alphabetic":default:return t}},_=function(t){return t+this.pdf.internal.getFontSize()/this.pdf.internal.scaleFactor*(this.pdf.internal.getLineHeightFactor()-1)};p.prototype.createLinearGradient=function(){var t=function(){};return t.colorStops=[],t.addColorStop=function(t,e){this.colorStops.push([t,e])},t.getColor=function(){return 0===this.colorStops.length?"#000000":this.colorStops[0][1]},t.isCanvasGradient=!0,t},p.prototype.createPattern=function(){return this.createLinearGradient()},p.prototype.createRadialGradient=function(){return this.createLinearGradient()};var P=function(t,e,r,n,i,a,o,s,c){for(var u=M.call(this,r,n,i,a),l=0;l<u.length;l++){var h=u[l];0===l&&(c?I.call(this,h.x1+t,h.y1+e):j.call(this,h.x1+t,h.y1+e)),B.call(this,t,e,h.x2,h.y2,h.x3,h.y3,h.x4,h.y4)}s?F.call(this):k.call(this,o)},k=function(t){switch(t){case"stroke":this.pdf.internal.out("S");break;case"fill":this.pdf.internal.out("f")}},F=function(){this.pdf.clip(),this.pdf.discardPath()},I=function(t,e){this.pdf.internal.out(n(t)+" "+a(e)+" m")},C=function(t){var e;switch(t.align){case"right":case"end":e="right";break;case"center":e="center";break;case"left":case"start":default:e="left"}var r=this.pdf.getTextDimensions(t.text),n=S.call(this,t.y),i=_.call(this,n)-r.h,a=this.ctx.transform.applyToPoint(new c(t.x,n)),o=this.ctx.transform.decompose(),s=new l;s=(s=(s=s.multiply(o.translate)).multiply(o.skew)).multiply(o.scale);for(var h,f,d,p=this.ctx.transform.applyToRectangle(new u(t.x,n,r.w,r.h)),g=s.applyToRectangle(new u(t.x,i,r.w,r.h)),m=y.call(this,g),v=[],w=0;w<m.length;w+=1)-1===v.indexOf(m[w])&&v.push(m[w]);if(L(v),this.autoPaging)for(var A=v[0],P=v[v.length-1],k=A;k<P+1;k++){this.pdf.setPage(k);var F=1===k?this.posY+this.margin[0]:this.margin[0],I=this.pdf.internal.pageSize.height-this.posY-this.margin[0]-this.margin[2],C=this.pdf.internal.pageSize.height-this.margin[2],j=C-this.margin[0],O=this.pdf.internal.pageSize.width-this.margin[1],B=O-this.margin[3],M=1===k?0:I+(k-2)*j;if(0!==this.ctx.clip_path.length){var E=this.path;h=JSON.parse(JSON.stringify(this.ctx.clip_path)),this.path=N(h,this.posX+this.margin[3],-1*M+F),x.call(this,"fill",!0),this.path=E}var q=N([JSON.parse(JSON.stringify(g))],this.posX+this.margin[3],-M+F+this.ctx.prevPageLastElemOffset)[0];t.scale>=.01&&(f=this.pdf.internal.getFontSize(),this.pdf.setFontSize(f*t.scale),d=this.lineWidth,this.lineWidth=d*t.scale);var D="text"!==this.autoPaging;if(D||q.y+q.h<=C){if(D||q.y>=F&&q.x<=O){var R=D?t.text:this.pdf.splitTextToSize(t.text,t.maxWidth||O-q.x)[0],T=N([JSON.parse(JSON.stringify(p))],this.posX+this.margin[3],-M+F+this.ctx.prevPageLastElemOffset)[0],U=D&&(k>A||k<P)&&b.call(this);U&&(this.pdf.saveGraphicsState(),this.pdf.rect(this.margin[3],this.margin[0],B,j,null).clip().discardPath()),this.pdf.text(R,T.x,T.y,{angle:t.angle,align:e,renderingMode:t.renderingMode}),U&&this.pdf.restoreGraphicsState()}}else q.y<C&&(this.ctx.prevPageLastElemOffset+=C-q.y);t.scale>=.01&&(this.pdf.setFontSize(f),this.lineWidth=d)}else t.scale>=.01&&(f=this.pdf.internal.getFontSize(),this.pdf.setFontSize(f*t.scale),d=this.lineWidth,this.lineWidth=d*t.scale),this.pdf.text(t.text,a.x+this.posX,a.y+this.posY,{angle:t.angle,align:e,renderingMode:t.renderingMode,maxWidth:t.maxWidth}),t.scale>=.01&&(this.pdf.setFontSize(f),this.lineWidth=d)},j=function(t,e,r,i){r=r||0,i=i||0,this.pdf.internal.out(n(t+r)+" "+a(e+i)+" l")},O=function(t,e,r){return this.pdf.lines(t,e,r,null,null)},B=function(t,e,n,i,a,c,u,l){this.pdf.internal.out([r(o(n+t)),r(s(i+e)),r(o(a+t)),r(s(c+e)),r(o(u+t)),r(s(l+e)),"c"].join(" "))},M=function(t,e,r,n){for(var i=2*Math.PI,a=Math.PI/2;e>r;)e-=i;var o=Math.abs(r-e);o<i&&n&&(o=i-o);for(var s=[],c=n?-1:1,u=e;o>1e-5;){var l=u+c*Math.min(o,a);s.push(E.call(this,t,u,l)),o-=Math.abs(l-u),u=l}return s},E=function(t,e,r){var n=(r-e)/2,i=t*Math.cos(n),a=t*Math.sin(n),o=i,s=-a,c=o*o+s*s,u=c+o*i+s*a,l=4/3*(Math.sqrt(2*c*u)-u)/(o*a-s*i),h=o-l*s,f=s+l*o,d=h,p=-f,g=n+e,m=Math.cos(g),v=Math.sin(g);return{x1:t*Math.cos(e),y1:t*Math.sin(e),x2:h*m-f*v,y2:h*v+f*m,x3:d*m-p*v,y3:d*v+p*m,x4:t*Math.cos(r),y4:t*Math.sin(r)}},q=function(t){return 180*t/Math.PI},D=function(t,e,r,n,i,a){var o=t+.5*(r-t),s=e+.5*(n-e),c=i+.5*(r-i),l=a+.5*(n-a),h=Math.min(t,i,o,c),f=Math.max(t,i,o,c),d=Math.min(e,a,s,l),p=Math.max(e,a,s,l);return new u(h,d,f-h,p-d)},R=function(t,e,r,n,i,a,o,s){var c,l,h,f,d,p,g,m,v,b,y,w,N,L,A=r-t,x=n-e,S=i-r,_=a-n,P=o-i,k=s-a;for(l=0;l<41;l++)v=(g=(h=t+(c=l/40)*A)+c*((d=r+c*S)-h))+c*(d+c*(i+c*P-d)-g),b=(m=(f=e+c*x)+c*((p=n+c*_)-f))+c*(p+c*(a+c*k-p)-m),0==l?(y=v,w=b,N=v,L=b):(y=Math.min(y,v),w=Math.min(w,b),N=Math.max(N,v),L=Math.max(L,b));return new u(Math.round(y),Math.round(w),Math.round(N-y),Math.round(L-w))},T=function(){if(this.prevLineDash||this.ctx.lineDash.length||this.ctx.lineDashOffset){var t,e,r=(t=this.ctx.lineDash,e=this.ctx.lineDashOffset,JSON.stringify({lineDash:t,lineDashOffset:e}));this.prevLineDash!==r&&(this.pdf.setLineDash(this.ctx.lineDash,this.ctx.lineDashOffset),this.prevLineDash=r)}}}(M.API);try{require("worker_threads").Worker}catch(t){}var Ut=Uint8Array,zt=Uint16Array,Ht=Uint32Array,Wt=new Ut([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Vt=new Ut([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Gt=new Ut([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Yt=function(t,e){for(var r=new zt(31),n=0;n<31;++n)r[n]=e+=1<<t[n-1];var i=new Ht(r[30]);for(n=1;n<30;++n)for(var a=r[n];a<r[n+1];++a)i[a]=a-r[n]<<5|n;return[r,i]},Jt=Yt(Wt,2),Xt=Jt[0],Kt=Jt[1];Xt[28]=258,Kt[258]=28;for(var Zt=Yt(Vt,0),$t=Zt[0],Qt=Zt[1],te=new zt(32768),ee=0;ee<32768;++ee){var re=(43690&ee)>>>1|(21845&ee)<<1;re=(61680&(re=(52428&re)>>>2|(13107&re)<<2))>>>4|(3855&re)<<4,te[ee]=((65280&re)>>>8|(255&re)<<8)>>>1}var ne=function(t,e,r){for(var n=t.length,i=0,a=new zt(e);i<n;++i)++a[t[i]-1];var o,s=new zt(e);for(i=0;i<e;++i)s[i]=s[i-1]+a[i-1]<<1;if(r){o=new zt(1<<e);var c=15-e;for(i=0;i<n;++i)if(t[i])for(var u=i<<4|t[i],l=e-t[i],h=s[t[i]-1]++<<l,f=h|(1<<l)-1;h<=f;++h)o[te[h]>>>c]=u}else for(o=new zt(n),i=0;i<n;++i)o[i]=te[s[t[i]-1]++]>>>15-t[i];return o},ie=new Ut(288);for(ee=0;ee<144;++ee)ie[ee]=8;for(ee=144;ee<256;++ee)ie[ee]=9;for(ee=256;ee<280;++ee)ie[ee]=7;for(ee=280;ee<288;++ee)ie[ee]=8;var ae=new Ut(32);for(ee=0;ee<32;++ee)ae[ee]=5;var oe=ne(ie,9,0),se=ne(ie,9,1),ce=ne(ae,5,0),ue=ne(ae,5,1),le=function(t){for(var e=t[0],r=1;r<t.length;++r)t[r]>e&&(e=t[r]);return e},he=function(t,e,r){var n=e/8>>0;return(t[n]|t[n+1]<<8)>>>(7&e)&r},fe=function(t,e){var r=e/8>>0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>>(7&e)},de=function(t){return(t/8>>0)+(7&t&&1)},pe=function(t,e,r){(null==e||e<0)&&(e=0),(null==r||r>t.length)&&(r=t.length);var n=new(t instanceof zt?zt:t instanceof Ht?Ht:Ut)(r-e);return n.set(t.subarray(e,r)),n},ge=function(t,e,r){r<<=7&e;var n=e/8>>0;t[n]|=r,t[n+1]|=r>>>8},me=function(t,e,r){r<<=7&e;var n=e/8>>0;t[n]|=r,t[n+1]|=r>>>8,t[n+2]|=r>>>16},ve=function(t,e){for(var r=[],n=0;n<t.length;++n)t[n]&&r.push({s:n,f:t[n]});var i=r.length,a=r.slice();if(!i)return[new Ut(0),0];if(1==i){var o=new Ut(r[0].s+1);return o[r[0].s]=1,[o,1]}r.sort((function(t,e){return t.f-e.f})),r.push({s:-1,f:25001});var s=r[0],c=r[1],u=0,l=1,h=2;for(r[0]={s:-1,f:s.f+c.f,l:s,r:c};l!=i-1;)s=r[r[u].f<r[h].f?u++:h++],c=r[u!=l&&r[u].f<r[h].f?u++:h++],r[l++]={s:-1,f:s.f+c.f,l:s,r:c};var f=a[0].s;for(n=1;n<i;++n)a[n].s>f&&(f=a[n].s);var d=new zt(f+1),p=be(r[l-1],d,0);if(p>e){n=0;var g=0,m=p-e,v=1<<m;for(a.sort((function(t,e){return d[e.s]-d[t.s]||t.f-e.f}));n<i;++n){var b=a[n].s;if(!(d[b]>e))break;g+=v-(1<<p-d[b]),d[b]=e}for(g>>>=m;g>0;){var y=a[n].s;d[y]<e?g-=1<<e-d[y]++-1:++n}for(;n>=0&&g;--n){var w=a[n].s;d[w]==e&&(--d[w],++g)}p=e}return[new Ut(d),p]},be=function(t,e,r){return-1==t.s?Math.max(be(t.l,e,r+1),be(t.r,e,r+1)):e[t.s]=r},ye=function(t){for(var e=t.length;e&&!t[--e];);for(var r=new zt(++e),n=0,i=t[0],a=1,o=function(t){r[n++]=t},s=1;s<=e;++s)if(t[s]==i&&s!=e)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=t[s]}return[r.subarray(0,n),e]},we=function(t,e){for(var r=0,n=0;n<e.length;++n)r+=t[n]*e[n];return r},Ne=function(t,e,r){var n=r.length,i=de(e+2);t[i]=255&n,t[i+1]=n>>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a<n;++a)t[i+a+4]=r[a];return 8*(i+4+n)},Le=function(t,e,r,n,i,a,o,s,c,u,l){ge(e,l++,r),++i[256];for(var h=ve(i,15),f=h[0],d=h[1],p=ve(a,15),g=p[0],m=p[1],v=ye(f),b=v[0],y=v[1],w=ye(g),N=w[0],L=w[1],A=new zt(19),x=0;x<b.length;++x)A[31&b[x]]++;for(x=0;x<N.length;++x)A[31&N[x]]++;for(var S=ve(A,7),_=S[0],P=S[1],k=19;k>4&&!_[Gt[k-1]];--k);var F,I,C,j,O=u+5<<3,B=we(i,ie)+we(a,ae)+o,M=we(i,f)+we(a,g)+o+14+3*k+we(A,_)+(2*A[16]+3*A[17]+7*A[18]);if(O<=B&&O<=M)return Ne(e,l,t.subarray(c,c+u));if(ge(e,l,1+(M<B)),l+=2,M<B){F=ne(f,d,0),I=f,C=ne(g,m,0),j=g;var E=ne(_,P,0);ge(e,l,y-257),ge(e,l+5,L-1),ge(e,l+10,k-4),l+=14;for(x=0;x<k;++x)ge(e,l+3*x,_[Gt[x]]);l+=3*k;for(var q=[b,N],D=0;D<2;++D){var R=q[D];for(x=0;x<R.length;++x){var T=31&R[x];ge(e,l,E[T]),l+=_[T],T>15&&(ge(e,l,R[x]>>>5&127),l+=R[x]>>>12)}}}else F=oe,I=ie,C=ce,j=ae;for(x=0;x<s;++x)if(n[x]>255){T=n[x]>>>18&31;me(e,l,F[T+257]),l+=I[T+257],T>7&&(ge(e,l,n[x]>>>23&31),l+=Wt[T]);var U=31&n[x];me(e,l,C[U]),l+=j[U],U>3&&(me(e,l,n[x]>>>5&8191),l+=Vt[U])}else me(e,l,F[n[x]]),l+=I[n[x]];return me(e,l,F[256]),l+I[256]},Ae=new Ht([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),xe=new Ut(0),Se=function(t,e,r,n,i){return function(t,e,r,n,i,a){var o=t.length,s=new Ut(n+o+5*(1+Math.floor(o/7e3))+i),c=s.subarray(n,s.length-i),u=0;if(!e||o<8)for(var l=0;l<=o;l+=65535){var h=l+65535;h<o?u=Ne(c,u,t.subarray(l,h)):(c[l]=a,u=Ne(c,u,t.subarray(l,o)))}else{for(var f=Ae[e-1],d=f>>>13,p=8191&f,g=(1<<r)-1,m=new zt(32768),v=new zt(g+1),b=Math.ceil(r/3),y=2*b,w=function(e){return(t[e]^t[e+1]<<b^t[e+2]<<y)&g},N=new Ht(25e3),L=new zt(288),A=new zt(32),x=0,S=0,_=(l=0,0),P=0,k=0;l<o;++l){var F=w(l),I=32767&l,C=v[F];if(m[I]=C,v[F]=I,P<=l){var j=o-l;if((x>7e3||_>24576)&&j>423){u=Le(t,c,0,N,L,A,S,_,k,l-k,u),_=x=S=0,k=l;for(var O=0;O<286;++O)L[O]=0;for(O=0;O<30;++O)A[O]=0}var B=2,M=0,E=p,q=I-C&32767;if(j>2&&F==w(l-q))for(var D=Math.min(d,j)-1,R=Math.min(32767,l),T=Math.min(258,j);q<=R&&--E&&I!=C;){if(t[l+B]==t[l+B-q]){for(var U=0;U<T&&t[l+U]==t[l+U-q];++U);if(U>B){if(B=U,M=q,U>D)break;var z=Math.min(q,U-2),H=0;for(O=0;O<z;++O){var W=l-q+O+32768&32767,V=W-m[W]+32768&32767;V>H&&(H=V,C=W)}}}q+=(I=C)-(C=m[I])+32768&32767}if(M){N[_++]=268435456|Kt[B]<<18|Qt[M];var G=31&Kt[B],Y=31&Qt[M];S+=Wt[G]+Vt[Y],++L[257+G],++A[Y],P=l+B,++x}else N[_++]=t[l],++L[t[l]]}}u=Le(t,c,a,N,L,A,S,_,k,l-k,u),a||(u=Ne(c,u,xe))}return pe(s,0,n+de(u)+i)}(t,null==e.level?6:e.level,null==e.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+e.mem,r,n,!i)};function _e(t,e){void 0===e&&(e={});var r=function(){var t=1,e=0;return{p:function(r){for(var n=t,i=e,a=r.length,o=0;o!=a;){for(var s=Math.min(o+5552,a);o<s;++o)i+=n+=r[o];n%=65521,i%=65521}t=n,e=i},d:function(){return(t>>>8<<16|(255&e)<<8|e>>>8)+2*((255&t)<<23)}}}();r.p(t);var n=Se(t,e,2,4);return function(t,e){var r=e.level,n=0==r?0:r<6?1:9==r?3:2;t[0]=120,t[1]=n<<6|(n?32-2*n:1)}(n,e),function(t,e,r){for(;r;++e)t[e]=r,r>>>=8}(n,n.length-4,r.d()),n}function Pe(t,e){return function(t,e,r){var n=t.length,i=!e||r,a=!r||r.i;r||(r={}),e||(e=new Ut(3*n));var o=function(t){var r=e.length;if(t>r){var n=new Ut(Math.max(2*r,t));n.set(e),e=n}},s=r.f||0,c=r.p||0,u=r.b||0,l=r.l,h=r.d,f=r.m,d=r.n,p=8*n;do{if(!l){r.f=s=he(t,c,1);var g=he(t,c+1,3);if(c+=3,!g){var m=t[(P=de(c)+4)-4]|t[P-3]<<8,v=P+m;if(v>n){if(a)throw"unexpected EOF";break}i&&o(u+m),e.set(t.subarray(P,v),u),r.b=u+=m,r.p=c=8*v;continue}if(1==g)l=se,h=ue,f=9,d=5;else{if(2!=g)throw"invalid block type";var b=he(t,c,31)+257,y=he(t,c+10,15)+4,w=b+he(t,c+5,31)+1;c+=14;for(var N=new Ut(w),L=new Ut(19),A=0;A<y;++A)L[Gt[A]]=he(t,c+3*A,7);c+=3*y;var x=le(L),S=(1<<x)-1;if(!a&&c+w*(x+7)>p)break;var _=ne(L,x,1);for(A=0;A<w;){var P,k=_[he(t,c,S)];if(c+=15&k,(P=k>>>4)<16)N[A++]=P;else{var F=0,I=0;for(16==P?(I=3+he(t,c,3),c+=2,F=N[A-1]):17==P?(I=3+he(t,c,7),c+=3):18==P&&(I=11+he(t,c,127),c+=7);I--;)N[A++]=F}}var C=N.subarray(0,b),j=N.subarray(b);f=le(C),d=le(j),l=ne(C,f,1),h=ne(j,d,1)}if(c>p)throw"unexpected EOF"}i&&o(u+131072);for(var O=(1<<f)-1,B=(1<<d)-1,M=f+d+18;a||c+M<p;){var E=(F=l[fe(t,c)&O])>>>4;if((c+=15&F)>p)throw"unexpected EOF";if(!F)throw"invalid length/literal";if(E<256)e[u++]=E;else{if(256==E){l=null;break}var q=E-254;if(E>264){var D=Wt[A=E-257];q=he(t,c,(1<<D)-1)+Xt[A],c+=D}var R=h[fe(t,c)&B],T=R>>>4;if(!R)throw"invalid distance";c+=15&R;j=$t[T];if(T>3){D=Vt[T];j+=fe(t,c)&(1<<D)-1,c+=D}if(c>p)throw"unexpected EOF";i&&o(u+131072);for(var U=u+q;u<U;u+=4)e[u]=e[u-j],e[u+1]=e[u+1-j],e[u+2]=e[u+2-j],e[u+3]=e[u+3-j];u=U}}r.l=l,r.p=c,r.b=u,l&&(s=1,r.m=f,r.d=h,r.n=d)}while(!s);return u==e.length?e:pe(e,0,u)}((function(t){if(8!=(15&t[0])||t[0]>>>4>7||(t[0]<<8|t[1])%31)throw"invalid zlib data";if(32&t[1])throw"invalid zlib data: preset dictionaries not supported"}(t),t.subarray(2,-4)),e)} +/** + * @license + * jsPDF filters PlugIn + * Copyright (c) 2014 Aras Abbasi + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */!function(t){var e=function(t){var e,r,n,i,a,o,s,c,u,l;for(/[^\x00-\xFF]/.test(t),r=[],n=0,i=(t+=e="\0\0\0\0".slice(t.length%4||4)).length;i>n;n+=4)0!==(a=(t.charCodeAt(n)<<24)+(t.charCodeAt(n+1)<<16)+(t.charCodeAt(n+2)<<8)+t.charCodeAt(n+3))?(o=(a=((a=((a=((a=(a-(l=a%85))/85)-(u=a%85))/85)-(c=a%85))/85)-(s=a%85))/85)%85,r.push(o+33,s+33,c+33,u+33,l+33)):r.push(122);return function(t,e){for(var r=e;r>0;r--)t.pop()}(r,e.length),String.fromCharCode.apply(String,r)+"~>"},r=function(t){var e,r,n,i,a,o=String,s="length",c=255,u="charCodeAt",l="slice",h="replace";for(t[l](-2),t=t[l](0,-2)[h](/\s/g,"")[h]("z","!!!!!"),n=[],i=0,a=(t+=e="uuuuu"[l](t[s]%5||5))[s];a>i;i+=5)r=52200625*(t[u](i)-33)+614125*(t[u](i+1)-33)+7225*(t[u](i+2)-33)+85*(t[u](i+3)-33)+(t[u](i+4)-33),n.push(c&r>>24,c&r>>16,c&r>>8,c&r);return function(t,e){for(var r=e;r>0;r--)t.pop()}(n,e[s]),o.fromCharCode.apply(o,n)},n=function(t){var e=new RegExp(/^([0-9A-Fa-f]{2})+$/);if(-1!==(t=t.replace(/\s/g,"")).indexOf(">")&&(t=t.substr(0,t.indexOf(">"))),t.length%2&&(t+="0"),!1===e.test(t))return"";for(var r="",n=0;n<t.length;n+=2)r+=String.fromCharCode("0x"+(t[n]+t[n+1]));return r},i=function(t){for(var e=new Uint8Array(t.length),r=t.length;r--;)e[r]=t.charCodeAt(r);return t=(e=_e(e)).reduce((function(t,e){return t+String.fromCharCode(e)}),"")};t.processDataByFilters=function(t,a){var o=0,s=t||"",c=[];for("string"==typeof(a=a||[])&&(a=[a]),o=0;o<a.length;o+=1)switch(a[o]){case"ASCII85Decode":case"/ASCII85Decode":s=r(s),c.push("/ASCII85Encode");break;case"ASCII85Encode":case"/ASCII85Encode":s=e(s),c.push("/ASCII85Decode");break;case"ASCIIHexDecode":case"/ASCIIHexDecode":s=n(s),c.push("/ASCIIHexEncode");break;case"ASCIIHexEncode":case"/ASCIIHexEncode":s=s.split("").map((function(t){return("0"+t.charCodeAt().toString(16)).slice(-2)})).join("")+">",c.push("/ASCIIHexDecode");break;case"FlateEncode":case"/FlateEncode":s=i(s),c.push("/FlateDecode");break;default:throw new Error('The filter: "'+a[o]+'" is not implemented')}return{data:s,reverseChain:c.reverse().join(" ")}}}(M.API), +/** + * @license + * jsPDF fileloading PlugIn + * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com) + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){t.loadFile=function(t,e,r){return function(t,e,r){e=!1!==e,r="function"==typeof r?r:function(){};var n=void 0;try{n=function(t,e,r){var n=new XMLHttpRequest,i=0,a=function(t){var e=t.length,r=[],n=String.fromCharCode;for(i=0;i<e;i+=1)r.push(n(255&t.charCodeAt(i)));return r.join("")};if(n.open("GET",t,!e),n.overrideMimeType("text/plain; charset=x-user-defined"),!1===e&&(n.onload=function(){200===n.status?r(a(this.responseText)):r(void 0)}),n.send(null),e&&200===n.status)return a(n.responseText)}(t,e,r)}catch(t){}return n}(t,e,r)},t.loadImageFile=t.loadFile}(M.API),function(n){function i(){return(r.html2canvas?Promise.resolve(r.html2canvas):"object"===(void 0===t?"undefined":e(t))&&"undefined"!=typeof module?new Promise((function(t,e){try{t(require("html2canvas"))}catch(t){e(t)}})):"function"==typeof define&&define.amd?new Promise((function(t,e){try{require(["html2canvas"],t)}catch(t){e(t)}})):Promise.reject(new Error("Could not load html2canvas"))).catch((function(t){return Promise.reject(new Error("Could not load html2canvas: "+t))})).then((function(t){return t.default?t.default:t}))}function a(){return(r.DOMPurify?Promise.resolve(r.DOMPurify):"object"===(void 0===t?"undefined":e(t))&&"undefined"!=typeof module?new Promise((function(t,e){try{t(require("dompurify"))}catch(t){e(t)}})):"function"==typeof define&&define.amd?new Promise((function(t,e){try{require(["dompurify"],t)}catch(t){e(t)}})):Promise.reject(new Error("Could not load dompurify"))).catch((function(t){return Promise.reject(new Error("Could not load dompurify: "+t))})).then((function(t){return t.default?t.default:t}))}var o=function(t){var r=e(t);return"undefined"===r?"undefined":"string"===r||t instanceof String?"string":"number"===r||t instanceof Number?"number":"function"===r||t instanceof Function?"function":t&&t.constructor===Array?"array":t&&1===t.nodeType?"element":"object"===r?"object":"unknown"},s=function(t,e){var r=document.createElement(t);for(var n in e.className&&(r.className=e.className),e.innerHTML&&e.dompurify&&(r.innerHTML=e.dompurify.sanitize(e.innerHTML)),e.style)r.style[n]=e.style[n];return r},c=function t(e){var r=Object.assign(t.convert(Promise.resolve()),JSON.parse(JSON.stringify(t.template))),n=t.convert(Promise.resolve(),r);return n=(n=n.setProgress(1,t,1,[t])).set(e)};(c.prototype=Object.create(Promise.prototype)).constructor=c,c.convert=function(t,e){return t.__proto__=e||c.prototype,t},c.template={prop:{src:null,container:null,overlay:null,canvas:null,img:null,pdf:null,pageSize:null,callback:function(){}},progress:{val:0,state:null,n:0,stack:[]},opt:{filename:"file.pdf",margin:[0,0,0,0],enableLinks:!0,x:0,y:0,html2canvas:{},jsPDF:{},backgroundColor:"transparent"}},c.prototype.from=function(t,e){return this.then((function(){switch(e=e||function(t){switch(o(t)){case"string":return"string";case"element":return"canvas"===t.nodeName.toLowerCase()?"canvas":"element";default:return"unknown"}}(t)){case"string":return this.then(a).then((function(e){return this.set({src:s("div",{innerHTML:t,dompurify:e})})}));case"element":return this.set({src:t});case"canvas":return this.set({canvas:t});case"img":return this.set({img:t});default:return this.error("Unknown source type.")}}))},c.prototype.to=function(t){switch(t){case"container":return this.toContainer();case"canvas":return this.toCanvas();case"img":return this.toImg();case"pdf":return this.toPdf();default:return this.error("Invalid target.")}},c.prototype.toContainer=function(){return this.thenList([function(){return this.prop.src||this.error("Cannot duplicate - no source HTML.")},function(){return this.prop.pageSize||this.setPageSize()}]).then((function(){var t={position:"relative",display:"inline-block",width:("number"!=typeof this.opt.width||isNaN(this.opt.width)||"number"!=typeof this.opt.windowWidth||isNaN(this.opt.windowWidth)?Math.max(this.prop.src.clientWidth,this.prop.src.scrollWidth,this.prop.src.offsetWidth):this.opt.windowWidth)+"px",left:0,right:0,top:0,margin:"auto",backgroundColor:this.opt.backgroundColor},e=function t(e,r){for(var n=3===e.nodeType?document.createTextNode(e.nodeValue):e.cloneNode(!1),i=e.firstChild;i;i=i.nextSibling)!0!==r&&1===i.nodeType&&"SCRIPT"===i.nodeName||n.appendChild(t(i,r));return 1===e.nodeType&&("CANVAS"===e.nodeName?(n.width=e.width,n.height=e.height,n.getContext("2d").drawImage(e,0,0)):"TEXTAREA"!==e.nodeName&&"SELECT"!==e.nodeName||(n.value=e.value),n.addEventListener("load",(function(){n.scrollTop=e.scrollTop,n.scrollLeft=e.scrollLeft}),!0)),n}(this.prop.src,this.opt.html2canvas.javascriptEnabled);"BODY"===e.tagName&&(t.height=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)+"px"),this.prop.overlay=s("div",{className:"html2pdf__overlay",style:{position:"fixed",overflow:"hidden",zIndex:1e3,left:"-100000px",right:0,bottom:0,top:0}}),this.prop.container=s("div",{className:"html2pdf__container",style:t}),this.prop.container.appendChild(e),this.prop.container.firstChild.appendChild(s("div",{style:{clear:"both",border:"0 none transparent",margin:0,padding:0,height:0}})),this.prop.container.style.float="none",this.prop.overlay.appendChild(this.prop.container),document.body.appendChild(this.prop.overlay),this.prop.container.firstChild.style.position="relative",this.prop.container.height=Math.max(this.prop.container.firstChild.clientHeight,this.prop.container.firstChild.scrollHeight,this.prop.container.firstChild.offsetHeight)+"px"}))},c.prototype.toCanvas=function(){var t=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(t).then(i).then((function(t){var e=Object.assign({},this.opt.html2canvas);return delete e.onrendered,t(this.prop.container,e)})).then((function(t){(this.opt.html2canvas.onrendered||function(){})(t),this.prop.canvas=t,document.body.removeChild(this.prop.overlay)}))},c.prototype.toContext2d=function(){var t=[function(){return document.body.contains(this.prop.container)||this.toContainer()}];return this.thenList(t).then(i).then((function(t){var e=this.opt.jsPDF,r=this.opt.fontFaces,n="number"!=typeof this.opt.width||isNaN(this.opt.width)||"number"!=typeof this.opt.windowWidth||isNaN(this.opt.windowWidth)?1:this.opt.width/this.opt.windowWidth,i=Object.assign({async:!0,allowTaint:!0,scale:n,scrollX:this.opt.scrollX||0,scrollY:this.opt.scrollY||0,backgroundColor:"#ffffff",imageTimeout:15e3,logging:!0,proxy:null,removeContainer:!0,foreignObjectRendering:!1,useCORS:!1},this.opt.html2canvas);if(delete i.onrendered,e.context2d.autoPaging=void 0===this.opt.autoPaging||this.opt.autoPaging,e.context2d.posX=this.opt.x,e.context2d.posY=this.opt.y,e.context2d.margin=this.opt.margin,e.context2d.fontFaces=r,r)for(var a=0;a<r.length;++a){var o=r[a],s=o.src.find((function(t){return"truetype"===t.format}));s&&e.addFont(s.url,o.ref.name,o.ref.style)}return i.windowHeight=i.windowHeight||0,i.windowHeight=0==i.windowHeight?Math.max(this.prop.container.clientHeight,this.prop.container.scrollHeight,this.prop.container.offsetHeight):i.windowHeight,e.context2d.save(!0),t(this.prop.container,i)})).then((function(t){this.opt.jsPDF.context2d.restore(!0),(this.opt.html2canvas.onrendered||function(){})(t),this.prop.canvas=t,document.body.removeChild(this.prop.overlay)}))},c.prototype.toImg=function(){return this.thenList([function(){return this.prop.canvas||this.toCanvas()}]).then((function(){var t=this.prop.canvas.toDataURL("image/"+this.opt.image.type,this.opt.image.quality);this.prop.img=document.createElement("img"),this.prop.img.src=t}))},c.prototype.toPdf=function(){return this.thenList([function(){return this.toContext2d()}]).then((function(){this.prop.pdf=this.prop.pdf||this.opt.jsPDF}))},c.prototype.output=function(t,e,r){return"img"===(r=r||"pdf").toLowerCase()||"image"===r.toLowerCase()?this.outputImg(t,e):this.outputPdf(t,e)},c.prototype.outputPdf=function(t,e){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then((function(){return this.prop.pdf.output(t,e)}))},c.prototype.outputImg=function(t){return this.thenList([function(){return this.prop.img||this.toImg()}]).then((function(){switch(t){case void 0:case"img":return this.prop.img;case"datauristring":case"dataurlstring":return this.prop.img.src;case"datauri":case"dataurl":return document.location.href=this.prop.img.src;default:throw'Image output type "'+t+'" is not supported.'}}))},c.prototype.save=function(t){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).set(t?{filename:t}:null).then((function(){this.prop.pdf.save(this.opt.filename)}))},c.prototype.doCallback=function(){return this.thenList([function(){return this.prop.pdf||this.toPdf()}]).then((function(){this.prop.callback(this.prop.pdf)}))},c.prototype.set=function(t){if("object"!==o(t))return this;var e=Object.keys(t||{}).map((function(e){if(e in c.template.prop)return function(){this.prop[e]=t[e]};switch(e){case"margin":return this.setMargin.bind(this,t.margin);case"jsPDF":return function(){return this.opt.jsPDF=t.jsPDF,this.setPageSize()};case"pageSize":return this.setPageSize.bind(this,t.pageSize);default:return function(){this.opt[e]=t[e]}}}),this);return this.then((function(){return this.thenList(e)}))},c.prototype.get=function(t,e){return this.then((function(){var r=t in c.template.prop?this.prop[t]:this.opt[t];return e?e(r):r}))},c.prototype.setMargin=function(t){return this.then((function(){switch(o(t)){case"number":t=[t,t,t,t];case"array":if(2===t.length&&(t=[t[0],t[1],t[0],t[1]]),4===t.length)break;default:return this.error("Invalid margin array.")}this.opt.margin=t})).then(this.setPageSize)},c.prototype.setPageSize=function(t){function e(t,e){return Math.floor(t*e/72*96)}return this.then((function(){(t=t||M.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner")||(t.inner={width:t.width-this.opt.margin[1]-this.opt.margin[3],height:t.height-this.opt.margin[0]-this.opt.margin[2]},t.inner.px={width:e(t.inner.width,t.k),height:e(t.inner.height,t.k)},t.inner.ratio=t.inner.height/t.inner.width),this.prop.pageSize=t}))},c.prototype.setProgress=function(t,e,r,n){return null!=t&&(this.progress.val=t),null!=e&&(this.progress.state=e),null!=r&&(this.progress.n=r),null!=n&&(this.progress.stack=n),this.progress.ratio=this.progress.val/this.progress.state,this},c.prototype.updateProgress=function(t,e,r,n){return this.setProgress(t?this.progress.val+t:null,e||null,r?this.progress.n+r:null,n?this.progress.stack.concat(n):null)},c.prototype.then=function(t,e){var r=this;return this.thenCore(t,e,(function(t,e){return r.updateProgress(null,null,1,[t]),Promise.prototype.then.call(this,(function(e){return r.updateProgress(null,t),e})).then(t,e).then((function(t){return r.updateProgress(1),t}))}))},c.prototype.thenCore=function(t,e,r){r=r||Promise.prototype.then;t&&(t=t.bind(this)),e&&(e=e.bind(this));var n=-1!==Promise.toString().indexOf("[native code]")&&"Promise"===Promise.name?this:c.convert(Object.assign({},this),Promise.prototype),i=r.call(n,t,e);return c.convert(i,this.__proto__)},c.prototype.thenExternal=function(t,e){return Promise.prototype.then.call(this,t,e)},c.prototype.thenList=function(t){var e=this;return t.forEach((function(t){e=e.thenCore(t)})),e},c.prototype.catch=function(t){t&&(t=t.bind(this));var e=Promise.prototype.catch.call(this,t);return c.convert(e,this)},c.prototype.catchExternal=function(t){return Promise.prototype.catch.call(this,t)},c.prototype.error=function(t){return this.then((function(){throw new Error(t)}))},c.prototype.using=c.prototype.set,c.prototype.saveAs=c.prototype.save,c.prototype.export=c.prototype.output,c.prototype.run=c.prototype.then,M.getPageSize=function(t,r,n){if("object"===e(t)){var i=t;t=i.orientation,r=i.unit||r,n=i.format||n}r=r||"mm",n=n||"a4",t=(""+(t||"P")).toLowerCase();var a,o=(""+n).toLowerCase(),s={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};switch(r){case"pt":a=1;break;case"mm":a=72/25.4;break;case"cm":a=72/2.54;break;case"in":a=72;break;case"px":a=.75;break;case"pc":case"em":a=12;break;case"ex":a=6;break;default:throw"Invalid unit: "+r}var c,u=0,l=0;if(s.hasOwnProperty(o))u=s[o][1]/a,l=s[o][0]/a;else try{u=n[1],l=n[0]}catch(t){throw new Error("Invalid format: "+n)}if("p"===t||"portrait"===t)t="p",l>u&&(c=l,l=u,u=c);else{if("l"!==t&&"landscape"!==t)throw"Invalid orientation: "+t;t="l",u>l&&(c=l,l=u,u=c)}return{width:l,height:u,unit:r,k:a,orientation:t}},n.html=function(t,e){(e=e||{}).callback=e.callback||function(){},e.html2canvas=e.html2canvas||{},e.html2canvas.canvas=e.html2canvas.canvas||this.canvas,e.jsPDF=e.jsPDF||this,e.fontFaces=e.fontFaces?e.fontFaces.map(Ct):null;var r=new c(e);return e.worker?r:r.from(t).doCallback()}}(M.API), +/** + * @license + * ==================================================================== + * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * ==================================================================== + */ +function(t){var e,r,n;t.addJS=function(t){return n=t,this.internal.events.subscribe("postPutResources",(function(){e=this.internal.newObject(),this.internal.out("<<"),this.internal.out("/Names [(EmbeddedJS) "+(e+1)+" 0 R]"),this.internal.out(">>"),this.internal.out("endobj"),r=this.internal.newObject(),this.internal.out("<<"),this.internal.out("/S /JavaScript"),this.internal.out("/JS ("+n+")"),this.internal.out(">>"),this.internal.out("endobj")})),this.internal.events.subscribe("putCatalog",(function(){void 0!==e&&void 0!==r&&this.internal.out("/Names <</JavaScript "+e+" 0 R>>")})),this}}(M.API), +/** + * @license + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e;t.events.push(["postPutResources",function(){var t=this,r=/^(\d+) 0 obj$/;if(this.outline.root.children.length>0)for(var n=t.outline.render().split(/\r\n/),i=0;i<n.length;i++){var a=n[i],o=r.exec(a);if(null!=o){var s=o[1];t.internal.newObjectDeferredBegin(s,!1)}t.internal.write(a)}if(this.outline.createNamedDestinations){var c=this.internal.pages.length,u=[];for(i=0;i<c;i++){var l=t.internal.newObject();u.push(l);var h=t.internal.getPageInfo(i+1);t.internal.write("<< /D["+h.objId+" 0 R /XYZ null null null]>> endobj")}var f=t.internal.newObject();t.internal.write("<< /Names [ ");for(i=0;i<u.length;i++)t.internal.write("(page_"+(i+1)+")"+u[i]+" 0 R");t.internal.write(" ] >>","endobj"),e=t.internal.newObject(),t.internal.write("<< /Dests "+f+" 0 R"),t.internal.write(">>","endobj")}}]),t.events.push(["putCatalog",function(){this.outline.root.children.length>0&&(this.internal.write("/Outlines",this.outline.makeRef(this.outline.root)),this.outline.createNamedDestinations&&this.internal.write("/Names "+e+" 0 R"))}]),t.events.push(["initialized",function(){var t=this;t.outline={createNamedDestinations:!1,root:{children:[]}},t.outline.add=function(t,e,r){var n={title:e,options:r,children:[]};return null==t&&(t=this.root),t.children.push(n),n},t.outline.render=function(){return this.ctx={},this.ctx.val="",this.ctx.pdf=t,this.genIds_r(this.root),this.renderRoot(this.root),this.renderItems(this.root),this.ctx.val},t.outline.genIds_r=function(e){e.id=t.internal.newObjectDeferred();for(var r=0;r<e.children.length;r++)this.genIds_r(e.children[r])},t.outline.renderRoot=function(t){this.objStart(t),this.line("/Type /Outlines"),t.children.length>0&&(this.line("/First "+this.makeRef(t.children[0])),this.line("/Last "+this.makeRef(t.children[t.children.length-1]))),this.line("/Count "+this.count_r({count:0},t)),this.objEnd()},t.outline.renderItems=function(e){for(var r=this.ctx.pdf.internal.getVerticalCoordinateString,n=0;n<e.children.length;n++){var i=e.children[n];this.objStart(i),this.line("/Title "+this.makeString(i.title)),this.line("/Parent "+this.makeRef(e)),n>0&&this.line("/Prev "+this.makeRef(e.children[n-1])),n<e.children.length-1&&this.line("/Next "+this.makeRef(e.children[n+1])),i.children.length>0&&(this.line("/First "+this.makeRef(i.children[0])),this.line("/Last "+this.makeRef(i.children[i.children.length-1])));var a=this.count=this.count_r({count:0},i);if(a>0&&this.line("/Count "+a),i.options&&i.options.pageNumber){var o=t.internal.getPageInfo(i.options.pageNumber);this.line("/Dest ["+o.objId+" 0 R /XYZ 0 "+r(0)+" 0]")}this.objEnd()}for(var s=0;s<e.children.length;s++)this.renderItems(e.children[s])},t.outline.line=function(t){this.ctx.val+=t+"\r\n"},t.outline.makeRef=function(t){return t.id+" 0 R"},t.outline.makeString=function(e){return"("+t.internal.pdfEscape(e)+")"},t.outline.objStart=function(t){this.ctx.val+="\r\n"+t.id+" 0 obj\r\n<<\r\n"},t.outline.objEnd=function(){this.ctx.val+=">> \r\nendobj\r\n"},t.outline.count_r=function(t,e){for(var r=0;r<e.children.length;r++)t.count++,this.count_r(t,e.children[r]);return t.count}}])}(M.API), +/** + * @license + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e=[192,193,194,195,196,197,198,199];t.processJPEG=function(t,r,n,i,a,o){var s,c=this.decode.DCT_DECODE,u=null;if("string"==typeof t||this.__addimage__.isArrayBuffer(t)||this.__addimage__.isArrayBufferView(t)){switch(t=a||t,t=this.__addimage__.isArrayBuffer(t)?new Uint8Array(t):t,(s=function(t){for(var r,n=256*t.charCodeAt(4)+t.charCodeAt(5),i=t.length,a={width:0,height:0,numcomponents:1},o=4;o<i;o+=2){if(o+=n,-1!==e.indexOf(t.charCodeAt(o+1))){r=256*t.charCodeAt(o+5)+t.charCodeAt(o+6),a={width:256*t.charCodeAt(o+7)+t.charCodeAt(o+8),height:r,numcomponents:t.charCodeAt(o+9)};break}n=256*t.charCodeAt(o+2)+t.charCodeAt(o+3)}return a}(t=this.__addimage__.isArrayBufferView(t)?this.__addimage__.arrayBufferToBinaryString(t):t)).numcomponents){case 1:o=this.color_spaces.DEVICE_GRAY;break;case 4:o=this.color_spaces.DEVICE_CMYK;break;case 3:o=this.color_spaces.DEVICE_RGB}u={data:t,width:s.width,height:s.height,colorSpace:o,bitsPerComponent:8,filter:c,index:r,alias:n}}return u}}(M.API);var ke,Fe,Ie,Ce,je,Oe=function(){var t,e,n;function i(t){var e,r,n,i,a,o,s,c,u,l,h,f,d,p;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},o=null;;){switch(e=this.readUInt32(),u=function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"acTL":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case"PLTE":this.palette=this.read(e);break;case"fcTL":o&&this.animation.frames.push(o),this.pos+=4,o={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},a=this.readUInt16(),i=this.readUInt16()||100,o.delay=1e3*a/i,o.disposeOp=this.data[this.pos++],o.blendOp=this.data[this.pos++],o.data=[];break;case"IDAT":case"fdAT":for("fdAT"===u&&(this.pos+=4,e-=4),t=(null!=o?o.data:void 0)||this.imgData,f=0;0<=e?f<e:f>e;0<=e?++f:--f)t.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(n=this.palette.length/3,this.transparency.indexed=this.read(e),this.transparency.indexed.length>n)throw new Error("More transparent colors than palette size");if((l=n-this.transparency.indexed.length)>0)for(d=0;0<=l?d<l:d>l;0<=l?++d:--d)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case"tEXt":s=(h=this.read(e)).indexOf(0),c=String.fromCharCode.apply(String,h.slice(0,s)),this.text[c]=String.fromCharCode.apply(String,h.slice(s+1));break;case"IEND":return o&&this.animation.frames.push(o),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(p=this.colorType)||6===p,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}i.prototype.read=function(t){var e,r;for(r=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)r.push(this.data[this.pos++]);return r},i.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},i.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},i.prototype.decodePixels=function(t){var e=this.pixelBitlength/8,r=new Uint8Array(this.width*this.height*e),n=0,i=this;if(null==t&&(t=this.imgData),0===t.length)return new Uint8Array(0);function a(a,o,s,c){var u,l,h,f,d,p,g,m,v,b,y,w,N,L,A,x,S,_,P,k,F,I=Math.ceil((i.width-a)/s),C=Math.ceil((i.height-o)/c),j=i.width==I&&i.height==C;for(L=e*I,w=j?r:new Uint8Array(L*C),p=t.length,N=0,l=0;N<C&&n<p;){switch(t[n++]){case 0:for(f=S=0;S<L;f=S+=1)w[l++]=t[n++];break;case 1:for(f=_=0;_<L;f=_+=1)u=t[n++],d=f<e?0:w[l-e],w[l++]=(u+d)%256;break;case 2:for(f=P=0;P<L;f=P+=1)u=t[n++],h=(f-f%e)/e,A=N&&w[(N-1)*L+h*e+f%e],w[l++]=(A+u)%256;break;case 3:for(f=k=0;k<L;f=k+=1)u=t[n++],h=(f-f%e)/e,d=f<e?0:w[l-e],A=N&&w[(N-1)*L+h*e+f%e],w[l++]=(u+Math.floor((d+A)/2))%256;break;case 4:for(f=F=0;F<L;f=F+=1)u=t[n++],h=(f-f%e)/e,d=f<e?0:w[l-e],0===N?A=x=0:(A=w[(N-1)*L+h*e+f%e],x=h&&w[(N-1)*L+(h-1)*e+f%e]),g=d+A-x,m=Math.abs(g-d),b=Math.abs(g-A),y=Math.abs(g-x),v=m<=b&&m<=y?d:b<=y?A:x,w[l++]=(u+v)%256;break;default:throw new Error("Invalid filter algorithm: "+t[n-1])}if(!j){var O=((o+N*c)*i.width+a)*e,B=N*L;for(f=0;f<I;f+=1){for(var M=0;M<e;M+=1)r[O++]=w[B++];O+=(s-1)*e}}N++}}return t=Pe(t),1==i.interlaceMethod?(a(0,0,8,8),a(4,0,8,8),a(0,4,4,8),a(2,0,4,4),a(0,2,2,4),a(1,0,2,2),a(0,1,1,2)):a(0,0,1,1),r},i.prototype.decodePalette=function(){var t,e,r,n,i,a,o,s,c;for(r=this.palette,a=this.transparency.indexed||[],i=new Uint8Array((a.length||0)+r.length),n=0,t=0,e=o=0,s=r.length;o<s;e=o+=3)i[n++]=r[e],i[n++]=r[e+1],i[n++]=r[e+2],i[n++]=null!=(c=a[t++])?c:255;return i},i.prototype.copyToImageData=function(t,e){var r,n,i,a,o,s,c,u,l,h,f;if(n=this.colors,l=null,r=this.hasAlphaChannel,this.palette.length&&(l=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),n=4,r=!0),u=(i=t.data||t).length,o=l||e,a=s=0,1===n)for(;a<u;)c=l?4*e[a/4]:s,h=o[c++],i[a++]=h,i[a++]=h,i[a++]=h,i[a++]=r?o[c++]:255,s=c;else for(;a<u;)c=l?4*e[a/4]:s,i[a++]=o[c++],i[a++]=o[c++],i[a++]=o[c++],i[a++]=r?o[c++]:255,s=c},i.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4),this.copyToImageData(t,this.decodePixels()),t};var a=function(){if("[object Window]"===Object.prototype.toString.call(r)){try{e=r.document.createElement("canvas"),n=e.getContext("2d")}catch(t){return!1}return!0}return!1};return a(),t=function(t){var r;if(!0===a())return n.width=t.width,n.height=t.height,n.clearRect(0,0,t.width,t.height),n.putImageData(t,0,0),(r=new Image).src=e.toDataURL(),r;throw new Error("This method requires a Browser with Canvas-capability.")},i.prototype.decodeFrames=function(e){var r,n,i,a,o,s,c,u;if(this.animation){for(u=[],n=o=0,s=(c=this.animation.frames).length;o<s;n=++o)r=c[n],i=e.createImageData(r.width,r.height),a=this.decodePixels(new Uint8Array(r.data)),this.copyToImageData(i,a),r.imageData=i,u.push(r.image=t(i));return u}},i.prototype.renderFrame=function(t,e){var r,n,i;return r=(n=this.animation.frames)[e],i=n[e-1],0===e&&t.clearRect(0,0,this.width,this.height),1===(null!=i?i.disposeOp:void 0)?t.clearRect(i.xOffset,i.yOffset,i.width,i.height):2===(null!=i?i.disposeOp:void 0)&&t.putImageData(i.imageData,i.xOffset,i.yOffset),0===r.blendOp&&t.clearRect(r.xOffset,r.yOffset,r.width,r.height),t.drawImage(r.image,r.xOffset,r.yOffset)},i.prototype.animate=function(t){var e,r,n,i,a,o,s=this;return r=0,o=this.animation,i=o.numFrames,n=o.frames,a=o.numPlays,(e=function(){var o,c;if(o=r++%i,c=n[o],s.renderFrame(t,o),i>1&&r/i<a)return s.animation._timeout=setTimeout(e,c.delay)})()},i.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)},i.prototype.render=function(t){var e,r;return t._png&&t._png.stopAnimation(),t._png=this,t.width=this.width,t.height=this.height,e=t.getContext("2d"),this.animation?(this.decodeFrames(e),this.animate(e)):(r=e.createImageData(this.width,this.height),this.copyToImageData(r,this.decodePixels()),e.putImageData(r,0,0))},i}(); +/** + * @license + * + * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * ==================================================================== + */ +/** + * @license + * (c) Dean McNamee <dean@gmail.com>, 2013. + * + * https://github.com/deanm/omggif + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * omggif is a JavaScript implementation of a GIF 89a encoder and decoder, + * including animation and compression. It does not rely on any specific + * underlying system, so should run in the browser, Node, or Plask. + */ +function Be(t){var e=0;if(71!==t[e++]||73!==t[e++]||70!==t[e++]||56!==t[e++]||56!=(t[e++]+1&253)||97!==t[e++])throw new Error("Invalid GIF 87a/89a header.");var r=t[e++]|t[e++]<<8,n=t[e++]|t[e++]<<8,i=t[e++],a=i>>7,o=1<<(7&i)+1;t[e++];t[e++];var s=null,c=null;a&&(s=e,c=o,e+=3*o);var u=!0,l=[],h=0,f=null,d=0,p=null;for(this.width=r,this.height=n;u&&e<t.length;)switch(t[e++]){case 33:switch(t[e++]){case 255:if(11!==t[e]||78==t[e+1]&&69==t[e+2]&&84==t[e+3]&&83==t[e+4]&&67==t[e+5]&&65==t[e+6]&&80==t[e+7]&&69==t[e+8]&&50==t[e+9]&&46==t[e+10]&&48==t[e+11]&&3==t[e+12]&&1==t[e+13]&&0==t[e+16])e+=14,p=t[e++]|t[e++]<<8,e++;else for(e+=12;;){if(!((P=t[e++])>=0))throw Error("Invalid block size");if(0===P)break;e+=P}break;case 249:if(4!==t[e++]||0!==t[e+4])throw new Error("Invalid graphics extension block.");var g=t[e++];h=t[e++]|t[e++]<<8,f=t[e++],0==(1&g)&&(f=null),d=g>>2&7,e++;break;case 254:for(;;){if(!((P=t[e++])>=0))throw Error("Invalid block size");if(0===P)break;e+=P}break;default:throw new Error("Unknown graphic control label: 0x"+t[e-1].toString(16))}break;case 44:var m=t[e++]|t[e++]<<8,v=t[e++]|t[e++]<<8,b=t[e++]|t[e++]<<8,y=t[e++]|t[e++]<<8,w=t[e++],N=w>>6&1,L=1<<(7&w)+1,A=s,x=c,S=!1;if(w>>7){S=!0;A=e,x=L,e+=3*L}var _=e;for(e++;;){var P;if(!((P=t[e++])>=0))throw Error("Invalid block size");if(0===P)break;e+=P}l.push({x:m,y:v,width:b,height:y,has_local_palette:S,palette_offset:A,palette_size:x,data_offset:_,data_length:e-_,transparent_index:f,interlaced:!!N,delay:h,disposal:d});break;case 59:u=!1;break;default:throw new Error("Unknown gif block: 0x"+t[e-1].toString(16))}this.numFrames=function(){return l.length},this.loopCount=function(){return p},this.frameInfo=function(t){if(t<0||t>=l.length)throw new Error("Frame index out of range.");return l[t]},this.decodeAndBlitFrameBGRA=function(e,n){var i=this.frameInfo(e),a=i.width*i.height,o=new Uint8Array(a);Me(t,i.data_offset,o,a);var s=i.palette_offset,c=i.transparent_index;null===c&&(c=256);var u=i.width,l=r-u,h=u,f=4*(i.y*r+i.x),d=4*((i.y+i.height)*r+i.x),p=f,g=4*l;!0===i.interlaced&&(g+=4*r*7);for(var m=8,v=0,b=o.length;v<b;++v){var y=o[v];if(0===h&&(h=u,(p+=g)>=d&&(g=4*l+4*r*(m-1),p=f+(u+l)*(m<<1),m>>=1)),y===c)p+=4;else{var w=t[s+3*y],N=t[s+3*y+1],L=t[s+3*y+2];n[p++]=L,n[p++]=N,n[p++]=w,n[p++]=255}--h}},this.decodeAndBlitFrameRGBA=function(e,n){var i=this.frameInfo(e),a=i.width*i.height,o=new Uint8Array(a);Me(t,i.data_offset,o,a);var s=i.palette_offset,c=i.transparent_index;null===c&&(c=256);var u=i.width,l=r-u,h=u,f=4*(i.y*r+i.x),d=4*((i.y+i.height)*r+i.x),p=f,g=4*l;!0===i.interlaced&&(g+=4*r*7);for(var m=8,v=0,b=o.length;v<b;++v){var y=o[v];if(0===h&&(h=u,(p+=g)>=d&&(g=4*l+4*r*(m-1),p=f+(u+l)*(m<<1),m>>=1)),y===c)p+=4;else{var w=t[s+3*y],N=t[s+3*y+1],L=t[s+3*y+2];n[p++]=w,n[p++]=N,n[p++]=L,n[p++]=255}--h}}}function Me(t,e,r,n){for(var a=t[e++],o=1<<a,s=o+1,c=s+1,u=a+1,l=(1<<u)-1,h=0,f=0,d=0,p=t[e++],g=new Int32Array(4096),m=null;;){for(;h<16&&0!==p;)f|=t[e++]<<h,h+=8,1===p?p=t[e++]:--p;if(h<u)break;var v=f&l;if(f>>=u,h-=u,v!==o){if(v===s)break;for(var b=v<c?v:m,y=0,w=b;w>o;)w=g[w]>>8,++y;var N=w;if(d+y+(b!==v?1:0)>n)return void i.log("Warning, gif stream longer than expected.");r[d++]=N;var L=d+=y;for(b!==v&&(r[d++]=N),w=b;y--;)w=g[w],r[--L]=255&w,w>>=8;null!==m&&c<4096&&(g[c++]=m<<8|N,c>=l+1&&u<12&&(++u,l=l<<1|1)),m=v}else c=s+1,l=(1<<(u=a+1))-1,m=null}return d!==n&&i.log("Warning, gif stream shorter than expected."),r} +/** + * @license + Copyright (c) 2008, Adobe Systems Incorporated + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Adobe Systems Incorporated nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */function Ee(t){var e,r,n,i,a,o=Math.floor,s=new Array(64),c=new Array(64),u=new Array(64),l=new Array(64),h=new Array(65535),f=new Array(65535),d=new Array(64),p=new Array(64),g=[],m=0,v=7,b=new Array(64),y=new Array(64),w=new Array(64),N=new Array(256),L=new Array(2048),A=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],x=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],S=[0,1,2,3,4,5,6,7,8,9,10,11],_=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],P=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],k=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],F=[0,1,2,3,4,5,6,7,8,9,10,11],I=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],C=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function j(t,e){for(var r=0,n=0,i=new Array,a=1;a<=16;a++){for(var o=1;o<=t[a];o++)i[e[n]]=[],i[e[n]][0]=r,i[e[n]][1]=a,n++,r++;r*=2}return i}function O(t){for(var e=t[0],r=t[1]-1;r>=0;)e&1<<r&&(m|=1<<v),r--,--v<0&&(255==m?(B(255),B(0)):B(m),v=7,m=0)}function B(t){g.push(t)}function M(t){B(t>>8&255),B(255&t)}function E(t,e,r,n,i){for(var a,o=i[0],s=i[240],c=function(t,e){var r,n,i,a,o,s,c,u,l,h,f=0;for(l=0;l<8;++l){r=t[f],n=t[f+1],i=t[f+2],a=t[f+3],o=t[f+4],s=t[f+5],c=t[f+6];var p=r+(u=t[f+7]),g=r-u,m=n+c,v=n-c,b=i+s,y=i-s,w=a+o,N=a-o,L=p+w,A=p-w,x=m+b,S=m-b;t[f]=L+x,t[f+4]=L-x;var _=.707106781*(S+A);t[f+2]=A+_,t[f+6]=A-_;var P=.382683433*((L=N+y)-(S=v+g)),k=.5411961*L+P,F=1.306562965*S+P,I=.707106781*(x=y+v),C=g+I,j=g-I;t[f+5]=j+k,t[f+3]=j-k,t[f+1]=C+F,t[f+7]=C-F,f+=8}for(f=0,l=0;l<8;++l){r=t[f],n=t[f+8],i=t[f+16],a=t[f+24],o=t[f+32],s=t[f+40],c=t[f+48];var O=r+(u=t[f+56]),B=r-u,M=n+c,E=n-c,q=i+s,D=i-s,R=a+o,T=a-o,U=O+R,z=O-R,H=M+q,W=M-q;t[f]=U+H,t[f+32]=U-H;var V=.707106781*(W+z);t[f+16]=z+V,t[f+48]=z-V;var G=.382683433*((U=T+D)-(W=E+B)),Y=.5411961*U+G,J=1.306562965*W+G,X=.707106781*(H=D+E),K=B+X,Z=B-X;t[f+40]=Z+Y,t[f+24]=Z-Y,t[f+8]=K+J,t[f+56]=K-J,f++}for(l=0;l<64;++l)h=t[l]*e[l],d[l]=h>0?h+.5|0:h-.5|0;return d}(t,e),u=0;u<64;++u)p[A[u]]=c[u];var l=p[0]-r;r=p[0],0==l?O(n[0]):(O(n[f[a=32767+l]]),O(h[a]));for(var g=63;g>0&&0==p[g];)g--;if(0==g)return O(o),r;for(var m,v=1;v<=g;){for(var b=v;0==p[v]&&v<=g;)++v;var y=v-b;if(y>=16){m=y>>4;for(var w=1;w<=m;++w)O(s);y&=15}a=32767+p[v],O(i[(y<<4)+f[a]]),O(h[a]),v++}return 63!=g&&O(o),r}function q(t){(t=Math.min(Math.max(t,1),100),a!=t)&&(!function(t){for(var e=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],r=0;r<64;r++){var n=o((e[r]*t+50)/100);n=Math.min(Math.max(n,1),255),s[A[r]]=n}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],a=0;a<64;a++){var h=o((i[a]*t+50)/100);h=Math.min(Math.max(h,1),255),c[A[a]]=h}for(var f=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],d=0,p=0;p<8;p++)for(var g=0;g<8;g++)u[d]=1/(s[A[d]]*f[p]*f[g]*8),l[d]=1/(c[A[d]]*f[p]*f[g]*8),d++}(t<50?Math.floor(5e3/t):Math.floor(200-2*t)),a=t)}this.encode=function(t,a){a&&q(a),g=new Array,m=0,v=7,M(65496),M(65504),M(16),B(74),B(70),B(73),B(70),B(0),B(1),B(1),B(0),M(1),M(1),B(0),B(0),function(){M(65499),M(132),B(0);for(var t=0;t<64;t++)B(s[t]);B(1);for(var e=0;e<64;e++)B(c[e])}(),function(t,e){M(65472),M(17),B(8),M(e),M(t),B(3),B(1),B(17),B(0),B(2),B(17),B(1),B(3),B(17),B(1)}(t.width,t.height),function(){M(65476),M(418),B(0);for(var t=0;t<16;t++)B(x[t+1]);for(var e=0;e<=11;e++)B(S[e]);B(16);for(var r=0;r<16;r++)B(_[r+1]);for(var n=0;n<=161;n++)B(P[n]);B(1);for(var i=0;i<16;i++)B(k[i+1]);for(var a=0;a<=11;a++)B(F[a]);B(17);for(var o=0;o<16;o++)B(I[o+1]);for(var s=0;s<=161;s++)B(C[s])}(),M(65498),M(12),B(3),B(1),B(0),B(2),B(17),B(3),B(17),B(0),B(63),B(0);var o=0,h=0,f=0;m=0,v=7,this.encode.displayName="_encode_";for(var d,p,N,A,j,D,R,T,U,z=t.data,H=t.width,W=t.height,V=4*H,G=0;G<W;){for(d=0;d<V;){for(j=V*G+d,R=-1,T=0,U=0;U<64;U++)D=j+(T=U>>3)*V+(R=4*(7&U)),G+T>=W&&(D-=V*(G+1+T-W)),d+R>=V&&(D-=d+R-V+4),p=z[D++],N=z[D++],A=z[D++],b[U]=(L[p]+L[N+256>>0]+L[A+512>>0]>>16)-128,y[U]=(L[p+768>>0]+L[N+1024>>0]+L[A+1280>>0]>>16)-128,w[U]=(L[p+1280>>0]+L[N+1536>>0]+L[A+1792>>0]>>16)-128;o=E(b,u,o,e,n),h=E(y,l,h,r,i),f=E(w,l,f,r,i),d+=32}G+=8}if(v>=0){var Y=[];Y[1]=v+1,Y[0]=(1<<v+1)-1,O(Y)}return M(65497),new Uint8Array(g)},t=t||50,function(){for(var t=String.fromCharCode,e=0;e<256;e++)N[e]=t(e)}(),e=j(x,S),r=j(k,F),n=j(_,P),i=j(I,C),function(){for(var t=1,e=2,r=1;r<=15;r++){for(var n=t;n<e;n++)f[32767+n]=r,h[32767+n]=[],h[32767+n][1]=r,h[32767+n][0]=n;for(var i=-(e-1);i<=-t;i++)f[32767+i]=r,h[32767+i]=[],h[32767+i][1]=r,h[32767+i][0]=e-1+i;t<<=1,e<<=1}}(),function(){for(var t=0;t<256;t++)L[t]=19595*t,L[t+256>>0]=38470*t,L[t+512>>0]=7471*t+32768,L[t+768>>0]=-11059*t,L[t+1024>>0]=-21709*t,L[t+1280>>0]=32768*t+8421375,L[t+1536>>0]=-27439*t,L[t+1792>>0]=-5329*t}(),q(t)} +/** + * @license + * Copyright (c) 2017 Aras Abbasi + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */function qe(t,e){if(this.pos=0,this.buffer=t,this.datav=new DataView(t.buffer),this.is_with_alpha=!!e,this.bottom_up=!0,this.flag=String.fromCharCode(this.buffer[0])+String.fromCharCode(this.buffer[1]),this.pos+=2,-1===["BM","BA","CI","CP","IC","PT"].indexOf(this.flag))throw new Error("Invalid BMP File");this.parseHeader(),this.parseBGR()}function De(t){function e(t){if(!t)throw Error("assert :P")}function r(t,e,r){for(var n=0;4>n;n++)if(t[e+n]!=r.charCodeAt(n))return!0;return!1}function n(t,e,r,n,i){for(var a=0;a<i;a++)t[e+a]=r[n+a]}function i(t,e,r,n){for(var i=0;i<n;i++)t[e+i]=r}function a(t){return new Int32Array(t)}function o(t,e){for(var r=[],n=0;n<t;n++)r.push(new e);return r}function s(t,e){var r=[];return function t(r,n,i){for(var a=i[n],o=0;o<a&&(r.push(i.length>n+1?[]:new e),!(i.length<n+1));o++)t(r[o],n+1,i)}(r,0,t),r}var c=function(){var t=this;function c(t,e){for(var r=1<<e-1>>>0;t&r;)r>>>=1;return r?(t&r-1)+r:t}function u(t,r,n,i,a){e(!(i%n));do{t[r+(i-=n)]=a}while(0<i)}function l(t,r,n,i,o){if(e(2328>=o),512>=o)var s=a(512);else if(null==(s=a(o)))return 0;return function(t,r,n,i,o,s){var l,f,d=r,p=1<<n,g=a(16),m=a(16);for(e(0!=o),e(null!=i),e(null!=t),e(0<n),f=0;f<o;++f){if(15<i[f])return 0;++g[i[f]]}if(g[0]==o)return 0;for(m[1]=0,l=1;15>l;++l){if(g[l]>1<<l)return 0;m[l+1]=m[l]+g[l]}for(f=0;f<o;++f)l=i[f],0<i[f]&&(s[m[l]++]=f);if(1==m[15])return(i=new h).g=0,i.value=s[0],u(t,d,1,p,i),p;var v,b=-1,y=p-1,w=0,N=1,L=1,A=1<<n;for(f=0,l=1,o=2;l<=n;++l,o<<=1){if(N+=L<<=1,0>(L-=g[l]))return 0;for(;0<g[l];--g[l])(i=new h).g=l,i.value=s[f++],u(t,d+w,o,A,i),w=c(w,l)}for(l=n+1,o=2;15>=l;++l,o<<=1){if(N+=L<<=1,0>(L-=g[l]))return 0;for(;0<g[l];--g[l]){if(i=new h,(w&y)!=b){for(d+=A,v=1<<(b=l)-n;15>b&&!(0>=(v-=g[b]));)++b,v<<=1;p+=A=1<<(v=b-n),t[r+(b=w&y)].g=v+n,t[r+b].value=d-r-b}i.g=l-n,i.value=s[f++],u(t,d+(w>>n),o,A,i),w=c(w,l)}}return N!=2*m[15]-1?0:p}(t,r,n,i,o,s)}function h(){this.value=this.g=0}function f(){this.value=this.g=0}function d(){this.G=o(5,h),this.H=a(5),this.jc=this.Qb=this.qb=this.nd=0,this.pd=o(Dr,f)}function p(t,r,n,i){e(null!=t),e(null!=r),e(2147483648>i),t.Ca=254,t.I=0,t.b=-8,t.Ka=0,t.oa=r,t.pa=n,t.Jd=r,t.Yc=n+i,t.Zc=4<=i?n+i-4+1:n,_(t)}function g(t,e){for(var r=0;0<e--;)r|=k(t,128)<<e;return r}function m(t,e){var r=g(t,e);return P(t)?-r:r}function v(t,r,n,i){var a,o=0;for(e(null!=t),e(null!=r),e(4294967288>i),t.Sb=i,t.Ra=0,t.u=0,t.h=0,4<i&&(i=4),a=0;a<i;++a)o+=r[n+a]<<8*a;t.Ra=o,t.bb=i,t.oa=r,t.pa=n}function b(t){for(;8<=t.u&&t.bb<t.Sb;)t.Ra>>>=8,t.Ra+=t.oa[t.pa+t.bb]<<Ur-8>>>0,++t.bb,t.u-=8;A(t)&&(t.h=1,t.u=0)}function y(t,r){if(e(0<=r),!t.h&&r<=Tr){var n=L(t)&Rr[r];return t.u+=r,b(t),n}return t.h=1,t.u=0}function w(){this.b=this.Ca=this.I=0,this.oa=[],this.pa=0,this.Jd=[],this.Yc=0,this.Zc=[],this.Ka=0}function N(){this.Ra=0,this.oa=[],this.h=this.u=this.bb=this.Sb=this.pa=0}function L(t){return t.Ra>>>(t.u&Ur-1)>>>0}function A(t){return e(t.bb<=t.Sb),t.h||t.bb==t.Sb&&t.u>Ur}function x(t,e){t.u=e,t.h=A(t)}function S(t){t.u>=zr&&(e(t.u>=zr),b(t))}function _(t){e(null!=t&&null!=t.oa),t.pa<t.Zc?(t.I=(t.oa[t.pa++]|t.I<<8)>>>0,t.b+=8):(e(null!=t&&null!=t.oa),t.pa<t.Yc?(t.b+=8,t.I=t.oa[t.pa++]|t.I<<8):t.Ka?t.b=0:(t.I<<=8,t.b+=8,t.Ka=1))}function P(t){return g(t,1)}function k(t,e){var r=t.Ca;0>t.b&&_(t);var n=t.b,i=r*e>>>8,a=(t.I>>>n>i)+0;for(a?(r-=i,t.I-=i+1<<n>>>0):r=i+1,n=r,i=0;256<=n;)i+=8,n>>=8;return n=7^i+Hr[n],t.b-=n,t.Ca=(r<<n)-1,a}function F(t,e,r){t[e+0]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r>>0&255}function I(t,e){return t[e+0]<<0|t[e+1]<<8}function C(t,e){return I(t,e)|t[e+2]<<16}function j(t,e){return I(t,e)|I(t,e+2)<<16}function O(t,r){var n=1<<r;return e(null!=t),e(0<r),t.X=a(n),null==t.X?0:(t.Mb=32-r,t.Xa=r,1)}function B(t,r){e(null!=t),e(null!=r),e(t.Xa==r.Xa),n(r.X,0,t.X,0,1<<r.Xa)}function M(){this.X=[],this.Xa=this.Mb=0}function E(t,r,n,i){e(null!=n),e(null!=i);var a=n[0],o=i[0];return 0==a&&(a=(t*o+r/2)/r),0==o&&(o=(r*a+t/2)/t),0>=a||0>=o?0:(n[0]=a,i[0]=o,1)}function q(t,e){return t+(1<<e)-1>>>e}function D(t,e){return((4278255360&t)+(4278255360&e)>>>0&4278255360)+((16711935&t)+(16711935&e)>>>0&16711935)>>>0}function R(e,r){t[r]=function(r,n,i,a,o,s,c){var u;for(u=0;u<o;++u){var l=t[e](s[c+u-1],i,a+u);s[c+u]=D(r[n+u],l)}}}function T(){this.ud=this.hd=this.jd=0}function U(t,e){return((4278124286&(t^e))>>>1)+(t&e)>>>0}function z(t){return 0<=t&&256>t?t:0>t?0:255<t?255:void 0}function H(t,e){return z(t+(t-e+.5>>1))}function W(t,e,r){return Math.abs(e-r)-Math.abs(t-r)}function V(t,e,r,n,i,a,o){for(n=a[o-1],r=0;r<i;++r)a[o+r]=n=D(t[e+r],n)}function G(t,e,r,n,i){var a;for(a=0;a<r;++a){var o=t[e+a],s=o>>8&255,c=16711935&(c=(c=16711935&o)+((s<<16)+s));n[i+a]=(4278255360&o)+c>>>0}}function Y(t,e){e.jd=t>>0&255,e.hd=t>>8&255,e.ud=t>>16&255}function J(t,e,r,n,i,a){var o;for(o=0;o<n;++o){var s=e[r+o],c=s>>>8,u=s,l=255&(l=(l=s>>>16)+((t.jd<<24>>24)*(c<<24>>24)>>>5));u=255&(u=(u=u+((t.hd<<24>>24)*(c<<24>>24)>>>5))+((t.ud<<24>>24)*(l<<24>>24)>>>5));i[a+o]=(4278255360&s)+(l<<16)+u}}function X(e,r,n,i,a){t[r]=function(t,e,r,n,o,s,c,u,l){for(n=c;n<u;++n)for(c=0;c<l;++c)o[s++]=a(r[i(t[e++])])},t[e]=function(e,r,o,s,c,u,l){var h=8>>e.b,f=e.Ea,d=e.K[0],p=e.w;if(8>h)for(e=(1<<e.b)-1,p=(1<<h)-1;r<o;++r){var g,m=0;for(g=0;g<f;++g)g&e||(m=i(s[c++])),u[l++]=a(d[m&p]),m>>=h}else t["VP8LMapColor"+n](s,c,d,p,u,l,r,o,f)}}function K(t,e,r,n,i){for(r=e+r;e<r;){var a=t[e++];n[i++]=a>>16&255,n[i++]=a>>8&255,n[i++]=a>>0&255}}function Z(t,e,r,n,i){for(r=e+r;e<r;){var a=t[e++];n[i++]=a>>16&255,n[i++]=a>>8&255,n[i++]=a>>0&255,n[i++]=a>>24&255}}function $(t,e,r,n,i){for(r=e+r;e<r;){var a=(o=t[e++])>>16&240|o>>12&15,o=o>>0&240|o>>28&15;n[i++]=a,n[i++]=o}}function Q(t,e,r,n,i){for(r=e+r;e<r;){var a=(o=t[e++])>>16&248|o>>13&7,o=o>>5&224|o>>3&31;n[i++]=a,n[i++]=o}}function tt(t,e,r,n,i){for(r=e+r;e<r;){var a=t[e++];n[i++]=a>>0&255,n[i++]=a>>8&255,n[i++]=a>>16&255}}function et(t,e,r,i,a,o){if(0==o)for(r=e+r;e<r;)F(i,((o=t[e++])[0]>>24|o[1]>>8&65280|o[2]<<8&16711680|o[3]<<24)>>>0),a+=32;else n(i,a,t,e,r)}function rt(e,r){t[r][0]=t[e+"0"],t[r][1]=t[e+"1"],t[r][2]=t[e+"2"],t[r][3]=t[e+"3"],t[r][4]=t[e+"4"],t[r][5]=t[e+"5"],t[r][6]=t[e+"6"],t[r][7]=t[e+"7"],t[r][8]=t[e+"8"],t[r][9]=t[e+"9"],t[r][10]=t[e+"10"],t[r][11]=t[e+"11"],t[r][12]=t[e+"12"],t[r][13]=t[e+"13"],t[r][14]=t[e+"0"],t[r][15]=t[e+"0"]}function nt(t){return t==Hn||t==Wn||t==Vn||t==Gn}function it(){this.eb=[],this.size=this.A=this.fb=0}function at(){this.y=[],this.f=[],this.ea=[],this.F=[],this.Tc=this.Ed=this.Cd=this.Fd=this.lb=this.Db=this.Ab=this.fa=this.J=this.W=this.N=this.O=0}function ot(){this.Rd=this.height=this.width=this.S=0,this.f={},this.f.RGBA=new it,this.f.kb=new at,this.sd=null}function st(){this.width=[0],this.height=[0],this.Pd=[0],this.Qd=[0],this.format=[0]}function ct(){this.Id=this.fd=this.Md=this.hb=this.ib=this.da=this.bd=this.cd=this.j=this.v=this.Da=this.Sd=this.ob=0}function ut(t){return alert("todo:WebPSamplerProcessPlane"),t.T}function lt(t,e){var r=t.T,i=e.ba.f.RGBA,a=i.eb,o=i.fb+t.ka*i.A,s=vi[e.ba.S],c=t.y,u=t.O,l=t.f,h=t.N,f=t.ea,d=t.W,p=e.cc,g=e.dc,m=e.Mc,v=e.Nc,b=t.ka,y=t.ka+t.T,w=t.U,N=w+1>>1;for(0==b?s(c,u,null,null,l,h,f,d,l,h,f,d,a,o,null,null,w):(s(e.ec,e.fc,c,u,p,g,m,v,l,h,f,d,a,o-i.A,a,o,w),++r);b+2<y;b+=2)p=l,g=h,m=f,v=d,h+=t.Rc,d+=t.Rc,o+=2*i.A,s(c,(u+=2*t.fa)-t.fa,c,u,p,g,m,v,l,h,f,d,a,o-i.A,a,o,w);return u+=t.fa,t.j+y<t.o?(n(e.ec,e.fc,c,u,w),n(e.cc,e.dc,l,h,N),n(e.Mc,e.Nc,f,d,N),r--):1&y||s(c,u,null,null,l,h,f,d,l,h,f,d,a,o+i.A,null,null,w),r}function ht(t,r,n){var i=t.F,a=[t.J];if(null!=i){var o=t.U,s=r.ba.S,c=s==Tn||s==Vn;r=r.ba.f.RGBA;var u=[0],l=t.ka;u[0]=t.T,t.Kb&&(0==l?--u[0]:(--l,a[0]-=t.width),t.j+t.ka+t.T==t.o&&(u[0]=t.o-t.j-l));var h=r.eb;l=r.fb+l*r.A;t=Sn(i,a[0],t.width,o,u,h,l+(c?0:3),r.A),e(n==u),t&&nt(s)&&An(h,l,c,o,u,r.A)}return 0}function ft(t){var e=t.ma,r=e.ba.S,n=11>r,i=r==qn||r==Rn||r==Tn||r==Un||12==r||nt(r);if(e.memory=null,e.Ib=null,e.Jb=null,e.Nd=null,!Mr(e.Oa,t,i?11:12))return 0;if(i&&nt(r)&&br(),t.da)alert("todo:use_scaling");else{if(n){if(e.Ib=ut,t.Kb){if(r=t.U+1>>1,e.memory=a(t.U+2*r),null==e.memory)return 0;e.ec=e.memory,e.fc=0,e.cc=e.ec,e.dc=e.fc+t.U,e.Mc=e.cc,e.Nc=e.dc+r,e.Ib=lt,br()}}else alert("todo:EmitYUV");i&&(e.Jb=ht,n&&mr())}if(n&&!Ci){for(t=0;256>t;++t)ji[t]=89858*(t-128)+_i>>Si,Mi[t]=-22014*(t-128)+_i,Bi[t]=-45773*(t-128),Oi[t]=113618*(t-128)+_i>>Si;for(t=Pi;t<ki;++t)e=76283*(t-16)+_i>>Si,Ei[t-Pi]=Vt(e,255),qi[t-Pi]=Vt(e+8>>4,15);Ci=1}return 1}function dt(t){var r=t.ma,n=t.U,i=t.T;return e(!(1&t.ka)),0>=n||0>=i?0:(n=r.Ib(t,r),null!=r.Jb&&r.Jb(t,r,n),r.Dc+=n,1)}function pt(t){t.ma.memory=null}function gt(t,e,r,n){return 47!=y(t,8)?0:(e[0]=y(t,14)+1,r[0]=y(t,14)+1,n[0]=y(t,1),0!=y(t,3)?0:!t.h)}function mt(t,e){if(4>t)return t+1;var r=t-2>>1;return(2+(1&t)<<r)+y(e,r)+1}function vt(t,e){return 120<e?e-120:1<=(r=((r=$n[e-1])>>4)*t+(8-(15&r)))?r:1;var r}function bt(t,e,r){var n=L(r),i=t[e+=255&n].g-8;return 0<i&&(x(r,r.u+8),n=L(r),e+=t[e].value,e+=n&(1<<i)-1),x(r,r.u+t[e].g),t[e].value}function yt(t,r,n){return n.g+=t.g,n.value+=t.value<<r>>>0,e(8>=n.g),t.g}function wt(t,r,n){var i=t.xc;return e((r=0==i?0:t.vc[t.md*(n>>i)+(r>>i)])<t.Wb),t.Ya[r]}function Nt(t,r,i,a){var o=t.ab,s=t.c*r,c=t.C;r=c+r;var u=i,l=a;for(a=t.Ta,i=t.Ua;0<o--;){var h=t.gc[o],f=c,d=r,p=u,g=l,m=(l=a,u=i,h.Ea);switch(e(f<d),e(d<=h.nc),h.hc){case 2:Gr(p,g,(d-f)*m,l,u);break;case 0:var v=f,b=d,y=l,w=u,N=(_=h).Ea;0==v&&(Wr(p,g,null,null,1,y,w),V(p,g+1,0,0,N-1,y,w+1),g+=N,w+=N,++v);for(var L=1<<_.b,A=L-1,x=q(N,_.b),S=_.K,_=_.w+(v>>_.b)*x;v<b;){var P=S,k=_,F=1;for(Vr(p,g,y,w-N,1,y,w);F<N;){var I=(F&~A)+L;I>N&&(I=N),(0,Zr[P[k++]>>8&15])(p,g+ +F,y,w+F-N,I-F,y,w+F),F=I}g+=N,w+=N,++v&A||(_+=x)}d!=h.nc&&n(l,u-m,l,u+(d-f-1)*m,m);break;case 1:for(m=p,b=g,N=(p=h.Ea)-(w=p&~(y=(g=1<<h.b)-1)),v=q(p,h.b),L=h.K,h=h.w+(f>>h.b)*v;f<d;){for(A=L,x=h,S=new T,_=b+w,P=b+p;b<_;)Y(A[x++],S),$r(S,m,b,g,l,u),b+=g,u+=g;b<P&&(Y(A[x++],S),$r(S,m,b,N,l,u),b+=N,u+=N),++f&y||(h+=v)}break;case 3:if(p==l&&g==u&&0<h.b){for(b=l,p=m=u+(d-f)*m-(w=(d-f)*q(h.Ea,h.b)),g=l,y=u,v=[],w=(N=w)-1;0<=w;--w)v[w]=g[y+w];for(w=N-1;0<=w;--w)b[p+w]=v[w];Yr(h,f,d,l,m,l,u)}else Yr(h,f,d,p,g,l,u)}u=a,l=i}l!=i&&n(a,i,u,l,s)}function Lt(t,r){var n=t.V,i=t.Ba+t.c*t.C,a=r-t.C;if(e(r<=t.l.o),e(16>=a),0<a){var o=t.l,s=t.Ta,c=t.Ua,u=o.width;if(Nt(t,a,n,i),a=c=[c],e((n=t.C)<(i=r)),e(o.v<o.va),i>o.o&&(i=o.o),n<o.j){var l=o.j-n;n=o.j;a[0]+=l*u}if(n>=i?n=0:(a[0]+=4*o.v,o.ka=n-o.j,o.U=o.va-o.v,o.T=i-n,n=1),n){if(c=c[0],11>(n=t.ca).S){var h=n.f.RGBA,f=(i=n.S,a=o.U,o=o.T,l=h.eb,h.A),d=o;for(h=h.fb+t.Ma*h.A;0<d--;){var p=s,g=c,m=a,v=l,b=h;switch(i){case En:Qr(p,g,m,v,b);break;case qn:tn(p,g,m,v,b);break;case Hn:tn(p,g,m,v,b),An(v,b,0,m,1,0);break;case Dn:nn(p,g,m,v,b);break;case Rn:et(p,g,m,v,b,1);break;case Wn:et(p,g,m,v,b,1),An(v,b,0,m,1,0);break;case Tn:et(p,g,m,v,b,0);break;case Vn:et(p,g,m,v,b,0),An(v,b,1,m,1,0);break;case Un:en(p,g,m,v,b);break;case Gn:en(p,g,m,v,b),xn(v,b,m,1,0);break;case zn:rn(p,g,m,v,b);break;default:e(0)}c+=u,h+=f}t.Ma+=o}else alert("todo:EmitRescaledRowsYUVA");e(t.Ma<=n.height)}}t.C=r,e(t.C<=t.i)}function At(t){var e;if(0<t.ua)return 0;for(e=0;e<t.Wb;++e){var r=t.Ya[e].G,n=t.Ya[e].H;if(0<r[1][n[1]+0].g||0<r[2][n[2]+0].g||0<r[3][n[3]+0].g)return 0}return 1}function xt(t,r,n,i,a,o){if(0!=t.Z){var s=t.qd,c=t.rd;for(e(null!=mi[t.Z]);r<n;++r)mi[t.Z](s,c,i,a,i,a,o),s=i,c=a,a+=o;t.qd=s,t.rd=c}}function St(t,r){var n=t.l.ma,i=0==n.Z||1==n.Z?t.l.j:t.C;i=t.C<i?i:t.C;if(e(r<=t.l.o),r>i){var a=t.l.width,o=n.ca,s=n.tb+a*i,c=t.V,u=t.Ba+t.c*i,l=t.gc;e(1==t.ab),e(3==l[0].hc),Xr(l[0],i,r,c,u,o,s),xt(n,i,r,o,s,a)}t.C=t.Ma=r}function _t(t,r,n,i,a,o,s){var c=t.$/i,u=t.$%i,l=t.m,h=t.s,f=n+t.$,d=f;a=n+i*a;var p=n+i*o,g=280+h.ua,m=t.Pb?c:16777216,v=0<h.ua?h.Wa:null,b=h.wc,y=f<p?wt(h,u,c):null;e(t.C<o),e(p<=a);var w=!1;t:for(;;){for(;w||f<p;){var N=0;if(c>=m){var _=f-n;e((m=t).Pb),m.wd=m.m,m.xd=_,0<m.s.ua&&B(m.s.Wa,m.s.vb),m=c+ti}if(u&b||(y=wt(h,u,c)),e(null!=y),y.Qb&&(r[f]=y.qb,w=!0),!w)if(S(l),y.jc){N=l,_=r;var P=f,k=y.pd[L(N)&Dr-1];e(y.jc),256>k.g?(x(N,N.u+k.g),_[P]=k.value,N=0):(x(N,N.u+k.g-256),e(256<=k.value),N=k.value),0==N&&(w=!0)}else N=bt(y.G[0],y.H[0],l);if(l.h)break;if(w||256>N){if(!w)if(y.nd)r[f]=(y.qb|N<<8)>>>0;else{if(S(l),w=bt(y.G[1],y.H[1],l),S(l),_=bt(y.G[2],y.H[2],l),P=bt(y.G[3],y.H[3],l),l.h)break;r[f]=(P<<24|w<<16|N<<8|_)>>>0}if(w=!1,++f,++u>=i&&(u=0,++c,null!=s&&c<=o&&!(c%16)&&s(t,c),null!=v))for(;d<f;)N=r[d++],v.X[(506832829*N&4294967295)>>>v.Mb]=N}else if(280>N){if(N=mt(N-256,l),_=bt(y.G[4],y.H[4],l),S(l),_=vt(i,_=mt(_,l)),l.h)break;if(f-n<_||a-f<N)break t;for(P=0;P<N;++P)r[f+P]=r[f+P-_];for(f+=N,u+=N;u>=i;)u-=i,++c,null!=s&&c<=o&&!(c%16)&&s(t,c);if(e(f<=a),u&b&&(y=wt(h,u,c)),null!=v)for(;d<f;)N=r[d++],v.X[(506832829*N&4294967295)>>>v.Mb]=N}else{if(!(N<g))break t;for(w=N-280,e(null!=v);d<f;)N=r[d++],v.X[(506832829*N&4294967295)>>>v.Mb]=N;N=f,e(!(w>>>(_=v).Xa)),r[N]=_.X[w],w=!0}w||e(l.h==A(l))}if(t.Pb&&l.h&&f<a)e(t.m.h),t.a=5,t.m=t.wd,t.$=t.xd,0<t.s.ua&&B(t.s.vb,t.s.Wa);else{if(l.h)break t;null!=s&&s(t,c>o?o:c),t.a=0,t.$=f-n}return 1}return t.a=3,0}function Pt(t){e(null!=t),t.vc=null,t.yc=null,t.Ya=null;var r=t.Wa;null!=r&&(r.X=null),t.vb=null,e(null!=t)}function kt(){var e=new or;return null==e?null:(e.a=0,e.xb=gi,rt("Predictor","VP8LPredictors"),rt("Predictor","VP8LPredictors_C"),rt("PredictorAdd","VP8LPredictorsAdd"),rt("PredictorAdd","VP8LPredictorsAdd_C"),Gr=G,$r=J,Qr=K,tn=Z,en=$,rn=Q,nn=tt,t.VP8LMapColor32b=Jr,t.VP8LMapColor8b=Kr,e)}function Ft(t,r,n,s,c){var u=1,f=[t],p=[r],g=s.m,m=s.s,v=null,b=0;t:for(;;){if(n)for(;u&&y(g,1);){var w=f,N=p,A=s,_=1,P=A.m,k=A.gc[A.ab],F=y(P,2);if(A.Oc&1<<F)u=0;else{switch(A.Oc|=1<<F,k.hc=F,k.Ea=w[0],k.nc=N[0],k.K=[null],++A.ab,e(4>=A.ab),F){case 0:case 1:k.b=y(P,3)+2,_=Ft(q(k.Ea,k.b),q(k.nc,k.b),0,A,k.K),k.K=k.K[0];break;case 3:var I,C=y(P,8)+1,j=16<C?0:4<C?1:2<C?2:3;if(w[0]=q(k.Ea,j),k.b=j,I=_=Ft(C,1,0,A,k.K)){var B,M=C,E=k,R=1<<(8>>E.b),T=a(R);if(null==T)I=0;else{var U=E.K[0],z=E.w;for(T[0]=E.K[0][0],B=1;B<1*M;++B)T[B]=D(U[z+B],T[B-1]);for(;B<4*R;++B)T[B]=0;E.K[0]=null,E.K[0]=T,I=1}}_=I;break;case 2:break;default:e(0)}u=_}}if(f=f[0],p=p[0],u&&y(g,1)&&!(u=1<=(b=y(g,4))&&11>=b)){s.a=3;break t}var H;if(H=u)e:{var W,V,G,Y=s,J=f,X=p,K=b,Z=n,$=Y.m,Q=Y.s,tt=[null],et=1,rt=0,nt=Qn[K];r:for(;;){if(Z&&y($,1)){var it=y($,3)+2,at=q(J,it),ot=q(X,it),st=at*ot;if(!Ft(at,ot,0,Y,tt))break r;for(tt=tt[0],Q.xc=it,W=0;W<st;++W){var ct=tt[W]>>8&65535;tt[W]=ct,ct>=et&&(et=ct+1)}}if($.h)break r;for(V=0;5>V;++V){var ut=Xn[V];!V&&0<K&&(ut+=1<<K),rt<ut&&(rt=ut)}var lt=o(et*nt,h),ht=et,ft=o(ht,d);if(null==ft)var dt=null;else e(65536>=ht),dt=ft;var pt=a(rt);if(null==dt||null==pt||null==lt){Y.a=1;break r}var gt=lt;for(W=G=0;W<et;++W){var mt=dt[W],vt=mt.G,bt=mt.H,wt=0,Nt=1,Lt=0;for(V=0;5>V;++V){ut=Xn[V],vt[V]=gt,bt[V]=G,!V&&0<K&&(ut+=1<<K);n:{var At,xt=ut,St=Y,kt=pt,It=gt,Ct=G,jt=0,Ot=St.m,Bt=y(Ot,1);if(i(kt,0,0,xt),Bt){var Mt=y(Ot,1)+1,Et=y(Ot,1),qt=y(Ot,0==Et?1:8);kt[qt]=1,2==Mt&&(kt[qt=y(Ot,8)]=1);var Dt=1}else{var Rt=a(19),Tt=y(Ot,4)+4;if(19<Tt){St.a=3;var Ut=0;break n}for(At=0;At<Tt;++At)Rt[Zn[At]]=y(Ot,3);var zt=void 0,Ht=void 0,Wt=St,Vt=Rt,Gt=xt,Yt=kt,Jt=0,Xt=Wt.m,Kt=8,Zt=o(128,h);i:for(;l(Zt,0,7,Vt,19);){if(y(Xt,1)){var $t=2+2*y(Xt,3);if((zt=2+y(Xt,$t))>Gt)break i}else zt=Gt;for(Ht=0;Ht<Gt&&zt--;){S(Xt);var Qt=Zt[0+(127&L(Xt))];x(Xt,Xt.u+Qt.g);var te=Qt.value;if(16>te)Yt[Ht++]=te,0!=te&&(Kt=te);else{var ee=16==te,re=te-16,ne=Jn[re],ie=y(Xt,Yn[re])+ne;if(Ht+ie>Gt)break i;for(var ae=ee?Kt:0;0<ie--;)Yt[Ht++]=ae}}Jt=1;break i}Jt||(Wt.a=3),Dt=Jt}(Dt=Dt&&!Ot.h)&&(jt=l(It,Ct,8,kt,xt)),Dt&&0!=jt?Ut=jt:(St.a=3,Ut=0)}if(0==Ut)break r;if(Nt&&1==Kn[V]&&(Nt=0==gt[G].g),wt+=gt[G].g,G+=Ut,3>=V){var oe,se=pt[0];for(oe=1;oe<ut;++oe)pt[oe]>se&&(se=pt[oe]);Lt+=se}}if(mt.nd=Nt,mt.Qb=0,Nt&&(mt.qb=(vt[3][bt[3]+0].value<<24|vt[1][bt[1]+0].value<<16|vt[2][bt[2]+0].value)>>>0,0==wt&&256>vt[0][bt[0]+0].value&&(mt.Qb=1,mt.qb+=vt[0][bt[0]+0].value<<8)),mt.jc=!mt.Qb&&6>Lt,mt.jc){var ce,ue=mt;for(ce=0;ce<Dr;++ce){var le=ce,he=ue.pd[le],fe=ue.G[0][ue.H[0]+le];256<=fe.value?(he.g=fe.g+256,he.value=fe.value):(he.g=0,he.value=0,le>>=yt(fe,8,he),le>>=yt(ue.G[1][ue.H[1]+le],16,he),le>>=yt(ue.G[2][ue.H[2]+le],0,he),yt(ue.G[3][ue.H[3]+le],24,he))}}}Q.vc=tt,Q.Wb=et,Q.Ya=dt,Q.yc=lt,H=1;break e}H=0}if(!(u=H)){s.a=3;break t}if(0<b){if(m.ua=1<<b,!O(m.Wa,b)){s.a=1,u=0;break t}}else m.ua=0;var de=s,pe=f,ge=p,me=de.s,ve=me.xc;if(de.c=pe,de.i=ge,me.md=q(pe,ve),me.wc=0==ve?-1:(1<<ve)-1,n){s.xb=pi;break t}if(null==(v=a(f*p))){s.a=1,u=0;break t}u=(u=_t(s,v,0,f,p,p,null))&&!g.h;break t}return u?(null!=c?c[0]=v:(e(null==v),e(n)),s.$=0,n||Pt(m)):Pt(m),u}function It(t,r){var n=t.c*t.i,i=n+r+16*r;return e(t.c<=r),t.V=a(i),null==t.V?(t.Ta=null,t.Ua=0,t.a=1,0):(t.Ta=t.V,t.Ua=t.Ba+n+r,1)}function Ct(t,r){var n=t.C,i=r-n,a=t.V,o=t.Ba+t.c*n;for(e(r<=t.l.o);0<i;){var s=16<i?16:i,c=t.l.ma,u=t.l.width,l=u*s,h=c.ca,f=c.tb+u*n,d=t.Ta,p=t.Ua;Nt(t,s,a,o),_n(d,p,h,f,l),xt(c,n,n+s,h,f,u),i-=s,a+=s*t.c,n+=s}e(n==r),t.C=t.Ma=r}function jt(){this.ub=this.yd=this.td=this.Rb=0}function Ot(){this.Kd=this.Ld=this.Ud=this.Td=this.i=this.c=0}function Bt(){this.Fb=this.Bb=this.Cb=0,this.Zb=a(4),this.Lb=a(4)}function Mt(){this.Yb=function(){var t=[];return function t(e,r,n){for(var i=n[r],a=0;a<i&&(e.push(n.length>r+1?[]:0),!(n.length<r+1));a++)t(e[a],r+1,n)}(t,0,[3,11]),t}()}function Et(){this.jb=a(3),this.Wc=s([4,8],Mt),this.Xc=s([4,17],Mt)}function qt(){this.Pc=this.wb=this.Tb=this.zd=0,this.vd=new a(4),this.od=new a(4)}function Dt(){this.ld=this.La=this.dd=this.tc=0}function Rt(){this.Na=this.la=0}function Tt(){this.Sc=[0,0],this.Eb=[0,0],this.Qc=[0,0],this.ia=this.lc=0}function Ut(){this.ad=a(384),this.Za=0,this.Ob=a(16),this.$b=this.Ad=this.ia=this.Gc=this.Hc=this.Dd=0}function zt(){this.uc=this.M=this.Nb=0,this.wa=Array(new Dt),this.Y=0,this.ya=Array(new Ut),this.aa=0,this.l=new Gt}function Ht(){this.y=a(16),this.f=a(8),this.ea=a(8)}function Wt(){this.cb=this.a=0,this.sc="",this.m=new w,this.Od=new jt,this.Kc=new Ot,this.ed=new qt,this.Qa=new Bt,this.Ic=this.$c=this.Aa=0,this.D=new zt,this.Xb=this.Va=this.Hb=this.zb=this.yb=this.Ub=this.za=0,this.Jc=o(8,w),this.ia=0,this.pb=o(4,Tt),this.Pa=new Et,this.Bd=this.kc=0,this.Ac=[],this.Bc=0,this.zc=[0,0,0,0],this.Gd=Array(new Ht),this.Hd=0,this.rb=Array(new Rt),this.sb=0,this.wa=Array(new Dt),this.Y=0,this.oc=[],this.pc=0,this.sa=[],this.ta=0,this.qa=[],this.ra=0,this.Ha=[],this.B=this.R=this.Ia=0,this.Ec=[],this.M=this.ja=this.Vb=this.Fc=0,this.ya=Array(new Ut),this.L=this.aa=0,this.gd=s([4,2],Dt),this.ga=null,this.Fa=[],this.Cc=this.qc=this.P=0,this.Gb=[],this.Uc=0,this.mb=[],this.nb=0,this.rc=[],this.Ga=this.Vc=0}function Vt(t,e){return 0>t?0:t>e?e:t}function Gt(){this.T=this.U=this.ka=this.height=this.width=0,this.y=[],this.f=[],this.ea=[],this.Rc=this.fa=this.W=this.N=this.O=0,this.ma="void",this.put="VP8IoPutHook",this.ac="VP8IoSetupHook",this.bc="VP8IoTeardownHook",this.ha=this.Kb=0,this.data=[],this.hb=this.ib=this.da=this.o=this.j=this.va=this.v=this.Da=this.ob=this.w=0,this.F=[],this.J=0}function Yt(){var t=new Wt;return null!=t&&(t.a=0,t.sc="OK",t.cb=0,t.Xb=0,ni||(ni=Zt)),t}function Jt(t,e,r){return 0==t.a&&(t.a=e,t.sc=r,t.cb=0),0}function Xt(t,e,r){return 3<=r&&157==t[e+0]&&1==t[e+1]&&42==t[e+2]}function Kt(t,r){if(null==t)return 0;if(t.a=0,t.sc="OK",null==r)return Jt(t,2,"null VP8Io passed to VP8GetHeaders()");var n=r.data,a=r.w,o=r.ha;if(4>o)return Jt(t,7,"Truncated header.");var s=n[a+0]|n[a+1]<<8|n[a+2]<<16,c=t.Od;if(c.Rb=!(1&s),c.td=s>>1&7,c.yd=s>>4&1,c.ub=s>>5,3<c.td)return Jt(t,3,"Incorrect keyframe parameters.");if(!c.yd)return Jt(t,4,"Frame not displayable.");a+=3,o-=3;var u=t.Kc;if(c.Rb){if(7>o)return Jt(t,7,"cannot parse picture header");if(!Xt(n,a,o))return Jt(t,3,"Bad code word");u.c=16383&(n[a+4]<<8|n[a+3]),u.Td=n[a+4]>>6,u.i=16383&(n[a+6]<<8|n[a+5]),u.Ud=n[a+6]>>6,a+=7,o-=7,t.za=u.c+15>>4,t.Ub=u.i+15>>4,r.width=u.c,r.height=u.i,r.Da=0,r.j=0,r.v=0,r.va=r.width,r.o=r.height,r.da=0,r.ib=r.width,r.hb=r.height,r.U=r.width,r.T=r.height,i((s=t.Pa).jb,0,255,s.jb.length),e(null!=(s=t.Qa)),s.Cb=0,s.Bb=0,s.Fb=1,i(s.Zb,0,0,s.Zb.length),i(s.Lb,0,0,s.Lb)}if(c.ub>o)return Jt(t,7,"bad partition length");p(s=t.m,n,a,c.ub),a+=c.ub,o-=c.ub,c.Rb&&(u.Ld=P(s),u.Kd=P(s)),u=t.Qa;var l,h=t.Pa;if(e(null!=s),e(null!=u),u.Cb=P(s),u.Cb){if(u.Bb=P(s),P(s)){for(u.Fb=P(s),l=0;4>l;++l)u.Zb[l]=P(s)?m(s,7):0;for(l=0;4>l;++l)u.Lb[l]=P(s)?m(s,6):0}if(u.Bb)for(l=0;3>l;++l)h.jb[l]=P(s)?g(s,8):255}else u.Bb=0;if(s.Ka)return Jt(t,3,"cannot parse segment header");if((u=t.ed).zd=P(s),u.Tb=g(s,6),u.wb=g(s,3),u.Pc=P(s),u.Pc&&P(s)){for(h=0;4>h;++h)P(s)&&(u.vd[h]=m(s,6));for(h=0;4>h;++h)P(s)&&(u.od[h]=m(s,6))}if(t.L=0==u.Tb?0:u.zd?1:2,s.Ka)return Jt(t,3,"cannot parse filter header");var f=o;if(o=l=a,a=l+f,u=f,t.Xb=(1<<g(t.m,2))-1,f<3*(h=t.Xb))n=7;else{for(l+=3*h,u-=3*h,f=0;f<h;++f){var d=n[o+0]|n[o+1]<<8|n[o+2]<<16;d>u&&(d=u),p(t.Jc[+f],n,l,d),l+=d,u-=d,o+=3}p(t.Jc[+h],n,l,u),n=l<a?0:5}if(0!=n)return Jt(t,n,"cannot parse partitions");for(n=g(l=t.m,7),o=P(l)?m(l,4):0,a=P(l)?m(l,4):0,u=P(l)?m(l,4):0,h=P(l)?m(l,4):0,l=P(l)?m(l,4):0,f=t.Qa,d=0;4>d;++d){if(f.Cb){var v=f.Zb[d];f.Fb||(v+=n)}else{if(0<d){t.pb[d]=t.pb[0];continue}v=n}var b=t.pb[d];b.Sc[0]=ei[Vt(v+o,127)],b.Sc[1]=ri[Vt(v+0,127)],b.Eb[0]=2*ei[Vt(v+a,127)],b.Eb[1]=101581*ri[Vt(v+u,127)]>>16,8>b.Eb[1]&&(b.Eb[1]=8),b.Qc[0]=ei[Vt(v+h,117)],b.Qc[1]=ri[Vt(v+l,127)],b.lc=v+l}if(!c.Rb)return Jt(t,4,"Not a key frame.");for(P(s),c=t.Pa,n=0;4>n;++n){for(o=0;8>o;++o)for(a=0;3>a;++a)for(u=0;11>u;++u)h=k(s,ui[n][o][a][u])?g(s,8):si[n][o][a][u],c.Wc[n][o].Yb[a][u]=h;for(o=0;17>o;++o)c.Xc[n][o]=c.Wc[n][li[o]]}return t.kc=P(s),t.kc&&(t.Bd=g(s,8)),t.cb=1}function Zt(t,e,r,n,i,a,o){var s=e[i].Yb[r];for(r=0;16>i;++i){if(!k(t,s[r+0]))return i;for(;!k(t,s[r+1]);)if(s=e[++i].Yb[0],r=0,16==i)return 16;var c=e[i+1].Yb;if(k(t,s[r+2])){var u=t,l=0;if(k(u,(f=s)[(h=r)+3]))if(k(u,f[h+6])){for(s=0,h=2*(l=k(u,f[h+8]))+(f=k(u,f[h+9+l])),l=0,f=ii[h];f[s];++s)l+=l+k(u,f[s]);l+=3+(8<<h)}else k(u,f[h+7])?(l=7+2*k(u,165),l+=k(u,145)):l=5+k(u,159);else l=k(u,f[h+4])?3+k(u,f[h+5]):2;s=c[2]}else l=1,s=c[1];c=o+ai[i],0>(u=t).b&&_(u);var h,f=u.b,d=(h=u.Ca>>1)-(u.I>>f)>>31;--u.b,u.Ca+=d,u.Ca|=1,u.I-=(h+1&d)<<f,a[c]=((l^d)-d)*n[(0<i)+0]}return 16}function $t(t){var e=t.rb[t.sb-1];e.la=0,e.Na=0,i(t.zc,0,0,t.zc.length),t.ja=0}function Qt(t,r){if(null==t)return 0;if(null==r)return Jt(t,2,"NULL VP8Io parameter in VP8Decode().");if(!t.cb&&!Kt(t,r))return 0;if(e(t.cb),null==r.ac||r.ac(r)){r.ob&&(t.L=0);var s=Ri[t.L];if(2==t.L?(t.yb=0,t.zb=0):(t.yb=r.v-s>>4,t.zb=r.j-s>>4,0>t.yb&&(t.yb=0),0>t.zb&&(t.zb=0)),t.Va=r.o+15+s>>4,t.Hb=r.va+15+s>>4,t.Hb>t.za&&(t.Hb=t.za),t.Va>t.Ub&&(t.Va=t.Ub),0<t.L){var c=t.ed;for(s=0;4>s;++s){var u;if(t.Qa.Cb){var l=t.Qa.Lb[s];t.Qa.Fb||(l+=c.Tb)}else l=c.Tb;for(u=0;1>=u;++u){var h=t.gd[s][u],f=l;if(c.Pc&&(f+=c.vd[0],u&&(f+=c.od[0])),0<(f=0>f?0:63<f?63:f)){var d=f;0<c.wb&&((d=4<c.wb?d>>2:d>>1)>9-c.wb&&(d=9-c.wb)),1>d&&(d=1),h.dd=d,h.tc=2*f+d,h.ld=40<=f?2:15<=f?1:0}else h.tc=0;h.La=u}}}s=0}else Jt(t,6,"Frame setup failed"),s=t.a;if(s=0==s){if(s){t.$c=0,0<t.Aa||(t.Ic=Ui);t:{s=t.Ic;c=4*(d=t.za);var p=32*d,g=d+1,m=0<t.L?d*(0<t.Aa?2:1):0,v=(2==t.Aa?2:1)*d;if((h=c+832+(u=3*(16*s+Ri[t.L])/2*p)+(l=null!=t.Fa&&0<t.Fa.length?t.Kc.c*t.Kc.i:0))!=h)s=0;else{if(h>t.Vb){if(t.Vb=0,t.Ec=a(h),t.Fc=0,null==t.Ec){s=Jt(t,1,"no memory during frame initialization.");break t}t.Vb=h}h=t.Ec,f=t.Fc,t.Ac=h,t.Bc=f,f+=c,t.Gd=o(p,Ht),t.Hd=0,t.rb=o(g+1,Rt),t.sb=1,t.wa=m?o(m,Dt):null,t.Y=0,t.D.Nb=0,t.D.wa=t.wa,t.D.Y=t.Y,0<t.Aa&&(t.D.Y+=d),e(!0),t.oc=h,t.pc=f,f+=832,t.ya=o(v,Ut),t.aa=0,t.D.ya=t.ya,t.D.aa=t.aa,2==t.Aa&&(t.D.aa+=d),t.R=16*d,t.B=8*d,d=(p=Ri[t.L])*t.R,p=p/2*t.B,t.sa=h,t.ta=f+d,t.qa=t.sa,t.ra=t.ta+16*s*t.R+p,t.Ha=t.qa,t.Ia=t.ra+8*s*t.B+p,t.$c=0,f+=u,t.mb=l?h:null,t.nb=l?f:null,e(f+l<=t.Fc+t.Vb),$t(t),i(t.Ac,t.Bc,0,c),s=1}}if(s){if(r.ka=0,r.y=t.sa,r.O=t.ta,r.f=t.qa,r.N=t.ra,r.ea=t.Ha,r.Vd=t.Ia,r.fa=t.R,r.Rc=t.B,r.F=null,r.J=0,!Cn){for(s=-255;255>=s;++s)Pn[255+s]=0>s?-s:s;for(s=-1020;1020>=s;++s)kn[1020+s]=-128>s?-128:127<s?127:s;for(s=-112;112>=s;++s)Fn[112+s]=-16>s?-16:15<s?15:s;for(s=-255;510>=s;++s)In[255+s]=0>s?0:255<s?255:s;Cn=1}an=ue,on=ae,cn=oe,un=se,ln=ce,sn=ie,hn=Je,fn=Xe,dn=$e,pn=Qe,gn=Ke,mn=Ze,vn=tr,bn=er,yn=ze,wn=He,Nn=We,Ln=Ve,fi[0]=xe,fi[1]=he,fi[2]=Le,fi[3]=Ae,fi[4]=Se,fi[5]=Pe,fi[6]=_e,fi[7]=ke,fi[8]=Ie,fi[9]=Fe,hi[0]=ve,hi[1]=de,hi[2]=pe,hi[3]=ge,hi[4]=be,hi[5]=ye,hi[6]=we,di[0]=Be,di[1]=fe,di[2]=Ce,di[3]=je,di[4]=Ee,di[5]=Me,di[6]=qe,s=1}else s=0}s&&(s=function(t,r){for(t.M=0;t.M<t.Va;++t.M){var o,s=t.Jc[t.M&t.Xb],c=t.m,u=t;for(o=0;o<u.za;++o){var l=c,h=u,f=h.Ac,d=h.Bc+4*o,p=h.zc,g=h.ya[h.aa+o];if(h.Qa.Bb?g.$b=k(l,h.Pa.jb[0])?2+k(l,h.Pa.jb[2]):k(l,h.Pa.jb[1]):g.$b=0,h.kc&&(g.Ad=k(l,h.Bd)),g.Za=!k(l,145)+0,g.Za){var m=g.Ob,v=0;for(h=0;4>h;++h){var b,y=p[0+h];for(b=0;4>b;++b){y=ci[f[d+b]][y];for(var w=oi[k(l,y[0])];0<w;)w=oi[2*w+k(l,y[w])];y=-w,f[d+b]=y}n(m,v,f,d,4),v+=4,p[0+h]=y}}else y=k(l,156)?k(l,128)?1:3:k(l,163)?2:0,g.Ob[0]=y,i(f,d,y,4),i(p,0,y,4);g.Dd=k(l,142)?k(l,114)?k(l,183)?1:3:2:0}if(u.m.Ka)return Jt(t,7,"Premature end-of-partition0 encountered.");for(;t.ja<t.za;++t.ja){if(u=s,l=(c=t).rb[c.sb-1],f=c.rb[c.sb+c.ja],o=c.ya[c.aa+c.ja],d=c.kc?o.Ad:0)l.la=f.la=0,o.Za||(l.Na=f.Na=0),o.Hc=0,o.Gc=0,o.ia=0;else{var N,L;l=f,f=u,d=c.Pa.Xc,p=c.ya[c.aa+c.ja],g=c.pb[p.$b];if(h=p.ad,m=0,v=c.rb[c.sb-1],y=b=0,i(h,m,0,384),p.Za)var A=0,x=d[3];else{w=a(16);var S=l.Na+v.Na;if(S=ni(f,d[1],S,g.Eb,0,w,0),l.Na=v.Na=(0<S)+0,1<S)an(w,0,h,m);else{var _=w[0]+3>>3;for(w=0;256>w;w+=16)h[m+w]=_}A=1,x=d[0]}var P=15&l.la,F=15&v.la;for(w=0;4>w;++w){var I=1&F;for(_=L=0;4>_;++_)P=P>>1|(I=(S=ni(f,x,S=I+(1&P),g.Sc,A,h,m))>A)<<7,L=L<<2|(3<S?3:1<S?2:0!=h[m+0]),m+=16;P>>=4,F=F>>1|I<<7,b=(b<<8|L)>>>0}for(x=P,A=F>>4,N=0;4>N;N+=2){for(L=0,P=l.la>>4+N,F=v.la>>4+N,w=0;2>w;++w){for(I=1&F,_=0;2>_;++_)S=I+(1&P),P=P>>1|(I=0<(S=ni(f,d[2],S,g.Qc,0,h,m)))<<3,L=L<<2|(3<S?3:1<S?2:0!=h[m+0]),m+=16;P>>=2,F=F>>1|I<<5}y|=L<<4*N,x|=P<<4<<N,A|=(240&F)<<N}l.la=x,v.la=A,p.Hc=b,p.Gc=y,p.ia=43690&y?0:g.ia,d=!(b|y)}if(0<c.L&&(c.wa[c.Y+c.ja]=c.gd[o.$b][o.Za],c.wa[c.Y+c.ja].La|=!d),u.Ka)return Jt(t,7,"Premature end-of-file encountered.")}if($t(t),c=r,u=1,o=(s=t).D,l=0<s.L&&s.M>=s.zb&&s.M<=s.Va,0==s.Aa)t:{if(o.M=s.M,o.uc=l,Or(s,o),u=1,o=(L=s.D).Nb,l=(y=Ri[s.L])*s.R,f=y/2*s.B,w=16*o*s.R,_=8*o*s.B,d=s.sa,p=s.ta-l+w,g=s.qa,h=s.ra-f+_,m=s.Ha,v=s.Ia-f+_,F=0==(P=L.M),b=P>=s.Va-1,2==s.Aa&&Or(s,L),L.uc)for(I=(S=s).D.M,e(S.D.uc),L=S.yb;L<S.Hb;++L){A=L,x=I;var C=(j=(U=S).D).Nb;N=U.R;var j=j.wa[j.Y+A],O=U.sa,B=U.ta+16*C*N+16*A,M=j.dd,E=j.tc;if(0!=E)if(e(3<=E),1==U.L)0<A&&wn(O,B,N,E+4),j.La&&Ln(O,B,N,E),0<x&&yn(O,B,N,E+4),j.La&&Nn(O,B,N,E);else{var q=U.B,D=U.qa,R=U.ra+8*C*q+8*A,T=U.Ha,U=U.Ia+8*C*q+8*A;C=j.ld;0<A&&(fn(O,B,N,E+4,M,C),pn(D,R,T,U,q,E+4,M,C)),j.La&&(mn(O,B,N,E,M,C),bn(D,R,T,U,q,E,M,C)),0<x&&(hn(O,B,N,E+4,M,C),dn(D,R,T,U,q,E+4,M,C)),j.La&&(gn(O,B,N,E,M,C),vn(D,R,T,U,q,E,M,C))}}if(s.ia&&alert("todo:DitherRow"),null!=c.put){if(L=16*P,P=16*(P+1),F?(c.y=s.sa,c.O=s.ta+w,c.f=s.qa,c.N=s.ra+_,c.ea=s.Ha,c.W=s.Ia+_):(L-=y,c.y=d,c.O=p,c.f=g,c.N=h,c.ea=m,c.W=v),b||(P-=y),P>c.o&&(P=c.o),c.F=null,c.J=null,null!=s.Fa&&0<s.Fa.length&&L<P&&(c.J=hr(s,c,L,P-L),c.F=s.mb,null==c.F&&0==c.F.length)){u=Jt(s,3,"Could not decode alpha data.");break t}L<c.j&&(y=c.j-L,L=c.j,e(!(1&y)),c.O+=s.R*y,c.N+=s.B*(y>>1),c.W+=s.B*(y>>1),null!=c.F&&(c.J+=c.width*y)),L<P&&(c.O+=c.v,c.N+=c.v>>1,c.W+=c.v>>1,null!=c.F&&(c.J+=c.v),c.ka=L-c.j,c.U=c.va-c.v,c.T=P-L,u=c.put(c))}o+1!=s.Ic||b||(n(s.sa,s.ta-l,d,p+16*s.R,l),n(s.qa,s.ra-f,g,h+8*s.B,f),n(s.Ha,s.Ia-f,m,v+8*s.B,f))}if(!u)return Jt(t,6,"Output aborted.")}return 1}(t,r)),null!=r.bc&&r.bc(r),s&=1}return s?(t.cb=0,s):0}function te(t,e,r,n,i){i=t[e+r+32*n]+(i>>3),t[e+r+32*n]=-256&i?0>i?0:255:i}function ee(t,e,r,n,i,a){te(t,e,0,r,n+i),te(t,e,1,r,n+a),te(t,e,2,r,n-a),te(t,e,3,r,n-i)}function re(t){return(20091*t>>16)+t}function ne(t,e,r,n){var i,o=0,s=a(16);for(i=0;4>i;++i){var c=t[e+0]+t[e+8],u=t[e+0]-t[e+8],l=(35468*t[e+4]>>16)-re(t[e+12]),h=re(t[e+4])+(35468*t[e+12]>>16);s[o+0]=c+h,s[o+1]=u+l,s[o+2]=u-l,s[o+3]=c-h,o+=4,e++}for(i=o=0;4>i;++i)c=(t=s[o+0]+4)+s[o+8],u=t-s[o+8],l=(35468*s[o+4]>>16)-re(s[o+12]),te(r,n,0,0,c+(h=re(s[o+4])+(35468*s[o+12]>>16))),te(r,n,1,0,u+l),te(r,n,2,0,u-l),te(r,n,3,0,c-h),o++,n+=32}function ie(t,e,r,n){var i=t[e+0]+4,a=35468*t[e+4]>>16,o=re(t[e+4]),s=35468*t[e+1]>>16;ee(r,n,0,i+o,t=re(t[e+1]),s),ee(r,n,1,i+a,t,s),ee(r,n,2,i-a,t,s),ee(r,n,3,i-o,t,s)}function ae(t,e,r,n,i){ne(t,e,r,n),i&&ne(t,e+16,r,n+4)}function oe(t,e,r,n){on(t,e+0,r,n,1),on(t,e+32,r,n+128,1)}function se(t,e,r,n){var i;for(t=t[e+0]+4,i=0;4>i;++i)for(e=0;4>e;++e)te(r,n,e,i,t)}function ce(t,e,r,n){t[e+0]&&un(t,e+0,r,n),t[e+16]&&un(t,e+16,r,n+4),t[e+32]&&un(t,e+32,r,n+128),t[e+48]&&un(t,e+48,r,n+128+4)}function ue(t,e,r,n){var i,o=a(16);for(i=0;4>i;++i){var s=t[e+0+i]+t[e+12+i],c=t[e+4+i]+t[e+8+i],u=t[e+4+i]-t[e+8+i],l=t[e+0+i]-t[e+12+i];o[0+i]=s+c,o[8+i]=s-c,o[4+i]=l+u,o[12+i]=l-u}for(i=0;4>i;++i)s=(t=o[0+4*i]+3)+o[3+4*i],c=o[1+4*i]+o[2+4*i],u=o[1+4*i]-o[2+4*i],l=t-o[3+4*i],r[n+0]=s+c>>3,r[n+16]=l+u>>3,r[n+32]=s-c>>3,r[n+48]=l-u>>3,n+=64}function le(t,e,r){var n,i=e-32,a=Bn,o=255-t[i-1];for(n=0;n<r;++n){var s,c=a,u=o+t[e-1];for(s=0;s<r;++s)t[e+s]=c[u+t[i+s]];e+=32}}function he(t,e){le(t,e,4)}function fe(t,e){le(t,e,8)}function de(t,e){le(t,e,16)}function pe(t,e){var r;for(r=0;16>r;++r)n(t,e+32*r,t,e-32,16)}function ge(t,e){var r;for(r=16;0<r;--r)i(t,e,t[e-1],16),e+=32}function me(t,e,r){var n;for(n=0;16>n;++n)i(e,r+32*n,t,16)}function ve(t,e){var r,n=16;for(r=0;16>r;++r)n+=t[e-1+32*r]+t[e+r-32];me(n>>5,t,e)}function be(t,e){var r,n=8;for(r=0;16>r;++r)n+=t[e-1+32*r];me(n>>4,t,e)}function ye(t,e){var r,n=8;for(r=0;16>r;++r)n+=t[e+r-32];me(n>>4,t,e)}function we(t,e){me(128,t,e)}function Ne(t,e,r){return t+2*e+r+2>>2}function Le(t,e){var r,i=e-32;i=new Uint8Array([Ne(t[i-1],t[i+0],t[i+1]),Ne(t[i+0],t[i+1],t[i+2]),Ne(t[i+1],t[i+2],t[i+3]),Ne(t[i+2],t[i+3],t[i+4])]);for(r=0;4>r;++r)n(t,e+32*r,i,0,i.length)}function Ae(t,e){var r=t[e-1],n=t[e-1+32],i=t[e-1+64],a=t[e-1+96];F(t,e+0,16843009*Ne(t[e-1-32],r,n)),F(t,e+32,16843009*Ne(r,n,i)),F(t,e+64,16843009*Ne(n,i,a)),F(t,e+96,16843009*Ne(i,a,a))}function xe(t,e){var r,n=4;for(r=0;4>r;++r)n+=t[e+r-32]+t[e-1+32*r];for(n>>=3,r=0;4>r;++r)i(t,e+32*r,n,4)}function Se(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1-32],o=t[e+0-32],s=t[e+1-32],c=t[e+2-32],u=t[e+3-32];t[e+0+96]=Ne(n,i,t[e-1+96]),t[e+1+96]=t[e+0+64]=Ne(r,n,i),t[e+2+96]=t[e+1+64]=t[e+0+32]=Ne(a,r,n),t[e+3+96]=t[e+2+64]=t[e+1+32]=t[e+0+0]=Ne(o,a,r),t[e+3+64]=t[e+2+32]=t[e+1+0]=Ne(s,o,a),t[e+3+32]=t[e+2+0]=Ne(c,s,o),t[e+3+0]=Ne(u,c,s)}function _e(t,e){var r=t[e+1-32],n=t[e+2-32],i=t[e+3-32],a=t[e+4-32],o=t[e+5-32],s=t[e+6-32],c=t[e+7-32];t[e+0+0]=Ne(t[e+0-32],r,n),t[e+1+0]=t[e+0+32]=Ne(r,n,i),t[e+2+0]=t[e+1+32]=t[e+0+64]=Ne(n,i,a),t[e+3+0]=t[e+2+32]=t[e+1+64]=t[e+0+96]=Ne(i,a,o),t[e+3+32]=t[e+2+64]=t[e+1+96]=Ne(a,o,s),t[e+3+64]=t[e+2+96]=Ne(o,s,c),t[e+3+96]=Ne(s,c,c)}function Pe(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1-32],o=t[e+0-32],s=t[e+1-32],c=t[e+2-32],u=t[e+3-32];t[e+0+0]=t[e+1+64]=a+o+1>>1,t[e+1+0]=t[e+2+64]=o+s+1>>1,t[e+2+0]=t[e+3+64]=s+c+1>>1,t[e+3+0]=c+u+1>>1,t[e+0+96]=Ne(i,n,r),t[e+0+64]=Ne(n,r,a),t[e+0+32]=t[e+1+96]=Ne(r,a,o),t[e+1+32]=t[e+2+96]=Ne(a,o,s),t[e+2+32]=t[e+3+96]=Ne(o,s,c),t[e+3+32]=Ne(s,c,u)}function ke(t,e){var r=t[e+0-32],n=t[e+1-32],i=t[e+2-32],a=t[e+3-32],o=t[e+4-32],s=t[e+5-32],c=t[e+6-32],u=t[e+7-32];t[e+0+0]=r+n+1>>1,t[e+1+0]=t[e+0+64]=n+i+1>>1,t[e+2+0]=t[e+1+64]=i+a+1>>1,t[e+3+0]=t[e+2+64]=a+o+1>>1,t[e+0+32]=Ne(r,n,i),t[e+1+32]=t[e+0+96]=Ne(n,i,a),t[e+2+32]=t[e+1+96]=Ne(i,a,o),t[e+3+32]=t[e+2+96]=Ne(a,o,s),t[e+3+64]=Ne(o,s,c),t[e+3+96]=Ne(s,c,u)}function Fe(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1+96];t[e+0+0]=r+n+1>>1,t[e+2+0]=t[e+0+32]=n+i+1>>1,t[e+2+32]=t[e+0+64]=i+a+1>>1,t[e+1+0]=Ne(r,n,i),t[e+3+0]=t[e+1+32]=Ne(n,i,a),t[e+3+32]=t[e+1+64]=Ne(i,a,a),t[e+3+64]=t[e+2+64]=t[e+0+96]=t[e+1+96]=t[e+2+96]=t[e+3+96]=a}function Ie(t,e){var r=t[e-1+0],n=t[e-1+32],i=t[e-1+64],a=t[e-1+96],o=t[e-1-32],s=t[e+0-32],c=t[e+1-32],u=t[e+2-32];t[e+0+0]=t[e+2+32]=r+o+1>>1,t[e+0+32]=t[e+2+64]=n+r+1>>1,t[e+0+64]=t[e+2+96]=i+n+1>>1,t[e+0+96]=a+i+1>>1,t[e+3+0]=Ne(s,c,u),t[e+2+0]=Ne(o,s,c),t[e+1+0]=t[e+3+32]=Ne(r,o,s),t[e+1+32]=t[e+3+64]=Ne(n,r,o),t[e+1+64]=t[e+3+96]=Ne(i,n,r),t[e+1+96]=Ne(a,i,n)}function Ce(t,e){var r;for(r=0;8>r;++r)n(t,e+32*r,t,e-32,8)}function je(t,e){var r;for(r=0;8>r;++r)i(t,e,t[e-1],8),e+=32}function Oe(t,e,r){var n;for(n=0;8>n;++n)i(e,r+32*n,t,8)}function Be(t,e){var r,n=8;for(r=0;8>r;++r)n+=t[e+r-32]+t[e-1+32*r];Oe(n>>4,t,e)}function Me(t,e){var r,n=4;for(r=0;8>r;++r)n+=t[e+r-32];Oe(n>>3,t,e)}function Ee(t,e){var r,n=4;for(r=0;8>r;++r)n+=t[e-1+32*r];Oe(n>>3,t,e)}function qe(t,e){Oe(128,t,e)}function De(t,e,r){var n=t[e-r],i=t[e+0],a=3*(i-n)+jn[1020+t[e-2*r]-t[e+r]],o=On[112+(a+4>>3)];t[e-r]=Bn[255+n+On[112+(a+3>>3)]],t[e+0]=Bn[255+i-o]}function Re(t,e,r,n){var i=t[e+0],a=t[e+r];return Mn[255+t[e-2*r]-t[e-r]]>n||Mn[255+a-i]>n}function Te(t,e,r,n){return 4*Mn[255+t[e-r]-t[e+0]]+Mn[255+t[e-2*r]-t[e+r]]<=n}function Ue(t,e,r,n,i){var a=t[e-3*r],o=t[e-2*r],s=t[e-r],c=t[e+0],u=t[e+r],l=t[e+2*r],h=t[e+3*r];return 4*Mn[255+s-c]+Mn[255+o-u]>n?0:Mn[255+t[e-4*r]-a]<=i&&Mn[255+a-o]<=i&&Mn[255+o-s]<=i&&Mn[255+h-l]<=i&&Mn[255+l-u]<=i&&Mn[255+u-c]<=i}function ze(t,e,r,n){var i=2*n+1;for(n=0;16>n;++n)Te(t,e+n,r,i)&&De(t,e+n,r)}function He(t,e,r,n){var i=2*n+1;for(n=0;16>n;++n)Te(t,e+n*r,1,i)&&De(t,e+n*r,1)}function We(t,e,r,n){var i;for(i=3;0<i;--i)ze(t,e+=4*r,r,n)}function Ve(t,e,r,n){var i;for(i=3;0<i;--i)He(t,e+=4,r,n)}function Ge(t,e,r,n,i,a,o,s){for(a=2*a+1;0<i--;){if(Ue(t,e,r,a,o))if(Re(t,e,r,s))De(t,e,r);else{var c=t,u=e,l=r,h=c[u-2*l],f=c[u-l],d=c[u+0],p=c[u+l],g=c[u+2*l],m=27*(b=jn[1020+3*(d-f)+jn[1020+h-p]])+63>>7,v=18*b+63>>7,b=9*b+63>>7;c[u-3*l]=Bn[255+c[u-3*l]+b],c[u-2*l]=Bn[255+h+v],c[u-l]=Bn[255+f+m],c[u+0]=Bn[255+d-m],c[u+l]=Bn[255+p-v],c[u+2*l]=Bn[255+g-b]}e+=n}}function Ye(t,e,r,n,i,a,o,s){for(a=2*a+1;0<i--;){if(Ue(t,e,r,a,o))if(Re(t,e,r,s))De(t,e,r);else{var c=t,u=e,l=r,h=c[u-l],f=c[u+0],d=c[u+l],p=On[112+((g=3*(f-h))+4>>3)],g=On[112+(g+3>>3)],m=p+1>>1;c[u-2*l]=Bn[255+c[u-2*l]+m],c[u-l]=Bn[255+h+g],c[u+0]=Bn[255+f-p],c[u+l]=Bn[255+d-m]}e+=n}}function Je(t,e,r,n,i,a){Ge(t,e,r,1,16,n,i,a)}function Xe(t,e,r,n,i,a){Ge(t,e,1,r,16,n,i,a)}function Ke(t,e,r,n,i,a){var o;for(o=3;0<o;--o)Ye(t,e+=4*r,r,1,16,n,i,a)}function Ze(t,e,r,n,i,a){var o;for(o=3;0<o;--o)Ye(t,e+=4,1,r,16,n,i,a)}function $e(t,e,r,n,i,a,o,s){Ge(t,e,i,1,8,a,o,s),Ge(r,n,i,1,8,a,o,s)}function Qe(t,e,r,n,i,a,o,s){Ge(t,e,1,i,8,a,o,s),Ge(r,n,1,i,8,a,o,s)}function tr(t,e,r,n,i,a,o,s){Ye(t,e+4*i,i,1,8,a,o,s),Ye(r,n+4*i,i,1,8,a,o,s)}function er(t,e,r,n,i,a,o,s){Ye(t,e+4,1,i,8,a,o,s),Ye(r,n+4,1,i,8,a,o,s)}function rr(){this.ba=new ot,this.ec=[],this.cc=[],this.Mc=[],this.Dc=this.Nc=this.dc=this.fc=0,this.Oa=new ct,this.memory=0,this.Ib="OutputFunc",this.Jb="OutputAlphaFunc",this.Nd="OutputRowFunc"}function nr(){this.data=[],this.offset=this.kd=this.ha=this.w=0,this.na=[],this.xa=this.gb=this.Ja=this.Sa=this.P=0}function ir(){this.nc=this.Ea=this.b=this.hc=0,this.K=[],this.w=0}function ar(){this.ua=0,this.Wa=new M,this.vb=new M,this.md=this.xc=this.wc=0,this.vc=[],this.Wb=0,this.Ya=new d,this.yc=new h}function or(){this.xb=this.a=0,this.l=new Gt,this.ca=new ot,this.V=[],this.Ba=0,this.Ta=[],this.Ua=0,this.m=new N,this.Pb=0,this.wd=new N,this.Ma=this.$=this.C=this.i=this.c=this.xd=0,this.s=new ar,this.ab=0,this.gc=o(4,ir),this.Oc=0}function sr(){this.Lc=this.Z=this.$a=this.i=this.c=0,this.l=new Gt,this.ic=0,this.ca=[],this.tb=0,this.qd=null,this.rd=0}function cr(t,e,r,n,i,a,o){for(t=null==t?0:t[e+0],e=0;e<o;++e)i[a+e]=t+r[n+e]&255,t=i[a+e]}function ur(t,e,r,n,i,a,o){var s;if(null==t)cr(null,null,r,n,i,a,o);else for(s=0;s<o;++s)i[a+s]=t[e+s]+r[n+s]&255}function lr(t,e,r,n,i,a,o){if(null==t)cr(null,null,r,n,i,a,o);else{var s,c=t[e+0],u=c,l=c;for(s=0;s<o;++s)u=l+(c=t[e+s])-u,l=r[n+s]+(-256&u?0>u?0:255:u)&255,u=c,i[a+s]=l}}function hr(t,r,i,o){var s=r.width,c=r.o;if(e(null!=t&&null!=r),0>i||0>=o||i+o>c)return null;if(!t.Cc){if(null==t.ga){var u;if(t.ga=new sr,(u=null==t.ga)||(u=r.width*r.o,e(0==t.Gb.length),t.Gb=a(u),t.Uc=0,null==t.Gb?u=0:(t.mb=t.Gb,t.nb=t.Uc,t.rc=null,u=1),u=!u),!u){u=t.ga;var l=t.Fa,h=t.P,f=t.qc,d=t.mb,p=t.nb,g=h+1,m=f-1,b=u.l;if(e(null!=l&&null!=d&&null!=r),mi[0]=null,mi[1]=cr,mi[2]=ur,mi[3]=lr,u.ca=d,u.tb=p,u.c=r.width,u.i=r.height,e(0<u.c&&0<u.i),1>=f)r=0;else if(u.$a=l[h+0]>>0&3,u.Z=l[h+0]>>2&3,u.Lc=l[h+0]>>4&3,h=l[h+0]>>6&3,0>u.$a||1<u.$a||4<=u.Z||1<u.Lc||h)r=0;else if(b.put=dt,b.ac=ft,b.bc=pt,b.ma=u,b.width=r.width,b.height=r.height,b.Da=r.Da,b.v=r.v,b.va=r.va,b.j=r.j,b.o=r.o,u.$a)t:{e(1==u.$a),r=kt();e:for(;;){if(null==r){r=0;break t}if(e(null!=u),u.mc=r,r.c=u.c,r.i=u.i,r.l=u.l,r.l.ma=u,r.l.width=u.c,r.l.height=u.i,r.a=0,v(r.m,l,g,m),!Ft(u.c,u.i,1,r,null))break e;if(1==r.ab&&3==r.gc[0].hc&&At(r.s)?(u.ic=1,l=r.c*r.i,r.Ta=null,r.Ua=0,r.V=a(l),r.Ba=0,null==r.V?(r.a=1,r=0):r=1):(u.ic=0,r=It(r,u.c)),!r)break e;r=1;break t}u.mc=null,r=0}else r=m>=u.c*u.i;u=!r}if(u)return null;1!=t.ga.Lc?t.Ga=0:o=c-i}e(null!=t.ga),e(i+o<=c);t:{if(r=(l=t.ga).c,c=l.l.o,0==l.$a){if(g=t.rc,m=t.Vc,b=t.Fa,h=t.P+1+i*r,f=t.mb,d=t.nb+i*r,e(h<=t.P+t.qc),0!=l.Z)for(e(null!=mi[l.Z]),u=0;u<o;++u)mi[l.Z](g,m,b,h,f,d,r),g=f,m=d,d+=r,h+=r;else for(u=0;u<o;++u)n(f,d,b,h,r),g=f,m=d,d+=r,h+=r;t.rc=g,t.Vc=m}else{if(e(null!=l.mc),r=i+o,e(null!=(u=l.mc)),e(r<=u.i),u.C>=r)r=1;else if(l.ic||mr(),l.ic){l=u.V,g=u.Ba,m=u.c;var y=u.i,w=(b=1,h=u.$/m,f=u.$%m,d=u.m,p=u.s,u.$),N=m*y,L=m*r,x=p.wc,_=w<L?wt(p,f,h):null;e(w<=N),e(r<=y),e(At(p));e:for(;;){for(;!d.h&&w<L;){if(f&x||(_=wt(p,f,h)),e(null!=_),S(d),256>(y=bt(_.G[0],_.H[0],d)))l[g+w]=y,++w,++f>=m&&(f=0,++h<=r&&!(h%16)&&St(u,h));else{if(!(280>y)){b=0;break e}y=mt(y-256,d);var P,k=bt(_.G[4],_.H[4],d);if(S(d),!(w>=(k=vt(m,k=mt(k,d)))&&N-w>=y)){b=0;break e}for(P=0;P<y;++P)l[g+w+P]=l[g+w+P-k];for(w+=y,f+=y;f>=m;)f-=m,++h<=r&&!(h%16)&&St(u,h);w<L&&f&x&&(_=wt(p,f,h))}e(d.h==A(d))}St(u,h>r?r:h);break e}!b||d.h&&w<N?(b=0,u.a=d.h?5:3):u.$=w,r=b}else r=_t(u,u.V,u.Ba,u.c,u.i,r,Ct);if(!r){o=0;break t}}i+o>=c&&(t.Cc=1),o=1}if(!o)return null;if(t.Cc&&(null!=(o=t.ga)&&(o.mc=null),t.ga=null,0<t.Ga))return alert("todo:WebPDequantizeLevels"),null}return t.nb+i*s}function fr(t,e,r,n,i,a){for(;0<i--;){var o,s=t,c=e+(r?1:0),u=t,l=e+(r?0:3);for(o=0;o<n;++o){var h=u[l+4*o];255!=h&&(h*=32897,s[c+4*o+0]=s[c+4*o+0]*h>>23,s[c+4*o+1]=s[c+4*o+1]*h>>23,s[c+4*o+2]=s[c+4*o+2]*h>>23)}e+=a}}function dr(t,e,r,n,i){for(;0<n--;){var a;for(a=0;a<r;++a){var o=t[e+2*a+0],s=15&(u=t[e+2*a+1]),c=4369*s,u=(240&u|u>>4)*c>>16;t[e+2*a+0]=(240&o|o>>4)*c>>16&240|(15&o|o<<4)*c>>16>>4&15,t[e+2*a+1]=240&u|s}e+=i}}function pr(t,e,r,n,i,a,o,s){var c,u,l=255;for(u=0;u<i;++u){for(c=0;c<n;++c){var h=t[e+c];a[o+4*c]=h,l&=h}e+=r,o+=s}return 255!=l}function gr(t,e,r,n,i){var a;for(a=0;a<i;++a)r[n+a]=t[e+a]>>8}function mr(){An=fr,xn=dr,Sn=pr,_n=gr}function vr(r,n,i){t[r]=function(t,r,a,o,s,c,u,l,h,f,d,p,g,m,v,b,y){var w,N=y-1>>1,L=s[c+0]|u[l+0]<<16,A=h[f+0]|d[p+0]<<16;e(null!=t);var x=3*L+A+131074>>2;for(n(t[r+0],255&x,x>>16,g,m),null!=a&&(x=3*A+L+131074>>2,n(a[o+0],255&x,x>>16,v,b)),w=1;w<=N;++w){var S=s[c+w]|u[l+w]<<16,_=h[f+w]|d[p+w]<<16,P=L+S+A+_+524296,k=P+2*(S+A)>>3;x=k+L>>1,L=(P=P+2*(L+_)>>3)+S>>1,n(t[r+2*w-1],255&x,x>>16,g,m+(2*w-1)*i),n(t[r+2*w-0],255&L,L>>16,g,m+(2*w-0)*i),null!=a&&(x=P+A>>1,L=k+_>>1,n(a[o+2*w-1],255&x,x>>16,v,b+(2*w-1)*i),n(a[o+2*w+0],255&L,L>>16,v,b+(2*w+0)*i)),L=S,A=_}1&y||(x=3*L+A+131074>>2,n(t[r+y-1],255&x,x>>16,g,m+(y-1)*i),null!=a&&(x=3*A+L+131074>>2,n(a[o+y-1],255&x,x>>16,v,b+(y-1)*i)))}}function br(){vi[En]=bi,vi[qn]=wi,vi[Dn]=yi,vi[Rn]=Ni,vi[Tn]=Li,vi[Un]=Ai,vi[zn]=xi,vi[Hn]=wi,vi[Wn]=Ni,vi[Vn]=Li,vi[Gn]=Ai}function yr(t){return t&~Ii?0>t?0:255:t>>Fi}function wr(t,e){return yr((19077*t>>8)+(26149*e>>8)-14234)}function Nr(t,e,r){return yr((19077*t>>8)-(6419*e>>8)-(13320*r>>8)+8708)}function Lr(t,e){return yr((19077*t>>8)+(33050*e>>8)-17685)}function Ar(t,e,r,n,i){n[i+0]=wr(t,r),n[i+1]=Nr(t,e,r),n[i+2]=Lr(t,e)}function xr(t,e,r,n,i){n[i+0]=Lr(t,e),n[i+1]=Nr(t,e,r),n[i+2]=wr(t,r)}function Sr(t,e,r,n,i){var a=Nr(t,e,r);e=a<<3&224|Lr(t,e)>>3,n[i+0]=248&wr(t,r)|a>>5,n[i+1]=e}function _r(t,e,r,n,i){var a=240&Lr(t,e)|15;n[i+0]=240&wr(t,r)|Nr(t,e,r)>>4,n[i+1]=a}function Pr(t,e,r,n,i){n[i+0]=255,Ar(t,e,r,n,i+1)}function kr(t,e,r,n,i){xr(t,e,r,n,i),n[i+3]=255}function Fr(t,e,r,n,i){Ar(t,e,r,n,i),n[i+3]=255}function Vt(t,e){return 0>t?0:t>e?e:t}function Ir(e,r,n){t[e]=function(t,e,i,a,o,s,c,u,l){for(var h=u+(-2&l)*n;u!=h;)r(t[e+0],i[a+0],o[s+0],c,u),r(t[e+1],i[a+0],o[s+0],c,u+n),e+=2,++a,++s,u+=2*n;1&l&&r(t[e+0],i[a+0],o[s+0],c,u)}}function Cr(t,e,r){return 0==r?0==t?0==e?6:5:0==e?4:0:r}function jr(t,e,r,n,i){switch(t>>>30){case 3:on(e,r,n,i,0);break;case 2:sn(e,r,n,i);break;case 1:un(e,r,n,i)}}function Or(t,e){var r,a,o=e.M,s=e.Nb,c=t.oc,u=t.pc+40,l=t.oc,h=t.pc+584,f=t.oc,d=t.pc+600;for(r=0;16>r;++r)c[u+32*r-1]=129;for(r=0;8>r;++r)l[h+32*r-1]=129,f[d+32*r-1]=129;for(0<o?c[u-1-32]=l[h-1-32]=f[d-1-32]=129:(i(c,u-32-1,127,21),i(l,h-32-1,127,9),i(f,d-32-1,127,9)),a=0;a<t.za;++a){var p=e.ya[e.aa+a];if(0<a){for(r=-1;16>r;++r)n(c,u+32*r-4,c,u+32*r+12,4);for(r=-1;8>r;++r)n(l,h+32*r-4,l,h+32*r+4,4),n(f,d+32*r-4,f,d+32*r+4,4)}var g=t.Gd,m=t.Hd+a,v=p.ad,b=p.Hc;if(0<o&&(n(c,u-32,g[m].y,0,16),n(l,h-32,g[m].f,0,8),n(f,d-32,g[m].ea,0,8)),p.Za){var y=c,w=u-32+16;for(0<o&&(a>=t.za-1?i(y,w,g[m].y[15],4):n(y,w,g[m+1].y,0,4)),r=0;4>r;r++)y[w+128+r]=y[w+256+r]=y[w+384+r]=y[w+0+r];for(r=0;16>r;++r,b<<=2)y=c,w=u+Di[r],fi[p.Ob[r]](y,w),jr(b,v,16*+r,y,w)}else if(y=Cr(a,o,p.Ob[0]),hi[y](c,u),0!=b)for(r=0;16>r;++r,b<<=2)jr(b,v,16*+r,c,u+Di[r]);for(r=p.Gc,y=Cr(a,o,p.Dd),di[y](l,h),di[y](f,d),b=v,y=l,w=h,255&(p=r>>0)&&(170&p?cn(b,256,y,w):ln(b,256,y,w)),p=f,b=d,255&(r>>=8)&&(170&r?cn(v,320,p,b):ln(v,320,p,b)),o<t.Ub-1&&(n(g[m].y,0,c,u+480,16),n(g[m].f,0,l,h+224,8),n(g[m].ea,0,f,d+224,8)),r=8*s*t.B,g=t.sa,m=t.ta+16*a+16*s*t.R,v=t.qa,p=t.ra+8*a+r,b=t.Ha,y=t.Ia+8*a+r,r=0;16>r;++r)n(g,m+r*t.R,c,u+32*r,16);for(r=0;8>r;++r)n(v,p+r*t.B,l,h+32*r,8),n(b,y+r*t.B,f,d+32*r,8)}}function Br(t,n,i,a,o,s,c,u,l){var h=[0],f=[0],d=0,p=null!=l?l.kd:0,g=null!=l?l:new nr;if(null==t||12>i)return 7;g.data=t,g.w=n,g.ha=i,n=[n],i=[i],g.gb=[g.gb];t:{var m=n,b=i,y=g.gb;if(e(null!=t),e(null!=b),e(null!=y),y[0]=0,12<=b[0]&&!r(t,m[0],"RIFF")){if(r(t,m[0]+8,"WEBP")){y=3;break t}var w=j(t,m[0]+4);if(12>w||4294967286<w){y=3;break t}if(p&&w>b[0]-8){y=7;break t}y[0]=w,m[0]+=12,b[0]-=12}y=0}if(0!=y)return y;for(w=0<g.gb[0],i=i[0];;){t:{var L=t;b=n,y=i;var A=h,x=f,S=m=[0];if((k=d=[d])[0]=0,8>y[0])y=7;else{if(!r(L,b[0],"VP8X")){if(10!=j(L,b[0]+4)){y=3;break t}if(18>y[0]){y=7;break t}var _=j(L,b[0]+8),P=1+C(L,b[0]+12);if(2147483648<=P*(L=1+C(L,b[0]+15))){y=3;break t}null!=S&&(S[0]=_),null!=A&&(A[0]=P),null!=x&&(x[0]=L),b[0]+=18,y[0]-=18,k[0]=1}y=0}}if(d=d[0],m=m[0],0!=y)return y;if(b=!!(2&m),!w&&d)return 3;if(null!=s&&(s[0]=!!(16&m)),null!=c&&(c[0]=b),null!=u&&(u[0]=0),c=h[0],m=f[0],d&&b&&null==l){y=0;break}if(4>i){y=7;break}if(w&&d||!w&&!d&&!r(t,n[0],"ALPH")){i=[i],g.na=[g.na],g.P=[g.P],g.Sa=[g.Sa];t:{_=t,y=n,w=i;var k=g.gb;A=g.na,x=g.P,S=g.Sa;P=22,e(null!=_),e(null!=w),L=y[0];var F=w[0];for(e(null!=A),e(null!=S),A[0]=null,x[0]=null,S[0]=0;;){if(y[0]=L,w[0]=F,8>F){y=7;break t}var I=j(_,L+4);if(4294967286<I){y=3;break t}var O=8+I+1&-2;if(P+=O,0<k&&P>k){y=3;break t}if(!r(_,L,"VP8 ")||!r(_,L,"VP8L")){y=0;break t}if(F[0]<O){y=7;break t}r(_,L,"ALPH")||(A[0]=_,x[0]=L+8,S[0]=I),L+=O,F-=O}}if(i=i[0],g.na=g.na[0],g.P=g.P[0],g.Sa=g.Sa[0],0!=y)break}i=[i],g.Ja=[g.Ja],g.xa=[g.xa];t:if(k=t,y=n,w=i,A=g.gb[0],x=g.Ja,S=g.xa,_=y[0],L=!r(k,_,"VP8 "),P=!r(k,_,"VP8L"),e(null!=k),e(null!=w),e(null!=x),e(null!=S),8>w[0])y=7;else{if(L||P){if(k=j(k,_+4),12<=A&&k>A-12){y=3;break t}if(p&&k>w[0]-8){y=7;break t}x[0]=k,y[0]+=8,w[0]-=8,S[0]=P}else S[0]=5<=w[0]&&47==k[_+0]&&!(k[_+4]>>5),x[0]=w[0];y=0}if(i=i[0],g.Ja=g.Ja[0],g.xa=g.xa[0],n=n[0],0!=y)break;if(4294967286<g.Ja)return 3;if(null==u||b||(u[0]=g.xa?2:1),c=[c],m=[m],g.xa){if(5>i){y=7;break}u=c,p=m,b=s,null==t||5>i?t=0:5<=i&&47==t[n+0]&&!(t[n+4]>>5)?(w=[0],k=[0],A=[0],v(x=new N,t,n,i),gt(x,w,k,A)?(null!=u&&(u[0]=w[0]),null!=p&&(p[0]=k[0]),null!=b&&(b[0]=A[0]),t=1):t=0):t=0}else{if(10>i){y=7;break}u=m,null==t||10>i||!Xt(t,n+3,i-3)?t=0:(p=t[n+0]|t[n+1]<<8|t[n+2]<<16,b=16383&(t[n+7]<<8|t[n+6]),t=16383&(t[n+9]<<8|t[n+8]),1&p||3<(p>>1&7)||!(p>>4&1)||p>>5>=g.Ja||!b||!t?t=0:(c&&(c[0]=b),u&&(u[0]=t),t=1))}if(!t)return 3;if(c=c[0],m=m[0],d&&(h[0]!=c||f[0]!=m))return 3;null!=l&&(l[0]=g,l.offset=n-l.w,e(4294967286>n-l.w),e(l.offset==l.ha-i));break}return 0==y||7==y&&d&&null==l?(null!=s&&(s[0]|=null!=g.na&&0<g.na.length),null!=a&&(a[0]=c),null!=o&&(o[0]=m),0):y}function Mr(t,e,r){var n=e.width,i=e.height,a=0,o=0,s=n,c=i;if(e.Da=null!=t&&0<t.Da,e.Da&&(s=t.cd,c=t.bd,a=t.v,o=t.j,11>r||(a&=-2,o&=-2),0>a||0>o||0>=s||0>=c||a+s>n||o+c>i))return 0;if(e.v=a,e.j=o,e.va=a+s,e.o=o+c,e.U=s,e.T=c,e.da=null!=t&&0<t.da,e.da){if(!E(s,c,r=[t.ib],a=[t.hb]))return 0;e.ib=r[0],e.hb=a[0]}return e.ob=null!=t&&t.ob,e.Kb=null==t||!t.Sd,e.da&&(e.ob=e.ib<3*n/4&&e.hb<3*i/4,e.Kb=0),1}function Er(t){if(null==t)return 2;if(11>t.S){var e=t.f.RGBA;e.fb+=(t.height-1)*e.A,e.A=-e.A}else e=t.f.kb,t=t.height,e.O+=(t-1)*e.fa,e.fa=-e.fa,e.N+=(t-1>>1)*e.Ab,e.Ab=-e.Ab,e.W+=(t-1>>1)*e.Db,e.Db=-e.Db,null!=e.F&&(e.J+=(t-1)*e.lb,e.lb=-e.lb);return 0}function qr(t,e,r,n){if(null==n||0>=t||0>=e)return 2;if(null!=r){if(r.Da){var i=r.cd,o=r.bd,s=-2&r.v,c=-2&r.j;if(0>s||0>c||0>=i||0>=o||s+i>t||c+o>e)return 2;t=i,e=o}if(r.da){if(!E(t,e,i=[r.ib],o=[r.hb]))return 2;t=i[0],e=o[0]}}n.width=t,n.height=e;t:{var u=n.width,l=n.height;if(t=n.S,0>=u||0>=l||!(t>=En&&13>t))t=2;else{if(0>=n.Rd&&null==n.sd){s=o=i=e=0;var h=(c=u*zi[t])*l;if(11>t||(o=(l+1)/2*(e=(u+1)/2),12==t&&(s=(i=u)*l)),null==(l=a(h+2*o+s))){t=1;break t}n.sd=l,11>t?((u=n.f.RGBA).eb=l,u.fb=0,u.A=c,u.size=h):((u=n.f.kb).y=l,u.O=0,u.fa=c,u.Fd=h,u.f=l,u.N=0+h,u.Ab=e,u.Cd=o,u.ea=l,u.W=0+h+o,u.Db=e,u.Ed=o,12==t&&(u.F=l,u.J=0+h+2*o),u.Tc=s,u.lb=i)}if(e=1,i=n.S,o=n.width,s=n.height,i>=En&&13>i)if(11>i)t=n.f.RGBA,e&=(c=Math.abs(t.A))*(s-1)+o<=t.size,e&=c>=o*zi[i],e&=null!=t.eb;else{t=n.f.kb,c=(o+1)/2,h=(s+1)/2,u=Math.abs(t.fa);l=Math.abs(t.Ab);var f=Math.abs(t.Db),d=Math.abs(t.lb),p=d*(s-1)+o;e&=u*(s-1)+o<=t.Fd,e&=l*(h-1)+c<=t.Cd,e=(e&=f*(h-1)+c<=t.Ed)&u>=o&l>=c&f>=c,e&=null!=t.y,e&=null!=t.f,e&=null!=t.ea,12==i&&(e&=d>=o,e&=p<=t.Tc,e&=null!=t.F)}else e=0;t=e?0:2}}return 0!=t||null!=r&&r.fd&&(t=Er(n)),t}var Dr=64,Rr=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215],Tr=24,Ur=32,zr=8,Hr=[0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7];R("Predictor0","PredictorAdd0"),t.Predictor0=function(){return 4278190080},t.Predictor1=function(t){return t},t.Predictor2=function(t,e,r){return e[r+0]},t.Predictor3=function(t,e,r){return e[r+1]},t.Predictor4=function(t,e,r){return e[r-1]},t.Predictor5=function(t,e,r){return U(U(t,e[r+1]),e[r+0])},t.Predictor6=function(t,e,r){return U(t,e[r-1])},t.Predictor7=function(t,e,r){return U(t,e[r+0])},t.Predictor8=function(t,e,r){return U(e[r-1],e[r+0])},t.Predictor9=function(t,e,r){return U(e[r+0],e[r+1])},t.Predictor10=function(t,e,r){return U(U(t,e[r-1]),U(e[r+0],e[r+1]))},t.Predictor11=function(t,e,r){var n=e[r+0];return 0>=W(n>>24&255,t>>24&255,(e=e[r-1])>>24&255)+W(n>>16&255,t>>16&255,e>>16&255)+W(n>>8&255,t>>8&255,e>>8&255)+W(255&n,255&t,255&e)?n:t},t.Predictor12=function(t,e,r){var n=e[r+0];return(z((t>>24&255)+(n>>24&255)-((e=e[r-1])>>24&255))<<24|z((t>>16&255)+(n>>16&255)-(e>>16&255))<<16|z((t>>8&255)+(n>>8&255)-(e>>8&255))<<8|z((255&t)+(255&n)-(255&e)))>>>0},t.Predictor13=function(t,e,r){var n=e[r-1];return(H((t=U(t,e[r+0]))>>24&255,n>>24&255)<<24|H(t>>16&255,n>>16&255)<<16|H(t>>8&255,n>>8&255)<<8|H(t>>0&255,n>>0&255))>>>0};var Wr=t.PredictorAdd0;t.PredictorAdd1=V,R("Predictor2","PredictorAdd2"),R("Predictor3","PredictorAdd3"),R("Predictor4","PredictorAdd4"),R("Predictor5","PredictorAdd5"),R("Predictor6","PredictorAdd6"),R("Predictor7","PredictorAdd7"),R("Predictor8","PredictorAdd8"),R("Predictor9","PredictorAdd9"),R("Predictor10","PredictorAdd10"),R("Predictor11","PredictorAdd11"),R("Predictor12","PredictorAdd12"),R("Predictor13","PredictorAdd13");var Vr=t.PredictorAdd2;X("ColorIndexInverseTransform","MapARGB","32b",(function(t){return t>>8&255}),(function(t){return t})),X("VP8LColorIndexInverseTransformAlpha","MapAlpha","8b",(function(t){return t}),(function(t){return t>>8&255}));var Gr,Yr=t.ColorIndexInverseTransform,Jr=t.MapARGB,Xr=t.VP8LColorIndexInverseTransformAlpha,Kr=t.MapAlpha,Zr=t.VP8LPredictorsAdd=[];Zr.length=16,(t.VP8LPredictors=[]).length=16,(t.VP8LPredictorsAdd_C=[]).length=16,(t.VP8LPredictors_C=[]).length=16;var $r,Qr,tn,en,rn,nn,an,on,sn,cn,un,ln,hn,fn,dn,pn,gn,mn,vn,bn,yn,wn,Nn,Ln,An,xn,Sn,_n,Pn=a(511),kn=a(2041),Fn=a(225),In=a(767),Cn=0,jn=kn,On=Fn,Bn=In,Mn=Pn,En=0,qn=1,Dn=2,Rn=3,Tn=4,Un=5,zn=6,Hn=7,Wn=8,Vn=9,Gn=10,Yn=[2,3,7],Jn=[3,3,11],Xn=[280,256,256,256,40],Kn=[0,1,1,1,0],Zn=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],$n=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],Qn=[2954,2956,2958,2962,2970,2986,3018,3082,3212,3468,3980,5004],ti=8,ei=[4,5,6,7,8,9,10,10,11,12,13,14,15,16,17,17,18,19,20,20,21,21,22,22,23,23,24,25,25,26,27,28,29,30,31,32,33,34,35,36,37,37,38,39,40,41,42,43,44,45,46,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,93,95,96,98,100,101,102,104,106,108,110,112,114,116,118,122,124,126,128,130,132,134,136,138,140,143,145,148,151,154,157],ri=[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,234,239,245,249,254,259,264,269,274,279,284],ni=null,ii=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],ai=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],oi=[-0,1,-1,2,-2,3,4,6,-3,5,-4,-5,-6,7,-7,8,-8,-9],si=[[[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]],[[253,136,254,255,228,219,128,128,128,128,128],[189,129,242,255,227,213,255,219,128,128,128],[106,126,227,252,214,209,255,255,128,128,128]],[[1,98,248,255,236,226,255,255,128,128,128],[181,133,238,254,221,234,255,154,128,128,128],[78,134,202,247,198,180,255,219,128,128,128]],[[1,185,249,255,243,255,128,128,128,128,128],[184,150,247,255,236,224,128,128,128,128,128],[77,110,216,255,236,230,128,128,128,128,128]],[[1,101,251,255,241,255,128,128,128,128,128],[170,139,241,252,236,209,255,255,128,128,128],[37,116,196,243,228,255,255,255,128,128,128]],[[1,204,254,255,245,255,128,128,128,128,128],[207,160,250,255,238,128,128,128,128,128,128],[102,103,231,255,211,171,128,128,128,128,128]],[[1,152,252,255,240,255,128,128,128,128,128],[177,135,243,255,234,225,128,128,128,128,128],[80,129,211,255,194,224,128,128,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[246,1,255,128,128,128,128,128,128,128,128],[255,128,128,128,128,128,128,128,128,128,128]]],[[[198,35,237,223,193,187,162,160,145,155,62],[131,45,198,221,172,176,220,157,252,221,1],[68,47,146,208,149,167,221,162,255,223,128]],[[1,149,241,255,221,224,255,255,128,128,128],[184,141,234,253,222,220,255,199,128,128,128],[81,99,181,242,176,190,249,202,255,255,128]],[[1,129,232,253,214,197,242,196,255,255,128],[99,121,210,250,201,198,255,202,128,128,128],[23,91,163,242,170,187,247,210,255,255,128]],[[1,200,246,255,234,255,128,128,128,128,128],[109,178,241,255,231,245,255,255,128,128,128],[44,130,201,253,205,192,255,255,128,128,128]],[[1,132,239,251,219,209,255,165,128,128,128],[94,136,225,251,218,190,255,255,128,128,128],[22,100,174,245,186,161,255,199,128,128,128]],[[1,182,249,255,232,235,128,128,128,128,128],[124,143,241,255,227,234,128,128,128,128,128],[35,77,181,251,193,211,255,205,128,128,128]],[[1,157,247,255,236,231,255,255,128,128,128],[121,141,235,255,225,227,255,255,128,128,128],[45,99,188,251,195,217,255,224,128,128,128]],[[1,1,251,255,213,255,128,128,128,128,128],[203,1,248,255,255,128,128,128,128,128,128],[137,1,177,255,224,255,128,128,128,128,128]]],[[[253,9,248,251,207,208,255,192,128,128,128],[175,13,224,243,193,185,249,198,255,255,128],[73,17,171,221,161,179,236,167,255,234,128]],[[1,95,247,253,212,183,255,255,128,128,128],[239,90,244,250,211,209,255,255,128,128,128],[155,77,195,248,188,195,255,255,128,128,128]],[[1,24,239,251,218,219,255,205,128,128,128],[201,51,219,255,196,186,128,128,128,128,128],[69,46,190,239,201,218,255,228,128,128,128]],[[1,191,251,255,255,128,128,128,128,128,128],[223,165,249,255,213,255,128,128,128,128,128],[141,124,248,255,255,128,128,128,128,128,128]],[[1,16,248,255,255,128,128,128,128,128,128],[190,36,230,255,236,255,128,128,128,128,128],[149,1,255,128,128,128,128,128,128,128,128]],[[1,226,255,128,128,128,128,128,128,128,128],[247,192,255,128,128,128,128,128,128,128,128],[240,128,255,128,128,128,128,128,128,128,128]],[[1,134,252,255,255,128,128,128,128,128,128],[213,62,250,255,255,128,128,128,128,128,128],[55,93,255,128,128,128,128,128,128,128,128]],[[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128],[128,128,128,128,128,128,128,128,128,128,128]]],[[[202,24,213,235,186,191,220,160,240,175,255],[126,38,182,232,169,184,228,174,255,187,128],[61,46,138,219,151,178,240,170,255,216,128]],[[1,112,230,250,199,191,247,159,255,255,128],[166,109,228,252,211,215,255,174,128,128,128],[39,77,162,232,172,180,245,178,255,255,128]],[[1,52,220,246,198,199,249,220,255,255,128],[124,74,191,243,183,193,250,221,255,255,128],[24,71,130,219,154,170,243,182,255,255,128]],[[1,182,225,249,219,240,255,224,128,128,128],[149,150,226,252,216,205,255,171,128,128,128],[28,108,170,242,183,194,254,223,255,255,128]],[[1,81,230,252,204,203,255,192,128,128,128],[123,102,209,247,188,196,255,233,128,128,128],[20,95,153,243,164,173,255,203,128,128,128]],[[1,222,248,255,216,213,128,128,128,128,128],[168,175,246,252,235,205,255,255,128,128,128],[47,116,215,255,211,212,255,255,128,128,128]],[[1,121,236,253,212,214,255,255,128,128,128],[141,84,213,252,201,202,255,219,128,128,128],[42,80,160,240,162,185,255,205,128,128,128]],[[1,1,255,128,128,128,128,128,128,128,128],[244,1,255,128,128,128,128,128,128,128,128],[238,1,255,128,128,128,128,128,128,128,128]]]],ci=[[[231,120,48,89,115,113,120,152,112],[152,179,64,126,170,118,46,70,95],[175,69,143,80,85,82,72,155,103],[56,58,10,171,218,189,17,13,152],[114,26,17,163,44,195,21,10,173],[121,24,80,195,26,62,44,64,85],[144,71,10,38,171,213,144,34,26],[170,46,55,19,136,160,33,206,71],[63,20,8,114,114,208,12,9,226],[81,40,11,96,182,84,29,16,36]],[[134,183,89,137,98,101,106,165,148],[72,187,100,130,157,111,32,75,80],[66,102,167,99,74,62,40,234,128],[41,53,9,178,241,141,26,8,107],[74,43,26,146,73,166,49,23,157],[65,38,105,160,51,52,31,115,128],[104,79,12,27,217,255,87,17,7],[87,68,71,44,114,51,15,186,23],[47,41,14,110,182,183,21,17,194],[66,45,25,102,197,189,23,18,22]],[[88,88,147,150,42,46,45,196,205],[43,97,183,117,85,38,35,179,61],[39,53,200,87,26,21,43,232,171],[56,34,51,104,114,102,29,93,77],[39,28,85,171,58,165,90,98,64],[34,22,116,206,23,34,43,166,73],[107,54,32,26,51,1,81,43,31],[68,25,106,22,64,171,36,225,114],[34,19,21,102,132,188,16,76,124],[62,18,78,95,85,57,50,48,51]],[[193,101,35,159,215,111,89,46,111],[60,148,31,172,219,228,21,18,111],[112,113,77,85,179,255,38,120,114],[40,42,1,196,245,209,10,25,109],[88,43,29,140,166,213,37,43,154],[61,63,30,155,67,45,68,1,209],[100,80,8,43,154,1,51,26,71],[142,78,78,16,255,128,34,197,171],[41,40,5,102,211,183,4,1,221],[51,50,17,168,209,192,23,25,82]],[[138,31,36,171,27,166,38,44,229],[67,87,58,169,82,115,26,59,179],[63,59,90,180,59,166,93,73,154],[40,40,21,116,143,209,34,39,175],[47,15,16,183,34,223,49,45,183],[46,17,33,183,6,98,15,32,183],[57,46,22,24,128,1,54,17,37],[65,32,73,115,28,128,23,128,205],[40,3,9,115,51,192,18,6,223],[87,37,9,115,59,77,64,21,47]],[[104,55,44,218,9,54,53,130,226],[64,90,70,205,40,41,23,26,57],[54,57,112,184,5,41,38,166,213],[30,34,26,133,152,116,10,32,134],[39,19,53,221,26,114,32,73,255],[31,9,65,234,2,15,1,118,73],[75,32,12,51,192,255,160,43,51],[88,31,35,67,102,85,55,186,85],[56,21,23,111,59,205,45,37,192],[55,38,70,124,73,102,1,34,98]],[[125,98,42,88,104,85,117,175,82],[95,84,53,89,128,100,113,101,45],[75,79,123,47,51,128,81,171,1],[57,17,5,71,102,57,53,41,49],[38,33,13,121,57,73,26,1,85],[41,10,67,138,77,110,90,47,114],[115,21,2,10,102,255,166,23,6],[101,29,16,10,85,128,101,196,26],[57,18,10,102,102,213,34,20,43],[117,20,15,36,163,128,68,1,26]],[[102,61,71,37,34,53,31,243,192],[69,60,71,38,73,119,28,222,37],[68,45,128,34,1,47,11,245,171],[62,17,19,70,146,85,55,62,70],[37,43,37,154,100,163,85,160,1],[63,9,92,136,28,64,32,201,85],[75,15,9,9,64,255,184,119,16],[86,6,28,5,64,255,25,248,1],[56,8,17,132,137,255,55,116,128],[58,15,20,82,135,57,26,121,40]],[[164,50,31,137,154,133,25,35,218],[51,103,44,131,131,123,31,6,158],[86,40,64,135,148,224,45,183,128],[22,26,17,131,240,154,14,1,209],[45,16,21,91,64,222,7,1,197],[56,21,39,155,60,138,23,102,213],[83,12,13,54,192,255,68,47,28],[85,26,85,85,128,128,32,146,171],[18,11,7,63,144,171,4,4,246],[35,27,10,146,174,171,12,26,128]],[[190,80,35,99,180,80,126,54,45],[85,126,47,87,176,51,41,20,32],[101,75,128,139,118,146,116,128,85],[56,41,15,176,236,85,37,9,62],[71,30,17,119,118,255,17,18,138],[101,38,60,138,55,70,43,26,142],[146,36,19,30,171,255,97,27,20],[138,45,61,62,219,1,81,188,64],[32,41,20,117,151,142,20,21,163],[112,19,12,61,195,128,48,4,24]]],ui=[[[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[176,246,255,255,255,255,255,255,255,255,255],[223,241,252,255,255,255,255,255,255,255,255],[249,253,253,255,255,255,255,255,255,255,255]],[[255,244,252,255,255,255,255,255,255,255,255],[234,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255]],[[255,246,254,255,255,255,255,255,255,255,255],[239,253,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[251,255,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[251,254,254,255,255,255,255,255,255,255,255],[254,255,254,255,255,255,255,255,255,255,255]],[[255,254,253,255,254,255,255,255,255,255,255],[250,255,254,255,254,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[217,255,255,255,255,255,255,255,255,255,255],[225,252,241,253,255,255,254,255,255,255,255],[234,250,241,250,253,255,253,254,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[223,254,254,255,255,255,255,255,255,255,255],[238,253,254,254,255,255,255,255,255,255,255]],[[255,248,254,255,255,255,255,255,255,255,255],[249,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,255,255,255,255,255,255,255,255,255],[247,254,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[252,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[253,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[186,251,250,255,255,255,255,255,255,255,255],[234,251,244,254,255,255,255,255,255,255,255],[251,251,243,253,254,255,254,255,255,255,255]],[[255,253,254,255,255,255,255,255,255,255,255],[236,253,254,255,255,255,255,255,255,255,255],[251,253,253,254,254,255,255,255,255,255,255]],[[255,254,254,255,255,255,255,255,255,255,255],[254,254,254,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,254,255,255,255,255,255,255,255,255,255],[254,254,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]],[[[248,255,255,255,255,255,255,255,255,255,255],[250,254,252,254,255,255,255,255,255,255,255],[248,254,249,253,255,255,255,255,255,255,255]],[[255,253,253,255,255,255,255,255,255,255,255],[246,253,253,255,255,255,255,255,255,255,255],[252,254,251,254,254,255,255,255,255,255,255]],[[255,254,252,255,255,255,255,255,255,255,255],[248,254,253,255,255,255,255,255,255,255,255],[253,255,254,254,255,255,255,255,255,255,255]],[[255,251,254,255,255,255,255,255,255,255,255],[245,251,254,255,255,255,255,255,255,255,255],[253,253,254,255,255,255,255,255,255,255,255]],[[255,251,253,255,255,255,255,255,255,255,255],[252,253,254,255,255,255,255,255,255,255,255],[255,254,255,255,255,255,255,255,255,255,255]],[[255,252,255,255,255,255,255,255,255,255,255],[249,255,254,255,255,255,255,255,255,255,255],[255,255,254,255,255,255,255,255,255,255,255]],[[255,255,253,255,255,255,255,255,255,255,255],[250,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]],[[255,255,255,255,255,255,255,255,255,255,255],[254,255,255,255,255,255,255,255,255,255,255],[255,255,255,255,255,255,255,255,255,255,255]]]],li=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],hi=[],fi=[],di=[],pi=1,gi=2,mi=[],vi=[];vr("UpsampleRgbLinePair",Ar,3),vr("UpsampleBgrLinePair",xr,3),vr("UpsampleRgbaLinePair",Fr,4),vr("UpsampleBgraLinePair",kr,4),vr("UpsampleArgbLinePair",Pr,4),vr("UpsampleRgba4444LinePair",_r,2),vr("UpsampleRgb565LinePair",Sr,2);var bi=t.UpsampleRgbLinePair,yi=t.UpsampleBgrLinePair,wi=t.UpsampleRgbaLinePair,Ni=t.UpsampleBgraLinePair,Li=t.UpsampleArgbLinePair,Ai=t.UpsampleRgba4444LinePair,xi=t.UpsampleRgb565LinePair,Si=16,_i=1<<Si-1,Pi=-227,ki=482,Fi=6,Ii=(256<<Fi)-1,Ci=0,ji=a(256),Oi=a(256),Bi=a(256),Mi=a(256),Ei=a(ki-Pi),qi=a(ki-Pi);Ir("YuvToRgbRow",Ar,3),Ir("YuvToBgrRow",xr,3),Ir("YuvToRgbaRow",Fr,4),Ir("YuvToBgraRow",kr,4),Ir("YuvToArgbRow",Pr,4),Ir("YuvToRgba4444Row",_r,2),Ir("YuvToRgb565Row",Sr,2);var Di=[0,4,8,12,128,132,136,140,256,260,264,268,384,388,392,396],Ri=[0,2,8],Ti=[8,7,6,4,4,2,2,2,1,1,1,1],Ui=1;this.WebPDecodeRGBA=function(t,r,n,i,a){var o=qn,s=new rr,c=new ot;s.ba=c,c.S=o,c.width=[c.width],c.height=[c.height];var u=c.width,l=c.height,h=new st;if(null==h||null==t)var f=2;else e(null!=h),f=Br(t,r,n,h.width,h.height,h.Pd,h.Qd,h.format,null);if(0!=f?u=0:(null!=u&&(u[0]=h.width[0]),null!=l&&(l[0]=h.height[0]),u=1),u){c.width=c.width[0],c.height=c.height[0],null!=i&&(i[0]=c.width),null!=a&&(a[0]=c.height);t:{if(i=new Gt,(a=new nr).data=t,a.w=r,a.ha=n,a.kd=1,r=[0],e(null!=a),(0==(t=Br(a.data,a.w,a.ha,null,null,null,r,null,a))||7==t)&&r[0]&&(t=4),0==(r=t)){if(e(null!=s),i.data=a.data,i.w=a.w+a.offset,i.ha=a.ha-a.offset,i.put=dt,i.ac=ft,i.bc=pt,i.ma=s,a.xa){if(null==(t=kt())){s=1;break t}if(function(t,r){var n=[0],i=[0],a=[0];e:for(;;){if(null==t)return 0;if(null==r)return t.a=2,0;if(t.l=r,t.a=0,v(t.m,r.data,r.w,r.ha),!gt(t.m,n,i,a)){t.a=3;break e}if(t.xb=gi,r.width=n[0],r.height=i[0],!Ft(n[0],i[0],1,t,null))break e;return 1}return e(0!=t.a),0}(t,i)){if(i=0==(r=qr(i.width,i.height,s.Oa,s.ba))){e:{i=t;r:for(;;){if(null==i){i=0;break e}if(e(null!=i.s.yc),e(null!=i.s.Ya),e(0<i.s.Wb),e(null!=(n=i.l)),e(null!=(a=n.ma)),0!=i.xb){if(i.ca=a.ba,i.tb=a.tb,e(null!=i.ca),!Mr(a.Oa,n,Rn)){i.a=2;break r}if(!It(i,n.width))break r;if(n.da)break r;if((n.da||nt(i.ca.S))&&mr(),11>i.ca.S||(alert("todo:WebPInitConvertARGBToYUV"),null!=i.ca.f.kb.F&&mr()),i.Pb&&0<i.s.ua&&null==i.s.vb.X&&!O(i.s.vb,i.s.Wa.Xa)){i.a=1;break r}i.xb=0}if(!_t(i,i.V,i.Ba,i.c,i.i,n.o,Lt))break r;a.Dc=i.Ma,i=1;break e}e(0!=i.a),i=0}i=!i}i&&(r=t.a)}else r=t.a}else{if(null==(t=new Yt)){s=1;break t}if(t.Fa=a.na,t.P=a.P,t.qc=a.Sa,Kt(t,i)){if(0==(r=qr(i.width,i.height,s.Oa,s.ba))){if(t.Aa=0,n=s.Oa,e(null!=(a=t)),null!=n){if(0<(u=0>(u=n.Md)?0:100<u?255:255*u/100)){for(l=h=0;4>l;++l)12>(f=a.pb[l]).lc&&(f.ia=u*Ti[0>f.lc?0:f.lc]>>3),h|=f.ia;h&&(alert("todo:VP8InitRandom"),a.ia=1)}a.Ga=n.Id,100<a.Ga?a.Ga=100:0>a.Ga&&(a.Ga=0)}Qt(t,i)||(r=t.a)}}else r=t.a}0==r&&null!=s.Oa&&s.Oa.fd&&(r=Er(s.ba))}s=r}o=0!=s?null:11>o?c.f.RGBA.eb:c.f.kb.y}else o=null;return o};var zi=[3,4,3,4,4,2,2,4,4,4,2,1,1]};function u(t,e){for(var r="",n=0;n<4;n++)r+=String.fromCharCode(t[e++]);return r}function l(t,e){return(t[e+0]<<0|t[e+1]<<8|t[e+2]<<16)>>>0}function h(t,e){return(t[e+0]<<0|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0}new c;var f=[0],d=[0],p=[],g=new c,m=t,v=function(t,e){var r={},n=0,i=!1,a=0,o=0;if(r.frames=[],! +/** @license + * Copyright (c) 2017 Dominik Homberger + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + https://webpjs.appspot.com + WebPRiffParser dominikhlbg@gmail.com + */ +function(t,e,r,n){for(var i=0;i<n;i++)if(t[e+i]!=r.charCodeAt(i))return!0;return!1}(t,e,"RIFF",4)){var s,c;h(t,e+=4);for(e+=8;e<t.length;){var f=u(t,e),d=h(t,e+=4);e+=4;var p=d+(1&d);switch(f){case"VP8 ":case"VP8L":void 0===r.frames[n]&&(r.frames[n]={});(v=r.frames[n]).src_off=i?o:e-8,v.src_size=a+d+8,n++,i&&(i=!1,a=0,o=0);break;case"VP8X":(v=r.header={}).feature_flags=t[e];var g=e+4;v.canvas_width=1+l(t,g);g+=3;v.canvas_height=1+l(t,g);g+=3;break;case"ALPH":i=!0,a=p+8,o=e-8;break;case"ANIM":(v=r.header).bgcolor=h(t,e);g=e+4;v.loop_count=(s=t)[(c=g)+0]<<0|s[c+1]<<8;g+=2;break;case"ANMF":var m,v;(v=r.frames[n]={}).offset_x=2*l(t,e),e+=3,v.offset_y=2*l(t,e),e+=3,v.width=1+l(t,e),e+=3,v.height=1+l(t,e),e+=3,v.duration=l(t,e),e+=3,m=t[e++],v.dispose=1&m,v.blend=m>>1&1}"ANMF"!=f&&(e+=p)}return r}}(m,0);v.response=m,v.rgbaoutput=!0,v.dataurl=!1;var b=v.header?v.header:null,y=v.frames?v.frames:null;if(b){b.loop_counter=b.loop_count,f=[b.canvas_height],d=[b.canvas_width];for(var w=0;w<y.length&&0!=y[w].blend;w++);}var N=y[0],L=g.WebPDecodeRGBA(m,N.src_off,N.src_size,d,f);N.rgba=L,N.imgwidth=d[0],N.imgheight=f[0];for(var A=0;A<d[0]*f[0]*4;A++)p[A]=L[A];return this.width=d,this.height=f,this.data=p,this}!function(t){var e=function(){return!0},r=function(e,r,i,u){var l=4,h=o;switch(u){case t.image_compression.FAST:l=1,h=a;break;case t.image_compression.MEDIUM:l=6,h=s;break;case t.image_compression.SLOW:l=9,h=c}var f=_e(e=n(e,r,i,h),{level:l});return t.__addimage__.arrayBufferToBinaryString(f)},n=function(t,e,r,n){for(var i,a,o,s=t.length/e,c=new Uint8Array(t.length+s),u=l(),f=0;f<s;f+=1){if(o=f*e,i=t.subarray(o,o+e),n)c.set(n(i,r,a),o+f);else{for(var d,p=u.length,g=[];d<p;d+=1)g[d]=u[d](i,r,a);var m=h(g.concat());c.set(g[m],o+f)}a=i}return c},i=function(t){var e=Array.apply([],t);return e.unshift(0),e},a=function(t,e){var r,n=[],i=t.length;n[0]=1;for(var a=0;a<i;a+=1)r=t[a-e]||0,n[a+1]=t[a]-r+256&255;return n},o=function(t,e,r){var n,i=[],a=t.length;i[0]=2;for(var o=0;o<a;o+=1)n=r&&r[o]||0,i[o+1]=t[o]-n+256&255;return i},s=function(t,e,r){var n,i,a=[],o=t.length;a[0]=3;for(var s=0;s<o;s+=1)n=t[s-e]||0,i=r&&r[s]||0,a[s+1]=t[s]+256-(n+i>>>1)&255;return a},c=function(t,e,r){var n,i,a,o,s=[],c=t.length;s[0]=4;for(var l=0;l<c;l+=1)n=t[l-e]||0,i=r&&r[l]||0,a=r&&r[l-e]||0,o=u(n,i,a),s[l+1]=t[l]-o+256&255;return s},u=function(t,e,r){if(t===e&&e===r)return t;var n=Math.abs(e-r),i=Math.abs(t-r),a=Math.abs(t+e-r-r);return n<=i&&n<=a?t:i<=a?e:r},l=function(){return[i,a,o,s,c]},h=function(t){var e=t.map((function(t){return t.reduce((function(t,e){return t+Math.abs(e)}),0)}));return e.indexOf(Math.min.apply(null,e))};t.processPNG=function(n,i,a,o){var s,c,u,l,h,f,d,p,g,m,v,b,y,w,N,L=this.decode.FLATE_DECODE,A="";if(this.__addimage__.isArrayBuffer(n)&&(n=new Uint8Array(n)),this.__addimage__.isArrayBufferView(n)){if(n=(u=new Oe(n)).imgData,c=u.bits,s=u.colorSpace,h=u.colors,-1!==[4,6].indexOf(u.colorType)){if(8===u.bits){g=(p=32==u.pixelBitlength?new Uint32Array(u.decodePixels().buffer):16==u.pixelBitlength?new Uint16Array(u.decodePixels().buffer):new Uint8Array(u.decodePixels().buffer)).length,v=new Uint8Array(g*u.colors),m=new Uint8Array(g);var x,S=u.pixelBitlength-u.bits;for(w=0,N=0;w<g;w++){for(y=p[w],x=0;x<S;)v[N++]=y>>>x&255,x+=u.bits;m[w]=y>>>x&255}}if(16===u.bits){g=(p=new Uint32Array(u.decodePixels().buffer)).length,v=new Uint8Array(g*(32/u.pixelBitlength)*u.colors),m=new Uint8Array(g*(32/u.pixelBitlength)),b=u.colors>1,w=0,N=0;for(var _=0;w<g;)y=p[w++],v[N++]=y>>>0&255,b&&(v[N++]=y>>>16&255,y=p[w++],v[N++]=y>>>0&255),m[_++]=y>>>16&255;c=8}o!==t.image_compression.NONE&&e()?(n=r(v,u.width*u.colors,u.colors,o),d=r(m,u.width,1,o)):(n=v,d=m,L=void 0)}if(3===u.colorType&&(s=this.color_spaces.INDEXED,f=u.palette,u.transparency.indexed)){var P=u.transparency.indexed,k=0;for(w=0,g=P.length;w<g;++w)k+=P[w];if((k/=255)===g-1&&-1!==P.indexOf(0))l=[P.indexOf(0)];else if(k!==g){for(p=u.decodePixels(),m=new Uint8Array(p.length),w=0,g=p.length;w<g;w++)m[w]=P[p[w]];d=r(m,u.width,1)}}var F=function(e){var r;switch(e){case t.image_compression.FAST:r=11;break;case t.image_compression.MEDIUM:r=13;break;case t.image_compression.SLOW:r=14;break;default:r=12}return r}(o);return L===this.decode.FLATE_DECODE&&(A="/Predictor "+F+" "),A+="/Colors "+h+" /BitsPerComponent "+c+" /Columns "+u.width,(this.__addimage__.isArrayBuffer(n)||this.__addimage__.isArrayBufferView(n))&&(n=this.__addimage__.arrayBufferToBinaryString(n)),(d&&this.__addimage__.isArrayBuffer(d)||this.__addimage__.isArrayBufferView(d))&&(d=this.__addimage__.arrayBufferToBinaryString(d)),{alias:a,data:n,index:i,filter:L,decodeParameters:A,transparency:l,palette:f,sMask:d,predictor:F,width:u.width,height:u.height,bitsPerComponent:c,colorSpace:s}}}}(M.API),function(t){t.processGIF89A=function(e,r,n,i){var a=new Be(e),o=a.width,s=a.height,c=[];a.decodeAndBlitFrameRGBA(0,c);var u={data:c,width:o,height:s},l=new Ee(100).encode(u,100);return t.processJPEG.call(this,l,r,n,i)},t.processGIF87A=t.processGIF89A}(M.API),qe.prototype.parseHeader=function(){if(this.fileSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.reserved=this.datav.getUint32(this.pos,!0),this.pos+=4,this.offset=this.datav.getUint32(this.pos,!0),this.pos+=4,this.headerSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.width=this.datav.getUint32(this.pos,!0),this.pos+=4,this.height=this.datav.getInt32(this.pos,!0),this.pos+=4,this.planes=this.datav.getUint16(this.pos,!0),this.pos+=2,this.bitPP=this.datav.getUint16(this.pos,!0),this.pos+=2,this.compress=this.datav.getUint32(this.pos,!0),this.pos+=4,this.rawSize=this.datav.getUint32(this.pos,!0),this.pos+=4,this.hr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.vr=this.datav.getUint32(this.pos,!0),this.pos+=4,this.colors=this.datav.getUint32(this.pos,!0),this.pos+=4,this.importantColors=this.datav.getUint32(this.pos,!0),this.pos+=4,16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15),this.bitPP<15){var t=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(t);for(var e=0;e<t;e++){var r=this.datav.getUint8(this.pos++,!0),n=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0);this.palette[e]={red:i,green:n,blue:r,quad:a}}}this.height<0&&(this.height*=-1,this.bottom_up=!1)},qe.prototype.parseBGR=function(){this.pos=this.offset;try{var t="bit"+this.bitPP,e=this.width*this.height*4;this.data=new Uint8Array(e),this[t]()}catch(t){i.log("bit decode error:"+t)}},qe.prototype.bit1=function(){var t,e=Math.ceil(this.width/8),r=e%4;for(t=this.height-1;t>=0;t--){for(var n=this.bottom_up?t:this.height-1-t,i=0;i<e;i++)for(var a=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+8*i*4,s=0;s<8&&8*i+s<this.width;s++){var c=this.palette[a>>7-s&1];this.data[o+4*s]=c.blue,this.data[o+4*s+1]=c.green,this.data[o+4*s+2]=c.red,this.data[o+4*s+3]=255}0!==r&&(this.pos+=4-r)}},qe.prototype.bit4=function(){for(var t=Math.ceil(this.width/2),e=t%4,r=this.height-1;r>=0;r--){for(var n=this.bottom_up?r:this.height-1-r,i=0;i<t;i++){var a=this.datav.getUint8(this.pos++,!0),o=n*this.width*4+2*i*4,s=a>>4,c=15&a,u=this.palette[s];if(this.data[o]=u.blue,this.data[o+1]=u.green,this.data[o+2]=u.red,this.data[o+3]=255,2*i+1>=this.width)break;u=this.palette[c],this.data[o+4]=u.blue,this.data[o+4+1]=u.green,this.data[o+4+2]=u.red,this.data[o+4+3]=255}0!==e&&(this.pos+=4-e)}},qe.prototype.bit8=function(){for(var t=this.width%4,e=this.height-1;e>=0;e--){for(var r=this.bottom_up?e:this.height-1-e,n=0;n<this.width;n++){var i=this.datav.getUint8(this.pos++,!0),a=r*this.width*4+4*n;if(i<this.palette.length){var o=this.palette[i];this.data[a]=o.red,this.data[a+1]=o.green,this.data[a+2]=o.blue,this.data[a+3]=255}else this.data[a]=255,this.data[a+1]=255,this.data[a+2]=255,this.data[a+3]=255}0!==t&&(this.pos+=4-t)}},qe.prototype.bit15=function(){for(var t=this.width%3,e=parseInt("11111",2),r=this.height-1;r>=0;r--){for(var n=this.bottom_up?r:this.height-1-r,i=0;i<this.width;i++){var a=this.datav.getUint16(this.pos,!0);this.pos+=2;var o=(a&e)/e*255|0,s=(a>>5&e)/e*255|0,c=(a>>10&e)/e*255|0,u=a>>15?255:0,l=n*this.width*4+4*i;this.data[l]=c,this.data[l+1]=s,this.data[l+2]=o,this.data[l+3]=u}this.pos+=t}},qe.prototype.bit16=function(){for(var t=this.width%3,e=parseInt("11111",2),r=parseInt("111111",2),n=this.height-1;n>=0;n--){for(var i=this.bottom_up?n:this.height-1-n,a=0;a<this.width;a++){var o=this.datav.getUint16(this.pos,!0);this.pos+=2;var s=(o&e)/e*255|0,c=(o>>5&r)/r*255|0,u=(o>>11)/e*255|0,l=i*this.width*4+4*a;this.data[l]=u,this.data[l+1]=c,this.data[l+2]=s,this.data[l+3]=255}this.pos+=t}},qe.prototype.bit24=function(){for(var t=this.height-1;t>=0;t--){for(var e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++){var n=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),o=e*this.width*4+4*r;this.data[o]=a,this.data[o+1]=i,this.data[o+2]=n,this.data[o+3]=255}this.pos+=this.width%4}},qe.prototype.bit32=function(){for(var t=this.height-1;t>=0;t--)for(var e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++){var n=this.datav.getUint8(this.pos++,!0),i=this.datav.getUint8(this.pos++,!0),a=this.datav.getUint8(this.pos++,!0),o=this.datav.getUint8(this.pos++,!0),s=e*this.width*4+4*r;this.data[s]=a,this.data[s+1]=i,this.data[s+2]=n,this.data[s+3]=o}},qe.prototype.getData=function(){return this.data}, +/** + * @license + * Copyright (c) 2018 Aras Abbasi + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){t.processBMP=function(e,r,n,i){var a=new qe(e,!1),o=a.width,s=a.height,c={data:a.getData(),width:o,height:s},u=new Ee(100).encode(c,100);return t.processJPEG.call(this,u,r,n,i)}}(M.API),De.prototype.getData=function(){return this.data}, +/** + * @license + * Copyright (c) 2019 Aras Abbasi + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){t.processWEBP=function(e,r,n,i){var a=new De(e,!1),o=a.width,s=a.height,c={data:a.getData(),width:o,height:s},u=new Ee(100).encode(c,100);return t.processJPEG.call(this,u,r,n,i)}}(M.API), +/** + * @license + * + * Copyright (c) 2021 Antti Palola, https://github.com/Pantura + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * ==================================================================== + */ +function(t){t.processRGBA=function(t,e,r){for(var n=t.data,i=n.length,a=new Uint8Array(i/4*3),o=new Uint8Array(i/4),s=0,c=0,u=0;u<i;u+=4){var l=n[u],h=n[u+1],f=n[u+2],d=n[u+3];a[s++]=l,a[s++]=h,a[s++]=f,o[c++]=d}var p=this.__addimage__.arrayBufferToBinaryString(a);return{alpha:this.__addimage__.arrayBufferToBinaryString(o),data:p,index:e,alias:r,colorSpace:"DeviceRGB",bitsPerComponent:8,width:t.width,height:t.height}}}(M.API), +/** + * @license + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){t.setLanguage=function(t){return void 0===this.internal.languageSettings&&(this.internal.languageSettings={},this.internal.languageSettings.isSubscribed=!1),void 0!=={af:"Afrikaans",sq:"Albanian",ar:"Arabic (Standard)","ar-DZ":"Arabic (Algeria)","ar-BH":"Arabic (Bahrain)","ar-EG":"Arabic (Egypt)","ar-IQ":"Arabic (Iraq)","ar-JO":"Arabic (Jordan)","ar-KW":"Arabic (Kuwait)","ar-LB":"Arabic (Lebanon)","ar-LY":"Arabic (Libya)","ar-MA":"Arabic (Morocco)","ar-OM":"Arabic (Oman)","ar-QA":"Arabic (Qatar)","ar-SA":"Arabic (Saudi Arabia)","ar-SY":"Arabic (Syria)","ar-TN":"Arabic (Tunisia)","ar-AE":"Arabic (U.A.E.)","ar-YE":"Arabic (Yemen)",an:"Aragonese",hy:"Armenian",as:"Assamese",ast:"Asturian",az:"Azerbaijani",eu:"Basque",be:"Belarusian",bn:"Bengali",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",zh:"Chinese","zh-HK":"Chinese (Hong Kong)","zh-CN":"Chinese (PRC)","zh-SG":"Chinese (Singapore)","zh-TW":"Chinese (Taiwan)",cv:"Chuvash",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch (Standard)","nl-BE":"Dutch (Belgian)",en:"English","en-AU":"English (Australia)","en-BZ":"English (Belize)","en-CA":"English (Canada)","en-IE":"English (Ireland)","en-JM":"English (Jamaica)","en-NZ":"English (New Zealand)","en-PH":"English (Philippines)","en-ZA":"English (South Africa)","en-TT":"English (Trinidad & Tobago)","en-GB":"English (United Kingdom)","en-US":"English (United States)","en-ZW":"English (Zimbabwe)",eo:"Esperanto",et:"Estonian",fo:"Faeroese",fj:"Fijian",fi:"Finnish",fr:"French (Standard)","fr-BE":"French (Belgium)","fr-CA":"French (Canada)","fr-FR":"French (France)","fr-LU":"French (Luxembourg)","fr-MC":"French (Monaco)","fr-CH":"French (Switzerland)",fy:"Frisian",fur:"Friulian",gd:"Gaelic (Scots)","gd-IE":"Gaelic (Irish)",gl:"Galacian",ka:"Georgian",de:"German (Standard)","de-AT":"German (Austria)","de-DE":"German (Germany)","de-LI":"German (Liechtenstein)","de-LU":"German (Luxembourg)","de-CH":"German (Switzerland)",el:"Greek",gu:"Gujurati",ht:"Haitian",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",iu:"Inuktitut",ga:"Irish",it:"Italian (Standard)","it-CH":"Italian (Switzerland)",ja:"Japanese",kn:"Kannada",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ky:"Kirghiz",tlh:"Klingon",ko:"Korean","ko-KP":"Korean (North Korea)","ko-KR":"Korean (South Korea)",la:"Latin",lv:"Latvian",lt:"Lithuanian",lb:"Luxembourgish",mk:"North Macedonia",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mo:"Moldavian",nv:"Navajo",ng:"Ndonga",ne:"Nepali",no:"Norwegian",nb:"Norwegian (Bokmal)",nn:"Norwegian (Nynorsk)",oc:"Occitan",or:"Oriya",om:"Oromo",fa:"Persian","fa-IR":"Persian/Iran",pl:"Polish",pt:"Portuguese","pt-BR":"Portuguese (Brazil)",pa:"Punjabi","pa-IN":"Punjabi (India)","pa-PK":"Punjabi (Pakistan)",qu:"Quechua",rm:"Rhaeto-Romanic",ro:"Romanian","ro-MO":"Romanian (Moldavia)",ru:"Russian","ru-MO":"Russian (Moldavia)",sz:"Sami (Lappish)",sg:"Sango",sa:"Sanskrit",sc:"Sardinian",sd:"Sindhi",si:"Singhalese",sr:"Serbian",sk:"Slovak",sl:"Slovenian",so:"Somani",sb:"Sorbian",es:"Spanish","es-AR":"Spanish (Argentina)","es-BO":"Spanish (Bolivia)","es-CL":"Spanish (Chile)","es-CO":"Spanish (Colombia)","es-CR":"Spanish (Costa Rica)","es-DO":"Spanish (Dominican Republic)","es-EC":"Spanish (Ecuador)","es-SV":"Spanish (El Salvador)","es-GT":"Spanish (Guatemala)","es-HN":"Spanish (Honduras)","es-MX":"Spanish (Mexico)","es-NI":"Spanish (Nicaragua)","es-PA":"Spanish (Panama)","es-PY":"Spanish (Paraguay)","es-PE":"Spanish (Peru)","es-PR":"Spanish (Puerto Rico)","es-ES":"Spanish (Spain)","es-UY":"Spanish (Uruguay)","es-VE":"Spanish (Venezuela)",sx:"Sutu",sw:"Swahili",sv:"Swedish","sv-FI":"Swedish (Finland)","sv-SV":"Swedish (Sweden)",ta:"Tamil",tt:"Tatar",te:"Teluga",th:"Thai",tig:"Tigre",ts:"Tsonga",tn:"Tswana",tr:"Turkish",tk:"Turkmen",uk:"Ukrainian",hsb:"Upper Sorbian",ur:"Urdu",ve:"Venda",vi:"Vietnamese",vo:"Volapuk",wa:"Walloon",cy:"Welsh",xh:"Xhosa",ji:"Yiddish",zu:"Zulu"}[t]&&(this.internal.languageSettings.languageCode=t,!1===this.internal.languageSettings.isSubscribed&&(this.internal.events.subscribe("putCatalog",(function(){this.internal.write("/Lang ("+this.internal.languageSettings.languageCode+")")})),this.internal.languageSettings.isSubscribed=!0)),this}}(M.API),ke=M.API,Fe=ke.getCharWidthsArray=function(t,r){var n,i,a=(r=r||{}).font||this.internal.getFont(),o=r.fontSize||this.internal.getFontSize(),s=r.charSpace||this.internal.getCharSpace(),c=r.widths?r.widths:a.metadata.Unicode.widths,u=c.fof?c.fof:1,l=r.kerning?r.kerning:a.metadata.Unicode.kerning,h=l.fof?l.fof:1,f=!1!==r.doKerning,d=0,p=t.length,g=0,m=c[0]||u,v=[];for(n=0;n<p;n++)i=t.charCodeAt(n),"function"==typeof a.metadata.widthOfString?v.push((a.metadata.widthOfGlyph(a.metadata.characterToGlyph(i))+s*(1e3/o)||0)/1e3):(d=f&&"object"===e(l[i])&&!isNaN(parseInt(l[i][g],10))?l[i][g]/h:0,v.push((c[i]||m)/u+d)),g=i;return v},Ie=ke.getStringUnitWidth=function(t,e){var r=(e=e||{}).fontSize||this.internal.getFontSize(),n=e.font||this.internal.getFont(),i=e.charSpace||this.internal.getCharSpace();return ke.processArabic&&(t=ke.processArabic(t)),"function"==typeof n.metadata.widthOfString?n.metadata.widthOfString(t,r,i)/r:Fe.apply(this,arguments).reduce((function(t,e){return t+e}),0)},Ce=function(t,e,r,n){for(var i=[],a=0,o=t.length,s=0;a!==o&&s+e[a]<r;)s+=e[a],a++;i.push(t.slice(0,a));var c=a;for(s=0;a!==o;)s+e[a]>n&&(i.push(t.slice(c,a)),s=0,c=a),s+=e[a],a++;return c!==a&&i.push(t.slice(c,a)),i},je=function(t,e,r){r||(r={});var n,i,a,o,s,c,u,l=[],h=[l],f=r.textIndent||0,d=0,p=0,g=t.split(" "),m=Fe.apply(this,[" ",r])[0];if(c=-1===r.lineIndent?g[0].length+2:r.lineIndent||0){var v=Array(c).join(" "),b=[];g.map((function(t){(t=t.split(/\s*\n/)).length>1?b=b.concat(t.map((function(t,e){return(e&&t.length?"\n":"")+t}))):b.push(t[0])})),g=b,c=Ie.apply(this,[v,r])}for(a=0,o=g.length;a<o;a++){var y=0;if(n=g[a],c&&"\n"==n[0]&&(n=n.substr(1),y=1),f+d+(p=(i=Fe.apply(this,[n,r])).reduce((function(t,e){return t+e}),0))>e||y){if(p>e){for(s=Ce.apply(this,[n,i,e-(f+d),e]),l.push(s.shift()),l=[s.pop()];s.length;)h.push([s.shift()]);p=i.slice(n.length-(l[0]?l[0].length:0)).reduce((function(t,e){return t+e}),0)}else l=[n];h.push(l),f=p+c,d=m}else l.push(n),f+=d+p,d=m}return u=c?function(t,e){return(e?v:"")+t.join(" ")}:function(t){return t.join(" ")},h.map(u)},ke.splitTextToSize=function(t,e,r){var n,i=(r=r||{}).fontSize||this.internal.getFontSize(),a=function(t){if(t.widths&&t.kerning)return{widths:t.widths,kerning:t.kerning};var e=this.internal.getFont(t.fontName,t.fontStyle);return e.metadata.Unicode?{widths:e.metadata.Unicode.widths||{0:1},kerning:e.metadata.Unicode.kerning||{}}:{font:e.metadata,fontSize:this.internal.getFontSize(),charSpace:this.internal.getCharSpace()}}.call(this,r);n=Array.isArray(t)?t:String(t).split(/\r?\n/);var o=1*this.internal.scaleFactor*e/i;a.textIndent=r.textIndent?1*r.textIndent*this.internal.scaleFactor/i:0,a.lineIndent=r.lineIndent;var s,c,u=[];for(s=0,c=n.length;s<c;s++)u=u.concat(je.apply(this,[n[s],o,a]));return u},function(t){t.__fontmetrics__=t.__fontmetrics__||{};for(var r="klmnopqrstuvwxyz",n={},i={},a=0;a<r.length;a++)n[r[a]]="0123456789abcdef"[a],i["0123456789abcdef"[a]]=r[a];var o=function(t){return"0x"+parseInt(t,10).toString(16)},s=t.__fontmetrics__.compress=function(t){var r,n,a,c,u=["{"];for(var l in t){if(r=t[l],isNaN(parseInt(l,10))?n="'"+l+"'":(l=parseInt(l,10),n=(n=o(l).slice(2)).slice(0,-1)+i[n.slice(-1)]),"number"==typeof r)r<0?(a=o(r).slice(3),c="-"):(a=o(r).slice(2),c=""),a=c+a.slice(0,-1)+i[a.slice(-1)];else{if("object"!==e(r))throw new Error("Don't know what to do with value type "+e(r)+".");a=s(r)}u.push(n+a)}return u.push("}"),u.join("")},c=t.__fontmetrics__.uncompress=function(t){if("string"!=typeof t)throw new Error("Invalid argument passed to uncompress.");for(var e,r,i,a,o={},s=1,c=o,u=[],l="",h="",f=t.length-1,d=1;d<f;d+=1)"'"==(a=t[d])?e?(i=e.join(""),e=void 0):e=[]:e?e.push(a):"{"==a?(u.push([c,i]),c={},i=void 0):"}"==a?((r=u.pop())[0][r[1]]=c,i=void 0,c=r[0]):"-"==a?s=-1:void 0===i?n.hasOwnProperty(a)?(l+=n[a],i=parseInt(l,16)*s,s=1,l=""):l+=a:n.hasOwnProperty(a)?(h+=n[a],c[i]=parseInt(h,16)*s,s=1,i=void 0,h=""):h+=a;return o},u={codePages:["WinAnsiEncoding"],WinAnsiEncoding:c("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")},l={Unicode:{Courier:u,"Courier-Bold":u,"Courier-BoldOblique":u,"Courier-Oblique":u,Helvetica:u,"Helvetica-Bold":u,"Helvetica-BoldOblique":u,"Helvetica-Oblique":u,"Times-Roman":u,"Times-Bold":u,"Times-BoldItalic":u,"Times-Italic":u}},h={Unicode:{"Courier-Oblique":c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-BoldItalic":c("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),"Helvetica-Bold":c("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),Courier:c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-BoldOblique":c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Bold":c("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),Symbol:c("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"),Helvetica:c("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),"Helvetica-BoldOblique":c("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),ZapfDingbats:c("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-Bold":c("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Italic":c("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),"Times-Roman":c("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),"Helvetica-Oblique":c("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")}};t.events.push(["addFont",function(t){var e=t.font,r=h.Unicode[e.postScriptName];r&&(e.metadata.Unicode={},e.metadata.Unicode.widths=r.widths,e.metadata.Unicode.kerning=r.kerning);var n=l.Unicode[e.postScriptName];n&&(e.metadata.Unicode.encoding=n,e.encoding=n.codePages[0])}])}(M.API), +/** + * @license + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++)r[n]=t.charCodeAt(n);return r};t.API.events.push(["addFont",function(r){var n=void 0,i=r.font,a=r.instance;if(!i.isStandardFont){if(void 0===a)throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('"+i.postScriptName+"').");if("string"!=typeof(n=!1===a.existsFileInVFS(i.postScriptName)?a.loadFile(i.postScriptName):a.getFileFromVFS(i.postScriptName)))throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('"+i.postScriptName+"').");!function(r,n){n=/^\x00\x01\x00\x00/.test(n)?e(n):e(c(n)),r.metadata=t.API.TTFFont.open(n),r.metadata.Unicode=r.metadata.Unicode||{encoding:{},kerning:{},widths:[]},r.metadata.glyIdsUsed=[0]}(i,n)}}])}(M),function(n){function a(){return(r.canvg?Promise.resolve(r.canvg):"object"===(void 0===t?"undefined":e(t))&&"undefined"!=typeof module?new Promise((function(t,e){try{t(require("canvg"))}catch(t){e(t)}})):"function"==typeof define&&define.amd?new Promise((function(t,e){try{require(["canvg"],t)}catch(t){e(t)}})):Promise.reject(new Error("Could not load canvg"))).catch((function(t){return Promise.reject(new Error("Could not load canvg: "+t))})).then((function(t){return t.default?t.default:t}))}n.addSvgAsImage=function(t,e,r,n,o,s,c,u){if(isNaN(e)||isNaN(r))throw i.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(n)||isNaN(o))throw i.error("jsPDF.addSvgAsImage: Invalid measurements",arguments),new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var l=document.createElement("canvas");l.width=n,l.height=o;var h=l.getContext("2d");h.fillStyle="#fff",h.fillRect(0,0,l.width,l.height);var f={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0},d=this;return a().then((function(e){return e.fromString(h,t,f)}),(function(){return Promise.reject(new Error("Could not load canvg."))})).then((function(t){return t.render(f)})).then((function(){d.addImage(l.toDataURL("image/jpeg",1),e,r,n,o,c,u)}))}}(M.API), +/** + * @license + * ==================================================================== + * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * ==================================================================== + */ +function(t){t.putTotalPages=function(t){var e,r=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(e=new RegExp(t,"g"),r=this.internal.getNumberOfPages()):(e=new RegExp(this.pdfEscape16(t,this.internal.getFont()),"g"),r=this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var n=1;n<=this.internal.getNumberOfPages();n++)for(var i=0;i<this.internal.pages[n].length;i++)this.internal.pages[n][i]=this.internal.pages[n][i].replace(e,r);return this}}(M.API),function(t){t.viewerPreferences=function(t,r){var n;t=t||{},r=r||!1;var i,a,o,s={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},c=Object.keys(s),u=[],l=0,h=0,f=0;function d(t,e){var r,n=!1;for(r=0;r<t.length;r+=1)t[r]===e&&(n=!0);return n}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(s)),this.internal.viewerpreferences.isSubscribed=!1),n=this.internal.viewerpreferences.configuration,"reset"===t||!0===r){var p=c.length;for(f=0;f<p;f+=1)n[c[f]].value=n[c[f]].defaultValue,n[c[f]].explicitSet=!1}if("object"===e(t))for(a in t)if(o=t[a],d(c,a)&&void 0!==o){if("boolean"===n[a].type&&"boolean"==typeof o)n[a].value=o;else if("name"===n[a].type&&d(n[a].valueSet,o))n[a].value=o;else if("integer"===n[a].type&&Number.isInteger(o))n[a].value=o;else if("array"===n[a].type){for(l=0;l<o.length;l+=1)if(i=!0,1===o[l].length&&"number"==typeof o[l][0])u.push(String(o[l]-1));else if(o[l].length>1){for(h=0;h<o[l].length;h+=1)"number"!=typeof o[l][h]&&(i=!1);!0===i&&u.push([o[l][0]-1,o[l][1]-1].join(" "))}n[a].value="["+u.join(" ")+"]"}else n[a].value=n[a].defaultValue;n[a].explicitSet=!0}return!1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",(function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>")})),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this}}(M.API), +/** ==================================================================== + * @license + * jsPDF XMP metadata plugin + * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * ==================================================================== + */ +function(t){var e=function(){var t='<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="'+this.internal.__metadata__.namespaceuri+'"><jspdf:metadata>',e=unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')),r=unescape(encodeURIComponent(t)),n=unescape(encodeURIComponent(this.internal.__metadata__.metadata)),i=unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")),a=unescape(encodeURIComponent("</x:xmpmeta>")),o=r.length+n.length+i.length+e.length+a.length;this.internal.__metadata__.metadata_object_number=this.internal.newObject(),this.internal.write("<< /Type /Metadata /Subtype /XML /Length "+o+" >>"),this.internal.write("stream"),this.internal.write(e+r+n+i+a),this.internal.write("endstream"),this.internal.write("endobj")},r=function(){this.internal.__metadata__.metadata_object_number&&this.internal.write("/Metadata "+this.internal.__metadata__.metadata_object_number+" 0 R")};t.addMetadata=function(t,n){return void 0===this.internal.__metadata__&&(this.internal.__metadata__={metadata:t,namespaceuri:n||"http://jspdf.default.namespaceuri/"},this.internal.events.subscribe("putCatalog",r),this.internal.events.subscribe("postPutResources",e)),this}}(M.API),function(t){var e=t.API,r=e.pdfEscape16=function(t,e){for(var r,n=e.metadata.Unicode.widths,i=["","0","00","000","0000"],a=[""],o=0,s=t.length;o<s;++o){if(r=e.metadata.characterToGlyph(t.charCodeAt(o)),e.metadata.glyIdsUsed.push(r),e.metadata.toUnicode[r]=t.charCodeAt(o),-1==n.indexOf(r)&&(n.push(r),n.push([parseInt(e.metadata.widthOfGlyph(r),10)])),"0"==r)return a.join("");r=r.toString(16),a.push(i[4-r.length],r)}return a.join("")},n=function(t){var e,r,n,i,a,o,s;for(a="/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange",n=[],o=0,s=(r=Object.keys(t).sort((function(t,e){return t-e}))).length;o<s;o++)e=r[o],n.length>=100&&(a+="\n"+n.length+" beginbfchar\n"+n.join("\n")+"\nendbfchar",n=[]),void 0!==t[e]&&null!==t[e]&&"function"==typeof t[e].toString&&(i=("0000"+t[e].toString(16)).slice(-4),e=("0000"+(+e).toString(16)).slice(-4),n.push("<"+e+"><"+i+">"));return n.length&&(a+="\n"+n.length+" beginbfchar\n"+n.join("\n")+"\nendbfchar\n"),a+="endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"};e.events.push(["putFont",function(e){!function(e){var r=e.font,i=e.out,a=e.newObject,o=e.putStream;if(r.metadata instanceof t.API.TTFFont&&"Identity-H"===r.encoding){for(var s=r.metadata.Unicode.widths,c=r.metadata.subset.encode(r.metadata.glyIdsUsed,1),u="",l=0;l<c.length;l++)u+=String.fromCharCode(c[l]);var h=a();o({data:u,addLength1:!0,objectId:h}),i("endobj");var f=a();o({data:n(r.metadata.toUnicode),addLength1:!0,objectId:f}),i("endobj");var d=a();i("<<"),i("/Type /FontDescriptor"),i("/FontName /"+F(r.fontName)),i("/FontFile2 "+h+" 0 R"),i("/FontBBox "+t.API.PDFObject.convert(r.metadata.bbox)),i("/Flags "+r.metadata.flags),i("/StemV "+r.metadata.stemV),i("/ItalicAngle "+r.metadata.italicAngle),i("/Ascent "+r.metadata.ascender),i("/Descent "+r.metadata.decender),i("/CapHeight "+r.metadata.capHeight),i(">>"),i("endobj");var p=a();i("<<"),i("/Type /Font"),i("/BaseFont /"+F(r.fontName)),i("/FontDescriptor "+d+" 0 R"),i("/W "+t.API.PDFObject.convert(s)),i("/CIDToGIDMap /Identity"),i("/DW 1000"),i("/Subtype /CIDFontType2"),i("/CIDSystemInfo"),i("<<"),i("/Supplement 0"),i("/Registry (Adobe)"),i("/Ordering ("+r.encoding+")"),i(">>"),i(">>"),i("endobj"),r.objectNumber=a(),i("<<"),i("/Type /Font"),i("/Subtype /Type0"),i("/ToUnicode "+f+" 0 R"),i("/BaseFont /"+F(r.fontName)),i("/Encoding /"+r.encoding),i("/DescendantFonts ["+p+" 0 R]"),i(">>"),i("endobj"),r.isAlreadyPutted=!0}}(e)}]);e.events.push(["putFont",function(e){!function(e){var r=e.font,i=e.out,a=e.newObject,o=e.putStream;if(r.metadata instanceof t.API.TTFFont&&"WinAnsiEncoding"===r.encoding){for(var s=r.metadata.rawData,c="",u=0;u<s.length;u++)c+=String.fromCharCode(s[u]);var l=a();o({data:c,addLength1:!0,objectId:l}),i("endobj");var h=a();o({data:n(r.metadata.toUnicode),addLength1:!0,objectId:h}),i("endobj");var f=a();i("<<"),i("/Descent "+r.metadata.decender),i("/CapHeight "+r.metadata.capHeight),i("/StemV "+r.metadata.stemV),i("/Type /FontDescriptor"),i("/FontFile2 "+l+" 0 R"),i("/Flags 96"),i("/FontBBox "+t.API.PDFObject.convert(r.metadata.bbox)),i("/FontName /"+F(r.fontName)),i("/ItalicAngle "+r.metadata.italicAngle),i("/Ascent "+r.metadata.ascender),i(">>"),i("endobj"),r.objectNumber=a();for(var d=0;d<r.metadata.hmtx.widths.length;d++)r.metadata.hmtx.widths[d]=parseInt(r.metadata.hmtx.widths[d]*(1e3/r.metadata.head.unitsPerEm));i("<</Subtype/TrueType/Type/Font/ToUnicode "+h+" 0 R/BaseFont/"+F(r.fontName)+"/FontDescriptor "+f+" 0 R/Encoding/"+r.encoding+" /FirstChar 29 /LastChar 255 /Widths "+t.API.PDFObject.convert(r.metadata.hmtx.widths)+">>"),i("endobj"),r.isAlreadyPutted=!0}}(e)}]);var i=function(t){var e,n=t.text||"",i=t.x,a=t.y,o=t.options||{},s=t.mutex||{},c=s.pdfEscape,u=s.activeFontKey,l=s.fonts,h=u,f="",d=0,p="",g=l[h].encoding;if("Identity-H"!==l[h].encoding)return{text:n,x:i,y:a,options:o,mutex:s};for(p=n,h=u,Array.isArray(n)&&(p=n[0]),d=0;d<p.length;d+=1)l[h].metadata.hasOwnProperty("cmap")&&(e=l[h].metadata.cmap.unicode.codeMap[p[d].charCodeAt(0)]),e||p[d].charCodeAt(0)<256&&l[h].metadata.hasOwnProperty("Unicode")?f+=p[d]:f+="";var m="";return parseInt(h.slice(1))<14||"WinAnsiEncoding"===g?m=c(f,h).split("").map((function(t){return t.charCodeAt(0).toString(16)})).join(""):"Identity-H"===g&&(m=r(f,l[h])),s.isHex=!0,{text:m,x:i,y:a,options:o,mutex:s}};e.events.push(["postProcessText",function(t){var e=t.text||"",r=[],n={text:e,x:t.x,y:t.y,options:t.options,mutex:t.mutex};if(Array.isArray(e)){var a=0;for(a=0;a<e.length;a+=1)Array.isArray(e[a])&&3===e[a].length?r.push([i(Object.assign({},n,{text:e[a][0]})).text,e[a][1],e[a][2]]):r.push(i(Object.assign({},n,{text:e[a]})).text);t.text=r}else t.text=i(Object.assign({},n,{text:e})).text}])}(M), +/** + * @license + * jsPDF virtual FileSystem functionality + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var e=function(){return void 0===this.internal.vFS&&(this.internal.vFS={}),!0};t.existsFileInVFS=function(t){return e.call(this),void 0!==this.internal.vFS[t]},t.addFileToVFS=function(t,r){return e.call(this),this.internal.vFS[t]=r,this},t.getFileFromVFS=function(t){return e.call(this),void 0!==this.internal.vFS[t]?this.internal.vFS[t]:null}}(M.API), +/** + * @license + * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis) + * MIT License + */ +function(t){t.__bidiEngine__=t.prototype.__bidiEngine__=function(t){var r,n,i,a,o,s,c,u=e,l=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],h=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],f={L:0,R:1,EN:2,AN:3,N:4,B:5,S:6},d={0:0,5:1,6:2,7:3,32:4,251:5,254:6,255:7},p=["(",")","(","<",">","<","[","]","[","{","}","{","«","»","«","‹","›","‹","â…","â†","â…","â½","â¾","â½","â‚","₎","â‚","≤","≥","≤","〈","〉","〈","ï¹™","﹚","ï¹™","ï¹›","﹜","ï¹›","ï¹","﹞","ï¹","﹤","ï¹¥","﹤"],g=new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/),m=!1,v=0;this.__bidiEngine__={};var b=function(t){var e=t.charCodeAt(),r=e>>8,n=d[r];return void 0!==n?u[256*n+(255&e)]:252===r||253===r?"AL":g.test(r)?"L":8===r?"R":"N"},y=function(t){for(var e,r=0;r<t.length;r++){if("L"===(e=b(t.charAt(r))))return!1;if("R"===e)return!0}return!1},w=function(t,e,o,s){var c,u,l,h,f=e[s];switch(f){case"L":case"R":m=!1;break;case"N":case"AN":break;case"EN":m&&(f="AN");break;case"AL":m=!0,f="R";break;case"WS":f="N";break;case"CS":s<1||s+1>=e.length||"EN"!==(c=o[s-1])&&"AN"!==c||"EN"!==(u=e[s+1])&&"AN"!==u?f="N":m&&(u="AN"),f=u===c?u:"N";break;case"ES":f="EN"===(c=s>0?o[s-1]:"B")&&s+1<e.length&&"EN"===e[s+1]?"EN":"N";break;case"ET":if(s>0&&"EN"===o[s-1]){f="EN";break}if(m){f="N";break}for(l=s+1,h=e.length;l<h&&"ET"===e[l];)l++;f=l<h&&"EN"===e[l]?"EN":"N";break;case"NSM":if(i&&!a){for(h=e.length,l=s+1;l<h&&"NSM"===e[l];)l++;if(l<h){var d=t[s],p=d>=1425&&d<=2303||64286===d;if(c=e[l],p&&("R"===c||"AL"===c)){f="R";break}}}f=s<1||"B"===(c=e[s-1])?"N":o[s-1];break;case"B":m=!1,r=!0,f=v;break;case"S":n=!0,f="N";break;case"LRE":case"RLE":case"LRO":case"RLO":case"PDF":m=!1;break;case"BN":f="N"}return f},N=function(t,e,r){var n=t.split("");return r&&L(n,r,{hiLevel:v}),n.reverse(),e&&e.reverse(),n.join("")},L=function(t,e,i){var a,o,s,c,u,d=-1,p=t.length,g=0,y=[],N=v?h:l,L=[];for(m=!1,r=!1,n=!1,o=0;o<p;o++)L[o]=b(t[o]);for(s=0;s<p;s++){if(u=g,y[s]=w(t,L,y,s),a=240&(g=N[u][f[y[s]]]),g&=15,e[s]=c=N[g][5],a>0)if(16===a){for(o=d;o<s;o++)e[o]=1;d=-1}else d=-1;if(N[g][6])-1===d&&(d=s);else if(d>-1){for(o=d;o<s;o++)e[o]=c;d=-1}"B"===L[s]&&(e[s]=0),i.hiLevel|=c}n&&function(t,e,r){for(var n=0;n<r;n++)if("S"===t[n]){e[n]=v;for(var i=n-1;i>=0&&"WS"===t[i];i--)e[i]=v}}(L,e,p)},A=function(t,e,n,i,a){if(!(a.hiLevel<t)){if(1===t&&1===v&&!r)return e.reverse(),void(n&&n.reverse());for(var o,s,c,u,l=e.length,h=0;h<l;){if(i[h]>=t){for(c=h+1;c<l&&i[c]>=t;)c++;for(u=h,s=c-1;u<s;u++,s--)o=e[u],e[u]=e[s],e[s]=o,n&&(o=n[u],n[u]=n[s],n[s]=o);h=c}h++}}},x=function(t,e,r){var n=t.split(""),i={hiLevel:v};return r||(r=[]),L(n,r,i),function(t,e,r){if(0!==r.hiLevel&&c)for(var n,i=0;i<t.length;i++)1===e[i]&&(n=p.indexOf(t[i]))>=0&&(t[i]=p[n+1])}(n,r,i),A(2,n,e,r,i),A(1,n,e,r,i),n.join("")};return this.__bidiEngine__.doBidiReorder=function(t,e,r){if(function(t,e){if(e)for(var r=0;r<t.length;r++)e[r]=r;void 0===a&&(a=y(t)),void 0===s&&(s=y(t))}(t,e),i||!o||s)if(i&&o&&a^s)v=a?1:0,t=N(t,e,r);else if(!i&&o&&s)v=a?1:0,t=x(t,e,r),t=N(t,e);else if(!i||a||o||s){if(i&&!o&&a^s)t=N(t,e),a?(v=0,t=x(t,e,r)):(v=1,t=x(t,e,r),t=N(t,e));else if(i&&a&&!o&&s)v=1,t=x(t,e,r),t=N(t,e);else if(!i&&!o&&a^s){var n=c;a?(v=1,t=x(t,e,r),v=0,c=!1,t=x(t,e,r),c=n):(v=0,t=x(t,e,r),t=N(t,e),v=1,c=!1,t=x(t,e,r),c=n,t=N(t,e))}}else v=0,t=x(t,e,r);else v=a?1:0,t=x(t,e,r);return t},this.__bidiEngine__.setOptions=function(t){t&&(i=t.isInputVisual,o=t.isOutputVisual,a=t.isInputRtl,s=t.isOutputRtl,c=t.isSymmetricSwapping)},this.__bidiEngine__.setOptions(t),this.__bidiEngine__};var e=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","N","N","ET","ET","ET","N","N","N","N","N","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","N","ET","ET","ET","ET","N","N","N","N","L","N","N","BN","N","N","ET","ET","EN","EN","N","L","N","N","N","EN","L","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","L","L","L","L","L","L","L","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","L","N","N","N","N","N","ET","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","R","NSM","R","NSM","NSM","R","NSM","NSM","R","NSM","N","N","N","N","N","N","N","N","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","N","N","N","N","N","R","R","R","R","R","N","N","N","N","N","N","N","N","N","N","N","AN","AN","AN","AN","AN","AN","N","N","AL","ET","ET","AL","CS","AL","N","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","N","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","N","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","N","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","N","N","N","N","N","N","N","N","N","N","N","N","N","N","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","R","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","R","R","N","N","N","N","R","N","N","N","N","N","WS","WS","WS","WS","WS","WS","WS","WS","WS","WS","WS","BN","BN","BN","L","R","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","WS","B","LRE","RLE","PDF","LRO","RLO","CS","ET","ET","ET","ET","ET","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","CS","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","WS","BN","BN","BN","BN","BN","N","LRI","RLI","FSI","PDI","BN","BN","BN","BN","BN","BN","EN","L","N","N","EN","EN","EN","EN","EN","EN","ES","ES","N","N","N","L","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","ES","ES","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","ET","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","L","L","L","L","L","L","L","N","N","N","N","N","N","N","N","N","N","N","N","L","L","L","L","L","N","N","N","N","N","R","NSM","R","R","R","R","R","R","R","R","R","R","ES","R","R","R","R","R","R","R","R","R","R","R","R","R","N","R","R","R","R","R","N","R","N","R","R","N","R","R","N","R","R","R","R","R","R","R","R","R","R","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","CS","N","CS","N","N","CS","N","N","N","N","N","N","N","N","N","ET","N","N","ES","ES","N","N","N","N","N","ET","ET","N","N","N","N","N","AL","AL","AL","AL","AL","N","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","N","N","BN","N","N","N","ET","ET","ET","N","N","N","N","N","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","N","N","N","N","N","N","N","N","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","N","N","N","L","L","L","L","L","L","N","N","L","L","L","L","L","L","N","N","L","L","L","L","L","L","N","N","L","L","L","N","N","N","ET","ET","N","N","N","ET","ET","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N"],r=new t.__bidiEngine__({isInputVisual:!0});t.API.events.push(["postProcessText",function(t){var e=t.text,n=(t.x,t.y,t.options||{}),i=(t.mutex,n.lang,[]);if(n.isInputVisual="boolean"!=typeof n.isInputVisual||n.isInputVisual,r.setOptions(n),"[object Array]"===Object.prototype.toString.call(e)){var a=0;for(i=[],a=0;a<e.length;a+=1)"[object Array]"===Object.prototype.toString.call(e[a])?i.push([r.doBidiReorder(e[a][0]),e[a][1],e[a][2]]):i.push([r.doBidiReorder(e[a])]);t.text=i}else t.text=r.doBidiReorder(e);r.setOptions({isInputVisual:!0})}])}(M),M.API.TTFFont=function(){function t(t){var e;if(this.rawData=t,e=this.contents=new Te(t),this.contents.pos=4,"ttcf"===e.readString(4))throw new Error("TTCF not supported.");e.pos=0,this.parse(),this.subset=new ar(this),this.registerTTF()}return t.open=function(e){return new t(e)},t.prototype.parse=function(){return this.directory=new Ue(this.contents),this.head=new We(this),this.name=new Ze(this),this.cmap=new Ge(this),this.toUnicode={},this.hhea=new Ye(this),this.maxp=new $e(this),this.hmtx=new Qe(this),this.post=new Xe(this),this.os2=new Je(this),this.loca=new ir(this),this.glyf=new er(this),this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender,this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender,this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap,this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]},t.prototype.registerTTF=function(){var t,e,r,n,i;if(this.scaleFactor=1e3/this.head.unitsPerEm,this.bbox=function(){var e,r,n,i;for(i=[],e=0,r=(n=this.bbox).length;e<r;e++)t=n[e],i.push(Math.round(t*this.scaleFactor));return i}.call(this),this.stemV=0,this.post.exists?(r=255&(n=this.post.italic_angle),0!=(32768&(e=n>>16))&&(e=-(1+(65535^e))),this.italicAngle=+(e+"."+r)):this.italicAngle=0,this.ascender=Math.round(this.ascender*this.scaleFactor),this.decender=Math.round(this.decender*this.scaleFactor),this.lineGap=Math.round(this.lineGap*this.scaleFactor),this.capHeight=this.os2.exists&&this.os2.capHeight||this.ascender,this.xHeight=this.os2.exists&&this.os2.xHeight||0,this.familyClass=(this.os2.exists&&this.os2.familyClass||0)>>8,this.isSerif=1===(i=this.familyClass)||2===i||3===i||4===i||5===i||7===i,this.isScript=10===this.familyClass,this.flags=0,this.post.isFixedPitch&&(this.flags|=1),this.isSerif&&(this.flags|=2),this.isScript&&(this.flags|=8),0!==this.italicAngle&&(this.flags|=64),this.flags|=32,!this.cmap.unicode)throw new Error("No unicode cmap for font")},t.prototype.characterToGlyph=function(t){var e;return(null!=(e=this.cmap.unicode)?e.codeMap[t]:void 0)||0},t.prototype.widthOfGlyph=function(t){var e;return e=1e3/this.head.unitsPerEm,this.hmtx.forGlyph(t).advance*e},t.prototype.widthOfString=function(t,e,r){var n,i,a,o;for(a=0,i=0,o=(t=""+t).length;0<=o?i<o:i>o;i=0<=o?++i:--i)n=t.charCodeAt(i),a+=this.widthOfGlyph(this.characterToGlyph(n))+r*(1e3/e)||0;return a*(e/1e3)},t.prototype.lineHeight=function(t,e){var r;return null==e&&(e=!1),r=e?this.lineGap:0,(this.ascender+r-this.decender)/1e3*t},t}();var Re,Te=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.readUInt32=function(){return 16777216*this.readByte()+(this.readByte()<<16)+(this.readByte()<<8)+this.readByte()},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return(t=this.readUInt32())>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){return this.readByte()<<8|this.readByte()},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return(t=this.readUInt16())>=32768?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,r;for(r=[],e=0;0<=t?e<t:e>t;e=0<=t?++e:--e)r[e]=String.fromCharCode(this.readByte());return r.join("")},t.prototype.writeString=function(t){var e,r,n;for(n=[],e=0,r=t.length;0<=r?e<r:e>r;e=0<=r?++e:--e)n.push(this.writeByte(t.charCodeAt(e)));return n},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,r,n,i,a,o,s;return t=this.readByte(),e=this.readByte(),r=this.readByte(),n=this.readByte(),i=this.readByte(),a=this.readByte(),o=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^r)+4294967296*(255^n)+16777216*(255^i)+65536*(255^a)+256*(255^o)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*r+4294967296*n+16777216*i+65536*a+256*o+s},t.prototype.writeLongLong=function(t){var e,r;return e=Math.floor(t/4294967296),r=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(r>>24&255),this.writeByte(r>>16&255),this.writeByte(r>>8&255),this.writeByte(255&r)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.read=function(t){var e,r;for(e=[],r=0;0<=t?r<t:r>t;r=0<=t?++r:--r)e.push(this.readByte());return e},t.prototype.write=function(t){var e,r,n,i;for(i=[],r=0,n=t.length;r<n;r++)e=t[r],i.push(this.writeByte(e));return i},t}(),Ue=function(){var t;function e(t){var e,r,n;for(this.scalarType=t.readInt(),this.tableCount=t.readShort(),this.searchRange=t.readShort(),this.entrySelector=t.readShort(),this.rangeShift=t.readShort(),this.tables={},r=0,n=this.tableCount;0<=n?r<n:r>n;r=0<=n?++r:--r)e={tag:t.readString(4),checksum:t.readInt(),offset:t.readInt(),length:t.readInt()},this.tables[e.tag]=e}return e.prototype.encode=function(e){var r,n,i,a,o,s,c,u,l,h,f,d,p;for(p in f=Object.keys(e).length,s=Math.log(2),l=16*Math.floor(Math.log(f)/s),a=Math.floor(l/s),u=16*f-l,(n=new Te).writeInt(this.scalarType),n.writeShort(f),n.writeShort(l),n.writeShort(a),n.writeShort(u),i=16*f,c=n.pos+i,o=null,d=[],e)for(h=e[p],n.writeString(p),n.writeInt(t(h)),n.writeInt(c),n.writeInt(h.length),d=d.concat(h),"head"===p&&(o=c),c+=h.length;c%4;)d.push(0),c++;return n.write(d),r=2981146554-t(n.data),n.pos=o+8,n.writeUInt32(r),n.data},t=function(t){var e,r,n,i;for(t=tr.call(t);t.length%4;)t.push(0);for(n=new Te(t),r=0,e=0,i=t.length;e<i;e=e+=4)r+=n.readUInt32();return 4294967295&r},e}(),ze={}.hasOwnProperty,He=function(t,e){for(var r in e)ze.call(e,r)&&(t[r]=e[r]);function n(){this.constructor=t}return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},We=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="head",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.revision=t.readInt(),this.checkSumAdjustment=t.readInt(),this.magicNumber=t.readInt(),this.flags=t.readShort(),this.unitsPerEm=t.readShort(),this.created=t.readLongLong(),this.modified=t.readLongLong(),this.xMin=t.readShort(),this.yMin=t.readShort(),this.xMax=t.readShort(),this.yMax=t.readShort(),this.macStyle=t.readShort(),this.lowestRecPPEM=t.readShort(),this.fontDirectionHint=t.readShort(),this.indexToLocFormat=t.readShort(),this.glyphDataFormat=t.readShort()},e.prototype.encode=function(t){var e;return(e=new Te).writeInt(this.version),e.writeInt(this.revision),e.writeInt(this.checkSumAdjustment),e.writeInt(this.magicNumber),e.writeShort(this.flags),e.writeShort(this.unitsPerEm),e.writeLongLong(this.created),e.writeLongLong(this.modified),e.writeShort(this.xMin),e.writeShort(this.yMin),e.writeShort(this.xMax),e.writeShort(this.yMax),e.writeShort(this.macStyle),e.writeShort(this.lowestRecPPEM),e.writeShort(this.fontDirectionHint),e.writeShort(t),e.writeShort(this.glyphDataFormat),e.data},e}(Re=function(){function t(t){var e;this.file=t,e=this.file.directory.tables[this.tag],this.exists=!!e,e&&(this.offset=e.offset,this.length=e.length,this.parse(this.file.contents))}return t.prototype.parse=function(){},t.prototype.encode=function(){},t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset,this.file.contents.read(this.length)):null},t}()),Ve=function(){function t(t,e){var r,n,i,a,o,s,c,u,l,h,f,d,p,g,m,v,b;switch(this.platformID=t.readUInt16(),this.encodingID=t.readShort(),this.offset=e+t.readInt(),l=t.pos,t.pos=this.offset,this.format=t.readUInt16(),this.length=t.readUInt16(),this.language=t.readUInt16(),this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format,this.codeMap={},this.format){case 0:for(s=0;s<256;++s)this.codeMap[s]=t.readByte();break;case 4:for(f=t.readUInt16(),h=f/2,t.pos+=6,i=function(){var e,r;for(r=[],s=e=0;0<=h?e<h:e>h;s=0<=h?++e:--e)r.push(t.readUInt16());return r}(),t.pos+=2,p=function(){var e,r;for(r=[],s=e=0;0<=h?e<h:e>h;s=0<=h?++e:--e)r.push(t.readUInt16());return r}(),c=function(){var e,r;for(r=[],s=e=0;0<=h?e<h:e>h;s=0<=h?++e:--e)r.push(t.readUInt16());return r}(),u=function(){var e,r;for(r=[],s=e=0;0<=h?e<h:e>h;s=0<=h?++e:--e)r.push(t.readUInt16());return r}(),n=(this.length-t.pos+this.offset)/2,o=function(){var e,r;for(r=[],s=e=0;0<=n?e<n:e>n;s=0<=n?++e:--e)r.push(t.readUInt16());return r}(),s=m=0,b=i.length;m<b;s=++m)for(g=i[s],r=v=d=p[s];d<=g?v<=g:v>=g;r=d<=g?++v:--v)0===u[s]?a=r+c[s]:0!==(a=o[u[s]/2+(r-d)-(h-s)]||0)&&(a+=c[s]),this.codeMap[r]=65535&a}t.pos=l}return t.encode=function(t,e){var r,n,i,a,o,s,c,u,l,h,f,d,p,g,m,v,b,y,w,N,L,A,x,S,_,P,k,F,I,C,j,O,B,M,E,q,D,R,T,U,z,H,W,V,G,Y;switch(F=new Te,a=Object.keys(t).sort((function(t,e){return t-e})),e){case"macroman":for(p=0,g=function(){var t=[];for(d=0;d<256;++d)t.push(0);return t}(),v={0:0},i={},I=0,B=a.length;I<B;I++)null==v[W=t[n=a[I]]]&&(v[W]=++p),i[n]={old:t[n],new:v[t[n]]},g[n]=v[t[n]];return F.writeUInt16(1),F.writeUInt16(0),F.writeUInt32(12),F.writeUInt16(0),F.writeUInt16(262),F.writeUInt16(0),F.write(g),{charMap:i,subtable:F.data,maxGlyphID:p+1};case"unicode":for(P=[],l=[],b=0,v={},r={},m=c=null,C=0,M=a.length;C<M;C++)null==v[w=t[n=a[C]]]&&(v[w]=++b),r[n]={old:w,new:v[w]},o=v[w]-n,null!=m&&o===c||(m&&l.push(m),P.push(n),c=o),m=n;for(m&&l.push(m),l.push(65535),P.push(65535),S=2*(x=P.length),A=2*Math.pow(Math.log(x)/Math.LN2,2),h=Math.log(A/2)/Math.LN2,L=2*x-A,s=[],N=[],f=[],d=j=0,E=P.length;j<E;d=++j){if(_=P[d],u=l[d],65535===_){s.push(0),N.push(0);break}if(_-(k=r[_].new)>=32768)for(s.push(0),N.push(2*(f.length+x-d)),n=O=_;_<=u?O<=u:O>=u;n=_<=u?++O:--O)f.push(r[n].new);else s.push(k-_),N.push(0)}for(F.writeUInt16(3),F.writeUInt16(1),F.writeUInt32(12),F.writeUInt16(4),F.writeUInt16(16+8*x+2*f.length),F.writeUInt16(0),F.writeUInt16(S),F.writeUInt16(A),F.writeUInt16(h),F.writeUInt16(L),z=0,q=l.length;z<q;z++)n=l[z],F.writeUInt16(n);for(F.writeUInt16(0),H=0,D=P.length;H<D;H++)n=P[H],F.writeUInt16(n);for(V=0,R=s.length;V<R;V++)o=s[V],F.writeUInt16(o);for(G=0,T=N.length;G<T;G++)y=N[G],F.writeUInt16(y);for(Y=0,U=f.length;Y<U;Y++)p=f[Y],F.writeUInt16(p);return{charMap:r,subtable:F.data,maxGlyphID:b+1}}},t}(),Ge=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="cmap",e.prototype.parse=function(t){var e,r,n;for(t.pos=this.offset,this.version=t.readUInt16(),n=t.readUInt16(),this.tables=[],this.unicode=null,r=0;0<=n?r<n:r>n;r=0<=n?++r:--r)e=new Ve(t,this.offset),this.tables.push(e),e.isUnicode&&null==this.unicode&&(this.unicode=e);return!0},e.encode=function(t,e){var r,n;return null==e&&(e="macroman"),r=Ve.encode(t,e),(n=new Te).writeUInt16(0),n.writeUInt16(1),r.table=n.data.concat(r.subtable),r},e}(Re),Ye=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="hhea",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.ascender=t.readShort(),this.decender=t.readShort(),this.lineGap=t.readShort(),this.advanceWidthMax=t.readShort(),this.minLeftSideBearing=t.readShort(),this.minRightSideBearing=t.readShort(),this.xMaxExtent=t.readShort(),this.caretSlopeRise=t.readShort(),this.caretSlopeRun=t.readShort(),this.caretOffset=t.readShort(),t.pos+=8,this.metricDataFormat=t.readShort(),this.numberOfMetrics=t.readUInt16()},e}(Re),Je=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="OS/2",e.prototype.parse=function(t){if(t.pos=this.offset,this.version=t.readUInt16(),this.averageCharWidth=t.readShort(),this.weightClass=t.readUInt16(),this.widthClass=t.readUInt16(),this.type=t.readShort(),this.ySubscriptXSize=t.readShort(),this.ySubscriptYSize=t.readShort(),this.ySubscriptXOffset=t.readShort(),this.ySubscriptYOffset=t.readShort(),this.ySuperscriptXSize=t.readShort(),this.ySuperscriptYSize=t.readShort(),this.ySuperscriptXOffset=t.readShort(),this.ySuperscriptYOffset=t.readShort(),this.yStrikeoutSize=t.readShort(),this.yStrikeoutPosition=t.readShort(),this.familyClass=t.readShort(),this.panose=function(){var e,r;for(r=[],e=0;e<10;++e)r.push(t.readByte());return r}(),this.charRange=function(){var e,r;for(r=[],e=0;e<4;++e)r.push(t.readInt());return r}(),this.vendorID=t.readString(4),this.selection=t.readShort(),this.firstCharIndex=t.readShort(),this.lastCharIndex=t.readShort(),this.version>0&&(this.ascent=t.readShort(),this.descent=t.readShort(),this.lineGap=t.readShort(),this.winAscent=t.readShort(),this.winDescent=t.readShort(),this.codePageRange=function(){var e,r;for(r=[],e=0;e<2;e=++e)r.push(t.readInt());return r}(),this.version>1))return this.xHeight=t.readShort(),this.capHeight=t.readShort(),this.defaultChar=t.readShort(),this.breakChar=t.readShort(),this.maxContext=t.readShort()},e}(Re),Xe=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="post",e.prototype.parse=function(t){var e,r,n;switch(t.pos=this.offset,this.format=t.readInt(),this.italicAngle=t.readInt(),this.underlinePosition=t.readShort(),this.underlineThickness=t.readShort(),this.isFixedPitch=t.readInt(),this.minMemType42=t.readInt(),this.maxMemType42=t.readInt(),this.minMemType1=t.readInt(),this.maxMemType1=t.readInt(),this.format){case 65536:break;case 131072:var i;for(r=t.readUInt16(),this.glyphNameIndex=[],i=0;0<=r?i<r:i>r;i=0<=r?++i:--i)this.glyphNameIndex.push(t.readUInt16());for(this.names=[],n=[];t.pos<this.offset+this.length;)e=t.readByte(),n.push(this.names.push(t.readString(e)));return n;case 151552:return r=t.readUInt16(),this.offsets=t.read(r);case 196608:break;case 262144:return this.map=function(){var e,r,n;for(n=[],i=e=0,r=this.file.maxp.numGlyphs;0<=r?e<r:e>r;i=0<=r?++e:--e)n.push(t.readUInt32());return n}.call(this)}},e}(Re),Ke=function(t,e){this.raw=t,this.length=t.length,this.platformID=e.platformID,this.encodingID=e.encodingID,this.languageID=e.languageID},Ze=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="name",e.prototype.parse=function(t){var e,r,n,i,a,o,s,c,u,l,h;for(t.pos=this.offset,t.readShort(),e=t.readShort(),o=t.readShort(),r=[],i=0;0<=e?i<e:i>e;i=0<=e?++i:--i)r.push({platformID:t.readShort(),encodingID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:this.offset+o+t.readShort()});for(s={},i=u=0,l=r.length;u<l;i=++u)n=r[i],t.pos=n.offset,c=t.readString(n.length),a=new Ke(c,n),null==s[h=n.nameID]&&(s[h]=[]),s[n.nameID].push(a);this.strings=s,this.copyright=s[0],this.fontFamily=s[1],this.fontSubfamily=s[2],this.uniqueSubfamily=s[3],this.fontName=s[4],this.version=s[5];try{this.postscriptName=s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g,"")}catch(t){this.postscriptName=s[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g,"")}return this.trademark=s[7],this.manufacturer=s[8],this.designer=s[9],this.description=s[10],this.vendorUrl=s[11],this.designerUrl=s[12],this.license=s[13],this.licenseUrl=s[14],this.preferredFamily=s[15],this.preferredSubfamily=s[17],this.compatibleFull=s[18],this.sampleText=s[19]},e}(Re),$e=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="maxp",e.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.numGlyphs=t.readUInt16(),this.maxPoints=t.readUInt16(),this.maxContours=t.readUInt16(),this.maxCompositePoints=t.readUInt16(),this.maxComponentContours=t.readUInt16(),this.maxZones=t.readUInt16(),this.maxTwilightPoints=t.readUInt16(),this.maxStorage=t.readUInt16(),this.maxFunctionDefs=t.readUInt16(),this.maxInstructionDefs=t.readUInt16(),this.maxStackElements=t.readUInt16(),this.maxSizeOfInstructions=t.readUInt16(),this.maxComponentElements=t.readUInt16(),this.maxComponentDepth=t.readUInt16()},e}(Re),Qe=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="hmtx",e.prototype.parse=function(t){var e,r,n,i,a,o,s;for(t.pos=this.offset,this.metrics=[],e=0,o=this.file.hhea.numberOfMetrics;0<=o?e<o:e>o;e=0<=o?++e:--e)this.metrics.push({advance:t.readUInt16(),lsb:t.readInt16()});for(n=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics,this.leftSideBearings=function(){var r,i;for(i=[],e=r=0;0<=n?r<n:r>n;e=0<=n?++r:--r)i.push(t.readInt16());return i}(),this.widths=function(){var t,e,r,n;for(n=[],t=0,e=(r=this.metrics).length;t<e;t++)i=r[t],n.push(i.advance);return n}.call(this),r=this.widths[this.widths.length-1],s=[],e=a=0;0<=n?a<n:a>n;e=0<=n?++a:--a)s.push(this.widths.push(r));return s},e.prototype.forGlyph=function(t){return t in this.metrics?this.metrics[t]:{advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[t-this.metrics.length]}},e}(Re),tr=[].slice,er=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="glyf",e.prototype.parse=function(){return this.cache={}},e.prototype.glyphFor=function(t){var e,r,n,i,a,o,s,c,u,l;return t in this.cache?this.cache[t]:(i=this.file.loca,e=this.file.contents,r=i.indexOf(t),0===(n=i.lengthOf(t))?this.cache[t]=null:(e.pos=this.offset+r,a=(o=new Te(e.read(n))).readShort(),c=o.readShort(),l=o.readShort(),s=o.readShort(),u=o.readShort(),this.cache[t]=-1===a?new nr(o,c,l,s,u):new rr(o,a,c,l,s,u),this.cache[t]))},e.prototype.encode=function(t,e,r){var n,i,a,o,s;for(a=[],i=[],o=0,s=e.length;o<s;o++)n=t[e[o]],i.push(a.length),n&&(a=a.concat(n.encode(r)));return i.push(a.length),{table:a,offsets:i}},e}(Re),rr=function(){function t(t,e,r,n,i,a){this.raw=t,this.numberOfContours=e,this.xMin=r,this.yMin=n,this.xMax=i,this.yMax=a,this.compound=!1}return t.prototype.encode=function(){return this.raw.data},t}(),nr=function(){function t(t,e,r,n,i){var a,o;for(this.raw=t,this.xMin=e,this.yMin=r,this.xMax=n,this.yMax=i,this.compound=!0,this.glyphIDs=[],this.glyphOffsets=[],a=this.raw;o=a.readShort(),this.glyphOffsets.push(a.pos),this.glyphIDs.push(a.readUInt16()),32&o;)a.pos+=1&o?4:2,128&o?a.pos+=8:64&o?a.pos+=4:8&o&&(a.pos+=2)}return 1,8,32,64,128,t.prototype.encode=function(){var t,e,r;for(e=new Te(tr.call(this.raw.data)),t=0,r=this.glyphIDs.length;t<r;++t)e.pos=this.glyphOffsets[t];return e.data},t}(),ir=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return He(e,t),e.prototype.tag="loca",e.prototype.parse=function(t){var e,r;return t.pos=this.offset,e=this.file.head.indexToLocFormat,this.offsets=0===e?function(){var e,n;for(n=[],r=0,e=this.length;r<e;r+=2)n.push(2*t.readUInt16());return n}.call(this):function(){var e,n;for(n=[],r=0,e=this.length;r<e;r+=4)n.push(t.readUInt32());return n}.call(this)},e.prototype.indexOf=function(t){return this.offsets[t]},e.prototype.lengthOf=function(t){return this.offsets[t+1]-this.offsets[t]},e.prototype.encode=function(t,e){for(var r=new Uint32Array(this.offsets.length),n=0,i=0,a=0;a<r.length;++a)if(r[a]=n,i<e.length&&e[i]==a){++i,r[a]=n;var o=this.offsets[a],s=this.offsets[a+1]-o;s>0&&(n+=s)}for(var c=new Array(4*r.length),u=0;u<r.length;++u)c[4*u+3]=255&r[u],c[4*u+2]=(65280&r[u])>>8,c[4*u+1]=(16711680&r[u])>>16,c[4*u]=(4278190080&r[u])>>24;return c},e}(Re),ar=function(){function t(t){this.font=t,this.subset={},this.unicodes={},this.next=33}return t.prototype.generateCmap=function(){var t,e,r,n,i;for(e in n=this.font.cmap.tables[0].codeMap,t={},i=this.subset)r=i[e],t[e]=n[r];return t},t.prototype.glyphsFor=function(t){var e,r,n,i,a,o,s;for(n={},a=0,o=t.length;a<o;a++)n[i=t[a]]=this.font.glyf.glyphFor(i);for(i in e=[],n)(null!=(r=n[i])?r.compound:void 0)&&e.push.apply(e,r.glyphIDs);if(e.length>0)for(i in s=this.glyphsFor(e))r=s[i],n[i]=r;return n},t.prototype.encode=function(t,e){var r,n,i,a,o,s,c,u,l,h,f,d,p,g,m;for(n in r=Ge.encode(this.generateCmap(),"unicode"),a=this.glyphsFor(t),f={0:0},m=r.charMap)f[(s=m[n]).old]=s.new;for(d in h=r.maxGlyphID,a)d in f||(f[d]=h++);return u=function(t){var e,r;for(e in r={},t)r[t[e]]=e;return r}(f),l=Object.keys(u).sort((function(t,e){return t-e})),p=function(){var t,e,r;for(r=[],t=0,e=l.length;t<e;t++)o=l[t],r.push(u[o]);return r}(),i=this.font.glyf.encode(a,p,f),c=this.font.loca.encode(i.offsets,p),g={cmap:this.font.cmap.raw(),glyf:i.table,loca:c,hmtx:this.font.hmtx.raw(),hhea:this.font.hhea.raw(),maxp:this.font.maxp.raw(),post:this.font.post.raw(),name:this.font.name.raw(),head:this.font.head.encode(e)},this.font.os2.exists&&(g["OS/2"]=this.font.os2.raw()),this.font.directory.encode(g)},t}();M.API.PDFObject=function(){var t;function e(){}return t=function(t,e){return(Array(e+1).join("0")+t).slice(-e)},e.convert=function(r){var n,i,a,o;if(Array.isArray(r))return"["+function(){var t,i,a;for(a=[],t=0,i=r.length;t<i;t++)n=r[t],a.push(e.convert(n));return a}().join(" ")+"]";if("string"==typeof r)return"/"+r;if(null!=r?r.isString:void 0)return"("+r+")";if(r instanceof Date)return"(D:"+t(r.getUTCFullYear(),4)+t(r.getUTCMonth(),2)+t(r.getUTCDate(),2)+t(r.getUTCHours(),2)+t(r.getUTCMinutes(),2)+t(r.getUTCSeconds(),2)+"Z)";if("[object Object]"==={}.toString.call(r)){for(i in a=["<<"],r)o=r[i],a.push("/"+i+" "+e.convert(o));return a.push(">>"),a.join("\n")}return""+r},e}(),t.AcroForm=xt,t.AcroFormAppearance=Lt,t.AcroFormButton=gt,t.AcroFormCheckBox=yt,t.AcroFormChoiceField=ht,t.AcroFormComboBox=dt,t.AcroFormEditBox=pt,t.AcroFormListBox=ft,t.AcroFormPasswordField=Nt,t.AcroFormPushButton=mt,t.AcroFormRadioButton=vt,t.AcroFormTextField=wt,t.GState=C,t.ShadingPattern=O,t.TilingPattern=B,t.default=M,t.jsPDF=M,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=jspdf.umd.min.js.map diff --git a/privacyidea/static/raivo.svg b/privacyidea/static/raivo.svg new file mode 100644 index 0000000000000000000000000000000000000000..910a816b18f5376b33404ce50552fd3790916389 --- /dev/null +++ b/privacyidea/static/raivo.svg @@ -0,0 +1,2942 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with qrencode 4.1.1 (https://fukuchi.org/works/qrencode/index.html) --> + +<svg + width="3.92cm" + height="3.92cm" + viewBox="0 0 37 37" + preserveAspectRatio="none" + version="1.1" + id="svg891" + sodipodi:docname="raivo.svg" + xml:space="preserve" + inkscape:version="1.2.2 (732a01da63, 2022-12-09, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs895" /><sodipodi:namedview + id="namedview893" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="cm" + showgrid="false" + inkscape:zoom="1.9793128" + inkscape:cx="68.205491" + inkscape:cy="93.214171" + inkscape:window-width="2486" + inkscape:window-height="1376" + inkscape:window-x="74" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="svg891" /><g + id="QRcode"><rect + x="0" + y="0" + width="37" + height="37" + fill="#ffffff" + id="rect25" /><g + id="Pattern" + transform="translate(4,4)"><rect + x="0" + y="0" + width="1" + height="1" + fill="#000000" + id="rect27" /><rect + x="1" + y="0" + width="1" + height="1" + fill="#000000" + id="rect29" /><rect + x="2" + y="0" + width="1" + height="1" + fill="#000000" + id="rect31" /><rect + x="3" + y="0" + width="1" + height="1" + fill="#000000" + id="rect33" /><rect + x="4" + y="0" + width="1" + height="1" + fill="#000000" + id="rect35" /><rect + x="5" + y="0" + width="1" + height="1" + fill="#000000" + id="rect37" /><rect + x="6" + y="0" + width="1" + height="1" + fill="#000000" + id="rect39" /><rect + x="10" + y="0" + width="1" + height="1" + fill="#000000" + id="rect41" /><rect + x="12" + y="0" + width="1" + height="1" + fill="#000000" + id="rect43" /><rect + x="13" + y="0" + width="1" + height="1" + fill="#000000" + id="rect45" /><rect + x="16" + y="0" + width="1" + height="1" + fill="#000000" + id="rect47" /><rect + x="17" + y="0" + width="1" + height="1" + fill="#000000" + id="rect49" /><rect + x="18" + y="0" + width="1" + height="1" + fill="#000000" + id="rect51" /><rect + x="19" + y="0" + width="1" + height="1" + fill="#000000" + id="rect53" /><rect + x="22" + y="0" + width="1" + height="1" + fill="#000000" + id="rect55" /><rect + x="23" + y="0" + width="1" + height="1" + fill="#000000" + id="rect57" /><rect + x="24" + y="0" + width="1" + height="1" + fill="#000000" + id="rect59" /><rect + x="25" + y="0" + width="1" + height="1" + fill="#000000" + id="rect61" /><rect + x="26" + y="0" + width="1" + height="1" + fill="#000000" + id="rect63" /><rect + x="27" + y="0" + width="1" + height="1" + fill="#000000" + id="rect65" /><rect + x="28" + y="0" + width="1" + height="1" + fill="#000000" + id="rect67" /><rect + x="0" + y="1" + width="1" + height="1" + fill="#000000" + id="rect69" /><rect + x="6" + y="1" + width="1" + height="1" + fill="#000000" + id="rect71" /><rect + x="8" + y="1" + width="1" + height="1" + fill="#000000" + id="rect73" /><rect + x="10" + y="1" + width="1" + height="1" + fill="#000000" + id="rect75" /><rect + x="13" + y="1" + width="1" + height="1" + fill="#000000" + id="rect77" /><rect + x="14" + y="1" + width="1" + height="1" + fill="#000000" + id="rect79" /><rect + x="15" + y="1" + width="1" + height="1" + fill="#000000" + id="rect81" /><rect + x="16" + y="1" + width="1" + height="1" + fill="#000000" + id="rect83" /><rect + x="17" + y="1" + width="1" + height="1" + fill="#000000" + id="rect85" /><rect + x="20" + y="1" + width="1" + height="1" + fill="#000000" + id="rect87" /><rect + x="22" + y="1" + width="1" + height="1" + fill="#000000" + id="rect89" /><rect + x="28" + y="1" + width="1" + height="1" + fill="#000000" + id="rect91" /><rect + x="0" + y="2" + width="1" + height="1" + fill="#000000" + id="rect93" /><rect + x="2" + y="2" + width="1" + height="1" + fill="#000000" + id="rect95" /><rect + x="3" + y="2" + width="1" + height="1" + fill="#000000" + id="rect97" /><rect + x="4" + y="2" + width="1" + height="1" + fill="#000000" + id="rect99" /><rect + x="6" + y="2" + width="1" + height="1" + fill="#000000" + id="rect101" /><rect + x="12" + y="2" + width="1" + height="1" + fill="#000000" + id="rect103" /><rect + x="14" + y="2" + width="1" + height="1" + fill="#000000" + id="rect105" /><rect + x="15" + y="2" + width="1" + height="1" + fill="#000000" + id="rect107" /><rect + x="16" + y="2" + width="1" + height="1" + fill="#000000" + id="rect109" /><rect + x="20" + y="2" + width="1" + height="1" + fill="#000000" + id="rect111" /><rect + x="22" + y="2" + width="1" + height="1" + fill="#000000" + id="rect113" /><rect + x="24" + y="2" + width="1" + height="1" + fill="#000000" + id="rect115" /><rect + x="25" + y="2" + width="1" + height="1" + fill="#000000" + id="rect117" /><rect + x="26" + y="2" + width="1" + height="1" + fill="#000000" + id="rect119" /><rect + x="28" + y="2" + width="1" + height="1" + fill="#000000" + id="rect121" /><rect + x="0" + y="3" + width="1" + height="1" + fill="#000000" + id="rect123" /><rect + x="2" + y="3" + width="1" + height="1" + fill="#000000" + id="rect125" /><rect + x="3" + y="3" + width="1" + height="1" + fill="#000000" + id="rect127" /><rect + x="4" + y="3" + width="1" + height="1" + fill="#000000" + id="rect129" /><rect + x="6" + y="3" + width="1" + height="1" + fill="#000000" + id="rect131" /><rect + x="8" + y="3" + width="1" + height="1" + fill="#000000" + id="rect133" /><rect + x="9" + y="3" + width="1" + height="1" + fill="#000000" + id="rect135" /><rect + x="10" + y="3" + width="1" + height="1" + fill="#000000" + id="rect137" /><rect + x="12" + y="3" + width="1" + height="1" + fill="#000000" + id="rect139" /><rect + x="13" + y="3" + width="1" + height="1" + fill="#000000" + id="rect141" /><rect + x="14" + y="3" + width="1" + height="1" + fill="#000000" + id="rect143" /><rect + x="17" + y="3" + width="1" + height="1" + fill="#000000" + id="rect145" /><rect + x="19" + y="3" + width="1" + height="1" + fill="#000000" + id="rect147" /><rect + x="22" + y="3" + width="1" + height="1" + fill="#000000" + id="rect149" /><rect + x="24" + y="3" + width="1" + height="1" + fill="#000000" + id="rect151" /><rect + x="25" + y="3" + width="1" + height="1" + fill="#000000" + id="rect153" /><rect + x="26" + y="3" + width="1" + height="1" + fill="#000000" + id="rect155" /><rect + x="28" + y="3" + width="1" + height="1" + fill="#000000" + id="rect157" /><rect + x="0" + y="4" + width="1" + height="1" + fill="#000000" + id="rect159" /><rect + x="2" + y="4" + width="1" + height="1" + fill="#000000" + id="rect161" /><rect + x="3" + y="4" + width="1" + height="1" + fill="#000000" + id="rect163" /><rect + x="4" + y="4" + width="1" + height="1" + fill="#000000" + id="rect165" /><rect + x="6" + y="4" + width="1" + height="1" + fill="#000000" + id="rect167" /><rect + x="9" + y="4" + width="1" + height="1" + fill="#000000" + id="rect169" /><rect + x="14" + y="4" + width="1" + height="1" + fill="#000000" + id="rect171" /><rect + x="19" + y="4" + width="1" + height="1" + fill="#000000" + id="rect173" /><rect + x="20" + y="4" + width="1" + height="1" + fill="#000000" + id="rect175" /><rect + x="22" + y="4" + width="1" + height="1" + fill="#000000" + id="rect177" /><rect + x="24" + y="4" + width="1" + height="1" + fill="#000000" + id="rect179" /><rect + x="25" + y="4" + width="1" + height="1" + fill="#000000" + id="rect181" /><rect + x="26" + y="4" + width="1" + height="1" + fill="#000000" + id="rect183" /><rect + x="28" + y="4" + width="1" + height="1" + fill="#000000" + id="rect185" /><rect + x="0" + y="5" + width="1" + height="1" + fill="#000000" + id="rect187" /><rect + x="6" + y="5" + width="1" + height="1" + fill="#000000" + id="rect189" /><rect + x="8" + y="5" + width="1" + height="1" + fill="#000000" + id="rect191" /><rect + x="9" + y="5" + width="1" + height="1" + fill="#000000" + id="rect193" /><rect + x="11" + y="5" + width="1" + height="1" + fill="#000000" + id="rect195" /><rect + x="12" + y="5" + width="1" + height="1" + fill="#000000" + id="rect197" /><rect + x="14" + y="5" + width="1" + height="1" + fill="#000000" + id="rect199" /><rect + x="15" + y="5" + width="1" + height="1" + fill="#000000" + id="rect201" /><rect + x="16" + y="5" + width="1" + height="1" + fill="#000000" + id="rect203" /><rect + x="20" + y="5" + width="1" + height="1" + fill="#000000" + id="rect205" /><rect + x="22" + y="5" + width="1" + height="1" + fill="#000000" + id="rect207" /><rect + x="28" + y="5" + width="1" + height="1" + fill="#000000" + id="rect209" /><rect + x="0" + y="6" + width="1" + height="1" + fill="#000000" + id="rect211" /><rect + x="1" + y="6" + width="1" + height="1" + fill="#000000" + id="rect213" /><rect + x="2" + y="6" + width="1" + height="1" + fill="#000000" + id="rect215" /><rect + x="3" + y="6" + width="1" + height="1" + fill="#000000" + id="rect217" /><rect + x="4" + y="6" + width="1" + height="1" + fill="#000000" + id="rect219" /><rect + x="5" + y="6" + width="1" + height="1" + fill="#000000" + id="rect221" /><rect + x="6" + y="6" + width="1" + height="1" + fill="#000000" + id="rect223" /><rect + x="8" + y="6" + width="1" + height="1" + fill="#000000" + id="rect225" /><rect + x="10" + y="6" + width="1" + height="1" + fill="#000000" + id="rect227" /><rect + x="12" + y="6" + width="1" + height="1" + fill="#000000" + id="rect229" /><rect + x="14" + y="6" + width="1" + height="1" + fill="#000000" + id="rect231" /><rect + x="16" + y="6" + width="1" + height="1" + fill="#000000" + id="rect233" /><rect + x="18" + y="6" + width="1" + height="1" + fill="#000000" + id="rect235" /><rect + x="20" + y="6" + width="1" + height="1" + fill="#000000" + id="rect237" /><rect + x="22" + y="6" + width="1" + height="1" + fill="#000000" + id="rect239" /><rect + x="23" + y="6" + width="1" + height="1" + fill="#000000" + id="rect241" /><rect + x="24" + y="6" + width="1" + height="1" + fill="#000000" + id="rect243" /><rect + x="25" + y="6" + width="1" + height="1" + fill="#000000" + id="rect245" /><rect + x="26" + y="6" + width="1" + height="1" + fill="#000000" + id="rect247" /><rect + x="27" + y="6" + width="1" + height="1" + fill="#000000" + id="rect249" /><rect + x="28" + y="6" + width="1" + height="1" + fill="#000000" + id="rect251" /><rect + x="9" + y="7" + width="1" + height="1" + fill="#000000" + id="rect253" /><rect + x="10" + y="7" + width="1" + height="1" + fill="#000000" + id="rect255" /><rect + x="11" + y="7" + width="1" + height="1" + fill="#000000" + id="rect257" /><rect + x="16" + y="7" + width="1" + height="1" + fill="#000000" + id="rect259" /><rect + x="19" + y="7" + width="1" + height="1" + fill="#000000" + id="rect261" /><rect + x="20" + y="7" + width="1" + height="1" + fill="#000000" + id="rect263" /><rect + x="0" + y="8" + width="1" + height="1" + fill="#000000" + id="rect265" /><rect + x="1" + y="8" + width="1" + height="1" + fill="#000000" + id="rect267" /><rect + x="2" + y="8" + width="1" + height="1" + fill="#000000" + id="rect269" /><rect + x="3" + y="8" + width="1" + height="1" + fill="#000000" + id="rect271" /><rect + x="4" + y="8" + width="1" + height="1" + fill="#000000" + id="rect273" /><rect + x="6" + y="8" + width="1" + height="1" + fill="#000000" + id="rect275" /><rect + x="7" + y="8" + width="1" + height="1" + fill="#000000" + id="rect277" /><rect + x="8" + y="8" + width="1" + height="1" + fill="#000000" + id="rect279" /><rect + x="9" + y="8" + width="1" + height="1" + fill="#000000" + id="rect281" /><rect + x="11" + y="8" + width="1" + height="1" + fill="#000000" + id="rect283" /><rect + x="12" + y="8" + width="1" + height="1" + fill="#000000" + id="rect285" /><rect + x="13" + y="8" + width="1" + height="1" + fill="#000000" + id="rect287" /><rect + x="14" + y="8" + width="1" + height="1" + fill="#000000" + id="rect289" /><rect + x="17" + y="8" + width="1" + height="1" + fill="#000000" + id="rect291" /><rect + x="19" + y="8" + width="1" + height="1" + fill="#000000" + id="rect293" /><rect + x="21" + y="8" + width="1" + height="1" + fill="#000000" + id="rect295" /><rect + x="23" + y="8" + width="1" + height="1" + fill="#000000" + id="rect297" /><rect + x="25" + y="8" + width="1" + height="1" + fill="#000000" + id="rect299" /><rect + x="27" + y="8" + width="1" + height="1" + fill="#000000" + id="rect301" /><rect + x="0" + y="9" + width="1" + height="1" + fill="#000000" + id="rect303" /><rect + x="1" + y="9" + width="1" + height="1" + fill="#000000" + id="rect305" /><rect + x="5" + y="9" + width="1" + height="1" + fill="#000000" + id="rect307" /><rect + x="7" + y="9" + width="1" + height="1" + fill="#000000" + id="rect309" /><rect + x="8" + y="9" + width="1" + height="1" + fill="#000000" + id="rect311" /><rect + x="10" + y="9" + width="1" + height="1" + fill="#000000" + id="rect313" /><rect + x="12" + y="9" + width="1" + height="1" + fill="#000000" + id="rect315" /><rect + x="14" + y="9" + width="1" + height="1" + fill="#000000" + id="rect317" /><rect + x="16" + y="9" + width="1" + height="1" + fill="#000000" + id="rect319" /><rect + x="19" + y="9" + width="1" + height="1" + fill="#000000" + id="rect321" /><rect + x="20" + y="9" + width="1" + height="1" + fill="#000000" + id="rect323" /><rect + x="21" + y="9" + width="1" + height="1" + fill="#000000" + id="rect325" /><rect + x="22" + y="9" + width="1" + height="1" + fill="#000000" + id="rect327" /><rect + x="24" + y="9" + width="1" + height="1" + fill="#000000" + id="rect329" /><rect + x="28" + y="9" + width="1" + height="1" + fill="#000000" + id="rect331" /><rect + x="1" + y="10" + width="1" + height="1" + fill="#000000" + id="rect333" /><rect + x="3" + y="10" + width="1" + height="1" + fill="#000000" + id="rect335" /><rect + x="5" + y="10" + width="1" + height="1" + fill="#000000" + id="rect337" /><rect + x="6" + y="10" + width="1" + height="1" + fill="#000000" + id="rect339" /><rect + x="7" + y="10" + width="1" + height="1" + fill="#000000" + id="rect341" /><rect + x="8" + y="10" + width="1" + height="1" + fill="#000000" + id="rect343" /><rect + x="10" + y="10" + width="1" + height="1" + fill="#000000" + id="rect345" /><rect + x="15" + y="10" + width="1" + height="1" + fill="#000000" + id="rect347" /><rect + x="17" + y="10" + width="1" + height="1" + fill="#000000" + id="rect349" /><rect + x="18" + y="10" + width="1" + height="1" + fill="#000000" + id="rect351" /><rect + x="20" + y="10" + width="1" + height="1" + fill="#000000" + id="rect353" /><rect + x="22" + y="10" + width="1" + height="1" + fill="#000000" + id="rect355" /><rect + x="23" + y="10" + width="1" + height="1" + fill="#000000" + id="rect357" /><rect + x="2" + y="11" + width="1" + height="1" + fill="#000000" + id="rect359" /><rect + x="3" + y="11" + width="1" + height="1" + fill="#000000" + id="rect361" /><rect + x="4" + y="11" + width="1" + height="1" + fill="#000000" + id="rect363" /><rect + x="5" + y="11" + width="1" + height="1" + fill="#000000" + id="rect365" /><rect + x="7" + y="11" + width="1" + height="1" + fill="#000000" + id="rect367" /><rect + x="8" + y="11" + width="1" + height="1" + fill="#000000" + id="rect369" /><rect + x="11" + y="11" + width="1" + height="1" + fill="#000000" + id="rect371" /><rect + x="16" + y="11" + width="1" + height="1" + fill="#000000" + id="rect373" /><rect + x="19" + y="11" + width="1" + height="1" + fill="#000000" + id="rect375" /><rect + x="21" + y="11" + width="1" + height="1" + fill="#000000" + id="rect377" /><rect + x="22" + y="11" + width="1" + height="1" + fill="#000000" + id="rect379" /><rect + x="24" + y="11" + width="1" + height="1" + fill="#000000" + id="rect381" /><rect + x="25" + y="11" + width="1" + height="1" + fill="#000000" + id="rect383" /><rect + x="27" + y="11" + width="1" + height="1" + fill="#000000" + id="rect385" /><rect + x="2" + y="12" + width="1" + height="1" + fill="#000000" + id="rect387" /><rect + x="3" + y="12" + width="1" + height="1" + fill="#000000" + id="rect389" /><rect + x="5" + y="12" + width="1" + height="1" + fill="#000000" + id="rect391" /><rect + x="6" + y="12" + width="1" + height="1" + fill="#000000" + id="rect393" /><rect + x="7" + y="12" + width="1" + height="1" + fill="#000000" + id="rect395" /><rect + x="8" + y="12" + width="1" + height="1" + fill="#000000" + id="rect397" /><rect + x="9" + y="12" + width="1" + height="1" + fill="#000000" + id="rect399" /><rect + x="10" + y="12" + width="1" + height="1" + fill="#000000" + id="rect401" /><rect + x="13" + y="12" + width="1" + height="1" + fill="#000000" + id="rect403" /><rect + x="15" + y="12" + width="1" + height="1" + fill="#000000" + id="rect405" /><rect + x="16" + y="12" + width="1" + height="1" + fill="#000000" + id="rect407" /><rect + x="17" + y="12" + width="1" + height="1" + fill="#000000" + id="rect409" /><rect + x="18" + y="12" + width="1" + height="1" + fill="#000000" + id="rect411" /><rect + x="23" + y="12" + width="1" + height="1" + fill="#000000" + id="rect413" /><rect + x="25" + y="12" + width="1" + height="1" + fill="#000000" + id="rect415" /><rect + x="26" + y="12" + width="1" + height="1" + fill="#000000" + id="rect417" /><rect + x="0" + y="13" + width="1" + height="1" + fill="#000000" + id="rect419" /><rect + x="4" + y="13" + width="1" + height="1" + fill="#000000" + id="rect421" /><rect + x="7" + y="13" + width="1" + height="1" + fill="#000000" + id="rect423" /><rect + x="8" + y="13" + width="1" + height="1" + fill="#000000" + id="rect425" /><rect + x="9" + y="13" + width="1" + height="1" + fill="#000000" + id="rect427" /><rect + x="13" + y="13" + width="1" + height="1" + fill="#000000" + id="rect429" /><rect + x="16" + y="13" + width="1" + height="1" + fill="#000000" + id="rect431" /><rect + x="17" + y="13" + width="1" + height="1" + fill="#000000" + id="rect433" /><rect + x="18" + y="13" + width="1" + height="1" + fill="#000000" + id="rect435" /><rect + x="19" + y="13" + width="1" + height="1" + fill="#000000" + id="rect437" /><rect + x="20" + y="13" + width="1" + height="1" + fill="#000000" + id="rect439" /><rect + x="21" + y="13" + width="1" + height="1" + fill="#000000" + id="rect441" /><rect + x="22" + y="13" + width="1" + height="1" + fill="#000000" + id="rect443" /><rect + x="23" + y="13" + width="1" + height="1" + fill="#000000" + id="rect445" /><rect + x="24" + y="13" + width="1" + height="1" + fill="#000000" + id="rect447" /><rect + x="28" + y="13" + width="1" + height="1" + fill="#000000" + id="rect449" /><rect + x="0" + y="14" + width="1" + height="1" + fill="#000000" + id="rect451" /><rect + x="1" + y="14" + width="1" + height="1" + fill="#000000" + id="rect453" /><rect + x="6" + y="14" + width="1" + height="1" + fill="#000000" + id="rect455" /><rect + x="8" + y="14" + width="1" + height="1" + fill="#000000" + id="rect457" /><rect + x="9" + y="14" + width="1" + height="1" + fill="#000000" + id="rect459" /><rect + x="10" + y="14" + width="1" + height="1" + fill="#000000" + id="rect461" /><rect + x="13" + y="14" + width="1" + height="1" + fill="#000000" + id="rect463" /><rect + x="14" + y="14" + width="1" + height="1" + fill="#000000" + id="rect465" /><rect + x="15" + y="14" + width="1" + height="1" + fill="#000000" + id="rect467" /><rect + x="16" + y="14" + width="1" + height="1" + fill="#000000" + id="rect469" /><rect + x="17" + y="14" + width="1" + height="1" + fill="#000000" + id="rect471" /><rect + x="21" + y="14" + width="1" + height="1" + fill="#000000" + id="rect473" /><rect + x="24" + y="14" + width="1" + height="1" + fill="#000000" + id="rect475" /><rect + x="25" + y="14" + width="1" + height="1" + fill="#000000" + id="rect477" /><rect + x="26" + y="14" + width="1" + height="1" + fill="#000000" + id="rect479" /><rect + x="0" + y="15" + width="1" + height="1" + fill="#000000" + id="rect481" /><rect + x="2" + y="15" + width="1" + height="1" + fill="#000000" + id="rect483" /><rect + x="7" + y="15" + width="1" + height="1" + fill="#000000" + id="rect485" /><rect + x="14" + y="15" + width="1" + height="1" + fill="#000000" + id="rect487" /><rect + x="15" + y="15" + width="1" + height="1" + fill="#000000" + id="rect489" /><rect + x="19" + y="15" + width="1" + height="1" + fill="#000000" + id="rect491" /><rect + x="20" + y="15" + width="1" + height="1" + fill="#000000" + id="rect493" /><rect + x="24" + y="15" + width="1" + height="1" + fill="#000000" + id="rect495" /><rect + x="27" + y="15" + width="1" + height="1" + fill="#000000" + id="rect497" /><rect + x="0" + y="16" + width="1" + height="1" + fill="#000000" + id="rect499" /><rect + x="1" + y="16" + width="1" + height="1" + fill="#000000" + id="rect501" /><rect + x="3" + y="16" + width="1" + height="1" + fill="#000000" + id="rect503" /><rect + x="5" + y="16" + width="1" + height="1" + fill="#000000" + id="rect505" /><rect + x="6" + y="16" + width="1" + height="1" + fill="#000000" + id="rect507" /><rect + x="10" + y="16" + width="1" + height="1" + fill="#000000" + id="rect509" /><rect + x="11" + y="16" + width="1" + height="1" + fill="#000000" + id="rect511" /><rect + x="12" + y="16" + width="1" + height="1" + fill="#000000" + id="rect513" /><rect + x="13" + y="16" + width="1" + height="1" + fill="#000000" + id="rect515" /><rect + x="14" + y="16" + width="1" + height="1" + fill="#000000" + id="rect517" /><rect + x="17" + y="16" + width="1" + height="1" + fill="#000000" + id="rect519" /><rect + x="19" + y="16" + width="1" + height="1" + fill="#000000" + id="rect521" /><rect + x="23" + y="16" + width="1" + height="1" + fill="#000000" + id="rect523" /><rect + x="25" + y="16" + width="1" + height="1" + fill="#000000" + id="rect525" /><rect + x="26" + y="16" + width="1" + height="1" + fill="#000000" + id="rect527" /><rect + x="0" + y="17" + width="1" + height="1" + fill="#000000" + id="rect529" /><rect + x="1" + y="17" + width="1" + height="1" + fill="#000000" + id="rect531" /><rect + x="2" + y="17" + width="1" + height="1" + fill="#000000" + id="rect533" /><rect + x="3" + y="17" + width="1" + height="1" + fill="#000000" + id="rect535" /><rect + x="4" + y="17" + width="1" + height="1" + fill="#000000" + id="rect537" /><rect + x="8" + y="17" + width="1" + height="1" + fill="#000000" + id="rect539" /><rect + x="12" + y="17" + width="1" + height="1" + fill="#000000" + id="rect541" /><rect + x="13" + y="17" + width="1" + height="1" + fill="#000000" + id="rect543" /><rect + x="16" + y="17" + width="1" + height="1" + fill="#000000" + id="rect545" /><rect + x="18" + y="17" + width="1" + height="1" + fill="#000000" + id="rect547" /><rect + x="19" + y="17" + width="1" + height="1" + fill="#000000" + id="rect549" /><rect + x="22" + y="17" + width="1" + height="1" + fill="#000000" + id="rect551" /><rect + x="23" + y="17" + width="1" + height="1" + fill="#000000" + id="rect553" /><rect + x="24" + y="17" + width="1" + height="1" + fill="#000000" + id="rect555" /><rect + x="26" + y="17" + width="1" + height="1" + fill="#000000" + id="rect557" /><rect + x="28" + y="17" + width="1" + height="1" + fill="#000000" + id="rect559" /><rect + x="0" + y="18" + width="1" + height="1" + fill="#000000" + id="rect561" /><rect + x="2" + y="18" + width="1" + height="1" + fill="#000000" + id="rect563" /><rect + x="3" + y="18" + width="1" + height="1" + fill="#000000" + id="rect565" /><rect + x="4" + y="18" + width="1" + height="1" + fill="#000000" + id="rect567" /><rect + x="5" + y="18" + width="1" + height="1" + fill="#000000" + id="rect569" /><rect + x="6" + y="18" + width="1" + height="1" + fill="#000000" + id="rect571" /><rect + x="8" + y="18" + width="1" + height="1" + fill="#000000" + id="rect573" /><rect + x="10" + y="18" + width="1" + height="1" + fill="#000000" + id="rect575" /><rect + x="12" + y="18" + width="1" + height="1" + fill="#000000" + id="rect577" /><rect + x="15" + y="18" + width="1" + height="1" + fill="#000000" + id="rect579" /><rect + x="16" + y="18" + width="1" + height="1" + fill="#000000" + id="rect581" /><rect + x="18" + y="18" + width="1" + height="1" + fill="#000000" + id="rect583" /><rect + x="20" + y="18" + width="1" + height="1" + fill="#000000" + id="rect585" /><rect + x="21" + y="18" + width="1" + height="1" + fill="#000000" + id="rect587" /><rect + x="24" + y="18" + width="1" + height="1" + fill="#000000" + id="rect589" /><rect + x="26" + y="18" + width="1" + height="1" + fill="#000000" + id="rect591" /><rect + x="0" + y="19" + width="1" + height="1" + fill="#000000" + id="rect593" /><rect + x="3" + y="19" + width="1" + height="1" + fill="#000000" + id="rect595" /><rect + x="9" + y="19" + width="1" + height="1" + fill="#000000" + id="rect597" /><rect + x="11" + y="19" + width="1" + height="1" + fill="#000000" + id="rect599" /><rect + x="12" + y="19" + width="1" + height="1" + fill="#000000" + id="rect601" /><rect + x="14" + y="19" + width="1" + height="1" + fill="#000000" + id="rect603" /><rect + x="15" + y="19" + width="1" + height="1" + fill="#000000" + id="rect605" /><rect + x="20" + y="19" + width="1" + height="1" + fill="#000000" + id="rect607" /><rect + x="21" + y="19" + width="1" + height="1" + fill="#000000" + id="rect609" /><rect + x="24" + y="19" + width="1" + height="1" + fill="#000000" + id="rect611" /><rect + x="27" + y="19" + width="1" + height="1" + fill="#000000" + id="rect613" /><rect + x="0" + y="20" + width="1" + height="1" + fill="#000000" + id="rect615" /><rect + x="5" + y="20" + width="1" + height="1" + fill="#000000" + id="rect617" /><rect + x="6" + y="20" + width="1" + height="1" + fill="#000000" + id="rect619" /><rect + x="10" + y="20" + width="1" + height="1" + fill="#000000" + id="rect621" /><rect + x="12" + y="20" + width="1" + height="1" + fill="#000000" + id="rect623" /><rect + x="13" + y="20" + width="1" + height="1" + fill="#000000" + id="rect625" /><rect + x="14" + y="20" + width="1" + height="1" + fill="#000000" + id="rect627" /><rect + x="15" + y="20" + width="1" + height="1" + fill="#000000" + id="rect629" /><rect + x="17" + y="20" + width="1" + height="1" + fill="#000000" + id="rect631" /><rect + x="20" + y="20" + width="1" + height="1" + fill="#000000" + id="rect633" /><rect + x="21" + y="20" + width="1" + height="1" + fill="#000000" + id="rect635" /><rect + x="22" + y="20" + width="1" + height="1" + fill="#000000" + id="rect637" /><rect + x="23" + y="20" + width="1" + height="1" + fill="#000000" + id="rect639" /><rect + x="24" + y="20" + width="1" + height="1" + fill="#000000" + id="rect641" /><rect + x="26" + y="20" + width="1" + height="1" + fill="#000000" + id="rect643" /><rect + x="27" + y="20" + width="1" + height="1" + fill="#000000" + id="rect645" /><rect + x="28" + y="20" + width="1" + height="1" + fill="#000000" + id="rect647" /><rect + x="8" + y="21" + width="1" + height="1" + fill="#000000" + id="rect649" /><rect + x="9" + y="21" + width="1" + height="1" + fill="#000000" + id="rect651" /><rect + x="11" + y="21" + width="1" + height="1" + fill="#000000" + id="rect653" /><rect + x="16" + y="21" + width="1" + height="1" + fill="#000000" + id="rect655" /><rect + x="20" + y="21" + width="1" + height="1" + fill="#000000" + id="rect657" /><rect + x="24" + y="21" + width="1" + height="1" + fill="#000000" + id="rect659" /><rect + x="25" + y="21" + width="1" + height="1" + fill="#000000" + id="rect661" /><rect + x="26" + y="21" + width="1" + height="1" + fill="#000000" + id="rect663" /><rect + x="27" + y="21" + width="1" + height="1" + fill="#000000" + id="rect665" /><rect + x="28" + y="21" + width="1" + height="1" + fill="#000000" + id="rect667" /><rect + x="0" + y="22" + width="1" + height="1" + fill="#000000" + id="rect669" /><rect + x="1" + y="22" + width="1" + height="1" + fill="#000000" + id="rect671" /><rect + x="2" + y="22" + width="1" + height="1" + fill="#000000" + id="rect673" /><rect + x="3" + y="22" + width="1" + height="1" + fill="#000000" + id="rect675" /><rect + x="4" + y="22" + width="1" + height="1" + fill="#000000" + id="rect677" /><rect + x="5" + y="22" + width="1" + height="1" + fill="#000000" + id="rect679" /><rect + x="6" + y="22" + width="1" + height="1" + fill="#000000" + id="rect681" /><rect + x="8" + y="22" + width="1" + height="1" + fill="#000000" + id="rect683" /><rect + x="10" + y="22" + width="1" + height="1" + fill="#000000" + id="rect685" /><rect + x="11" + y="22" + width="1" + height="1" + fill="#000000" + id="rect687" /><rect + x="14" + y="22" + width="1" + height="1" + fill="#000000" + id="rect689" /><rect + x="15" + y="22" + width="1" + height="1" + fill="#000000" + id="rect691" /><rect + x="18" + y="22" + width="1" + height="1" + fill="#000000" + id="rect693" /><rect + x="19" + y="22" + width="1" + height="1" + fill="#000000" + id="rect695" /><rect + x="20" + y="22" + width="1" + height="1" + fill="#000000" + id="rect697" /><rect + x="22" + y="22" + width="1" + height="1" + fill="#000000" + id="rect699" /><rect + x="24" + y="22" + width="1" + height="1" + fill="#000000" + id="rect701" /><rect + x="25" + y="22" + width="1" + height="1" + fill="#000000" + id="rect703" /><rect + x="26" + y="22" + width="1" + height="1" + fill="#000000" + id="rect705" /><rect + x="0" + y="23" + width="1" + height="1" + fill="#000000" + id="rect707" /><rect + x="6" + y="23" + width="1" + height="1" + fill="#000000" + id="rect709" /><rect + x="10" + y="23" + width="1" + height="1" + fill="#000000" + id="rect711" /><rect + x="12" + y="23" + width="1" + height="1" + fill="#000000" + id="rect713" /><rect + x="18" + y="23" + width="1" + height="1" + fill="#000000" + id="rect715" /><rect + x="19" + y="23" + width="1" + height="1" + fill="#000000" + id="rect717" /><rect + x="20" + y="23" + width="1" + height="1" + fill="#000000" + id="rect719" /><rect + x="24" + y="23" + width="1" + height="1" + fill="#000000" + id="rect721" /><rect + x="27" + y="23" + width="1" + height="1" + fill="#000000" + id="rect723" /><rect + x="28" + y="23" + width="1" + height="1" + fill="#000000" + id="rect725" /><rect + x="0" + y="24" + width="1" + height="1" + fill="#000000" + id="rect727" /><rect + x="2" + y="24" + width="1" + height="1" + fill="#000000" + id="rect729" /><rect + x="3" + y="24" + width="1" + height="1" + fill="#000000" + id="rect731" /><rect + x="4" + y="24" + width="1" + height="1" + fill="#000000" + id="rect733" /><rect + x="6" + y="24" + width="1" + height="1" + fill="#000000" + id="rect735" /><rect + x="8" + y="24" + width="1" + height="1" + fill="#000000" + id="rect737" /><rect + x="15" + y="24" + width="1" + height="1" + fill="#000000" + id="rect739" /><rect + x="16" + y="24" + width="1" + height="1" + fill="#000000" + id="rect741" /><rect + x="17" + y="24" + width="1" + height="1" + fill="#000000" + id="rect743" /><rect + x="20" + y="24" + width="1" + height="1" + fill="#000000" + id="rect745" /><rect + x="21" + y="24" + width="1" + height="1" + fill="#000000" + id="rect747" /><rect + x="22" + y="24" + width="1" + height="1" + fill="#000000" + id="rect749" /><rect + x="23" + y="24" + width="1" + height="1" + fill="#000000" + id="rect751" /><rect + x="24" + y="24" + width="1" + height="1" + fill="#000000" + id="rect753" /><rect + x="26" + y="24" + width="1" + height="1" + fill="#000000" + id="rect755" /><rect + x="27" + y="24" + width="1" + height="1" + fill="#000000" + id="rect757" /><rect + x="28" + y="24" + width="1" + height="1" + fill="#000000" + id="rect759" /><rect + x="0" + y="25" + width="1" + height="1" + fill="#000000" + id="rect761" /><rect + x="2" + y="25" + width="1" + height="1" + fill="#000000" + id="rect763" /><rect + x="3" + y="25" + width="1" + height="1" + fill="#000000" + id="rect765" /><rect + x="4" + y="25" + width="1" + height="1" + fill="#000000" + id="rect767" /><rect + x="6" + y="25" + width="1" + height="1" + fill="#000000" + id="rect769" /><rect + x="8" + y="25" + width="1" + height="1" + fill="#000000" + id="rect771" /><rect + x="12" + y="25" + width="1" + height="1" + fill="#000000" + id="rect773" /><rect + x="14" + y="25" + width="1" + height="1" + fill="#000000" + id="rect775" /><rect + x="16" + y="25" + width="1" + height="1" + fill="#000000" + id="rect777" /><rect + x="23" + y="25" + width="1" + height="1" + fill="#000000" + id="rect779" /><rect + x="25" + y="25" + width="1" + height="1" + fill="#000000" + id="rect781" /><rect + x="26" + y="25" + width="1" + height="1" + fill="#000000" + id="rect783" /><rect + x="27" + y="25" + width="1" + height="1" + fill="#000000" + id="rect785" /><rect + x="28" + y="25" + width="1" + height="1" + fill="#000000" + id="rect787" /><rect + x="0" + y="26" + width="1" + height="1" + fill="#000000" + id="rect789" /><rect + x="2" + y="26" + width="1" + height="1" + fill="#000000" + id="rect791" /><rect + x="3" + y="26" + width="1" + height="1" + fill="#000000" + id="rect793" /><rect + x="4" + y="26" + width="1" + height="1" + fill="#000000" + id="rect795" /><rect + x="6" + y="26" + width="1" + height="1" + fill="#000000" + id="rect797" /><rect + x="8" + y="26" + width="1" + height="1" + fill="#000000" + id="rect799" /><rect + x="9" + y="26" + width="1" + height="1" + fill="#000000" + id="rect801" /><rect + x="11" + y="26" + width="1" + height="1" + fill="#000000" + id="rect803" /><rect + x="12" + y="26" + width="1" + height="1" + fill="#000000" + id="rect805" /><rect + x="15" + y="26" + width="1" + height="1" + fill="#000000" + id="rect807" /><rect + x="16" + y="26" + width="1" + height="1" + fill="#000000" + id="rect809" /><rect + x="18" + y="26" + width="1" + height="1" + fill="#000000" + id="rect811" /><rect + x="19" + y="26" + width="1" + height="1" + fill="#000000" + id="rect813" /><rect + x="20" + y="26" + width="1" + height="1" + fill="#000000" + id="rect815" /><rect + x="22" + y="26" + width="1" + height="1" + fill="#000000" + id="rect817" /><rect + x="23" + y="26" + width="1" + height="1" + fill="#000000" + id="rect819" /><rect + x="24" + y="26" + width="1" + height="1" + fill="#000000" + id="rect821" /><rect + x="25" + y="26" + width="1" + height="1" + fill="#000000" + id="rect823" /><rect + x="26" + y="26" + width="1" + height="1" + fill="#000000" + id="rect825" /><rect + x="27" + y="26" + width="1" + height="1" + fill="#000000" + id="rect827" /><rect + x="0" + y="27" + width="1" + height="1" + fill="#000000" + id="rect829" /><rect + x="6" + y="27" + width="1" + height="1" + fill="#000000" + id="rect831" /><rect + x="8" + y="27" + width="1" + height="1" + fill="#000000" + id="rect833" /><rect + x="12" + y="27" + width="1" + height="1" + fill="#000000" + id="rect835" /><rect + x="16" + y="27" + width="1" + height="1" + fill="#000000" + id="rect837" /><rect + x="18" + y="27" + width="1" + height="1" + fill="#000000" + id="rect839" /><rect + x="20" + y="27" + width="1" + height="1" + fill="#000000" + id="rect841" /><rect + x="21" + y="27" + width="1" + height="1" + fill="#000000" + id="rect843" /><rect + x="23" + y="27" + width="1" + height="1" + fill="#000000" + id="rect845" /><rect + x="24" + y="27" + width="1" + height="1" + fill="#000000" + id="rect847" /><rect + x="25" + y="27" + width="1" + height="1" + fill="#000000" + id="rect849" /><rect + x="27" + y="27" + width="1" + height="1" + fill="#000000" + id="rect851" /><rect + x="0" + y="28" + width="1" + height="1" + fill="#000000" + id="rect853" /><rect + x="1" + y="28" + width="1" + height="1" + fill="#000000" + id="rect855" /><rect + x="2" + y="28" + width="1" + height="1" + fill="#000000" + id="rect857" /><rect + x="3" + y="28" + width="1" + height="1" + fill="#000000" + id="rect859" /><rect + x="4" + y="28" + width="1" + height="1" + fill="#000000" + id="rect861" /><rect + x="5" + y="28" + width="1" + height="1" + fill="#000000" + id="rect863" /><rect + x="6" + y="28" + width="1" + height="1" + fill="#000000" + id="rect865" /><rect + x="8" + y="28" + width="1" + height="1" + fill="#000000" + id="rect867" /><rect + x="9" + y="28" + width="1" + height="1" + fill="#000000" + id="rect869" /><rect + x="11" + y="28" + width="1" + height="1" + fill="#000000" + id="rect871" /><rect + x="12" + y="28" + width="1" + height="1" + fill="#000000" + id="rect873" /><rect + x="13" + y="28" + width="1" + height="1" + fill="#000000" + id="rect875" /><rect + x="17" + y="28" + width="1" + height="1" + fill="#000000" + id="rect877" /><rect + x="18" + y="28" + width="1" + height="1" + fill="#000000" + id="rect879" /><rect + x="19" + y="28" + width="1" + height="1" + fill="#000000" + id="rect881" /><rect + x="21" + y="28" + width="1" + height="1" + fill="#000000" + id="rect883" /><rect + x="24" + y="28" + width="1" + height="1" + fill="#000000" + id="rect885" /><rect + x="26" + y="28" + width="1" + height="1" + fill="#000000" + id="rect887" /></g></g><image + width="5.604825" + height="5.2599125" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +OEQrTZQXAAAAAElFTkSuQmCC +" + id="image1009" + x="15.697587" + y="15.870044" /></svg> diff --git a/privacyidea/static/templates/footer.html b/privacyidea/static/templates/footer.html index ca297f87641a946c7141fe84e0d96fd4044e0997..878d6d21195f0a6e9d513397713bb7b8fd28ebce 100644 --- a/privacyidea/static/templates/footer.html +++ b/privacyidea/static/templates/footer.html @@ -16,6 +16,9 @@ <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.no.token.html" | versioned }}'"> </ng-include> +<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.mfa.activated.html" | versioned }}'"> +</ng-include> + <!--load all javascripts after the HTML part--> <script src="{{ instance }}/{{ "static/contrib/js/angular.js" | versioned }}"></script> <script src="{{ instance }}/{{ "static/contrib/js/ui-bootstrap-tpls.js" | versioned }}"></script> @@ -82,5 +85,9 @@ <script src="{{ instance }}/{{ "static/contrib/js/angular-inform.js" | versioned }}"></script> <script src="{{ instance }}/{{ "static/contrib/js/webauthn-client/pi-webauthn.js" | versioned }}"></script> <script src="{{ instance }}/{{ "static/contrib/js/u2f-api.js" | versioned }}"></script> +<!-- jsPDF - Script for generating PDF files --> +<script src="static/jspdf.umd.min.js"></script> +<!-- autotable - Script for creating formatted tables compatible with jsPDF --> +<script src="static/jspdf.plugin.autotable.min.js"></script> </body> </html> diff --git a/setup.py b/setup.py index afc615aa726a59592ad079a762fa76df9e346d83..5964fb4302846de8619607d30c67a090b30e2920 100644 --- a/setup.py +++ b/setup.py @@ -49,6 +49,7 @@ install_requires = ["beautifulsoup4[lxml]>=4.3.2", "ldap3>=2.6", "netaddr>=0.7.12", "passlib[bcrypt]>=1.7.0", + "perun.connector~=3.3", "argon2_cffi>=20.1.0", "pydash>=4.7.4", "PyJWT>=1.3.0",