PK|5HTconnexion/__init__.py#!/usr/bin/env python3 """ Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ from flask import abort, request, send_file, send_from_directory, render_template, render_template_string, \ url_for from .app import App from .api import Api from .problem import problem from .decorators.produces import NoContent import werkzeug.exceptions as exceptions from .resolver import * __version__ = '1.0.38' PKP%HH4++connexion/utils.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import functools import importlib import re PATH_PARAMETER = re.compile(r'\{([^}]*)\}') # map Swagger type to flask path converter # see http://flask.pocoo.org/docs/0.10/api/#url-route-registrations PATH_PARAMETER_CONVERTERS = { 'integer': 'int', 'number': 'float' } def flaskify_endpoint(identifier): """ Converts the provided identifier in a valid flask endpoint name :type identifier: str :rtype: str """ return identifier.replace('.', '_') def convert_path_parameter(match, types): name = match.group(1) swagger_type = types.get(name) converter = PATH_PARAMETER_CONVERTERS.get(swagger_type) return '<{}{}{}>'.format(converter or '', ':' if converter else '', name.replace('-', '_')) def flaskify_path(swagger_path, types={}): """ Convert swagger path templates to flask path templates :type swagger_path: str :rtype: str >>> flaskify_path('/foo-bar/{my-param}') '/foo-bar/' >>> flaskify_path('/foo/{someint}', {'someint': 'int'}) '/foo/' """ convert_match = functools.partial(convert_path_parameter, types=types) return PATH_PARAMETER.sub(convert_match, swagger_path) def deep_getattr(obj, attr): """ Recurses through an attribute chain to get the ultimate value. Stolen from http://pingfive.typepad.com/blog/2010/04/deep-getattr-python-function.html """ return functools.reduce(getattr, attr.split('.'), obj) def get_function_from_name(function_name): """ Tries to get function by fully qualified name (e.g. "mymodule.myobj.myfunc") :type function_name: str """ module_name, attr_path = function_name.rsplit('.', 1) module = None while not module: try: module = importlib.import_module(module_name) except ImportError: module_name, attr_path1 = module_name.rsplit('.', 1) attr_path = '{}.{}'.format(attr_path1, attr_path) function = deep_getattr(module, attr_path) return function def is_json_mimetype(mimetype): """ :type mimetype: str :rtype: bool """ maintype, subtype = mimetype.split('/') # type: str, str return maintype == 'application' and (subtype == 'json' or subtype.endswith('+json')) def produces_json(produces): """ Returns True if all mimetypes in produces are serialized with json :type produces: list :rtype: bool >>> produces_json(['application/json']) True >>> produces_json(['application/x.custom+json']) True >>> produces_json([]) True >>> produces_json(['application/xml']) False >>> produces_json(['text/json']) False >>> produces_json(['application/json', 'other/type']) False >>> produces_json(['application/json', 'application/x.custom+json']) True """ return all(is_json_mimetype(mimetype) for mimetype in produces) def boolean(s): ''' Convert JSON/Swagger boolean value to Python, raise ValueError otherwise >>> boolean('true') True >>> boolean('false') False ''' if not hasattr(s, 'lower'): raise ValueError('Invalid boolean value') elif s.lower() == 'true': return True elif s.lower() == 'false': return False else: raise ValueError('Invalid boolean value') PKbG=/`xconnexion/api.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import flask import jinja2 import json import logging import pathlib import yaml from .operation import Operation from . import utils from . import resolver MODULE_PATH = pathlib.Path(__file__).absolute().parent SWAGGER_UI_PATH = MODULE_PATH / 'vendor' / 'swagger-ui' SWAGGER_UI_URL = 'ui' logger = logging.getLogger('connexion.api') class Api: """ Single API that corresponds to a flask blueprint """ def __init__(self, swagger_yaml_path, base_url=None, arguments=None, swagger_ui=None, swagger_path=None, swagger_url=None, validate_responses=False, resolver=resolver.Resolver()): """ :type swagger_yaml_path: pathlib.Path :type base_url: str | None :type arguments: dict | None :type swagger_ui: bool :type swagger_path: string | None :type swagger_url: string | None :param resolver: Callable that maps operationID to a function """ self.swagger_yaml_path = pathlib.Path(swagger_yaml_path) logger.debug('Loading specification: %s', swagger_yaml_path, extra={'swagger_yaml': swagger_yaml_path, 'base_url': base_url, 'arguments': arguments, 'swagger_ui': swagger_ui, 'swagger_path': swagger_path, 'swagger_url': swagger_url}) arguments = arguments or {} with swagger_yaml_path.open() as swagger_yaml: swagger_template = swagger_yaml.read() swagger_string = jinja2.Template(swagger_template).render(**arguments) self.specification = yaml.load(swagger_string) # type: dict logger.debug('Read specification', extra=self.specification) # https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#fixed-fields # If base_url is not on provided then we try to read it from the swagger.yaml or use / by default if base_url is None: self.base_url = self.specification.get('basePath', '') # type: dict else: self.base_url = base_url self.specification['basePath'] = base_url # A list of MIME types the APIs can produce. This is global to all APIs but can be overridden on specific # API calls. self.produces = self.specification.get('produces', list()) # type: List[str] self.security = self.specification.get('security') self.security_definitions = self.specification.get('securityDefinitions', dict()) logger.debug('Security Definitions: %s', self.security_definitions) self.definitions = self.specification.get('definitions', {}) self.parameter_definitions = self.specification.get('parameters', {}) self.swagger_path = swagger_path or SWAGGER_UI_PATH self.swagger_url = swagger_url or SWAGGER_UI_URL self.resolver = resolver logger.debug('Validate Responses: %s', str(validate_responses)) self.validate_responses = validate_responses # Create blueprint and endpoints self.blueprint = self.create_blueprint() self.add_swagger_json() if swagger_ui: self.add_swagger_ui() self.add_paths() def add_operation(self, method, path, swagger_operation): """ Adds one operation to the api. This method uses the OperationID identify the module and function that will handle the operation From Swagger Specification: **OperationID** A friendly name for the operation. The id MUST be unique among all operations described in the API. Tools and libraries MAY use the operation id to uniquely identify an operation. :type method: str :type path: str :type swagger_operation: dict """ operation = Operation(method=method, path=path, operation=swagger_operation, app_produces=self.produces, app_security=self.security, security_definitions=self.security_definitions, definitions=self.definitions, parameter_definitions=self.parameter_definitions, validate_responses=self.validate_responses, resolver=self.resolver) operation_id = operation.operation_id logger.debug('... Adding %s -> %s', method.upper(), operation_id, extra=vars(operation)) flask_path = utils.flaskify_path(path, operation.get_path_parameter_types()) self.blueprint.add_url_rule(flask_path, operation.endpoint_name, operation.function, methods=[method]) def add_paths(self, paths=None): """ Adds the paths defined in the specification as endpoints :type paths: list """ paths = paths or self.specification.get('paths', dict()) for path, methods in paths.items(): logger.debug('Adding %s%s...', self.base_url, path) # TODO Error handling for method, endpoint in methods.items(): try: self.add_operation(method, path, endpoint) except Exception: # pylint: disable= W0703 logger.exception('Failed to add operation for %s %s%s', method.upper(), self.base_url, path) def add_swagger_json(self): """ Adds swagger json to {base_url}/swagger.json """ logger.debug('Adding swagger.json: %s/swagger.json', self.base_url) endpoint_name = "{name}_swagger_json".format(name=self.blueprint.name) self.blueprint.add_url_rule('/swagger.json', endpoint_name, lambda: json.dumps(self.specification)) def add_swagger_ui(self): """ Adds swagger ui to {base_url}/ui/ """ logger.debug('Adding swagger-ui: %s/%s/', self.base_url, self.swagger_url) static_endpoint_name = "{name}_swagger_ui_static".format(name=self.blueprint.name) self.blueprint.add_url_rule('/{swagger_url}/'.format(swagger_url=self.swagger_url), static_endpoint_name, self.swagger_ui_static) index_endpoint_name = "{name}_swagger_ui_index".format(name=self.blueprint.name) self.blueprint.add_url_rule('/{swagger_url}/'.format(swagger_url=self.swagger_url), index_endpoint_name, self.swagger_ui_index) def create_blueprint(self, base_url=None): """ :type base_url: str | None :rtype: flask.Blueprint """ base_url = base_url or self.base_url logger.debug('Creating API blueprint: %s', base_url) endpoint = utils.flaskify_endpoint(base_url) blueprint = flask.Blueprint(endpoint, __name__, url_prefix=base_url, template_folder=str(self.swagger_path)) return blueprint def swagger_ui_index(self): return flask.render_template('index.html', api_url=self.base_url) def swagger_ui_static(self, filename): """ :type filename: str """ return flask.send_from_directory(str(self.swagger_path), filename) PKbG躡))connexion/app.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import logging import pathlib import flask import werkzeug.exceptions from .problem import problem from .api import Api from connexion.resolver import Resolver logger = logging.getLogger('connexion.app') class App: def __init__(self, import_name, port=None, specification_dir='', server=None, arguments=None, debug=False, swagger_ui=True, swagger_path=None, swagger_url=None): """ :param import_name: the name of the application package :type import_name: str :param port: port to listen to :type port: int :param specification_dir: directory where to look for specifications :type specification_dir: pathlib.Path | str :param server: which wsgi server to use :type server: str | None :param arguments: arguments to replace on the specification :type arguments: dict | None :param debug: include debugging information :type debug: bool :param swagger_ui: whether to include swagger ui or not :type swagger_ui: bool :param swagger_path: path to swagger-ui directory :type swagger_path: string | None :param swagger_url: URL to access swagger-ui documentation :type swagger_url: string | None """ self.app = flask.Flask(import_name) # we get our application root path from flask to avoid duplicating logic self.root_path = pathlib.Path(self.app.root_path) logger.debug('Root Path: %s', self.root_path) specification_dir = pathlib.Path(specification_dir) # Ensure specification dir is a Path if specification_dir.is_absolute(): self.specification_dir = specification_dir else: self.specification_dir = self.root_path / specification_dir logger.debug('Specification directory: %s', self.specification_dir) logger.debug('Setting error handlers') for error_code in range(400, 600): # All http status from 400 to 599 are errors self.add_error_handler(error_code, self.common_error_handler) self.port = port self.server = server or 'flask' self.debug = debug self.import_name = import_name self.arguments = arguments or {} self.swagger_ui = swagger_ui self.swagger_path = swagger_path self.swagger_url = swagger_url @staticmethod def common_error_handler(exception): """ :type exception: Exception """ if not isinstance(exception, werkzeug.exceptions.HTTPException): exception = werkzeug.exceptions.InternalServerError() return problem(title=exception.name, detail=exception.description, status=exception.code) def add_api(self, swagger_file, base_path=None, arguments=None, swagger_ui=None, swagger_path=None, swagger_url=None, validate_responses=False, resolver=Resolver()): """ Adds an API to the application based on a swagger file :param swagger_file: swagger file with the specification :type swagger_file: pathlib.Path :param base_path: base path where to add this api :type base_path: str | None :param arguments: api version specific arguments to replace on the specification :type arguments: dict | None :param swagger_ui: whether to include swagger ui or not :type swagger_ui: bool :param swagger_path: path to swagger-ui directory :type swagger_path: string | None :param swagger_url: URL to access swagger-ui documentation :type swagger_url: string | None :param validate_responses: True enables validation. Validation errors generate HTTP 500 responses. :type validate_responses: bool :param resolver: Operation resolver. :type resolver: Resolver | types.FunctionType :rtype: Api """ resolver = Resolver(resolver) if hasattr(resolver, '__call__') else resolver swagger_ui = swagger_ui if swagger_ui is not None else self.swagger_ui swagger_path = swagger_path if swagger_path is not None else self.swagger_path swagger_url = swagger_url if swagger_url is not None else self.swagger_url logger.debug('Adding API: %s', swagger_file) # TODO test if base_url starts with an / (if not none) arguments = arguments or dict() arguments = dict(self.arguments, **arguments) # copy global arguments and update with api specfic yaml_path = self.specification_dir / swagger_file api = Api(swagger_yaml_path=yaml_path, base_url=base_path, arguments=arguments, swagger_ui=swagger_ui, swagger_path=swagger_path, swagger_url=swagger_url, resolver=resolver, validate_responses=validate_responses) self.app.register_blueprint(api.blueprint) return api def add_error_handler(self, error_code, function): """ :type error_code: int :type function: types.FunctionType """ self.app.error_handler_spec[None][error_code] = function def add_url_rule(self, rule, endpoint=None, view_func=None, **options): """ Connects a URL rule. Works exactly like the `route` decorator. If a view_func is provided it will be registered with the endpoint. Basically this example:: @app.route('/') def index(): pass Is equivalent to the following:: def index(): pass app.add_url_rule('/', 'index', index) If the view_func is not provided you will need to connect the endpoint to a view function like so:: app.view_functions['index'] = index Internally`route` invokes `add_url_rule` so if you want to customize the behavior via subclassing you only need to change this method. :param rule: the URL rule as string :type rule: str :param endpoint: the endpoint for the registered URL rule. Flask itself assumes the name of the view function as endpoint :type endpoint: str :param view_func: the function to call when serving a request to the provided endpoint :type view_func: types.FunctionType :param options: the options to be forwarded to the underlying `werkzeug.routing.Rule` object. A change to Werkzeug is handling of method options. methods is a list of methods this rule should be limited to (`GET`, `POST` etc.). By default a rule just listens for `GET` (and implicitly `HEAD`). """ log_details = {'endpoint': endpoint, 'view_func': view_func.__name__} log_details.update(options) logger.debug('Adding %s', rule, extra=log_details) self.app.add_url_rule(rule, endpoint, view_func, **options) def route(self, rule, **options): """ A decorator that is used to register a view function for a given URL rule. This does the same thing as `add_url_rule` but is intended for decorator usage:: @app.route('/') def index(): return 'Hello World' :param rule: the URL rule as string :type rule: str :param endpoint: the endpoint for the registered URL rule. Flask itself assumes the name of the view function as endpoint :param options: the options to be forwarded to the underlying `werkzeug.routing.Rule` object. A change to Werkzeug is handling of method options. methods is a list of methods this rule should be limited to (`GET`, `POST` etc.). By default a rule just listens for `GET` (and implicitly `HEAD`). """ logger.debug('Adding %s with decorator', rule, extra=options) return self.app.route(rule, **options) def run(self, port=None, server=None, debug=None, **options): # pragma: no cover """ Runs the application on a local development server. :param port: port to listen to :type port: int :param server: which wsgi server to use :type server: str | None :param debug: include debugging information :type debug: bool :param options: options to be forwarded to the underlying server :type options: dict """ # this functions is not covered in unit tests because we would effectively testing the mocks # overwrite constructor parameter if port is not None: self.port = port elif self.port is None: self.port = 5000 if server is not None: self.server = server if debug is not None: self.debug = debug logger.debug('Starting %s HTTP server..', self.server, extra=vars(self)) if self.server == 'flask': self.app.run('0.0.0.0', port=self.port, debug=self.debug, **options) elif self.server == 'tornado': try: import tornado.wsgi import tornado.httpserver import tornado.ioloop except: raise Exception('tornado library not installed') wsgi_container = tornado.wsgi.WSGIContainer(self.app) http_server = tornado.httpserver.HTTPServer(wsgi_container, **options) http_server.listen(self.port) logger.info('Listening on port %s..', port=self.port) tornado.ioloop.IOLoop.instance().start() elif self.server == 'gevent': try: import gevent.wsgi except: raise Exception('gevent library not installed') http_server = gevent.wsgi.WSGIServer(('', self.port), self.app, **options) logger.info('Listening on port %s..', self.port) http_server.serve_forever() else: raise Exception('Server %s not recognized', self.server) PKtlGJconnexion/exceptions.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ class ConnexionException(BaseException): pass class InvalidSpecification(ConnexionException): def __init__(self, reason='Unknown Reason'): """ :param reason: Reason why the specification is invalid :type reason: str """ self.reason = reason def __str__(self): return ''.format(self.reason) def __repr__(self): return ''.format(self.reason) class NonConformingResponse(ConnexionException): def __init__(self, reason='Unknown Reason'): """ :param reason: Reason why the response did not conform to the specification :type reason: str """ self.reason = reason def __str__(self): return ''.format(self.reason) def __repr__(self): return ''.format(self.reason) PK5H$;;connexion/operation.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ from copy import deepcopy import functools import logging import os import jsonschema from jsonschema import ValidationError from .decorators import validation from .decorators.metrics import UWSGIMetricsCollector from .decorators.parameter import parameter_to_arg from .decorators.produces import BaseSerializer, Produces, Jsonifier from .decorators.response import ResponseValidator from .decorators.security import security_passthrough, verify_oauth from .decorators.validation import RequestBodyValidator, ParameterValidator, TypeValidationError from .exceptions import InvalidSpecification from .utils import flaskify_endpoint, produces_json logger = logging.getLogger('connexion.operation') class Operation: """ A single API operation on a path. """ def __init__(self, method, path, operation, app_produces, app_security, security_definitions, definitions, parameter_definitions, resolver, validate_responses=False): """ This class uses the OperationID identify the module and function that will handle the operation From Swagger Specification: **OperationID** A friendly name for the operation. The id MUST be unique among all operations described in the API. Tools and libraries MAY use the operation id to uniquely identify an operation. :param method: HTTP method :type method: str :param path: :type path: str :param operation: swagger operation object :type operation: dict :param app_produces: list of content types the application can return by default :type app_produces: list :param app_security: list of security rules the application uses by default :type app_security: list :param security_definitions: `Security Definitions Object `_ :type security_definitions: dict :param definitions: `Definitions Object `_ :type definitions: dict :param resolver: Callable that maps operationID to a function :param validate_responses: True enables validation. Validation errors generate HTTP 500 responses. :type validate_responses: bool """ self.method = method self.path = path self.security_definitions = security_definitions self.definitions = definitions self.parameter_definitions = parameter_definitions self.definitions_map = { 'definitions': self.definitions, 'parameters': self.parameter_definitions } self.validate_responses = validate_responses self.operation = operation # todo support definition references # todo support references to application level parameters self.parameters = list(self.resolve_parameters(operation.get('parameters', []))) self.security = operation.get('security', app_security) self.produces = operation.get('produces', app_produces) resolution = resolver.resolve(self) self.operation_id = resolution.operation_id self.endpoint_name = flaskify_endpoint(self.operation_id) self.__undecorated_function = resolution.function for param in self.parameters: if param['in'] == 'body' and 'default' in param: self.default_body = param break else: self.default_body = None self.validate_defaults() def validate_defaults(self): for param in self.parameters: try: if param['in'] == 'body' and 'default' in param: param = param.copy() if 'required' in param: del param['required'] if param['type'] == 'object': jsonschema.validate(param['default'], self.body_schema, format_checker=jsonschema.draft4_format_checker) else: jsonschema.validate(param['default'], param, format_checker=jsonschema.draft4_format_checker) elif param['in'] == 'query' and 'default' in param: validation.validate_type(param, param['default'], 'query', param['name']) except (TypeValidationError, ValidationError): raise InvalidSpecification('The parameter \'{param_name}\' has a default value which is not of' ' type \'{param_type}\''.format(param_name=param['name'], param_type=param['type'])) def resolve_reference(self, schema): schema = deepcopy(schema) # avoid changing the original schema # find the object we need to resolve/update for obj in schema, schema.get('items'): reference = obj and obj.get('$ref') # type: str if reference: break if reference: if not reference.startswith('#/'): raise InvalidSpecification( "{method} {path} '$ref' needs to start with '#/'".format(**vars(self))) path = reference.split('/') definition_type = path[1] try: definitions = self.definitions_map[definition_type] except KeyError: raise InvalidSpecification( "{method} {path} '$ref' needs to point to definitions or parameters".format(**vars(self))) definition_name = path[-1] try: # Get sub definition definition = deepcopy(definitions[definition_name]) except KeyError: raise InvalidSpecification("{method} {path} Definition '{definition_name}' not found".format( definition_name=definition_name, method=self.method, path=self.path)) # resolve object properties too for prop, prop_spec in definition.get('properties', {}).items(): resolved = self.resolve_reference(prop_spec.get('schema', {})) if not resolved: resolved = self.resolve_reference(prop_spec) if resolved: definition['properties'][prop] = resolved # Update schema obj.update(definition) del obj['$ref'] return schema def get_mimetype(self): if produces_json(self.produces): # endpoint will return json try: return self.produces[0] except IndexError: # if the endpoint as no 'produces' then the default is 'application/json' return 'application/json' elif len(self.produces) == 1: return self.produces[0] else: return None def resolve_parameters(self, parameters): for param in parameters: param = self.resolve_reference(param) yield param def get_path_parameter_types(self): return {p['name']: p.get('type') for p in self.parameters if p['in'] == 'path'} @property def body_schema(self): """ `About operation parameters `_ A list of parameters that are applicable for all the operations described under this path. These parameters can be overridden at the operation level, but cannot be removed there. The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a name and location. The list can use the Reference Object to link to parameters that are defined at the Swagger Object's parameters. **There can be one "body" parameter at most.** :rtype: dict """ body_parameters = [parameter for parameter in self.parameters if parameter['in'] == 'body'] if len(body_parameters) > 1: raise InvalidSpecification( "{method} {path} There can be one 'body' parameter at most".format(**vars(self))) body_parameters = body_parameters[0] if body_parameters else {} schema = body_parameters.get('schema') # type: dict if schema: schema = self.resolve_reference(schema) return schema @property def function(self): """ Operation function with decorators :rtype: types.FunctionType """ parameters = [] for param in self.parameters: # resolve references param = param.copy() schema = param.get('schema') if schema: schema = self.resolve_reference(schema) param['schema'] = schema parameters.append(param) function = parameter_to_arg(parameters, self.__undecorated_function) if self.validate_responses: logger.debug('... Response validation enabled.') response_decorator = self.__response_validation_decorator logger.debug('... Adding response decorator (%r)', response_decorator) function = response_decorator(function) produces_decorator = self.__content_type_decorator logger.debug('... Adding produces decorator (%r)', produces_decorator, extra=vars(self)) function = produces_decorator(function) for validation_decorator in self.__validation_decorators: function = validation_decorator(function) # NOTE: the security decorator should be applied last to check auth before anything else :-) security_decorator = self.__security_decorator logger.debug('... Adding security decorator (%r)', security_decorator, extra=vars(self)) function = security_decorator(function) if UWSGIMetricsCollector.is_available(): decorator = UWSGIMetricsCollector(self.path, self.method) function = decorator(function) return function @property def __content_type_decorator(self): """ Get produces decorator. If the operation mimetype format is json then the function return value is jsonified From Swagger Specfication: **Produces** A list of MIME types the operation can produce. This overrides the produces definition at the Swagger Object. An empty value MAY be used to clear the global definition. :rtype: types.FunctionType """ logger.debug('... Produces: %s', self.produces, extra=vars(self)) mimetype = self.get_mimetype() if produces_json(self.produces): # endpoint will return json logger.debug('... Produces json', extra=vars(self)) jsonify = Jsonifier(mimetype) return jsonify elif len(self.produces) == 1: logger.debug('... Produces %s', mimetype, extra=vars(self)) decorator = Produces(mimetype) return decorator else: return BaseSerializer() @property def __security_decorator(self): """ Gets the security decorator for operation From Swagger Specification: **Security Definitions Object** A declaration of the security schemes available to be used in the specification. This does not enforce the security schemes on the operations and only serves to provide the relevant details for each scheme. **Security Requirement Object** Lists the required security schemes to execute this operation. The object can have multiple security schemes declared in it which are all required (that is, there is a logical AND between the schemes). The name used for each property **MUST** correspond to a security scheme declared in the Security Definitions. :rtype: types.FunctionType """ logger.debug('... Security: %s', self.security, extra=vars(self)) if self.security: if len(self.security) > 1: logger.warning("... More than one security requirement defined. **IGNORING SECURITY REQUIREMENTS**", extra=vars(self)) return security_passthrough security = self.security[0] # type: dict # the following line gets the first (and because of the previous condition only) scheme and scopes # from the operation's security requirements scheme_name, scopes = next(iter(security.items())) # type: str, list security_definition = self.security_definitions[scheme_name] if security_definition['type'] == 'oauth2': token_info_url = security_definition.get('x-tokenInfoUrl', os.getenv('HTTP_TOKENINFO_URL')) if token_info_url: scopes = set(scopes) # convert scopes to set because this is needed for verify_oauth return functools.partial(verify_oauth, token_info_url, scopes) else: logger.warning("... OAuth2 token info URL missing. **IGNORING SECURITY REQUIREMENTS**", extra=vars(self)) elif security_definition['type'] in ('apiKey', 'basic'): logger.debug( "... Security type '%s' not natively supported by Connexion; you should handle it yourself", security_definition['type'], extra=vars(self)) else: logger.warning("... Security type '%s' unknown. **IGNORING SECURITY REQUIREMENTS**", security_definition['type'], extra=vars(self)) # if we don't know how to handle the security or it's not defined we will usa a passthrough decorator return security_passthrough @property def __validation_decorators(self): """ :rtype: types.FunctionType """ if self.parameters: yield ParameterValidator(self.parameters) if self.body_schema: yield RequestBodyValidator(self.body_schema, self.default_body is not None) @property def __response_validation_decorator(self): """ Get a decorator for validating the generated Response. :rtype: types.FunctionType """ return ResponseValidator(self, self.get_mimetype()) PK5Gp>f connexion/problem.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import flask import json def problem(status, title, detail, type='about:blank', instance=None, headers=None, ext=None): """ Returns a `Problem Details `_ error response. :param type: An absolute URI that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type (e.g., using HTML). When this member is not present its value is assumed to be "about:blank". :type: type: str :param title: A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localisation. :type title: str :param detail: An human readable explanation specific to this occurrence of the problem. :type detail: str :param status: The HTTP status code generated by the origin server for this occurrence of the problem. :type status: int :param instance: An absolute URI that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. :type instance: str :type type: str | None :param headers: HTTP headers to include in the response :type headers: dict | None :param ext: Extension members to include in the body :type ext: dict | None :return: Json serialized error response :rtype: flask.Response """ problem_response = {'type': type, 'title': title, 'detail': detail, 'status': status, } if instance: problem_response['instance'] = instance if ext: problem_response.update(ext) body = json.dumps(problem_response) response = flask.current_app.response_class(body, mimetype='application/problem+json', status=status) # type: flask.Response if headers: response.headers.extend(headers) return response PK5HFconnexion/resolver.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import logging import re import connexion.utils as utils logger = logging.getLogger('connexion.resolver') class Resolution: def __init__(self, function, operation_id): """ Represents the result of operation resolution :param function: The endpoint function :type function: types.FunctionType """ self.function = function self.operation_id = operation_id class Resolver: def __init__(self, function_resolver=utils.get_function_from_name): """ Standard resolver :param function_resolver: Function that resolves functions using an operationId :type function_resolver: types.FunctionType """ self.function_resolver = function_resolver def resolve(self, operation): """ Default operation resolver :type operation: connexion.operation.Operation """ operation_id = self.resolve_operation_id(operation) return Resolution(self.resolve_function_from_operation_id(operation_id), operation_id) def resolve_operation_id(self, operation): """ Default operationId resolver :type operation: connexion.operation.Operation """ spec = operation.operation operation_id = spec.get('operationId') x_router_controller = spec.get('x-swagger-router-controller') if x_router_controller is None: return operation_id return x_router_controller + '.' + operation_id def resolve_function_from_operation_id(self, operation_id): """ Invokes the function_resolver :type operation_id: str """ return self.function_resolver(operation_id) class RestyResolver(Resolver): """ Resolves endpoint functions using REST semantics (unless overridden by specifying operationId) """ def __init__(self, default_module_name, collection_endpoint_name='search'): """ :param default_module_name: Default module name for operations :type default_module_name: str """ Resolver.__init__(self) self.default_module_name = default_module_name self.collection_endpoint_name = collection_endpoint_name def resolve_operation_id(self, operation): """ Resolves the operationId using REST semantics unless explicitly configured in the spec :type operation: connexion.operation.Operation """ if operation.operation.get('operationId'): return Resolver.resolve_operation_id(self, operation) return self.resolve_operation_id_using_rest_semantics(operation) def resolve_operation_id_using_rest_semantics(self, operation): """ Resolves the operationId using REST semantics :type operation: connexion.operation.Operation """ path_match = re.search( '^/?(?P([\w\-](?/*)(?P.*)$', operation.path ) def get_controller_name(): x_router_controller = operation.operation.get('x-swagger-router-controller') name = self.default_module_name resource_name = path_match.group('resource_name') if x_router_controller: name = x_router_controller elif resource_name: resource_controller_name = resource_name.replace('-', '_') name += '.' + resource_controller_name return name def get_function_name(): method = operation.method is_collection_endpoint = \ method.lower() == 'get' \ and path_match.group('resource_name') \ and not path_match.group('extended_path') return self.collection_endpoint_name if is_collection_endpoint else method.lower() return get_controller_name() + '.' + get_function_name() PK5H^"connexion/decorators/validation.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import flask import functools import itertools import logging from jsonschema import draft4_format_checker, validate, ValidationError from ..problem import problem from ..utils import boolean logger = logging.getLogger('connexion.decorators.validation') TYPE_MAP = { 'integer': int, 'number': float, 'boolean': boolean } class TypeValidationError(Exception): def __init__(self, schema_type, parameter_type, parameter_name): """ Exception raise when type validation fails :type schema_type: str :type parameter_type: str :type parameter_name: str :return: """ self.schema_type = schema_type self.parameter_type = parameter_type self.parameter_name = parameter_name def __str__(self): msg = "Wrong type, expected '{schema_type}' for {parameter_type} parameter '{parameter_name}'" return msg.format(**vars(self)) def make_type(value, type): type_func = TYPE_MAP.get(type) # convert value to right type return type_func(value) def validate_type(param, value, parameter_type, parameter_name=None): param_type = param.get('type') parameter_name = parameter_name if parameter_name else param['name'] if param_type == "array": # then logic is more complex if param.get("collectionFormat") and param.get("collectionFormat") == "pipes": parts = value.split("|") else: # default: csv parts = value.split(",") converted_parts = [] for part in parts: try: converted = make_type(part, param["items"]["type"]) except (ValueError, TypeError): converted = part converted_parts.append(converted) return converted_parts else: try: return make_type(value, param_type) except ValueError: raise TypeValidationError(param_type, parameter_type, parameter_name) except TypeError: return value class RequestBodyValidator: def __init__(self, schema, has_default=False): """ :param schema: The schema of the request body :param has_default: Flag to indicate if default value is present. """ self.schema = schema self.has_default = has_default def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): data = flask.request.json logger.debug("%s validating schema...", flask.request.url) error = self.validate_schema(data, self.schema) if error and not self.has_default: return error response = function(*args, **kwargs) return response return wrapper def validate_schema(self, data, schema): """ :type schema: dict :rtype: flask.Response | None """ try: validate(data, schema, format_checker=draft4_format_checker) except ValidationError as exception: return problem(400, 'Bad Request', str(exception)) return None class ParameterValidator(): def __init__(self, parameters): self.parameters = {k: list(g) for k, g in itertools.groupby(parameters, key=lambda p: p['in'])} @staticmethod def validate_parameter(parameter_type, value, param): if value is not None: try: converted_value = validate_type(param, value, parameter_type) except TypeValidationError as e: return str(e) if 'required' in param: del param['required'] try: validate(converted_value, param, format_checker=draft4_format_checker) except ValidationError as exception: print(converted_value, type(converted_value), param.get('type'), param, '<--------------------------') return str(exception) elif param.get('required'): return "Missing {parameter_type} parameter '{param[name]}'".format(**locals()) def validate_query_parameter(self, param): """ Validate a single query parameter (request.args in Flask) :type param: dict :rtype: str """ val = flask.request.args.get(param['name']) return self.validate_parameter('query', val, param) def validate_path_parameter(self, args, param): val = args.get(param['name'].replace('-', '_')) return self.validate_parameter('path', val, param) def validate_header_parameter(self, param): val = flask.request.headers.get(param['name']) return self.validate_parameter('header', val, param) def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): logger.debug("%s validating parameters...", flask.request.url) for param in self.parameters.get('query', []): error = self.validate_query_parameter(param) if error: return problem(400, 'Bad Request', error) for param in self.parameters.get('path', []): error = self.validate_path_parameter(kwargs, param) if error: return problem(400, 'Bad Request', error) for param in self.parameters.get('header', []): error = self.validate_header_parameter(param) if error: return problem(400, 'Bad Request', error) response = function(*args, **kwargs) return response return wrapper PKjG connexion/decorators/__init__.pyPKtlGɓH connexion/decorators/security.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ # Authentication and authorization related decorators from flask import request import functools import logging import requests from ..problem import problem logger = logging.getLogger('connexion.api.security') # use connection pool for OAuth tokeninfo adapter = requests.adapters.HTTPAdapter(pool_connections=100, pool_maxsize=100) session = requests.Session() session.mount('http://', adapter) session.mount('https://', adapter) def security_passthrough(function): """ :type function: types.FunctionType :rtype: types.FunctionType """ return function def verify_oauth(token_info_url, allowed_scopes, function): """ Decorator to verify oauth :param token_info_url: Url to get information about the token :type token_info_url: str :param allowed_scopes: Set with scopes that are allowed to access the endpoint :type allowed_scopes: set :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): logger.debug("%s Oauth verification...", request.url) authorization = request.headers.get('Authorization') # type: str if not authorization: logger.info("... No auth provided. Aborting with 401.") return problem(401, 'Unauthorized', "No authorization token provided") else: try: _, token = authorization.split() # type: str, str except ValueError: return problem(401, 'Unauthorized', 'Invalid authorization header') logger.debug("... Getting token '%s' from %s", token, token_info_url) token_request = session.get(token_info_url, params={'access_token': token}, timeout=5) logger.debug("... Token info (%d): %s", token_request.status_code, token_request.text) if not token_request.ok: return problem(401, 'Unauthorized', "Provided oauth token is not valid") token_info = token_request.json() # type: dict user_scopes = set(token_info['scope']) scopes_intersection = user_scopes & allowed_scopes logger.debug("... Scope intersection: %s", scopes_intersection) if not scopes_intersection: logger.info("... User scopes (%s) don't include one of the allowed scopes (%s). Aborting with 401.", user_scopes, allowed_scopes) return problem(403, 'Forbidden', "Provided token doesn't have the required scope") logger.info("... Token authenticated.") request.user = token_info.get('uid') request.token_info = token_info return function(*args, **kwargs) return wrapper PK5HjHKK!connexion/decorators/parameter.pyimport werkzeug.exceptions as exceptions import copy import flask import functools import inspect import logging import six logger = logging.getLogger(__name__) # https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#data-types TYPE_MAP = {'integer': int, 'number': float, 'string': str, 'boolean': bool, 'array': list, 'object': dict} # map of swagger types to python types def get_function_arguments(function): # pragma: no cover """ Returns the list of arguments of a function :type function: Callable :rtype: list[str] """ if six.PY3: return list(inspect.signature(function).parameters) else: return inspect.getargspec(function).args def make_type(value, type): type_func = TYPE_MAP[type] # convert value to right type return type_func(value) def get_val_from_param(value, query_param): if query_param["type"] == "array": # then logic is more complex if query_param.get("collectionFormat") and query_param.get("collectionFormat") == "pipes": parts = value.split("|") else: # default: csv parts = value.split(",") return [make_type(part, query_param["items"]["type"]) for part in parts] else: return make_type(value, query_param["type"]) def parameter_to_arg(parameters, function): """ Pass query and body parameters as keyword arguments to handler function. See (https://github.com/zalando/connexion/issues/59) :param parameters: All the parameters of the handler functions :type parameters: dict|None :param function: The handler function for the REST endpoint. :type function: function|None """ body_parameters = [parameter for parameter in parameters if parameter['in'] == 'body'] or [{}] body_name = body_parameters[0].get('name') default_body = body_parameters[0].get('default') query_types = {parameter['name']: parameter for parameter in parameters if parameter['in'] == 'query'} # type: dict[str, str] arguments = get_function_arguments(function) default_query_params = {param['name']: param['default'] for param in parameters if param['in'] == 'query' and 'default' in param} @functools.wraps(function) def wrapper(*args, **kwargs): logger.debug('Function Arguments: %s', arguments) try: request_body = flask.request.json except exceptions.BadRequest: request_body = None if default_body and not request_body: request_body = default_body # Add body parameters if request_body is not None: if body_name not in arguments: logger.debug("Body parameter '%s' not in function arguments", body_name) else: logger.debug("Body parameter '%s' in function arguments", body_name) kwargs[body_name] = request_body # Add query parameters query_arguments = copy.deepcopy(default_query_params) query_arguments.update(flask.request.args.items()) for key, value in query_arguments.items(): if key not in arguments: logger.debug("Query Parameter '%s' not in function arguments", key) else: logger.debug("Query Parameter '%s' in function arguments", key) query_param = query_types[key] logger.debug('%s is a %s', key, query_param) kwargs[key] = get_val_from_param(value, query_param) return function(*args, **kwargs) return wrapper PKtlG`a!connexion/decorators/decorator.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ import logging import flask logger = logging.getLogger('connexion.decorators.decorator') class BaseDecorator: @staticmethod def get_full_response(data): """ Gets Data. Status Code and Headers for response. If only body data is returned by the endpoint function, then the status code will be set to 200 and no headers will be added. If the returned object is a flask.Response then it will just pass the information needed to recreate it. :type data: flask.Response | (object, int) | (object, int, dict) | object :rtype: (object, int, dict) """ url = flask.request.url logger.debug('Getting data and status code', extra={'data': data, 'data_type': type(data), 'url': url}) status_code, headers = 200, {} if isinstance(data, flask.Response): data = data status_code = data.status_code headers = data.headers elif isinstance(data, tuple) and len(data) == 3: data, status_code, headers = data elif isinstance(data, tuple) and len(data) == 2: data, status_code = data logger.debug('Got data and status code (%d)', status_code, extra={'data': data, 'data_type': type(data), 'url': url}) return data, status_code, headers def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ return function def __repr__(self): """ :rtype: str """ return '' PKtlGE]* * connexion/decorators/response.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ # Decorators to change the return type of endpoints import functools import logging from ..exceptions import NonConformingResponse from ..problem import problem from .validation import RequestBodyValidator from .decorator import BaseDecorator logger = logging.getLogger('connexion.decorators.response') class ResponseValidator(BaseDecorator): def __init__(self, operation={}, mimetype='text/plain'): """ :type operation: Operation :type mimetype: str """ self.operation = operation self.mimetype = mimetype def validate_response(self, data, status_code, headers, mimetype): """ Validates the Response object based on what has been declared in the specification. Ensures the response body matches the declated schema. :type data: dict :type status_code: int :type mimetype: str :rtype bool | None """ response_definitions = self.operation.operation.get("responses", {}) if not response_definitions: return True response_definition = response_definitions.get(status_code, {}) # TODO handle default response definitions if response_definition and response_definition.get("schema"): schema = self.operation.resolve_reference(response_definition.get("schema")) v = RequestBodyValidator(schema) error = v.validate_schema(data, schema) if error: raise NonConformingResponse("Response body does not conform to specification") if response_definition and response_definition.get("headers"): if not all(item in headers.keys() for item in response_definition.get("headers").keys()): raise NonConformingResponse("Response headers do not conform to specification") return True def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): result = function(*args, **kwargs) try: data, status_code, headers = self.get_full_response(result) self.validate_response(data, status_code, headers, self.mimetype) except NonConformingResponse as e: return problem(500, 'Internal Server Error', e.reason) return result return wrapper def __repr__(self): """ :rtype: str """ return '' PK5HQGconnexion/decorators/metrics.py import functools import os import time from connexion.decorators.produces import BaseSerializer try: import uwsgi_metrics HAS_UWSGI_METRICS = True except ImportError: uwsgi_metrics = None HAS_UWSGI_METRICS = False class UWSGIMetricsCollector: def __init__(self, path, method): self.path = path self.method = method swagger_path = path.strip('/').replace('/', '.').replace('<', '{').replace('>', '}') self.key_suffix = '{method}.{path}'.format(path=swagger_path, method=method.upper()) self.prefix = os.getenv('HTTP_METRICS_PREFIX', 'connexion.response') @staticmethod def is_available(): return HAS_UWSGI_METRICS def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): status_code = 500 start_time_s = time.time() try: response = function(*args, **kwargs) _, status_code, _ = BaseSerializer.get_full_response(response) finally: end_time_s = time.time() delta_s = end_time_s - start_time_s delta_ms = delta_s * 1000 key = '{status}.{suffix}'.format(status=status_code, suffix=self.key_suffix) uwsgi_metrics.timer(self.prefix, key, delta_ms) return response return wrapper PKtlG{{ connexion/decorators/produces.py""" Copyright 2015 Zalando SE Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ # Decorators to change the return type of endpoints import datetime import flask import functools import json import logging from .decorator import BaseDecorator logger = logging.getLogger('connexion.decorators.produces') # special marker object to return empty content for any status code # e.g. in app method do "return NoContent, 201" NoContent = object() class JSONEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, datetime.datetime): if o.tzinfo: # eg: '2015-09-25T23:14:42.588601+00:00' return o.isoformat('T') else: # No timezone present - assume UTC. # eg: '2015-09-25T23:14:42.588601Z' return o.isoformat('T') + 'Z' if isinstance(o, datetime.date): return o.isoformat() return json.JSONEncoder.default(self, o) class BaseSerializer(BaseDecorator): def __init__(self, mimetype='text/plain'): """ :type mimetype: str """ self.mimetype = mimetype @staticmethod def process_headers(response, headers): """ A convenience function for updating the Response headers with any additional headers generated in the view. If more complex logic should be needed later then it can be handled here. :type response: flask.Response :type headers: dict :rtype flask.Response """ if headers: response.headers.extend(headers) return response def __repr__(self): """ :rtype: str """ return ''.format(self.mimetype) class Produces(BaseSerializer): def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): url = flask.request.url data, status_code, headers = self.get_full_response(function(*args, **kwargs)) logger.debug('Returning %s', url, extra={'url': url, 'mimetype': self.mimetype}) if isinstance(data, flask.Response): # if the function returns a Response object don't change it logger.debug('Endpoint returned a Flask Response', extra={'url': url, 'mimetype': data.mimetype}) return data data = str(data) response = flask.current_app.response_class(data, mimetype=self.mimetype) # type: flask.Response response = self.process_headers(response, headers) return response, status_code return wrapper def __repr__(self): """ :rtype: str """ return ''.format(self.mimetype) class Jsonifier(BaseSerializer): def __call__(self, function): """ :type function: types.FunctionType :rtype: types.FunctionType """ @functools.wraps(function) def wrapper(*args, **kwargs): url = flask.request.url logger.debug('Jsonifing %s', url, extra={'url': url, 'mimetype': self.mimetype}) data, status_code, headers = self.get_full_response(function(*args, **kwargs)) if isinstance(data, flask.Response): # if the function returns a Response object don't change it logger.debug('Endpoint returned a Flask Response', extra={'url': url, 'mimetype': data.mimetype}) return data elif data is NoContent: return '', status_code elif status_code == 204: logger.debug('Endpoint returned an empty response (204)', extra={'url': url, 'mimetype': self.mimetype}) return '', 204 data = json.dumps(data, indent=2, cls=JSONEncoder) response = flask.current_app.response_class(data, mimetype=self.mimetype) # type: flask.Response response = self.process_headers(response, headers) return response, status_code return wrapper def __repr__(self): """ :rtype: str """ return ''.format(self.mimetype) PK5H޼^"^")connexion/vendor/swagger-ui/swagger-ui.js/** * swagger-ui - Swagger UI is a dependency-free collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API * @version v2.1.4 * @link http://swagger.io * @license Apache-2.0 */ (function(){this["Handlebars"] = this["Handlebars"] || {}; this["Handlebars"]["templates"] = this["Handlebars"]["templates"] || {}; this["Handlebars"]["templates"]["apikey_button_view"] = Handlebars.template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return "\n
\n
\n
\n \n \n
\n
\n"; },"useData":true}); this["Handlebars"]["templates"]["basic_auth_button_view"] = Handlebars.template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { return "
\n
\n
\n
\n \n
\n \n \n
\n
\n\n"; },"useData":true}); this["Handlebars"]["templates"]["content_type"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.produces : depth0), {"name":"each","hash":{},"fn":this.program(2, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"2":function(depth0,helpers,partials,data) { var lambda=this.lambda, escapeExpression=this.escapeExpression; return " \n"; },"4":function(depth0,helpers,partials,data) { return " \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n"; },"useData":true}); 'use strict'; $(function() { // Helper function for vertically aligning DOM elements // http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/ $.fn.vAlign = function() { return this.each(function(){ var ah = $(this).height(); var ph = $(this).parent().height(); var mh = (ph - ah) / 2; $(this).css('margin-top', mh); }); }; $.fn.stretchFormtasticInputWidthToParent = function() { return this.each(function(){ var p_width = $(this).closest("form").innerWidth(); var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest('form').css('padding-right'), 10); var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10); $(this).css('width', p_width - p_padding - this_padding); }); }; $('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent(); // Vertically center these paragraphs // Parent may need a min-height for this to work.. $('ul.downplayed li div.content p').vAlign(); // When a sandbox form is submitted.. $("form.sandbox").submit(function(){ var error_free = true; // Cycle through the forms required inputs $(this).find("input.required").each(function() { // Remove any existing error styles from the input $(this).removeClass('error'); // Tack the error style on if the input is empty.. if ($(this).val() === '') { $(this).addClass('error'); $(this).wiggle(); error_free = false; } }); return error_free; }); }); function clippyCopiedCallback() { $('#api_key_copied').fadeIn().delay(1000).fadeOut(); // var b = $("#clippy_tooltip_" + a); // b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() { // b.attr("title", "copy to clipboard") // }, // 500)) } // Logging function that accounts for browsers that don't have window.console function log(){ log.history = log.history || []; log.history.push(arguments); if(this.console){ console.log( Array.prototype.slice.call(arguments)[0] ); } } // Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913) if (Function.prototype.bind && console && typeof console.log === "object") { [ "log","info","warn","error","assert","dir","clear","profile","profileEnd" ].forEach(function (method) { console[method] = this.bind(console[method], console); }, Function.prototype.call); } window.Docs = { shebang: function() { // If shebang has an operation nickname in it.. // e.g. /docs/#!/words/get_search var fragments = $.param.fragment().split('/'); fragments.shift(); // get rid of the bang switch (fragments.length) { case 1: if (fragments[0].length > 0) { // prevent matching "#/" // Expand all operations for the resource and scroll to it var dom_id = 'resource_' + fragments[0]; Docs.expandEndpointListForResource(fragments[0]); $("#"+dom_id).slideto({highlight: false}); } break; case 2: // Refer to the endpoint DOM element, e.g. #words_get_search // Expand Resource Docs.expandEndpointListForResource(fragments[0]); $("#"+dom_id).slideto({highlight: false}); // Expand operation var li_dom_id = fragments.join('_'); var li_content_dom_id = li_dom_id + "_content"; Docs.expandOperation($('#'+li_content_dom_id)); $('#'+li_dom_id).slideto({highlight: false}); break; } }, toggleEndpointListForResource: function(resource) { var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints'); if (elem.is(':visible')) { $.bbq.pushState('#/', 2); Docs.collapseEndpointListForResource(resource); } else { $.bbq.pushState('#/' + resource, 2); Docs.expandEndpointListForResource(resource); } }, // Expand resource expandEndpointListForResource: function(resource) { var resource = Docs.escapeResourceName(resource); if (resource == '') { $('.resource ul.endpoints').slideDown(); return; } $('li#resource_' + resource).addClass('active'); var elem = $('li#resource_' + resource + ' ul.endpoints'); elem.slideDown(); }, // Collapse resource and mark as explicitly closed collapseEndpointListForResource: function(resource) { var resource = Docs.escapeResourceName(resource); if (resource == '') { $('.resource ul.endpoints').slideUp(); return; } $('li#resource_' + resource).removeClass('active'); var elem = $('li#resource_' + resource + ' ul.endpoints'); elem.slideUp(); }, expandOperationsForResource: function(resource) { // Make sure the resource container is open.. Docs.expandEndpointListForResource(resource); if (resource == '') { $('.resource ul.endpoints li.operation div.content').slideDown(); return; } $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() { Docs.expandOperation($(this)); }); }, collapseOperationsForResource: function(resource) { // Make sure the resource container is open.. Docs.expandEndpointListForResource(resource); if (resource == '') { $('.resource ul.endpoints li.operation div.content').slideUp(); return; } $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() { Docs.collapseOperation($(this)); }); }, escapeResourceName: function(resource) { return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&"); }, expandOperation: function(elem) { elem.slideDown(); }, collapseOperation: function(elem) { elem.slideUp(); } }; 'use strict'; Handlebars.registerHelper('sanitize', function(html) { // Strip the script tags from the html, and return it as a Handlebars.SafeString html = html.replace(/)<[^<]*)*<\/script>/gi, ''); return new Handlebars.SafeString(html); }); Handlebars.registerHelper('renderTextParam', function(param) { var result, type = 'text', idAtt = ''; var paramType = param.type || param.schema.type || ''; var isArray = paramType.toLowerCase() === 'array' || param.allowMultiple; var defaultValue = isArray && Array.isArray(param.default) ? param.default.join('\n') : param.default; var dataVendorExtensions = Object.keys(param).filter(function(property) { // filter X-data- properties return property.match(/^X-data-/i) !== null; }).reduce(function(result, property) { // remove X- from property name, so it results in html attributes like data-foo='bar' return result += ' ' + property.substring(2, property.length) + '=\'' + param[property] + '\''; }, ''); if (typeof defaultValue === 'undefined') { defaultValue = ''; } if(param.format && param.format === 'password') { type = 'password'; } if(param.valueId) { idAtt = ' id=\'' + param.valueId + '\''; } if (typeof defaultValue === 'string' || defaultValue instanceof String) { defaultValue = defaultValue.replace(/'/g,'''); } if(isArray) { result = ''; } else { var parameterClass = 'parameter'; if(param.required) { parameterClass += ' required'; } result = ''; } return new Handlebars.SafeString(result); }); this["Handlebars"]["templates"]["main"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression, buffer = "
" + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.title : stack1), depth0)) + "
\n
"; stack1 = lambda(((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.description : stack1), depth0); if (stack1 != null) { buffer += stack1; } buffer += "
\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.externalDocs : depth0), {"name":"if","hash":{},"fn":this.program(2, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += " "; stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.termsOfServiceUrl : stack1), {"name":"if","hash":{},"fn":this.program(4, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.name : stack1), {"name":"if","hash":{},"fn":this.program(6, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.url : stack1), {"name":"if","hash":{},"fn":this.program(8, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.email : stack1), {"name":"if","hash":{},"fn":this.program(10, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n "; stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.license : stack1), {"name":"if","hash":{},"fn":this.program(12, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "\n"; },"2":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return "

" + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.externalDocs : depth0)) != null ? stack1.description : stack1), depth0)) + "

\n " + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.externalDocs : depth0)) != null ? stack1.url : stack1), depth0)) + "\n"; },"4":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return ""; },"6":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return "
Created by " + escapeExpression(lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.name : stack1), depth0)) + "
"; },"8":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return ""; },"10":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return ""; },"12":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return ""; },"14":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression; return " , api version: " + escapeExpression(lambda(((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.version : stack1), depth0)) + "\n "; },"16":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "
\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.info : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "
\n
\n
    \n\n
    \n

    [ base url: " + escapeExpression(((helper = (helper = helpers.basePath || (depth0 != null ? depth0.basePath : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"basePath","hash":{},"data":data}) : helper))) + "\n"; stack1 = helpers['if'].call(depth0, ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.version : stack1), {"name":"if","hash":{},"fn":this.program(14, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "]\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.validatorUrl : depth0), {"name":"if","hash":{},"fn":this.program(16, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "

    \n
    \n
    \n"; },"useData":true}); this["Handlebars"]["templates"]["operation"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { return "deprecated"; },"3":function(depth0,helpers,partials,data) { return "

    Warning: Deprecated

    \n"; },"5":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, buffer = "

    Implementation Notes

    \n
    "; stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"description","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "
    \n"; },"7":function(depth0,helpers,partials,data) { return "
    \n "; },"9":function(depth0,helpers,partials,data) { var stack1, buffer = "
    \n"; stack1 = helpers.each.call(depth0, depth0, {"name":"each","hash":{},"fn":this.program(10, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "
    \n"; },"10":function(depth0,helpers,partials,data) { var stack1, lambda=this.lambda, escapeExpression=this.escapeExpression, buffer = "
    " + escapeExpression(lambda((depth0 != null ? depth0.scope : depth0), depth0)) + "
    \n"; },"12":function(depth0,helpers,partials,data) { return "
    "; },"14":function(depth0,helpers,partials,data) { return "
    \n \n
    \n"; },"16":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "

    Response Class (Status " + escapeExpression(((helper = (helper = helpers.successCode || (depth0 != null ? depth0.successCode : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"successCode","hash":{},"data":data}) : helper))) + ")

    \n "; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.successDescription : depth0), {"name":"if","hash":{},"fn":this.program(17, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "\n

    \n
    \n
    \n\n"; },"17":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, buffer = "
    "; stack1 = ((helper = (helper = helpers.successDescription || (depth0 != null ? depth0.successDescription : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"successDescription","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "
    "; },"19":function(depth0,helpers,partials,data) { var stack1, buffer = "

    Headers

    \n \n \n \n \n \n \n \n \n \n \n"; stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.headers : depth0), {"name":"each","hash":{},"fn":this.program(20, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + " \n
    HeaderDescriptionTypeOther
    \n"; },"20":function(depth0,helpers,partials,data) { var lambda=this.lambda, escapeExpression=this.escapeExpression; return " \n " + escapeExpression(lambda((data && data.key), depth0)) + "\n " + escapeExpression(lambda((depth0 != null ? depth0.description : depth0), depth0)) + "\n " + escapeExpression(lambda((depth0 != null ? depth0.type : depth0), depth0)) + "\n " + escapeExpression(lambda((depth0 != null ? depth0.other : depth0), depth0)) + "\n \n"; },"22":function(depth0,helpers,partials,data) { return "

    Parameters

    \n \n \n \n \n \n \n \n \n \n \n \n\n \n
    ParameterValueDescriptionParameter TypeData Type
    \n"; },"24":function(depth0,helpers,partials,data) { return "
    \n

    Response Messages

    \n \n \n \n \n \n \n \n \n \n \n \n
    HTTP Status CodeReasonResponse ModelHeaders
    \n"; },"26":function(depth0,helpers,partials,data) { return ""; },"28":function(depth0,helpers,partials,data) { return "
    \n \n \n \n
    \n"; },"30":function(depth0,helpers,partials,data) { return "

    Request Headers

    \n
    \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, options, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, blockHelperMissing=helpers.blockHelperMissing, buffer = "\n
      \n
    • \n \n \n
    • \n
    \n"; },"useData":true}); this["Handlebars"]["templates"]["param_list"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { return " required"; },"3":function(depth0,helpers,partials,data) { return " multiple=\"multiple\""; },"5":function(depth0,helpers,partials,data) { return " required "; },"7":function(depth0,helpers,partials,data) { var stack1, buffer = " \n"; },"8":function(depth0,helpers,partials,data) { return " selected=\"\" "; },"10":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n \n\n"; },"11":function(depth0,helpers,partials,data) { return " selected=\"\" "; },"13":function(depth0,helpers,partials,data) { return " (default) "; },"15":function(depth0,helpers,partials,data) { return ""; },"17":function(depth0,helpers,partials,data) { return ""; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "" + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"name","hash":{},"data":data}) : helper))) + "\n\n \n\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.required : depth0), {"name":"if","hash":{},"fn":this.program(15, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"description","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.required : depth0), {"name":"if","hash":{},"fn":this.program(17, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n"; stack1 = ((helper = (helper = helpers.paramType || (depth0 != null ? depth0.paramType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"paramType","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "\n\n"; },"useData":true}); this["Handlebars"]["templates"]["param_readonly_required"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n"; },"3":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0['default'] : depth0), {"name":"if","hash":{},"fn":this.program(4, data),"inverse":this.program(6, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"4":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " " + escapeExpression(((helper = (helper = helpers['default'] || (depth0 != null ? depth0['default'] : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"default","hash":{},"data":data}) : helper))) + "\n"; },"6":function(depth0,helpers,partials,data) { return " (empty)\n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isBody : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.program(3, data),"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n"; stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"description","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n"; stack1 = ((helper = (helper = helpers.paramType || (depth0 != null ? depth0.paramType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"paramType","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "\n\n"; },"useData":true}); this["Handlebars"]["templates"]["param_readonly"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n
    \n"; },"3":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0['default'] : depth0), {"name":"if","hash":{},"fn":this.program(4, data),"inverse":this.program(6, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"4":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " " + escapeExpression(((helper = (helper = helpers['default'] || (depth0 != null ? depth0['default'] : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"default","hash":{},"data":data}) : helper))) + "\n"; },"6":function(depth0,helpers,partials,data) { return " (empty)\n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isBody : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.program(3, data),"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n"; stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"description","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n"; stack1 = ((helper = (helper = helpers.paramType || (depth0 != null ? depth0.paramType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"paramType","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "\n\n"; },"useData":true}); this["Handlebars"]["templates"]["param_required"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isFile : depth0), {"name":"if","hash":{},"fn":this.program(2, data),"inverse":this.program(4, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"2":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n"; },"4":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0['default'] : depth0), {"name":"if","hash":{},"fn":this.program(5, data),"inverse":this.program(7, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"5":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return "
    \n \n
    \n
    \n"; },"7":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n
    \n
    \n
    \n"; },"9":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isFile : depth0), {"name":"if","hash":{},"fn":this.program(10, data),"inverse":this.program(12, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"10":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n"; },"12":function(depth0,helpers,partials,data) { var stack1, helperMissing=helpers.helperMissing, buffer = ""; stack1 = ((helpers.renderTextParam || (depth0 && depth0.renderTextParam) || helperMissing).call(depth0, depth0, {"name":"renderTextParam","hash":{},"fn":this.program(13, data),"inverse":this.noop,"data":data})); if (stack1 != null) { buffer += stack1; } return buffer; },"13":function(depth0,helpers,partials,data) { return ""; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isBody : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.program(9, data),"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n\n "; stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"description","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n\n"; stack1 = ((helper = (helper = helpers.paramType || (depth0 != null ? depth0.paramType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"paramType","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "\n\n"; },"useData":true}); this["Handlebars"]["templates"]["param"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isFile : depth0), {"name":"if","hash":{},"fn":this.program(2, data),"inverse":this.program(4, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"2":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n
    \n"; },"4":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0['default'] : depth0), {"name":"if","hash":{},"fn":this.program(5, data),"inverse":this.program(7, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"5":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return "
    \n \n
    \n
    \n"; },"7":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " \n
    \n
    \n
    \n"; },"9":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isFile : depth0), {"name":"if","hash":{},"fn":this.program(2, data),"inverse":this.program(10, data),"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"10":function(depth0,helpers,partials,data) { var stack1, helperMissing=helpers.helperMissing, buffer = ""; stack1 = ((helpers.renderTextParam || (depth0 && depth0.renderTextParam) || helperMissing).call(depth0, depth0, {"name":"renderTextParam","hash":{},"fn":this.program(11, data),"inverse":this.noop,"data":data})); if (stack1 != null) { buffer += stack1; } return buffer; },"11":function(depth0,helpers,partials,data) { return ""; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n\n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isBody : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.program(9, data),"data":data}); if (stack1 != null) { buffer += stack1; } buffer += "\n\n"; stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"description","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n"; stack1 = ((helper = (helper = helpers.paramType || (depth0 != null ? depth0.paramType : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"paramType","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } return buffer + "\n\n \n\n"; },"useData":true}); this["Handlebars"]["templates"]["parameter_content_type"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.consumes : depth0), {"name":"each","hash":{},"fn":this.program(2, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"2":function(depth0,helpers,partials,data) { var lambda=this.lambda, escapeExpression=this.escapeExpression; return " \n"; },"4":function(depth0,helpers,partials,data) { return " \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n"; },"useData":true}); this["Handlebars"]["templates"]["resource"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { return " : "; },"3":function(depth0,helpers,partials,data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return "
  • \n Raw\n
  • \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, options, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, blockHelperMissing=helpers.blockHelperMissing, buffer = "
    \n

    \n " + escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"name","hash":{},"data":data}) : helper))) + " "; stack1 = ((helper = (helper = helpers.summary || (depth0 != null ? depth0.summary : depth0)) != null ? helper : helperMissing),(options={"name":"summary","hash":{},"fn":this.program(1, data),"inverse":this.noop,"data":data}),(typeof helper === functionType ? helper.call(depth0, options) : helper)); if (!helpers.summary) { stack1 = blockHelperMissing.call(depth0, stack1, options); } if (stack1 != null) { buffer += stack1; } stack1 = ((helper = (helper = helpers.summary || (depth0 != null ? depth0.summary : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"summary","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n

    \n
      \n
    • \n Show/Hide\n
    • \n
    • \n \n List Operations\n \n
    • \n
    • \n \n Expand Operations\n \n
    • \n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.url : depth0), {"name":"if","hash":{},"fn":this.program(3, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "
    \n
    \n\n"; },"useData":true}); this["Handlebars"]["templates"]["response_content_type"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, buffer = ""; stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.produces : depth0), {"name":"each","hash":{},"fn":this.program(2, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer; },"2":function(depth0,helpers,partials,data) { var lambda=this.lambda, escapeExpression=this.escapeExpression; return " \n"; },"4":function(depth0,helpers,partials,data) { return " \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "\n\n"; },"useData":true}); this["Handlebars"]["templates"]["signature"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "
    \n
    "
        + escapeExpression(((helper = (helper = helpers.sampleJSON || (depth0 != null ? depth0.sampleJSON : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"sampleJSON","hash":{},"data":data}) : helper)))
        + "
    \n "; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isParam : depth0), {"name":"if","hash":{},"fn":this.program(2, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "\n
    \n"; },"2":function(depth0,helpers,partials,data) { return ""; },"4":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "
    \n
    "
        + escapeExpression(((helper = (helper = helpers.sampleXML || (depth0 != null ? depth0.sampleXML : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"sampleXML","hash":{},"data":data}) : helper)))
        + "
    \n "; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.isParam : depth0), {"name":"if","hash":{},"fn":this.program(2, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "\n
    \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, buffer = "
    \n\n
    \n\n
    \n
    \n "; stack1 = ((helper = (helper = helpers.signature || (depth0 != null ? depth0.signature : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signature","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n
    \n\n
    \n"; stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.sampleJSON : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.sampleXML : depth0), {"name":"if","hash":{},"fn":this.program(4, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + "
    \n
    \n"; },"useData":true}); this["Handlebars"]["templates"]["status_code"] = Handlebars.template({"1":function(depth0,helpers,partials,data) { var lambda=this.lambda, escapeExpression=this.escapeExpression; return " \n " + escapeExpression(lambda((data && data.key), depth0)) + "\n " + escapeExpression(lambda((depth0 != null ? depth0.description : depth0), depth0)) + "\n " + escapeExpression(lambda((depth0 != null ? depth0.type : depth0), depth0)) + "\n \n"; },"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "" + escapeExpression(((helper = (helper = helpers.code || (depth0 != null ? depth0.code : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"code","hash":{},"data":data}) : helper))) + "\n"; stack1 = ((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"message","hash":{},"data":data}) : helper)); if (stack1 != null) { buffer += stack1; } buffer += "\n\n\n \n \n"; stack1 = helpers.each.call(depth0, (depth0 != null ? depth0.headers : depth0), {"name":"each","hash":{},"fn":this.program(1, data),"inverse":this.noop,"data":data}); if (stack1 != null) { buffer += stack1; } return buffer + " \n
    \n"; },"useData":true}); /** * swagger-client - swagger-client is a javascript client for use with swaggering APIs. * @version v2.1.11 * @link http://swagger.io * @license Apache-2.0 */ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.SwaggerClient = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { qp = obj.url.substring(obj.url.indexOf('?') + 1); var parts = qp.split('&'); if(parts && parts.length > 0) { for(var i = 0; i < parts.length; i++) { var kv = parts[i].split('='); if(kv && kv.length > 0) { if (kv[0] === this.name) { // skip it return false; } } } } } if (obj.url.indexOf('?') > 0) { obj.url = obj.url + '&' + this.name + '=' + this.value; } else { obj.url = obj.url + '?' + this.name + '=' + this.value; } return true; } else if (this.type === 'header') { if(typeof obj.headers[this.name] === 'undefined') { obj.headers[this.name] = this.value; } return true; } }; var CookieAuthorization = module.exports.CookieAuthorization = function (cookie) { this.cookie = cookie; }; CookieAuthorization.prototype.apply = function (obj) { obj.cookieJar = obj.cookieJar || new CookieJar(); obj.cookieJar.setCookie(this.cookie); return true; }; /** * Password Authorization is a basic auth implementation */ var PasswordAuthorization = module.exports.PasswordAuthorization = function (username, password) { if (arguments.length === 3) { helpers.log('PasswordAuthorization: the \'name\' argument has been removed, pass only username and password'); username = arguments[1]; password = arguments[2]; } this.username = username; this.password = password; }; PasswordAuthorization.prototype.apply = function (obj) { if(typeof obj.headers.Authorization === 'undefined') { obj.headers.Authorization = 'Basic ' + btoa(this.username + ':' + this.password); } return true; }; },{"./helpers":4,"btoa":14,"cookiejar":19,"lodash-compat/collection/each":56,"lodash-compat/collection/includes":59,"lodash-compat/lang/isArray":144,"lodash-compat/lang/isObject":148}],3:[function(require,module,exports){ 'use strict'; var _ = { bind: require('lodash-compat/function/bind'), cloneDeep: require('lodash-compat/lang/cloneDeep'), find: require('lodash-compat/collection/find'), forEach: require('lodash-compat/collection/forEach'), indexOf: require('lodash-compat/array/indexOf'), isArray: require('lodash-compat/lang/isArray'), isObject: require('lodash-compat/lang/isObject'), isFunction: require('lodash-compat/lang/isFunction'), isPlainObject: require('lodash-compat/lang/isPlainObject'), isUndefined: require('lodash-compat/lang/isUndefined') }; var auth = require('./auth'); var helpers = require('./helpers'); var Model = require('./types/model'); var Operation = require('./types/operation'); var OperationGroup = require('./types/operationGroup'); var Resolver = require('./resolver'); var SwaggerHttp = require('./http'); var SwaggerSpecConverter = require('./spec-converter'); var Q = require('q'); // We have to keep track of the function/property names to avoid collisions for tag names which are used to allow the // following usage: 'client.{tagName}' var reservedClientTags = [ 'apis', 'authorizationScheme', 'authorizations', 'basePath', 'build', 'buildFrom1_1Spec', 'buildFrom1_2Spec', 'buildFromSpec', 'clientAuthorizations', 'convertInfo', 'debug', 'defaultErrorCallback', 'defaultSuccessCallback', 'enableCookies', 'fail', 'failure', 'finish', 'help', 'idFromOp', 'info', 'initialize', 'isBuilt', 'isValid', 'modelPropertyMacro', 'models', 'modelsArray', 'options', 'parameterMacro', 'parseUri', 'progress', 'resourceCount', 'sampleModels', 'selfReflect', 'setConsolidatedModels', 'spec', 'supportedSubmitMethods', 'swaggerRequestHeaders', 'tagFromLabel', 'title', 'url', 'useJQuery' ]; // We have to keep track of the function/property names to avoid collisions for tag names which are used to allow the // following usage: 'client.apis.{tagName}' var reservedApiTags = [ 'apis', 'asCurl', 'description', 'externalDocs', 'help', 'label', 'name', 'operation', 'operations', 'operationsArray', 'path', 'tag' ]; var supportedOperationMethods = ['delete', 'get', 'head', 'options', 'patch', 'post', 'put']; var SwaggerClient = module.exports = function (url, options) { this.authorizations = null; this.authorizationScheme = null; this.basePath = null; this.debug = false; this.enableCookies = false; this.info = null; this.isBuilt = false; this.isValid = false; this.modelsArray = []; this.resourceCount = 0; this.url = null; this.useJQuery = false; this.swaggerObject = {}; this.deferredClient = Q.defer(); this.clientAuthorizations = new auth.SwaggerAuthorizations(); if (typeof url !== 'undefined') { return this.initialize(url, options); } else { return this; } }; SwaggerClient.prototype.initialize = function (url, options) { this.models = {}; this.sampleModels = {}; if (typeof url === 'string') { this.url = url; } else if (_.isObject(url)) { options = url; this.url = options.url; } options = options || {}; this.clientAuthorizations.add(options.authorizations); this.swaggerRequestHeaders = options.swaggerRequestHeaders || 'application/json;charset=utf-8,*/*'; this.defaultSuccessCallback = options.defaultSuccessCallback || null; this.defaultErrorCallback = options.defaultErrorCallback || null; this.modelPropertyMacro = options.modelPropertyMacro || null; this.parameterMacro = options.parameterMacro || null; this.usePromise = options.usePromise || null; if (typeof options.success === 'function') { this.success = options.success; } if (options.useJQuery) { this.useJQuery = options.useJQuery; } if (options.enableCookies) { this.enableCookies = options.enableCookies; } this.options = options || {}; this.supportedSubmitMethods = options.supportedSubmitMethods || []; this.failure = options.failure || function (err) { throw err; }; this.progress = options.progress || function () {}; this.spec = _.cloneDeep(options.spec); // Clone so we do not alter the provided document if (options.scheme) { this.scheme = options.scheme; } if (this.usePromise || typeof options.success === 'function') { this.ready = true; return this.build(); } }; SwaggerClient.prototype.build = function (mock) { if (this.isBuilt) { return this; } var self = this; this.progress('fetching resource list: ' + this.url + '; Please wait.'); var obj = { useJQuery: this.useJQuery, url: this.url, method: 'get', headers: { accept: this.swaggerRequestHeaders }, on: { error: function (response) { if (self.url.substring(0, 4) !== 'http') { return self.fail('Please specify the protocol for ' + self.url); } else if (response.status === 0) { return self.fail('Can\'t read from server. It may not have the appropriate access-control-origin settings.'); } else if (response.status === 404) { return self.fail('Can\'t read swagger JSON from ' + self.url); } else { return self.fail(response.status + ' : ' + response.statusText + ' ' + self.url); } }, response: function (resp) { var responseObj = resp.obj; if(!responseObj) { return self.fail('failed to parse JSON/YAML response'); } self.swaggerVersion = responseObj.swaggerVersion; self.swaggerObject = responseObj; if (responseObj.swagger && parseInt(responseObj.swagger) === 2) { self.swaggerVersion = responseObj.swagger; new Resolver().resolve(responseObj, self.url, self.buildFromSpec, self); self.isValid = true; } else { var converter = new SwaggerSpecConverter(); self.oldSwaggerObject = self.swaggerObject; converter.setDocumentationLocation(self.url); converter.convert(responseObj, self.clientAuthorizations, self.options, function(spec) { self.swaggerObject = spec; new Resolver().resolve(spec, self.url, self.buildFromSpec, self); self.isValid = true; }); } } } }; if (this.spec) { self.swaggerObject = this.spec; setTimeout(function () { new Resolver().resolve(self.spec, self.buildFromSpec, self); }, 10); } else { this.clientAuthorizations.apply(obj); if (mock) { return obj; } new SwaggerHttp().execute(obj, this.options); } return (this.usePromise) ? this.deferredClient.promise : this; }; SwaggerClient.prototype.buildFromSpec = function (response) { if (this.isBuilt) { return this; } this.apis = {}; this.apisArray = []; this.basePath = response.basePath || ''; this.consumes = response.consumes; this.host = response.host || ''; this.info = response.info || {}; this.produces = response.produces; this.schemes = response.schemes || []; this.securityDefinitions = response.securityDefinitions; this.title = response.title || ''; if (response.externalDocs) { this.externalDocs = response.externalDocs; } // legacy support this.authSchemes = response.securityDefinitions; var definedTags = {}; var k; if (Array.isArray(response.tags)) { definedTags = {}; for (k = 0; k < response.tags.length; k++) { var t = response.tags[k]; definedTags[t.name] = t; } } var location; if (typeof this.url === 'string') { location = this.parseUri(this.url); if (typeof this.scheme === 'undefined' && typeof this.schemes === 'undefined' || this.schemes.length === 0) { this.scheme = location.scheme || 'http'; } else if (typeof this.scheme === 'undefined') { this.scheme = this.schemes[0] || location.scheme; } if (typeof this.host === 'undefined' || this.host === '') { this.host = location.host; if (location.port) { this.host = this.host + ':' + location.port; } } } else { if (typeof this.schemes === 'undefined' || this.schemes.length === 0) { this.scheme = 'http'; } else if (typeof this.scheme === 'undefined') { this.scheme = this.schemes[0]; } } this.definitions = response.definitions; var key; for (key in this.definitions) { var model = new Model(key, this.definitions[key], this.models, this.modelPropertyMacro); if (model) { this.models[key] = model; } } // get paths, create functions for each operationId var self = this; // Bind help to 'client.apis' self.apis.help = _.bind(self.help, self); _.forEach(response.paths, function (pathObj, path) { // Only process a path if it's an object if (!_.isPlainObject(pathObj)) { return; } _.forEach(supportedOperationMethods, function (method) { var operation = pathObj[method]; if (_.isUndefined(operation)) { // Operation does not exist return; } else if (!_.isPlainObject(operation)) { // Operation exists but it is not an Operation Object. Since this is invalid, log it. helpers.log('The \'' + method + '\' operation for \'' + path + '\' path is not an Operation Object'); return; } var tags = operation.tags; if (_.isUndefined(tags) || !_.isArray(tags) || tags.length === 0) { tags = operation.tags = [ 'default' ]; } var operationId = self.idFromOp(path, method, operation); var operationObject = new Operation(self, operation.scheme, operationId, method, path, operation, self.definitions, self.models, self.clientAuthorizations); // bind self operation's execute command to the api _.forEach(tags, function (tag) { var clientProperty = _.indexOf(reservedClientTags, tag) > -1 ? '_' + tag : tag; var apiProperty = _.indexOf(reservedApiTags, tag) > -1 ? '_' + tag : tag; var operationGroup = self[clientProperty]; if (clientProperty !== tag) { helpers.log('The \'' + tag + '\' tag conflicts with a SwaggerClient function/property name. Use \'client.' + clientProperty + '\' or \'client.apis.' + tag + '\' instead of \'client.' + tag + '\'.'); } if (apiProperty !== tag) { helpers.log('The \'' + tag + '\' tag conflicts with a SwaggerClient operation function/property name. Use ' + '\'client.apis.' + apiProperty + '\' instead of \'client.apis.' + tag + '\'.'); } if (_.indexOf(reservedApiTags, operationId) > -1) { helpers.log('The \'' + operationId + '\' operationId conflicts with a SwaggerClient operation ' + 'function/property name. Use \'client.apis.' + apiProperty + '._' + operationId + '\' instead of \'client.apis.' + apiProperty + '.' + operationId + '\'.'); operationId = '_' + operationId; operationObject.nickname = operationId; // So 'client.apis.[tag].operationId.help() works properly } if (_.isUndefined(operationGroup)) { operationGroup = self[clientProperty] = self.apis[apiProperty] = {}; operationGroup.operations = {}; operationGroup.label = apiProperty; operationGroup.apis = {}; var tagDef = definedTags[tag]; if (!_.isUndefined(tagDef)) { operationGroup.description = tagDef.description; operationGroup.externalDocs = tagDef.externalDocs; } self[clientProperty].help = _.bind(self.help, operationGroup); self.apisArray.push(new OperationGroup(tag, operationGroup.description, operationGroup.externalDocs, operationObject)); } operationId = self.makeUniqueOperationId(operationId, self.apis[apiProperty]); // Bind tag help if (!_.isFunction(operationGroup.help)) { operationGroup.help = _.bind(self.help, operationGroup); } // bind to the apis object self.apis[apiProperty][operationId] = operationGroup[operationId] = _.bind(operationObject.execute, operationObject); self.apis[apiProperty][operationId].help = operationGroup[operationId].help = _.bind(operationObject.help, operationObject); self.apis[apiProperty][operationId].asCurl = operationGroup[operationId].asCurl = _.bind(operationObject.asCurl, operationObject); operationGroup.apis[operationId] = operationGroup.operations[operationId] = operationObject; // legacy UI feature var api = _.find(self.apisArray, function (api) { return api.tag === tag; }); if (api) { api.operationsArray.push(operationObject); } }); }); }); this.isBuilt = true; if (this.usePromise) { this.isValid = true; this.isBuilt = true; this.deferredClient.resolve(this); return this.deferredClient.promise; } if (this.success) { this.success(); } return this; }; SwaggerClient.prototype.makeUniqueOperationId = function(operationId, api) { var count = 0; var name = operationId; // make unique across this operation group while(true) { var matched = false; _.forEach(api.operations, function (operation) { if(operation.nickname === name) { matched = true; } }); if(!matched) { return name; } name = operationId + '_' + count; count ++; } return operationId; }; SwaggerClient.prototype.parseUri = function (uri) { var urlParseRE = /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/; var parts = urlParseRE.exec(uri); return { scheme: parts[4] ? parts[4].replace(':','') : undefined, host: parts[11], port: parts[12], path: parts[15] }; }; SwaggerClient.prototype.help = function (dontPrint) { var output = ''; if (this instanceof SwaggerClient) { _.forEach(this.apis, function (api, name) { if (_.isPlainObject(api)) { output += 'operations for the \'' + name + '\' tag\n'; _.forEach(api.operations, function (operation, name) { output += ' * ' + name + ': ' + operation.summary + '\n'; }); } }); } else if (this instanceof OperationGroup || _.isPlainObject(this)) { output += 'operations for the \'' + this.label + '\' tag\n'; _.forEach(this.apis, function (operation, name) { output += ' * ' + name + ': ' + operation.summary + '\n'; }); } if (dontPrint) { return output; } else { helpers.log(output); return output; } }; SwaggerClient.prototype.tagFromLabel = function (label) { return label; }; SwaggerClient.prototype.idFromOp = function (path, httpMethod, op) { if(!op || !op.operationId) { op = op || {}; op.operationId = httpMethod + '_' + path; } var opId = op.operationId.replace(/[\s!@#$%^&*()_+=\[{\]};:<>|.\/?,\\'""-]/g, '_') || (path.substring(1) + '_' + httpMethod); opId = opId.replace(/((_){2,})/g, '_'); opId = opId.replace(/^(_)*/g, ''); opId = opId.replace(/([_])*$/g, ''); return opId; }; SwaggerClient.prototype.setHost = function (host) { this.host = host; if(this.apis) { _.forEach(this.apis, function(api) { if(api.operations) { _.forEach(api.operations, function(operation) { operation.host = host; }); } }); } }; SwaggerClient.prototype.setBasePath = function (basePath) { this.basePath = basePath; if(this.apis) { _.forEach(this.apis, function(api) { if(api.operations) { _.forEach(api.operations, function(operation) { operation.basePath = basePath; }); } }); } }; SwaggerClient.prototype.fail = function (message) { if (this.usePromise) { this.deferredClient.reject(message); return this.deferredClient.promise; } else { if (this.failure) { this.failure(message); } else { this.failure(message); } } }; },{"./auth":2,"./helpers":4,"./http":5,"./resolver":6,"./spec-converter":8,"./types/model":9,"./types/operation":10,"./types/operationGroup":11,"lodash-compat/array/indexOf":53,"lodash-compat/collection/find":57,"lodash-compat/collection/forEach":58,"lodash-compat/function/bind":62,"lodash-compat/lang/cloneDeep":142,"lodash-compat/lang/isArray":144,"lodash-compat/lang/isFunction":146,"lodash-compat/lang/isObject":148,"lodash-compat/lang/isPlainObject":149,"lodash-compat/lang/isUndefined":152,"q":161}],4:[function(require,module,exports){ (function (process){ 'use strict'; var _ = { isPlainObject: require('lodash-compat/lang/isPlainObject'), indexOf: require('lodash-compat/array/indexOf') }; module.exports.__bind = function (fn, me) { return function(){ return fn.apply(me, arguments); }; }; var log = module.exports.log = function() { // Only log if available and we're not testing if (console && process.env.NODE_ENV !== 'test') { console.log(Array.prototype.slice.call(arguments)[0]); } }; module.exports.fail = function (message) { log(message); }; var optionHtml = module.exports.optionHtml = function (label, value) { return '' + label + ':' + value + ''; }; var resolveSchema = module.exports.resolveSchema = function (schema) { if (_.isPlainObject(schema.schema)) { schema = resolveSchema(schema.schema); } return schema; }; var simpleRef = module.exports.simpleRef = function (name) { if (typeof name === 'undefined') { return null; } if (name.indexOf('#/definitions/') === 0) { return name.substring('#/definitions/'.length); } else { return name; } }; }).call(this,require('_process')) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgXyA9IHtcbiAgaXNQbGFpbk9iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzUGxhaW5PYmplY3QnKSxcbiAgaW5kZXhPZjogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mJylcbn07XG5cbm1vZHVsZS5leHBvcnRzLl9fYmluZCA9IGZ1bmN0aW9uIChmbiwgbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIGZuLmFwcGx5KG1lLCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxudmFyIGxvZyA9IG1vZHVsZS5leHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkge1xuICAvLyBPbmx5IGxvZyBpZiBhdmFpbGFibGUgYW5kIHdlJ3JlIG5vdCB0ZXN0aW5nXG4gIGlmIChjb25zb2xlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcpIHtcbiAgICBjb25zb2xlLmxvZyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpWzBdKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZmFpbCA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gIGxvZyhtZXNzYWdlKTtcbn07XG5cbnZhciBvcHRpb25IdG1sID0gbW9kdWxlLmV4cG9ydHMub3B0aW9uSHRtbCA9IGZ1bmN0aW9uIChsYWJlbCwgdmFsdWUpIHtcbiAgcmV0dXJuICc8dHI+PHRkIGNsYXNzPVwib3B0aW9uTmFtZVwiPicgKyBsYWJlbCArICc6PC90ZD48dGQ+JyArIHZhbHVlICsgJzwvdGQ+PC90cj4nO1xufTtcblxudmFyIHJlc29sdmVTY2hlbWEgPSBtb2R1bGUuZXhwb3J0cy5yZXNvbHZlU2NoZW1hID0gZnVuY3Rpb24gKHNjaGVtYSkge1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KHNjaGVtYS5zY2hlbWEpKSB7XG4gICAgc2NoZW1hID0gcmVzb2x2ZVNjaGVtYShzY2hlbWEuc2NoZW1hKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG52YXIgc2ltcGxlUmVmID0gbW9kdWxlLmV4cG9ydHMuc2ltcGxlUmVmID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKG5hbWUuaW5kZXhPZignIy9kZWZpbml0aW9ucy8nKSA9PT0gMCkge1xuICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygnIy9kZWZpbml0aW9ucy8nLmxlbmd0aCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbn07XG5cbiJdfQ== },{"_process":13,"lodash-compat/array/indexOf":53,"lodash-compat/lang/isPlainObject":149}],5:[function(require,module,exports){ 'use strict'; var helpers = require('./helpers'); var request = require('superagent'); var jsyaml = require('js-yaml'); var _ = { isObject: require('lodash-compat/lang/isObject') }; /* * JQueryHttpClient is a light-weight, node or browser HTTP client */ var JQueryHttpClient = function () { this.type = 'JQueryHttpClient'; }; /* * SuperagentHttpClient is a light-weight, node or browser HTTP client */ var SuperagentHttpClient = function () { this.type = 'SuperagentHttpClient'; }; /** * SwaggerHttp is a wrapper for executing requests */ var SwaggerHttp = module.exports = function () {}; SwaggerHttp.prototype.execute = function (obj, opts) { var client; if(opts && opts.client) { client = opts.client; } else { client = new SuperagentHttpClient(opts); } client.opts = opts || {}; // legacy support var hasJQuery = false; if(typeof window !== 'undefined') { if(typeof window.jQuery !== 'undefined') { hasJQuery = true; } } // OPTIONS support if(obj.method.toLowerCase() === 'options' && client.type === 'SuperagentHttpClient') { log('forcing jQuery as OPTIONS are not supported by SuperAgent'); obj.useJQuery = true; } if(this.isInternetExplorer() && (obj.useJQuery === false || !hasJQuery )) { throw new Error('Unsupported configuration! JQuery is required but not available'); } if ((obj && obj.useJQuery === true) || this.isInternetExplorer() && hasJQuery) { client = new JQueryHttpClient(opts); } var success = obj.on.response; var requestInterceptor = function(data) { if(opts && opts.requestInterceptor) { data = opts.requestInterceptor.apply(data); } return data; }; var responseInterceptor = function(data) { if(opts && opts.responseInterceptor) { data = opts.responseInterceptor.apply(data); } return success(data); }; obj.on.response = function(data) { responseInterceptor(data); }; if (_.isObject(obj) && _.isObject(obj.body)) { // special processing for file uploads via jquery if (obj.body.type && obj.body.type === 'formData'){ obj.contentType = false; obj.processData = false; delete obj.headers['Content-Type']; } else { obj.body = JSON.stringify(obj.body); } } client.execute(requestInterceptor(obj)); return (obj.deferred) ? obj.deferred.promise : obj; }; SwaggerHttp.prototype.isInternetExplorer = function () { var detectedIE = false; if (typeof navigator !== 'undefined' && navigator.userAgent) { var nav = navigator.userAgent.toLowerCase(); if (nav.indexOf('msie') !== -1) { var version = parseInt(nav.split('msie')[1]); if (version <= 8) { detectedIE = true; } } } return detectedIE; }; JQueryHttpClient.prototype.execute = function (obj) { var jq = this.jQuery || (typeof window !== 'undefined' && window.jQuery); var cb = obj.on; var request = obj; if(typeof jq === 'undefined' || jq === false) { throw new Error('Unsupported configuration! JQuery is required but not available'); } obj.type = obj.method; obj.cache = false; delete obj.useJQuery; /* obj.beforeSend = function (xhr) { var key, results; if (obj.headers) { results = []; for (key in obj.headers) { if (key.toLowerCase() === 'content-type') { results.push(obj.contentType = obj.headers[key]); } else if (key.toLowerCase() === 'accept') { results.push(obj.accepts = obj.headers[key]); } else { results.push(xhr.setRequestHeader(key, obj.headers[key])); } } return results; } };*/ obj.data = obj.body; delete obj.body; obj.complete = function (response) { var headers = {}; var headerArray = response.getAllResponseHeaders().split('\n'); for (var i = 0; i < headerArray.length; i++) { var toSplit = headerArray[i].trim(); if (toSplit.length === 0) { continue; } var separator = toSplit.indexOf(':'); if (separator === -1) { // Name but no value in the header headers[toSplit] = null; continue; } var name = toSplit.substring(0, separator).trim(); var value = toSplit.substring(separator + 1).trim(); headers[name] = value; } var out = { url: request.url, method: request.method, status: response.status, statusText: response.statusText, data: response.responseText, headers: headers }; try { var possibleObj = response.responseJSON || jsyaml.safeLoad(response.responseText); out.obj = (typeof possibleObj === 'string') ? {} : possibleObj; } catch (ex) { // do not set out.obj helpers.log('unable to parse JSON/YAML content'); } // I can throw, or parse null? out.obj = out.obj || null; if (response.status >= 200 && response.status < 300) { cb.response(out); } else if (response.status === 0 || (response.status >= 400 && response.status < 599)) { cb.error(out); } else { return cb.response(out); } }; jq.support.cors = true; return jq.ajax(obj); }; SuperagentHttpClient.prototype.execute = function (obj) { var method = obj.method.toLowerCase(); if (method === 'delete') { method = 'del'; } var headers = obj.headers || {}; var r = request[method](obj.url); var name; for (name in headers) { r.set(name, headers[name]); } if (obj.enableCookies) { r.withCredentials(); } if (obj.body) { r.send(obj.body); } if(typeof r.buffer === 'function') { r.buffer(); // force superagent to populate res.text with the raw response data } r.end(function (err, res) { res = res || { status: 0, headers: {error: 'no response from server'} }; var response = { url: obj.url, method: obj.method, headers: res.headers }; var cb; if (!err && res.error) { err = res.error; } if (err && obj.on && obj.on.error) { response.errObj = err; response.status = res ? res.status : 500; response.statusText = res ? res.text : err.message; if(res.headers && res.headers['content-type']) { if(res.headers['content-type'].indexOf('application/json') >= 0) { try { response.obj = JSON.parse(response.statusText); } catch (e) { response.obj = null; } } } cb = obj.on.error; } else if (res && obj.on && obj.on.response) { var possibleObj; // Already parsed by by superagent? if(res.body && Object.keys(res.body).length > 0) { possibleObj = res.body; } else { try { possibleObj = jsyaml.safeLoad(res.text); // can parse into a string... which we don't need running around in the system possibleObj = (typeof possibleObj === 'string') ? null : possibleObj; } catch(e) { helpers.log('cannot parse JSON/YAML content'); } } // null means we can't parse into object response.obj = (typeof possibleObj === 'object') ? possibleObj : null; response.status = res.status; response.statusText = res.text; cb = obj.on.response; } response.data = response.statusText; if (cb) { cb(response); } }); }; },{"./helpers":4,"js-yaml":20,"lodash-compat/lang/isObject":148,"superagent":162}],6:[function(require,module,exports){ 'use strict'; var SwaggerHttp = require('./http'); var _ = { isObject: require('lodash-compat/lang/isObject'), cloneDeep: require('lodash-compat/lang/cloneDeep'), isArray: require('lodash-compat/lang/isArray') }; /** * Resolves a spec's remote references */ var Resolver = module.exports = function () {}; Resolver.prototype.processAllOf = function(root, name, definition, resolutionTable, unresolvedRefs, spec) { var i, location, property; definition['x-resolved-from'] = [ '#/definitions/' + name ]; var allOf = definition.allOf; // the refs go first allOf.sort(function(a, b) { if(a.$ref && b.$ref) { return 0; } else if(a.$ref) { return -1; } else { return 1; } }); for (i = 0; i < allOf.length; i++) { property = allOf[i]; location = '/definitions/' + name + '/allOf'; this.resolveInline(root, spec, property, resolutionTable, unresolvedRefs, location); } }; Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) { this.spec = spec; var root = arg1, callback = arg2, scope = arg3, opts = {}, location, i; if(typeof arg1 === 'function') { root = null; callback = arg1; scope = arg2; } var _root = root; this.scope = (scope || this); this.iteration = this.iteration || 0; if(this.scope.options && this.scope.options.requestInterceptor){ opts.requestInterceptor = this.scope.options.requestInterceptor; } if(this.scope.options && this.scope.options.responseInterceptor){ opts.responseInterceptor = this.scope.options.responseInterceptor; } var name, path, property, propertyName; var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {}; var resolutionTable = []; // store objects for dereferencing spec.definitions = spec.definitions || {}; // definitions for (name in spec.definitions) { var definition = spec.definitions[name]; for (propertyName in definition.properties) { property = definition.properties[propertyName]; if(_.isArray(property.allOf)) { this.processAllOf(root, name, property, resolutionTable, unresolvedRefs, spec); } else { this.resolveTo(root, property, resolutionTable, '/definitions'); } } if(definition.allOf) { this.processAllOf(root, name, definition, resolutionTable, unresolvedRefs, spec); } } // operations for (name in spec.paths) { var method, operation, responseCode; path = spec.paths[name]; for (method in path) { // operation reference if(method === '$ref') { // location = path[method]; location = '/paths' + name; this.resolveInline(root, spec, path, resolutionTable, unresolvedRefs, location); } else { operation = path[method]; var sharedParameters = path.parameters || []; var parameters = operation.parameters || []; for (i in sharedParameters) { var parameter = sharedParameters[i]; parameters.unshift(parameter); } if(method !== 'parameters' && _.isObject(operation)) { operation.parameters = operation.parameters || parameters; } for (i in parameters) { var parameter = parameters[i]; location = '/paths' + name + '/' + method + '/parameters'; if (parameter.in === 'body' && parameter.schema) { if(_.isArray(parameter.schema.allOf)) { // move to a definition var modelName = 'inline_model'; var name = modelName; var done = false; var counter = 0; while(!done) { if(typeof spec.definitions[name] === 'undefined') { done = true; break; } name = modelName + '_' + counter; counter ++; } spec.definitions[name] = { allOf: parameter.schema.allOf }; delete parameter.schema.allOf; parameter.schema.$ref = '#/definitions/' + name; this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec); } else { this.resolveTo(root, parameter.schema, resolutionTable, location); } } if (parameter.$ref) { // parameter reference this.resolveInline(root, spec, parameter, resolutionTable, unresolvedRefs, parameter.$ref); } } for (responseCode in operation.responses) { var response = operation.responses[responseCode]; location = '/paths' + name + '/' + method + '/responses/' + responseCode; if(_.isObject(response)) { if(response.$ref) { // response reference this.resolveInline(root, spec, response, resolutionTable, unresolvedRefs, location); } if (response.schema) { var responseObj = response; if(_.isArray(responseObj.schema.allOf)) { // move to a definition var modelName = 'inline_model'; var name = modelName; var done = false; var counter = 0; while(!done) { if(typeof spec.definitions[name] === 'undefined') { done = true; break; } name = modelName + '_' + counter; counter ++; } spec.definitions[name] = { allOf: responseObj.schema.allOf }; delete responseObj.schema.allOf; delete responseObj.schema.type; responseObj.schema.$ref = '#/definitions/' + name; this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec); } else { this.resolveTo(root, response.schema, resolutionTable, location); } } } } } } // clear them out to avoid multiple resolutions path.parameters = []; } var expectedCalls = 0, toResolve = []; // if the root is same as obj[i].root we can resolve locally var all = resolutionTable; var parts; for(i = 0; i < all.length; i++) { var a = all[i]; if(root === a.root) { if(a.resolveAs === 'ref') { // resolve any path walking var joined = ((a.root || '') + '/' + a.key).split('/'); var normalized = []; var url = ''; var k; if(a.key.indexOf('../') >= 0) { for(var j = 0; j < joined.length; j++) { if(joined[j] === '..') { normalized = normalized.slice(0, normalized.length-1); } else { normalized.push(joined[j]); } } for(k = 0; k < normalized.length; k ++) { if(k > 0) { url += '/'; } url += normalized[k]; } // we now have to remote resolve this because the path has changed a.root = url; toResolve.push(a); } else { parts = a.key.split('#'); if(parts.length === 2) { if(parts[0].indexOf('http://') === 0 || parts[0].indexOf('https://') === 0) { a.root = parts[0]; } location = parts[1].split('/'); var r; var s = spec; for(k = 0; k < location.length; k++) { var part = location[k]; if(part !== '') { s = s[part]; if(typeof s !== 'undefined') { r = s; } else { r = null; break; } } } if(r === null) { // must resolve this too toResolve.push(a); } } } } else { if (a.resolveAs === 'inline') { if(a.key && a.key.indexOf('#') === -1 && a.key.charAt(0) !== '/') { // handle relative schema parts = a.root.split('/'); location = ''; for(i = 0; i < parts.length - 1; i++) { location += parts[i] + '/'; } location += a.key; a.root = location; a.location = ''; } toResolve.push(a); } } } else { toResolve.push(a); } } expectedCalls = toResolve.length; // resolve anything that is local for(var ii = 0; ii < toResolve.length; ii++) { (function(item, spec, self) { if(item.root === null || item.root === root) { // local resolve self.resolveItem(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, item); processedCalls += 1; if(processedCalls === expectedCalls) { self.finish(spec, root, resolutionTable, resolvedRefs, unresolvedRefs, callback, true); } } else { var obj = { useJQuery: false, // TODO url: item.root, method: 'get', headers: { accept: self.scope.swaggerRequestHeaders || 'application/json' }, on: { error: function (error) { processedCalls += 1; unresolvedRefs[item.key] = { root: item.root, location: item.location }; if (processedCalls === expectedCalls) { self.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } }, // jshint ignore:line response: function (response) { var swagger = response.obj; self.resolveItem(swagger, item.root, resolutionTable, resolvedRefs, unresolvedRefs, item); processedCalls += 1; if (processedCalls === expectedCalls) { self.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } } } // jshint ignore:line }; if (scope && scope.clientAuthorizations) { scope.clientAuthorizations.apply(obj); } new SwaggerHttp().execute(obj, opts); } }(toResolve[ii], spec, this)); } if (Object.keys(toResolve).length === 0) { this.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } }; Resolver.prototype.resolveItem = function(spec, root, resolutionTable, resolvedRefs, unresolvedRefs, item) { var path = item.location; var location = spec, parts = path.split('/'); if(path !== '') { for (var j = 0; j < parts.length; j++) { var segment = parts[j]; if (segment.indexOf('~1') !== -1) { segment = parts[j].replace(/~0/g, '~').replace(/~1/g, '/'); if (segment.charAt(0) !== '/') { segment = '/' + segment; } } if (typeof location === 'undefined' || location === null) { break; } if (segment === '' && j === (parts.length - 1) && parts.length > 1) { location = null; break; } if (segment.length > 0) { location = location[segment]; } } } var resolved = item.key; parts = item.key.split('/'); var resolvedName = parts[parts.length-1]; if(resolvedName.indexOf('#') >= 0) { resolvedName = resolvedName.split('#')[1]; } if (location !== null && typeof location !== 'undefined') { resolvedRefs[resolved] = { name: resolvedName, obj: location, key: item.key, root: item.root }; } else { unresolvedRefs[resolved] = { root: item.root, location: item.location }; } }; Resolver.prototype.finish = function (spec, root, resolutionTable, resolvedRefs, unresolvedRefs, callback, localResolve) { // walk resolution table and replace with resolved refs var ref; for (ref in resolutionTable) { var item = resolutionTable[ref]; var key = item.key; var resolvedTo = resolvedRefs[key]; if (resolvedTo) { spec.definitions = spec.definitions || {}; if (item.resolveAs === 'ref') { if (localResolve !== true) { // don't retain root for local definitions for (key in resolvedTo.obj) { var abs = this.retainRoot(resolvedTo.obj[key], item.root); } } spec.definitions[resolvedTo.name] = resolvedTo.obj; item.obj.$ref = '#/definitions/' + resolvedTo.name; } else if (item.resolveAs === 'inline') { var targetObj = item.obj; targetObj['x-resolved-from'] = [ item.key ]; delete targetObj.$ref; for (key in resolvedTo.obj) { var abs = resolvedTo.obj[key]; if (localResolve !== true) { // don't retain root for local definitions abs = this.retainRoot(resolvedTo.obj[key], item.root); } targetObj[key] = abs; } } } } var existingUnresolved = this.countUnresolvedRefs(spec); if(existingUnresolved === 0 || this.iteration > 5) { this.resolveAllOf(spec.definitions); callback.call(this.scope, spec, unresolvedRefs); } else { this.iteration += 1; this.resolve(spec, root, callback, this.scope); } }; Resolver.prototype.countUnresolvedRefs = function(spec) { var i; var refs = this.getRefs(spec); var keys = []; var unresolvedKeys = []; for(i in refs) { if(i.indexOf('#') === 0) { keys.push(i.substring(1)); } else { unresolvedKeys.push(i); } } // verify possible keys for (i = 0; i < keys.length; i++) { var part = keys[i]; var parts = part.split('/'); var obj = spec; for (var k = 0; k < parts.length; k++) { var key = parts[k]; if(key !== '') { obj = obj[key]; if(typeof obj === 'undefined') { unresolvedKeys.push(part); break; } } } } return unresolvedKeys.length; }; Resolver.prototype.getRefs = function(spec, obj) { obj = obj || spec; var output = {}; for(var key in obj) { if (!obj.hasOwnProperty(key)) { continue; } var item = obj[key]; if(key === '$ref' && typeof item === 'string') { output[item] = null; } else if(_.isObject(item)) { var o = this.getRefs(item); for(var k in o) { output[k] = null; } } } return output; }; Resolver.prototype.retainRoot = function(obj, root) { // walk object and look for relative $refs for(var key in obj) { var item = obj[key]; if(key === '$ref' && typeof item === 'string') { // stop and inspect if(item.indexOf('http://') !== 0 && item.indexOf('https://') !== 0) { // TODO: check if root ends in '/'. If not, AND item has no protocol, make relative var appendHash = true; var oldRoot = root; if(root) { var lastChar = root.slice(-1); if(lastChar !== '/' && (item.indexOf('#') !== 0 && item.indexOf('http://') !== 0 && item.indexOf('https://'))) { console.log('working with ' + item); appendHash = false; var parts = root.split('\/'); parts = parts.splice(0, parts.length - 1); root = ''; for(var i = 0; i < parts.length; i++) { root += parts[i] + '/'; } } } if(item.indexOf('#') !== 0 && appendHash) { item = '#' + item; } item = (root || '') + item; obj[key] = item; } } else if(_.isObject(item)) { this.retainRoot(item, root); } } return obj; }; /** * immediately in-lines local refs, queues remote refs * for inline resolution */ Resolver.prototype.resolveInline = function (root, spec, property, resolutionTable, unresolvedRefs, location) { var key = property.$ref, ref = property.$ref, i, p, p2, rs; var rootTrimmed = false; if (ref) { if(ref.indexOf('../') === 0) { // reset root p = ref.split('../'); p2 = root.split('/'); ref = ''; for(i = 0; i < p.length; i++) { if(p[i] === '') { p2 = p2.slice(0, p2.length-1); } else { ref += p[i]; } } root = ''; for(i = 0; i < p2.length - 1; i++) { if(i > 0) { root += '/'; } root += p2[i]; } rootTrimmed = true; } if(ref.indexOf('#') >= 0) { if(ref.indexOf('/') === 0) { rs = ref.split('#'); p = root.split('//'); p2 = p[1].split('/'); root = p[0] + '//' + p2[0] + rs[0]; location = rs[1]; } else { rs = ref.split('#'); if(rs[0] !== '') { p2 = root.split('/'); p2 = p2.slice(0, p2.length - 1); if(!rootTrimmed) { root = ''; for (var k = 0; k < p2.length; k++) { if(k > 0) { root += '/'; } root += p2[k]; } } root += '/' + ref.split('#')[0]; } location = rs[1]; } } if (ref.indexOf('http') === 0) { if(ref.indexOf('#') >= 0) { root = ref.split('#')[0]; location = ref.split('#')[1]; } else { root = ref; location = ''; } resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } else if (ref.indexOf('#') === 0) { location = ref.split('#')[1]; resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } else { resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } } else if (property.type === 'array') { this.resolveTo(root, property.items, resolutionTable, location); } }; Resolver.prototype.resolveTo = function (root, property, resolutionTable, location) { var sp, i; var ref = property.$ref; var lroot = root; if ((typeof ref !== 'undefined') && (ref !== null)) { if(ref.indexOf('#') >= 0) { var parts = ref.split('#'); // #/definitions/foo // foo.json#/bar if(parts[0] && ref.indexOf('/') === 0) { } else if(parts[0] && parts[0].indexOf('http') === 0) { lroot = parts[0]; ref = parts[1]; } else if(parts[0] && parts[0].length > 0) { // relative file sp = root.split('/'); lroot = ''; for(i = 0; i < sp.length - 1; i++) { lroot += sp[i] + '/'; } lroot += parts[0]; } else { } location = parts[1]; } else if (ref.indexOf('http://') === 0 || ref.indexOf('https://') === 0) { lroot = ref; location = ''; } else { // relative file sp = root.split('/'); lroot = ''; for(i = 0; i < sp.length - 1; i++) { lroot += sp[i] + '/'; } lroot += ref; location = ''; } resolutionTable.push({ obj: property, resolveAs: 'ref', root: lroot, key: ref, location: location }); } else if (property.type === 'array') { var items = property.items; this.resolveTo(root, items, resolutionTable, location); } else { if(property && property.properties) { var name = this.uniqueName('inline_model'); this.spec.definitions[name] = _.cloneDeep(property); property['$ref'] = '#/definitions/' + name; delete property.type; delete property.properties; } } }; Resolver.prototype.uniqueName = function(base) { var name = base; var count = 0; while(true) { if(!_.isObject(this.spec.definitions[name])) { return name; } name = base + '_' + count; count++; } }; Resolver.prototype.resolveAllOf = function(spec, obj, depth) { depth = depth || 0; obj = obj || spec; var name; for(var key in obj) { if (!obj.hasOwnProperty(key)) { continue; } var item = obj[key]; if(item === null) { throw new TypeError('Swagger 2.0 does not support null types (' + obj + '). See https://github.com/swagger-api/swagger-spec/issues/229.'); } if(typeof item === 'object') { this.resolveAllOf(spec, item, depth + 1); } if(item && typeof item.allOf !== 'undefined') { var allOf = item.allOf; if(_.isArray(allOf)) { var output = _.cloneDeep(item); delete output.allOf; output['x-composed'] = true; if (typeof item['x-resolved-from'] !== 'undefined') { output['x-resolved-from'] = item['x-resolved-from']; } for(var i = 0; i < allOf.length; i++) { var component = allOf[i]; var source = 'self'; if(typeof component['x-resolved-from'] !== 'undefined') { source = component['x-resolved-from'][0]; } for(var part in component) { if(!output.hasOwnProperty(part)) { output[part] = _.cloneDeep(component[part]); if(part === 'properties') { for(name in output[part]) { output[part][name]['x-resolved-from'] = source; } } } else { if(part === 'properties') { var properties = component[part]; for(name in properties) { output.properties[name] = _.cloneDeep(properties[name]); var resolvedFrom = properties[name]['x-resolved-from']; if (typeof resolvedFrom === 'undefined' || resolvedFrom === 'self') { resolvedFrom = source; } output.properties[name]['x-resolved-from'] = resolvedFrom; } } else if(part === 'required') { // merge & dedup the required array var a = output.required.concat(component[part]); for(var k = 0; k < a.length; ++k) { for(var j = k + 1; j < a.length; ++j) { if(a[k] === a[j]) { a.splice(j--, 1); } } } output.required = a; } else if(part === 'x-resolved-from') { output['x-resolved-from'].push(source); } else { // TODO: need to merge this property // console.log('what to do with ' + part) } } } } obj[key] = output; } } if(_.isObject(item)) { this.resolveAllOf(spec, item, depth + 1); } } }; },{"./http":5,"lodash-compat/lang/cloneDeep":142,"lodash-compat/lang/isArray":144,"lodash-compat/lang/isObject":148}],7:[function(require,module,exports){ 'use strict'; var Helpers = require('./helpers'); var _ = { isPlainObject: require('lodash-compat/lang/isPlainObject'), isUndefined: require('lodash-compat/lang/isUndefined'), isArray: require('lodash-compat/lang/isArray'), isObject: require('lodash-compat/lang/isObject'), isEmpty: require('lodash-compat/lang/isEmpty'), map: require('lodash-compat/collection/map'), indexOf: require('lodash-compat/array/indexOf'), cloneDeep: require('lodash-compat/lang/cloneDeep'), keys: require('lodash-compat/object/keys'), forEach: require('lodash-compat/collection/forEach') }; module.exports.optionHtml = optionHtml; module.exports.typeFromJsonSchema = typeFromJsonSchema; module.exports.getStringSignature = getStringSignature; module.exports.schemaToHTML = schemaToHTML; module.exports.schemaToJSON = schemaToJSON; function optionHtml(label, value) { return '' + label + ':' + value + ''; } function typeFromJsonSchema(type, format) { var str; if (type === 'integer' && format === 'int32') { str = 'integer'; } else if (type === 'integer' && format === 'int64') { str = 'long'; } else if (type === 'integer' && typeof format === 'undefined') { str = 'long'; } else if (type === 'string' && format === 'date-time') { str = 'date-time'; } else if (type === 'string' && format === 'date') { str = 'date'; } else if (type === 'number' && format === 'float') { str = 'float'; } else if (type === 'number' && format === 'double') { str = 'double'; } else if (type === 'number' && typeof format === 'undefined') { str = 'double'; } else if (type === 'boolean') { str = 'boolean'; } else if (type === 'string') { str = 'string'; } return str; } function getStringSignature(obj, baseComponent) { var str = ''; if (typeof obj.$ref !== 'undefined') { str += Helpers.simpleRef(obj.$ref); } else if (typeof obj.type === 'undefined') { str += 'object'; } else if (obj.type === 'array') { if (baseComponent) { str += getStringSignature((obj.items || obj.$ref || {})); } else { str += 'Array['; str += getStringSignature((obj.items || obj.$ref || {})); str += ']'; } } else if (obj.type === 'integer' && obj.format === 'int32') { str += 'integer'; } else if (obj.type === 'integer' && obj.format === 'int64') { str += 'long'; } else if (obj.type === 'integer' && typeof obj.format === 'undefined') { str += 'long'; } else if (obj.type === 'string' && obj.format === 'date-time') { str += 'date-time'; } else if (obj.type === 'string' && obj.format === 'date') { str += 'date'; } else if (obj.type === 'string' && typeof obj.format === 'undefined') { str += 'string'; } else if (obj.type === 'number' && obj.format === 'float') { str += 'float'; } else if (obj.type === 'number' && obj.format === 'double') { str += 'double'; } else if (obj.type === 'number' && typeof obj.format === 'undefined') { str += 'double'; } else if (obj.type === 'boolean') { str += 'boolean'; } else if (obj.$ref) { str += Helpers.simpleRef(obj.$ref); } else { str += obj.type; } return str; } function schemaToJSON(schema, models, modelsToIgnore, modelPropertyMacro) { // Resolve the schema (Handle nested schemas) schema = Helpers.resolveSchema(schema); if(typeof modelPropertyMacro !== 'function') { modelPropertyMacro = function(prop){ return (prop || {}).default; }; } modelsToIgnore= modelsToIgnore || {}; var type = schema.type || 'object'; var format = schema.format; var model; var output; if (!_.isUndefined(schema.example)) { output = schema.example; } else if (_.isUndefined(schema.items) && _.isArray(schema.enum)) { output = schema.enum[0]; } if (_.isUndefined(output)) { if (schema.$ref) { model = models[Helpers.simpleRef(schema.$ref)]; if (!_.isUndefined(model)) { if (_.isUndefined(modelsToIgnore[model.name])) { modelsToIgnore[model.name] = model; output = schemaToJSON(model.definition, models, modelsToIgnore, modelPropertyMacro); delete modelsToIgnore[model.name]; } else { if (model.type === 'array') { output = []; } else { output = {}; } } } } else if (!_.isUndefined(schema.default)) { output = schema.default; } else if (type === 'string') { if (format === 'date-time') { output = new Date().toISOString(); } else if (format === 'date') { output = new Date().toISOString().split('T')[0]; } else { output = 'string'; } } else if (type === 'integer') { output = 0; } else if (type === 'number') { output = 0.0; } else if (type === 'boolean') { output = true; } else if (type === 'object') { output = {}; _.forEach(schema.properties, function (property, name) { var cProperty = _.cloneDeep(property); // Allow macro to set the default value cProperty.default = modelPropertyMacro(property); output[name] = schemaToJSON(cProperty, models, modelsToIgnore, modelPropertyMacro); }); } else if (type === 'array') { output = []; if (_.isArray(schema.items)) { _.forEach(schema.items, function (item) { output.push(schemaToJSON(item, models, modelsToIgnore, modelPropertyMacro)); }); } else if (_.isPlainObject(schema.items)) { output.push(schemaToJSON(schema.items, models, modelsToIgnore, modelPropertyMacro)); } else if (_.isUndefined(schema.items)) { output.push({}); } else { Helpers.log('Array type\'s \'items\' property is not an array or an object, cannot process'); } } } return output; } function schemaToHTML(name, schema, models, modelPropertyMacro) { var strongOpen = ''; var strongClose = ''; // Allow for ignoring the 'name' argument.... shifting the rest if(_.isObject(arguments[0])) { name = void 0; schema = arguments[0]; models = arguments[1]; modelPropertyMacro = arguments[2]; } models = models || {}; // Resolve the schema (Handle nested schemas) schema = Helpers.resolveSchema(schema); // Return for empty object if(_.isEmpty(schema)) { return strongOpen + 'Empty' + strongClose; } // Dereference $ref from 'models' if(typeof schema.$ref === 'string') { name = Helpers.simpleRef(schema.$ref); schema = models[name]; if(typeof schema === 'undefined') { return strongOpen + name + ' is not defined!' + strongClose; } } if(typeof name !== 'string') { name = schema.title || 'Inline Model'; } // If we are a Model object... adjust accordingly if(schema.definition) { schema = schema.definition; } if(typeof modelPropertyMacro !== 'function') { modelPropertyMacro = function(prop){ return (prop || {}).default; }; } var references = {}; var seenModels = []; var inlineModels = 0; // Generate current HTML var html = processModel(schema, name); // Generate references HTML while (_.keys(references).length > 0) { /* jshint ignore:start */ _.forEach(references, function (schema, name) { var seenModel = _.indexOf(seenModels, name) > -1; delete references[name]; if (!seenModel) { seenModels.push(name); html += '
    ' + processModel(schema, name); } }); /* jshint ignore:end */ } return html; ///////////////////////////////// function addReference(schema, name, skipRef) { var modelName = name; var model; if (schema.$ref) { modelName = schema.title || Helpers.simpleRef(schema.$ref); model = models[modelName]; } else if (_.isUndefined(name)) { modelName = schema.title || 'Inline Model ' + (++inlineModels); model = {definition: schema}; } if (skipRef !== true) { references[modelName] = _.isUndefined(model) ? {} : model.definition; } return modelName; } function primitiveToHTML(schema) { var html = ''; var type = schema.type || 'object'; if (schema.$ref) { html += addReference(schema, Helpers.simpleRef(schema.$ref)); } else if (type === 'object') { if (!_.isUndefined(schema.properties)) { html += addReference(schema); } else { html += 'object'; } } else if (type === 'array') { html += 'Array['; if (_.isArray(schema.items)) { html += _.map(schema.items, addReference).join(','); } else if (_.isPlainObject(schema.items)) { if (_.isUndefined(schema.items.$ref)) { if (!_.isUndefined(schema.items.type) && _.indexOf(['array', 'object'], schema.items.type) === -1) { html += schema.items.type; } else { html += addReference(schema.items); } } else { html += addReference(schema.items, Helpers.simpleRef(schema.items.$ref)); } } else { Helpers.log('Array type\'s \'items\' schema is not an array or an object, cannot process'); html += 'object'; } html += ']'; } else { html += schema.type; } html += ''; return html; } function primitiveToOptionsHTML(schema, html) { var options = ''; var type = schema.type || 'object'; var isArray = type === 'array'; if (isArray) { if (_.isPlainObject(schema.items) && !_.isUndefined(schema.items.type)) { type = schema.items.type; } else { type = 'object'; } } if (!_.isUndefined(schema.default)) { options += optionHtml('Default', schema.default); } switch (type) { case 'string': if (schema.minLength) { options += optionHtml('Min. Length', schema.minLength); } if (schema.maxLength) { options += optionHtml('Max. Length', schema.maxLength); } if (schema.pattern) { options += optionHtml('Reg. Exp.', schema.pattern); } break; case 'integer': case 'number': if (schema.minimum) { options += optionHtml('Min. Value', schema.minimum); } if (schema.exclusiveMinimum) { options += optionHtml('Exclusive Min.', 'true'); } if (schema.maximum) { options += optionHtml('Max. Value', schema.maximum); } if (schema.exclusiveMaximum) { options += optionHtml('Exclusive Max.', 'true'); } if (schema.multipleOf) { options += optionHtml('Multiple Of', schema.multipleOf); } break; } if (isArray) { if (schema.minItems) { options += optionHtml('Min. Items', schema.minItems); } if (schema.maxItems) { options += optionHtml('Max. Items', schema.maxItems); } if (schema.uniqueItems) { options += optionHtml('Unique Items', 'true'); } if (schema.collectionFormat) { options += optionHtml('Coll. Format', schema.collectionFormat); } } if (_.isUndefined(schema.items)) { if (_.isArray(schema.enum)) { var enumString; if (type === 'number' || type === 'integer') { enumString = schema.enum.join(', '); } else { enumString = '"' + schema.enum.join('", "') + '"'; } options += optionHtml('Enum', enumString); } } if (options.length > 0) { html = '' + html + '' + options + '
    ' + type + '
    '; } return html; } function processModel(schema, name) { var type = schema.type || 'object'; var isArray = schema.type === 'array'; var html = strongOpen + name + ' ' + (isArray ? '[' : '{') + strongClose; if (name) { seenModels.push(name); } if (isArray) { if (_.isArray(schema.items)) { html += '
    ' + _.map(schema.items, function (item) { var type = item.type || 'object'; if (_.isUndefined(item.$ref)) { if (_.indexOf(['array', 'object'], type) > -1) { if (type === 'object' && _.isUndefined(item.properties)) { return 'object'; } else { return addReference(item); } } else { return primitiveToOptionsHTML(item, type); } } else { return addReference(item, Helpers.simpleRef(item.$ref)); } }).join(',
    '); } else if (_.isPlainObject(schema.items)) { if (_.isUndefined(schema.items.$ref)) { if (_.indexOf(['array', 'object'], schema.items.type || 'object') > -1) { if ((_.isUndefined(schema.items.type) || schema.items.type === 'object') && _.isUndefined(schema.items.properties)) { html += '
    object
    '; } else { html += '
    ' + addReference(schema.items) + '
    '; } } else { html += '
    ' + primitiveToOptionsHTML(schema.items, schema.items.type) + '
    '; } } else { html += '
    ' + addReference(schema.items, Helpers.simpleRef(schema.items.$ref)) + '
    '; } } else { Helpers.log('Array type\'s \'items\' property is not an array or an object, cannot process'); html += '
    object
    '; } } else { if (schema.$ref) { html += '
    ' + addReference(schema, name) + '
    '; } else if (type === 'object') { if (_.isPlainObject(schema.properties)) { var contents = _.map(schema.properties, function (property, name) { var propertyIsRequired = (_.indexOf(schema.required, name) >= 0); var cProperty = _.cloneDeep(property); var requiredClass = propertyIsRequired ? 'required' : ''; var html = '' + name + ' ('; var model; var propDescription; // Allow macro to set the default value cProperty.default = modelPropertyMacro(cProperty); // Resolve the schema (Handle nested schemas) cProperty = Helpers.resolveSchema(cProperty); propDescription = property.description || cProperty.description; // We need to handle property references to primitives (Issue 339) if (!_.isUndefined(cProperty.$ref)) { model = models[Helpers.simpleRef(cProperty.$ref)]; if (!_.isUndefined(model) && _.indexOf([undefined, 'array', 'object'], model.definition.type) === -1) { // Use referenced schema cProperty = Helpers.resolveSchema(model.definition); } } html += primitiveToHTML(cProperty); if(!propertyIsRequired) { html += ', optional'; } if(property.readOnly) { html += ', read only'; } html += ')'; if (!_.isUndefined(propDescription)) { html += ': ' + '' + propDescription + ''; } if (cProperty.enum) { html += ' = [\'' + cProperty.enum.join('\', \'') + '\']'; } return primitiveToOptionsHTML(cProperty, html); }).join(',
    '); } if (contents) { html += contents + '
    '; } } else { html += '
    ' + primitiveToOptionsHTML(schema, type) + '
    '; } } return html + strongOpen + (isArray ? ']' : '}') + strongClose; } } },{"./helpers":4,"lodash-compat/array/indexOf":53,"lodash-compat/collection/forEach":58,"lodash-compat/collection/map":60,"lodash-compat/lang/cloneDeep":142,"lodash-compat/lang/isArray":144,"lodash-compat/lang/isEmpty":145,"lodash-compat/lang/isObject":148,"lodash-compat/lang/isPlainObject":149,"lodash-compat/lang/isUndefined":152,"lodash-compat/object/keys":153}],8:[function(require,module,exports){ 'use strict'; var SwaggerHttp = require('./http'); var _ = { isObject: require('lodash-compat/lang/isObject') }; var SwaggerSpecConverter = module.exports = function () { this.errors = []; this.warnings = []; this.modelMap = {}; }; SwaggerSpecConverter.prototype.setDocumentationLocation = function (location) { this.docLocation = location; }; /** * converts a resource listing OR api declaration **/ SwaggerSpecConverter.prototype.convert = function (obj, clientAuthorizations, opts, callback) { // not a valid spec if(!obj || !Array.isArray(obj.apis)) { return this.finish(callback, null); } this.clientAuthorizations = clientAuthorizations; // create a new swagger object to return var swagger = { swagger: '2.0' }; swagger.originalVersion = obj.swaggerVersion; // add the info this.apiInfo(obj, swagger); // add security definitions this.securityDefinitions(obj, swagger); // take basePath into account if (obj.basePath) { this.setDocumentationLocation(obj.basePath); } // see if this is a single-file swagger definition var isSingleFileSwagger = false; var i; for(i = 0; i < obj.apis.length; i++) { var api = obj.apis[i]; if(Array.isArray(api.operations)) { isSingleFileSwagger = true; } } if(isSingleFileSwagger) { this.declaration(obj, swagger); this.finish(callback, swagger); } else { this.resourceListing(obj, swagger, opts, callback); } }; SwaggerSpecConverter.prototype.declaration = function(obj, swagger) { var name, i, p, pos; if(!obj.apis) { return; } if (obj.basePath.indexOf('http://') === 0) { p = obj.basePath.substring('http://'.length); pos = p.indexOf('/'); if (pos > 0) { swagger.host = p.substring(0, pos); swagger.basePath = p.substring(pos); } else { swagger.host = p; swagger.basePath = '/'; } } else if (obj.basePath.indexOf('https://') === 0) { p = obj.basePath.substring('https://'.length); pos = p.indexOf('/'); if (pos > 0) { swagger.host = p.substring(0, pos); swagger.basePath = p.substring(pos); } else { swagger.host = p; swagger.basePath = '/'; } } else { swagger.basePath = obj.basePath; } var resourceLevelAuth; if(obj.authorizations) { resourceLevelAuth = obj.authorizations; } if(obj.consumes) { swagger.consumes = obj.consumes; } if(obj.produces) { swagger.produces = obj.produces; } // build a mapping of id to name for 1.0 model resolutions if(_.isObject(obj)) { for(name in obj.models) { var existingModel = obj.models[name]; var key = (existingModel.id || name); this.modelMap[key] = name; } } for(i = 0; i < obj.apis.length; i++) { var api = obj.apis[i]; var path = api.path; var operations = api.operations; this.operations(path, obj.resourcePath, operations, resourceLevelAuth, swagger); } var models = obj.models || {}; this.models(models, swagger); }; SwaggerSpecConverter.prototype.models = function(obj, swagger) { if(!_.isObject(obj)) { return; } var name; swagger.definitions = swagger.definitions || {}; for(name in obj) { var existingModel = obj[name]; var _enum = []; var schema = { properties: {}}; var propertyName; for(propertyName in existingModel.properties) { var existingProperty = existingModel.properties[propertyName]; var property = {}; this.dataType(existingProperty, property); if(existingProperty.description) { property.description = existingProperty.description; } if(existingProperty['enum']) { property['enum'] = existingProperty['enum']; } if(typeof existingProperty.required === 'boolean' && existingProperty.required === true) { _enum.push(propertyName); } if(typeof existingProperty.required === 'string' && existingProperty.required === 'true') { _enum.push(propertyName); } schema.properties[propertyName] = property; } if(_enum.length > 0) { schema['enum'] = _enum; } schema.required = existingModel.required; swagger.definitions[name] = schema; } }; SwaggerSpecConverter.prototype.extractTag = function(resourcePath) { var pathString = resourcePath || 'default'; if(pathString.indexOf('http:') === 0 || pathString.indexOf('https:') === 0) { pathString = pathString.split(['/']); pathString = pathString[pathString.length -1].substring(); } if(pathString.endsWith('.json')) { pathString = pathString.substring(0, pathString.length - '.json'.length); } return pathString.replace('/',''); }; SwaggerSpecConverter.prototype.operations = function(path, resourcePath, obj, resourceLevelAuth, swagger) { if(!Array.isArray(obj)) { return; } var i; if(!swagger.paths) { swagger.paths = {}; } var pathObj = swagger.paths[path] || {}; var tag = this.extractTag(resourcePath); swagger.tags = swagger.tags || []; var matched = false; for(i = 0; i < swagger.tags.length; i++) { var tagObject = swagger.tags[i]; if(tagObject.name === tag) { matched = true; } } if(!matched) { swagger.tags.push({name: tag}); } for(i = 0; i < obj.length; i++) { var existingOperation = obj[i]; var method = (existingOperation.method || existingOperation.httpMethod).toLowerCase(); var operation = {tags: [tag]}; var existingAuthorizations = existingOperation.authorizations; if(existingAuthorizations && Object.keys(existingAuthorizations).length === 0) { existingAuthorizations = resourceLevelAuth; } if(typeof existingAuthorizations !== 'undefined') { var scopesObject; for(var key in existingAuthorizations) { operation.security = operation.security || []; var scopes = existingAuthorizations[key]; if(scopes) { var securityScopes = []; for(var j in scopes) { securityScopes.push(scopes[j].scope); } scopesObject = {}; scopesObject[key] = securityScopes; operation.security.push(scopesObject); } else { scopesObject = {}; scopesObject[key] = []; operation.security.push(scopesObject); } } } if(existingOperation.consumes) { operation.consumes = existingOperation.consumes; } else if(swagger.consumes) { operation.consumes = swagger.consumes; } if(existingOperation.produces) { operation.produces = existingOperation.produces; } else if(swagger.produces) { operation.produces = swagger.produces; } if(existingOperation.summary) { operation.summary = existingOperation.summary; } if(existingOperation.notes) { operation.description = existingOperation.notes; } if(existingOperation.nickname) { operation.operationId = existingOperation.nickname; } if(existingOperation.deprecated) { operation.deprecated = existingOperation.deprecated; } this.authorizations(existingAuthorizations, swagger); this.parameters(operation, existingOperation.parameters, swagger); this.responseMessages(operation, existingOperation, swagger); pathObj[method] = operation; } swagger.paths[path] = pathObj; }; SwaggerSpecConverter.prototype.responseMessages = function(operation, existingOperation) { if(!_.isObject(existingOperation)) { return; } // build default response from the operation (1.x) var defaultResponse = {}; this.dataType(existingOperation, defaultResponse); // TODO: look into the real problem of rendering responses in swagger-ui // ....should reponseType have an implicit schema? if(!defaultResponse.schema && defaultResponse.type) { defaultResponse = {schema: defaultResponse}; } operation.responses = operation.responses || {}; // grab from responseMessages (1.2) var has200 = false; if(Array.isArray(existingOperation.responseMessages)) { var i; var existingResponses = existingOperation.responseMessages; for(i = 0; i < existingResponses.length; i++) { var existingResponse = existingResponses[i]; var response = { description: existingResponse.message }; if(existingResponse.code === 200) { has200 = true; } // Convert responseModel -> schema{$ref: responseModel} if(existingResponse.responseModel) { response.schema = {'$ref': '#/definitions/' + existingResponse.responseModel}; } operation.responses['' + existingResponse.code] = response; } } if(has200) { operation.responses['default'] = defaultResponse; } else { operation.responses['200'] = defaultResponse; } }; SwaggerSpecConverter.prototype.authorizations = function(obj) { // TODO if(!_.isObject(obj)) { return; } }; SwaggerSpecConverter.prototype.parameters = function(operation, obj) { if(!Array.isArray(obj)) { return; } var i; for(i = 0; i < obj.length; i++) { var existingParameter = obj[i]; var parameter = {}; parameter.name = existingParameter.name; parameter.description = existingParameter.description; parameter.required = existingParameter.required; parameter.in = existingParameter.paramType; // per #168 if(parameter.in === 'body') { parameter.name = 'body'; } if(parameter.in === 'form') { parameter.in = 'formData'; } if(existingParameter.enum) { parameter.enum = existingParameter.enum; } if(existingParameter.allowMultiple === true || existingParameter.allowMultiple === 'true') { var innerType = {}; this.dataType(existingParameter, innerType); parameter.type = 'array'; parameter.items = innerType; if(existingParameter.allowableValues) { var av = existingParameter.allowableValues; if(av.valueType === 'LIST') { parameter['enum'] = av.values; } } } else { this.dataType(existingParameter, parameter); } if(typeof existingParameter.defaultValue !== 'undefined') { parameter.default = existingParameter.defaultValue; } operation.parameters = operation.parameters || []; operation.parameters.push(parameter); } }; SwaggerSpecConverter.prototype.dataType = function(source, target) { if(!_.isObject(source)) { return; } if(source.minimum) { target.minimum = source.minimum; } if(source.maximum) { target.maximum = source.maximum; } if (source.format) { target.format = source.format; } // default can be 'false' if(typeof source.defaultValue !== 'undefined') { target.default = source.defaultValue; } var jsonSchemaType = this.toJsonSchema(source); if(jsonSchemaType) { target = target || {}; if(jsonSchemaType.type) { target.type = jsonSchemaType.type; } if(jsonSchemaType.format) { target.format = jsonSchemaType.format; } if(jsonSchemaType.$ref) { target.schema = {$ref: jsonSchemaType.$ref}; } if(jsonSchemaType.items) { target.items = jsonSchemaType.items; } } }; SwaggerSpecConverter.prototype.toJsonSchema = function(source) { if(!source) { return 'object'; } var detectedType = (source.type || source.dataType || source.responseClass || ''); var lcType = detectedType.toLowerCase(); var format = (source.format || '').toLowerCase(); if(lcType.indexOf('list[') === 0) { var innerType = detectedType.substring(5, detectedType.length - 1); var jsonType = this.toJsonSchema({type: innerType}); return {type: 'array', items: jsonType}; } else if(lcType === 'int' || (lcType === 'integer' && format === 'int32')) { {return {type: 'integer', format: 'int32'};} } else if(lcType === 'long' || (lcType === 'integer' && format === 'int64')) { {return {type: 'integer', format: 'int64'};} } else if(lcType === 'integer') { {return {type: 'integer', format: 'int64'};} } else if(lcType === 'float' || (lcType === 'number' && format === 'float')) { {return {type: 'number', format: 'float'};} } else if(lcType === 'double' || (lcType === 'number' && format === 'double')) { {return {type: 'number', format: 'double'};} } else if((lcType === 'string' && format === 'date-time') || (lcType === 'date')) { {return {type: 'string', format: 'date-time'};} } else if(lcType === 'string') { {return {type: 'string'};} } else if(lcType === 'file') { {return {type: 'file'};} } else if(lcType === 'boolean') { {return {type: 'boolean'};} } else if(lcType === 'boolean') { {return {type: 'boolean'};} } else if(lcType === 'array' || lcType === 'list') { if(source.items) { var it = this.toJsonSchema(source.items); return {type: 'array', items: it}; } else { return {type: 'array', items: {type: 'object'}}; } } else if(source.$ref) { return {$ref: this.modelMap[source.$ref] ? '#/definitions/' + this.modelMap[source.$ref] : source.$ref}; } else if(lcType === 'void' || lcType === '') { {return {};} } else if (this.modelMap[source.type]) { // If this a model using `type` instead of `$ref`, that's fine. return {$ref: '#/definitions/' + this.modelMap[source.type]}; } else { // Unknown model type or 'object', pass it along. return {type: source.type}; } }; SwaggerSpecConverter.prototype.resourceListing = function(obj, swagger, opts, callback) { var i; var processedCount = 0; // jshint ignore:line var self = this; // jshint ignore:line var expectedCount = obj.apis.length; var _swagger = swagger; // jshint ignore:line var _opts = {}; if(opts && opts.requestInterceptor){ _opts.requestInterceptor = opts.requestInterceptor; } if(opts && opts.responseInterceptor){ _opts.responseInterceptor = opts.responseInterceptor; } if(expectedCount === 0) { this.finish(callback, swagger); } for(i = 0; i < expectedCount; i++) { var api = obj.apis[i]; var path = api.path; var absolutePath = this.getAbsolutePath(obj.swaggerVersion, this.docLocation, path); if(api.description) { swagger.tags = swagger.tags || []; swagger.tags.push({ name : this.extractTag(api.path), description : api.description || '' }); } var http = { url: absolutePath, headers: {accept: 'application/json'}, on: {}, method: 'get' }; /* jshint ignore:start */ http.on.response = function(data) { processedCount += 1; var obj = data.obj; if(obj) { self.declaration(obj, _swagger); } if(processedCount === expectedCount) { self.finish(callback, _swagger); } }; http.on.error = function(data) { console.error(data); processedCount += 1; if(processedCount === expectedCount) { self.finish(callback, _swagger); } }; /* jshint ignore:end */ if(this.clientAuthorizations && typeof this.clientAuthorizations.apply === 'function') { this.clientAuthorizations.apply(http); } new SwaggerHttp().execute(http, _opts); } }; SwaggerSpecConverter.prototype.getAbsolutePath = function(version, docLocation, path) { if(version === '1.0') { if(docLocation.endsWith('.json')) { // get root path var pos = docLocation.lastIndexOf('/'); if(pos > 0) { docLocation = docLocation.substring(0, pos); } } } var location = docLocation; if(path.indexOf('http://') === 0 || path.indexOf('https://') === 0) { location = path; } else { if(docLocation.endsWith('/')) { location = docLocation.substring(0, docLocation.length - 1); } location += path; } location = location.replace('{format}', 'json'); return location; }; SwaggerSpecConverter.prototype.securityDefinitions = function(obj, swagger) { if(obj.authorizations) { var name; for(name in obj.authorizations) { var isValid = false; var securityDefinition = {}; var definition = obj.authorizations[name]; if(definition.type === 'apiKey') { securityDefinition.type = 'apiKey'; securityDefinition.in = definition.passAs; securityDefinition.name = definition.keyname || name; isValid = true; } else if(definition.type === 'basicAuth') { securityDefinition.type = 'basicAuth'; isValid = true; } else if(definition.type === 'oauth2') { var existingScopes = definition.scopes || []; var scopes = {}; var i; for(i in existingScopes) { var scope = existingScopes[i]; scopes[scope.scope] = scope.description; } securityDefinition.type = 'oauth2'; if(i > 0) { securityDefinition.scopes = scopes; } if(definition.grantTypes) { if(definition.grantTypes.implicit) { var implicit = definition.grantTypes.implicit; securityDefinition.flow = 'implicit'; securityDefinition.authorizationUrl = implicit.loginEndpoint; isValid = true; } /* jshint ignore:start */ if(definition.grantTypes['authorization_code']) { if(!securityDefinition.flow) { // cannot set if flow is already defined var authCode = definition.grantTypes['authorization_code']; securityDefinition.flow = 'accessCode'; securityDefinition.authorizationUrl = authCode.tokenRequestEndpoint.url; securityDefinition.tokenUrl = authCode.tokenEndpoint.url; isValid = true; } } /* jshint ignore:end */ } } if(isValid) { swagger.securityDefinitions = swagger.securityDefinitions || {}; swagger.securityDefinitions[name] = securityDefinition; } } } }; SwaggerSpecConverter.prototype.apiInfo = function(obj, swagger) { // info section if(obj.info) { var info = obj.info; swagger.info = {}; if(info.contact) { swagger.info.contact = {}; swagger.info.contact.email = info.contact; } if(info.description) { swagger.info.description = info.description; } if(info.title) { swagger.info.title = info.title; } if(info.termsOfServiceUrl) { swagger.info.termsOfService = info.termsOfServiceUrl; } if(info.license || info.licenseUrl) { swagger.license = {}; if(info.license) { swagger.license.name = info.license; } if(info.licenseUrl) { swagger.license.url = info.licenseUrl; } } } else { this.warnings.push('missing info section'); } }; SwaggerSpecConverter.prototype.finish = function (callback, obj) { callback(obj); }; },{"./http":5,"lodash-compat/lang/isObject":148}],9:[function(require,module,exports){ 'use strict'; var log = require('../helpers').log; var _ = { isPlainObject: require('lodash-compat/lang/isPlainObject'), isString: require('lodash-compat/lang/isString'), }; var SchemaMarkup = require('../schema-markup.js'); var jsyaml = require('js-yaml'); var Model = module.exports = function (name, definition, models, modelPropertyMacro) { this.definition = definition || {}; this.isArray = definition.type === 'array'; this.models = models || {}; this.name = definition.title || name || 'Inline Model'; this.modelPropertyMacro = modelPropertyMacro || function (property) { return property.default; }; return this; }; // Note! This function will be removed in 2.2.x! Model.prototype.createJSONSample = Model.prototype.getSampleValue = function (modelsToIgnore) { modelsToIgnore = modelsToIgnore || {}; modelsToIgnore[this.name] = this; // Response support if (this.examples && _.isPlainObject(this.examples) && this.examples['application/json']) { this.definition.example = this.examples['application/json']; if (_.isString(this.definition.example)) { this.definition.example = jsyaml.safeLoad(this.definition.example); } } else if (!this.definition.example) { this.definition.example = this.examples; } return SchemaMarkup.schemaToJSON(this.definition, this.models, modelsToIgnore, this.modelPropertyMacro); }; Model.prototype.getMockSignature = function () { return SchemaMarkup.schemaToHTML(this.name, this.definition, this.models, this.modelPropertyMacro); }; },{"../helpers":4,"../schema-markup.js":7,"js-yaml":20,"lodash-compat/lang/isPlainObject":149,"lodash-compat/lang/isString":150}],10:[function(require,module,exports){ 'use strict'; var _ = { cloneDeep: require('lodash-compat/lang/cloneDeep'), isUndefined: require('lodash-compat/lang/isUndefined'), isEmpty: require('lodash-compat/lang/isEmpty'), isObject: require('lodash-compat/lang/isObject') }; var helpers = require('../helpers'); var Model = require('./model'); var SwaggerHttp = require('../http'); var Q = require('q'); var Operation = module.exports = function (parent, scheme, operationId, httpMethod, path, args, definitions, models, clientAuthorizations) { var errors = []; parent = parent || {}; args = args || {}; if(parent && parent.options) { this.client = parent.options.client || null; this.requestInterceptor = parent.options.requestInterceptor || null; this.responseInterceptor = parent.options.responseInterceptor || null; } this.authorizations = args.security; this.basePath = parent.basePath || '/'; this.clientAuthorizations = clientAuthorizations; this.consumes = args.consumes || parent.consumes || ['application/json']; this.produces = args.produces || parent.produces || ['application/json']; this.deprecated = args.deprecated; this.description = args.description; this.host = parent.host || 'localhost'; this.method = (httpMethod || errors.push('Operation ' + operationId + ' is missing method.')); this.models = models || {}; this.nickname = (operationId || errors.push('Operations must have a nickname.')); this.operation = args; this.operations = {}; this.parameters = args !== null ? (args.parameters || []) : {}; this.parent = parent; this.path = (path || errors.push('Operation ' + this.nickname + ' is missing path.')); this.responses = (args.responses || {}); this.scheme = scheme || parent.scheme || 'http'; this.schemes = args.schemes || parent.schemes; this.security = args.security; this.summary = args.summary || ''; this.type = null; this.useJQuery = parent.useJQuery; this.enableCookies = parent.enableCookies; this.parameterMacro = parent.parameterMacro || function (operation, parameter) { return parameter.default; }; this.inlineModels = []; if (typeof this.deprecated === 'string') { switch(this.deprecated.toLowerCase()) { case 'true': case 'yes': case '1': { this.deprecated = true; break; } case 'false': case 'no': case '0': case null: { this.deprecated = false; break; } default: this.deprecated = Boolean(this.deprecated); } } var i, model; if (definitions) { // add to global models var key; for (key in definitions) { model = new Model(key, definitions[key], this.models, parent.modelPropertyMacro); if (model) { this.models[key] = model; } } } else { definitions = {}; } for (i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; // Allow macro to set the default value param.default = this.parameterMacro(this, param); if (param.type === 'array') { param.isList = true; param.allowMultiple = true; // the enum can be defined at the items level //if (param.items && param.items.enum) { // param['enum'] = param.items.enum; //} } var innerType = this.getType(param); if (innerType && innerType.toString().toLowerCase() === 'boolean') { param.allowableValues = {}; param.isList = true; param['enum'] = [true, false]; // use actual primitives } if(typeof param['x-example'] !== 'undefined') { var d = param['x-example']; param.default = d; } if(param['x-examples']) { var d = param['x-examples'].default; if(typeof d !== 'undefined') { param.default = d; } } if (typeof param['enum'] !== 'undefined') { var id; param.allowableValues = {}; param.allowableValues.values = []; param.allowableValues.descriptiveValues = []; for (id = 0; id < param['enum'].length; id++) { var value = param['enum'][id]; var isDefault = (value === param.default || value+'' === param.default); param.allowableValues.values.push(value); // Always have string for descriptive values.... param.allowableValues.descriptiveValues.push({value : value+'', isDefault: isDefault}); } } if (param.type === 'array') { innerType = [innerType]; if (typeof param.allowableValues === 'undefined') { // can't show as a list if no values to select from delete param.isList; delete param.allowMultiple; } } param.modelSignature = {type: innerType, definitions: this.models}; param.signature = this.getModelSignature(innerType, this.models).toString(); param.sampleJSON = this.getModelSampleJSON(innerType, this.models); param.responseClassSignature = param.signature; } var defaultResponseCode, response, responses = this.responses; if (responses['200']) { response = responses['200']; defaultResponseCode = '200'; } else if (responses['201']) { response = responses['201']; defaultResponseCode = '201'; } else if (responses['202']) { response = responses['202']; defaultResponseCode = '202'; } else if (responses['203']) { response = responses['203']; defaultResponseCode = '203'; } else if (responses['204']) { response = responses['204']; defaultResponseCode = '204'; } else if (responses['205']) { response = responses['205']; defaultResponseCode = '205'; } else if (responses['206']) { response = responses['206']; defaultResponseCode = '206'; } else if (responses['default']) { response = responses['default']; defaultResponseCode = 'default'; } if (response && response.schema) { var resolvedModel = this.resolveModel(response.schema, definitions); var successResponse; delete responses[defaultResponseCode]; if (resolvedModel) { this.successResponse = {}; successResponse = this.successResponse[defaultResponseCode] = resolvedModel; } else if (!response.schema.type || response.schema.type === 'object' || response.schema.type === 'array') { // Inline model this.successResponse = {}; successResponse = this.successResponse[defaultResponseCode] = new Model(undefined, response.schema || {}, this.models, parent.modelPropertyMacro); } else { // Primitive this.successResponse = {}; successResponse = this.successResponse[defaultResponseCode] = response.schema; } if (successResponse) { // Attach response properties if (response.description) { successResponse.description = response.description; } if (response.examples) { successResponse.examples = response.examples; } if (response.headers) { successResponse.headers = response.headers; } } this.type = response; } if (errors.length > 0) { if (this.resource && this.resource.api && this.resource.api.fail) { this.resource.api.fail(errors); } } return this; }; Operation.prototype.isDefaultArrayItemValue = function(value, param) { if (param.default && Array.isArray(param.default)) { return param.default.indexOf(value) !== -1; } return value === param.default; }; Operation.prototype.getType = function (param) { var type = param.type; var format = param.format; var isArray = false; var str; if (type === 'integer' && format === 'int32') { str = 'integer'; } else if (type === 'integer' && format === 'int64') { str = 'long'; } else if (type === 'integer') { str = 'integer'; } else if (type === 'string') { if (format === 'date-time') { str = 'date-time'; } else if (format === 'date') { str = 'date'; } else { str = 'string'; } } else if (type === 'number' && format === 'float') { str = 'float'; } else if (type === 'number' && format === 'double') { str = 'double'; } else if (type === 'number') { str = 'double'; } else if (type === 'boolean') { str = 'boolean'; } else if (type === 'array') { isArray = true; if (param.items) { str = this.getType(param.items); } } else if (type === 'file') { str = 'file'; } if (param.$ref) { str = helpers.simpleRef(param.$ref); } var schema = param.schema; if (schema) { var ref = schema.$ref; if (ref) { ref = helpers.simpleRef(ref); if (isArray) { return [ ref ]; } else { return ref; } } else { // If inline schema, we add it our interal hash -> which gives us it's ID (int) if(schema.type === 'object') { return this.addInlineModel(schema); } return this.getType(schema); } } if (isArray) { return [ str ]; } else { return str; } }; /** * adds an inline schema (model) to a hash, where we can ref it later * @param {object} schema a schema * @return {number} the ID of the schema being added, or null **/ Operation.prototype.addInlineModel = function (schema) { var len = this.inlineModels.length; var model = this.resolveModel(schema, {}); if(model) { this.inlineModels.push(model); return 'Inline Model '+len; // return string ref of the inline model (used with #getInlineModel) } return null; // report errors? }; /** * gets the internal ref to an inline model * @param {string} inline_str a string reference to an inline model * @return {Model} the model being referenced. Or null **/ Operation.prototype.getInlineModel = function(inlineStr) { if(/^Inline Model \d+$/.test(inlineStr)) { var id = parseInt(inlineStr.substr('Inline Model'.length).trim(),10); // var model = this.inlineModels[id]; return model; } // I'm returning null here, should I rather throw an error? return null; }; Operation.prototype.resolveModel = function (schema, definitions) { if (typeof schema.$ref !== 'undefined') { var ref = schema.$ref; if (ref.indexOf('#/definitions/') === 0) { ref = ref.substring('#/definitions/'.length); } if (definitions[ref]) { return new Model(ref, definitions[ref], this.models, this.parent.modelPropertyMacro); } // schema must at least be an object to get resolved to an inline Model } else if (schema && typeof schema === 'object' && (schema.type === 'object' || _.isUndefined(schema.type))) { return new Model(undefined, schema, this.models, this.parent.modelPropertyMacro); } return null; }; Operation.prototype.help = function (dontPrint) { var out = this.nickname + ': ' + this.summary + '\n'; for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; var typeInfo = param.signature; out += '\n * ' + param.name + ' (' + typeInfo + '): ' + param.description; } if (typeof dontPrint === 'undefined') { helpers.log(out); } return out; }; Operation.prototype.getModelSignature = function (type, definitions) { var isPrimitive, listType; if (type instanceof Array) { listType = true; type = type[0]; } // Convert undefined to string of 'undefined' if (typeof type === 'undefined') { type = 'undefined'; isPrimitive = true; } else if (definitions[type]){ // a model def exists? type = definitions[type]; /* Model */ isPrimitive = false; } else if (this.getInlineModel(type)) { type = this.getInlineModel(type); /* Model */ isPrimitive = false; } else { // We default to primitive isPrimitive = true; } if (isPrimitive) { if (listType) { return 'Array[' + type + ']'; } else { return type.toString(); } } else { if (listType) { return 'Array[' + type.getMockSignature() + ']'; } else { return type.getMockSignature(); } } }; Operation.prototype.supportHeaderParams = function () { return true; }; Operation.prototype.supportedSubmitMethods = function () { return this.parent.supportedSubmitMethods; }; Operation.prototype.getHeaderParams = function (args) { var headers = this.setContentTypes(args, {}); for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (typeof args[param.name] !== 'undefined') { if (param.in === 'header') { var value = args[param.name]; if (Array.isArray(value)) { value = value.toString(); } headers[param.name] = value; } } } return headers; }; Operation.prototype.urlify = function (args) { var formParams = {}; var requestUrl = this.path; var querystring = ''; // grab params from the args, build the querystring along the way for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (typeof args[param.name] !== 'undefined') { if (param.in === 'path') { var reg = new RegExp('\{' + param.name + '\}', 'gi'); var value = args[param.name]; if (Array.isArray(value)) { value = this.encodePathCollection(param.collectionFormat, param.name, value); } else { value = this.encodePathParam(value); } requestUrl = requestUrl.replace(reg, value); } else if (param.in === 'query' && typeof args[param.name] !== 'undefined') { if (querystring === '') { querystring += '?'; } else { querystring += '&'; } if (typeof param.collectionFormat !== 'undefined') { var qp = args[param.name]; if (Array.isArray(qp)) { querystring += this.encodeQueryCollection(param.collectionFormat, param.name, qp); } else { querystring += this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]); } } else { querystring += this.encodeQueryParam(param.name) + '=' + this.encodeQueryParam(args[param.name]); } } else if (param.in === 'formData') { formParams[param.name] = args[param.name]; } } } var url = this.scheme + '://' + this.host; if (this.basePath !== '/') { url += this.basePath; } return url + requestUrl + querystring; }; Operation.prototype.getMissingParams = function (args) { var missingParams = []; // check required params, track the ones that are missing var i; for (i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (param.required === true) { if (typeof args[param.name] === 'undefined') { missingParams = param.name; } } } return missingParams; }; Operation.prototype.getBody = function (headers, args, opts) { var formParams = {}, hasFormParams, body, key, value, hasBody = false; // look at each param and put form params in an object for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (typeof args[param.name] !== 'undefined') { if (param.in === 'body') { body = args[param.name]; } else if (param.in === 'formData') { formParams[param.name] = args[param.name]; hasFormParams = true; } } else { if(param.in === 'body') { hasBody = true; } } } // if body is null and hasBody is true, AND a JSON body is requested, send empty {} if(hasBody && typeof body === 'undefined') { var contentType = headers['Content-Type']; if(contentType && contentType.indexOf('application/json') === 0) { body = '{}'; } } var isMultiPart = false; if(headers['Content-Type'] && headers['Content-Type'].indexOf('multipart/form-data') >= 0) { isMultiPart = true; } // handle form params if (hasFormParams && !isMultiPart) { var encoded = ''; for (key in formParams) { value = formParams[key]; if (typeof value !== 'undefined') { if (encoded !== '') { encoded += '&'; } encoded += encodeURIComponent(key) + '=' + encodeURIComponent(value); } } body = encoded; } else if (isMultiPart) { if (opts.useJQuery) { var bodyParam = new FormData(); bodyParam.type = 'formData'; for (key in formParams) { value = args[key]; if (typeof value !== 'undefined') { // required for jquery file upload if (value.type === 'file' && value.value) { delete headers['Content-Type']; bodyParam.append(key, value.value); } else { bodyParam.append(key, value); } } } body = bodyParam; } } return body; }; /** * gets sample response for a single operation **/ Operation.prototype.getModelSampleJSON = function (type, models) { var listType, sampleJson, innerType; models = models || {}; listType = (type instanceof Array); innerType = listType ? type[0] : type; if(models[innerType]) { sampleJson = models[innerType].createJSONSample(); } else if (this.getInlineModel(innerType)){ sampleJson = this.getInlineModel(innerType).createJSONSample(); // may return null, if type isn't correct } if (sampleJson) { sampleJson = listType ? [sampleJson] : sampleJson; if (typeof sampleJson === 'string') { return sampleJson; } else if (_.isObject(sampleJson)) { var t = sampleJson; if (sampleJson instanceof Array && sampleJson.length > 0) { t = sampleJson[0]; } if (t.nodeName && typeof t === 'Node') { var xmlString = new XMLSerializer().serializeToString(t); return this.formatXml(xmlString); } else { return JSON.stringify(sampleJson, null, 2); } } else { return sampleJson; } } }; /** * legacy binding **/ Operation.prototype.do = function (args, opts, callback, error, parent) { return this.execute(args, opts, callback, error, parent); }; /** * executes an operation **/ Operation.prototype.execute = function (arg1, arg2, arg3, arg4, parent) { var args = arg1 || {}; var opts = {}, success, error, deferred; if (_.isObject(arg2)) { opts = arg2; success = arg3; error = arg4; } if(this.client) { opts.client = this.client; } // add the request interceptor from parent, if none sent from client if(!opts.requestInterceptor && this.requestInterceptor ) { opts.requestInterceptor = this.requestInterceptor ; } if(!opts.responseInterceptor && this.responseInterceptor) { opts.responseInterceptor = this.responseInterceptor; } if (typeof arg2 === 'function') { success = arg2; error = arg3; } if (this.parent.usePromise) { deferred = Q.defer(); } else { success = (success || this.parent.defaultSuccessCallback || helpers.log); error = (error || this.parent.defaultErrorCallback || helpers.log); } if (typeof opts.useJQuery === 'undefined') { opts.useJQuery = this.useJQuery; } if (typeof opts.enableCookies === 'undefined') { opts.enableCookies = this.enableCookies; } var missingParams = this.getMissingParams(args); if (missingParams.length > 0) { var message = 'missing required params: ' + missingParams; helpers.fail(message); if (this.parent.usePromise) { deferred.reject(message); return deferred.promise; } else { error(message, parent); return {}; } } var allHeaders = this.getHeaderParams(args); var contentTypeHeaders = this.setContentTypes(args, opts); var headers = {}, attrname; for (attrname in allHeaders) { headers[attrname] = allHeaders[attrname]; } for (attrname in contentTypeHeaders) { headers[attrname] = contentTypeHeaders[attrname]; } var body = this.getBody(contentTypeHeaders, args, opts); var url = this.urlify(args); if(url.indexOf('.{format}') > 0) { if(headers) { var format = headers.Accept || headers.accept; if(format && format.indexOf('json') > 0) { url = url.replace('.{format}', '.json'); } else if(format && format.indexOf('xml') > 0) { url = url.replace('.{format}', '.xml'); } } } var obj = { url: url, method: this.method.toUpperCase(), body: body, enableCookies: opts.enableCookies, useJQuery: opts.useJQuery, deferred: deferred, headers: headers, on: { response: function (response) { if (deferred) { deferred.resolve(response); return deferred.promise; } else { return success(response, parent); } }, error: function (response) { if (deferred) { deferred.reject(response); return deferred.promise; } else { return error(response, parent); } } } }; this.clientAuthorizations.apply(obj, this.operation.security); if (opts.mock === true) { return obj; } else { return new SwaggerHttp().execute(obj, opts); } }; function itemByPriority(col, itemPriority) { // No priorities? return first... if(_.isEmpty(itemPriority)) { return col[0]; } for (var i = 0, len = itemPriority.length; i < len; i++) { if(col.indexOf(itemPriority[i]) > -1) { return itemPriority[i]; } } // Otherwise return first return col[0]; } Operation.prototype.setContentTypes = function (args, opts) { // default type var allDefinedParams = this.parameters; var body; var consumes = args.parameterContentType || itemByPriority(this.consumes, ['application/json', 'application/yaml']); var accepts = opts.responseContentType || itemByPriority(this.produces, ['application/json', 'application/yaml']); var definedFileParams = []; var definedFormParams = []; var headers = {}; var i; // get params from the operation and set them in definedFileParams, definedFormParams, headers for (i = 0; i < allDefinedParams.length; i++) { var param = allDefinedParams[i]; if (param.in === 'formData') { if (param.type === 'file') { definedFileParams.push(param); } else { definedFormParams.push(param); } } else if (param.in === 'header' && opts) { var key = param.name; var headerValue = opts[param.name]; if (typeof opts[param.name] !== 'undefined') { headers[key] = headerValue; } } else if (param.in === 'body' && typeof args[param.name] !== 'undefined') { body = args[param.name]; } } // if there's a body, need to set the consumes header via requestContentType if (this.method === 'post' || this.method === 'put' || this.method === 'patch' || ((this.method === 'delete' || this.method === 'get') && body) ) { if (opts.requestContentType) { consumes = opts.requestContentType; } // if any form params, content type must be set if (definedFormParams.length > 0) { if (opts.requestContentType) { // override if set consumes = opts.requestContentType; } else if (definedFileParams.length > 0) { // if a file, must be multipart/form-data consumes = 'multipart/form-data'; } else { // default to x-www-from-urlencoded consumes = 'application/x-www-form-urlencoded'; } } } else { consumes = null; } if (consumes && this.consumes) { if (this.consumes.indexOf(consumes) === -1) { helpers.log('server doesn\'t consume ' + consumes + ', try ' + JSON.stringify(this.consumes)); } } if (!this.matchesAccept(accepts)) { helpers.log('server can\'t produce ' + accepts); } if ((consumes && body !== '') || (consumes === 'application/x-www-form-urlencoded')) { headers['Content-Type'] = consumes; } if (accepts) { headers.Accept = accepts; } return headers; }; /** * Returns true if the request accepts header matches anything in this.produces. * If this.produces contains * / *, ignore the accept header. * @param {string=} accepts The client request accept header. * @return {boolean} */ Operation.prototype.matchesAccept = function(accepts) { // no accepts or produces, no problem! if (!accepts || !this.produces) { return true; } return this.produces.indexOf(accepts) !== -1 || this.produces.indexOf('*/*') !== -1; }; Operation.prototype.asCurl = function (args1, args2) { var opts = {mock: true}; if (typeof args2 === 'object') { for (var argKey in args2) { opts[argKey] = args2[argKey]; } } var obj = this.execute(args1, opts); this.clientAuthorizations.apply(obj, this.operation.security); var results = []; results.push('-X ' + this.method.toUpperCase()); if (typeof obj.headers !== 'undefined') { var key; for (key in obj.headers) { var value = obj.headers[key]; if(typeof value === 'string'){ value = value.replace(/\'/g, '\\u0027'); } results.push('--header \'' + key + ': ' + value + '\''); } } if (obj.body) { var body; if (_.isObject(obj.body)) { body = JSON.stringify(obj.body); } else { body = obj.body; } results.push('-d \'' + body.replace(/\'/g, '\\u0027') + '\''); } return 'curl ' + (results.join(' ')) + ' \'' + obj.url + '\''; }; Operation.prototype.encodePathCollection = function (type, name, value) { var encoded = ''; var i; var separator = ''; if (type === 'ssv') { separator = '%20'; } else if (type === 'tsv') { separator = '\\t'; } else if (type === 'pipes') { separator = '|'; } else { separator = ','; } for (i = 0; i < value.length; i++) { if (i === 0) { encoded = this.encodeQueryParam(value[i]); } else { encoded += separator + this.encodeQueryParam(value[i]); } } return encoded; }; Operation.prototype.encodeQueryCollection = function (type, name, value) { var encoded = ''; var i; if (type === 'default' || type === 'multi') { for (i = 0; i < value.length; i++) { if (i > 0) {encoded += '&';} encoded += this.encodeQueryParam(name) + '=' + this.encodeQueryParam(value[i]); } } else { var separator = ''; if (type === 'csv') { separator = ','; } else if (type === 'ssv') { separator = '%20'; } else if (type === 'tsv') { separator = '\\t'; } else if (type === 'pipes') { separator = '|'; } else if (type === 'brackets') { for (i = 0; i < value.length; i++) { if (i !== 0) { encoded += '&'; } encoded += this.encodeQueryParam(name) + '[]=' + this.encodeQueryParam(value[i]); } } if (separator !== '') { for (i = 0; i < value.length; i++) { if (i === 0) { encoded = this.encodeQueryParam(name) + '=' + this.encodeQueryParam(value[i]); } else { encoded += separator + this.encodeQueryParam(value[i]); } } } } return encoded; }; Operation.prototype.encodeQueryParam = function (arg) { return encodeURIComponent(arg); }; /** * TODO revisit, might not want to leave '/' **/ Operation.prototype.encodePathParam = function (pathParam) { return encodeURIComponent(pathParam); }; },{"../helpers":4,"../http":5,"./model":9,"lodash-compat/lang/cloneDeep":142,"lodash-compat/lang/isEmpty":145,"lodash-compat/lang/isObject":148,"lodash-compat/lang/isUndefined":152,"q":161}],11:[function(require,module,exports){ 'use strict'; var OperationGroup = module.exports = function (tag, description, externalDocs, operation) { this.description = description; this.externalDocs = externalDocs; this.name = tag; this.operation = operation; this.operationsArray = []; this.path = tag; this.tag = tag; }; OperationGroup.prototype.sort = function () { }; },{}],12:[function(require,module,exports){ },{}],13:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; var queue = []; var draining = false; function drainQueue() { if (draining) { return; } draining = true; var currentQueue; var len = queue.length; while(len) { currentQueue = queue; queue = []; var i = -1; while (++i < len) { currentQueue[i](); } len = queue.length; } draining = false; } process.nextTick = function (fun) { queue.push(fun); if (!draining) { setTimeout(drainQueue, 0); } }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.binding = function (name) { throw new Error('process.binding is not supported'); }; // TODO(shtylman) process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; },{}],14:[function(require,module,exports){ (function (Buffer){ (function () { "use strict"; function btoa(str) { var buffer ; if (str instanceof Buffer) { buffer = str; } else { buffer = new Buffer(str.toString(), 'binary'); } return buffer.toString('base64'); } module.exports = btoa; }()); }).call(this,require("buffer").Buffer) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9idG9hL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgZnVuY3Rpb24gYnRvYShzdHIpIHtcbiAgICB2YXIgYnVmZmVyXG4gICAgICA7XG5cbiAgICBpZiAoc3RyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBidWZmZXIgPSBzdHI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoc3RyLnRvU3RyaW5nKCksICdiaW5hcnknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIG1vZHVsZS5leHBvcnRzID0gYnRvYTtcbn0oKSk7XG4iXX0= },{"buffer":15}],15:[function(require,module,exports){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ var base64 = require('base64-js') var ieee754 = require('ieee754') var isArray = require('is-array') exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 Buffer.poolSize = 8192 // not used by this implementation var rootParent = {} /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Use Object implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * Due to various browser bugs, sometimes the Object implementation will be used even * when the browser supports typed arrays. * * Note: * * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. * * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property * on objects. * * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. * * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of * incorrect length in some situations. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they * get the Object implementation, which is slower but behaves correctly. */ Buffer.TYPED_ARRAY_SUPPORT = (function () { function Bar () {} try { var arr = new Uint8Array(1) arr.foo = function () { return 42 } arr.constructor = Bar return arr.foo() === 42 && // typed array instances can be augmented arr.constructor === Bar && // constructor can be set typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` } catch (e) { return false } })() function kMaxLength () { return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff } /** * Class: Buffer * ============= * * The Buffer constructor returns instances of `Uint8Array` that are augmented * with function properties for all the node `Buffer` API functions. We use * `Uint8Array` so that square bracket notation works as expected -- it returns * a single octet. * * By augmenting the instances, we can avoid modifying the `Uint8Array` * prototype. */ function Buffer (arg) { if (!(this instanceof Buffer)) { // Avoid going through an ArgumentsAdaptorTrampoline in the common case. if (arguments.length > 1) return new Buffer(arg, arguments[1]) return new Buffer(arg) } this.length = 0 this.parent = undefined // Common case. if (typeof arg === 'number') { return fromNumber(this, arg) } // Slightly less common case. if (typeof arg === 'string') { return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') } // Unusual. return fromObject(this, arg) } function fromNumber (that, length) { that = allocate(that, length < 0 ? 0 : checked(length) | 0) if (!Buffer.TYPED_ARRAY_SUPPORT) { for (var i = 0; i < length; i++) { that[i] = 0 } } return that } function fromString (that, string, encoding) { if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' // Assumption: byteLength() return value is always < kMaxLength. var length = byteLength(string, encoding) | 0 that = allocate(that, length) that.write(string, encoding) return that } function fromObject (that, object) { if (Buffer.isBuffer(object)) return fromBuffer(that, object) if (isArray(object)) return fromArray(that, object) if (object == null) { throw new TypeError('must start with number, buffer, array or string') } if (typeof ArrayBuffer !== 'undefined') { if (object.buffer instanceof ArrayBuffer) { return fromTypedArray(that, object) } if (object instanceof ArrayBuffer) { return fromArrayBuffer(that, object) } } if (object.length) return fromArrayLike(that, object) return fromJsonObject(that, object) } function fromBuffer (that, buffer) { var length = checked(buffer.length) | 0 that = allocate(that, length) buffer.copy(that, 0, 0, length) return that } function fromArray (that, array) { var length = checked(array.length) | 0 that = allocate(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } // Duplicate of fromArray() to keep fromArray() monomorphic. function fromTypedArray (that, array) { var length = checked(array.length) | 0 that = allocate(that, length) // Truncating the elements is probably not what people expect from typed // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior // of the old Buffer constructor. for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function fromArrayBuffer (that, array) { if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance array.byteLength that = Buffer._augment(new Uint8Array(array)) } else { // Fallback: Return an object instance of the Buffer class that = fromTypedArray(that, new Uint8Array(array)) } return that } function fromArrayLike (that, array) { var length = checked(array.length) | 0 that = allocate(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. // Returns a zero-length buffer for inputs that don't conform to the spec. function fromJsonObject (that, object) { var array var length = 0 if (object.type === 'Buffer' && isArray(object.data)) { array = object.data length = checked(array.length) | 0 } that = allocate(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function allocate (that, length) { if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance that = Buffer._augment(new Uint8Array(length)) } else { // Fallback: Return an object instance of the Buffer class that.length = length that._isBuffer = true } var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 if (fromPool) that.parent = rootParent return that } function checked (length) { // Note: cannot use `length < kMaxLength` here because that fails when // length is NaN (which is otherwise coerced to zero.) if (length >= kMaxLength()) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes') } return length | 0 } function SlowBuffer (subject, encoding) { if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) var buf = new Buffer(subject, encoding) delete buf.parent return buf } Buffer.isBuffer = function isBuffer (b) { return !!(b != null && b._isBuffer) } Buffer.compare = function compare (a, b) { if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError('Arguments must be Buffers') } if (a === b) return 0 var x = a.length var y = b.length var i = 0 var len = Math.min(x, y) while (i < len) { if (a[i] !== b[i]) break ++i } if (i !== len) { x = a[i] y = b[i] } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function isEncoding (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'raw': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function concat (list, length) { if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') if (list.length === 0) { return new Buffer(0) } var i if (length === undefined) { length = 0 for (i = 0; i < list.length; i++) { length += list[i].length } } var buf = new Buffer(length) var pos = 0 for (i = 0; i < list.length; i++) { var item = list[i] item.copy(buf, pos) pos += item.length } return buf } function byteLength (string, encoding) { if (typeof string !== 'string') string = '' + string var len = string.length if (len === 0) return 0 // Use a for loop to avoid recursion var loweredCase = false for (;;) { switch (encoding) { case 'ascii': case 'binary': // Deprecated case 'raw': case 'raws': return len case 'utf8': case 'utf-8': return utf8ToBytes(string).length case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2 case 'hex': return len >>> 1 case 'base64': return base64ToBytes(string).length default: if (loweredCase) return utf8ToBytes(string).length // assume utf8 encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.byteLength = byteLength // pre-set for values that may exist in the future Buffer.prototype.length = undefined Buffer.prototype.parent = undefined function slowToString (encoding, start, end) { var loweredCase = false start = start | 0 end = end === undefined || end === Infinity ? this.length : end | 0 if (!encoding) encoding = 'utf8' if (start < 0) start = 0 if (end > this.length) end = this.length if (end <= start) return '' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'binary': return binarySlice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } Buffer.prototype.toString = function toString () { var length = this.length | 0 if (length === 0) return '' if (arguments.length === 0) return utf8Slice(this, 0, length) return slowToString.apply(this, arguments) } Buffer.prototype.equals = function equals (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return true return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function inspect () { var str = '' var max = exports.INSPECT_MAX_BYTES if (this.length > 0) { str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') if (this.length > max) str += ' ... ' } return '' } Buffer.prototype.compare = function compare (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return 0 return Buffer.compare(this, b) } Buffer.prototype.indexOf = function indexOf (val, byteOffset) { if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff else if (byteOffset < -0x80000000) byteOffset = -0x80000000 byteOffset >>= 0 if (this.length === 0) return -1 if (byteOffset >= this.length) return -1 // Negative offsets start from the end of the buffer if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) if (typeof val === 'string') { if (val.length === 0) return -1 // special case: looking for empty string always fails return String.prototype.indexOf.call(this, val, byteOffset) } if (Buffer.isBuffer(val)) { return arrayIndexOf(this, val, byteOffset) } if (typeof val === 'number') { if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { return Uint8Array.prototype.indexOf.call(this, val, byteOffset) } return arrayIndexOf(this, [ val ], byteOffset) } function arrayIndexOf (arr, val, byteOffset) { var foundIndex = -1 for (var i = 0; byteOffset + i < arr.length; i++) { if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { if (foundIndex === -1) foundIndex = i if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex } else { foundIndex = -1 } } return -1 } throw new TypeError('val must be string, number or Buffer') } // `get` is deprecated Buffer.prototype.get = function get (offset) { console.log('.get() is deprecated. Access using array indexes instead.') return this.readUInt8(offset) } // `set` is deprecated Buffer.prototype.set = function set (v, offset) { console.log('.set() is deprecated. Access using array indexes instead.') return this.writeUInt8(v, offset) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 var remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } // must be an even number of digits var strLen = string.length if (strLen % 2 !== 0) throw new Error('Invalid hex string') if (length > strLen / 2) { length = strLen / 2 } for (var i = 0; i < length; i++) { var parsed = parseInt(string.substr(i * 2, 2), 16) if (isNaN(parsed)) throw new Error('Invalid hex string') buf[offset + i] = parsed } return i } function utf8Write (buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) } function asciiWrite (buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length) } function binaryWrite (buf, string, offset, length) { return asciiWrite(buf, string, offset, length) } function base64Write (buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length) } function ucs2Write (buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) } Buffer.prototype.write = function write (string, offset, length, encoding) { // Buffer#write(string) if (offset === undefined) { encoding = 'utf8' length = this.length offset = 0 // Buffer#write(string, encoding) } else if (length === undefined && typeof offset === 'string') { encoding = offset length = this.length offset = 0 // Buffer#write(string, offset[, length][, encoding]) } else if (isFinite(offset)) { offset = offset | 0 if (isFinite(length)) { length = length | 0 if (encoding === undefined) encoding = 'utf8' } else { encoding = length length = undefined } // legacy write(string, encoding, offset, length) - remove in v0.13 } else { var swap = encoding encoding = offset offset = length | 0 length = swap } var remaining = this.length - offset if (length === undefined || length > remaining) length = remaining if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { throw new RangeError('attempt to write outside buffer bounds') } if (!encoding) encoding = 'utf8' var loweredCase = false for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length) case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length) case 'ascii': return asciiWrite(this, string, offset, length) case 'binary': return binaryWrite(this, string, offset, length) case 'base64': // Warning: maxLength not taken into account in base64Write return base64Write(this, string, offset, length) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.prototype.toJSON = function toJSON () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { end = Math.min(buf.length, end) var res = [] var i = start while (i < end) { var firstByte = buf[i] var codePoint = null var bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1 if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte } break case 2: secondByte = buf[i + 1] if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) if (tempCodePoint > 0x7F) { codePoint = tempCodePoint } } break case 3: secondByte = buf[i + 1] thirdByte = buf[i + 2] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } } break case 4: secondByte = buf[i + 1] thirdByte = buf[i + 2] fourthByte = buf[i + 3] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint } } } } if (codePoint === null) { // we did not generate a valid codePoint so insert a // replacement char (U+FFFD) and advance only 1 byte codePoint = 0xFFFD bytesPerSequence = 1 } else if (codePoint > 0xFFFF) { // encode to utf16 (surrogate pair dance) codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF } res.push(codePoint) i += bytesPerSequence } return decodeCodePointsArray(res) } // Based on http://stackoverflow.com/a/22747272/680742, the browser with // the lowest limit is Chrome, with 0x10000 args. // We go 1 magnitude less, for safety var MAX_ARGUMENTS_LENGTH = 0x1000 function decodeCodePointsArray (codePoints) { var len = codePoints.length if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints) // avoid extra slice() } // Decode in chunks to avoid "call stack size exceeded". var res = '' var i = 0 while (i < len) { res += String.fromCharCode.apply( String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) ) } return res } function asciiSlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function binarySlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { var len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len var out = '' for (var i = start; i < end; i++) { out += toHex(buf[i]) } return out } function utf16leSlice (buf, start, end) { var bytes = buf.slice(start, end) var res = '' for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) } return res } Buffer.prototype.slice = function slice (start, end) { var len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start var newBuf if (Buffer.TYPED_ARRAY_SUPPORT) { newBuf = Buffer._augment(this.subarray(start, end)) } else { var sliceLen = end - start newBuf = new Buffer(sliceLen, undefined) for (var i = 0; i < sliceLen; i++) { newBuf[i] = this[i + start] } } if (newBuf.length) newBuf.parent = this.parent || this return newBuf } /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } return val } Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { checkOffset(offset, byteLength, this.length) } var val = this[offset + --byteLength] var mul = 1 while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul } return val } Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var i = byteLength var mul = 1 var val = this[offset + --i] while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') if (value > max || value < min) throw new RangeError('value is out of bounds') if (offset + ext > buf.length) throw new RangeError('index out of range') } Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) var mul = 1 var i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) var i = byteLength - 1 var mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) this[offset] = value return offset + 1 } function objectWriteUInt16 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> (littleEndian ? i : 1 - i) * 8 } } Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = value } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } function objectWriteUInt32 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffffffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } } Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = value } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = value } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = 0 var mul = 1 var sub = value < 0 ? 1 : 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = byteLength - 1 var mul = 1 var sub = value < 0 ? 1 : 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) if (value < 0) value = 0xff + value + 1 this[offset] = value return offset + 1 } Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = value } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = value } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } function checkIEEE754 (buf, value, offset, ext, max, min) { if (value > max || value < min) throw new RangeError('value is out of bounds') if (offset + ext > buf.length) throw new RangeError('index out of range') if (offset < 0) throw new RangeError('index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) } ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function copy (target, targetStart, start, end) { if (!start) start = 0 if (!end && end !== 0) end = this.length if (targetStart >= target.length) targetStart = target.length if (!targetStart) targetStart = 0 if (end > 0 && end < start) end = start // Copy 0 bytes; we're done if (end === start) return 0 if (target.length === 0 || this.length === 0) return 0 // Fatal error conditions if (targetStart < 0) { throw new RangeError('targetStart out of bounds') } if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') if (end < 0) throw new RangeError('sourceEnd out of bounds') // Are we oob? if (end > this.length) end = this.length if (target.length - targetStart < end - start) { end = target.length - targetStart + start } var len = end - start var i if (this === target && start < targetStart && targetStart < end) { // descending copy from end for (i = len - 1; i >= 0; i--) { target[i + targetStart] = this[i + start] } } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { // ascending copy from start for (i = 0; i < len; i++) { target[i + targetStart] = this[i + start] } } else { target._set(this.subarray(start, start + len), targetStart) } return len } // fill(value, start=0, end=buffer.length) Buffer.prototype.fill = function fill (value, start, end) { if (!value) value = 0 if (!start) start = 0 if (!end) end = this.length if (end < start) throw new RangeError('end < start') // Fill 0 bytes; we're done if (end === start) return if (this.length === 0) return if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') if (end < 0 || end > this.length) throw new RangeError('end out of bounds') var i if (typeof value === 'number') { for (i = start; i < end; i++) { this[i] = value } } else { var bytes = utf8ToBytes(value.toString()) var len = bytes.length for (i = start; i < end; i++) { this[i] = bytes[i % len] } } return this } /** * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. * Added in Node 0.12. Only available in browsers that support ArrayBuffer. */ Buffer.prototype.toArrayBuffer = function toArrayBuffer () { if (typeof Uint8Array !== 'undefined') { if (Buffer.TYPED_ARRAY_SUPPORT) { return (new Buffer(this)).buffer } else { var buf = new Uint8Array(this.length) for (var i = 0, len = buf.length; i < len; i += 1) { buf[i] = this[i] } return buf.buffer } } else { throw new TypeError('Buffer.toArrayBuffer not supported in this browser') } } // HELPER FUNCTIONS // ================ var BP = Buffer.prototype /** * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods */ Buffer._augment = function _augment (arr) { arr.constructor = Buffer arr._isBuffer = true // save reference to original Uint8Array set method before overwriting arr._set = arr.set // deprecated arr.get = BP.get arr.set = BP.set arr.write = BP.write arr.toString = BP.toString arr.toLocaleString = BP.toString arr.toJSON = BP.toJSON arr.equals = BP.equals arr.compare = BP.compare arr.indexOf = BP.indexOf arr.copy = BP.copy arr.slice = BP.slice arr.readUIntLE = BP.readUIntLE arr.readUIntBE = BP.readUIntBE arr.readUInt8 = BP.readUInt8 arr.readUInt16LE = BP.readUInt16LE arr.readUInt16BE = BP.readUInt16BE arr.readUInt32LE = BP.readUInt32LE arr.readUInt32BE = BP.readUInt32BE arr.readIntLE = BP.readIntLE arr.readIntBE = BP.readIntBE arr.readInt8 = BP.readInt8 arr.readInt16LE = BP.readInt16LE arr.readInt16BE = BP.readInt16BE arr.readInt32LE = BP.readInt32LE arr.readInt32BE = BP.readInt32BE arr.readFloatLE = BP.readFloatLE arr.readFloatBE = BP.readFloatBE arr.readDoubleLE = BP.readDoubleLE arr.readDoubleBE = BP.readDoubleBE arr.writeUInt8 = BP.writeUInt8 arr.writeUIntLE = BP.writeUIntLE arr.writeUIntBE = BP.writeUIntBE arr.writeUInt16LE = BP.writeUInt16LE arr.writeUInt16BE = BP.writeUInt16BE arr.writeUInt32LE = BP.writeUInt32LE arr.writeUInt32BE = BP.writeUInt32BE arr.writeIntLE = BP.writeIntLE arr.writeIntBE = BP.writeIntBE arr.writeInt8 = BP.writeInt8 arr.writeInt16LE = BP.writeInt16LE arr.writeInt16BE = BP.writeInt16BE arr.writeInt32LE = BP.writeInt32LE arr.writeInt32BE = BP.writeInt32BE arr.writeFloatLE = BP.writeFloatLE arr.writeFloatBE = BP.writeFloatBE arr.writeDoubleLE = BP.writeDoubleLE arr.writeDoubleBE = BP.writeDoubleBE arr.fill = BP.fill arr.inspect = BP.inspect arr.toArrayBuffer = BP.toArrayBuffer return arr } var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not str = stringtrim(str).replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '=' } return str } function stringtrim (str) { if (str.trim) return str.trim() return str.replace(/^\s+|\s+$/g, '') } function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) } function utf8ToBytes (string, units) { units = units || Infinity var codePoint var length = string.length var leadSurrogate = null var bytes = [] for (var i = 0; i < length; i++) { codePoint = string.charCodeAt(i) // is surrogate component if (codePoint > 0xD7FF && codePoint < 0xE000) { // last char was a lead if (!leadSurrogate) { // no lead yet if (codePoint > 0xDBFF) { // unexpected trail if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } else if (i + 1 === length) { // unpaired lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // valid lead leadSurrogate = codePoint continue } // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } // valid surrogate pair codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 } else if (leadSurrogate) { // valid bmp char, but last char was a lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } leadSurrogate = null // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { var byteArray = [] for (var i = 0; i < str.length; i++) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { var c, hi, lo var byteArray = [] for (var i = 0; i < str.length; i++) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length) { for (var i = 0; i < length; i++) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } },{"base64-js":16,"ieee754":17,"is-array":18}],16:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { 'use strict'; var Arr = (typeof Uint8Array !== 'undefined') ? Uint8Array : Array var PLUS = '+'.charCodeAt(0) var SLASH = '/'.charCodeAt(0) var NUMBER = '0'.charCodeAt(0) var LOWER = 'a'.charCodeAt(0) var UPPER = 'A'.charCodeAt(0) var PLUS_URL_SAFE = '-'.charCodeAt(0) var SLASH_URL_SAFE = '_'.charCodeAt(0) function decode (elt) { var code = elt.charCodeAt(0) if (code === PLUS || code === PLUS_URL_SAFE) return 62 // '+' if (code === SLASH || code === SLASH_URL_SAFE) return 63 // '/' if (code < NUMBER) return -1 //no match if (code < NUMBER + 10) return code - NUMBER + 26 + 26 if (code < UPPER + 26) return code - UPPER if (code < LOWER + 26) return code - LOWER + 26 } function b64ToByteArray (b64) { var i, j, l, tmp, placeHolders, arr if (b64.length % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4') } // the number of equal signs (place holders) // if there are two placeholders, than the two characters before it // represent one byte // if there is only one, then the three characters before it represent 2 bytes // this is just a cheap hack to not do indexOf twice var len = b64.length placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 // base64 is 4/3 + up to two characters of the original data arr = new Arr(b64.length * 3 / 4 - placeHolders) // if there are placeholders, only get up to the last complete 4 chars l = placeHolders > 0 ? b64.length - 4 : b64.length var L = 0 function push (v) { arr[L++] = v } for (i = 0, j = 0; i < l; i += 4, j += 3) { tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) push((tmp & 0xFF0000) >> 16) push((tmp & 0xFF00) >> 8) push(tmp & 0xFF) } if (placeHolders === 2) { tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) push(tmp & 0xFF) } else if (placeHolders === 1) { tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) push((tmp >> 8) & 0xFF) push(tmp & 0xFF) } return arr } function uint8ToBase64 (uint8) { var i, extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes output = "", temp, length function encode (num) { return lookup.charAt(num) } function tripletToBase64 (num) { return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) } // go through the array every three bytes, we'll deal with trailing stuff later for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) output += tripletToBase64(temp) } // pad the end with zeros, but make sure to not forget the extra bytes switch (extraBytes) { case 1: temp = uint8[uint8.length - 1] output += encode(temp >> 2) output += encode((temp << 4) & 0x3F) output += '==' break case 2: temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) output += encode(temp >> 10) output += encode((temp >> 4) & 0x3F) output += encode((temp << 2) & 0x3F) output += '=' break } return output } exports.toByteArray = b64ToByteArray exports.fromByteArray = uint8ToBase64 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) },{}],17:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var nBits = -7 var i = isLE ? (nBytes - 1) : 0 var d = isLE ? -1 : 1 var s = buffer[offset + i] i += d e = s & ((1 << (-nBits)) - 1) s >>= (-nBits) nBits += eLen for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} m = e & ((1 << (-nBits)) - 1) e >>= (-nBits) nBits += mLen for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity) } else { m = m + Math.pow(2, mLen) e = e - eBias } return (s ? -1 : 1) * m * Math.pow(2, e - mLen) } exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c var eLen = nBytes * 8 - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) var i = isLE ? 0 : (nBytes - 1) var d = isLE ? 1 : -1 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 value = Math.abs(value) if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0 e = eMax } else { e = Math.floor(Math.log(value) / Math.LN2) if (value * (c = Math.pow(2, -e)) < 1) { e-- c *= 2 } if (e + eBias >= 1) { value += rt / c } else { value += rt * Math.pow(2, 1 - eBias) } if (value * c >= 2) { e++ c /= 2 } if (e + eBias >= eMax) { m = 0 e = eMax } else if (e + eBias >= 1) { m = (value * c - 1) * Math.pow(2, mLen) e = e + eBias } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) e = 0 } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = (e << mLen) | m eLen += mLen for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128 } },{}],18:[function(require,module,exports){ /** * isArray */ var isArray = Array.isArray; /** * toString */ var str = Object.prototype.toString; /** * Whether or not the given `val` * is an array. * * example: * * isArray([]); * // > true * isArray(arguments); * // > false * isArray(''); * // > false * * @param {mixed} val * @return {bool} */ module.exports = isArray || function (val) { return !! val && '[object Array]' == str.call(val); }; },{}],19:[function(require,module,exports){ /* jshint node: true */ (function () { "use strict"; function CookieAccessInfo(domain, path, secure, script) { if (this instanceof CookieAccessInfo) { this.domain = domain || undefined; this.path = path || "/"; this.secure = !!secure; this.script = !!script; return this; } return new CookieAccessInfo(domain, path, secure, script); } exports.CookieAccessInfo = CookieAccessInfo; function Cookie(cookiestr, request_domain, request_path) { if (cookiestr instanceof Cookie) { return cookiestr; } if (this instanceof Cookie) { this.name = null; this.value = null; this.expiration_date = Infinity; this.path = String(request_path || "/"); this.explicit_path = false; this.domain = request_domain || null; this.explicit_domain = false; this.secure = false; //how to define default? this.noscript = false; //httponly if (cookiestr) { this.parse(cookiestr, request_domain, request_path); } return this; } return new Cookie(cookiestr, request_domain, request_path); } exports.Cookie = Cookie; Cookie.prototype.toString = function toString() { var str = [this.name + "=" + this.value]; if (this.expiration_date !== Infinity) { str.push("expires=" + (new Date(this.expiration_date)).toGMTString()); } if (this.domain) { str.push("domain=" + this.domain); } if (this.path) { str.push("path=" + this.path); } if (this.secure) { str.push("secure"); } if (this.noscript) { str.push("httponly"); } return str.join("; "); }; Cookie.prototype.toValueString = function toValueString() { return this.name + "=" + this.value; }; var cookie_str_splitter = /[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g; Cookie.prototype.parse = function parse(str, request_domain, request_path) { if (this instanceof Cookie) { var parts = str.split(";").filter(function (value) { return !!value; }), pair = parts[0].match(/([^=]+)=([\s\S]*)/), key = pair[1], value = pair[2], i; this.name = key; this.value = value; for (i = 1; i < parts.length; i += 1) { pair = parts[i].match(/([^=]+)(?:=([\s\S]*))?/); key = pair[1].trim().toLowerCase(); value = pair[2]; switch (key) { case "httponly": this.noscript = true; break; case "expires": this.expiration_date = value ? Number(Date.parse(value)) : Infinity; break; case "path": this.path = value ? value.trim() : ""; this.explicit_path = true; break; case "domain": this.domain = value ? value.trim() : ""; this.explicit_domain = !!this.domain; break; case "secure": this.secure = true; break; } } if (!this.explicit_path) { this.path = request_path || "/"; } if (!this.explicit_domain) { this.domain = request_domain; } return this; } return new Cookie().parse(str, request_domain, request_path); }; Cookie.prototype.matches = function matches(access_info) { if (this.noscript && access_info.script || this.secure && !access_info.secure || !this.collidesWith(access_info)) { return false; } return true; }; Cookie.prototype.collidesWith = function collidesWith(access_info) { if ((this.path && !access_info.path) || (this.domain && !access_info.domain)) { return false; } if (this.path && access_info.path.indexOf(this.path) !== 0) { return false; } if (this.explicit_path && access_info.path.indexOf( this.path ) !== 0) { return false; } var access_domain = access_info.domain && access_info.domain.replace(/^[\.]/,''); var cookie_domain = this.domain && this.domain.replace(/^[\.]/,''); if (cookie_domain === access_domain) { return true; } if (cookie_domain) { if (!this.explicit_domain) { return false; // we already checked if the domains were exactly the same } var wildcard = access_domain.indexOf(cookie_domain); if (wildcard === -1 || wildcard !== access_domain.length - cookie_domain.length) { return false; } return true; } return true; }; function CookieJar() { var cookies, cookies_list, collidable_cookie; if (this instanceof CookieJar) { cookies = Object.create(null); //name: [Cookie] this.setCookie = function setCookie(cookie, request_domain, request_path) { var remove, i; cookie = new Cookie(cookie, request_domain, request_path); //Delete the cookie if the set is past the current time remove = cookie.expiration_date <= Date.now(); if (cookies[cookie.name] !== undefined) { cookies_list = cookies[cookie.name]; for (i = 0; i < cookies_list.length; i += 1) { collidable_cookie = cookies_list[i]; if (collidable_cookie.collidesWith(cookie)) { if (remove) { cookies_list.splice(i, 1); if (cookies_list.length === 0) { delete cookies[cookie.name]; } return false; } cookies_list[i] = cookie; return cookie; } } if (remove) { return false; } cookies_list.push(cookie); return cookie; } if (remove) { return false; } cookies[cookie.name] = [cookie]; return cookies[cookie.name]; }; //returns a cookie this.getCookie = function getCookie(cookie_name, access_info) { var cookie, i; cookies_list = cookies[cookie_name]; if (!cookies_list) { return; } for (i = 0; i < cookies_list.length; i += 1) { cookie = cookies_list[i]; if (cookie.expiration_date <= Date.now()) { if (cookies_list.length === 0) { delete cookies[cookie.name]; } continue; } if (cookie.matches(access_info)) { return cookie; } } }; //returns a list of cookies this.getCookies = function getCookies(access_info) { var matches = [], cookie_name, cookie; for (cookie_name in cookies) { cookie = this.getCookie(cookie_name, access_info); if (cookie) { matches.push(cookie); } } matches.toString = function toString() { return matches.join(":"); }; matches.toValueString = function toValueString() { return matches.map(function (c) { return c.toValueString(); }).join(';'); }; return matches; }; return this; } return new CookieJar(); } exports.CookieJar = CookieJar; //returns list of cookies that were set correctly. Cookies that are expired and removed are not returned. CookieJar.prototype.setCookies = function setCookies(cookies, request_domain, request_path) { cookies = Array.isArray(cookies) ? cookies : cookies.split(cookie_str_splitter); var successful = [], i, cookie; cookies = cookies.map(function(item){ return new Cookie(item, request_domain, request_path); }); for (i = 0; i < cookies.length; i += 1) { cookie = cookies[i]; if (this.setCookie(cookie, request_domain, request_path)) { successful.push(cookie); } } return successful; }; }()); },{}],20:[function(require,module,exports){ 'use strict'; var yaml = require('./lib/js-yaml.js'); module.exports = yaml; },{"./lib/js-yaml.js":21}],21:[function(require,module,exports){ 'use strict'; var loader = require('./js-yaml/loader'); var dumper = require('./js-yaml/dumper'); function deprecated(name) { return function () { throw new Error('Function ' + name + ' is deprecated and cannot be used.'); }; } module.exports.Type = require('./js-yaml/type'); module.exports.Schema = require('./js-yaml/schema'); module.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe'); module.exports.JSON_SCHEMA = require('./js-yaml/schema/json'); module.exports.CORE_SCHEMA = require('./js-yaml/schema/core'); module.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe'); module.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full'); module.exports.load = loader.load; module.exports.loadAll = loader.loadAll; module.exports.safeLoad = loader.safeLoad; module.exports.safeLoadAll = loader.safeLoadAll; module.exports.dump = dumper.dump; module.exports.safeDump = dumper.safeDump; module.exports.YAMLException = require('./js-yaml/exception'); // Deprecated schema names from JS-YAML 2.0.x module.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe'); module.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe'); module.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full'); // Deprecated functions from JS-YAML 1.x.x module.exports.scan = deprecated('scan'); module.exports.parse = deprecated('parse'); module.exports.compose = deprecated('compose'); module.exports.addConstructor = deprecated('addConstructor'); },{"./js-yaml/dumper":23,"./js-yaml/exception":24,"./js-yaml/loader":25,"./js-yaml/schema":27,"./js-yaml/schema/core":28,"./js-yaml/schema/default_full":29,"./js-yaml/schema/default_safe":30,"./js-yaml/schema/failsafe":31,"./js-yaml/schema/json":32,"./js-yaml/type":33}],22:[function(require,module,exports){ 'use strict'; function isNothing(subject) { return (typeof subject === 'undefined') || (null === subject); } function isObject(subject) { return (typeof subject === 'object') && (null !== subject); } function toArray(sequence) { if (Array.isArray(sequence)) { return sequence; } else if (isNothing(sequence)) { return []; } return [ sequence ]; } function extend(target, source) { var index, length, key, sourceKeys; if (source) { sourceKeys = Object.keys(source); for (index = 0, length = sourceKeys.length; index < length; index += 1) { key = sourceKeys[index]; target[key] = source[key]; } } return target; } function repeat(string, count) { var result = '', cycle; for (cycle = 0; cycle < count; cycle += 1) { result += string; } return result; } function isNegativeZero(number) { return (0 === number) && (Number.NEGATIVE_INFINITY === 1 / number); } module.exports.isNothing = isNothing; module.exports.isObject = isObject; module.exports.toArray = toArray; module.exports.repeat = repeat; module.exports.isNegativeZero = isNegativeZero; module.exports.extend = extend; },{}],23:[function(require,module,exports){ 'use strict'; /*eslint-disable no-use-before-define*/ var common = require('./common'); var YAMLException = require('./exception'); var DEFAULT_FULL_SCHEMA = require('./schema/default_full'); var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe'); var _toString = Object.prototype.toString; var _hasOwnProperty = Object.prototype.hasOwnProperty; var CHAR_TAB = 0x09; /* Tab */ var CHAR_LINE_FEED = 0x0A; /* LF */ var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ var CHAR_SPACE = 0x20; /* Space */ var CHAR_EXCLAMATION = 0x21; /* ! */ var CHAR_DOUBLE_QUOTE = 0x22; /* " */ var CHAR_SHARP = 0x23; /* # */ var CHAR_PERCENT = 0x25; /* % */ var CHAR_AMPERSAND = 0x26; /* & */ var CHAR_SINGLE_QUOTE = 0x27; /* ' */ var CHAR_ASTERISK = 0x2A; /* * */ var CHAR_COMMA = 0x2C; /* , */ var CHAR_MINUS = 0x2D; /* - */ var CHAR_COLON = 0x3A; /* : */ var CHAR_GREATER_THAN = 0x3E; /* > */ var CHAR_QUESTION = 0x3F; /* ? */ var CHAR_COMMERCIAL_AT = 0x40; /* @ */ var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ var CHAR_GRAVE_ACCENT = 0x60; /* ` */ var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ var CHAR_VERTICAL_LINE = 0x7C; /* | */ var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ var ESCAPE_SEQUENCES = {}; ESCAPE_SEQUENCES[0x00] = '\\0'; ESCAPE_SEQUENCES[0x07] = '\\a'; ESCAPE_SEQUENCES[0x08] = '\\b'; ESCAPE_SEQUENCES[0x09] = '\\t'; ESCAPE_SEQUENCES[0x0A] = '\\n'; ESCAPE_SEQUENCES[0x0B] = '\\v'; ESCAPE_SEQUENCES[0x0C] = '\\f'; ESCAPE_SEQUENCES[0x0D] = '\\r'; ESCAPE_SEQUENCES[0x1B] = '\\e'; ESCAPE_SEQUENCES[0x22] = '\\"'; ESCAPE_SEQUENCES[0x5C] = '\\\\'; ESCAPE_SEQUENCES[0x85] = '\\N'; ESCAPE_SEQUENCES[0xA0] = '\\_'; ESCAPE_SEQUENCES[0x2028] = '\\L'; ESCAPE_SEQUENCES[0x2029] = '\\P'; var DEPRECATED_BOOLEANS_SYNTAX = [ 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' ]; function compileStyleMap(schema, map) { var result, keys, index, length, tag, style, type; if (null === map) { return {}; } result = {}; keys = Object.keys(map); for (index = 0, length = keys.length; index < length; index += 1) { tag = keys[index]; style = String(map[tag]); if ('!!' === tag.slice(0, 2)) { tag = 'tag:yaml.org,2002:' + tag.slice(2); } type = schema.compiledTypeMap[tag]; if (type && _hasOwnProperty.call(type.styleAliases, style)) { style = type.styleAliases[style]; } result[tag] = style; } return result; } function encodeHex(character) { var string, handle, length; string = character.toString(16).toUpperCase(); if (character <= 0xFF) { handle = 'x'; length = 2; } else if (character <= 0xFFFF) { handle = 'u'; length = 4; } else if (character <= 0xFFFFFFFF) { handle = 'U'; length = 8; } else { throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); } return '\\' + handle + common.repeat('0', length - string.length) + string; } function State(options) { this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; this.indent = Math.max(1, (options['indent'] || 2)); this.skipInvalid = options['skipInvalid'] || false; this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); this.styleMap = compileStyleMap(this.schema, options['styles'] || null); this.sortKeys = options['sortKeys'] || false; this.lineWidth = options['lineWidth'] || 80; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; this.tag = null; this.result = ''; this.duplicates = []; this.usedDuplicates = null; } function indentString(string, spaces) { var ind = common.repeat(' ', spaces), position = 0, next = -1, result = '', line, length = string.length; while (position < length) { next = string.indexOf('\n', position); if (next === -1) { line = string.slice(position); position = length; } else { line = string.slice(position, next + 1); position = next + 1; } if (line.length && line !== '\n') { result += ind; } result += line; } return result; } function generateNextLine(state, level) { return '\n' + common.repeat(' ', state.indent * level); } function testImplicitResolving(state, str) { var index, length, type; for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { type = state.implicitTypes[index]; if (type.resolve(str)) { return true; } } return false; } function StringBuilder(source) { this.source = source; this.result = ''; this.checkpoint = 0; } StringBuilder.prototype.takeUpTo = function (position) { var er; if (position < this.checkpoint) { er = new Error('position should be > checkpoint'); er.position = position; er.checkpoint = this.checkpoint; throw er; } this.result += this.source.slice(this.checkpoint, position); this.checkpoint = position; return this; }; StringBuilder.prototype.escapeChar = function () { var character, esc; character = this.source.charCodeAt(this.checkpoint); esc = ESCAPE_SEQUENCES[character] || encodeHex(character); this.result += esc; this.checkpoint += 1; return this; }; StringBuilder.prototype.finish = function () { if (this.source.length > this.checkpoint) { this.takeUpTo(this.source.length); } }; function writeScalar(state, object, level, iskey) { var simple, first, spaceWrap, folded, literal, single, double, sawLineFeed, linePosition, longestLine, indent, max, character, position, escapeSeq, hexEsc, previous, lineLength, modifier, trailingLineBreaks, result; if (0 === object.length) { state.dump = "''"; return; } if (-1 !== DEPRECATED_BOOLEANS_SYNTAX.indexOf(object)) { state.dump = "'" + object + "'"; return; } simple = true; first = object.length ? object.charCodeAt(0) : 0; spaceWrap = (CHAR_SPACE === first || CHAR_SPACE === object.charCodeAt(object.length - 1)); // Simplified check for restricted first characters // http://www.yaml.org/spec/1.2/spec.html#ns-plain-first%28c%29 if (CHAR_MINUS === first || CHAR_QUESTION === first || CHAR_COMMERCIAL_AT === first || CHAR_GRAVE_ACCENT === first) { simple = false; } // can only use > and | if not wrapped in spaces or is not a key. if (spaceWrap) { simple = false; folded = false; literal = false; } else { folded = !iskey; literal = !iskey; } single = true; double = new StringBuilder(object); sawLineFeed = false; linePosition = 0; longestLine = 0; indent = state.indent * level; max = state.lineWidth; if (max === -1) { // Replace -1 with biggest ingeger number according to // http://ecma262-5.com/ELS5_HTML.htm#Section_8.5 max = 9007199254740991; } if (indent < 40) { max -= indent; } else { max = 40; } for (position = 0; position < object.length; position++) { character = object.charCodeAt(position); if (simple) { // Characters that can never appear in the simple scalar if (!simpleChar(character)) { simple = false; } else { // Still simple. If we make it all the way through like // this, then we can just dump the string as-is. continue; } } if (single && character === CHAR_SINGLE_QUOTE) { single = false; } escapeSeq = ESCAPE_SEQUENCES[character]; hexEsc = needsHexEscape(character); if (!escapeSeq && !hexEsc) { continue; } if (character !== CHAR_LINE_FEED && character !== CHAR_DOUBLE_QUOTE && character !== CHAR_SINGLE_QUOTE) { folded = false; literal = false; } else if (character === CHAR_LINE_FEED) { sawLineFeed = true; single = false; if (position > 0) { previous = object.charCodeAt(position - 1); if (previous === CHAR_SPACE) { literal = false; folded = false; } } if (folded) { lineLength = position - linePosition; linePosition = position; if (lineLength > longestLine) { longestLine = lineLength; } } } if (character !== CHAR_DOUBLE_QUOTE) { single = false; } double.takeUpTo(position); double.escapeChar(); } if (simple && testImplicitResolving(state, object)) { simple = false; } modifier = ''; if (folded || literal) { trailingLineBreaks = 0; if (object.charCodeAt(object.length - 1) === CHAR_LINE_FEED) { trailingLineBreaks += 1; if (object.charCodeAt(object.length - 2) === CHAR_LINE_FEED) { trailingLineBreaks += 1; } } if (trailingLineBreaks === 0) { modifier = '-'; } else if (trailingLineBreaks === 2) { modifier = '+'; } } if (literal && longestLine < max) { folded = false; } // If it's literally one line, then don't bother with the literal. // We may still want to do a fold, though, if it's a super long line. if (!sawLineFeed) { literal = false; } if (simple) { state.dump = object; } else if (single) { state.dump = '\'' + object + '\''; } else if (folded) { result = fold(object, max); state.dump = '>' + modifier + '\n' + indentString(result, indent); } else if (literal) { if (!modifier) { object = object.replace(/\n$/, ''); } state.dump = '|' + modifier + '\n' + indentString(object, indent); } else if (double) { double.finish(); state.dump = '"' + double.result + '"'; } else { throw new Error('Failed to dump scalar value'); } return; } // The `trailing` var is a regexp match of any trailing `\n` characters. // // There are three cases we care about: // // 1. One trailing `\n` on the string. Just use `|` or `>`. // This is the assumed default. (trailing = null) // 2. No trailing `\n` on the string. Use `|-` or `>-` to "chomp" the end. // 3. More than one trailing `\n` on the string. Use `|+` or `>+`. // // In the case of `>+`, these line breaks are *not* doubled (like the line // breaks within the string), so it's important to only end with the exact // same number as we started. function fold(object, max) { var result = '', position = 0, length = object.length, trailing = /\n+$/.exec(object), newLine; if (trailing) { length = trailing.index + 1; } while (position < length) { newLine = object.indexOf('\n', position); if (newLine > length || newLine === -1) { if (result) { result += '\n\n'; } result += foldLine(object.slice(position, length), max); position = length; } else { if (result) { result += '\n\n'; } result += foldLine(object.slice(position, newLine), max); position = newLine + 1; } } if (trailing && trailing[0] !== '\n') { result += trailing[0]; } return result; } function foldLine(line, max) { if (line === '') { return line; } var foldRe = /[^\s] [^\s]/g, result = '', prevMatch = 0, foldStart = 0, match = foldRe.exec(line), index, foldEnd, folded; while (match) { index = match.index; // when we cross the max len, if the previous match would've // been ok, use that one, and carry on. If there was no previous // match on this fold section, then just have a long line. if (index - foldStart > max) { if (prevMatch !== foldStart) { foldEnd = prevMatch; } else { foldEnd = index; } if (result) { result += '\n'; } folded = line.slice(foldStart, foldEnd); result += folded; foldStart = foldEnd + 1; } prevMatch = index + 1; match = foldRe.exec(line); } if (result) { result += '\n'; } // if we end up with one last word at the end, then the last bit might // be slightly bigger than we wanted, because we exited out of the loop. if (foldStart !== prevMatch && line.length - foldStart > max) { result += line.slice(foldStart, prevMatch) + '\n' + line.slice(prevMatch + 1); } else { result += line.slice(foldStart); } return result; } // Returns true if character can be found in a simple scalar function simpleChar(character) { return CHAR_TAB !== character && CHAR_LINE_FEED !== character && CHAR_CARRIAGE_RETURN !== character && CHAR_COMMA !== character && CHAR_LEFT_SQUARE_BRACKET !== character && CHAR_RIGHT_SQUARE_BRACKET !== character && CHAR_LEFT_CURLY_BRACKET !== character && CHAR_RIGHT_CURLY_BRACKET !== character && CHAR_SHARP !== character && CHAR_AMPERSAND !== character && CHAR_ASTERISK !== character && CHAR_EXCLAMATION !== character && CHAR_VERTICAL_LINE !== character && CHAR_GREATER_THAN !== character && CHAR_SINGLE_QUOTE !== character && CHAR_DOUBLE_QUOTE !== character && CHAR_PERCENT !== character && CHAR_COLON !== character && !ESCAPE_SEQUENCES[character] && !needsHexEscape(character); } // Returns true if the character code needs to be escaped. function needsHexEscape(character) { return !((0x00020 <= character && character <= 0x00007E) || (0x00085 === character) || (0x000A0 <= character && character <= 0x00D7FF) || (0x0E000 <= character && character <= 0x00FFFD) || (0x10000 <= character && character <= 0x10FFFF)); } function writeFlowSequence(state, level, object) { var _result = '', _tag = state.tag, index, length; for (index = 0, length = object.length; index < length; index += 1) { // Write only valid elements. if (writeNode(state, level, object[index], false, false)) { if (0 !== index) { _result += ', '; } _result += state.dump; } } state.tag = _tag; state.dump = '[' + _result + ']'; } function writeBlockSequence(state, level, object, compact) { var _result = '', _tag = state.tag, index, length; for (index = 0, length = object.length; index < length; index += 1) { // Write only valid elements. if (writeNode(state, level + 1, object[index], true, true)) { if (!compact || 0 !== index) { _result += generateNextLine(state, level); } _result += '- ' + state.dump; } } state.tag = _tag; state.dump = _result || '[]'; // Empty sequence if no valid values. } function writeFlowMapping(state, level, object) { var _result = '', _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer; for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ''; if (0 !== index) { pairBuffer += ', '; } objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (!writeNode(state, level, objectKey, false, false)) { continue; // Skip this pair because of invalid key; } if (state.dump.length > 1024) { pairBuffer += '? '; } pairBuffer += state.dump + ': '; if (!writeNode(state, level, objectValue, false, false)) { continue; // Skip this pair because of invalid value. } pairBuffer += state.dump; // Both key and value are valid. _result += pairBuffer; } state.tag = _tag; state.dump = '{' + _result + '}'; } function writeBlockMapping(state, level, object, compact) { var _result = '', _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer; // Allow sorting keys so that the output file is deterministic if (state.sortKeys === true) { // Default sorting objectKeyList.sort(); } else if (typeof state.sortKeys === 'function') { // Custom sort function objectKeyList.sort(state.sortKeys); } else if (state.sortKeys) { // Something is wrong throw new YAMLException('sortKeys must be a boolean or a function'); } for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ''; if (!compact || 0 !== index) { pairBuffer += generateNextLine(state, level); } objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (!writeNode(state, level + 1, objectKey, true, true, true)) { continue; // Skip this pair because of invalid key. } explicitPair = (null !== state.tag && '?' !== state.tag) || (state.dump && state.dump.length > 1024); if (explicitPair) { if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += '?'; } else { pairBuffer += '? '; } } pairBuffer += state.dump; if (explicitPair) { pairBuffer += generateNextLine(state, level); } if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { continue; // Skip this pair because of invalid value. } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += ':'; } else { pairBuffer += ': '; } pairBuffer += state.dump; // Both key and value are valid. _result += pairBuffer; } state.tag = _tag; state.dump = _result || '{}'; // Empty mapping if no valid pairs. } function detectType(state, object, explicit) { var _result, typeList, index, length, type, style; typeList = explicit ? state.explicitTypes : state.implicitTypes; for (index = 0, length = typeList.length; index < length; index += 1) { type = typeList[index]; if ((type.instanceOf || type.predicate) && (!type.instanceOf || (('object' === typeof object) && (object instanceof type.instanceOf))) && (!type.predicate || type.predicate(object))) { state.tag = explicit ? type.tag : '?'; if (type.represent) { style = state.styleMap[type.tag] || type.defaultStyle; if ('[object Function]' === _toString.call(type.represent)) { _result = type.represent(object, style); } else if (_hasOwnProperty.call(type.represent, style)) { _result = type.represent[style](object, style); } else { throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); } state.dump = _result; } return true; } } return false; } // Serializes `object` and writes it to global `result`. // Returns true on success, or false on invalid object. // function writeNode(state, level, object, block, compact, iskey) { state.tag = null; state.dump = object; if (!detectType(state, object, false)) { detectType(state, object, true); } var type = _toString.call(state.dump); if (block) { block = (0 > state.flowLevel || state.flowLevel > level); } var objectOrArray = '[object Object]' === type || '[object Array]' === type, duplicateIndex, duplicate; if (objectOrArray) { duplicateIndex = state.duplicates.indexOf(object); duplicate = duplicateIndex !== -1; } if ((null !== state.tag && '?' !== state.tag) || duplicate || (2 !== state.indent && level > 0)) { compact = false; } if (duplicate && state.usedDuplicates[duplicateIndex]) { state.dump = '*ref_' + duplicateIndex; } else { if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { state.usedDuplicates[duplicateIndex] = true; } if ('[object Object]' === type) { if (block && (0 !== Object.keys(state.dump).length)) { writeBlockMapping(state, level, state.dump, compact); if (duplicate) { state.dump = '&ref_' + duplicateIndex + state.dump; } } else { writeFlowMapping(state, level, state.dump); if (duplicate) { state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; } } } else if ('[object Array]' === type) { if (block && (0 !== state.dump.length)) { writeBlockSequence(state, level, state.dump, compact); if (duplicate) { state.dump = '&ref_' + duplicateIndex + state.dump; } } else { writeFlowSequence(state, level, state.dump); if (duplicate) { state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; } } } else if ('[object String]' === type) { if ('?' !== state.tag) { writeScalar(state, state.dump, level, iskey); } } else { if (state.skipInvalid) { return false; } throw new YAMLException('unacceptable kind of an object to dump ' + type); } if (null !== state.tag && '?' !== state.tag) { state.dump = '!<' + state.tag + '> ' + state.dump; } } return true; } function getDuplicateReferences(object, state) { var objects = [], duplicatesIndexes = [], index, length; inspectNode(object, objects, duplicatesIndexes); for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { state.duplicates.push(objects[duplicatesIndexes[index]]); } state.usedDuplicates = new Array(length); } function inspectNode(object, objects, duplicatesIndexes) { var objectKeyList, index, length; if (null !== object && 'object' === typeof object) { index = objects.indexOf(object); if (-1 !== index) { if (-1 === duplicatesIndexes.indexOf(index)) { duplicatesIndexes.push(index); } } else { objects.push(object); if (Array.isArray(object)) { for (index = 0, length = object.length; index < length; index += 1) { inspectNode(object[index], objects, duplicatesIndexes); } } else { objectKeyList = Object.keys(object); for (index = 0, length = objectKeyList.length; index < length; index += 1) { inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); } } } } } function dump(input, options) { options = options || {}; var state = new State(options); getDuplicateReferences(input, state); if (writeNode(state, 0, input, true, true)) { return state.dump + '\n'; } return ''; } function safeDump(input, options) { return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } module.exports.dump = dump; module.exports.safeDump = safeDump; },{"./common":22,"./exception":24,"./schema/default_full":29,"./schema/default_safe":30}],24:[function(require,module,exports){ // YAML error class. http://stackoverflow.com/questions/8458984 // 'use strict'; var inherits = require('inherit'); function YAMLException(reason, mark) { // Super constructor Error.call(this); // Include stack trace in error object if (Error.captureStackTrace) { // Chrome and NodeJS Error.captureStackTrace(this, this.constructor); } else { // FF, IE 10+ and Safari 6+. Fallback for others this.stack = (new Error()).stack || ''; } this.name = 'YAMLException'; this.reason = reason; this.mark = mark; this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); } // Inherit from Error inherits(YAMLException, Error); YAMLException.prototype.toString = function toString(compact) { var result = this.name + ': '; result += this.reason || '(unknown reason)'; if (!compact && this.mark) { result += ' ' + this.mark.toString(); } return result; }; module.exports = YAMLException; },{"inherit":51}],25:[function(require,module,exports){ 'use strict'; /*eslint-disable max-len,no-use-before-define*/ var common = require('./common'); var YAMLException = require('./exception'); var Mark = require('./mark'); var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe'); var DEFAULT_FULL_SCHEMA = require('./schema/default_full'); var _hasOwnProperty = Object.prototype.hasOwnProperty; var CONTEXT_FLOW_IN = 1; var CONTEXT_FLOW_OUT = 2; var CONTEXT_BLOCK_IN = 3; var CONTEXT_BLOCK_OUT = 4; var CHOMPING_CLIP = 1; var CHOMPING_STRIP = 2; var CHOMPING_KEEP = 3; var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; function is_EOL(c) { return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); } function is_WHITE_SPACE(c) { return (c === 0x09/* Tab */) || (c === 0x20/* Space */); } function is_WS_OR_EOL(c) { return (c === 0x09/* Tab */) || (c === 0x20/* Space */) || (c === 0x0A/* LF */) || (c === 0x0D/* CR */); } function is_FLOW_INDICATOR(c) { return 0x2C/* , */ === c || 0x5B/* [ */ === c || 0x5D/* ] */ === c || 0x7B/* { */ === c || 0x7D/* } */ === c; } function fromHexCode(c) { var lc; if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { return c - 0x30; } /*eslint-disable no-bitwise*/ lc = c | 0x20; if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { return lc - 0x61 + 10; } return -1; } function escapedHexLen(c) { if (c === 0x78/* x */) { return 2; } if (c === 0x75/* u */) { return 4; } if (c === 0x55/* U */) { return 8; } return 0; } function fromDecimalCode(c) { if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { return c - 0x30; } return -1; } function simpleEscapeSequence(c) { return (c === 0x30/* 0 */) ? '\x00' : (c === 0x61/* a */) ? '\x07' : (c === 0x62/* b */) ? '\x08' : (c === 0x74/* t */) ? '\x09' : (c === 0x09/* Tab */) ? '\x09' : (c === 0x6E/* n */) ? '\x0A' : (c === 0x76/* v */) ? '\x0B' : (c === 0x66/* f */) ? '\x0C' : (c === 0x72/* r */) ? '\x0D' : (c === 0x65/* e */) ? '\x1B' : (c === 0x20/* Space */) ? ' ' : (c === 0x22/* " */) ? '\x22' : (c === 0x2F/* / */) ? '/' : (c === 0x5C/* \ */) ? '\x5C' : (c === 0x4E/* N */) ? '\x85' : (c === 0x5F/* _ */) ? '\xA0' : (c === 0x4C/* L */) ? '\u2028' : (c === 0x50/* P */) ? '\u2029' : ''; } function charFromCodepoint(c) { if (c <= 0xFFFF) { return String.fromCharCode(c); } // Encode UTF-16 surrogate pair // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800, ((c - 0x010000) & 0x03FF) + 0xDC00); } var simpleEscapeCheck = new Array(256); // integer, for fast access var simpleEscapeMap = new Array(256); for (var i = 0; i < 256; i++) { simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; simpleEscapeMap[i] = simpleEscapeSequence(i); } function State(input, options) { this.input = input; this.filename = options['filename'] || null; this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; this.onWarning = options['onWarning'] || null; this.legacy = options['legacy'] || false; this.implicitTypes = this.schema.compiledImplicit; this.typeMap = this.schema.compiledTypeMap; this.length = input.length; this.position = 0; this.line = 0; this.lineStart = 0; this.lineIndent = 0; this.documents = []; /* this.version; this.checkLineBreaks; this.tagMap; this.anchorMap; this.tag; this.anchor; this.kind; this.result;*/ } function generateError(state, message) { return new YAMLException( message, new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); } function throwError(state, message) { throw generateError(state, message); } function throwWarning(state, message) { if (state.onWarning) { state.onWarning.call(null, generateError(state, message)); } } var directiveHandlers = { YAML: function handleYamlDirective(state, name, args) { var match, major, minor; if (null !== state.version) { throwError(state, 'duplication of %YAML directive'); } if (1 !== args.length) { throwError(state, 'YAML directive accepts exactly one argument'); } match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); if (null === match) { throwError(state, 'ill-formed argument of the YAML directive'); } major = parseInt(match[1], 10); minor = parseInt(match[2], 10); if (1 !== major) { throwError(state, 'unacceptable YAML version of the document'); } state.version = args[0]; state.checkLineBreaks = (minor < 2); if (1 !== minor && 2 !== minor) { throwWarning(state, 'unsupported YAML version of the document'); } }, TAG: function handleTagDirective(state, name, args) { var handle, prefix; if (2 !== args.length) { throwError(state, 'TAG directive accepts exactly two arguments'); } handle = args[0]; prefix = args[1]; if (!PATTERN_TAG_HANDLE.test(handle)) { throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); } if (_hasOwnProperty.call(state.tagMap, handle)) { throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); } if (!PATTERN_TAG_URI.test(prefix)) { throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); } state.tagMap[handle] = prefix; } }; function captureSegment(state, start, end, checkJson) { var _position, _length, _character, _result; if (start < end) { _result = state.input.slice(start, end); if (checkJson) { for (_position = 0, _length = _result.length; _position < _length; _position += 1) { _character = _result.charCodeAt(_position); if (!(0x09 === _character || 0x20 <= _character && _character <= 0x10FFFF)) { throwError(state, 'expected valid JSON character'); } } } else if (PATTERN_NON_PRINTABLE.test(_result)) { throwError(state, 'the stream contains non-printable characters'); } state.result += _result; } } function mergeMappings(state, destination, source) { var sourceKeys, key, index, quantity; if (!common.isObject(source)) { throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); } sourceKeys = Object.keys(source); for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { key = sourceKeys[index]; if (!_hasOwnProperty.call(destination, key)) { destination[key] = source[key]; } } } function storeMappingPair(state, _result, keyTag, keyNode, valueNode) { var index, quantity; keyNode = String(keyNode); if (null === _result) { _result = {}; } if ('tag:yaml.org,2002:merge' === keyTag) { if (Array.isArray(valueNode)) { for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { mergeMappings(state, _result, valueNode[index]); } } else { mergeMappings(state, _result, valueNode); } } else { _result[keyNode] = valueNode; } return _result; } function readLineBreak(state) { var ch; ch = state.input.charCodeAt(state.position); if (0x0A/* LF */ === ch) { state.position++; } else if (0x0D/* CR */ === ch) { state.position++; if (0x0A/* LF */ === state.input.charCodeAt(state.position)) { state.position++; } } else { throwError(state, 'a line break is expected'); } state.line += 1; state.lineStart = state.position; } function skipSeparationSpace(state, allowComments, checkIndent) { var lineBreaks = 0, ch = state.input.charCodeAt(state.position); while (0 !== ch) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (allowComments && 0x23/* # */ === ch) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && 0 !== ch); } if (is_EOL(ch)) { readLineBreak(state); ch = state.input.charCodeAt(state.position); lineBreaks++; state.lineIndent = 0; while (0x20/* Space */ === ch) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } } else { break; } } if (-1 !== checkIndent && 0 !== lineBreaks && state.lineIndent < checkIndent) { throwWarning(state, 'deficient indentation'); } return lineBreaks; } function testDocumentSeparator(state) { var _position = state.position, ch; ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested // in parent on each call, for efficiency. No needs to test here again. if ((0x2D/* - */ === ch || 0x2E/* . */ === ch) && state.input.charCodeAt(_position + 1) === ch && state.input.charCodeAt(_position + 2) === ch) { _position += 3; ch = state.input.charCodeAt(_position); if (ch === 0 || is_WS_OR_EOL(ch)) { return true; } } return false; } function writeFoldedLines(state, count) { if (1 === count) { state.result += ' '; } else if (count > 1) { state.result += common.repeat('\n', count - 1); } } function readPlainScalar(state, nodeIndent, withinFlowCollection) { var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch; ch = state.input.charCodeAt(state.position); if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || 0x23/* # */ === ch || 0x26/* & */ === ch || 0x2A/* * */ === ch || 0x21/* ! */ === ch || 0x7C/* | */ === ch || 0x3E/* > */ === ch || 0x27/* ' */ === ch || 0x22/* " */ === ch || 0x25/* % */ === ch || 0x40/* @ */ === ch || 0x60/* ` */ === ch) { return false; } if (0x3F/* ? */ === ch || 0x2D/* - */ === ch) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { return false; } } state.kind = 'scalar'; state.result = ''; captureStart = captureEnd = state.position; hasPendingContent = false; while (0 !== ch) { if (0x3A/* : */ === ch) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { break; } } else if (0x23/* # */ === ch) { preceding = state.input.charCodeAt(state.position - 1); if (is_WS_OR_EOL(preceding)) { break; } } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { break; } else if (is_EOL(ch)) { _line = state.line; _lineStart = state.lineStart; _lineIndent = state.lineIndent; skipSeparationSpace(state, false, -1); if (state.lineIndent >= nodeIndent) { hasPendingContent = true; ch = state.input.charCodeAt(state.position); continue; } else { state.position = captureEnd; state.line = _line; state.lineStart = _lineStart; state.lineIndent = _lineIndent; break; } } if (hasPendingContent) { captureSegment(state, captureStart, captureEnd, false); writeFoldedLines(state, state.line - _line); captureStart = captureEnd = state.position; hasPendingContent = false; } if (!is_WHITE_SPACE(ch)) { captureEnd = state.position + 1; } ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, captureEnd, false); if (state.result) { return true; } state.kind = _kind; state.result = _result; return false; } function readSingleQuotedScalar(state, nodeIndent) { var ch, captureStart, captureEnd; ch = state.input.charCodeAt(state.position); if (0x27/* ' */ !== ch) { return false; } state.kind = 'scalar'; state.result = ''; state.position++; captureStart = captureEnd = state.position; while (0 !== (ch = state.input.charCodeAt(state.position))) { if (0x27/* ' */ === ch) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (0x27/* ' */ === ch) { captureStart = captureEnd = state.position; state.position++; } else { return true; } } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, 'unexpected end of the document within a single quoted scalar'); } else { state.position++; captureEnd = state.position; } } throwError(state, 'unexpected end of the stream within a single quoted scalar'); } function readDoubleQuotedScalar(state, nodeIndent) { var captureStart, captureEnd, hexLength, hexResult, tmp, ch; ch = state.input.charCodeAt(state.position); if (0x22/* " */ !== ch) { return false; } state.kind = 'scalar'; state.result = ''; state.position++; captureStart = captureEnd = state.position; while (0 !== (ch = state.input.charCodeAt(state.position))) { if (0x22/* " */ === ch) { captureSegment(state, captureStart, state.position, true); state.position++; return true; } else if (0x5C/* \ */ === ch) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (is_EOL(ch)) { skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast? } else if (ch < 256 && simpleEscapeCheck[ch]) { state.result += simpleEscapeMap[ch]; state.position++; } else if ((tmp = escapedHexLen(ch)) > 0) { hexLength = tmp; hexResult = 0; for (; hexLength > 0; hexLength--) { ch = state.input.charCodeAt(++state.position); if ((tmp = fromHexCode(ch)) >= 0) { hexResult = (hexResult << 4) + tmp; } else { throwError(state, 'expected hexadecimal character'); } } state.result += charFromCodepoint(hexResult); state.position++; } else { throwError(state, 'unknown escape sequence'); } captureStart = captureEnd = state.position; } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, 'unexpected end of the document within a double quoted scalar'); } else { state.position++; captureEnd = state.position; } } throwError(state, 'unexpected end of the stream within a double quoted scalar'); } function readFlowCollection(state, nodeIndent) { var readNext = true, _line, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, keyNode, keyTag, valueNode, ch; ch = state.input.charCodeAt(state.position); if (ch === 0x5B/* [ */) { terminator = 0x5D;/* ] */ isMapping = false; _result = []; } else if (ch === 0x7B/* { */) { terminator = 0x7D;/* } */ isMapping = true; _result = {}; } else { return false; } if (null !== state.anchor) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(++state.position); while (0 !== ch) { skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === terminator) { state.position++; state.tag = _tag; state.anchor = _anchor; state.kind = isMapping ? 'mapping' : 'sequence'; state.result = _result; return true; } else if (!readNext) { throwError(state, 'missed comma between flow collection entries'); } keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; if (0x3F/* ? */ === ch) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following)) { isPair = isExplicitPair = true; state.position++; skipSeparationSpace(state, true, nodeIndent); } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); keyTag = state.tag; keyNode = state.result; skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if ((isExplicitPair || state.line === _line) && 0x3A/* : */ === ch) { isPair = true; ch = state.input.charCodeAt(++state.position); skipSeparationSpace(state, true, nodeIndent); composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); valueNode = state.result; } if (isMapping) { storeMappingPair(state, _result, keyTag, keyNode, valueNode); } else if (isPair) { _result.push(storeMappingPair(state, null, keyTag, keyNode, valueNode)); } else { _result.push(keyNode); } skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (0x2C/* , */ === ch) { readNext = true; ch = state.input.charCodeAt(++state.position); } else { readNext = false; } } throwError(state, 'unexpected end of the stream within a flow collection'); } function readBlockScalar(state, nodeIndent) { var captureStart, folding, chomping = CHOMPING_CLIP, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch === 0x7C/* | */) { folding = false; } else if (ch === 0x3E/* > */) { folding = true; } else { return false; } state.kind = 'scalar'; state.result = ''; while (0 !== ch) { ch = state.input.charCodeAt(++state.position); if (0x2B/* + */ === ch || 0x2D/* - */ === ch) { if (CHOMPING_CLIP === chomping) { chomping = (0x2B/* + */ === ch) ? CHOMPING_KEEP : CHOMPING_STRIP; } else { throwError(state, 'repeat of a chomping mode identifier'); } } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); } else if (!detectedIndent) { textIndent = nodeIndent + tmp - 1; detectedIndent = true; } else { throwError(state, 'repeat of an indentation width identifier'); } } else { break; } } if (is_WHITE_SPACE(ch)) { do { ch = state.input.charCodeAt(++state.position); } while (is_WHITE_SPACE(ch)); if (0x23/* # */ === ch) { do { ch = state.input.charCodeAt(++state.position); } while (!is_EOL(ch) && (0 !== ch)); } } while (0 !== ch) { readLineBreak(state); state.lineIndent = 0; ch = state.input.charCodeAt(state.position); while ((!detectedIndent || state.lineIndent < textIndent) && (0x20/* Space */ === ch)) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } if (!detectedIndent && state.lineIndent > textIndent) { textIndent = state.lineIndent; } if (is_EOL(ch)) { emptyLines++; continue; } // End of the scalar. if (state.lineIndent < textIndent) { // Perform the chomping. if (chomping === CHOMPING_KEEP) { state.result += common.repeat('\n', emptyLines); } else if (chomping === CHOMPING_CLIP) { if (detectedIndent) { // i.e. only if the scalar is not empty. state.result += '\n'; } } // Break this `while` cycle and go to the funciton's epilogue. break; } // Folded style: use fancy rules to handle line breaks. if (folding) { // Lines starting with white space characters (more-indented lines) are not folded. if (is_WHITE_SPACE(ch)) { atMoreIndented = true; state.result += common.repeat('\n', emptyLines + 1); // End of more-indented block. } else if (atMoreIndented) { atMoreIndented = false; state.result += common.repeat('\n', emptyLines + 1); // Just one line break - perceive as the same line. } else if (0 === emptyLines) { if (detectedIndent) { // i.e. only if we have already read some scalar content. state.result += ' '; } // Several line breaks - perceive as different lines. } else { state.result += common.repeat('\n', emptyLines); } // Literal style: just add exact number of line breaks between content lines. } else if (detectedIndent) { // If current line isn't the first one - count line break from the last content line. state.result += common.repeat('\n', emptyLines + 1); } else { // In case of the first content line - count only empty lines. state.result += common.repeat('\n', emptyLines); } detectedIndent = true; emptyLines = 0; captureStart = state.position; while (!is_EOL(ch) && (0 !== ch)) { ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, state.position, false); } return true; } function readBlockSequence(state, nodeIndent) { var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch; if (null !== state.anchor) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (0 !== ch) { if (0x2D/* - */ !== ch) { break; } following = state.input.charCodeAt(state.position + 1); if (!is_WS_OR_EOL(following)) { break; } detected = true; state.position++; if (skipSeparationSpace(state, true, -1)) { if (state.lineIndent <= nodeIndent) { _result.push(null); ch = state.input.charCodeAt(state.position); continue; } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); _result.push(state.result); skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if ((state.line === _line || state.lineIndent > nodeIndent) && (0 !== ch)) { throwError(state, 'bad indentation of a sequence entry'); } else if (state.lineIndent < nodeIndent) { break; } } if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = 'sequence'; state.result = _result; return true; } return false; } function readBlockMapping(state, nodeIndent, flowIndent) { var following, allowCompact, _line, _tag = state.tag, _anchor = state.anchor, _result = {}, keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; if (null !== state.anchor) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (0 !== ch) { following = state.input.charCodeAt(state.position + 1); _line = state.line; // Save the current line. // // Explicit notation case. There are two separate blocks: // first for the key (denoted by "?") and second for the value (denoted by ":") // if ((0x3F/* ? */ === ch || 0x3A/* : */ === ch) && is_WS_OR_EOL(following)) { if (0x3F/* ? */ === ch) { if (atExplicitKey) { storeMappingPair(state, _result, keyTag, keyNode, null); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = true; allowCompact = true; } else if (atExplicitKey) { // i.e. 0x3A/* : */ === character after the explicit key. atExplicitKey = false; allowCompact = true; } else { throwError(state, 'incomplete explicit mapping pair; a key node is missed'); } state.position += 1; ch = following; // // Implicit notation case. Flow-style node as the key first, then ":", and the value. // } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { if (state.line === _line) { ch = state.input.charCodeAt(state.position); while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (0x3A/* : */ === ch) { ch = state.input.charCodeAt(++state.position); if (!is_WS_OR_EOL(ch)) { throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); } if (atExplicitKey) { storeMappingPair(state, _result, keyTag, keyNode, null); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = false; allowCompact = false; keyTag = state.tag; keyNode = state.result; } else if (detected) { throwError(state, 'can not read an implicit mapping pair; a colon is missed'); } else { state.tag = _tag; state.anchor = _anchor; return true; // Keep the result of `composeNode`. } } else if (detected) { throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); } else { state.tag = _tag; state.anchor = _anchor; return true; // Keep the result of `composeNode`. } } else { break; // Reading is done. Go to the epilogue. } // // Common reading code for both explicit and implicit notations. // if (state.line === _line || state.lineIndent > nodeIndent) { if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { keyNode = state.result; } else { valueNode = state.result; } } if (!atExplicitKey) { storeMappingPair(state, _result, keyTag, keyNode, valueNode); keyTag = keyNode = valueNode = null; } skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); } if (state.lineIndent > nodeIndent && (0 !== ch)) { throwError(state, 'bad indentation of a mapping entry'); } else if (state.lineIndent < nodeIndent) { break; } } // // Epilogue. // // Special case: last mapping's node contains only the key in explicit notation. if (atExplicitKey) { storeMappingPair(state, _result, keyTag, keyNode, null); } // Expose the resulting mapping. if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = 'mapping'; state.result = _result; } return detected; } function readTagProperty(state) { var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch; ch = state.input.charCodeAt(state.position); if (0x21/* ! */ !== ch) { return false; } if (null !== state.tag) { throwError(state, 'duplication of a tag property'); } ch = state.input.charCodeAt(++state.position); if (0x3C/* < */ === ch) { isVerbatim = true; ch = state.input.charCodeAt(++state.position); } else if (0x21/* ! */ === ch) { isNamed = true; tagHandle = '!!'; ch = state.input.charCodeAt(++state.position); } else { tagHandle = '!'; } _position = state.position; if (isVerbatim) { do { ch = state.input.charCodeAt(++state.position); } while (0 !== ch && 0x3E/* > */ !== ch); if (state.position < state.length) { tagName = state.input.slice(_position, state.position); ch = state.input.charCodeAt(++state.position); } else { throwError(state, 'unexpected end of the stream within a verbatim tag'); } } else { while (0 !== ch && !is_WS_OR_EOL(ch)) { if (0x21/* ! */ === ch) { if (!isNamed) { tagHandle = state.input.slice(_position - 1, state.position + 1); if (!PATTERN_TAG_HANDLE.test(tagHandle)) { throwError(state, 'named tag handle cannot contain such characters'); } isNamed = true; _position = state.position + 1; } else { throwError(state, 'tag suffix cannot contain exclamation marks'); } } ch = state.input.charCodeAt(++state.position); } tagName = state.input.slice(_position, state.position); if (PATTERN_FLOW_INDICATORS.test(tagName)) { throwError(state, 'tag suffix cannot contain flow indicator characters'); } } if (tagName && !PATTERN_TAG_URI.test(tagName)) { throwError(state, 'tag name cannot contain such characters: ' + tagName); } if (isVerbatim) { state.tag = tagName; } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { state.tag = state.tagMap[tagHandle] + tagName; } else if ('!' === tagHandle) { state.tag = '!' + tagName; } else if ('!!' === tagHandle) { state.tag = 'tag:yaml.org,2002:' + tagName; } else { throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } return true; } function readAnchorProperty(state) { var _position, ch; ch = state.input.charCodeAt(state.position); if (0x26/* & */ !== ch) { return false; } if (null !== state.anchor) { throwError(state, 'duplication of an anchor property'); } ch = state.input.charCodeAt(++state.position); _position = state.position; while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, 'name of an anchor node must contain at least one character'); } state.anchor = state.input.slice(_position, state.position); return true; } function readAlias(state) { var _position, alias, ch; ch = state.input.charCodeAt(state.position); if (0x2A/* * */ !== ch) { return false; } ch = state.input.charCodeAt(++state.position); _position = state.position; while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, 'name of an alias node must contain at least one character'); } alias = state.input.slice(_position, state.position); if (!state.anchorMap.hasOwnProperty(alias)) { throwError(state, 'unidentified alias "' + alias + '"'); } state.result = state.anchorMap[alias]; skipSeparationSpace(state, true, -1); return true; } function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } } if (1 === indentStatus) { while (readTagProperty(state) || readAnchorProperty(state)) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; allowBlockCollections = allowBlockStyles; if (state.lineIndent > parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } else { allowBlockCollections = false; } } } if (allowBlockCollections) { allowBlockCollections = atNewLine || allowCompact; } if (1 === indentStatus || CONTEXT_BLOCK_OUT === nodeContext) { if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { flowIndent = parentIndent; } else { flowIndent = parentIndent + 1; } blockIndent = state.position - state.lineStart; if (1 === indentStatus) { if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { hasContent = true; } else { if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { hasContent = true; } else if (readAlias(state)) { hasContent = true; if (null !== state.tag || null !== state.anchor) { throwError(state, 'alias node should not have any properties'); } } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { hasContent = true; if (null === state.tag) { state.tag = '?'; } } if (null !== state.anchor) { state.anchorMap[state.anchor] = state.result; } } } else if (0 === indentStatus) { // Special case: block sequences are allowed to have same indentation level as the parent. // http://www.yaml.org/spec/1.2/spec.html#id2799784 hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); } } if (null !== state.tag && '!' !== state.tag) { if ('?' === state.tag) { for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { type = state.implicitTypes[typeIndex]; // Implicit resolving is not allowed for non-scalar types, and '?' // non-specific tag is only assigned to plain scalars. So, it isn't // needed to check for 'kind' conformity. if (type.resolve(state.result)) { // `state.result` updated in resolver if matched state.result = type.construct(state.result); state.tag = type.tag; if (null !== state.anchor) { state.anchorMap[state.anchor] = state.result; } break; } } } else if (_hasOwnProperty.call(state.typeMap, state.tag)) { type = state.typeMap[state.tag]; if (null !== state.result && type.kind !== state.kind) { throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); } if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); } else { state.result = type.construct(state.result); if (null !== state.anchor) { state.anchorMap[state.anchor] = state.result; } } } else { throwError(state, 'unknown tag !<' + state.tag + '>'); } } return null !== state.tag || null !== state.anchor || hasContent; } function readDocument(state) { var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; state.version = null; state.checkLineBreaks = state.legacy; state.tagMap = {}; state.anchorMap = {}; while (0 !== (ch = state.input.charCodeAt(state.position))) { skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if (state.lineIndent > 0 || 0x25/* % */ !== ch) { break; } hasDirectives = true; ch = state.input.charCodeAt(++state.position); _position = state.position; while (0 !== ch && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveName = state.input.slice(_position, state.position); directiveArgs = []; if (directiveName.length < 1) { throwError(state, 'directive name must not be less than one character in length'); } while (0 !== ch) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (0x23/* # */ === ch) { do { ch = state.input.charCodeAt(++state.position); } while (0 !== ch && !is_EOL(ch)); break; } if (is_EOL(ch)) { break; } _position = state.position; while (0 !== ch && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveArgs.push(state.input.slice(_position, state.position)); } if (0 !== ch) { readLineBreak(state); } if (_hasOwnProperty.call(directiveHandlers, directiveName)) { directiveHandlers[directiveName](state, directiveName, directiveArgs); } else { throwWarning(state, 'unknown document directive "' + directiveName + '"'); } } skipSeparationSpace(state, true, -1); if (0 === state.lineIndent && 0x2D/* - */ === state.input.charCodeAt(state.position) && 0x2D/* - */ === state.input.charCodeAt(state.position + 1) && 0x2D/* - */ === state.input.charCodeAt(state.position + 2)) { state.position += 3; skipSeparationSpace(state, true, -1); } else if (hasDirectives) { throwError(state, 'directives end mark is expected'); } composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); skipSeparationSpace(state, true, -1); if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { throwWarning(state, 'non-ASCII line breaks are interpreted as content'); } state.documents.push(state.result); if (state.position === state.lineStart && testDocumentSeparator(state)) { if (0x2E/* . */ === state.input.charCodeAt(state.position)) { state.position += 3; skipSeparationSpace(state, true, -1); } return; } if (state.position < (state.length - 1)) { throwError(state, 'end of the stream or a document separator is expected'); } else { return; } } function loadDocuments(input, options) { input = String(input); options = options || {}; if (input.length !== 0) { // Add tailing `\n` if not exists if (0x0A/* LF */ !== input.charCodeAt(input.length - 1) && 0x0D/* CR */ !== input.charCodeAt(input.length - 1)) { input += '\n'; } // Strip BOM if (input.charCodeAt(0) === 0xFEFF) { input = input.slice(1); } } var state = new State(input, options); // Use 0 as string terminator. That significantly simplifies bounds check. state.input += '\0'; while (0x20/* Space */ === state.input.charCodeAt(state.position)) { state.lineIndent += 1; state.position += 1; } while (state.position < (state.length - 1)) { readDocument(state); } return state.documents; } function loadAll(input, iterator, options) { var documents = loadDocuments(input, options), index, length; for (index = 0, length = documents.length; index < length; index += 1) { iterator(documents[index]); } } function load(input, options) { var documents = loadDocuments(input, options); if (0 === documents.length) { /*eslint-disable no-undefined*/ return undefined; } else if (1 === documents.length) { return documents[0]; } throw new YAMLException('expected a single document in the stream, but found more'); } function safeLoadAll(input, output, options) { loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } function safeLoad(input, options) { return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } module.exports.loadAll = loadAll; module.exports.load = load; module.exports.safeLoadAll = safeLoadAll; module.exports.safeLoad = safeLoad; },{"./common":22,"./exception":24,"./mark":26,"./schema/default_full":29,"./schema/default_safe":30}],26:[function(require,module,exports){ 'use strict'; var common = require('./common'); function Mark(name, buffer, position, line, column) { this.name = name; this.buffer = buffer; this.position = position; this.line = line; this.column = column; } Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { var head, start, tail, end, snippet; if (!this.buffer) { return null; } indent = indent || 4; maxLength = maxLength || 75; head = ''; start = this.position; while (start > 0 && -1 === '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1))) { start -= 1; if (this.position - start > (maxLength / 2 - 1)) { head = ' ... '; start += 5; break; } } tail = ''; end = this.position; while (end < this.buffer.length && -1 === '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end))) { end += 1; if (end - this.position > (maxLength / 2 - 1)) { tail = ' ... '; end -= 5; break; } } snippet = this.buffer.slice(start, end); return common.repeat(' ', indent) + head + snippet + tail + '\n' + common.repeat(' ', indent + this.position - start + head.length) + '^'; }; Mark.prototype.toString = function toString(compact) { var snippet, where = ''; if (this.name) { where += 'in "' + this.name + '" '; } where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); if (!compact) { snippet = this.getSnippet(); if (snippet) { where += ':\n' + snippet; } } return where; }; module.exports = Mark; },{"./common":22}],27:[function(require,module,exports){ 'use strict'; /*eslint-disable max-len*/ var common = require('./common'); var YAMLException = require('./exception'); var Type = require('./type'); function compileList(schema, name, result) { var exclude = []; schema.include.forEach(function (includedSchema) { result = compileList(includedSchema, name, result); }); schema[name].forEach(function (currentType) { result.forEach(function (previousType, previousIndex) { if (previousType.tag === currentType.tag) { exclude.push(previousIndex); } }); result.push(currentType); }); return result.filter(function (type, index) { return -1 === exclude.indexOf(index); }); } function compileMap(/* lists... */) { var result = {}, index, length; function collectType(type) { result[type.tag] = type; } for (index = 0, length = arguments.length; index < length; index += 1) { arguments[index].forEach(collectType); } return result; } function Schema(definition) { this.include = definition.include || []; this.implicit = definition.implicit || []; this.explicit = definition.explicit || []; this.implicit.forEach(function (type) { if (type.loadKind && 'scalar' !== type.loadKind) { throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); } }); this.compiledImplicit = compileList(this, 'implicit', []); this.compiledExplicit = compileList(this, 'explicit', []); this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); } Schema.DEFAULT = null; Schema.create = function createSchema() { var schemas, types; switch (arguments.length) { case 1: schemas = Schema.DEFAULT; types = arguments[0]; break; case 2: schemas = arguments[0]; types = arguments[1]; break; default: throw new YAMLException('Wrong number of arguments for Schema.create function'); } schemas = common.toArray(schemas); types = common.toArray(types); if (!schemas.every(function (schema) { return schema instanceof Schema; })) { throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); } if (!types.every(function (type) { return type instanceof Type; })) { throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); } return new Schema({ include: schemas, explicit: types }); }; module.exports = Schema; },{"./common":22,"./exception":24,"./type":33}],28:[function(require,module,exports){ // Standard YAML's Core schema. // http://www.yaml.org/spec/1.2/spec.html#id2804923 // // NOTE: JS-YAML does not support schema-specific tag resolution restrictions. // So, Core schema has no distinctions from JSON schema is JS-YAML. 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ include: [ require('./json') ] }); },{"../schema":27,"./json":32}],29:[function(require,module,exports){ // JS-YAML's default schema for `load` function. // It is not described in the YAML specification. // // This schema is based on JS-YAML's default safe schema and includes // JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. // // Also this schema is used as default base schema at `Schema.create` function. 'use strict'; var Schema = require('../schema'); module.exports = Schema.DEFAULT = new Schema({ include: [ require('./default_safe') ], explicit: [ require('../type/js/undefined'), require('../type/js/regexp'), require('../type/js/function') ] }); },{"../schema":27,"../type/js/function":38,"../type/js/regexp":39,"../type/js/undefined":40,"./default_safe":30}],30:[function(require,module,exports){ // JS-YAML's default schema for `safeLoad` function. // It is not described in the YAML specification. // // This schema is based on standard YAML's Core schema and includes most of // extra types described at YAML tag repository. (http://yaml.org/type/) 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ include: [ require('./core') ], implicit: [ require('../type/timestamp'), require('../type/merge') ], explicit: [ require('../type/binary'), require('../type/omap'), require('../type/pairs'), require('../type/set') ] }); },{"../schema":27,"../type/binary":34,"../type/merge":42,"../type/omap":44,"../type/pairs":45,"../type/set":47,"../type/timestamp":49,"./core":28}],31:[function(require,module,exports){ // Standard YAML's Failsafe schema. // http://www.yaml.org/spec/1.2/spec.html#id2802346 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ explicit: [ require('../type/str'), require('../type/seq'), require('../type/map') ] }); },{"../schema":27,"../type/map":41,"../type/seq":46,"../type/str":48}],32:[function(require,module,exports){ // Standard YAML's JSON schema. // http://www.yaml.org/spec/1.2/spec.html#id2803231 // // NOTE: JS-YAML does not support schema-specific tag resolution restrictions. // So, this schema is not such strict as defined in the YAML specification. // It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ include: [ require('./failsafe') ], implicit: [ require('../type/null'), require('../type/bool'), require('../type/int'), require('../type/float') ] }); },{"../schema":27,"../type/bool":35,"../type/float":36,"../type/int":37,"../type/null":43,"./failsafe":31}],33:[function(require,module,exports){ 'use strict'; var YAMLException = require('./exception'); var TYPE_CONSTRUCTOR_OPTIONS = [ 'kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases' ]; var YAML_NODE_KINDS = [ 'scalar', 'sequence', 'mapping' ]; function compileStyleAliases(map) { var result = {}; if (null !== map) { Object.keys(map).forEach(function (style) { map[style].forEach(function (alias) { result[String(alias)] = style; }); }); } return result; } function Type(tag, options) { options = options || {}; Object.keys(options).forEach(function (name) { if (-1 === TYPE_CONSTRUCTOR_OPTIONS.indexOf(name)) { throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } }); // TODO: Add tag format check. this.tag = tag; this.kind = options['kind'] || null; this.resolve = options['resolve'] || function () { return true; }; this.construct = options['construct'] || function (data) { return data; }; this.instanceOf = options['instanceOf'] || null; this.predicate = options['predicate'] || null; this.represent = options['represent'] || null; this.defaultStyle = options['defaultStyle'] || null; this.styleAliases = compileStyleAliases(options['styleAliases'] || null); if (-1 === YAML_NODE_KINDS.indexOf(this.kind)) { throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } } module.exports = Type; },{"./exception":24}],34:[function(require,module,exports){ 'use strict'; /*eslint-disable no-bitwise*/ // A trick for browserified version. // Since we make browserifier to ignore `buffer` module, NodeBuffer will be undefined var NodeBuffer = require('buffer').Buffer; var Type = require('../type'); // [ 64, 65, 66 ] -> [ padding, CR, LF ] var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; function resolveYamlBinary(data) { if (null === data) { return false; } var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; // Convert one by one. for (idx = 0; idx < max; idx++) { code = map.indexOf(data.charAt(idx)); // Skip CR/LF if (code > 64) { continue; } // Fail on illegal characters if (code < 0) { return false; } bitlen += 6; } // If there are any bits left, source was corrupted return (bitlen % 8) === 0; } function constructYamlBinary(data) { var idx, tailbits, input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan max = input.length, map = BASE64_MAP, bits = 0, result = []; // Collect by 6*4 bits (3 bytes) for (idx = 0; idx < max; idx++) { if ((idx % 4 === 0) && idx) { result.push((bits >> 16) & 0xFF); result.push((bits >> 8) & 0xFF); result.push(bits & 0xFF); } bits = (bits << 6) | map.indexOf(input.charAt(idx)); } // Dump tail tailbits = (max % 4) * 6; if (tailbits === 0) { result.push((bits >> 16) & 0xFF); result.push((bits >> 8) & 0xFF); result.push(bits & 0xFF); } else if (tailbits === 18) { result.push((bits >> 10) & 0xFF); result.push((bits >> 2) & 0xFF); } else if (tailbits === 12) { result.push((bits >> 4) & 0xFF); } // Wrap into Buffer for NodeJS and leave Array for browser if (NodeBuffer) { return new NodeBuffer(result); } return result; } function representYamlBinary(object /*, style*/) { var result = '', bits = 0, idx, tail, max = object.length, map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters. for (idx = 0; idx < max; idx++) { if ((idx % 3 === 0) && idx) { result += map[(bits >> 18) & 0x3F]; result += map[(bits >> 12) & 0x3F]; result += map[(bits >> 6) & 0x3F]; result += map[bits & 0x3F]; } bits = (bits << 8) + object[idx]; } // Dump tail tail = max % 3; if (tail === 0) { result += map[(bits >> 18) & 0x3F]; result += map[(bits >> 12) & 0x3F]; result += map[(bits >> 6) & 0x3F]; result += map[bits & 0x3F]; } else if (tail === 2) { result += map[(bits >> 10) & 0x3F]; result += map[(bits >> 4) & 0x3F]; result += map[(bits << 2) & 0x3F]; result += map[64]; } else if (tail === 1) { result += map[(bits >> 2) & 0x3F]; result += map[(bits << 4) & 0x3F]; result += map[64]; result += map[64]; } return result; } function isBinary(object) { return NodeBuffer && NodeBuffer.isBuffer(object); } module.exports = new Type('tag:yaml.org,2002:binary', { kind: 'scalar', resolve: resolveYamlBinary, construct: constructYamlBinary, predicate: isBinary, represent: representYamlBinary }); },{"../type":33,"buffer":12}],35:[function(require,module,exports){ 'use strict'; var Type = require('../type'); function resolveYamlBoolean(data) { if (null === data) { return false; } var max = data.length; return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); } function constructYamlBoolean(data) { return data === 'true' || data === 'True' || data === 'TRUE'; } function isBoolean(object) { return '[object Boolean]' === Object.prototype.toString.call(object); } module.exports = new Type('tag:yaml.org,2002:bool', { kind: 'scalar', resolve: resolveYamlBoolean, construct: constructYamlBoolean, predicate: isBoolean, represent: { lowercase: function (object) { return object ? 'true' : 'false'; }, uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, camelcase: function (object) { return object ? 'True' : 'False'; } }, defaultStyle: 'lowercase' }); },{"../type":33}],36:[function(require,module,exports){ 'use strict'; var common = require('../common'); var Type = require('../type'); var YAML_FLOAT_PATTERN = new RegExp( '^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?' + '|\\.[0-9_]+(?:[eE][-+][0-9]+)?' + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + '|[-+]?\\.(?:inf|Inf|INF)' + '|\\.(?:nan|NaN|NAN))$'); function resolveYamlFloat(data) { if (null === data) { return false; } if (!YAML_FLOAT_PATTERN.test(data)) { return false; } return true; } function constructYamlFloat(data) { var value, sign, base, digits; value = data.replace(/_/g, '').toLowerCase(); sign = '-' === value[0] ? -1 : 1; digits = []; if (0 <= '+-'.indexOf(value[0])) { value = value.slice(1); } if ('.inf' === value) { return (1 === sign) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; } else if ('.nan' === value) { return NaN; } else if (0 <= value.indexOf(':')) { value.split(':').forEach(function (v) { digits.unshift(parseFloat(v, 10)); }); value = 0.0; base = 1; digits.forEach(function (d) { value += d * base; base *= 60; }); return sign * value; } return sign * parseFloat(value, 10); } var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; function representYamlFloat(object, style) { var res; if (isNaN(object)) { switch (style) { case 'lowercase': return '.nan'; case 'uppercase': return '.NAN'; case 'camelcase': return '.NaN'; } } else if (Number.POSITIVE_INFINITY === object) { switch (style) { case 'lowercase': return '.inf'; case 'uppercase': return '.INF'; case 'camelcase': return '.Inf'; } } else if (Number.NEGATIVE_INFINITY === object) { switch (style) { case 'lowercase': return '-.inf'; case 'uppercase': return '-.INF'; case 'camelcase': return '-.Inf'; } } else if (common.isNegativeZero(object)) { return '-0.0'; } res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100, // while YAML requres dot: 5.e-100. Fix it with simple hack return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; } function isFloat(object) { return ('[object Number]' === Object.prototype.toString.call(object)) && (0 !== object % 1 || common.isNegativeZero(object)); } module.exports = new Type('tag:yaml.org,2002:float', { kind: 'scalar', resolve: resolveYamlFloat, construct: constructYamlFloat, predicate: isFloat, represent: representYamlFloat, defaultStyle: 'lowercase' }); },{"../common":22,"../type":33}],37:[function(require,module,exports){ 'use strict'; var common = require('../common'); var Type = require('../type'); function isHexCode(c) { return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || ((0x61/* a */ <= c) && (c <= 0x66/* f */)); } function isOctCode(c) { return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); } function isDecCode(c) { return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); } function resolveYamlInteger(data) { if (null === data) { return false; } var max = data.length, index = 0, hasDigits = false, ch; if (!max) { return false; } ch = data[index]; // sign if (ch === '-' || ch === '+') { ch = data[++index]; } if (ch === '0') { // 0 if (index + 1 === max) { return true; } ch = data[++index]; // base 2, base 8, base 16 if (ch === 'b') { // base 2 index++; for (; index < max; index++) { ch = data[index]; if (ch === '_') { continue; } if (ch !== '0' && ch !== '1') { return false; } hasDigits = true; } return hasDigits; } if (ch === 'x') { // base 16 index++; for (; index < max; index++) { ch = data[index]; if (ch === '_') { continue; } if (!isHexCode(data.charCodeAt(index))) { return false; } hasDigits = true; } return hasDigits; } // base 8 for (; index < max; index++) { ch = data[index]; if (ch === '_') { continue; } if (!isOctCode(data.charCodeAt(index))) { return false; } hasDigits = true; } return hasDigits; } // base 10 (except 0) or base 60 for (; index < max; index++) { ch = data[index]; if (ch === '_') { continue; } if (ch === ':') { break; } if (!isDecCode(data.charCodeAt(index))) { return false; } hasDigits = true; } if (!hasDigits) { return false; } // if !base60 - done; if (ch !== ':') { return true; } // base60 almost not used, no needs to optimize return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); } function constructYamlInteger(data) { var value = data, sign = 1, ch, base, digits = []; if (value.indexOf('_') !== -1) { value = value.replace(/_/g, ''); } ch = value[0]; if (ch === '-' || ch === '+') { if (ch === '-') { sign = -1; } value = value.slice(1); ch = value[0]; } if ('0' === value) { return 0; } if (ch === '0') { if (value[1] === 'b') { return sign * parseInt(value.slice(2), 2); } if (value[1] === 'x') { return sign * parseInt(value, 16); } return sign * parseInt(value, 8); } if (value.indexOf(':') !== -1) { value.split(':').forEach(function (v) { digits.unshift(parseInt(v, 10)); }); value = 0; base = 1; digits.forEach(function (d) { value += (d * base); base *= 60; }); return sign * value; } return sign * parseInt(value, 10); } function isInteger(object) { return ('[object Number]' === Object.prototype.toString.call(object)) && (0 === object % 1 && !common.isNegativeZero(object)); } module.exports = new Type('tag:yaml.org,2002:int', { kind: 'scalar', resolve: resolveYamlInteger, construct: constructYamlInteger, predicate: isInteger, represent: { binary: function (object) { return '0b' + object.toString(2); }, octal: function (object) { return '0' + object.toString(8); }, decimal: function (object) { return object.toString(10); }, hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); } }, defaultStyle: 'decimal', styleAliases: { binary: [ 2, 'bin' ], octal: [ 8, 'oct' ], decimal: [ 10, 'dec' ], hexadecimal: [ 16, 'hex' ] } }); },{"../common":22,"../type":33}],38:[function(require,module,exports){ 'use strict'; var esprima; // Browserified version does not have esprima // // 1. For node.js just require module as deps // 2. For browser try to require mudule via external AMD system. // If not found - try to fallback to window.esprima. If not // found too - then fail to parse. // try { esprima = require('esprima'); } catch (_) { /*global window */ if (typeof window !== 'undefined') { esprima = window.esprima; } } var Type = require('../../type'); function resolveJavascriptFunction(data) { if (null === data) { return false; } try { var source = '(' + data + ')', ast = esprima.parse(source, { range: true }); if ('Program' !== ast.type || 1 !== ast.body.length || 'ExpressionStatement' !== ast.body[0].type || 'FunctionExpression' !== ast.body[0].expression.type) { return false; } return true; } catch (err) { return false; } } function constructJavascriptFunction(data) { /*jslint evil:true*/ var source = '(' + data + ')', ast = esprima.parse(source, { range: true }), params = [], body; if ('Program' !== ast.type || 1 !== ast.body.length || 'ExpressionStatement' !== ast.body[0].type || 'FunctionExpression' !== ast.body[0].expression.type) { throw new Error('Failed to resolve function'); } ast.body[0].expression.params.forEach(function (param) { params.push(param.name); }); body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on // function expressions. So cut them out. /*eslint-disable no-new-func*/ return new Function(params, source.slice(body[0] + 1, body[1] - 1)); } function representJavascriptFunction(object /*, style*/) { return object.toString(); } function isFunction(object) { return '[object Function]' === Object.prototype.toString.call(object); } module.exports = new Type('tag:yaml.org,2002:js/function', { kind: 'scalar', resolve: resolveJavascriptFunction, construct: constructJavascriptFunction, predicate: isFunction, represent: representJavascriptFunction }); },{"../../type":33,"esprima":50}],39:[function(require,module,exports){ 'use strict'; var Type = require('../../type'); function resolveJavascriptRegExp(data) { if (null === data) { return false; } if (0 === data.length) { return false; } var regexp = data, tail = /\/([gim]*)$/.exec(data), modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed // `/foo/gim` - modifiers tail can be maximum 3 chars if ('/' === regexp[0]) { if (tail) { modifiers = tail[1]; } if (modifiers.length > 3) { return false; } // if expression starts with /, is should be properly terminated if (regexp[regexp.length - modifiers.length - 1] !== '/') { return false; } regexp = regexp.slice(1, regexp.length - modifiers.length - 1); } try { return true; } catch (error) { return false; } } function constructJavascriptRegExp(data) { var regexp = data, tail = /\/([gim]*)$/.exec(data), modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars if ('/' === regexp[0]) { if (tail) { modifiers = tail[1]; } regexp = regexp.slice(1, regexp.length - modifiers.length - 1); } return new RegExp(regexp, modifiers); } function representJavascriptRegExp(object /*, style*/) { var result = '/' + object.source + '/'; if (object.global) { result += 'g'; } if (object.multiline) { result += 'm'; } if (object.ignoreCase) { result += 'i'; } return result; } function isRegExp(object) { return '[object RegExp]' === Object.prototype.toString.call(object); } module.exports = new Type('tag:yaml.org,2002:js/regexp', { kind: 'scalar', resolve: resolveJavascriptRegExp, construct: constructJavascriptRegExp, predicate: isRegExp, represent: representJavascriptRegExp }); },{"../../type":33}],40:[function(require,module,exports){ 'use strict'; var Type = require('../../type'); function resolveJavascriptUndefined() { return true; } function constructJavascriptUndefined() { /*eslint-disable no-undefined*/ return undefined; } function representJavascriptUndefined() { return ''; } function isUndefined(object) { return 'undefined' === typeof object; } module.exports = new Type('tag:yaml.org,2002:js/undefined', { kind: 'scalar', resolve: resolveJavascriptUndefined, construct: constructJavascriptUndefined, predicate: isUndefined, represent: representJavascriptUndefined }); },{"../../type":33}],41:[function(require,module,exports){ 'use strict'; var Type = require('../type'); module.exports = new Type('tag:yaml.org,2002:map', { kind: 'mapping', construct: function (data) { return null !== data ? data : {}; } }); },{"../type":33}],42:[function(require,module,exports){ 'use strict'; var Type = require('../type'); function resolveYamlMerge(data) { return '<<' === data || null === data; } module.exports = new Type('tag:yaml.org,2002:merge', { kind: 'scalar', resolve: resolveYamlMerge }); },{"../type":33}],43:[function(require,module,exports){ 'use strict'; var Type = require('../type'); function resolveYamlNull(data) { if (null === data) { return true; } var max = data.length; return (max === 1 && data === '~') || (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); } function constructYamlNull() { return null; } function isNull(object) { return null === object; } module.exports = new Type('tag:yaml.org,2002:null', { kind: 'scalar', resolve: resolveYamlNull, construct: constructYamlNull, predicate: isNull, represent: { canonical: function () { return '~'; }, lowercase: function () { return 'null'; }, uppercase: function () { return 'NULL'; }, camelcase: function () { return 'Null'; } }, defaultStyle: 'lowercase' }); },{"../type":33}],44:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var _hasOwnProperty = Object.prototype.hasOwnProperty; var _toString = Object.prototype.toString; function resolveYamlOmap(data) { if (null === data) { return true; } var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data; for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; pairHasKey = false; if ('[object Object]' !== _toString.call(pair)) { return false; } for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { if (!pairHasKey) { pairHasKey = true; } else { return false; } } } if (!pairHasKey) { return false; } if (-1 === objectKeys.indexOf(pairKey)) { objectKeys.push(pairKey); } else { return false; } } return true; } function constructYamlOmap(data) { return null !== data ? data : []; } module.exports = new Type('tag:yaml.org,2002:omap', { kind: 'sequence', resolve: resolveYamlOmap, construct: constructYamlOmap }); },{"../type":33}],45:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var _toString = Object.prototype.toString; function resolveYamlPairs(data) { if (null === data) { return true; } var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; if ('[object Object]' !== _toString.call(pair)) { return false; } keys = Object.keys(pair); if (1 !== keys.length) { return false; } result[index] = [ keys[0], pair[keys[0]] ]; } return true; } function constructYamlPairs(data) { if (null === data) { return []; } var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; keys = Object.keys(pair); result[index] = [ keys[0], pair[keys[0]] ]; } return result; } module.exports = new Type('tag:yaml.org,2002:pairs', { kind: 'sequence', resolve: resolveYamlPairs, construct: constructYamlPairs }); },{"../type":33}],46:[function(require,module,exports){ 'use strict'; var Type = require('../type'); module.exports = new Type('tag:yaml.org,2002:seq', { kind: 'sequence', construct: function (data) { return null !== data ? data : []; } }); },{"../type":33}],47:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var _hasOwnProperty = Object.prototype.hasOwnProperty; function resolveYamlSet(data) { if (null === data) { return true; } var key, object = data; for (key in object) { if (_hasOwnProperty.call(object, key)) { if (null !== object[key]) { return false; } } } return true; } function constructYamlSet(data) { return null !== data ? data : {}; } module.exports = new Type('tag:yaml.org,2002:set', { kind: 'mapping', resolve: resolveYamlSet, construct: constructYamlSet }); },{"../type":33}],48:[function(require,module,exports){ 'use strict'; var Type = require('../type'); module.exports = new Type('tag:yaml.org,2002:str', { kind: 'scalar', construct: function (data) { return null !== data ? data : ''; } }); },{"../type":33}],49:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var YAML_TIMESTAMP_REGEXP = new RegExp( '^([0-9][0-9][0-9][0-9])' + // [1] year '-([0-9][0-9]?)' + // [2] month '-([0-9][0-9]?)' + // [3] day '(?:(?:[Tt]|[ \\t]+)' + // ... '([0-9][0-9]?)' + // [4] hour ':([0-9][0-9])' + // [5] minute ':([0-9][0-9])' + // [6] second '(?:\\.([0-9]*))?' + // [7] fraction '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour '(?::([0-9][0-9]))?))?)?$'); // [11] tz_minute function resolveYamlTimestamp(data) { if (null === data) { return false; } if (YAML_TIMESTAMP_REGEXP.exec(data) === null) { return false; } return true; } function constructYamlTimestamp(data) { var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date; match = YAML_TIMESTAMP_REGEXP.exec(data); if (null === match) { throw new Error('Date resolve error'); } // match: [1] year [2] month [3] day year = +(match[1]); month = +(match[2]) - 1; // JS month starts with 0 day = +(match[3]); if (!match[4]) { // no hour return new Date(Date.UTC(year, month, day)); } // match: [4] hour [5] minute [6] second [7] fraction hour = +(match[4]); minute = +(match[5]); second = +(match[6]); if (match[7]) { fraction = match[7].slice(0, 3); while (fraction.length < 3) { // milli-seconds fraction += '0'; } fraction = +fraction; } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute if (match[9]) { tz_hour = +(match[10]); tz_minute = +(match[11] || 0); delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds if ('-' === match[9]) { delta = -delta; } } date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); if (delta) { date.setTime(date.getTime() - delta); } return date; } function representYamlTimestamp(object /*, style*/) { return object.toISOString(); } module.exports = new Type('tag:yaml.org,2002:timestamp', { kind: 'scalar', resolve: resolveYamlTimestamp, construct: constructYamlTimestamp, instanceOf: Date, represent: representYamlTimestamp }); },{"../type":33}],50:[function(require,module,exports){ /* Copyright (c) jQuery Foundation, Inc. and Contributors, 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. 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 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 (root, factory) { 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, // Rhino, and plain browser loading. /* istanbul ignore next */ if (typeof define === 'function' && define.amd) { define(['exports'], factory); } else if (typeof exports !== 'undefined') { factory(exports); } else { factory((root.esprima = {})); } }(this, function (exports) { 'use strict'; var Token, TokenName, FnExprTokens, Syntax, PlaceHolders, Messages, Regex, source, strict, index, lineNumber, lineStart, hasLineTerminator, lastIndex, lastLineNumber, lastLineStart, startIndex, startLineNumber, startLineStart, scanning, length, lookahead, state, extra, isBindingElement, isAssignmentTarget, firstCoverInitializedNameError; Token = { BooleanLiteral: 1, EOF: 2, Identifier: 3, Keyword: 4, NullLiteral: 5, NumericLiteral: 6, Punctuator: 7, StringLiteral: 8, RegularExpression: 9, Template: 10 }; TokenName = {}; TokenName[Token.BooleanLiteral] = 'Boolean'; TokenName[Token.EOF] = ''; TokenName[Token.Identifier] = 'Identifier'; TokenName[Token.Keyword] = 'Keyword'; TokenName[Token.NullLiteral] = 'Null'; TokenName[Token.NumericLiteral] = 'Numeric'; TokenName[Token.Punctuator] = 'Punctuator'; TokenName[Token.StringLiteral] = 'String'; TokenName[Token.RegularExpression] = 'RegularExpression'; TokenName[Token.Template] = 'Template'; // A function following one of those tokens is an expression. FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', 'return', 'case', 'delete', 'throw', 'void', // assignment operators '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', '&=', '|=', '^=', ',', // binary/unary operators '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', '<=', '<', '>', '!=', '!==']; Syntax = { AssignmentExpression: 'AssignmentExpression', AssignmentPattern: 'AssignmentPattern', ArrayExpression: 'ArrayExpression', ArrayPattern: 'ArrayPattern', ArrowFunctionExpression: 'ArrowFunctionExpression', BlockStatement: 'BlockStatement', BinaryExpression: 'BinaryExpression', BreakStatement: 'BreakStatement', CallExpression: 'CallExpression', CatchClause: 'CatchClause', ClassBody: 'ClassBody', ClassDeclaration: 'ClassDeclaration', ClassExpression: 'ClassExpression', ConditionalExpression: 'ConditionalExpression', ContinueStatement: 'ContinueStatement', DoWhileStatement: 'DoWhileStatement', DebuggerStatement: 'DebuggerStatement', EmptyStatement: 'EmptyStatement', ExportAllDeclaration: 'ExportAllDeclaration', ExportDefaultDeclaration: 'ExportDefaultDeclaration', ExportNamedDeclaration: 'ExportNamedDeclaration', ExportSpecifier: 'ExportSpecifier', ExpressionStatement: 'ExpressionStatement', ForStatement: 'ForStatement', ForOfStatement: 'ForOfStatement', ForInStatement: 'ForInStatement', FunctionDeclaration: 'FunctionDeclaration', FunctionExpression: 'FunctionExpression', Identifier: 'Identifier', IfStatement: 'IfStatement', ImportDeclaration: 'ImportDeclaration', ImportDefaultSpecifier: 'ImportDefaultSpecifier', ImportNamespaceSpecifier: 'ImportNamespaceSpecifier', ImportSpecifier: 'ImportSpecifier', Literal: 'Literal', LabeledStatement: 'LabeledStatement', LogicalExpression: 'LogicalExpression', MemberExpression: 'MemberExpression', MetaProperty: 'MetaProperty', MethodDefinition: 'MethodDefinition', NewExpression: 'NewExpression', ObjectExpression: 'ObjectExpression', ObjectPattern: 'ObjectPattern', Program: 'Program', Property: 'Property', RestElement: 'RestElement', ReturnStatement: 'ReturnStatement', SequenceExpression: 'SequenceExpression', SpreadElement: 'SpreadElement', Super: 'Super', SwitchCase: 'SwitchCase', SwitchStatement: 'SwitchStatement', TaggedTemplateExpression: 'TaggedTemplateExpression', TemplateElement: 'TemplateElement', TemplateLiteral: 'TemplateLiteral', ThisExpression: 'ThisExpression', ThrowStatement: 'ThrowStatement', TryStatement: 'TryStatement', UnaryExpression: 'UnaryExpression', UpdateExpression: 'UpdateExpression', VariableDeclaration: 'VariableDeclaration', VariableDeclarator: 'VariableDeclarator', WhileStatement: 'WhileStatement', WithStatement: 'WithStatement', YieldExpression: 'YieldExpression' }; PlaceHolders = { ArrowParameterPlaceHolder: 'ArrowParameterPlaceHolder' }; // Error messages should be identical to V8. Messages = { UnexpectedToken: 'Unexpected token %0', UnexpectedNumber: 'Unexpected number', UnexpectedString: 'Unexpected string', UnexpectedIdentifier: 'Unexpected identifier', UnexpectedReserved: 'Unexpected reserved word', UnexpectedTemplate: 'Unexpected quasi %0', UnexpectedEOS: 'Unexpected end of input', NewlineAfterThrow: 'Illegal newline after throw', InvalidRegExp: 'Invalid regular expression', UnterminatedRegExp: 'Invalid regular expression: missing /', InvalidLHSInAssignment: 'Invalid left-hand side in assignment', InvalidLHSInForIn: 'Invalid left-hand side in for-in', InvalidLHSInForLoop: 'Invalid left-hand side in for-loop', MultipleDefaultsInSwitch: 'More than one default clause in switch statement', NoCatchOrFinally: 'Missing catch or finally after try', UnknownLabel: 'Undefined label \'%0\'', Redeclaration: '%0 \'%1\' has already been declared', IllegalContinue: 'Illegal continue statement', IllegalBreak: 'Illegal break statement', IllegalReturn: 'Illegal return statement', StrictModeWith: 'Strict mode code may not include a with statement', StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', StrictVarName: 'Variable name may not be eval or arguments in strict mode', StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', StrictParamDupe: 'Strict mode function may not have duplicate parameter names', StrictFunctionName: 'Function name may not be eval or arguments in strict mode', StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', StrictDelete: 'Delete of an unqualified identifier in strict mode.', StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', StrictReservedWord: 'Use of future reserved word in strict mode', TemplateOctalLiteral: 'Octal literals are not allowed in template strings.', ParameterAfterRestParameter: 'Rest parameter must be last formal parameter', DefaultRestParameter: 'Unexpected token =', ObjectPatternAsRestParameter: 'Unexpected token {', DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals', ConstructorSpecialMethod: 'Class constructor may not be an accessor', DuplicateConstructor: 'A class may only have one constructor', StaticPrototype: 'Classes may not have static property named prototype', MissingFromClause: 'Unexpected token', NoAsAfterImportNamespace: 'Unexpected token', InvalidModuleSpecifier: 'Unexpected token', IllegalImportDeclaration: 'Unexpected token', IllegalExportDeclaration: 'Unexpected token', DuplicateBinding: 'Duplicate binding %0' }; // See also tools/generate-unicode-regex.js. Regex = { // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/, // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ }; // Ensure the condition is true, otherwise throw an error. // This is only to have a better contract semantic, i.e. another safety net // to catch a logic error. The condition shall be fulfilled in normal case. // Do NOT use this to enforce a certain condition on any user input. function assert(condition, message) { /* istanbul ignore if */ if (!condition) { throw new Error('ASSERT: ' + message); } } function isDecimalDigit(ch) { return (ch >= 0x30 && ch <= 0x39); // 0..9 } function isHexDigit(ch) { return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; } function isOctalDigit(ch) { return '01234567'.indexOf(ch) >= 0; } function octalToDecimal(ch) { // \0 is not octal escape sequence var octal = (ch !== '0'), code = '01234567'.indexOf(ch); if (index < length && isOctalDigit(source[index])) { octal = true; code = code * 8 + '01234567'.indexOf(source[index++]); // 3 digits are only allowed when string starts // with 0, 1, 2, 3 if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) { code = code * 8 + '01234567'.indexOf(source[index++]); } } return { code: code, octal: octal }; } // ECMA-262 11.2 White Space function isWhiteSpace(ch) { return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); } // ECMA-262 11.3 Line Terminators function isLineTerminator(ch) { return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); } // ECMA-262 11.6 Identifier Names and Identifiers function fromCodePoint(cp) { return (cp < 0x10000) ? String.fromCharCode(cp) : String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) + String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023)); } function isIdentifierStart(ch) { return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) (ch >= 0x41 && ch <= 0x5A) || // A..Z (ch >= 0x61 && ch <= 0x7A) || // a..z (ch === 0x5C) || // \ (backslash) ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch))); } function isIdentifierPart(ch) { return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) (ch >= 0x41 && ch <= 0x5A) || // A..Z (ch >= 0x61 && ch <= 0x7A) || // a..z (ch >= 0x30 && ch <= 0x39) || // 0..9 (ch === 0x5C) || // \ (backslash) ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch))); } // ECMA-262 11.6.2.2 Future Reserved Words function isFutureReservedWord(id) { switch (id) { case 'enum': case 'export': case 'import': case 'super': return true; default: return false; } } function isStrictModeReservedWord(id) { switch (id) { case 'implements': case 'interface': case 'package': case 'private': case 'protected': case 'public': case 'static': case 'yield': case 'let': return true; default: return false; } } function isRestrictedWord(id) { return id === 'eval' || id === 'arguments'; } // ECMA-262 11.6.2.1 Keywords function isKeyword(id) { switch (id.length) { case 2: return (id === 'if') || (id === 'in') || (id === 'do'); case 3: return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try') || (id === 'let'); case 4: return (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with') || (id === 'enum'); case 5: return (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw') || (id === 'const') || (id === 'yield') || (id === 'class') || (id === 'super'); case 6: return (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch') || (id === 'export') || (id === 'import'); case 7: return (id === 'default') || (id === 'finally') || (id === 'extends'); case 8: return (id === 'function') || (id === 'continue') || (id === 'debugger'); case 10: return (id === 'instanceof'); default: return false; } } // ECMA-262 11.4 Comments function addComment(type, value, start, end, loc) { var comment; assert(typeof start === 'number', 'Comment must have valid position'); state.lastCommentStart = start; comment = { type: type, value: value }; if (extra.range) { comment.range = [start, end]; } if (extra.loc) { comment.loc = loc; } extra.comments.push(comment); if (extra.attachComment) { extra.leadingComments.push(comment); extra.trailingComments.push(comment); } if (extra.tokenize) { comment.type = comment.type + 'Comment'; if (extra.delegate) { comment = extra.delegate(comment); } extra.tokens.push(comment); } } function skipSingleLineComment(offset) { var start, loc, ch, comment; start = index - offset; loc = { start: { line: lineNumber, column: index - lineStart - offset } }; while (index < length) { ch = source.charCodeAt(index); ++index; if (isLineTerminator(ch)) { hasLineTerminator = true; if (extra.comments) { comment = source.slice(start + offset, index - 1); loc.end = { line: lineNumber, column: index - lineStart - 1 }; addComment('Line', comment, start, index - 1, loc); } if (ch === 13 && source.charCodeAt(index) === 10) { ++index; } ++lineNumber; lineStart = index; return; } } if (extra.comments) { comment = source.slice(start + offset, index); loc.end = { line: lineNumber, column: index - lineStart }; addComment('Line', comment, start, index, loc); } } function skipMultiLineComment() { var start, loc, ch, comment; if (extra.comments) { start = index - 2; loc = { start: { line: lineNumber, column: index - lineStart - 2 } }; } while (index < length) { ch = source.charCodeAt(index); if (isLineTerminator(ch)) { if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { ++index; } hasLineTerminator = true; ++lineNumber; ++index; lineStart = index; } else if (ch === 0x2A) { // Block comment ends with '*/'. if (source.charCodeAt(index + 1) === 0x2F) { ++index; ++index; if (extra.comments) { comment = source.slice(start + 2, index - 2); loc.end = { line: lineNumber, column: index - lineStart }; addComment('Block', comment, start, index, loc); } return; } ++index; } else { ++index; } } // Ran off the end of the file - the whole thing is a comment if (extra.comments) { loc.end = { line: lineNumber, column: index - lineStart }; comment = source.slice(start + 2, index); addComment('Block', comment, start, index, loc); } tolerateUnexpectedToken(); } function skipComment() { var ch, start; hasLineTerminator = false; start = (index === 0); while (index < length) { ch = source.charCodeAt(index); if (isWhiteSpace(ch)) { ++index; } else if (isLineTerminator(ch)) { hasLineTerminator = true; ++index; if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { ++index; } ++lineNumber; lineStart = index; start = true; } else if (ch === 0x2F) { // U+002F is '/' ch = source.charCodeAt(index + 1); if (ch === 0x2F) { ++index; ++index; skipSingleLineComment(2); start = true; } else if (ch === 0x2A) { // U+002A is '*' ++index; ++index; skipMultiLineComment(); } else { break; } } else if (start && ch === 0x2D) { // U+002D is '-' // U+003E is '>' if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { // '-->' is a single-line comment index += 3; skipSingleLineComment(3); } else { break; } } else if (ch === 0x3C) { // U+003C is '<' if (source.slice(index + 1, index + 4) === '!--') { ++index; // `<` ++index; // `!` ++index; // `-` ++index; // `-` skipSingleLineComment(4); } else { break; } } else { break; } } } function scanHexEscape(prefix) { var i, len, ch, code = 0; len = (prefix === 'u') ? 4 : 2; for (i = 0; i < len; ++i) { if (index < length && isHexDigit(source[index])) { ch = source[index++]; code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); } else { return ''; } } return String.fromCharCode(code); } function scanUnicodeCodePointEscape() { var ch, code; ch = source[index]; code = 0; // At least, one hex digit is required. if (ch === '}') { throwUnexpectedToken(); } while (index < length) { ch = source[index++]; if (!isHexDigit(ch)) { break; } code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); } if (code > 0x10FFFF || ch !== '}') { throwUnexpectedToken(); } return fromCodePoint(code); } function codePointAt(i) { var cp, first, second; cp = source.charCodeAt(i); if (cp >= 0xD800 && cp <= 0xDBFF) { second = source.charCodeAt(i + 1); if (second >= 0xDC00 && second <= 0xDFFF) { first = cp; cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; } } return cp; } function getComplexIdentifier() { var cp, ch, id; cp = codePointAt(index); id = fromCodePoint(cp); index += id.length; // '\u' (U+005C, U+0075) denotes an escaped character. if (cp === 0x5C) { if (source.charCodeAt(index) !== 0x75) { throwUnexpectedToken(); } ++index; if (source[index] === '{') { ++index; ch = scanUnicodeCodePointEscape(); } else { ch = scanHexEscape('u'); cp = ch.charCodeAt(0); if (!ch || ch === '\\' || !isIdentifierStart(cp)) { throwUnexpectedToken(); } } id = ch; } while (index < length) { cp = codePointAt(index); if (!isIdentifierPart(cp)) { break; } ch = fromCodePoint(cp); id += ch; index += ch.length; // '\u' (U+005C, U+0075) denotes an escaped character. if (cp === 0x5C) { id = id.substr(0, id.length - 1); if (source.charCodeAt(index) !== 0x75) { throwUnexpectedToken(); } ++index; if (source[index] === '{') { ++index; ch = scanUnicodeCodePointEscape(); } else { ch = scanHexEscape('u'); cp = ch.charCodeAt(0); if (!ch || ch === '\\' || !isIdentifierPart(cp)) { throwUnexpectedToken(); } } id += ch; } } return id; } function getIdentifier() { var start, ch; start = index++; while (index < length) { ch = source.charCodeAt(index); if (ch === 0x5C) { // Blackslash (U+005C) marks Unicode escape sequence. index = start; return getComplexIdentifier(); } else if (ch >= 0xD800 && ch < 0xDFFF) { // Need to handle surrogate pairs. index = start; return getComplexIdentifier(); } if (isIdentifierPart(ch)) { ++index; } else { break; } } return source.slice(start, index); } function scanIdentifier() { var start, id, type; start = index; // Backslash (U+005C) starts an escaped character. id = (source.charCodeAt(index) === 0x5C) ? getComplexIdentifier() : getIdentifier(); // There is no keyword or literal with only one character. // Thus, it must be an identifier. if (id.length === 1) { type = Token.Identifier; } else if (isKeyword(id)) { type = Token.Keyword; } else if (id === 'null') { type = Token.NullLiteral; } else if (id === 'true' || id === 'false') { type = Token.BooleanLiteral; } else { type = Token.Identifier; } return { type: type, value: id, lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } // ECMA-262 11.7 Punctuators function scanPunctuator() { var token, str; token = { type: Token.Punctuator, value: '', lineNumber: lineNumber, lineStart: lineStart, start: index, end: index }; // Check for most common single-character punctuators. str = source[index]; switch (str) { case '(': if (extra.tokenize) { extra.openParenToken = extra.tokenValues.length; } ++index; break; case '{': if (extra.tokenize) { extra.openCurlyToken = extra.tokenValues.length; } state.curlyStack.push('{'); ++index; break; case '.': ++index; if (source[index] === '.' && source[index + 1] === '.') { // Spread operator: ... index += 2; str = '...'; } break; case '}': ++index; state.curlyStack.pop(); break; case ')': case ';': case ',': case '[': case ']': case ':': case '?': case '~': ++index; break; default: // 4-character punctuator. str = source.substr(index, 4); if (str === '>>>=') { index += 4; } else { // 3-character punctuators. str = str.substr(0, 3); if (str === '===' || str === '!==' || str === '>>>' || str === '<<=' || str === '>>=') { index += 3; } else { // 2-character punctuators. str = str.substr(0, 2); if (str === '&&' || str === '||' || str === '==' || str === '!=' || str === '+=' || str === '-=' || str === '*=' || str === '/=' || str === '++' || str === '--' || str === '<<' || str === '>>' || str === '&=' || str === '|=' || str === '^=' || str === '%=' || str === '<=' || str === '>=' || str === '=>') { index += 2; } else { // 1-character punctuators. str = source[index]; if ('<>=!+-*%&|^/'.indexOf(str) >= 0) { ++index; } } } } } if (index === token.start) { throwUnexpectedToken(); } token.end = index; token.value = str; return token; } // ECMA-262 11.8.3 Numeric Literals function scanHexLiteral(start) { var number = ''; while (index < length) { if (!isHexDigit(source[index])) { break; } number += source[index++]; } if (number.length === 0) { throwUnexpectedToken(); } if (isIdentifierStart(source.charCodeAt(index))) { throwUnexpectedToken(); } return { type: Token.NumericLiteral, value: parseInt('0x' + number, 16), lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } function scanBinaryLiteral(start) { var ch, number; number = ''; while (index < length) { ch = source[index]; if (ch !== '0' && ch !== '1') { break; } number += source[index++]; } if (number.length === 0) { // only 0b or 0B throwUnexpectedToken(); } if (index < length) { ch = source.charCodeAt(index); /* istanbul ignore else */ if (isIdentifierStart(ch) || isDecimalDigit(ch)) { throwUnexpectedToken(); } } return { type: Token.NumericLiteral, value: parseInt(number, 2), lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } function scanOctalLiteral(prefix, start) { var number, octal; if (isOctalDigit(prefix)) { octal = true; number = '0' + source[index++]; } else { octal = false; ++index; number = ''; } while (index < length) { if (!isOctalDigit(source[index])) { break; } number += source[index++]; } if (!octal && number.length === 0) { // only 0o or 0O throwUnexpectedToken(); } if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { throwUnexpectedToken(); } return { type: Token.NumericLiteral, value: parseInt(number, 8), octal: octal, lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } function isImplicitOctalLiteral() { var i, ch; // Implicit octal, unless there is a non-octal digit. // (Annex B.1.1 on Numeric Literals) for (i = index + 1; i < length; ++i) { ch = source[i]; if (ch === '8' || ch === '9') { return false; } if (!isOctalDigit(ch)) { return true; } } return true; } function scanNumericLiteral() { var number, start, ch; ch = source[index]; assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point'); start = index; number = ''; if (ch !== '.') { number = source[index++]; ch = source[index]; // Hex number starts with '0x'. // Octal number starts with '0'. // Octal number in ES6 starts with '0o'. // Binary number in ES6 starts with '0b'. if (number === '0') { if (ch === 'x' || ch === 'X') { ++index; return scanHexLiteral(start); } if (ch === 'b' || ch === 'B') { ++index; return scanBinaryLiteral(start); } if (ch === 'o' || ch === 'O') { return scanOctalLiteral(ch, start); } if (isOctalDigit(ch)) { if (isImplicitOctalLiteral()) { return scanOctalLiteral(ch, start); } } } while (isDecimalDigit(source.charCodeAt(index))) { number += source[index++]; } ch = source[index]; } if (ch === '.') { number += source[index++]; while (isDecimalDigit(source.charCodeAt(index))) { number += source[index++]; } ch = source[index]; } if (ch === 'e' || ch === 'E') { number += source[index++]; ch = source[index]; if (ch === '+' || ch === '-') { number += source[index++]; } if (isDecimalDigit(source.charCodeAt(index))) { while (isDecimalDigit(source.charCodeAt(index))) { number += source[index++]; } } else { throwUnexpectedToken(); } } if (isIdentifierStart(source.charCodeAt(index))) { throwUnexpectedToken(); } return { type: Token.NumericLiteral, value: parseFloat(number), lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } // ECMA-262 11.8.4 String Literals function scanStringLiteral() { var str = '', quote, start, ch, unescaped, octToDec, octal = false; quote = source[index]; assert((quote === '\'' || quote === '"'), 'String literal must starts with a quote'); start = index; ++index; while (index < length) { ch = source[index++]; if (ch === quote) { quote = ''; break; } else if (ch === '\\') { ch = source[index++]; if (!ch || !isLineTerminator(ch.charCodeAt(0))) { switch (ch) { case 'u': case 'x': if (source[index] === '{') { ++index; str += scanUnicodeCodePointEscape(); } else { unescaped = scanHexEscape(ch); if (!unescaped) { throw throwUnexpectedToken(); } str += unescaped; } break; case 'n': str += '\n'; break; case 'r': str += '\r'; break; case 't': str += '\t'; break; case 'b': str += '\b'; break; case 'f': str += '\f'; break; case 'v': str += '\x0B'; break; case '8': case '9': str += ch; tolerateUnexpectedToken(); break; default: if (isOctalDigit(ch)) { octToDec = octalToDecimal(ch); octal = octToDec.octal || octal; str += String.fromCharCode(octToDec.code); } else { str += ch; } break; } } else { ++lineNumber; if (ch === '\r' && source[index] === '\n') { ++index; } lineStart = index; } } else if (isLineTerminator(ch.charCodeAt(0))) { break; } else { str += ch; } } if (quote !== '') { throwUnexpectedToken(); } return { type: Token.StringLiteral, value: str, octal: octal, lineNumber: startLineNumber, lineStart: startLineStart, start: start, end: index }; } // ECMA-262 11.8.6 Template Literal Lexical Components function scanTemplate() { var cooked = '', ch, start, rawOffset, terminated, head, tail, restore, unescaped; terminated = false; tail = false; start = index; head = (source[index] === '`'); rawOffset = 2; ++index; while (index < length) { ch = source[index++]; if (ch === '`') { rawOffset = 1; tail = true; terminated = true; break; } else if (ch === '$') { if (source[index] === '{') { state.curlyStack.push('${'); ++index; terminated = true; break; } cooked += ch; } else if (ch === '\\') { ch = source[index++]; if (!isLineTerminator(ch.charCodeAt(0))) { switch (ch) { case 'n': cooked += '\n'; break; case 'r': cooked += '\r'; break; case 't': cooked += '\t'; break; case 'u': case 'x': if (source[index] === '{') { ++index; cooked += scanUnicodeCodePointEscape(); } else { restore = index; unescaped = scanHexEscape(ch); if (unescaped) { cooked += unescaped; } else { index = restore; cooked += ch; } } break; case 'b': cooked += '\b'; break; case 'f': cooked += '\f'; break; case 'v': cooked += '\v'; break; default: if (ch === '0') { if (isDecimalDigit(source.charCodeAt(index))) { // Illegal: \01 \02 and so on throwError(Messages.TemplateOctalLiteral); } cooked += '\0'; } else if (isOctalDigit(ch)) { // Illegal: \1 \2 throwError(Messages.TemplateOctalLiteral); } else { cooked += ch; } break; } } else { ++lineNumber; if (ch === '\r' && source[index] === '\n') { ++index; } lineStart = index; } } else if (isLineTerminator(ch.charCodeAt(0))) { ++lineNumber; if (ch === '\r' && source[index] === '\n') { ++index; } lineStart = index; cooked += '\n'; } else { cooked += ch; } } if (!terminated) { throwUnexpectedToken(); } if (!head) { state.curlyStack.pop(); } return { type: Token.Template, value: { cooked: cooked, raw: source.slice(start + 1, index - rawOffset) }, head: head, tail: tail, lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } // ECMA-262 11.8.5 Regular Expression Literals function testRegExp(pattern, flags) { // The BMP character to use as a replacement for astral symbols when // translating an ES6 "u"-flagged pattern to an ES5-compatible // approximation. // Note: replacing with '\uFFFF' enables false positives in unlikely // scenarios. For example, `[\u{1044f}-\u{10440}]` is an invalid // pattern that would not be detected by this substitution. var astralSubstitute = '\uFFFF', tmp = pattern; if (flags.indexOf('u') >= 0) { tmp = tmp // Replace every Unicode escape sequence with the equivalent // BMP character or a constant ASCII code point in the case of // astral symbols. (See the above note on `astralSubstitute` // for more information.) .replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) { var codePoint = parseInt($1 || $2, 16); if (codePoint > 0x10FFFF) { throwUnexpectedToken(null, Messages.InvalidRegExp); } if (codePoint <= 0xFFFF) { return String.fromCharCode(codePoint); } return astralSubstitute; }) // Replace each paired surrogate with a single ASCII symbol to // avoid throwing on regular expressions that are only valid in // combination with the "u" flag. .replace( /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, astralSubstitute ); } // First, detect invalid regular expressions. try { RegExp(tmp); } catch (e) { throwUnexpectedToken(null, Messages.InvalidRegExp); } // Return a regular expression object for this pattern-flag pair, or // `null` in case the current environment doesn't support the flags it // uses. try { return new RegExp(pattern, flags); } catch (exception) { return null; } } function scanRegExpBody() { var ch, str, classMarker, terminated, body; ch = source[index]; assert(ch === '/', 'Regular expression literal must start with a slash'); str = source[index++]; classMarker = false; terminated = false; while (index < length) { ch = source[index++]; str += ch; if (ch === '\\') { ch = source[index++]; // ECMA-262 7.8.5 if (isLineTerminator(ch.charCodeAt(0))) { throwUnexpectedToken(null, Messages.UnterminatedRegExp); } str += ch; } else if (isLineTerminator(ch.charCodeAt(0))) { throwUnexpectedToken(null, Messages.UnterminatedRegExp); } else if (classMarker) { if (ch === ']') { classMarker = false; } } else { if (ch === '/') { terminated = true; break; } else if (ch === '[') { classMarker = true; } } } if (!terminated) { throwUnexpectedToken(null, Messages.UnterminatedRegExp); } // Exclude leading and trailing slash. body = str.substr(1, str.length - 2); return { value: body, literal: str }; } function scanRegExpFlags() { var ch, str, flags, restore; str = ''; flags = ''; while (index < length) { ch = source[index]; if (!isIdentifierPart(ch.charCodeAt(0))) { break; } ++index; if (ch === '\\' && index < length) { ch = source[index]; if (ch === 'u') { ++index; restore = index; ch = scanHexEscape('u'); if (ch) { flags += ch; for (str += '\\u'; restore < index; ++restore) { str += source[restore]; } } else { index = restore; flags += 'u'; str += '\\u'; } tolerateUnexpectedToken(); } else { str += '\\'; tolerateUnexpectedToken(); } } else { flags += ch; str += ch; } } return { value: flags, literal: str }; } function scanRegExp() { var start, body, flags, value; scanning = true; lookahead = null; skipComment(); start = index; body = scanRegExpBody(); flags = scanRegExpFlags(); value = testRegExp(body.value, flags.value); scanning = false; if (extra.tokenize) { return { type: Token.RegularExpression, value: value, regex: { pattern: body.value, flags: flags.value }, lineNumber: lineNumber, lineStart: lineStart, start: start, end: index }; } return { literal: body.literal + flags.literal, value: value, regex: { pattern: body.value, flags: flags.value }, start: start, end: index }; } function collectRegex() { var pos, loc, regex, token; skipComment(); pos = index; loc = { start: { line: lineNumber, column: index - lineStart } }; regex = scanRegExp(); loc.end = { line: lineNumber, column: index - lineStart }; /* istanbul ignore next */ if (!extra.tokenize) { // Pop the previous token, which is likely '/' or '/=' if (extra.tokens.length > 0) { token = extra.tokens[extra.tokens.length - 1]; if (token.range[0] === pos && token.type === 'Punctuator') { if (token.value === '/' || token.value === '/=') { extra.tokens.pop(); } } } extra.tokens.push({ type: 'RegularExpression', value: regex.literal, regex: regex.regex, range: [pos, index], loc: loc }); } return regex; } function isIdentifierName(token) { return token.type === Token.Identifier || token.type === Token.Keyword || token.type === Token.BooleanLiteral || token.type === Token.NullLiteral; } // Using the following algorithm: // https://github.com/mozilla/sweet.js/wiki/design function advanceSlash() { var regex, previous, check; function testKeyword(value) { return value && (value.length > 1) && (value[0] >= 'a') && (value[0] <= 'z'); } previous = extra.tokenValues[extra.tokens.length - 1]; regex = (previous !== null); switch (previous) { case 'this': case ']': regex = false; break; case ')': check = extra.tokenValues[extra.openParenToken - 1]; regex = (check === 'if' || check === 'while' || check === 'for' || check === 'with'); break; case '}': // Dividing a function by anything makes little sense, // but we have to check for that. regex = false; if (testKeyword(extra.tokenValues[extra.openCurlyToken - 3])) { // Anonymous function, e.g. function(){} /42 check = extra.tokenValues[extra.openCurlyToken - 4]; regex = check ? (FnExprTokens.indexOf(check) < 0) : false; } else if (testKeyword(extra.tokenValues[extra.openCurlyToken - 4])) { // Named function, e.g. function f(){} /42/ check = extra.tokenValues[extra.openCurlyToken - 5]; regex = check ? (FnExprTokens.indexOf(check) < 0) : true; } } return regex ? collectRegex() : scanPunctuator(); } function advance() { var cp, token; if (index >= length) { return { type: Token.EOF, lineNumber: lineNumber, lineStart: lineStart, start: index, end: index }; } cp = source.charCodeAt(index); if (isIdentifierStart(cp)) { token = scanIdentifier(); if (strict && isStrictModeReservedWord(token.value)) { token.type = Token.Keyword; } return token; } // Very common: ( and ) and ; if (cp === 0x28 || cp === 0x29 || cp === 0x3B) { return scanPunctuator(); } // String literal starts with single quote (U+0027) or double quote (U+0022). if (cp === 0x27 || cp === 0x22) { return scanStringLiteral(); } // Dot (.) U+002E can also start a floating-point number, hence the need // to check the next character. if (cp === 0x2E) { if (isDecimalDigit(source.charCodeAt(index + 1))) { return scanNumericLiteral(); } return scanPunctuator(); } if (isDecimalDigit(cp)) { return scanNumericLiteral(); } // Slash (/) U+002F can also start a regex. if (extra.tokenize && cp === 0x2F) { return advanceSlash(); } // Template literals start with ` (U+0060) for template head // or } (U+007D) for template middle or template tail. if (cp === 0x60 || (cp === 0x7D && state.curlyStack[state.curlyStack.length - 1] === '${')) { return scanTemplate(); } // Possible identifier start in a surrogate pair. if (cp >= 0xD800 && cp < 0xDFFF) { cp = codePointAt(index); if (isIdentifierStart(cp)) { return scanIdentifier(); } } return scanPunctuator(); } function collectToken() { var loc, token, value, entry; loc = { start: { line: lineNumber, column: index - lineStart } }; token = advance(); loc.end = { line: lineNumber, column: index - lineStart }; if (token.type !== Token.EOF) { value = source.slice(token.start, token.end); entry = { type: TokenName[token.type], value: value, range: [token.start, token.end], loc: loc }; if (token.regex) { entry.regex = { pattern: token.regex.pattern, flags: token.regex.flags }; } if (extra.tokenValues) { extra.tokenValues.push((entry.type === 'Punctuator' || entry.type === 'Keyword') ? entry.value : null); } if (extra.tokenize) { if (!extra.range) { delete entry.range; } if (!extra.loc) { delete entry.loc; } if (extra.delegate) { entry = extra.delegate(entry); } } extra.tokens.push(entry); } return token; } function lex() { var token; scanning = true; lastIndex = index; lastLineNumber = lineNumber; lastLineStart = lineStart; skipComment(); token = lookahead; startIndex = index; startLineNumber = lineNumber; startLineStart = lineStart; lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); scanning = false; return token; } function peek() { scanning = true; skipComment(); lastIndex = index; lastLineNumber = lineNumber; lastLineStart = lineStart; startIndex = index; startLineNumber = lineNumber; startLineStart = lineStart; lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); scanning = false; } function Position() { this.line = startLineNumber; this.column = startIndex - startLineStart; } function SourceLocation() { this.start = new Position(); this.end = null; } function WrappingSourceLocation(startToken) { this.start = { line: startToken.lineNumber, column: startToken.start - startToken.lineStart }; this.end = null; } function Node() { if (extra.range) { this.range = [startIndex, 0]; } if (extra.loc) { this.loc = new SourceLocation(); } } function WrappingNode(startToken) { if (extra.range) { this.range = [startToken.start, 0]; } if (extra.loc) { this.loc = new WrappingSourceLocation(startToken); } } WrappingNode.prototype = Node.prototype = { processComment: function () { var lastChild, innerComments, leadingComments, trailingComments, bottomRight = extra.bottomRightStack, i, comment, last = bottomRight[bottomRight.length - 1]; if (this.type === Syntax.Program) { if (this.body.length > 0) { return; } } /** * patch innnerComments for properties empty block * `function a() {/** comments **\/}` */ if (this.type === Syntax.BlockStatement && this.body.length === 0) { innerComments = []; for (i = extra.leadingComments.length - 1; i >= 0; --i) { comment = extra.leadingComments[i]; if (this.range[1] >= comment.range[1]) { innerComments.unshift(comment); extra.leadingComments.splice(i, 1); extra.trailingComments.splice(i, 1); } } if (innerComments.length) { this.innerComments = innerComments; //bottomRight.push(this); return; } } if (extra.trailingComments.length > 0) { trailingComments = []; for (i = extra.trailingComments.length - 1; i >= 0; --i) { comment = extra.trailingComments[i]; if (comment.range[0] >= this.range[1]) { trailingComments.unshift(comment); extra.trailingComments.splice(i, 1); } } extra.trailingComments = []; } else { if (last && last.trailingComments && last.trailingComments[0].range[0] >= this.range[1]) { trailingComments = last.trailingComments; delete last.trailingComments; } } // Eating the stack. while (last && last.range[0] >= this.range[0]) { lastChild = bottomRight.pop(); last = bottomRight[bottomRight.length - 1]; } if (lastChild) { if (lastChild.leadingComments) { leadingComments = []; for (i = lastChild.leadingComments.length - 1; i >= 0; --i) { comment = lastChild.leadingComments[i]; if (comment.range[1] <= this.range[0]) { leadingComments.unshift(comment); lastChild.leadingComments.splice(i, 1); } } if (!lastChild.leadingComments.length) { lastChild.leadingComments = undefined; } } } else if (extra.leadingComments.length > 0) { leadingComments = []; for (i = extra.leadingComments.length - 1; i >= 0; --i) { comment = extra.leadingComments[i]; if (comment.range[1] <= this.range[0]) { leadingComments.unshift(comment); extra.leadingComments.splice(i, 1); } } } if (leadingComments && leadingComments.length > 0) { this.leadingComments = leadingComments; } if (trailingComments && trailingComments.length > 0) { this.trailingComments = trailingComments; } bottomRight.push(this); }, finish: function () { if (extra.range) { this.range[1] = lastIndex; } if (extra.loc) { this.loc.end = { line: lastLineNumber, column: lastIndex - lastLineStart }; if (extra.source) { this.loc.source = extra.source; } } if (extra.attachComment) { this.processComment(); } }, finishArrayExpression: function (elements) { this.type = Syntax.ArrayExpression; this.elements = elements; this.finish(); return this; }, finishArrayPattern: function (elements) { this.type = Syntax.ArrayPattern; this.elements = elements; this.finish(); return this; }, finishArrowFunctionExpression: function (params, defaults, body, expression) { this.type = Syntax.ArrowFunctionExpression; this.id = null; this.params = params; this.defaults = defaults; this.body = body; this.generator = false; this.expression = expression; this.finish(); return this; }, finishAssignmentExpression: function (operator, left, right) { this.type = Syntax.AssignmentExpression; this.operator = operator; this.left = left; this.right = right; this.finish(); return this; }, finishAssignmentPattern: function (left, right) { this.type = Syntax.AssignmentPattern; this.left = left; this.right = right; this.finish(); return this; }, finishBinaryExpression: function (operator, left, right) { this.type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : Syntax.BinaryExpression; this.operator = operator; this.left = left; this.right = right; this.finish(); return this; }, finishBlockStatement: function (body) { this.type = Syntax.BlockStatement; this.body = body; this.finish(); return this; }, finishBreakStatement: function (label) { this.type = Syntax.BreakStatement; this.label = label; this.finish(); return this; }, finishCallExpression: function (callee, args) { this.type = Syntax.CallExpression; this.callee = callee; this.arguments = args; this.finish(); return this; }, finishCatchClause: function (param, body) { this.type = Syntax.CatchClause; this.param = param; this.body = body; this.finish(); return this; }, finishClassBody: function (body) { this.type = Syntax.ClassBody; this.body = body; this.finish(); return this; }, finishClassDeclaration: function (id, superClass, body) { this.type = Syntax.ClassDeclaration; this.id = id; this.superClass = superClass; this.body = body; this.finish(); return this; }, finishClassExpression: function (id, superClass, body) { this.type = Syntax.ClassExpression; this.id = id; this.superClass = superClass; this.body = body; this.finish(); return this; }, finishConditionalExpression: function (test, consequent, alternate) { this.type = Syntax.ConditionalExpression; this.test = test; this.consequent = consequent; this.alternate = alternate; this.finish(); return this; }, finishContinueStatement: function (label) { this.type = Syntax.ContinueStatement; this.label = label; this.finish(); return this; }, finishDebuggerStatement: function () { this.type = Syntax.DebuggerStatement; this.finish(); return this; }, finishDoWhileStatement: function (body, test) { this.type = Syntax.DoWhileStatement; this.body = body; this.test = test; this.finish(); return this; }, finishEmptyStatement: function () { this.type = Syntax.EmptyStatement; this.finish(); return this; }, finishExpressionStatement: function (expression) { this.type = Syntax.ExpressionStatement; this.expression = expression; this.finish(); return this; }, finishForStatement: function (init, test, update, body) { this.type = Syntax.ForStatement; this.init = init; this.test = test; this.update = update; this.body = body; this.finish(); return this; }, finishForOfStatement: function (left, right, body) { this.type = Syntax.ForOfStatement; this.left = left; this.right = right; this.body = body; this.finish(); return this; }, finishForInStatement: function (left, right, body) { this.type = Syntax.ForInStatement; this.left = left; this.right = right; this.body = body; this.each = false; this.finish(); return this; }, finishFunctionDeclaration: function (id, params, defaults, body, generator) { this.type = Syntax.FunctionDeclaration; this.id = id; this.params = params; this.defaults = defaults; this.body = body; this.generator = generator; this.expression = false; this.finish(); return this; }, finishFunctionExpression: function (id, params, defaults, body, generator) { this.type = Syntax.FunctionExpression; this.id = id; this.params = params; this.defaults = defaults; this.body = body; this.generator = generator; this.expression = false; this.finish(); return this; }, finishIdentifier: function (name) { this.type = Syntax.Identifier; this.name = name; this.finish(); return this; }, finishIfStatement: function (test, consequent, alternate) { this.type = Syntax.IfStatement; this.test = test; this.consequent = consequent; this.alternate = alternate; this.finish(); return this; }, finishLabeledStatement: function (label, body) { this.type = Syntax.LabeledStatement; this.label = label; this.body = body; this.finish(); return this; }, finishLiteral: function (token) { this.type = Syntax.Literal; this.value = token.value; this.raw = source.slice(token.start, token.end); if (token.regex) { this.regex = token.regex; } this.finish(); return this; }, finishMemberExpression: function (accessor, object, property) { this.type = Syntax.MemberExpression; this.computed = accessor === '['; this.object = object; this.property = property; this.finish(); return this; }, finishMetaProperty: function (meta, property) { this.type = Syntax.MetaProperty; this.meta = meta; this.property = property; this.finish(); return this; }, finishNewExpression: function (callee, args) { this.type = Syntax.NewExpression; this.callee = callee; this.arguments = args; this.finish(); return this; }, finishObjectExpression: function (properties) { this.type = Syntax.ObjectExpression; this.properties = properties; this.finish(); return this; }, finishObjectPattern: function (properties) { this.type = Syntax.ObjectPattern; this.properties = properties; this.finish(); return this; }, finishPostfixExpression: function (operator, argument) { this.type = Syntax.UpdateExpression; this.operator = operator; this.argument = argument; this.prefix = false; this.finish(); return this; }, finishProgram: function (body, sourceType) { this.type = Syntax.Program; this.body = body; this.sourceType = sourceType; this.finish(); return this; }, finishProperty: function (kind, key, computed, value, method, shorthand) { this.type = Syntax.Property; this.key = key; this.computed = computed; this.value = value; this.kind = kind; this.method = method; this.shorthand = shorthand; this.finish(); return this; }, finishRestElement: function (argument) { this.type = Syntax.RestElement; this.argument = argument; this.finish(); return this; }, finishReturnStatement: function (argument) { this.type = Syntax.ReturnStatement; this.argument = argument; this.finish(); return this; }, finishSequenceExpression: function (expressions) { this.type = Syntax.SequenceExpression; this.expressions = expressions; this.finish(); return this; }, finishSpreadElement: function (argument) { this.type = Syntax.SpreadElement; this.argument = argument; this.finish(); return this; }, finishSwitchCase: function (test, consequent) { this.type = Syntax.SwitchCase; this.test = test; this.consequent = consequent; this.finish(); return this; }, finishSuper: function () { this.type = Syntax.Super; this.finish(); return this; }, finishSwitchStatement: function (discriminant, cases) { this.type = Syntax.SwitchStatement; this.discriminant = discriminant; this.cases = cases; this.finish(); return this; }, finishTaggedTemplateExpression: function (tag, quasi) { this.type = Syntax.TaggedTemplateExpression; this.tag = tag; this.quasi = quasi; this.finish(); return this; }, finishTemplateElement: function (value, tail) { this.type = Syntax.TemplateElement; this.value = value; this.tail = tail; this.finish(); return this; }, finishTemplateLiteral: function (quasis, expressions) { this.type = Syntax.TemplateLiteral; this.quasis = quasis; this.expressions = expressions; this.finish(); return this; }, finishThisExpression: function () { this.type = Syntax.ThisExpression; this.finish(); return this; }, finishThrowStatement: function (argument) { this.type = Syntax.ThrowStatement; this.argument = argument; this.finish(); return this; }, finishTryStatement: function (block, handler, finalizer) { this.type = Syntax.TryStatement; this.block = block; this.guardedHandlers = []; this.handlers = handler ? [handler] : []; this.handler = handler; this.finalizer = finalizer; this.finish(); return this; }, finishUnaryExpression: function (operator, argument) { this.type = (operator === '++' || operator === '--') ? Syntax.UpdateExpression : Syntax.UnaryExpression; this.operator = operator; this.argument = argument; this.prefix = true; this.finish(); return this; }, finishVariableDeclaration: function (declarations) { this.type = Syntax.VariableDeclaration; this.declarations = declarations; this.kind = 'var'; this.finish(); return this; }, finishLexicalDeclaration: function (declarations, kind) { this.type = Syntax.VariableDeclaration; this.declarations = declarations; this.kind = kind; this.finish(); return this; }, finishVariableDeclarator: function (id, init) { this.type = Syntax.VariableDeclarator; this.id = id; this.init = init; this.finish(); return this; }, finishWhileStatement: function (test, body) { this.type = Syntax.WhileStatement; this.test = test; this.body = body; this.finish(); return this; }, finishWithStatement: function (object, body) { this.type = Syntax.WithStatement; this.object = object; this.body = body; this.finish(); return this; }, finishExportSpecifier: function (local, exported) { this.type = Syntax.ExportSpecifier; this.exported = exported || local; this.local = local; this.finish(); return this; }, finishImportDefaultSpecifier: function (local) { this.type = Syntax.ImportDefaultSpecifier; this.local = local; this.finish(); return this; }, finishImportNamespaceSpecifier: function (local) { this.type = Syntax.ImportNamespaceSpecifier; this.local = local; this.finish(); return this; }, finishExportNamedDeclaration: function (declaration, specifiers, src) { this.type = Syntax.ExportNamedDeclaration; this.declaration = declaration; this.specifiers = specifiers; this.source = src; this.finish(); return this; }, finishExportDefaultDeclaration: function (declaration) { this.type = Syntax.ExportDefaultDeclaration; this.declaration = declaration; this.finish(); return this; }, finishExportAllDeclaration: function (src) { this.type = Syntax.ExportAllDeclaration; this.source = src; this.finish(); return this; }, finishImportSpecifier: function (local, imported) { this.type = Syntax.ImportSpecifier; this.local = local || imported; this.imported = imported; this.finish(); return this; }, finishImportDeclaration: function (specifiers, src) { this.type = Syntax.ImportDeclaration; this.specifiers = specifiers; this.source = src; this.finish(); return this; }, finishYieldExpression: function (argument, delegate) { this.type = Syntax.YieldExpression; this.argument = argument; this.delegate = delegate; this.finish(); return this; } }; function recordError(error) { var e, existing; for (e = 0; e < extra.errors.length; e++) { existing = extra.errors[e]; // Prevent duplicated error. /* istanbul ignore next */ if (existing.index === error.index && existing.message === error.message) { return; } } extra.errors.push(error); } function constructError(msg, column) { var error = new Error(msg); try { throw error; } catch (base) { /* istanbul ignore else */ if (Object.create && Object.defineProperty) { error = Object.create(base); Object.defineProperty(error, 'column', { value: column }); } } finally { return error; } } function createError(line, pos, description) { var msg, column, error; msg = 'Line ' + line + ': ' + description; column = pos - (scanning ? lineStart : lastLineStart) + 1; error = constructError(msg, column); error.lineNumber = line; error.description = description; error.index = pos; return error; } // Throw an exception function throwError(messageFormat) { var args, msg; args = Array.prototype.slice.call(arguments, 1); msg = messageFormat.replace(/%(\d)/g, function (whole, idx) { assert(idx < args.length, 'Message reference must be in range'); return args[idx]; } ); throw createError(lastLineNumber, lastIndex, msg); } function tolerateError(messageFormat) { var args, msg, error; args = Array.prototype.slice.call(arguments, 1); /* istanbul ignore next */ msg = messageFormat.replace(/%(\d)/g, function (whole, idx) { assert(idx < args.length, 'Message reference must be in range'); return args[idx]; } ); error = createError(lineNumber, lastIndex, msg); if (extra.errors) { recordError(error); } else { throw error; } } // Throw an exception because of the token. function unexpectedTokenError(token, message) { var value, msg = message || Messages.UnexpectedToken; if (token) { if (!message) { msg = (token.type === Token.EOF) ? Messages.UnexpectedEOS : (token.type === Token.Identifier) ? Messages.UnexpectedIdentifier : (token.type === Token.NumericLiteral) ? Messages.UnexpectedNumber : (token.type === Token.StringLiteral) ? Messages.UnexpectedString : (token.type === Token.Template) ? Messages.UnexpectedTemplate : Messages.UnexpectedToken; if (token.type === Token.Keyword) { if (isFutureReservedWord(token.value)) { msg = Messages.UnexpectedReserved; } else if (strict && isStrictModeReservedWord(token.value)) { msg = Messages.StrictReservedWord; } } } value = (token.type === Token.Template) ? token.value.raw : token.value; } else { value = 'ILLEGAL'; } msg = msg.replace('%0', value); return (token && typeof token.lineNumber === 'number') ? createError(token.lineNumber, token.start, msg) : createError(scanning ? lineNumber : lastLineNumber, scanning ? index : lastIndex, msg); } function throwUnexpectedToken(token, message) { throw unexpectedTokenError(token, message); } function tolerateUnexpectedToken(token, message) { var error = unexpectedTokenError(token, message); if (extra.errors) { recordError(error); } else { throw error; } } // Expect the next token to match the specified punctuator. // If not, an exception will be thrown. function expect(value) { var token = lex(); if (token.type !== Token.Punctuator || token.value !== value) { throwUnexpectedToken(token); } } /** * @name expectCommaSeparator * @description Quietly expect a comma when in tolerant mode, otherwise delegates * to expect(value) * @since 2.0 */ function expectCommaSeparator() { var token; if (extra.errors) { token = lookahead; if (token.type === Token.Punctuator && token.value === ',') { lex(); } else if (token.type === Token.Punctuator && token.value === ';') { lex(); tolerateUnexpectedToken(token); } else { tolerateUnexpectedToken(token, Messages.UnexpectedToken); } } else { expect(','); } } // Expect the next token to match the specified keyword. // If not, an exception will be thrown. function expectKeyword(keyword) { var token = lex(); if (token.type !== Token.Keyword || token.value !== keyword) { throwUnexpectedToken(token); } } // Return true if the next token matches the specified punctuator. function match(value) { return lookahead.type === Token.Punctuator && lookahead.value === value; } // Return true if the next token matches the specified keyword function matchKeyword(keyword) { return lookahead.type === Token.Keyword && lookahead.value === keyword; } // Return true if the next token matches the specified contextual keyword // (where an identifier is sometimes a keyword depending on the context) function matchContextualKeyword(keyword) { return lookahead.type === Token.Identifier && lookahead.value === keyword; } // Return true if the next token is an assignment operator function matchAssign() { var op; if (lookahead.type !== Token.Punctuator) { return false; } op = lookahead.value; return op === '=' || op === '*=' || op === '/=' || op === '%=' || op === '+=' || op === '-=' || op === '<<=' || op === '>>=' || op === '>>>=' || op === '&=' || op === '^=' || op === '|='; } function consumeSemicolon() { // Catch the very common case first: immediately a semicolon (U+003B). if (source.charCodeAt(startIndex) === 0x3B || match(';')) { lex(); return; } if (hasLineTerminator) { return; } // FIXME(ikarienator): this is seemingly an issue in the previous location info convention. lastIndex = startIndex; lastLineNumber = startLineNumber; lastLineStart = startLineStart; if (lookahead.type !== Token.EOF && !match('}')) { throwUnexpectedToken(lookahead); } } // Cover grammar support. // // When an assignment expression position starts with an left parenthesis, the determination of the type // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead) // or the first comma. This situation also defers the determination of all the expressions nested in the pair. // // There are three productions that can be parsed in a parentheses pair that needs to be determined // after the outermost pair is closed. They are: // // 1. AssignmentExpression // 2. BindingElements // 3. AssignmentTargets // // In order to avoid exponential backtracking, we use two flags to denote if the production can be // binding element or assignment target. // // The three productions have the relationship: // // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression // // with a single exception that CoverInitializedName when used directly in an Expression, generates // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair. // // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not // effect the current flags. This means the production the parser parses is only used as an expression. Therefore // the CoverInitializedName check is conducted. // // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates // the flags outside of the parser. This means the production the parser parses is used as a part of a potential // pattern. The CoverInitializedName check is deferred. function isolateCoverGrammar(parser) { var oldIsBindingElement = isBindingElement, oldIsAssignmentTarget = isAssignmentTarget, oldFirstCoverInitializedNameError = firstCoverInitializedNameError, result; isBindingElement = true; isAssignmentTarget = true; firstCoverInitializedNameError = null; result = parser(); if (firstCoverInitializedNameError !== null) { throwUnexpectedToken(firstCoverInitializedNameError); } isBindingElement = oldIsBindingElement; isAssignmentTarget = oldIsAssignmentTarget; firstCoverInitializedNameError = oldFirstCoverInitializedNameError; return result; } function inheritCoverGrammar(parser) { var oldIsBindingElement = isBindingElement, oldIsAssignmentTarget = isAssignmentTarget, oldFirstCoverInitializedNameError = firstCoverInitializedNameError, result; isBindingElement = true; isAssignmentTarget = true; firstCoverInitializedNameError = null; result = parser(); isBindingElement = isBindingElement && oldIsBindingElement; isAssignmentTarget = isAssignmentTarget && oldIsAssignmentTarget; firstCoverInitializedNameError = oldFirstCoverInitializedNameError || firstCoverInitializedNameError; return result; } // ECMA-262 13.3.3 Destructuring Binding Patterns function parseArrayPattern(params, kind) { var node = new Node(), elements = [], rest, restNode; expect('['); while (!match(']')) { if (match(',')) { lex(); elements.push(null); } else { if (match('...')) { restNode = new Node(); lex(); params.push(lookahead); rest = parseVariableIdentifier(kind); elements.push(restNode.finishRestElement(rest)); break; } else { elements.push(parsePatternWithDefault(params, kind)); } if (!match(']')) { expect(','); } } } expect(']'); return node.finishArrayPattern(elements); } function parsePropertyPattern(params, kind) { var node = new Node(), key, keyToken, computed = match('['), init; if (lookahead.type === Token.Identifier) { keyToken = lookahead; key = parseVariableIdentifier(); if (match('=')) { params.push(keyToken); lex(); init = parseAssignmentExpression(); return node.finishProperty( 'init', key, false, new WrappingNode(keyToken).finishAssignmentPattern(key, init), false, false); } else if (!match(':')) { params.push(keyToken); return node.finishProperty('init', key, false, key, false, true); } } else { key = parseObjectPropertyKey(); } expect(':'); init = parsePatternWithDefault(params, kind); return node.finishProperty('init', key, computed, init, false, false); } function parseObjectPattern(params, kind) { var node = new Node(), properties = []; expect('{'); while (!match('}')) { properties.push(parsePropertyPattern(params, kind)); if (!match('}')) { expect(','); } } lex(); return node.finishObjectPattern(properties); } function parsePattern(params, kind) { if (match('[')) { return parseArrayPattern(params, kind); } else if (match('{')) { return parseObjectPattern(params, kind); } else if (matchKeyword('let')) { if (kind === 'const' || kind === 'let') { tolerateUnexpectedToken(lookahead, Messages.UnexpectedToken); } } params.push(lookahead); return parseVariableIdentifier(kind); } function parsePatternWithDefault(params, kind) { var startToken = lookahead, pattern, previousAllowYield, right; pattern = parsePattern(params, kind); if (match('=')) { lex(); previousAllowYield = state.allowYield; state.allowYield = true; right = isolateCoverGrammar(parseAssignmentExpression); state.allowYield = previousAllowYield; pattern = new WrappingNode(startToken).finishAssignmentPattern(pattern, right); } return pattern; } // ECMA-262 12.2.5 Array Initializer function parseArrayInitializer() { var elements = [], node = new Node(), restSpread; expect('['); while (!match(']')) { if (match(',')) { lex(); elements.push(null); } else if (match('...')) { restSpread = new Node(); lex(); restSpread.finishSpreadElement(inheritCoverGrammar(parseAssignmentExpression)); if (!match(']')) { isAssignmentTarget = isBindingElement = false; expect(','); } elements.push(restSpread); } else { elements.push(inheritCoverGrammar(parseAssignmentExpression)); if (!match(']')) { expect(','); } } } lex(); return node.finishArrayExpression(elements); } // ECMA-262 12.2.6 Object Initializer function parsePropertyFunction(node, paramInfo, isGenerator) { var previousStrict, body; isAssignmentTarget = isBindingElement = false; previousStrict = strict; body = isolateCoverGrammar(parseFunctionSourceElements); if (strict && paramInfo.firstRestricted) { tolerateUnexpectedToken(paramInfo.firstRestricted, paramInfo.message); } if (strict && paramInfo.stricted) { tolerateUnexpectedToken(paramInfo.stricted, paramInfo.message); } strict = previousStrict; return node.finishFunctionExpression(null, paramInfo.params, paramInfo.defaults, body, isGenerator); } function parsePropertyMethodFunction() { var params, method, node = new Node(), previousAllowYield = state.allowYield; state.allowYield = false; params = parseParams(); state.allowYield = previousAllowYield; state.allowYield = false; method = parsePropertyFunction(node, params, false); state.allowYield = previousAllowYield; return method; } function parseObjectPropertyKey() { var token, node = new Node(), expr; token = lex(); // Note: This function is called only from parseObjectProperty(), where // EOF and Punctuator tokens are already filtered out. switch (token.type) { case Token.StringLiteral: case Token.NumericLiteral: if (strict && token.octal) { tolerateUnexpectedToken(token, Messages.StrictOctalLiteral); } return node.finishLiteral(token); case Token.Identifier: case Token.BooleanLiteral: case Token.NullLiteral: case Token.Keyword: return node.finishIdentifier(token.value); case Token.Punctuator: if (token.value === '[') { expr = isolateCoverGrammar(parseAssignmentExpression); expect(']'); return expr; } break; } throwUnexpectedToken(token); } function lookaheadPropertyName() { switch (lookahead.type) { case Token.Identifier: case Token.StringLiteral: case Token.BooleanLiteral: case Token.NullLiteral: case Token.NumericLiteral: case Token.Keyword: return true; case Token.Punctuator: return lookahead.value === '['; } return false; } // This function is to try to parse a MethodDefinition as defined in 14.3. But in the case of object literals, // it might be called at a position where there is in fact a short hand identifier pattern or a data property. // This can only be determined after we consumed up to the left parentheses. // // In order to avoid back tracking, it returns `null` if the position is not a MethodDefinition and the caller // is responsible to visit other options. function tryParseMethodDefinition(token, key, computed, node) { var value, options, methodNode, params, previousAllowYield = state.allowYield; if (token.type === Token.Identifier) { // check for `get` and `set`; if (token.value === 'get' && lookaheadPropertyName()) { computed = match('['); key = parseObjectPropertyKey(); methodNode = new Node(); expect('('); expect(')'); state.allowYield = false; value = parsePropertyFunction(methodNode, { params: [], defaults: [], stricted: null, firstRestricted: null, message: null }, false); state.allowYield = previousAllowYield; return node.finishProperty('get', key, computed, value, false, false); } else if (token.value === 'set' && lookaheadPropertyName()) { computed = match('['); key = parseObjectPropertyKey(); methodNode = new Node(); expect('('); options = { params: [], defaultCount: 0, defaults: [], firstRestricted: null, paramSet: {} }; if (match(')')) { tolerateUnexpectedToken(lookahead); } else { state.allowYield = false; parseParam(options); state.allowYield = previousAllowYield; if (options.defaultCount === 0) { options.defaults = []; } } expect(')'); state.allowYield = false; value = parsePropertyFunction(methodNode, options, false); state.allowYield = previousAllowYield; return node.finishProperty('set', key, computed, value, false, false); } } else if (token.type === Token.Punctuator && token.value === '*' && lookaheadPropertyName()) { computed = match('['); key = parseObjectPropertyKey(); methodNode = new Node(); state.allowYield = true; params = parseParams(); state.allowYield = previousAllowYield; state.allowYield = false; value = parsePropertyFunction(methodNode, params, true); state.allowYield = previousAllowYield; return node.finishProperty('init', key, computed, value, true, false); } if (key && match('(')) { value = parsePropertyMethodFunction(); return node.finishProperty('init', key, computed, value, true, false); } // Not a MethodDefinition. return null; } function parseObjectProperty(hasProto) { var token = lookahead, node = new Node(), computed, key, maybeMethod, proto, value; computed = match('['); if (match('*')) { lex(); } else { key = parseObjectPropertyKey(); } maybeMethod = tryParseMethodDefinition(token, key, computed, node); if (maybeMethod) { return maybeMethod; } if (!key) { throwUnexpectedToken(lookahead); } // Check for duplicated __proto__ if (!computed) { proto = (key.type === Syntax.Identifier && key.name === '__proto__') || (key.type === Syntax.Literal && key.value === '__proto__'); if (hasProto.value && proto) { tolerateError(Messages.DuplicateProtoProperty); } hasProto.value |= proto; } if (match(':')) { lex(); value = inheritCoverGrammar(parseAssignmentExpression); return node.finishProperty('init', key, computed, value, false, false); } if (token.type === Token.Identifier) { if (match('=')) { firstCoverInitializedNameError = lookahead; lex(); value = isolateCoverGrammar(parseAssignmentExpression); return node.finishProperty('init', key, computed, new WrappingNode(token).finishAssignmentPattern(key, value), false, true); } return node.finishProperty('init', key, computed, key, false, true); } throwUnexpectedToken(lookahead); } function parseObjectInitializer() { var properties = [], hasProto = {value: false}, node = new Node(); expect('{'); while (!match('}')) { properties.push(parseObjectProperty(hasProto)); if (!match('}')) { expectCommaSeparator(); } } expect('}'); return node.finishObjectExpression(properties); } function reinterpretExpressionAsPattern(expr) { var i; switch (expr.type) { case Syntax.Identifier: case Syntax.MemberExpression: case Syntax.RestElement: case Syntax.AssignmentPattern: break; case Syntax.SpreadElement: expr.type = Syntax.RestElement; reinterpretExpressionAsPattern(expr.argument); break; case Syntax.ArrayExpression: expr.type = Syntax.ArrayPattern; for (i = 0; i < expr.elements.length; i++) { if (expr.elements[i] !== null) { reinterpretExpressionAsPattern(expr.elements[i]); } } break; case Syntax.ObjectExpression: expr.type = Syntax.ObjectPattern; for (i = 0; i < expr.properties.length; i++) { reinterpretExpressionAsPattern(expr.properties[i].value); } break; case Syntax.AssignmentExpression: expr.type = Syntax.AssignmentPattern; reinterpretExpressionAsPattern(expr.left); break; default: // Allow other node type for tolerant parsing. break; } } // ECMA-262 12.2.9 Template Literals function parseTemplateElement(option) { var node, token; if (lookahead.type !== Token.Template || (option.head && !lookahead.head)) { throwUnexpectedToken(); } node = new Node(); token = lex(); return node.finishTemplateElement({ raw: token.value.raw, cooked: token.value.cooked }, token.tail); } function parseTemplateLiteral() { var quasi, quasis, expressions, node = new Node(); quasi = parseTemplateElement({ head: true }); quasis = [quasi]; expressions = []; while (!quasi.tail) { expressions.push(parseExpression()); quasi = parseTemplateElement({ head: false }); quasis.push(quasi); } return node.finishTemplateLiteral(quasis, expressions); } // ECMA-262 12.2.10 The Grouping Operator function parseGroupExpression() { var expr, expressions, startToken, i, params = []; expect('('); if (match(')')) { lex(); if (!match('=>')) { expect('=>'); } return { type: PlaceHolders.ArrowParameterPlaceHolder, params: [], rawParams: [] }; } startToken = lookahead; if (match('...')) { expr = parseRestElement(params); expect(')'); if (!match('=>')) { expect('=>'); } return { type: PlaceHolders.ArrowParameterPlaceHolder, params: [expr] }; } isBindingElement = true; expr = inheritCoverGrammar(parseAssignmentExpression); if (match(',')) { isAssignmentTarget = false; expressions = [expr]; while (startIndex < length) { if (!match(',')) { break; } lex(); if (match('...')) { if (!isBindingElement) { throwUnexpectedToken(lookahead); } expressions.push(parseRestElement(params)); expect(')'); if (!match('=>')) { expect('=>'); } isBindingElement = false; for (i = 0; i < expressions.length; i++) { reinterpretExpressionAsPattern(expressions[i]); } return { type: PlaceHolders.ArrowParameterPlaceHolder, params: expressions }; } expressions.push(inheritCoverGrammar(parseAssignmentExpression)); } expr = new WrappingNode(startToken).finishSequenceExpression(expressions); } expect(')'); if (match('=>')) { if (expr.type === Syntax.Identifier && expr.name === 'yield') { return { type: PlaceHolders.ArrowParameterPlaceHolder, params: [expr] }; } if (!isBindingElement) { throwUnexpectedToken(lookahead); } if (expr.type === Syntax.SequenceExpression) { for (i = 0; i < expr.expressions.length; i++) { reinterpretExpressionAsPattern(expr.expressions[i]); } } else { reinterpretExpressionAsPattern(expr); } expr = { type: PlaceHolders.ArrowParameterPlaceHolder, params: expr.type === Syntax.SequenceExpression ? expr.expressions : [expr] }; } isBindingElement = false; return expr; } // ECMA-262 12.2 Primary Expressions function parsePrimaryExpression() { var type, token, expr, node; if (match('(')) { isBindingElement = false; return inheritCoverGrammar(parseGroupExpression); } if (match('[')) { return inheritCoverGrammar(parseArrayInitializer); } if (match('{')) { return inheritCoverGrammar(parseObjectInitializer); } type = lookahead.type; node = new Node(); if (type === Token.Identifier) { if (state.sourceType === 'module' && lookahead.value === 'await') { tolerateUnexpectedToken(lookahead); } expr = node.finishIdentifier(lex().value); } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { isAssignmentTarget = isBindingElement = false; if (strict && lookahead.octal) { tolerateUnexpectedToken(lookahead, Messages.StrictOctalLiteral); } expr = node.finishLiteral(lex()); } else if (type === Token.Keyword) { if (!strict && state.allowYield && matchKeyword('yield')) { return parseNonComputedProperty(); } if (!strict && matchKeyword('let')) { return node.finishIdentifier(lex().value); } isAssignmentTarget = isBindingElement = false; if (matchKeyword('function')) { return parseFunctionExpression(); } if (matchKeyword('this')) { lex(); return node.finishThisExpression(); } if (matchKeyword('class')) { return parseClassExpression(); } throwUnexpectedToken(lex()); } else if (type === Token.BooleanLiteral) { isAssignmentTarget = isBindingElement = false; token = lex(); token.value = (token.value === 'true'); expr = node.finishLiteral(token); } else if (type === Token.NullLiteral) { isAssignmentTarget = isBindingElement = false; token = lex(); token.value = null; expr = node.finishLiteral(token); } else if (match('/') || match('/=')) { isAssignmentTarget = isBindingElement = false; index = startIndex; if (typeof extra.tokens !== 'undefined') { token = collectRegex(); } else { token = scanRegExp(); } lex(); expr = node.finishLiteral(token); } else if (type === Token.Template) { expr = parseTemplateLiteral(); } else { throwUnexpectedToken(lex()); } return expr; } // ECMA-262 12.3 Left-Hand-Side Expressions function parseArguments() { var args = [], expr; expect('('); if (!match(')')) { while (startIndex < length) { if (match('...')) { expr = new Node(); lex(); expr.finishSpreadElement(isolateCoverGrammar(parseAssignmentExpression)); } else { expr = isolateCoverGrammar(parseAssignmentExpression); } args.push(expr); if (match(')')) { break; } expectCommaSeparator(); } } expect(')'); return args; } function parseNonComputedProperty() { var token, node = new Node(); token = lex(); if (!isIdentifierName(token)) { throwUnexpectedToken(token); } return node.finishIdentifier(token.value); } function parseNonComputedMember() { expect('.'); return parseNonComputedProperty(); } function parseComputedMember() { var expr; expect('['); expr = isolateCoverGrammar(parseExpression); expect(']'); return expr; } // ECMA-262 12.3.3 The new Operator function parseNewExpression() { var callee, args, node = new Node(); expectKeyword('new'); if (match('.')) { lex(); if (lookahead.type === Token.Identifier && lookahead.value === 'target') { if (state.inFunctionBody) { lex(); return node.finishMetaProperty('new', 'target'); } } throwUnexpectedToken(lookahead); } callee = isolateCoverGrammar(parseLeftHandSideExpression); args = match('(') ? parseArguments() : []; isAssignmentTarget = isBindingElement = false; return node.finishNewExpression(callee, args); } // ECMA-262 12.3.4 Function Calls function parseLeftHandSideExpressionAllowCall() { var quasi, expr, args, property, startToken, previousAllowIn = state.allowIn; startToken = lookahead; state.allowIn = true; if (matchKeyword('super') && state.inFunctionBody) { expr = new Node(); lex(); expr = expr.finishSuper(); if (!match('(') && !match('.') && !match('[')) { throwUnexpectedToken(lookahead); } } else { expr = inheritCoverGrammar(matchKeyword('new') ? parseNewExpression : parsePrimaryExpression); } for (;;) { if (match('.')) { isBindingElement = false; isAssignmentTarget = true; property = parseNonComputedMember(); expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property); } else if (match('(')) { isBindingElement = false; isAssignmentTarget = false; args = parseArguments(); expr = new WrappingNode(startToken).finishCallExpression(expr, args); } else if (match('[')) { isBindingElement = false; isAssignmentTarget = true; property = parseComputedMember(); expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property); } else if (lookahead.type === Token.Template && lookahead.head) { quasi = parseTemplateLiteral(); expr = new WrappingNode(startToken).finishTaggedTemplateExpression(expr, quasi); } else { break; } } state.allowIn = previousAllowIn; return expr; } // ECMA-262 12.3 Left-Hand-Side Expressions function parseLeftHandSideExpression() { var quasi, expr, property, startToken; assert(state.allowIn, 'callee of new expression always allow in keyword.'); startToken = lookahead; if (matchKeyword('super') && state.inFunctionBody) { expr = new Node(); lex(); expr = expr.finishSuper(); if (!match('[') && !match('.')) { throwUnexpectedToken(lookahead); } } else { expr = inheritCoverGrammar(matchKeyword('new') ? parseNewExpression : parsePrimaryExpression); } for (;;) { if (match('[')) { isBindingElement = false; isAssignmentTarget = true; property = parseComputedMember(); expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property); } else if (match('.')) { isBindingElement = false; isAssignmentTarget = true; property = parseNonComputedMember(); expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property); } else if (lookahead.type === Token.Template && lookahead.head) { quasi = parseTemplateLiteral(); expr = new WrappingNode(startToken).finishTaggedTemplateExpression(expr, quasi); } else { break; } } return expr; } // ECMA-262 12.4 Postfix Expressions function parsePostfixExpression() { var expr, token, startToken = lookahead; expr = inheritCoverGrammar(parseLeftHandSideExpressionAllowCall); if (!hasLineTerminator && lookahead.type === Token.Punctuator) { if (match('++') || match('--')) { // ECMA-262 11.3.1, 11.3.2 if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { tolerateError(Messages.StrictLHSPostfix); } if (!isAssignmentTarget) { tolerateError(Messages.InvalidLHSInAssignment); } isAssignmentTarget = isBindingElement = false; token = lex(); expr = new WrappingNode(startToken).finishPostfixExpression(token.value, expr); } } return expr; } // ECMA-262 12.5 Unary Operators function parseUnaryExpression() { var token, expr, startToken; if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { expr = parsePostfixExpression(); } else if (match('++') || match('--')) { startToken = lookahead; token = lex(); expr = inheritCoverGrammar(parseUnaryExpression); // ECMA-262 11.4.4, 11.4.5 if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { tolerateError(Messages.StrictLHSPrefix); } if (!isAssignmentTarget) { tolerateError(Messages.InvalidLHSInAssignment); } expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr); isAssignmentTarget = isBindingElement = false; } else if (match('+') || match('-') || match('~') || match('!')) { startToken = lookahead; token = lex(); expr = inheritCoverGrammar(parseUnaryExpression); expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr); isAssignmentTarget = isBindingElement = false; } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { startToken = lookahead; token = lex(); expr = inheritCoverGrammar(parseUnaryExpression); expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr); if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { tolerateError(Messages.StrictDelete); } isAssignmentTarget = isBindingElement = false; } else { expr = parsePostfixExpression(); } return expr; } function binaryPrecedence(token, allowIn) { var prec = 0; if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { return 0; } switch (token.value) { case '||': prec = 1; break; case '&&': prec = 2; break; case '|': prec = 3; break; case '^': prec = 4; break; case '&': prec = 5; break; case '==': case '!=': case '===': case '!==': prec = 6; break; case '<': case '>': case '<=': case '>=': case 'instanceof': prec = 7; break; case 'in': prec = allowIn ? 7 : 0; break; case '<<': case '>>': case '>>>': prec = 8; break; case '+': case '-': prec = 9; break; case '*': case '/': case '%': prec = 11; break; default: break; } return prec; } // ECMA-262 12.6 Multiplicative Operators // ECMA-262 12.7 Additive Operators // ECMA-262 12.8 Bitwise Shift Operators // ECMA-262 12.9 Relational Operators // ECMA-262 12.10 Equality Operators // ECMA-262 12.11 Binary Bitwise Operators // ECMA-262 12.12 Binary Logical Operators function parseBinaryExpression() { var marker, markers, expr, token, prec, stack, right, operator, left, i; marker = lookahead; left = inheritCoverGrammar(parseUnaryExpression); token = lookahead; prec = binaryPrecedence(token, state.allowIn); if (prec === 0) { return left; } isAssignmentTarget = isBindingElement = false; token.prec = prec; lex(); markers = [marker, lookahead]; right = isolateCoverGrammar(parseUnaryExpression); stack = [left, token, right]; while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { // Reduce: make a binary expression from the three topmost entries. while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { right = stack.pop(); operator = stack.pop().value; left = stack.pop(); markers.pop(); expr = new WrappingNode(markers[markers.length - 1]).finishBinaryExpression(operator, left, right); stack.push(expr); } // Shift. token = lex(); token.prec = prec; stack.push(token); markers.push(lookahead); expr = isolateCoverGrammar(parseUnaryExpression); stack.push(expr); } // Final reduce to clean-up the stack. i = stack.length - 1; expr = stack[i]; markers.pop(); while (i > 1) { expr = new WrappingNode(markers.pop()).finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr); i -= 2; } return expr; } // ECMA-262 12.13 Conditional Operator function parseConditionalExpression() { var expr, previousAllowIn, consequent, alternate, startToken; startToken = lookahead; expr = inheritCoverGrammar(parseBinaryExpression); if (match('?')) { lex(); previousAllowIn = state.allowIn; state.allowIn = true; consequent = isolateCoverGrammar(parseAssignmentExpression); state.allowIn = previousAllowIn; expect(':'); alternate = isolateCoverGrammar(parseAssignmentExpression); expr = new WrappingNode(startToken).finishConditionalExpression(expr, consequent, alternate); isAssignmentTarget = isBindingElement = false; } return expr; } // ECMA-262 14.2 Arrow Function Definitions function parseConciseBody() { if (match('{')) { return parseFunctionSourceElements(); } return isolateCoverGrammar(parseAssignmentExpression); } function checkPatternParam(options, param) { var i; switch (param.type) { case Syntax.Identifier: validateParam(options, param, param.name); break; case Syntax.RestElement: checkPatternParam(options, param.argument); break; case Syntax.AssignmentPattern: checkPatternParam(options, param.left); break; case Syntax.ArrayPattern: for (i = 0; i < param.elements.length; i++) { if (param.elements[i] !== null) { checkPatternParam(options, param.elements[i]); } } break; case Syntax.YieldExpression: break; default: assert(param.type === Syntax.ObjectPattern, 'Invalid type'); for (i = 0; i < param.properties.length; i++) { checkPatternParam(options, param.properties[i].value); } break; } } function reinterpretAsCoverFormalsList(expr) { var i, len, param, params, defaults, defaultCount, options, token; defaults = []; defaultCount = 0; params = [expr]; switch (expr.type) { case Syntax.Identifier: break; case PlaceHolders.ArrowParameterPlaceHolder: params = expr.params; break; default: return null; } options = { paramSet: {} }; for (i = 0, len = params.length; i < len; i += 1) { param = params[i]; switch (param.type) { case Syntax.AssignmentPattern: params[i] = param.left; if (param.right.type === Syntax.YieldExpression) { if (param.right.argument) { throwUnexpectedToken(lookahead); } param.right.type = Syntax.Identifier; param.right.name = 'yield'; delete param.right.argument; delete param.right.delegate; } defaults.push(param.right); ++defaultCount; checkPatternParam(options, param.left); break; default: checkPatternParam(options, param); params[i] = param; defaults.push(null); break; } } if (strict || !state.allowYield) { for (i = 0, len = params.length; i < len; i += 1) { param = params[i]; if (param.type === Syntax.YieldExpression) { throwUnexpectedToken(lookahead); } } } if (options.message === Messages.StrictParamDupe) { token = strict ? options.stricted : options.firstRestricted; throwUnexpectedToken(token, options.message); } if (defaultCount === 0) { defaults = []; } return { params: params, defaults: defaults, stricted: options.stricted, firstRestricted: options.firstRestricted, message: options.message }; } function parseArrowFunctionExpression(options, node) { var previousStrict, previousAllowYield, body; if (hasLineTerminator) { tolerateUnexpectedToken(lookahead); } expect('=>'); previousStrict = strict; previousAllowYield = state.allowYield; state.allowYield = true; body = parseConciseBody(); if (strict && options.firstRestricted) { throwUnexpectedToken(options.firstRestricted, options.message); } if (strict && options.stricted) { tolerateUnexpectedToken(options.stricted, options.message); } strict = previousStrict; state.allowYield = previousAllowYield; return node.finishArrowFunctionExpression(options.params, options.defaults, body, body.type !== Syntax.BlockStatement); } // ECMA-262 14.4 Yield expression function parseYieldExpression() { var argument, expr, delegate, previousAllowYield; argument = null; expr = new Node(); delegate = false; expectKeyword('yield'); if (!hasLineTerminator) { previousAllowYield = state.allowYield; state.allowYield = false; delegate = match('*'); if (delegate) { lex(); argument = parseAssignmentExpression(); } else { if (!match(';') && !match('}') && !match(')') && lookahead.type !== Token.EOF) { argument = parseAssignmentExpression(); } } state.allowYield = previousAllowYield; } return expr.finishYieldExpression(argument, delegate); } // ECMA-262 12.14 Assignment Operators function parseAssignmentExpression() { var token, expr, right, list, startToken; startToken = lookahead; token = lookahead; if (!state.allowYield && matchKeyword('yield')) { return parseYieldExpression(); } expr = parseConditionalExpression(); if (expr.type === PlaceHolders.ArrowParameterPlaceHolder || match('=>')) { isAssignmentTarget = isBindingElement = false; list = reinterpretAsCoverFormalsList(expr); if (list) { firstCoverInitializedNameError = null; return parseArrowFunctionExpression(list, new WrappingNode(startToken)); } return expr; } if (matchAssign()) { if (!isAssignmentTarget) { tolerateError(Messages.InvalidLHSInAssignment); } // ECMA-262 12.1.1 if (strict && expr.type === Syntax.Identifier) { if (isRestrictedWord(expr.name)) { tolerateUnexpectedToken(token, Messages.StrictLHSAssignment); } if (isStrictModeReservedWord(expr.name)) { tolerateUnexpectedToken(token, Messages.StrictReservedWord); } } if (!match('=')) { isAssignmentTarget = isBindingElement = false; } else { reinterpretExpressionAsPattern(expr); } token = lex(); right = isolateCoverGrammar(parseAssignmentExpression); expr = new WrappingNode(startToken).finishAssignmentExpression(token.value, expr, right); firstCoverInitializedNameError = null; } return expr; } // ECMA-262 12.15 Comma Operator function parseExpression() { var expr, startToken = lookahead, expressions; expr = isolateCoverGrammar(parseAssignmentExpression); if (match(',')) { expressions = [expr]; while (startIndex < length) { if (!match(',')) { break; } lex(); expressions.push(isolateCoverGrammar(parseAssignmentExpression)); } expr = new WrappingNode(startToken).finishSequenceExpression(expressions); } return expr; } // ECMA-262 13.2 Block function parseStatementListItem() { if (lookahead.type === Token.Keyword) { switch (lookahead.value) { case 'export': if (state.sourceType !== 'module') { tolerateUnexpectedToken(lookahead, Messages.IllegalExportDeclaration); } return parseExportDeclaration(); case 'import': if (state.sourceType !== 'module') { tolerateUnexpectedToken(lookahead, Messages.IllegalImportDeclaration); } return parseImportDeclaration(); case 'const': return parseLexicalDeclaration({inFor: false}); case 'function': return parseFunctionDeclaration(new Node()); case 'class': return parseClassDeclaration(); } } if (matchKeyword('let') && isLexicalDeclaration()) { return parseLexicalDeclaration({inFor: false}); } return parseStatement(); } function parseStatementList() { var list = []; while (startIndex < length) { if (match('}')) { break; } list.push(parseStatementListItem()); } return list; } function parseBlock() { var block, node = new Node(); expect('{'); block = parseStatementList(); expect('}'); return node.finishBlockStatement(block); } // ECMA-262 13.3.2 Variable Statement function parseVariableIdentifier(kind) { var token, node = new Node(); token = lex(); if (token.type === Token.Keyword && token.value === 'yield') { if (strict) { tolerateUnexpectedToken(token, Messages.StrictReservedWord); } if (!state.allowYield) { throwUnexpectedToken(token); } } else if (token.type !== Token.Identifier) { if (strict && token.type === Token.Keyword && isStrictModeReservedWord(token.value)) { tolerateUnexpectedToken(token, Messages.StrictReservedWord); } else { if (strict || token.value !== 'let' || kind !== 'var') { throwUnexpectedToken(token); } } } else if (state.sourceType === 'module' && token.type === Token.Identifier && token.value === 'await') { tolerateUnexpectedToken(token); } return node.finishIdentifier(token.value); } function parseVariableDeclaration(options) { var init = null, id, node = new Node(), params = []; id = parsePattern(params, 'var'); // ECMA-262 12.2.1 if (strict && isRestrictedWord(id.name)) { tolerateError(Messages.StrictVarName); } if (match('=')) { lex(); init = isolateCoverGrammar(parseAssignmentExpression); } else if (id.type !== Syntax.Identifier && !options.inFor) { expect('='); } return node.finishVariableDeclarator(id, init); } function parseVariableDeclarationList(options) { var opt, list; opt = { inFor: options.inFor }; list = [parseVariableDeclaration(opt)]; while (match(',')) { lex(); list.push(parseVariableDeclaration(opt)); } return list; } function parseVariableStatement(node) { var declarations; expectKeyword('var'); declarations = parseVariableDeclarationList({ inFor: false }); consumeSemicolon(); return node.finishVariableDeclaration(declarations); } // ECMA-262 13.3.1 Let and Const Declarations function parseLexicalBinding(kind, options) { var init = null, id, node = new Node(), params = []; id = parsePattern(params, kind); // ECMA-262 12.2.1 if (strict && id.type === Syntax.Identifier && isRestrictedWord(id.name)) { tolerateError(Messages.StrictVarName); } if (kind === 'const') { if (!matchKeyword('in') && !matchContextualKeyword('of')) { expect('='); init = isolateCoverGrammar(parseAssignmentExpression); } } else if ((!options.inFor && id.type !== Syntax.Identifier) || match('=')) { expect('='); init = isolateCoverGrammar(parseAssignmentExpression); } return node.finishVariableDeclarator(id, init); } function parseBindingList(kind, options) { var list = [parseLexicalBinding(kind, options)]; while (match(',')) { lex(); list.push(parseLexicalBinding(kind, options)); } return list; } function tokenizerState() { return { index: index, lineNumber: lineNumber, lineStart: lineStart, hasLineTerminator: hasLineTerminator, lastIndex: lastIndex, lastLineNumber: lastLineNumber, lastLineStart: lastLineStart, startIndex: startIndex, startLineNumber: startLineNumber, startLineStart: startLineStart, lookahead: lookahead, tokenCount: extra.tokens ? extra.tokens.length : 0 }; } function resetTokenizerState(ts) { index = ts.index; lineNumber = ts.lineNumber; lineStart = ts.lineStart; hasLineTerminator = ts.hasLineTerminator; lastIndex = ts.lastIndex; lastLineNumber = ts.lastLineNumber; lastLineStart = ts.lastLineStart; startIndex = ts.startIndex; startLineNumber = ts.startLineNumber; startLineStart = ts.startLineStart; lookahead = ts.lookahead; if (extra.tokens) { extra.tokens.splice(ts.tokenCount, extra.tokens.length); } } function isLexicalDeclaration() { var lexical, ts; ts = tokenizerState(); lex(); lexical = (lookahead.type === Token.Identifier) || match('[') || match('{') || matchKeyword('let') || matchKeyword('yield'); resetTokenizerState(ts); return lexical; } function parseLexicalDeclaration(options) { var kind, declarations, node = new Node(); kind = lex().value; assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const'); declarations = parseBindingList(kind, options); consumeSemicolon(); return node.finishLexicalDeclaration(declarations, kind); } function parseRestElement(params) { var param, node = new Node(); lex(); if (match('{')) { throwError(Messages.ObjectPatternAsRestParameter); } params.push(lookahead); param = parseVariableIdentifier(); if (match('=')) { throwError(Messages.DefaultRestParameter); } if (!match(')')) { throwError(Messages.ParameterAfterRestParameter); } return node.finishRestElement(param); } // ECMA-262 13.4 Empty Statement function parseEmptyStatement(node) { expect(';'); return node.finishEmptyStatement(); } // ECMA-262 12.4 Expression Statement function parseExpressionStatement(node) { var expr = parseExpression(); consumeSemicolon(); return node.finishExpressionStatement(expr); } // ECMA-262 13.6 If statement function parseIfStatement(node) { var test, consequent, alternate; expectKeyword('if'); expect('('); test = parseExpression(); expect(')'); consequent = parseStatement(); if (matchKeyword('else')) { lex(); alternate = parseStatement(); } else { alternate = null; } return node.finishIfStatement(test, consequent, alternate); } // ECMA-262 13.7 Iteration Statements function parseDoWhileStatement(node) { var body, test, oldInIteration; expectKeyword('do'); oldInIteration = state.inIteration; state.inIteration = true; body = parseStatement(); state.inIteration = oldInIteration; expectKeyword('while'); expect('('); test = parseExpression(); expect(')'); if (match(';')) { lex(); } return node.finishDoWhileStatement(body, test); } function parseWhileStatement(node) { var test, body, oldInIteration; expectKeyword('while'); expect('('); test = parseExpression(); expect(')'); oldInIteration = state.inIteration; state.inIteration = true; body = parseStatement(); state.inIteration = oldInIteration; return node.finishWhileStatement(test, body); } function parseForStatement(node) { var init, forIn, initSeq, initStartToken, test, update, left, right, kind, declarations, body, oldInIteration, previousAllowIn = state.allowIn; init = test = update = null; forIn = true; expectKeyword('for'); expect('('); if (match(';')) { lex(); } else { if (matchKeyword('var')) { init = new Node(); lex(); state.allowIn = false; declarations = parseVariableDeclarationList({ inFor: true }); state.allowIn = previousAllowIn; if (declarations.length === 1 && matchKeyword('in')) { init = init.finishVariableDeclaration(declarations); lex(); left = init; right = parseExpression(); init = null; } else if (declarations.length === 1 && declarations[0].init === null && matchContextualKeyword('of')) { init = init.finishVariableDeclaration(declarations); lex(); left = init; right = parseAssignmentExpression(); init = null; forIn = false; } else { init = init.finishVariableDeclaration(declarations); expect(';'); } } else if (matchKeyword('const') || matchKeyword('let')) { init = new Node(); kind = lex().value; if (!strict && lookahead.value === 'in') { init = init.finishIdentifier(kind); lex(); left = init; right = parseExpression(); init = null; } else { state.allowIn = false; declarations = parseBindingList(kind, {inFor: true}); state.allowIn = previousAllowIn; if (declarations.length === 1 && declarations[0].init === null && matchKeyword('in')) { init = init.finishLexicalDeclaration(declarations, kind); lex(); left = init; right = parseExpression(); init = null; } else if (declarations.length === 1 && declarations[0].init === null && matchContextualKeyword('of')) { init = init.finishLexicalDeclaration(declarations, kind); lex(); left = init; right = parseAssignmentExpression(); init = null; forIn = false; } else { consumeSemicolon(); init = init.finishLexicalDeclaration(declarations, kind); } } } else { initStartToken = lookahead; state.allowIn = false; init = inheritCoverGrammar(parseAssignmentExpression); state.allowIn = previousAllowIn; if (matchKeyword('in')) { if (!isAssignmentTarget) { tolerateError(Messages.InvalidLHSInForIn); } lex(); reinterpretExpressionAsPattern(init); left = init; right = parseExpression(); init = null; } else if (matchContextualKeyword('of')) { if (!isAssignmentTarget) { tolerateError(Messages.InvalidLHSInForLoop); } lex(); reinterpretExpressionAsPattern(init); left = init; right = parseAssignmentExpression(); init = null; forIn = false; } else { if (match(',')) { initSeq = [init]; while (match(',')) { lex(); initSeq.push(isolateCoverGrammar(parseAssignmentExpression)); } init = new WrappingNode(initStartToken).finishSequenceExpression(initSeq); } expect(';'); } } } if (typeof left === 'undefined') { if (!match(';')) { test = parseExpression(); } expect(';'); if (!match(')')) { update = parseExpression(); } } expect(')'); oldInIteration = state.inIteration; state.inIteration = true; body = isolateCoverGrammar(parseStatement); state.inIteration = oldInIteration; return (typeof left === 'undefined') ? node.finishForStatement(init, test, update, body) : forIn ? node.finishForInStatement(left, right, body) : node.finishForOfStatement(left, right, body); } // ECMA-262 13.8 The continue statement function parseContinueStatement(node) { var label = null, key; expectKeyword('continue'); // Optimize the most common form: 'continue;'. if (source.charCodeAt(startIndex) === 0x3B) { lex(); if (!state.inIteration) { throwError(Messages.IllegalContinue); } return node.finishContinueStatement(null); } if (hasLineTerminator) { if (!state.inIteration) { throwError(Messages.IllegalContinue); } return node.finishContinueStatement(null); } if (lookahead.type === Token.Identifier) { label = parseVariableIdentifier(); key = '$' + label.name; if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { throwError(Messages.UnknownLabel, label.name); } } consumeSemicolon(); if (label === null && !state.inIteration) { throwError(Messages.IllegalContinue); } return node.finishContinueStatement(label); } // ECMA-262 13.9 The break statement function parseBreakStatement(node) { var label = null, key; expectKeyword('break'); // Catch the very common case first: immediately a semicolon (U+003B). if (source.charCodeAt(lastIndex) === 0x3B) { lex(); if (!(state.inIteration || state.inSwitch)) { throwError(Messages.IllegalBreak); } return node.finishBreakStatement(null); } if (hasLineTerminator) { if (!(state.inIteration || state.inSwitch)) { throwError(Messages.IllegalBreak); } } else if (lookahead.type === Token.Identifier) { label = parseVariableIdentifier(); key = '$' + label.name; if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { throwError(Messages.UnknownLabel, label.name); } } consumeSemicolon(); if (label === null && !(state.inIteration || state.inSwitch)) { throwError(Messages.IllegalBreak); } return node.finishBreakStatement(label); } // ECMA-262 13.10 The return statement function parseReturnStatement(node) { var argument = null; expectKeyword('return'); if (!state.inFunctionBody) { tolerateError(Messages.IllegalReturn); } // 'return' followed by a space and an identifier is very common. if (source.charCodeAt(lastIndex) === 0x20) { if (isIdentifierStart(source.charCodeAt(lastIndex + 1))) { argument = parseExpression(); consumeSemicolon(); return node.finishReturnStatement(argument); } } if (hasLineTerminator) { // HACK return node.finishReturnStatement(null); } if (!match(';')) { if (!match('}') && lookahead.type !== Token.EOF) { argument = parseExpression(); } } consumeSemicolon(); return node.finishReturnStatement(argument); } // ECMA-262 13.11 The with statement function parseWithStatement(node) { var object, body; if (strict) { tolerateError(Messages.StrictModeWith); } expectKeyword('with'); expect('('); object = parseExpression(); expect(')'); body = parseStatement(); return node.finishWithStatement(object, body); } // ECMA-262 13.12 The switch statement function parseSwitchCase() { var test, consequent = [], statement, node = new Node(); if (matchKeyword('default')) { lex(); test = null; } else { expectKeyword('case'); test = parseExpression(); } expect(':'); while (startIndex < length) { if (match('}') || matchKeyword('default') || matchKeyword('case')) { break; } statement = parseStatementListItem(); consequent.push(statement); } return node.finishSwitchCase(test, consequent); } function parseSwitchStatement(node) { var discriminant, cases, clause, oldInSwitch, defaultFound; expectKeyword('switch'); expect('('); discriminant = parseExpression(); expect(')'); expect('{'); cases = []; if (match('}')) { lex(); return node.finishSwitchStatement(discriminant, cases); } oldInSwitch = state.inSwitch; state.inSwitch = true; defaultFound = false; while (startIndex < length) { if (match('}')) { break; } clause = parseSwitchCase(); if (clause.test === null) { if (defaultFound) { throwError(Messages.MultipleDefaultsInSwitch); } defaultFound = true; } cases.push(clause); } state.inSwitch = oldInSwitch; expect('}'); return node.finishSwitchStatement(discriminant, cases); } // ECMA-262 13.14 The throw statement function parseThrowStatement(node) { var argument; expectKeyword('throw'); if (hasLineTerminator) { throwError(Messages.NewlineAfterThrow); } argument = parseExpression(); consumeSemicolon(); return node.finishThrowStatement(argument); } // ECMA-262 13.15 The try statement function parseCatchClause() { var param, params = [], paramMap = {}, key, i, body, node = new Node(); expectKeyword('catch'); expect('('); if (match(')')) { throwUnexpectedToken(lookahead); } param = parsePattern(params); for (i = 0; i < params.length; i++) { key = '$' + params[i].value; if (Object.prototype.hasOwnProperty.call(paramMap, key)) { tolerateError(Messages.DuplicateBinding, params[i].value); } paramMap[key] = true; } // ECMA-262 12.14.1 if (strict && isRestrictedWord(param.name)) { tolerateError(Messages.StrictCatchVariable); } expect(')'); body = parseBlock(); return node.finishCatchClause(param, body); } function parseTryStatement(node) { var block, handler = null, finalizer = null; expectKeyword('try'); block = parseBlock(); if (matchKeyword('catch')) { handler = parseCatchClause(); } if (matchKeyword('finally')) { lex(); finalizer = parseBlock(); } if (!handler && !finalizer) { throwError(Messages.NoCatchOrFinally); } return node.finishTryStatement(block, handler, finalizer); } // ECMA-262 13.16 The debugger statement function parseDebuggerStatement(node) { expectKeyword('debugger'); consumeSemicolon(); return node.finishDebuggerStatement(); } // 13 Statements function parseStatement() { var type = lookahead.type, expr, labeledBody, key, node; if (type === Token.EOF) { throwUnexpectedToken(lookahead); } if (type === Token.Punctuator && lookahead.value === '{') { return parseBlock(); } isAssignmentTarget = isBindingElement = true; node = new Node(); if (type === Token.Punctuator) { switch (lookahead.value) { case ';': return parseEmptyStatement(node); case '(': return parseExpressionStatement(node); default: break; } } else if (type === Token.Keyword) { switch (lookahead.value) { case 'break': return parseBreakStatement(node); case 'continue': return parseContinueStatement(node); case 'debugger': return parseDebuggerStatement(node); case 'do': return parseDoWhileStatement(node); case 'for': return parseForStatement(node); case 'function': return parseFunctionDeclaration(node); case 'if': return parseIfStatement(node); case 'return': return parseReturnStatement(node); case 'switch': return parseSwitchStatement(node); case 'throw': return parseThrowStatement(node); case 'try': return parseTryStatement(node); case 'var': return parseVariableStatement(node); case 'while': return parseWhileStatement(node); case 'with': return parseWithStatement(node); default: break; } } expr = parseExpression(); // ECMA-262 12.12 Labelled Statements if ((expr.type === Syntax.Identifier) && match(':')) { lex(); key = '$' + expr.name; if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { throwError(Messages.Redeclaration, 'Label', expr.name); } state.labelSet[key] = true; labeledBody = parseStatement(); delete state.labelSet[key]; return node.finishLabeledStatement(expr, labeledBody); } consumeSemicolon(); return node.finishExpressionStatement(expr); } // ECMA-262 14.1 Function Definition function parseFunctionSourceElements() { var statement, body = [], token, directive, firstRestricted, oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, oldParenthesisCount, node = new Node(); expect('{'); while (startIndex < length) { if (lookahead.type !== Token.StringLiteral) { break; } token = lookahead; statement = parseStatementListItem(); body.push(statement); if (statement.expression.type !== Syntax.Literal) { // this is not directive break; } directive = source.slice(token.start + 1, token.end - 1); if (directive === 'use strict') { strict = true; if (firstRestricted) { tolerateUnexpectedToken(firstRestricted, Messages.StrictOctalLiteral); } } else { if (!firstRestricted && token.octal) { firstRestricted = token; } } } oldLabelSet = state.labelSet; oldInIteration = state.inIteration; oldInSwitch = state.inSwitch; oldInFunctionBody = state.inFunctionBody; oldParenthesisCount = state.parenthesizedCount; state.labelSet = {}; state.inIteration = false; state.inSwitch = false; state.inFunctionBody = true; state.parenthesizedCount = 0; while (startIndex < length) { if (match('}')) { break; } body.push(parseStatementListItem()); } expect('}'); state.labelSet = oldLabelSet; state.inIteration = oldInIteration; state.inSwitch = oldInSwitch; state.inFunctionBody = oldInFunctionBody; state.parenthesizedCount = oldParenthesisCount; return node.finishBlockStatement(body); } function validateParam(options, param, name) { var key = '$' + name; if (strict) { if (isRestrictedWord(name)) { options.stricted = param; options.message = Messages.StrictParamName; } if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { options.stricted = param; options.message = Messages.StrictParamDupe; } } else if (!options.firstRestricted) { if (isRestrictedWord(name)) { options.firstRestricted = param; options.message = Messages.StrictParamName; } else if (isStrictModeReservedWord(name)) { options.firstRestricted = param; options.message = Messages.StrictReservedWord; } else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { options.stricted = param; options.message = Messages.StrictParamDupe; } } options.paramSet[key] = true; } function parseParam(options) { var token, param, params = [], i, def; token = lookahead; if (token.value === '...') { param = parseRestElement(params); validateParam(options, param.argument, param.argument.name); options.params.push(param); options.defaults.push(null); return false; } param = parsePatternWithDefault(params); for (i = 0; i < params.length; i++) { validateParam(options, params[i], params[i].value); } if (param.type === Syntax.AssignmentPattern) { def = param.right; param = param.left; ++options.defaultCount; } options.params.push(param); options.defaults.push(def); return !match(')'); } function parseParams(firstRestricted) { var options; options = { params: [], defaultCount: 0, defaults: [], firstRestricted: firstRestricted }; expect('('); if (!match(')')) { options.paramSet = {}; while (startIndex < length) { if (!parseParam(options)) { break; } expect(','); } } expect(')'); if (options.defaultCount === 0) { options.defaults = []; } return { params: options.params, defaults: options.defaults, stricted: options.stricted, firstRestricted: options.firstRestricted, message: options.message }; } function parseFunctionDeclaration(node, identifierIsOptional) { var id = null, params = [], defaults = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, isGenerator, previousAllowYield; previousAllowYield = state.allowYield; expectKeyword('function'); isGenerator = match('*'); if (isGenerator) { lex(); } if (!identifierIsOptional || !match('(')) { token = lookahead; id = parseVariableIdentifier(); if (strict) { if (isRestrictedWord(token.value)) { tolerateUnexpectedToken(token, Messages.StrictFunctionName); } } else { if (isRestrictedWord(token.value)) { firstRestricted = token; message = Messages.StrictFunctionName; } else if (isStrictModeReservedWord(token.value)) { firstRestricted = token; message = Messages.StrictReservedWord; } } } state.allowYield = !isGenerator; tmp = parseParams(firstRestricted); params = tmp.params; defaults = tmp.defaults; stricted = tmp.stricted; firstRestricted = tmp.firstRestricted; if (tmp.message) { message = tmp.message; } previousStrict = strict; body = parseFunctionSourceElements(); if (strict && firstRestricted) { throwUnexpectedToken(firstRestricted, message); } if (strict && stricted) { tolerateUnexpectedToken(stricted, message); } strict = previousStrict; state.allowYield = previousAllowYield; return node.finishFunctionDeclaration(id, params, defaults, body, isGenerator); } function parseFunctionExpression() { var token, id = null, stricted, firstRestricted, message, tmp, params = [], defaults = [], body, previousStrict, node = new Node(), isGenerator, previousAllowYield; previousAllowYield = state.allowYield; expectKeyword('function'); isGenerator = match('*'); if (isGenerator) { lex(); } state.allowYield = !isGenerator; if (!match('(')) { token = lookahead; id = (!strict && !isGenerator && matchKeyword('yield')) ? parseNonComputedProperty() : parseVariableIdentifier(); if (strict) { if (isRestrictedWord(token.value)) { tolerateUnexpectedToken(token, Messages.StrictFunctionName); } } else { if (isRestrictedWord(token.value)) { firstRestricted = token; message = Messages.StrictFunctionName; } else if (isStrictModeReservedWord(token.value)) { firstRestricted = token; message = Messages.StrictReservedWord; } } } tmp = parseParams(firstRestricted); params = tmp.params; defaults = tmp.defaults; stricted = tmp.stricted; firstRestricted = tmp.firstRestricted; if (tmp.message) { message = tmp.message; } previousStrict = strict; body = parseFunctionSourceElements(); if (strict && firstRestricted) { throwUnexpectedToken(firstRestricted, message); } if (strict && stricted) { tolerateUnexpectedToken(stricted, message); } strict = previousStrict; state.allowYield = previousAllowYield; return node.finishFunctionExpression(id, params, defaults, body, isGenerator); } // ECMA-262 14.5 Class Definitions function parseClassBody() { var classBody, token, isStatic, hasConstructor = false, body, method, computed, key; classBody = new Node(); expect('{'); body = []; while (!match('}')) { if (match(';')) { lex(); } else { method = new Node(); token = lookahead; isStatic = false; computed = match('['); if (match('*')) { lex(); } else { key = parseObjectPropertyKey(); if (key.name === 'static' && (lookaheadPropertyName() || match('*'))) { token = lookahead; isStatic = true; computed = match('['); if (match('*')) { lex(); } else { key = parseObjectPropertyKey(); } } } method = tryParseMethodDefinition(token, key, computed, method); if (method) { method['static'] = isStatic; // jscs:ignore requireDotNotation if (method.kind === 'init') { method.kind = 'method'; } if (!isStatic) { if (!method.computed && (method.key.name || method.key.value.toString()) === 'constructor') { if (method.kind !== 'method' || !method.method || method.value.generator) { throwUnexpectedToken(token, Messages.ConstructorSpecialMethod); } if (hasConstructor) { throwUnexpectedToken(token, Messages.DuplicateConstructor); } else { hasConstructor = true; } method.kind = 'constructor'; } } else { if (!method.computed && (method.key.name || method.key.value.toString()) === 'prototype') { throwUnexpectedToken(token, Messages.StaticPrototype); } } method.type = Syntax.MethodDefinition; delete method.method; delete method.shorthand; body.push(method); } else { throwUnexpectedToken(lookahead); } } } lex(); return classBody.finishClassBody(body); } function parseClassDeclaration(identifierIsOptional) { var id = null, superClass = null, classNode = new Node(), classBody, previousStrict = strict; strict = true; expectKeyword('class'); if (!identifierIsOptional || lookahead.type === Token.Identifier) { id = parseVariableIdentifier(); } if (matchKeyword('extends')) { lex(); superClass = isolateCoverGrammar(parseLeftHandSideExpressionAllowCall); } classBody = parseClassBody(); strict = previousStrict; return classNode.finishClassDeclaration(id, superClass, classBody); } function parseClassExpression() { var id = null, superClass = null, classNode = new Node(), classBody, previousStrict = strict; strict = true; expectKeyword('class'); if (lookahead.type === Token.Identifier) { id = parseVariableIdentifier(); } if (matchKeyword('extends')) { lex(); superClass = isolateCoverGrammar(parseLeftHandSideExpressionAllowCall); } classBody = parseClassBody(); strict = previousStrict; return classNode.finishClassExpression(id, superClass, classBody); } // ECMA-262 15.2 Modules function parseModuleSpecifier() { var node = new Node(); if (lookahead.type !== Token.StringLiteral) { throwError(Messages.InvalidModuleSpecifier); } return node.finishLiteral(lex()); } // ECMA-262 15.2.3 Exports function parseExportSpecifier() { var exported, local, node = new Node(), def; if (matchKeyword('default')) { // export {default} from 'something'; def = new Node(); lex(); local = def.finishIdentifier('default'); } else { local = parseVariableIdentifier(); } if (matchContextualKeyword('as')) { lex(); exported = parseNonComputedProperty(); } return node.finishExportSpecifier(local, exported); } function parseExportNamedDeclaration(node) { var declaration = null, isExportFromIdentifier, src = null, specifiers = []; // non-default export if (lookahead.type === Token.Keyword) { // covers: // export var f = 1; switch (lookahead.value) { case 'let': case 'const': declaration = parseLexicalDeclaration({inFor: false}); return node.finishExportNamedDeclaration(declaration, specifiers, null); case 'var': case 'class': case 'function': declaration = parseStatementListItem(); return node.finishExportNamedDeclaration(declaration, specifiers, null); } } expect('{'); while (!match('}')) { isExportFromIdentifier = isExportFromIdentifier || matchKeyword('default'); specifiers.push(parseExportSpecifier()); if (!match('}')) { expect(','); if (match('}')) { break; } } } expect('}'); if (matchContextualKeyword('from')) { // covering: // export {default} from 'foo'; // export {foo} from 'foo'; lex(); src = parseModuleSpecifier(); consumeSemicolon(); } else if (isExportFromIdentifier) { // covering: // export {default}; // missing fromClause throwError(lookahead.value ? Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value); } else { // cover // export {foo}; consumeSemicolon(); } return node.finishExportNamedDeclaration(declaration, specifiers, src); } function parseExportDefaultDeclaration(node) { var declaration = null, expression = null; // covers: // export default ... expectKeyword('default'); if (matchKeyword('function')) { // covers: // export default function foo () {} // export default function () {} declaration = parseFunctionDeclaration(new Node(), true); return node.finishExportDefaultDeclaration(declaration); } if (matchKeyword('class')) { declaration = parseClassDeclaration(true); return node.finishExportDefaultDeclaration(declaration); } if (matchContextualKeyword('from')) { throwError(Messages.UnexpectedToken, lookahead.value); } // covers: // export default {}; // export default []; // export default (1 + 2); if (match('{')) { expression = parseObjectInitializer(); } else if (match('[')) { expression = parseArrayInitializer(); } else { expression = parseAssignmentExpression(); } consumeSemicolon(); return node.finishExportDefaultDeclaration(expression); } function parseExportAllDeclaration(node) { var src; // covers: // export * from 'foo'; expect('*'); if (!matchContextualKeyword('from')) { throwError(lookahead.value ? Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value); } lex(); src = parseModuleSpecifier(); consumeSemicolon(); return node.finishExportAllDeclaration(src); } function parseExportDeclaration() { var node = new Node(); if (state.inFunctionBody) { throwError(Messages.IllegalExportDeclaration); } expectKeyword('export'); if (matchKeyword('default')) { return parseExportDefaultDeclaration(node); } if (match('*')) { return parseExportAllDeclaration(node); } return parseExportNamedDeclaration(node); } // ECMA-262 15.2.2 Imports function parseImportSpecifier() { // import {} ...; var local, imported, node = new Node(); imported = parseNonComputedProperty(); if (matchContextualKeyword('as')) { lex(); local = parseVariableIdentifier(); } return node.finishImportSpecifier(local, imported); } function parseNamedImports() { var specifiers = []; // {foo, bar as bas} expect('{'); while (!match('}')) { specifiers.push(parseImportSpecifier()); if (!match('}')) { expect(','); if (match('}')) { break; } } } expect('}'); return specifiers; } function parseImportDefaultSpecifier() { // import ...; var local, node = new Node(); local = parseNonComputedProperty(); return node.finishImportDefaultSpecifier(local); } function parseImportNamespaceSpecifier() { // import <* as foo> ...; var local, node = new Node(); expect('*'); if (!matchContextualKeyword('as')) { throwError(Messages.NoAsAfterImportNamespace); } lex(); local = parseNonComputedProperty(); return node.finishImportNamespaceSpecifier(local); } function parseImportDeclaration() { var specifiers = [], src, node = new Node(); if (state.inFunctionBody) { throwError(Messages.IllegalImportDeclaration); } expectKeyword('import'); if (lookahead.type === Token.StringLiteral) { // import 'foo'; src = parseModuleSpecifier(); } else { if (match('{')) { // import {bar} specifiers = specifiers.concat(parseNamedImports()); } else if (match('*')) { // import * as foo specifiers.push(parseImportNamespaceSpecifier()); } else if (isIdentifierName(lookahead) && !matchKeyword('default')) { // import foo specifiers.push(parseImportDefaultSpecifier()); if (match(',')) { lex(); if (match('*')) { // import foo, * as foo specifiers.push(parseImportNamespaceSpecifier()); } else if (match('{')) { // import foo, {bar} specifiers = specifiers.concat(parseNamedImports()); } else { throwUnexpectedToken(lookahead); } } } else { throwUnexpectedToken(lex()); } if (!matchContextualKeyword('from')) { throwError(lookahead.value ? Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value); } lex(); src = parseModuleSpecifier(); } consumeSemicolon(); return node.finishImportDeclaration(specifiers, src); } // ECMA-262 15.1 Scripts function parseScriptBody() { var statement, body = [], token, directive, firstRestricted; while (startIndex < length) { token = lookahead; if (token.type !== Token.StringLiteral) { break; } statement = parseStatementListItem(); body.push(statement); if (statement.expression.type !== Syntax.Literal) { // this is not directive break; } directive = source.slice(token.start + 1, token.end - 1); if (directive === 'use strict') { strict = true; if (firstRestricted) { tolerateUnexpectedToken(firstRestricted, Messages.StrictOctalLiteral); } } else { if (!firstRestricted && token.octal) { firstRestricted = token; } } } while (startIndex < length) { statement = parseStatementListItem(); /* istanbul ignore if */ if (typeof statement === 'undefined') { break; } body.push(statement); } return body; } function parseProgram() { var body, node; peek(); node = new Node(); body = parseScriptBody(); return node.finishProgram(body, state.sourceType); } function filterTokenLocation() { var i, entry, token, tokens = []; for (i = 0; i < extra.tokens.length; ++i) { entry = extra.tokens[i]; token = { type: entry.type, value: entry.value }; if (entry.regex) { token.regex = { pattern: entry.regex.pattern, flags: entry.regex.flags }; } if (extra.range) { token.range = entry.range; } if (extra.loc) { token.loc = entry.loc; } tokens.push(token); } extra.tokens = tokens; } function tokenize(code, options, delegate) { var toString, tokens; toString = String; if (typeof code !== 'string' && !(code instanceof String)) { code = toString(code); } source = code; index = 0; lineNumber = (source.length > 0) ? 1 : 0; lineStart = 0; startIndex = index; startLineNumber = lineNumber; startLineStart = lineStart; length = source.length; lookahead = null; state = { allowIn: true, allowYield: true, labelSet: {}, inFunctionBody: false, inIteration: false, inSwitch: false, lastCommentStart: -1, curlyStack: [] }; extra = {}; // Options matching. options = options || {}; // Of course we collect tokens here. options.tokens = true; extra.tokens = []; extra.tokenValues = []; extra.tokenize = true; extra.delegate = delegate; // The following two fields are necessary to compute the Regex tokens. extra.openParenToken = -1; extra.openCurlyToken = -1; extra.range = (typeof options.range === 'boolean') && options.range; extra.loc = (typeof options.loc === 'boolean') && options.loc; if (typeof options.comment === 'boolean' && options.comment) { extra.comments = []; } if (typeof options.tolerant === 'boolean' && options.tolerant) { extra.errors = []; } try { peek(); if (lookahead.type === Token.EOF) { return extra.tokens; } lex(); while (lookahead.type !== Token.EOF) { try { lex(); } catch (lexError) { if (extra.errors) { recordError(lexError); // We have to break on the first error // to avoid infinite loops. break; } else { throw lexError; } } } tokens = extra.tokens; if (typeof extra.errors !== 'undefined') { tokens.errors = extra.errors; } } catch (e) { throw e; } finally { extra = {}; } return tokens; } function parse(code, options) { var program, toString; toString = String; if (typeof code !== 'string' && !(code instanceof String)) { code = toString(code); } source = code; index = 0; lineNumber = (source.length > 0) ? 1 : 0; lineStart = 0; startIndex = index; startLineNumber = lineNumber; startLineStart = lineStart; length = source.length; lookahead = null; state = { allowIn: true, allowYield: true, labelSet: {}, inFunctionBody: false, inIteration: false, inSwitch: false, lastCommentStart: -1, curlyStack: [], sourceType: 'script' }; strict = false; extra = {}; if (typeof options !== 'undefined') { extra.range = (typeof options.range === 'boolean') && options.range; extra.loc = (typeof options.loc === 'boolean') && options.loc; extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; if (extra.loc && options.source !== null && options.source !== undefined) { extra.source = toString(options.source); } if (typeof options.tokens === 'boolean' && options.tokens) { extra.tokens = []; } if (typeof options.comment === 'boolean' && options.comment) { extra.comments = []; } if (typeof options.tolerant === 'boolean' && options.tolerant) { extra.errors = []; } if (extra.attachComment) { extra.range = true; extra.comments = []; extra.bottomRightStack = []; extra.trailingComments = []; extra.leadingComments = []; } if (options.sourceType === 'module') { // very restrictive condition for now state.sourceType = options.sourceType; strict = true; } } try { program = parseProgram(); if (typeof extra.comments !== 'undefined') { program.comments = extra.comments; } if (typeof extra.tokens !== 'undefined') { filterTokenLocation(); program.tokens = extra.tokens; } if (typeof extra.errors !== 'undefined') { program.errors = extra.errors; } } catch (e) { throw e; } finally { extra = {}; } return program; } // Sync with *.json manifests. exports.version = '2.7.1'; exports.tokenize = tokenize; exports.parse = parse; // Deep copy. /* istanbul ignore next */ exports.Syntax = (function () { var name, types = {}; if (typeof Object.create === 'function') { types = Object.create(null); } for (name in Syntax) { if (Syntax.hasOwnProperty(name)) { types[name] = Syntax[name]; } } if (typeof Object.freeze === 'function') { Object.freeze(types); } return types; }()); })); /* vim: set sw=4 ts=4 et tw=80 : */ },{}],51:[function(require,module,exports){ /*! * node-inherit * Copyright(c) 2011 Dmitry Filatov * MIT Licensed */ module.exports = require('./lib/inherit'); },{"./lib/inherit":52}],52:[function(require,module,exports){ /** * @module inherit * @version 2.2.2 * @author Filatov Dmitry * @description This module provides some syntax sugar for "class" declarations, constructors, mixins, "super" calls and static members. */ (function(global) { var hasIntrospection = (function(){'_';}).toString().indexOf('_') > -1, emptyBase = function() {}, hasOwnProperty = Object.prototype.hasOwnProperty, objCreate = Object.create || function(ptp) { var inheritance = function() {}; inheritance.prototype = ptp; return new inheritance(); }, objKeys = Object.keys || function(obj) { var res = []; for(var i in obj) { hasOwnProperty.call(obj, i) && res.push(i); } return res; }, extend = function(o1, o2) { for(var i in o2) { hasOwnProperty.call(o2, i) && (o1[i] = o2[i]); } return o1; }, toStr = Object.prototype.toString, isArray = Array.isArray || function(obj) { return toStr.call(obj) === '[object Array]'; }, isFunction = function(obj) { return toStr.call(obj) === '[object Function]'; }, noOp = function() {}, needCheckProps = true, testPropObj = { toString : '' }; for(var i in testPropObj) { // fucking ie hasn't toString, valueOf in for testPropObj.hasOwnProperty(i) && (needCheckProps = false); } var specProps = needCheckProps? ['toString', 'valueOf'] : null; function getPropList(obj) { var res = objKeys(obj); if(needCheckProps) { var specProp, i = 0; while(specProp = specProps[i++]) { obj.hasOwnProperty(specProp) && res.push(specProp); } } return res; } function override(base, res, add) { var addList = getPropList(add), j = 0, len = addList.length, name, prop; while(j < len) { if((name = addList[j++]) === '__self') { continue; } prop = add[name]; if(isFunction(prop) && (!hasIntrospection || prop.toString().indexOf('.__base') > -1)) { res[name] = (function(name, prop) { var baseMethod = base[name]? base[name] : name === '__constructor'? // case of inheritance from plane function res.__self.__parent : noOp; return function() { var baseSaved = this.__base; this.__base = baseMethod; var res = prop.apply(this, arguments); this.__base = baseSaved; return res; }; })(name, prop); } else { res[name] = prop; } } } function applyMixins(mixins, res) { var i = 1, mixin; while(mixin = mixins[i++]) { res? isFunction(mixin)? inherit.self(res, mixin.prototype, mixin) : inherit.self(res, mixin) : res = isFunction(mixin)? inherit(mixins[0], mixin.prototype, mixin) : inherit(mixins[0], mixin); } return res || mixins[0]; } /** * Creates class * @exports * @param {Function|Array} [baseClass|baseClassAndMixins] class (or class and mixins) to inherit from * @param {Object} prototypeFields * @param {Object} [staticFields] * @returns {Function} class */ function inherit() { var args = arguments, withMixins = isArray(args[0]), hasBase = withMixins || isFunction(args[0]), base = hasBase? withMixins? applyMixins(args[0]) : args[0] : emptyBase, props = args[hasBase? 1 : 0] || {}, staticProps = args[hasBase? 2 : 1], res = props.__constructor || (hasBase && base.prototype.__constructor)? function() { return this.__constructor.apply(this, arguments); } : hasBase? function() { return base.apply(this, arguments); } : function() {}; if(!hasBase) { res.prototype = props; res.prototype.__self = res.prototype.constructor = res; return extend(res, staticProps); } extend(res, base); res.__parent = base; var basePtp = base.prototype, resPtp = res.prototype = objCreate(basePtp); resPtp.__self = resPtp.constructor = res; props && override(basePtp, resPtp, props); staticProps && override(base, res, staticProps); return res; } inherit.self = function() { var args = arguments, withMixins = isArray(args[0]), base = withMixins? applyMixins(args[0], args[0][0]) : args[0], props = args[1], staticProps = args[2], basePtp = base.prototype; props && override(basePtp, basePtp, props); staticProps && override(base, base, staticProps); return base; }; var defineAsGlobal = true; if(typeof exports === 'object') { module.exports = inherit; defineAsGlobal = false; } if(typeof modules === 'object') { modules.define('inherit', function(provide) { provide(inherit); }); defineAsGlobal = false; } if(typeof define === 'function') { define(function(require, exports, module) { module.exports = inherit; }); defineAsGlobal = false; } defineAsGlobal && (global.inherit = inherit); })(this); },{}],53:[function(require,module,exports){ var baseIndexOf = require('../internal/baseIndexOf'), binaryIndex = require('../internal/binaryIndex'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Gets the index at which the first occurrence of `value` is found in `array` * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `array`. If `array` is sorted providing `true` for `fromIndex` * performs a faster binary search. * * @static * @memberOf _ * @category Array * @param {Array} array The array to search. * @param {*} value The value to search for. * @param {boolean|number} [fromIndex=0] The index to search from or `true` * to perform a binary search on a sorted array. * @returns {number} Returns the index of the matched value, else `-1`. * @example * * _.indexOf([1, 2, 1, 2], 2); * // => 1 * * // using `fromIndex` * _.indexOf([1, 2, 1, 2], 2, 2); * // => 3 * * // performing a binary search * _.indexOf([1, 1, 2, 2], 2, true); * // => 2 */ function indexOf(array, value, fromIndex) { var length = array ? array.length : 0; if (!length) { return -1; } if (typeof fromIndex == 'number') { fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; } else if (fromIndex) { var index = binaryIndex(array, value); if (index < length && (value === value ? (value === array[index]) : (array[index] !== array[index]))) { return index; } return -1; } return baseIndexOf(array, value, fromIndex || 0); } module.exports = indexOf; },{"../internal/baseIndexOf":82,"../internal/binaryIndex":96}],54:[function(require,module,exports){ /** * Gets the last element of `array`. * * @static * @memberOf _ * @category Array * @param {Array} array The array to query. * @returns {*} Returns the last element of `array`. * @example * * _.last([1, 2, 3]); * // => 3 */ function last(array) { var length = array ? array.length : 0; return length ? array[length - 1] : undefined; } module.exports = last; },{}],55:[function(require,module,exports){ var LazyWrapper = require('../internal/LazyWrapper'), LodashWrapper = require('../internal/LodashWrapper'), baseLodash = require('../internal/baseLodash'), isArray = require('../lang/isArray'), isObjectLike = require('../internal/isObjectLike'), wrapperClone = require('../internal/wrapperClone'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Creates a `lodash` object which wraps `value` to enable implicit chaining. * Methods that operate on and return arrays, collections, and functions can * be chained together. Methods that retrieve a single value or may return a * primitive value will automatically end the chain returning the unwrapped * value. Explicit chaining may be enabled using `_.chain`. The execution of * chained methods is lazy, that is, execution is deferred until `_#value` * is implicitly or explicitly called. * * Lazy evaluation allows several methods to support shortcut fusion. Shortcut * fusion is an optimization strategy which merge iteratee calls; this can help * to avoid the creation of intermediate data structures and greatly reduce the * number of iteratee executions. * * Chaining is supported in custom builds as long as the `_#value` method is * directly or indirectly included in the build. * * In addition to lodash methods, wrappers have `Array` and `String` methods. * * The wrapper `Array` methods are: * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, * `splice`, and `unshift` * * The wrapper `String` methods are: * `replace` and `split` * * The wrapper methods that support shortcut fusion are: * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, * and `where` * * The chainable wrapper methods are: * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`, * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`, * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`, * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`, * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`, * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`, * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`, * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith` * * The wrapper methods that are **not** chainable by default are: * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`, * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`, * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`, * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`, * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`, * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`, * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`, * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, * `unescape`, `uniqueId`, `value`, and `words` * * The wrapper method `sample` will return a wrapped value when `n` is provided, * otherwise an unwrapped value is returned. * * @name _ * @constructor * @category Chain * @param {*} value The value to wrap in a `lodash` instance. * @returns {Object} Returns the new `lodash` wrapper instance. * @example * * var wrapped = _([1, 2, 3]); * * // returns an unwrapped value * wrapped.reduce(function(total, n) { * return total + n; * }); * // => 6 * * // returns a wrapped value * var squares = wrapped.map(function(n) { * return n * n; * }); * * _.isArray(squares); * // => false * * _.isArray(squares.value()); * // => true */ function lodash(value) { if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { if (value instanceof LodashWrapper) { return value; } if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { return wrapperClone(value); } } return new LodashWrapper(value); } // Ensure wrappers are instances of `baseLodash`. lodash.prototype = baseLodash.prototype; module.exports = lodash; },{"../internal/LazyWrapper":64,"../internal/LodashWrapper":65,"../internal/baseLodash":86,"../internal/isObjectLike":130,"../internal/wrapperClone":141,"../lang/isArray":144}],56:[function(require,module,exports){ module.exports = require('./forEach'); },{"./forEach":58}],57:[function(require,module,exports){ var baseEach = require('../internal/baseEach'), createFind = require('../internal/createFind'); /** * Iterates over elements of `collection`, returning the first element * `predicate` returns truthy for. The predicate is bound to `thisArg` and * invoked with three arguments: (value, index|key, collection). * * If a property name is provided for `predicate` the created `_.property` * style callback returns the property value of the given element. * * If a value is also provided for `thisArg` the created `_.matchesProperty` * style callback returns `true` for elements that have a matching property * value, else `false`. * * If an object is provided for `predicate` the created `_.matches` style * callback returns `true` for elements that have the properties of the given * object, else `false`. * * @static * @memberOf _ * @alias detect * @category Collection * @param {Array|Object|string} collection The collection to search. * @param {Function|Object|string} [predicate=_.identity] The function invoked * per iteration. * @param {*} [thisArg] The `this` binding of `predicate`. * @returns {*} Returns the matched element, else `undefined`. * @example * * var users = [ * { 'user': 'barney', 'age': 36, 'active': true }, * { 'user': 'fred', 'age': 40, 'active': false }, * { 'user': 'pebbles', 'age': 1, 'active': true } * ]; * * _.result(_.find(users, function(chr) { * return chr.age < 40; * }), 'user'); * // => 'barney' * * // using the `_.matches` callback shorthand * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); * // => 'pebbles' * * // using the `_.matchesProperty` callback shorthand * _.result(_.find(users, 'active', false), 'user'); * // => 'fred' * * // using the `_.property` callback shorthand * _.result(_.find(users, 'active'), 'user'); * // => 'barney' */ var find = createFind(baseEach); module.exports = find; },{"../internal/baseEach":75,"../internal/createFind":106}],58:[function(require,module,exports){ var arrayEach = require('../internal/arrayEach'), baseEach = require('../internal/baseEach'), createForEach = require('../internal/createForEach'); /** * Iterates over elements of `collection` invoking `iteratee` for each element. * The `iteratee` is bound to `thisArg` and invoked with three arguments: * (value, index|key, collection). Iteratee functions may exit iteration early * by explicitly returning `false`. * * **Note:** As with other "Collections" methods, objects with a "length" property * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` * may be used for object iteration. * * @static * @memberOf _ * @alias each * @category Collection * @param {Array|Object|string} collection The collection to iterate over. * @param {Function} [iteratee=_.identity] The function invoked per iteration. * @param {*} [thisArg] The `this` binding of `iteratee`. * @returns {Array|Object|string} Returns `collection`. * @example * * _([1, 2]).forEach(function(n) { * console.log(n); * }).value(); * // => logs each value from left to right and returns the array * * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { * console.log(n, key); * }); * // => logs each value-key pair and returns the object (iteration order is not guaranteed) */ var forEach = createForEach(arrayEach, baseEach); module.exports = forEach; },{"../internal/arrayEach":67,"../internal/baseEach":75,"../internal/createForEach":107}],59:[function(require,module,exports){ var baseIndexOf = require('../internal/baseIndexOf'), getLength = require('../internal/getLength'), isArray = require('../lang/isArray'), isIterateeCall = require('../internal/isIterateeCall'), isLength = require('../internal/isLength'), isString = require('../lang/isString'), values = require('../object/values'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Checks if `target` is in `collection` using * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `collection`. * * @static * @memberOf _ * @alias contains, include * @category Collection * @param {Array|Object|string} collection The collection to search. * @param {*} target The value to search for. * @param {number} [fromIndex=0] The index to search from. * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. * @returns {boolean} Returns `true` if a matching element is found, else `false`. * @example * * _.includes([1, 2, 3], 1); * // => true * * _.includes([1, 2, 3], 1, 2); * // => false * * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); * // => true * * _.includes('pebbles', 'eb'); * // => true */ function includes(collection, target, fromIndex, guard) { var length = collection ? getLength(collection) : 0; if (!isLength(length)) { collection = values(collection); length = collection.length; } if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { fromIndex = 0; } else { fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); } return (typeof collection == 'string' || !isArray(collection) && isString(collection)) ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1) : (!!length && baseIndexOf(collection, target, fromIndex) > -1); } module.exports = includes; },{"../internal/baseIndexOf":82,"../internal/getLength":116,"../internal/isIterateeCall":126,"../internal/isLength":129,"../lang/isArray":144,"../lang/isString":150,"../object/values":156}],60:[function(require,module,exports){ var arrayMap = require('../internal/arrayMap'), baseCallback = require('../internal/baseCallback'), baseMap = require('../internal/baseMap'), isArray = require('../lang/isArray'); /** * Creates an array of values by running each element in `collection` through * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three * arguments: (value, index|key, collection). * * If a property name is provided for `iteratee` the created `_.property` * style callback returns the property value of the given element. * * If a value is also provided for `thisArg` the created `_.matchesProperty` * style callback returns `true` for elements that have a matching property * value, else `false`. * * If an object is provided for `iteratee` the created `_.matches` style * callback returns `true` for elements that have the properties of the given * object, else `false`. * * Many lodash methods are guarded to work as iteratees for methods like * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. * * The guarded methods are: * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, * `sum`, `uniq`, and `words` * * @static * @memberOf _ * @alias collect * @category Collection * @param {Array|Object|string} collection The collection to iterate over. * @param {Function|Object|string} [iteratee=_.identity] The function invoked * per iteration. * @param {*} [thisArg] The `this` binding of `iteratee`. * @returns {Array} Returns the new mapped array. * @example * * function timesThree(n) { * return n * 3; * } * * _.map([1, 2], timesThree); * // => [3, 6] * * _.map({ 'a': 1, 'b': 2 }, timesThree); * // => [3, 6] (iteration order is not guaranteed) * * var users = [ * { 'user': 'barney' }, * { 'user': 'fred' } * ]; * * // using the `_.property` callback shorthand * _.map(users, 'user'); * // => ['barney', 'fred'] */ function map(collection, iteratee, thisArg) { var func = isArray(collection) ? arrayMap : baseMap; iteratee = baseCallback(iteratee, thisArg, 3); return func(collection, iteratee); } module.exports = map; },{"../internal/arrayMap":68,"../internal/baseCallback":71,"../internal/baseMap":87,"../lang/isArray":144}],61:[function(require,module,exports){ var getNative = require('../internal/getNative'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeNow = getNative(Date, 'now'); /** * Gets the number of milliseconds that have elapsed since the Unix epoch * (1 January 1970 00:00:00 UTC). * * @static * @memberOf _ * @category Date * @example * * _.defer(function(stamp) { * console.log(_.now() - stamp); * }, _.now()); * // => logs the number of milliseconds it took for the deferred function to be invoked */ var now = nativeNow || function() { return new Date().getTime(); }; module.exports = now; },{"../internal/getNative":118}],62:[function(require,module,exports){ var createWrapper = require('../internal/createWrapper'), replaceHolders = require('../internal/replaceHolders'), restParam = require('./restParam'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, PARTIAL_FLAG = 32; /** * Creates a function that invokes `func` with the `this` binding of `thisArg` * and prepends any additional `_.bind` arguments to those provided to the * bound function. * * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, * may be used as a placeholder for partially applied arguments. * * **Note:** Unlike native `Function#bind` this method does not set the "length" * property of bound functions. * * @static * @memberOf _ * @category Function * @param {Function} func The function to bind. * @param {*} thisArg The `this` binding of `func`. * @param {...*} [partials] The arguments to be partially applied. * @returns {Function} Returns the new bound function. * @example * * var greet = function(greeting, punctuation) { * return greeting + ' ' + this.user + punctuation; * }; * * var object = { 'user': 'fred' }; * * var bound = _.bind(greet, object, 'hi'); * bound('!'); * // => 'hi fred!' * * // using placeholders * var bound = _.bind(greet, object, _, '!'); * bound('hi'); * // => 'hi fred!' */ var bind = restParam(function(func, thisArg, partials) { var bitmask = BIND_FLAG; if (partials.length) { var holders = replaceHolders(partials, bind.placeholder); bitmask |= PARTIAL_FLAG; } return createWrapper(func, bitmask, thisArg, partials, holders); }); // Assign default placeholders. bind.placeholder = {}; module.exports = bind; },{"../internal/createWrapper":110,"../internal/replaceHolders":136,"./restParam":63}],63:[function(require,module,exports){ /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates a function that invokes `func` with the `this` binding of the * created function and arguments from `start` and beyond provided as an array. * * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters). * * @static * @memberOf _ * @category Function * @param {Function} func The function to apply a rest parameter to. * @param {number} [start=func.length-1] The start position of the rest parameter. * @returns {Function} Returns the new function. * @example * * var say = _.restParam(function(what, names) { * return what + ' ' + _.initial(names).join(', ') + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); * }); * * say('hello', 'fred', 'barney', 'pebbles'); * // => 'hello fred, barney, & pebbles' */ function restParam(func, start) { if (typeof func != 'function') { throw new TypeError(FUNC_ERROR_TEXT); } start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); return function() { var args = arguments, index = -1, length = nativeMax(args.length - start, 0), rest = Array(length); while (++index < length) { rest[index] = args[start + index]; } switch (start) { case 0: return func.call(this, rest); case 1: return func.call(this, args[0], rest); case 2: return func.call(this, args[0], args[1], rest); } var otherArgs = Array(start + 1); index = -1; while (++index < start) { otherArgs[index] = args[index]; } otherArgs[start] = rest; return func.apply(this, otherArgs); }; } module.exports = restParam; },{}],64:[function(require,module,exports){ var baseCreate = require('./baseCreate'), baseLodash = require('./baseLodash'); /** Used as references for `-Infinity` and `Infinity`. */ var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; /** * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. * * @private * @param {*} value The value to wrap. */ function LazyWrapper(value) { this.__wrapped__ = value; this.__actions__ = []; this.__dir__ = 1; this.__filtered__ = false; this.__iteratees__ = []; this.__takeCount__ = POSITIVE_INFINITY; this.__views__ = []; } LazyWrapper.prototype = baseCreate(baseLodash.prototype); LazyWrapper.prototype.constructor = LazyWrapper; module.exports = LazyWrapper; },{"./baseCreate":74,"./baseLodash":86}],65:[function(require,module,exports){ var baseCreate = require('./baseCreate'), baseLodash = require('./baseLodash'); /** * The base constructor for creating `lodash` wrapper objects. * * @private * @param {*} value The value to wrap. * @param {boolean} [chainAll] Enable chaining for all wrapper methods. * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. */ function LodashWrapper(value, chainAll, actions) { this.__wrapped__ = value; this.__actions__ = actions || []; this.__chain__ = !!chainAll; } LodashWrapper.prototype = baseCreate(baseLodash.prototype); LodashWrapper.prototype.constructor = LodashWrapper; module.exports = LodashWrapper; },{"./baseCreate":74,"./baseLodash":86}],66:[function(require,module,exports){ /** * Copies the values of `source` to `array`. * * @private * @param {Array} source The array to copy values from. * @param {Array} [array=[]] The array to copy values to. * @returns {Array} Returns `array`. */ function arrayCopy(source, array) { var index = -1, length = source.length; array || (array = Array(length)); while (++index < length) { array[index] = source[index]; } return array; } module.exports = arrayCopy; },{}],67:[function(require,module,exports){ /** * A specialized version of `_.forEach` for arrays without support for callback * shorthands and `this` binding. * * @private * @param {Array} array The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns `array`. */ function arrayEach(array, iteratee) { var index = -1, length = array.length; while (++index < length) { if (iteratee(array[index], index, array) === false) { break; } } return array; } module.exports = arrayEach; },{}],68:[function(require,module,exports){ /** * A specialized version of `_.map` for arrays without support for callback * shorthands and `this` binding. * * @private * @param {Array} array The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function arrayMap(array, iteratee) { var index = -1, length = array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } module.exports = arrayMap; },{}],69:[function(require,module,exports){ /** * A specialized version of `_.some` for arrays without support for callback * shorthands and `this` binding. * * @private * @param {Array} array The array to iterate over. * @param {Function} predicate The function invoked per iteration. * @returns {boolean} Returns `true` if any element passes the predicate check, * else `false`. */ function arraySome(array, predicate) { var index = -1, length = array.length; while (++index < length) { if (predicate(array[index], index, array)) { return true; } } return false; } module.exports = arraySome; },{}],70:[function(require,module,exports){ var baseCopy = require('./baseCopy'), keys = require('../object/keys'); /** * The base implementation of `_.assign` without support for argument juggling, * multiple sources, and `customizer` functions. * * @private * @param {Object} object The destination object. * @param {Object} source The source object. * @returns {Object} Returns `object`. */ function baseAssign(object, source) { return source == null ? object : baseCopy(source, keys(source), object); } module.exports = baseAssign; },{"../object/keys":153,"./baseCopy":73}],71:[function(require,module,exports){ var baseMatches = require('./baseMatches'), baseMatchesProperty = require('./baseMatchesProperty'), bindCallback = require('./bindCallback'), identity = require('../utility/identity'), property = require('../utility/property'); /** * The base implementation of `_.callback` which supports specifying the * number of arguments to provide to `func`. * * @private * @param {*} [func=_.identity] The value to convert to a callback. * @param {*} [thisArg] The `this` binding of `func`. * @param {number} [argCount] The number of arguments to provide to `func`. * @returns {Function} Returns the callback. */ function baseCallback(func, thisArg, argCount) { var type = typeof func; if (type == 'function') { return thisArg === undefined ? func : bindCallback(func, thisArg, argCount); } if (func == null) { return identity; } if (type == 'object') { return baseMatches(func); } return thisArg === undefined ? property(func) : baseMatchesProperty(func, thisArg); } module.exports = baseCallback; },{"../utility/identity":158,"../utility/property":160,"./baseMatches":88,"./baseMatchesProperty":89,"./bindCallback":98}],72:[function(require,module,exports){ var arrayCopy = require('./arrayCopy'), arrayEach = require('./arrayEach'), baseAssign = require('./baseAssign'), baseForOwn = require('./baseForOwn'), initCloneArray = require('./initCloneArray'), initCloneByTag = require('./initCloneByTag'), initCloneObject = require('./initCloneObject'), isArray = require('../lang/isArray'), isHostObject = require('./isHostObject'), isObject = require('../lang/isObject'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to identify `toStringTag` values supported by `_.clone`. */ var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[stringTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[mapTag] = cloneableTags[setTag] = cloneableTags[weakMapTag] = false; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * The base implementation of `_.clone` without support for argument juggling * and `this` binding `customizer` functions. * * @private * @param {*} value The value to clone. * @param {boolean} [isDeep] Specify a deep clone. * @param {Function} [customizer] The function to customize cloning values. * @param {string} [key] The key of `value`. * @param {Object} [object] The object `value` belongs to. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates clones with source counterparts. * @returns {*} Returns the cloned value. */ function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { var result; if (customizer) { result = object ? customizer(value, key, object) : customizer(value); } if (result !== undefined) { return result; } if (!isObject(value)) { return value; } var isArr = isArray(value); if (isArr) { result = initCloneArray(value); if (!isDeep) { return arrayCopy(value, result); } } else { var tag = objToString.call(value), isFunc = tag == funcTag; if (tag == objectTag || tag == argsTag || (isFunc && !object)) { if (isHostObject(value)) { return object ? value : {}; } result = initCloneObject(isFunc ? {} : value); if (!isDeep) { return baseAssign(result, value); } } else { return cloneableTags[tag] ? initCloneByTag(value, tag, isDeep) : (object ? value : {}); } } // Check for circular references and return its corresponding clone. stackA || (stackA = []); stackB || (stackB = []); var length = stackA.length; while (length--) { if (stackA[length] == value) { return stackB[length]; } } // Add the source value to the stack of traversed objects and associate it with its clone. stackA.push(value); stackB.push(result); // Recursively populate clone (susceptible to call stack limits). (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); }); return result; } module.exports = baseClone; },{"../lang/isArray":144,"../lang/isObject":148,"./arrayCopy":66,"./arrayEach":67,"./baseAssign":70,"./baseForOwn":80,"./initCloneArray":120,"./initCloneByTag":121,"./initCloneObject":122,"./isHostObject":124}],73:[function(require,module,exports){ /** * Copies properties of `source` to `object`. * * @private * @param {Object} source The object to copy properties from. * @param {Array} props The property names to copy. * @param {Object} [object={}] The object to copy properties to. * @returns {Object} Returns `object`. */ function baseCopy(source, props, object) { object || (object = {}); var index = -1, length = props.length; while (++index < length) { var key = props[index]; object[key] = source[key]; } return object; } module.exports = baseCopy; },{}],74:[function(require,module,exports){ var isObject = require('../lang/isObject'); /** * The base implementation of `_.create` without support for assigning * properties to the created object. * * @private * @param {Object} prototype The object to inherit from. * @returns {Object} Returns the new object. */ var baseCreate = (function() { function object() {} return function(prototype) { if (isObject(prototype)) { object.prototype = prototype; var result = new object; object.prototype = undefined; } return result || {}; }; }()); module.exports = baseCreate; },{"../lang/isObject":148}],75:[function(require,module,exports){ var baseForOwn = require('./baseForOwn'), createBaseEach = require('./createBaseEach'); /** * The base implementation of `_.forEach` without support for callback * shorthands and `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array|Object|string} Returns `collection`. */ var baseEach = createBaseEach(baseForOwn); module.exports = baseEach; },{"./baseForOwn":80,"./createBaseEach":102}],76:[function(require,module,exports){ /** * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, * without support for callback shorthands and `this` binding, which iterates * over `collection` using the provided `eachFunc`. * * @private * @param {Array|Object|string} collection The collection to search. * @param {Function} predicate The function invoked per iteration. * @param {Function} eachFunc The function to iterate over `collection`. * @param {boolean} [retKey] Specify returning the key of the found element * instead of the element itself. * @returns {*} Returns the found element or its key, else `undefined`. */ function baseFind(collection, predicate, eachFunc, retKey) { var result; eachFunc(collection, function(value, key, collection) { if (predicate(value, key, collection)) { result = retKey ? key : value; return false; } }); return result; } module.exports = baseFind; },{}],77:[function(require,module,exports){ /** * The base implementation of `_.findIndex` and `_.findLastIndex` without * support for callback shorthands and `this` binding. * * @private * @param {Array} array The array to search. * @param {Function} predicate The function invoked per iteration. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseFindIndex(array, predicate, fromRight) { var length = array.length, index = fromRight ? length : -1; while ((fromRight ? index-- : ++index < length)) { if (predicate(array[index], index, array)) { return index; } } return -1; } module.exports = baseFindIndex; },{}],78:[function(require,module,exports){ var createBaseFor = require('./createBaseFor'); /** * The base implementation of `baseForIn` and `baseForOwn` which iterates * over `object` properties returned by `keysFunc` invoking `iteratee` for * each property. Iteratee functions may exit iteration early by explicitly * returning `false`. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {Function} keysFunc The function to get the keys of `object`. * @returns {Object} Returns `object`. */ var baseFor = createBaseFor(); module.exports = baseFor; },{"./createBaseFor":103}],79:[function(require,module,exports){ var baseFor = require('./baseFor'), keysIn = require('../object/keysIn'); /** * The base implementation of `_.forIn` without support for callback * shorthands and `this` binding. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Object} Returns `object`. */ function baseForIn(object, iteratee) { return baseFor(object, iteratee, keysIn); } module.exports = baseForIn; },{"../object/keysIn":154,"./baseFor":78}],80:[function(require,module,exports){ var baseFor = require('./baseFor'), keys = require('../object/keys'); /** * The base implementation of `_.forOwn` without support for callback * shorthands and `this` binding. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Object} Returns `object`. */ function baseForOwn(object, iteratee) { return baseFor(object, iteratee, keys); } module.exports = baseForOwn; },{"../object/keys":153,"./baseFor":78}],81:[function(require,module,exports){ var toObject = require('./toObject'); /** * The base implementation of `get` without support for string paths * and default values. * * @private * @param {Object} object The object to query. * @param {Array} path The path of the property to get. * @param {string} [pathKey] The key representation of path. * @returns {*} Returns the resolved value. */ function baseGet(object, path, pathKey) { if (object == null) { return; } object = toObject(object); if (pathKey !== undefined && pathKey in object) { path = [pathKey]; } var index = 0, length = path.length; while (object != null && index < length) { object = toObject(object)[path[index++]]; } return (index && index == length) ? object : undefined; } module.exports = baseGet; },{"./toObject":139}],82:[function(require,module,exports){ var indexOfNaN = require('./indexOfNaN'); /** * The base implementation of `_.indexOf` without support for binary searches. * * @private * @param {Array} array The array to search. * @param {*} value The value to search for. * @param {number} fromIndex The index to search from. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseIndexOf(array, value, fromIndex) { if (value !== value) { return indexOfNaN(array, fromIndex); } var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } module.exports = baseIndexOf; },{"./indexOfNaN":119}],83:[function(require,module,exports){ var baseIsEqualDeep = require('./baseIsEqualDeep'), isObject = require('../lang/isObject'), isObjectLike = require('./isObjectLike'); /** * The base implementation of `_.isEqual` without support for `this` binding * `customizer` functions. * * @private * @param {*} value The value to compare. * @param {*} other The other value to compare. * @param {Function} [customizer] The function to customize comparing values. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA] Tracks traversed `value` objects. * @param {Array} [stackB] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. */ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { if (value === other) { return true; } if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); } module.exports = baseIsEqual; },{"../lang/isObject":148,"./baseIsEqualDeep":84,"./isObjectLike":130}],84:[function(require,module,exports){ var equalArrays = require('./equalArrays'), equalByTag = require('./equalByTag'), equalObjects = require('./equalObjects'), isArray = require('../lang/isArray'), isHostObject = require('./isHostObject'), isTypedArray = require('../lang/isTypedArray'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * A specialized version of `baseIsEqual` for arrays and objects which performs * deep comparisons and tracks traversed objects enabling objects with circular * references to be compared. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparing objects. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA=[]] Tracks traversed `value` objects. * @param {Array} [stackB=[]] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) { var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag; if (!objIsArr) { objTag = objToString.call(object); if (objTag == argsTag) { objTag = objectTag; } else if (objTag != objectTag) { objIsArr = isTypedArray(object); } } if (!othIsArr) { othTag = objToString.call(other); if (othTag == argsTag) { othTag = objectTag; } else if (othTag != objectTag) { othIsArr = isTypedArray(other); } } var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag; if (isSameTag && !(objIsArr || objIsObj)) { return equalByTag(object, other, objTag); } if (!isLoose) { var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); if (objIsWrapped || othIsWrapped) { return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB); } } if (!isSameTag) { return false; } // Assume cyclic values are equal. // For more information on detecting circular references see https://es5.github.io/#JO. stackA || (stackA = []); stackB || (stackB = []); var length = stackA.length; while (length--) { if (stackA[length] == object) { return stackB[length] == other; } } // Add `object` and `other` to the stack of traversed objects. stackA.push(object); stackB.push(other); var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB); stackA.pop(); stackB.pop(); return result; } module.exports = baseIsEqualDeep; },{"../lang/isArray":144,"../lang/isTypedArray":151,"./equalArrays":111,"./equalByTag":112,"./equalObjects":113,"./isHostObject":124}],85:[function(require,module,exports){ var baseIsEqual = require('./baseIsEqual'), toObject = require('./toObject'); /** * The base implementation of `_.isMatch` without support for callback * shorthands and `this` binding. * * @private * @param {Object} object The object to inspect. * @param {Array} matchData The propery names, values, and compare flags to match. * @param {Function} [customizer] The function to customize comparing objects. * @returns {boolean} Returns `true` if `object` is a match, else `false`. */ function baseIsMatch(object, matchData, customizer) { var index = matchData.length, length = index, noCustomizer = !customizer; if (object == null) { return !length; } object = toObject(object); while (index--) { var data = matchData[index]; if ((noCustomizer && data[2]) ? data[1] !== object[data[0]] : !(data[0] in object) ) { return false; } } while (++index < length) { data = matchData[index]; var key = data[0], objValue = object[key], srcValue = data[1]; if (noCustomizer && data[2]) { if (objValue === undefined && !(key in object)) { return false; } } else { var result = customizer ? customizer(objValue, srcValue, key) : undefined; if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) { return false; } } } return true; } module.exports = baseIsMatch; },{"./baseIsEqual":83,"./toObject":139}],86:[function(require,module,exports){ /** * The function whose prototype all chaining wrappers inherit from. * * @private */ function baseLodash() { // No operation performed. } module.exports = baseLodash; },{}],87:[function(require,module,exports){ var baseEach = require('./baseEach'), isArrayLike = require('./isArrayLike'); /** * The base implementation of `_.map` without support for callback shorthands * and `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function baseMap(collection, iteratee) { var index = -1, result = isArrayLike(collection) ? Array(collection.length) : []; baseEach(collection, function(value, key, collection) { result[++index] = iteratee(value, key, collection); }); return result; } module.exports = baseMap; },{"./baseEach":75,"./isArrayLike":123}],88:[function(require,module,exports){ var baseIsMatch = require('./baseIsMatch'), getMatchData = require('./getMatchData'), toObject = require('./toObject'); /** * The base implementation of `_.matches` which does not clone `source`. * * @private * @param {Object} source The object of property values to match. * @returns {Function} Returns the new function. */ function baseMatches(source) { var matchData = getMatchData(source); if (matchData.length == 1 && matchData[0][2]) { var key = matchData[0][0], value = matchData[0][1]; return function(object) { if (object == null) { return false; } object = toObject(object); return object[key] === value && (value !== undefined || (key in object)); }; } return function(object) { return baseIsMatch(object, matchData); }; } module.exports = baseMatches; },{"./baseIsMatch":85,"./getMatchData":117,"./toObject":139}],89:[function(require,module,exports){ var baseGet = require('./baseGet'), baseIsEqual = require('./baseIsEqual'), baseSlice = require('./baseSlice'), isArray = require('../lang/isArray'), isKey = require('./isKey'), isStrictComparable = require('./isStrictComparable'), last = require('../array/last'), toObject = require('./toObject'), toPath = require('./toPath'); /** * The base implementation of `_.matchesProperty` which does not clone `srcValue`. * * @private * @param {string} path The path of the property to get. * @param {*} srcValue The value to compare. * @returns {Function} Returns the new function. */ function baseMatchesProperty(path, srcValue) { var isArr = isArray(path), isCommon = isKey(path) && isStrictComparable(srcValue), pathKey = (path + ''); path = toPath(path); return function(object) { if (object == null) { return false; } var key = pathKey; object = toObject(object); if ((isArr || !isCommon) && !(key in object)) { object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); if (object == null) { return false; } key = last(path); object = toObject(object); } return object[key] === srcValue ? (srcValue !== undefined || (key in object)) : baseIsEqual(srcValue, object[key], undefined, true); }; } module.exports = baseMatchesProperty; },{"../array/last":54,"../lang/isArray":144,"./baseGet":81,"./baseIsEqual":83,"./baseSlice":93,"./isKey":127,"./isStrictComparable":131,"./toObject":139,"./toPath":140}],90:[function(require,module,exports){ var toObject = require('./toObject'); /** * The base implementation of `_.property` without support for deep paths. * * @private * @param {string} key The key of the property to get. * @returns {Function} Returns the new function. */ function baseProperty(key) { return function(object) { return object == null ? undefined : toObject(object)[key]; }; } module.exports = baseProperty; },{"./toObject":139}],91:[function(require,module,exports){ var baseGet = require('./baseGet'), toPath = require('./toPath'); /** * A specialized version of `baseProperty` which supports deep paths. * * @private * @param {Array|string} path The path of the property to get. * @returns {Function} Returns the new function. */ function basePropertyDeep(path) { var pathKey = (path + ''); path = toPath(path); return function(object) { return baseGet(object, path, pathKey); }; } module.exports = basePropertyDeep; },{"./baseGet":81,"./toPath":140}],92:[function(require,module,exports){ var identity = require('../utility/identity'), metaMap = require('./metaMap'); /** * The base implementation of `setData` without support for hot loop detection. * * @private * @param {Function} func The function to associate metadata with. * @param {*} data The metadata. * @returns {Function} Returns `func`. */ var baseSetData = !metaMap ? identity : function(func, data) { metaMap.set(func, data); return func; }; module.exports = baseSetData; },{"../utility/identity":158,"./metaMap":133}],93:[function(require,module,exports){ /** * The base implementation of `_.slice` without an iteratee call guard. * * @private * @param {Array} array The array to slice. * @param {number} [start=0] The start position. * @param {number} [end=array.length] The end position. * @returns {Array} Returns the slice of `array`. */ function baseSlice(array, start, end) { var index = -1, length = array.length; start = start == null ? 0 : (+start || 0); if (start < 0) { start = -start > length ? 0 : (length + start); } end = (end === undefined || end > length) ? length : (+end || 0); if (end < 0) { end += length; } length = start > end ? 0 : ((end - start) >>> 0); start >>>= 0; var result = Array(length); while (++index < length) { result[index] = array[index + start]; } return result; } module.exports = baseSlice; },{}],94:[function(require,module,exports){ /** * Converts `value` to a string if it's not one. An empty string is returned * for `null` or `undefined` values. * * @private * @param {*} value The value to process. * @returns {string} Returns the string. */ function baseToString(value) { return value == null ? '' : (value + ''); } module.exports = baseToString; },{}],95:[function(require,module,exports){ /** * The base implementation of `_.values` and `_.valuesIn` which creates an * array of `object` property values corresponding to the property names * of `props`. * * @private * @param {Object} object The object to query. * @param {Array} props The property names to get values for. * @returns {Object} Returns the array of property values. */ function baseValues(object, props) { var index = -1, length = props.length, result = Array(length); while (++index < length) { result[index] = object[props[index]]; } return result; } module.exports = baseValues; },{}],96:[function(require,module,exports){ var binaryIndexBy = require('./binaryIndexBy'), identity = require('../utility/identity'); /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; /** * Performs a binary search of `array` to determine the index at which `value` * should be inserted into `array` in order to maintain its sort order. * * @private * @param {Array} array The sorted array to inspect. * @param {*} value The value to evaluate. * @param {boolean} [retHighest] Specify returning the highest qualified index. * @returns {number} Returns the index at which `value` should be inserted * into `array`. */ function binaryIndex(array, value, retHighest) { var low = 0, high = array ? array.length : low; if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { while (low < high) { var mid = (low + high) >>> 1, computed = array[mid]; if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) { low = mid + 1; } else { high = mid; } } return high; } return binaryIndexBy(array, value, identity, retHighest); } module.exports = binaryIndex; },{"../utility/identity":158,"./binaryIndexBy":97}],97:[function(require,module,exports){ /* Native method references for those with the same name as other `lodash` methods. */ var nativeFloor = Math.floor, nativeMin = Math.min; /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; /** * This function is like `binaryIndex` except that it invokes `iteratee` for * `value` and each element of `array` to compute their sort ranking. The * iteratee is invoked with one argument; (value). * * @private * @param {Array} array The sorted array to inspect. * @param {*} value The value to evaluate. * @param {Function} iteratee The function invoked per iteration. * @param {boolean} [retHighest] Specify returning the highest qualified index. * @returns {number} Returns the index at which `value` should be inserted * into `array`. */ function binaryIndexBy(array, value, iteratee, retHighest) { value = iteratee(value); var low = 0, high = array ? array.length : 0, valIsNaN = value !== value, valIsNull = value === null, valIsUndef = value === undefined; while (low < high) { var mid = nativeFloor((low + high) / 2), computed = iteratee(array[mid]), isDef = computed !== undefined, isReflexive = computed === computed; if (valIsNaN) { var setLow = isReflexive || retHighest; } else if (valIsNull) { setLow = isReflexive && isDef && (retHighest || computed != null); } else if (valIsUndef) { setLow = isReflexive && (retHighest || isDef); } else if (computed == null) { setLow = false; } else { setLow = retHighest ? (computed <= value) : (computed < value); } if (setLow) { low = mid + 1; } else { high = mid; } } return nativeMin(high, MAX_ARRAY_INDEX); } module.exports = binaryIndexBy; },{}],98:[function(require,module,exports){ var identity = require('../utility/identity'); /** * A specialized version of `baseCallback` which only supports `this` binding * and specifying the number of arguments to provide to `func`. * * @private * @param {Function} func The function to bind. * @param {*} thisArg The `this` binding of `func`. * @param {number} [argCount] The number of arguments to provide to `func`. * @returns {Function} Returns the callback. */ function bindCallback(func, thisArg, argCount) { if (typeof func != 'function') { return identity; } if (thisArg === undefined) { return func; } switch (argCount) { case 1: return function(value) { return func.call(thisArg, value); }; case 3: return function(value, index, collection) { return func.call(thisArg, value, index, collection); }; case 4: return function(accumulator, value, index, collection) { return func.call(thisArg, accumulator, value, index, collection); }; case 5: return function(value, other, key, object, source) { return func.call(thisArg, value, other, key, object, source); }; } return function() { return func.apply(thisArg, arguments); }; } module.exports = bindCallback; },{"../utility/identity":158}],99:[function(require,module,exports){ (function (global){ /** Native method references. */ var ArrayBuffer = global.ArrayBuffer, Uint8Array = global.Uint8Array; /** * Creates a clone of the given array buffer. * * @private * @param {ArrayBuffer} buffer The array buffer to clone. * @returns {ArrayBuffer} Returns the cloned array buffer. */ function bufferClone(buffer) { var result = new ArrayBuffer(buffer.byteLength), view = new Uint8Array(result); view.set(new Uint8Array(buffer)); return result; } module.exports = bufferClone; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2J1ZmZlckNsb25lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgQXJyYXlCdWZmZXIgPSBnbG9iYWwuQXJyYXlCdWZmZXIsXG4gICAgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgZ2l2ZW4gYXJyYXkgYnVmZmVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBidWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgQXJyYXlCdWZmZXIoYnVmZmVyLmJ5dGVMZW5ndGgpLFxuICAgICAgdmlldyA9IG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XG5cbiAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYnVmZmVyQ2xvbmU7XG4iXX0= },{}],100:[function(require,module,exports){ /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates an array that is the composition of partially applied arguments, * placeholders, and provided arguments into a single array of arguments. * * @private * @param {Array|Object} args The provided arguments. * @param {Array} partials The arguments to prepend to those provided. * @param {Array} holders The `partials` placeholder indexes. * @returns {Array} Returns the new array of composed arguments. */ function composeArgs(args, partials, holders) { var holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), leftIndex = -1, leftLength = partials.length, result = Array(leftLength + argsLength); while (++leftIndex < leftLength) { result[leftIndex] = partials[leftIndex]; } while (++argsIndex < holdersLength) { result[holders[argsIndex]] = args[argsIndex]; } while (argsLength--) { result[leftIndex++] = args[argsIndex++]; } return result; } module.exports = composeArgs; },{}],101:[function(require,module,exports){ /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * This function is like `composeArgs` except that the arguments composition * is tailored for `_.partialRight`. * * @private * @param {Array|Object} args The provided arguments. * @param {Array} partials The arguments to append to those provided. * @param {Array} holders The `partials` placeholder indexes. * @returns {Array} Returns the new array of composed arguments. */ function composeArgsRight(args, partials, holders) { var holdersIndex = -1, holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), rightIndex = -1, rightLength = partials.length, result = Array(argsLength + rightLength); while (++argsIndex < argsLength) { result[argsIndex] = args[argsIndex]; } var offset = argsIndex; while (++rightIndex < rightLength) { result[offset + rightIndex] = partials[rightIndex]; } while (++holdersIndex < holdersLength) { result[offset + holders[holdersIndex]] = args[argsIndex++]; } return result; } module.exports = composeArgsRight; },{}],102:[function(require,module,exports){ var getLength = require('./getLength'), isLength = require('./isLength'), toObject = require('./toObject'); /** * Creates a `baseEach` or `baseEachRight` function. * * @private * @param {Function} eachFunc The function to iterate over a collection. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new base function. */ function createBaseEach(eachFunc, fromRight) { return function(collection, iteratee) { var length = collection ? getLength(collection) : 0; if (!isLength(length)) { return eachFunc(collection, iteratee); } var index = fromRight ? length : -1, iterable = toObject(collection); while ((fromRight ? index-- : ++index < length)) { if (iteratee(iterable[index], index, iterable) === false) { break; } } return collection; }; } module.exports = createBaseEach; },{"./getLength":116,"./isLength":129,"./toObject":139}],103:[function(require,module,exports){ var toObject = require('./toObject'); /** * Creates a base function for `_.forIn` or `_.forInRight`. * * @private * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new base function. */ function createBaseFor(fromRight) { return function(object, iteratee, keysFunc) { var iterable = toObject(object), props = keysFunc(object), length = props.length, index = fromRight ? length : -1; while ((fromRight ? index-- : ++index < length)) { var key = props[index]; if (iteratee(iterable[key], key, iterable) === false) { break; } } return object; }; } module.exports = createBaseFor; },{"./toObject":139}],104:[function(require,module,exports){ (function (global){ var createCtorWrapper = require('./createCtorWrapper'); /** * Creates a function that wraps `func` and invokes it with the `this` * binding of `thisArg`. * * @private * @param {Function} func The function to bind. * @param {*} [thisArg] The `this` binding of `func`. * @returns {Function} Returns the new bound function. */ function createBindWrapper(func, thisArg) { var Ctor = createCtorWrapper(func); function wrapper() { var fn = (this && this !== global && this instanceof wrapper) ? Ctor : func; return fn.apply(thisArg, arguments); } return wrapper; } module.exports = createBindWrapper; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2NyZWF0ZUJpbmRXcmFwcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlQ3RvcldyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUN0b3JXcmFwcGVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIGFuZCBpbnZva2VzIGl0IHdpdGggdGhlIGB0aGlzYFxuICogYmluZGluZyBvZiBgdGhpc0FyZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJpbmRXcmFwcGVyKGZ1bmMsIHRoaXNBcmcpIHtcbiAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yV3JhcHBlcihmdW5jKTtcblxuICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IGdsb2JhbCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCaW5kV3JhcHBlcjtcbiJdfQ== },{"./createCtorWrapper":105}],105:[function(require,module,exports){ var baseCreate = require('./baseCreate'), isObject = require('../lang/isObject'); /** * Creates a function that produces an instance of `Ctor` regardless of * whether it was invoked as part of a `new` expression or by `call` or `apply`. * * @private * @param {Function} Ctor The constructor to wrap. * @returns {Function} Returns the new wrapped function. */ function createCtorWrapper(Ctor) { return function() { // Use a `switch` statement to work with class constructors. // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist // for more details. var args = arguments; switch (args.length) { case 0: return new Ctor; case 1: return new Ctor(args[0]); case 2: return new Ctor(args[0], args[1]); case 3: return new Ctor(args[0], args[1], args[2]); case 4: return new Ctor(args[0], args[1], args[2], args[3]); case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } var thisBinding = baseCreate(Ctor.prototype), result = Ctor.apply(thisBinding, args); // Mimic the constructor's `return` behavior. // See https://es5.github.io/#x13.2.2 for more details. return isObject(result) ? result : thisBinding; }; } module.exports = createCtorWrapper; },{"../lang/isObject":148,"./baseCreate":74}],106:[function(require,module,exports){ var baseCallback = require('./baseCallback'), baseFind = require('./baseFind'), baseFindIndex = require('./baseFindIndex'), isArray = require('../lang/isArray'); /** * Creates a `_.find` or `_.findLast` function. * * @private * @param {Function} eachFunc The function to iterate over a collection. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new find function. */ function createFind(eachFunc, fromRight) { return function(collection, predicate, thisArg) { predicate = baseCallback(predicate, thisArg, 3); if (isArray(collection)) { var index = baseFindIndex(collection, predicate, fromRight); return index > -1 ? collection[index] : undefined; } return baseFind(collection, predicate, eachFunc); }; } module.exports = createFind; },{"../lang/isArray":144,"./baseCallback":71,"./baseFind":76,"./baseFindIndex":77}],107:[function(require,module,exports){ var bindCallback = require('./bindCallback'), isArray = require('../lang/isArray'); /** * Creates a function for `_.forEach` or `_.forEachRight`. * * @private * @param {Function} arrayFunc The function to iterate over an array. * @param {Function} eachFunc The function to iterate over a collection. * @returns {Function} Returns the new each function. */ function createForEach(arrayFunc, eachFunc) { return function(collection, iteratee, thisArg) { return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) ? arrayFunc(collection, iteratee) : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); }; } module.exports = createForEach; },{"../lang/isArray":144,"./bindCallback":98}],108:[function(require,module,exports){ (function (global){ var arrayCopy = require('./arrayCopy'), composeArgs = require('./composeArgs'), composeArgsRight = require('./composeArgsRight'), createCtorWrapper = require('./createCtorWrapper'), isLaziable = require('./isLaziable'), reorder = require('./reorder'), replaceHolders = require('./replaceHolders'), setData = require('./setData'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, BIND_KEY_FLAG = 2, CURRY_BOUND_FLAG = 4, CURRY_FLAG = 8, CURRY_RIGHT_FLAG = 16, PARTIAL_FLAG = 32, PARTIAL_RIGHT_FLAG = 64, ARY_FLAG = 128; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates a function that wraps `func` and invokes it with optional `this` * binding of, partial application, and currying. * * @private * @param {Function|string} func The function or method name to reference. * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. * @param {*} [thisArg] The `this` binding of `func`. * @param {Array} [partials] The arguments to prepend to those provided to the new function. * @param {Array} [holders] The `partials` placeholder indexes. * @param {Array} [partialsRight] The arguments to append to those provided to the new function. * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. * @param {Array} [argPos] The argument positions of the new function. * @param {number} [ary] The arity cap of `func`. * @param {number} [arity] The arity of `func`. * @returns {Function} Returns the new wrapped function. */ function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { var isAry = bitmask & ARY_FLAG, isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, isCurry = bitmask & CURRY_FLAG, isCurryBound = bitmask & CURRY_BOUND_FLAG, isCurryRight = bitmask & CURRY_RIGHT_FLAG, Ctor = isBindKey ? undefined : createCtorWrapper(func); function wrapper() { // Avoid `arguments` object use disqualifying optimizations by // converting it to an array before providing it to other functions. var length = arguments.length, index = length, args = Array(length); while (index--) { args[index] = arguments[index]; } if (partials) { args = composeArgs(args, partials, holders); } if (partialsRight) { args = composeArgsRight(args, partialsRight, holdersRight); } if (isCurry || isCurryRight) { var placeholder = wrapper.placeholder, argsHolders = replaceHolders(args, placeholder); length -= argsHolders.length; if (length < arity) { var newArgPos = argPos ? arrayCopy(argPos) : undefined, newArity = nativeMax(arity - length, 0), newsHolders = isCurry ? argsHolders : undefined, newHoldersRight = isCurry ? undefined : argsHolders, newPartials = isCurry ? args : undefined, newPartialsRight = isCurry ? undefined : args; bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); if (!isCurryBound) { bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); } var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity], result = createHybridWrapper.apply(undefined, newData); if (isLaziable(func)) { setData(result, newData); } result.placeholder = placeholder; return result; } } var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func; if (argPos) { args = reorder(args, argPos); } if (isAry && ary < args.length) { args.length = ary; } if (this && this !== global && this instanceof wrapper) { fn = Ctor || createCtorWrapper(func); } return fn.apply(thisBinding, args); } return wrapper; } module.exports = createHybridWrapper; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2NyZWF0ZUh5YnJpZFdyYXBwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlDb3B5ID0gcmVxdWlyZSgnLi9hcnJheUNvcHknKSxcbiAgICBjb21wb3NlQXJncyA9IHJlcXVpcmUoJy4vY29tcG9zZUFyZ3MnKSxcbiAgICBjb21wb3NlQXJnc1JpZ2h0ID0gcmVxdWlyZSgnLi9jb21wb3NlQXJnc1JpZ2h0JyksXG4gICAgY3JlYXRlQ3RvcldyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUN0b3JXcmFwcGVyJyksXG4gICAgaXNMYXppYWJsZSA9IHJlcXVpcmUoJy4vaXNMYXppYWJsZScpLFxuICAgIHJlb3JkZXIgPSByZXF1aXJlKCcuL3Jlb3JkZXInKSxcbiAgICByZXBsYWNlSG9sZGVycyA9IHJlcXVpcmUoJy4vcmVwbGFjZUhvbGRlcnMnKSxcbiAgICBzZXREYXRhID0gcmVxdWlyZSgnLi9zZXREYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHdyYXBwZXIgbWV0YWRhdGEuICovXG52YXIgQklORF9GTEFHID0gMSxcbiAgICBCSU5EX0tFWV9GTEFHID0gMixcbiAgICBDVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICBDVVJSWV9GTEFHID0gOCxcbiAgICBDVVJSWV9SSUdIVF9GTEFHID0gMTYsXG4gICAgUEFSVElBTF9GTEFHID0gMzIsXG4gICAgUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgQVJZX0ZMQUcgPSAxMjg7XG5cbi8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIGFuZCBpbnZva2VzIGl0IHdpdGggb3B0aW9uYWwgYHRoaXNgXG4gKiBiaW5kaW5nIG9mLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byByZWZlcmVuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBvZiBmbGFncy4gU2VlIGBjcmVhdGVXcmFwcGVyYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNSaWdodF0gVGhlIGBwYXJ0aWFsc1JpZ2h0YCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUh5YnJpZFdyYXBwZXIoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gIHZhciBpc0FyeSA9IGJpdG1hc2sgJiBBUllfRkxBRyxcbiAgICAgIGlzQmluZCA9IGJpdG1hc2sgJiBCSU5EX0ZMQUcsXG4gICAgICBpc0JpbmRLZXkgPSBiaXRtYXNrICYgQklORF9LRVlfRkxBRyxcbiAgICAgIGlzQ3VycnkgPSBiaXRtYXNrICYgQ1VSUllfRkxBRyxcbiAgICAgIGlzQ3VycnlCb3VuZCA9IGJpdG1hc2sgJiBDVVJSWV9CT1VORF9GTEFHLFxuICAgICAgaXNDdXJyeVJpZ2h0ID0gYml0bWFzayAmIENVUlJZX1JJR0hUX0ZMQUcsXG4gICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcldyYXBwZXIoZnVuYyk7XG5cbiAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAvLyBBdm9pZCBgYXJndW1lbnRzYCBvYmplY3QgdXNlIGRpc3F1YWxpZnlpbmcgb3B0aW1pemF0aW9ucyBieVxuICAgIC8vIGNvbnZlcnRpbmcgaXQgdG8gYW4gYXJyYXkgYmVmb3JlIHByb3ZpZGluZyBpdCB0byBvdGhlciBmdW5jdGlvbnMuXG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgfVxuICAgIGlmIChwYXJ0aWFscykge1xuICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9XG4gICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgIGFyZ3MgPSBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCk7XG4gICAgfVxuICAgIGlmIChpc0N1cnJ5IHx8IGlzQ3VycnlSaWdodCkge1xuICAgICAgdmFyIHBsYWNlaG9sZGVyID0gd3JhcHBlci5wbGFjZWhvbGRlcixcbiAgICAgICAgICBhcmdzSG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgbGVuZ3RoIC09IGFyZ3NIb2xkZXJzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICB2YXIgbmV3QXJnUG9zID0gYXJnUG9zID8gYXJyYXlDb3B5KGFyZ1BvcykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZXdBcml0eSA9IG5hdGl2ZU1heChhcml0eSAtIGxlbmd0aCwgMCksXG4gICAgICAgICAgICBuZXdzSG9sZGVycyA9IGlzQ3VycnkgPyBhcmdzSG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5ld0hvbGRlcnNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBhcmdzSG9sZGVycyxcbiAgICAgICAgICAgIG5ld1BhcnRpYWxzID0gaXNDdXJyeSA/IGFyZ3MgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGFyZ3M7XG5cbiAgICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFBBUlRJQUxfRkxBRyA6IFBBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIGJpdG1hc2sgJj0gfihpc0N1cnJ5ID8gUEFSVElBTF9SSUdIVF9GTEFHIDogUEFSVElBTF9GTEFHKTtcblxuICAgICAgICBpZiAoIWlzQ3VycnlCb3VuZCkge1xuICAgICAgICAgIGJpdG1hc2sgJj0gfihCSU5EX0ZMQUcgfCBCSU5EX0tFWV9GTEFHKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3RGF0YSA9IFtmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3c0hvbGRlcnMsIG5ld1BhcnRpYWxzUmlnaHQsIG5ld0hvbGRlcnNSaWdodCwgbmV3QXJnUG9zLCBhcnksIG5ld0FyaXR5XSxcbiAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZFdyYXBwZXIuYXBwbHkodW5kZWZpbmVkLCBuZXdEYXRhKTtcblxuICAgICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICAgIHNldERhdGEocmVzdWx0LCBuZXdEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgaWYgKGFyZ1Bvcykge1xuICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICB9XG4gICAgaWYgKGlzQXJ5ICYmIGFyeSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICB9XG4gICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gZ2xvYmFsICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICBmbiA9IEN0b3IgfHwgY3JlYXRlQ3RvcldyYXBwZXIoZnVuYyk7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gIH1cbiAgcmV0dXJuIHdyYXBwZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlSHlicmlkV3JhcHBlcjtcbiJdfQ== },{"./arrayCopy":66,"./composeArgs":100,"./composeArgsRight":101,"./createCtorWrapper":105,"./isLaziable":128,"./reorder":135,"./replaceHolders":136,"./setData":137}],109:[function(require,module,exports){ (function (global){ var createCtorWrapper = require('./createCtorWrapper'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1; /** * Creates a function that wraps `func` and invokes it with the optional `this` * binding of `thisArg` and the `partials` prepended to those provided to * the wrapper. * * @private * @param {Function} func The function to partially apply arguments to. * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. * @param {*} thisArg The `this` binding of `func`. * @param {Array} partials The arguments to prepend to those provided to the new function. * @returns {Function} Returns the new bound function. */ function createPartialWrapper(func, bitmask, thisArg, partials) { var isBind = bitmask & BIND_FLAG, Ctor = createCtorWrapper(func); function wrapper() { // Avoid `arguments` object use disqualifying optimizations by // converting it to an array before providing it `func`. var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array(leftLength + argsLength); while (++leftIndex < leftLength) { args[leftIndex] = partials[leftIndex]; } while (argsLength--) { args[leftIndex++] = arguments[++argsIndex]; } var fn = (this && this !== global && this instanceof wrapper) ? Ctor : func; return fn.apply(isBind ? thisArg : this, args); } return wrapper; } module.exports = createPartialWrapper; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2NyZWF0ZVBhcnRpYWxXcmFwcGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlQ3RvcldyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUN0b3JXcmFwcGVyJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHdyYXBwZXIgbWV0YWRhdGEuICovXG52YXIgQklORF9GTEFHID0gMTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgYW5kIGludm9rZXMgaXQgd2l0aCB0aGUgb3B0aW9uYWwgYHRoaXNgXG4gKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gKiB0aGUgd3JhcHBlci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIG9mIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBwZXJgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWxXcmFwcGVyKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgQklORF9GTEFHLFxuICAgICAgQ3RvciA9IGNyZWF0ZUN0b3JXcmFwcGVyKGZ1bmMpO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgLy8gQXZvaWQgYGFyZ3VtZW50c2Agb2JqZWN0IHVzZSBkaXNxdWFsaWZ5aW5nIG9wdGltaXphdGlvbnMgYnlcbiAgICAvLyBjb252ZXJ0aW5nIGl0IHRvIGFuIGFycmF5IGJlZm9yZSBwcm92aWRpbmcgaXQgYGZ1bmNgLlxuICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsrbGVmdEluZGV4IDwgbGVmdExlbmd0aCkge1xuICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKGFyZ3NMZW5ndGgtLSkge1xuICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgIH1cbiAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSBnbG9iYWwgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmdzKTtcbiAgfVxuICByZXR1cm4gd3JhcHBlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVQYXJ0aWFsV3JhcHBlcjtcbiJdfQ== },{"./createCtorWrapper":105}],110:[function(require,module,exports){ var baseSetData = require('./baseSetData'), createBindWrapper = require('./createBindWrapper'), createHybridWrapper = require('./createHybridWrapper'), createPartialWrapper = require('./createPartialWrapper'), getData = require('./getData'), mergeData = require('./mergeData'), setData = require('./setData'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, BIND_KEY_FLAG = 2, PARTIAL_FLAG = 32, PARTIAL_RIGHT_FLAG = 64; /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates a function that either curries or invokes `func` with optional * `this` binding and partially applied arguments. * * @private * @param {Function|string} func The function or method name to reference. * @param {number} bitmask The bitmask of flags. * The bitmask may be composed of the following flags: * 1 - `_.bind` * 2 - `_.bindKey` * 4 - `_.curry` or `_.curryRight` of a bound function * 8 - `_.curry` * 16 - `_.curryRight` * 32 - `_.partial` * 64 - `_.partialRight` * 128 - `_.rearg` * 256 - `_.ary` * @param {*} [thisArg] The `this` binding of `func`. * @param {Array} [partials] The arguments to be partially applied. * @param {Array} [holders] The `partials` placeholder indexes. * @param {Array} [argPos] The argument positions of the new function. * @param {number} [ary] The arity cap of `func`. * @param {number} [arity] The arity of `func`. * @returns {Function} Returns the new wrapped function. */ function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { var isBindKey = bitmask & BIND_KEY_FLAG; if (!isBindKey && typeof func != 'function') { throw new TypeError(FUNC_ERROR_TEXT); } var length = partials ? partials.length : 0; if (!length) { bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); partials = holders = undefined; } length -= (holders ? holders.length : 0); if (bitmask & PARTIAL_RIGHT_FLAG) { var partialsRight = partials, holdersRight = holders; partials = holders = undefined; } var data = isBindKey ? undefined : getData(func), newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; if (data) { mergeData(newData, data); bitmask = newData[1]; arity = newData[9]; } newData[9] = arity == null ? (isBindKey ? 0 : func.length) : (nativeMax(arity - length, 0) || 0); if (bitmask == BIND_FLAG) { var result = createBindWrapper(newData[0], newData[2]); } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { result = createPartialWrapper.apply(undefined, newData); } else { result = createHybridWrapper.apply(undefined, newData); } var setter = data ? baseSetData : setData; return setter(result, newData); } module.exports = createWrapper; },{"./baseSetData":92,"./createBindWrapper":104,"./createHybridWrapper":108,"./createPartialWrapper":109,"./getData":114,"./mergeData":132,"./setData":137}],111:[function(require,module,exports){ var arraySome = require('./arraySome'); /** * A specialized version of `baseIsEqualDeep` for arrays with support for * partial deep comparisons. * * @private * @param {Array} array The array to compare. * @param {Array} other The other array to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparing arrays. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA] Tracks traversed `value` objects. * @param {Array} [stackB] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) { var index = -1, arrLength = array.length, othLength = other.length; if (arrLength != othLength && !(isLoose && othLength > arrLength)) { return false; } // Ignore non-index properties. while (++index < arrLength) { var arrValue = array[index], othValue = other[index], result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined; if (result !== undefined) { if (result) { continue; } return false; } // Recursively compare arrays (susceptible to call stack limits). if (isLoose) { if (!arraySome(other, function(othValue) { return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); })) { return false; } } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) { return false; } } return true; } module.exports = equalArrays; },{"./arraySome":69}],112:[function(require,module,exports){ /** `Object#toString` result references. */ var boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', numberTag = '[object Number]', regexpTag = '[object RegExp]', stringTag = '[object String]'; /** * A specialized version of `baseIsEqualDeep` for comparing objects of * the same `toStringTag`. * * **Note:** This function only supports comparing values with tags of * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {string} tag The `toStringTag` of the objects to compare. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalByTag(object, other, tag) { switch (tag) { case boolTag: case dateTag: // Coerce dates and booleans to numbers, dates to milliseconds and booleans // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. return +object == +other; case errorTag: return object.name == other.name && object.message == other.message; case numberTag: // Treat `NaN` vs. `NaN` as equal. return (object != +object) ? other != +other : object == +other; case regexpTag: case stringTag: // Coerce regexes to strings and treat strings primitives and string // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. return object == (other + ''); } return false; } module.exports = equalByTag; },{}],113:[function(require,module,exports){ var keys = require('../object/keys'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * A specialized version of `baseIsEqualDeep` for objects with support for * partial deep comparisons. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparing values. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA] Tracks traversed `value` objects. * @param {Array} [stackB] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) { var objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length; if (objLength != othLength && !isLoose) { return false; } var index = objLength; while (index--) { var key = objProps[index]; if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) { return false; } } var skipCtor = isLoose; while (++index < objLength) { key = objProps[index]; var objValue = object[key], othValue = other[key], result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined; // Recursively compare objects (susceptible to call stack limits). if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) { return false; } skipCtor || (skipCtor = key == 'constructor'); } if (!skipCtor) { var objCtor = object.constructor, othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal. if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { return false; } } return true; } module.exports = equalObjects; },{"../object/keys":153}],114:[function(require,module,exports){ var metaMap = require('./metaMap'), noop = require('../utility/noop'); /** * Gets metadata for `func`. * * @private * @param {Function} func The function to query. * @returns {*} Returns the metadata for `func`. */ var getData = !metaMap ? noop : function(func) { return metaMap.get(func); }; module.exports = getData; },{"../utility/noop":159,"./metaMap":133}],115:[function(require,module,exports){ var realNames = require('./realNames'); /** * Gets the name of `func`. * * @private * @param {Function} func The function to query. * @returns {string} Returns the function name. */ function getFuncName(func) { var result = (func.name + ''), array = realNames[result], length = array ? array.length : 0; while (length--) { var data = array[length], otherFunc = data.func; if (otherFunc == null || otherFunc == func) { return data.name; } } return result; } module.exports = getFuncName; },{"./realNames":134}],116:[function(require,module,exports){ var baseProperty = require('./baseProperty'); /** * Gets the "length" property value of `object`. * * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) * that affects Safari on at least iOS 8.1-8.3 ARM64. * * @private * @param {Object} object The object to query. * @returns {*} Returns the "length" value. */ var getLength = baseProperty('length'); module.exports = getLength; },{"./baseProperty":90}],117:[function(require,module,exports){ var isStrictComparable = require('./isStrictComparable'), pairs = require('../object/pairs'); /** * Gets the propery names, values, and compare flags of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the match data of `object`. */ function getMatchData(object) { var result = pairs(object), length = result.length; while (length--) { result[length][2] = isStrictComparable(result[length][1]); } return result; } module.exports = getMatchData; },{"../object/pairs":155,"./isStrictComparable":131}],118:[function(require,module,exports){ var isNative = require('../lang/isNative'); /** * Gets the native function at `key` of `object`. * * @private * @param {Object} object The object to query. * @param {string} key The key of the method to get. * @returns {*} Returns the function if it's native, else `undefined`. */ function getNative(object, key) { var value = object == null ? undefined : object[key]; return isNative(value) ? value : undefined; } module.exports = getNative; },{"../lang/isNative":147}],119:[function(require,module,exports){ /** * Gets the index at which the first occurrence of `NaN` is found in `array`. * * @private * @param {Array} array The array to search. * @param {number} fromIndex The index to search from. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {number} Returns the index of the matched `NaN`, else `-1`. */ function indexOfNaN(array, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 0 : -1); while ((fromRight ? index-- : ++index < length)) { var other = array[index]; if (other !== other) { return index; } } return -1; } module.exports = indexOfNaN; },{}],120:[function(require,module,exports){ /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Initializes an array clone. * * @private * @param {Array} array The array to clone. * @returns {Array} Returns the initialized clone. */ function initCloneArray(array) { var length = array.length, result = new array.constructor(length); // Add array properties assigned by `RegExp#exec`. if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { result.index = array.index; result.input = array.input; } return result; } module.exports = initCloneArray; },{}],121:[function(require,module,exports){ (function (global){ var bufferClone = require('./bufferClone'); /** `Object#toString` result references. */ var boolTag = '[object Boolean]', dateTag = '[object Date]', numberTag = '[object Number]', regexpTag = '[object RegExp]', stringTag = '[object String]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to match `RegExp` flags from their coerced string values. */ var reFlags = /\w*$/; /** Native method references. */ var Uint8Array = global.Uint8Array; /** Used to lookup a type array constructors by `toStringTag`. */ var ctorByTag = {}; ctorByTag[float32Tag] = global.Float32Array; ctorByTag[float64Tag] = global.Float64Array; ctorByTag[int8Tag] = global.Int8Array; ctorByTag[int16Tag] = global.Int16Array; ctorByTag[int32Tag] = global.Int32Array; ctorByTag[uint8Tag] = Uint8Array; ctorByTag[uint8ClampedTag] = global.Uint8ClampedArray; ctorByTag[uint16Tag] = global.Uint16Array; ctorByTag[uint32Tag] = global.Uint32Array; /** * Initializes an object clone based on its `toStringTag`. * * **Note:** This function only supports cloning values with tags of * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * * @private * @param {Object} object The object to clone. * @param {string} tag The `toStringTag` of the object to clone. * @param {boolean} [isDeep] Specify a deep clone. * @returns {Object} Returns the initialized clone. */ function initCloneByTag(object, tag, isDeep) { var Ctor = object.constructor; switch (tag) { case arrayBufferTag: return bufferClone(object); case boolTag: case dateTag: return new Ctor(+object); case float32Tag: case float64Tag: case int8Tag: case int16Tag: case int32Tag: case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: // Safari 5 mobile incorrectly has `Object` as the constructor of typed arrays. if (Ctor instanceof Ctor) { Ctor = ctorByTag[tag]; } var buffer = object.buffer; return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); case numberTag: case stringTag: return new Ctor(object); case regexpTag: var result = new Ctor(object.source, reFlags.exec(object)); result.lastIndex = object.lastIndex; } return result; } module.exports = initCloneByTag; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL2luaXRDbG9uZUJ5VGFnLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYnVmZmVyQ2xvbmUgPSByZXF1aXJlKCcuL2J1ZmZlckNsb25lJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4vKiogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheTtcblxuLyoqIFVzZWQgdG8gbG9va3VwIGEgdHlwZSBhcnJheSBjb25zdHJ1Y3RvcnMgYnkgYHRvU3RyaW5nVGFnYC4gKi9cbnZhciBjdG9yQnlUYWcgPSB7fTtcbmN0b3JCeVRhZ1tmbG9hdDMyVGFnXSA9IGdsb2JhbC5GbG9hdDMyQXJyYXk7XG5jdG9yQnlUYWdbZmxvYXQ2NFRhZ10gPSBnbG9iYWwuRmxvYXQ2NEFycmF5O1xuY3RvckJ5VGFnW2ludDhUYWddID0gZ2xvYmFsLkludDhBcnJheTtcbmN0b3JCeVRhZ1tpbnQxNlRhZ10gPSBnbG9iYWwuSW50MTZBcnJheTtcbmN0b3JCeVRhZ1tpbnQzMlRhZ10gPSBnbG9iYWwuSW50MzJBcnJheTtcbmN0b3JCeVRhZ1t1aW50OFRhZ10gPSBVaW50OEFycmF5O1xuY3RvckJ5VGFnW3VpbnQ4Q2xhbXBlZFRhZ10gPSBnbG9iYWwuVWludDhDbGFtcGVkQXJyYXk7XG5jdG9yQnlUYWdbdWludDE2VGFnXSA9IGdsb2JhbC5VaW50MTZBcnJheTtcbmN0b3JCeVRhZ1t1aW50MzJUYWddID0gZ2xvYmFsLlVpbnQzMkFycmF5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGJ1ZmZlckNsb25lKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICAvLyBTYWZhcmkgNSBtb2JpbGUgaW5jb3JyZWN0bHkgaGFzIGBPYmplY3RgIGFzIHRoZSBjb25zdHJ1Y3RvciBvZiB0eXBlZCBhcnJheXMuXG4gICAgICBpZiAoQ3RvciBpbnN0YW5jZW9mIEN0b3IpIHtcbiAgICAgICAgQ3RvciA9IGN0b3JCeVRhZ1t0YWddO1xuICAgICAgfVxuICAgICAgdmFyIGJ1ZmZlciA9IG9iamVjdC5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IEN0b3IoaXNEZWVwID8gYnVmZmVyQ2xvbmUoYnVmZmVyKSA6IGJ1ZmZlciwgb2JqZWN0LmJ5dGVPZmZzZXQsIG9iamVjdC5sZW5ndGgpO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBDdG9yKG9iamVjdC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhvYmplY3QpKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSBvYmplY3QubGFzdEluZGV4O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iXX0= },{"./bufferClone":99}],122:[function(require,module,exports){ /** * Initializes an object clone. * * @private * @param {Object} object The object to clone. * @returns {Object} Returns the initialized clone. */ function initCloneObject(object) { var Ctor = object.constructor; if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { Ctor = Object; } return new Ctor; } module.exports = initCloneObject; },{}],123:[function(require,module,exports){ var getLength = require('./getLength'), isLength = require('./isLength'); /** * Checks if `value` is array-like. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is array-like, else `false`. */ function isArrayLike(value) { return value != null && isLength(getLength(value)); } module.exports = isArrayLike; },{"./getLength":116,"./isLength":129}],124:[function(require,module,exports){ /** * Checks if `value` is a host object in IE < 9. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a host object, else `false`. */ var isHostObject = (function() { try { Object({ 'toString': 0 } + ''); } catch(e) { return function() { return false; }; } return function(value) { // IE < 9 presents many host objects as `Object` objects that can coerce // to strings despite having improperly defined `toString` methods. return typeof value.toString != 'function' && typeof (value + '') == 'string'; }; }()); module.exports = isHostObject; },{}],125:[function(require,module,exports){ /** Used to detect unsigned integer values. */ var reIsUint = /^\d+$/; /** * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like index. * * @private * @param {*} value The value to check. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. */ function isIndex(value, length) { value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; length = length == null ? MAX_SAFE_INTEGER : length; return value > -1 && value % 1 == 0 && value < length; } module.exports = isIndex; },{}],126:[function(require,module,exports){ var isArrayLike = require('./isArrayLike'), isIndex = require('./isIndex'), isObject = require('../lang/isObject'); /** * Checks if the provided arguments are from an iteratee call. * * @private * @param {*} value The potential iteratee value argument. * @param {*} index The potential iteratee index or key argument. * @param {*} object The potential iteratee object argument. * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. */ function isIterateeCall(value, index, object) { if (!isObject(object)) { return false; } var type = typeof index; if (type == 'number' ? (isArrayLike(object) && isIndex(index, object.length)) : (type == 'string' && index in object)) { var other = object[index]; return value === value ? (value === other) : (other !== other); } return false; } module.exports = isIterateeCall; },{"../lang/isObject":148,"./isArrayLike":123,"./isIndex":125}],127:[function(require,module,exports){ var isArray = require('../lang/isArray'), toObject = require('./toObject'); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/; /** * Checks if `value` is a property name and not a property path. * * @private * @param {*} value The value to check. * @param {Object} [object] The object to query keys on. * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ function isKey(value, object) { var type = typeof value; if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { return true; } if (isArray(value)) { return false; } var result = !reIsDeepProp.test(value); return result || (object != null && value in toObject(object)); } module.exports = isKey; },{"../lang/isArray":144,"./toObject":139}],128:[function(require,module,exports){ var LazyWrapper = require('./LazyWrapper'), getData = require('./getData'), getFuncName = require('./getFuncName'), lodash = require('../chain/lodash'); /** * Checks if `func` has a lazy counterpart. * * @private * @param {Function} func The function to check. * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. */ function isLaziable(func) { var funcName = getFuncName(func), other = lodash[funcName]; if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { return false; } if (func === other) { return true; } var data = getData(other); return !!data && func === data[0]; } module.exports = isLaziable; },{"../chain/lodash":55,"./LazyWrapper":64,"./getData":114,"./getFuncName":115}],129:[function(require,module,exports){ /** * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. */ function isLength(value) { return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } module.exports = isLength; },{}],130:[function(require,module,exports){ /** * Checks if `value` is object-like. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. */ function isObjectLike(value) { return !!value && typeof value == 'object'; } module.exports = isObjectLike; },{}],131:[function(require,module,exports){ var isObject = require('../lang/isObject'); /** * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` if suitable for strict * equality comparisons, else `false`. */ function isStrictComparable(value) { return value === value && !isObject(value); } module.exports = isStrictComparable; },{"../lang/isObject":148}],132:[function(require,module,exports){ var arrayCopy = require('./arrayCopy'), composeArgs = require('./composeArgs'), composeArgsRight = require('./composeArgsRight'), replaceHolders = require('./replaceHolders'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, CURRY_BOUND_FLAG = 4, CURRY_FLAG = 8, ARY_FLAG = 128, REARG_FLAG = 256; /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMin = Math.min; /** * Merges the function metadata of `source` into `data`. * * Merging metadata reduces the number of wrappers required to invoke a function. * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` * augment function arguments, making the order in which they are executed important, * preventing the merging of metadata. However, we make an exception for a safe * common case where curried functions have `_.ary` and or `_.rearg` applied. * * @private * @param {Array} data The destination metadata. * @param {Array} source The source metadata. * @returns {Array} Returns `data`. */ function mergeData(data, source) { var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < ARY_FLAG; var isCombo = (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) || (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) || (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG); // Exit early if metadata can't be merged. if (!(isCommon || isCombo)) { return data; } // Use source `thisArg` if available. if (srcBitmask & BIND_FLAG) { data[2] = source[2]; // Set when currying a bound function. newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; } // Compose partial arguments. var value = source[3]; if (value) { var partials = data[3]; data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); } // Compose partial right arguments. value = source[5]; if (value) { partials = data[5]; data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); } // Use source `argPos` if available. value = source[7]; if (value) { data[7] = arrayCopy(value); } // Use source `ary` if it's smaller. if (srcBitmask & ARY_FLAG) { data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); } // Use source `arity` if one is not provided. if (data[9] == null) { data[9] = source[9]; } // Use source `func` and merge bitmasks. data[0] = source[0]; data[1] = newBitmask; return data; } module.exports = mergeData; },{"./arrayCopy":66,"./composeArgs":100,"./composeArgsRight":101,"./replaceHolders":136}],133:[function(require,module,exports){ (function (global){ var getNative = require('./getNative'); /** Native method references. */ var WeakMap = getNative(global, 'WeakMap'); /** Used to store function metadata. */ var metaMap = WeakMap && new WeakMap; module.exports = metaMap; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9sb2Rhc2gtY29tcGF0L2ludGVybmFsL21ldGFNYXAuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9nZXROYXRpdmUnKTtcblxuLyoqIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKGdsb2JhbCwgJ1dlYWtNYXAnKTtcblxuLyoqIFVzZWQgdG8gc3RvcmUgZnVuY3Rpb24gbWV0YWRhdGEuICovXG52YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gbWV0YU1hcDtcbiJdfQ== },{"./getNative":118}],134:[function(require,module,exports){ /** Used to lookup unminified function names. */ var realNames = {}; module.exports = realNames; },{}],135:[function(require,module,exports){ var arrayCopy = require('./arrayCopy'), isIndex = require('./isIndex'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMin = Math.min; /** * Reorder `array` according to the specified indexes where the element at * the first index is assigned as the first element, the element at * the second index is assigned as the second element, and so on. * * @private * @param {Array} array The array to reorder. * @param {Array} indexes The arranged array indexes. * @returns {Array} Returns `array`. */ function reorder(array, indexes) { var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = arrayCopy(array); while (length--) { var index = indexes[length]; array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; } return array; } module.exports = reorder; },{"./arrayCopy":66,"./isIndex":125}],136:[function(require,module,exports){ /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; /** * Replaces all `placeholder` elements in `array` with an internal placeholder * and returns an array of their indexes. * * @private * @param {Array} array The array to modify. * @param {*} placeholder The placeholder to replace. * @returns {Array} Returns the new array of placeholder indexes. */ function replaceHolders(array, placeholder) { var index = -1, length = array.length, resIndex = -1, result = []; while (++index < length) { if (array[index] === placeholder) { array[index] = PLACEHOLDER; result[++resIndex] = index; } } return result; } module.exports = replaceHolders; },{}],137:[function(require,module,exports){ var baseSetData = require('./baseSetData'), now = require('../date/now'); /** Used to detect when a function becomes hot. */ var HOT_COUNT = 150, HOT_SPAN = 16; /** * Sets metadata for `func`. * * **Note:** If this function becomes hot, i.e. is invoked a lot in a short * period of time, it will trip its breaker and transition to an identity function * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) * for more details. * * @private * @param {Function} func The function to associate metadata with. * @param {*} data The metadata. * @returns {Function} Returns `func`. */ var setData = (function() { var count = 0, lastCalled = 0; return function(key, value) { var stamp = now(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { if (++count >= HOT_COUNT) { return key; } } else { count = 0; } return baseSetData(key, value); }; }()); module.exports = setData; },{"../date/now":61,"./baseSetData":92}],138:[function(require,module,exports){ var isArguments = require('../lang/isArguments'), isArray = require('../lang/isArray'), isIndex = require('./isIndex'), isLength = require('./isLength'), isString = require('../lang/isString'), keysIn = require('../object/keysIn'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * A fallback implementation of `Object.keys` which creates an array of the * own enumerable property names of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function shimKeys(object) { var props = keysIn(object), propsLength = props.length, length = propsLength && object.length; var allowIndexes = !!length && isLength(length) && (isArray(object) || isArguments(object) || isString(object)); var index = -1, result = []; while (++index < propsLength) { var key = props[index]; if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { result.push(key); } } return result; } module.exports = shimKeys; },{"../lang/isArguments":143,"../lang/isArray":144,"../lang/isString":150,"../object/keysIn":154,"./isIndex":125,"./isLength":129}],139:[function(require,module,exports){ var isObject = require('../lang/isObject'), isString = require('../lang/isString'), support = require('../support'); /** * Converts `value` to an object if it's not one. * * @private * @param {*} value The value to process. * @returns {Object} Returns the object. */ function toObject(value) { if (support.unindexedChars && isString(value)) { var index = -1, length = value.length, result = Object(value); while (++index < length) { result[index] = value.charAt(index); } return result; } return isObject(value) ? value : Object(value); } module.exports = toObject; },{"../lang/isObject":148,"../lang/isString":150,"../support":157}],140:[function(require,module,exports){ var baseToString = require('./baseToString'), isArray = require('../lang/isArray'); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; /** Used to match backslashes in property paths. */ var reEscapeChar = /\\(\\)?/g; /** * Converts `value` to property path array if it's not one. * * @private * @param {*} value The value to process. * @returns {Array} Returns the property path array. */ function toPath(value) { if (isArray(value)) { return value; } var result = []; baseToString(value).replace(rePropName, function(match, number, quote, string) { result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); }); return result; } module.exports = toPath; },{"../lang/isArray":144,"./baseToString":94}],141:[function(require,module,exports){ var LazyWrapper = require('./LazyWrapper'), LodashWrapper = require('./LodashWrapper'), arrayCopy = require('./arrayCopy'); /** * Creates a clone of `wrapper`. * * @private * @param {Object} wrapper The wrapper to clone. * @returns {Object} Returns the cloned wrapper. */ function wrapperClone(wrapper) { return wrapper instanceof LazyWrapper ? wrapper.clone() : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); } module.exports = wrapperClone; },{"./LazyWrapper":64,"./LodashWrapper":65,"./arrayCopy":66}],142:[function(require,module,exports){ var baseClone = require('../internal/baseClone'), bindCallback = require('../internal/bindCallback'); /** * Creates a deep clone of `value`. If `customizer` is provided it's invoked * to produce the cloned values. If `customizer` returns `undefined` cloning * is handled by the method instead. The `customizer` is bound to `thisArg` * and invoked with up to three argument; (value [, index|key, object]). * * **Note:** This method is loosely based on the * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). * The enumerable properties of `arguments` objects and objects created by * constructors other than `Object` are cloned to plain `Object` objects. An * empty object is returned for uncloneable values such as functions, DOM nodes, * Maps, Sets, and WeakMaps. * * @static * @memberOf _ * @category Lang * @param {*} value The value to deep clone. * @param {Function} [customizer] The function to customize cloning values. * @param {*} [thisArg] The `this` binding of `customizer`. * @returns {*} Returns the deep cloned value. * @example * * var users = [ * { 'user': 'barney' }, * { 'user': 'fred' } * ]; * * var deep = _.cloneDeep(users); * deep[0] === users[0]; * // => false * * // using a customizer callback * var el = _.cloneDeep(document.body, function(value) { * if (_.isElement(value)) { * return value.cloneNode(true); * } * }); * * el === document.body * // => false * el.nodeName * // => BODY * el.childNodes.length; * // => 20 */ function cloneDeep(value, customizer, thisArg) { return typeof customizer == 'function' ? baseClone(value, true, bindCallback(customizer, thisArg, 3)) : baseClone(value, true); } module.exports = cloneDeep; },{"../internal/baseClone":72,"../internal/bindCallback":98}],143:[function(require,module,exports){ var isArrayLike = require('../internal/isArrayLike'), isObjectLike = require('../internal/isObjectLike'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; /** * Checks if `value` is classified as an `arguments` object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isArguments(function() { return arguments; }()); * // => true * * _.isArguments([1, 2, 3]); * // => false */ function isArguments(value) { return isObjectLike(value) && isArrayLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); } module.exports = isArguments; },{"../internal/isArrayLike":123,"../internal/isObjectLike":130}],144:[function(require,module,exports){ var getNative = require('../internal/getNative'), isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'); /** `Object#toString` result references. */ var arrayTag = '[object Array]'; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /* Native method references for those with the same name as other `lodash` methods. */ var nativeIsArray = getNative(Array, 'isArray'); /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(function() { return arguments; }()); * // => false */ var isArray = nativeIsArray || function(value) { return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; }; module.exports = isArray; },{"../internal/getNative":118,"../internal/isLength":129,"../internal/isObjectLike":130}],145:[function(require,module,exports){ var isArguments = require('./isArguments'), isArray = require('./isArray'), isArrayLike = require('../internal/isArrayLike'), isFunction = require('./isFunction'), isObjectLike = require('../internal/isObjectLike'), isString = require('./isString'), keys = require('../object/keys'); /** * Checks if `value` is empty. A value is considered empty unless it's an * `arguments` object, array, string, or jQuery-like collection with a length * greater than `0` or an object with own enumerable properties. * * @static * @memberOf _ * @category Lang * @param {Array|Object|string} value The value to inspect. * @returns {boolean} Returns `true` if `value` is empty, else `false`. * @example * * _.isEmpty(null); * // => true * * _.isEmpty(true); * // => true * * _.isEmpty(1); * // => true * * _.isEmpty([1, 2, 3]); * // => false * * _.isEmpty({ 'a': 1 }); * // => false */ function isEmpty(value) { if (value == null) { return true; } if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) || (isObjectLike(value) && isFunction(value.splice)))) { return !value.length; } return !keys(value).length; } module.exports = isEmpty; },{"../internal/isArrayLike":123,"../internal/isObjectLike":130,"../object/keys":153,"./isArguments":143,"./isArray":144,"./isFunction":146,"./isString":150}],146:[function(require,module,exports){ var isObject = require('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]'; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is classified as a `Function` object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isFunction(_); * // => true * * _.isFunction(/abc/); * // => false */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in older versions of Chrome and Safari which return 'function' for regexes // and Safari 8 which returns 'object' for typed array constructors. return isObject(value) && objToString.call(value) == funcTag; } module.exports = isFunction; },{"./isObject":148}],147:[function(require,module,exports){ var isFunction = require('./isFunction'), isHostObject = require('../internal/isHostObject'), isObjectLike = require('../internal/isObjectLike'); /** Used to detect host constructors (Safari > 5). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; /** Used for native method references. */ var objectProto = Object.prototype; /** Used to resolve the decompiled source of functions. */ var fnToString = Function.prototype.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); /** * Checks if `value` is a native function. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a native function, else `false`. * @example * * _.isNative(Array.prototype.push); * // => true * * _.isNative(_); * // => false */ function isNative(value) { if (value == null) { return false; } if (isFunction(value)) { return reIsNative.test(fnToString.call(value)); } return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); } module.exports = isNative; },{"../internal/isHostObject":124,"../internal/isObjectLike":130,"./isFunction":146}],148:[function(require,module,exports){ /** * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an object, else `false`. * @example * * _.isObject({}); * // => true * * _.isObject([1, 2, 3]); * // => true * * _.isObject(1); * // => false */ function isObject(value) { // Avoid a V8 JIT bug in Chrome 19-20. // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. var type = typeof value; return !!value && (type == 'object' || type == 'function'); } module.exports = isObject; },{}],149:[function(require,module,exports){ var baseForIn = require('../internal/baseForIn'), isArguments = require('./isArguments'), isHostObject = require('../internal/isHostObject'), isObjectLike = require('../internal/isObjectLike'), support = require('../support'); /** `Object#toString` result references. */ var objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. * * **Note:** This method assumes objects created by the `Object` constructor * have no inherited enumerable properties. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { * this.a = 1; * } * * _.isPlainObject(new Foo); * // => false * * _.isPlainObject([1, 2, 3]); * // => false * * _.isPlainObject({ 'x': 0, 'y': 0 }); * // => true * * _.isPlainObject(Object.create(null)); * // => true */ function isPlainObject(value) { var Ctor; // Exit early for non `Object` objects. if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) || (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { return false; } // IE < 9 iterates inherited properties before own properties. If the first // iterated property is an object's own property then there are no inherited // enumerable properties. var result; if (support.ownLast) { baseForIn(value, function(subValue, key, object) { result = hasOwnProperty.call(object, key); return false; }); return result !== false; } // In most environments an object's own properties are iterated before // its inherited properties. If the last iterated property is an object's // own property then there are no inherited enumerable properties. baseForIn(value, function(subValue, key) { result = key; }); return result === undefined || hasOwnProperty.call(value, result); } module.exports = isPlainObject; },{"../internal/baseForIn":79,"../internal/isHostObject":124,"../internal/isObjectLike":130,"../support":157,"./isArguments":143}],150:[function(require,module,exports){ var isObjectLike = require('../internal/isObjectLike'); /** `Object#toString` result references. */ var stringTag = '[object String]'; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is classified as a `String` primitive or object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isString('abc'); * // => true * * _.isString(1); * // => false */ function isString(value) { return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag); } module.exports = isString; },{"../internal/isObjectLike":130}],151:[function(require,module,exports){ var isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to identify `toStringTag` values of typed arrays. */ var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is classified as a typed array. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isTypedArray(new Uint8Array); * // => true * * _.isTypedArray([]); * // => false */ function isTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)]; } module.exports = isTypedArray; },{"../internal/isLength":129,"../internal/isObjectLike":130}],152:[function(require,module,exports){ /** * Checks if `value` is `undefined`. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. * @example * * _.isUndefined(void 0); * // => true * * _.isUndefined(null); * // => false */ function isUndefined(value) { return value === undefined; } module.exports = isUndefined; },{}],153:[function(require,module,exports){ var getNative = require('../internal/getNative'), isArrayLike = require('../internal/isArrayLike'), isObject = require('../lang/isObject'), shimKeys = require('../internal/shimKeys'), support = require('../support'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeKeys = getNative(Object, 'keys'); /** * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) * for more details. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.keys(new Foo); * // => ['a', 'b'] (iteration order is not guaranteed) * * _.keys('hi'); * // => ['0', '1'] */ var keys = !nativeKeys ? shimKeys : function(object) { var Ctor = object == null ? undefined : object.constructor; if ((typeof Ctor == 'function' && Ctor.prototype === object) || (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) { return shimKeys(object); } return isObject(object) ? nativeKeys(object) : []; }; module.exports = keys; },{"../internal/getNative":118,"../internal/isArrayLike":123,"../internal/shimKeys":138,"../lang/isObject":148,"../support":157}],154:[function(require,module,exports){ var arrayEach = require('../internal/arrayEach'), isArguments = require('../lang/isArguments'), isArray = require('../lang/isArray'), isFunction = require('../lang/isFunction'), isIndex = require('../internal/isIndex'), isLength = require('../internal/isLength'), isObject = require('../lang/isObject'), isString = require('../lang/isString'), support = require('../support'); /** `Object#toString` result references. */ var arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', stringTag = '[object String]'; /** Used to fix the JScript `[[DontEnum]]` bug. */ var shadowProps = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; /** Used for native method references. */ var errorProto = Error.prototype, objectProto = Object.prototype, stringProto = String.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** Used to avoid iterating over non-enumerable properties in IE < 9. */ var nonEnumProps = {}; nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true }; nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true }; nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true }; nonEnumProps[objectTag] = { 'constructor': true }; arrayEach(shadowProps, function(key) { for (var tag in nonEnumProps) { if (hasOwnProperty.call(nonEnumProps, tag)) { var props = nonEnumProps[tag]; props[key] = hasOwnProperty.call(props, key); } } }); /** * Creates an array of the own and inherited enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.keysIn(new Foo); * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ function keysIn(object) { if (object == null) { return []; } if (!isObject(object)) { object = Object(object); } var length = object.length; length = (length && isLength(length) && (isArray(object) || isArguments(object) || isString(object)) && length) || 0; var Ctor = object.constructor, index = -1, proto = (isFunction(Ctor) && Ctor.prototype) || objectProto, isProto = proto === object, result = Array(length), skipIndexes = length > 0, skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error), skipProto = support.enumPrototypes && isFunction(object); while (++index < length) { result[index] = (index + ''); } // lodash skips the `constructor` property when it infers it's iterating // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]` // attribute of an existing property and the `constructor` property of a // prototype defaults to non-enumerable. for (var key in object) { if (!(skipProto && key == 'prototype') && !(skipErrorProps && (key == 'message' || key == 'name')) && !(skipIndexes && isIndex(key, length)) && !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { result.push(key); } } if (support.nonEnumShadows && object !== objectProto) { var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)), nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag]; if (tag == objectTag) { proto = objectProto; } length = shadowProps.length; while (length--) { key = shadowProps[length]; var nonEnum = nonEnums[key]; if (!(isProto && nonEnum) && (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) { result.push(key); } } } return result; } module.exports = keysIn; },{"../internal/arrayEach":67,"../internal/isIndex":125,"../internal/isLength":129,"../lang/isArguments":143,"../lang/isArray":144,"../lang/isFunction":146,"../lang/isObject":148,"../lang/isString":150,"../support":157}],155:[function(require,module,exports){ var keys = require('./keys'), toObject = require('../internal/toObject'); /** * Creates a two dimensional array of the key-value pairs for `object`, * e.g. `[[key1, value1], [key2, value2]]`. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the new array of key-value pairs. * @example * * _.pairs({ 'barney': 36, 'fred': 40 }); * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) */ function pairs(object) { object = toObject(object); var index = -1, props = keys(object), length = props.length, result = Array(length); while (++index < length) { var key = props[index]; result[index] = [key, object[key]]; } return result; } module.exports = pairs; },{"../internal/toObject":139,"./keys":153}],156:[function(require,module,exports){ var baseValues = require('../internal/baseValues'), keys = require('./keys'); /** * Creates an array of the own enumerable property values of `object`. * * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property values. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.values(new Foo); * // => [1, 2] (iteration order is not guaranteed) * * _.values('hi'); * // => ['h', 'i'] */ function values(object) { return baseValues(object, keys(object)); } module.exports = values; },{"../internal/baseValues":95,"./keys":153}],157:[function(require,module,exports){ /** Used for native method references. */ var arrayProto = Array.prototype, errorProto = Error.prototype, objectProto = Object.prototype; /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice; /** * An object environment feature flags. * * @static * @memberOf _ * @type Object */ var support = {}; (function(x) { var Ctor = function() { this.x = x; }, object = { '0': x, 'length': x }, props = []; Ctor.prototype = { 'valueOf': x, 'y': x }; for (var key in new Ctor) { props.push(key); } /** * Detect if `name` or `message` properties of `Error.prototype` are * enumerable by default (IE < 9, Safari < 5.1). * * @memberOf _.support * @type boolean */ support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name'); /** * Detect if `prototype` properties are enumerable by default. * * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 * (if the prototype or a property on the prototype has been set) * incorrectly set the `[[Enumerable]]` value of a function's `prototype` * property to `true`. * * @memberOf _.support * @type boolean */ support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype'); /** * Detect if properties shadowing those on `Object.prototype` are non-enumerable. * * In IE < 9 an object's own properties, shadowing non-enumerable ones, * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug). * * @memberOf _.support * @type boolean */ support.nonEnumShadows = !/valueOf/.test(props); /** * Detect if own properties are iterated after inherited properties (IE < 9). * * @memberOf _.support * @type boolean */ support.ownLast = props[0] != 'x'; /** * Detect if `Array#shift` and `Array#splice` augment array-like objects * correctly. * * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array * `shift()` and `splice()` functions that fail to remove the last element, * `value[0]`, of array-like objects even though the "length" property is * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8, * while `splice()` is buggy regardless of mode in IE < 9. * * @memberOf _.support * @type boolean */ support.spliceObjects = (splice.call(object, 0, 1), !object[0]); /** * Detect lack of support for accessing string characters by index. * * IE < 8 can't access characters by index. IE 8 can only access characters * by index on string literals, not string objects. * * @memberOf _.support * @type boolean */ support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; }(1, 0)); module.exports = support; },{}],158:[function(require,module,exports){ /** * This method returns the first argument provided to it. * * @static * @memberOf _ * @category Utility * @param {*} value Any value. * @returns {*} Returns `value`. * @example * * var object = { 'user': 'fred' }; * * _.identity(object) === object; * // => true */ function identity(value) { return value; } module.exports = identity; },{}],159:[function(require,module,exports){ /** * A no-operation function that returns `undefined` regardless of the * arguments it receives. * * @static * @memberOf _ * @category Utility * @example * * var object = { 'user': 'fred' }; * * _.noop(object) === undefined; * // => true */ function noop() { // No operation performed. } module.exports = noop; },{}],160:[function(require,module,exports){ var baseProperty = require('../internal/baseProperty'), basePropertyDeep = require('../internal/basePropertyDeep'), isKey = require('../internal/isKey'); /** * Creates a function that returns the property value at `path` on a * given object. * * @static * @memberOf _ * @category Utility * @param {Array|string} path The path of the property to get. * @returns {Function} Returns the new function. * @example * * var objects = [ * { 'a': { 'b': { 'c': 2 } } }, * { 'a': { 'b': { 'c': 1 } } } * ]; * * _.map(objects, _.property('a.b.c')); * // => [2, 1] * * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c'); * // => [1, 2] */ function property(path) { return isKey(path) ? baseProperty(path) : basePropertyDeep(path); } module.exports = property; },{"../internal/baseProperty":90,"../internal/basePropertyDeep":91,"../internal/isKey":127}],161:[function(require,module,exports){ (function (process){ // vim:ts=4:sts=4:sw=4: /*! * * Copyright 2009-2012 Kris Kowal under the terms of the MIT * license found at http://github.com/kriskowal/q/raw/master/LICENSE * * With parts by Tyler Close * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found * at http://www.opensource.org/licenses/mit-license.html * Forked at ref_send.js version: 2009-05-11 * * With parts by Mark Miller * Copyright (C) 2011 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ (function (definition) { "use strict"; // This file will function properly as a
     
    PKjG]C$connexion/vendor/swagger-ui/o2c.htmlPK5H;q*connexion/vendor/swagger-ui/css/screen.css/* Original style from softwaremaniacs.org (c) Ivan Sagalaev */ .swagger-section pre code { display: block; padding: 0.5em; background: #F0F0F0; } .swagger-section pre code, .swagger-section pre .subst, .swagger-section pre .tag .title, .swagger-section pre .lisp .title, .swagger-section pre .clojure .built_in, .swagger-section pre .nginx .title { color: black; } .swagger-section pre .string, .swagger-section pre .title, .swagger-section pre .constant, .swagger-section pre .parent, .swagger-section pre .tag .value, .swagger-section pre .rules .value, .swagger-section pre .rules .value .number, .swagger-section pre .preprocessor, .swagger-section pre .ruby .symbol, .swagger-section pre .ruby .symbol .string, .swagger-section pre .aggregate, .swagger-section pre .template_tag, .swagger-section pre .django .variable, .swagger-section pre .smalltalk .class, .swagger-section pre .addition, .swagger-section pre .flow, .swagger-section pre .stream, .swagger-section pre .bash .variable, .swagger-section pre .apache .tag, .swagger-section pre .apache .cbracket, .swagger-section pre .tex .command, .swagger-section pre .tex .special, .swagger-section pre .erlang_repl .function_or_atom, .swagger-section pre .markdown .header { color: #800; } .swagger-section pre .comment, .swagger-section pre .annotation, .swagger-section pre .template_comment, .swagger-section pre .diff .header, .swagger-section pre .chunk, .swagger-section pre .markdown .blockquote { color: #888; } .swagger-section pre .number, .swagger-section pre .date, .swagger-section pre .regexp, .swagger-section pre .literal, .swagger-section pre .smalltalk .symbol, .swagger-section pre .smalltalk .char, .swagger-section pre .go .constant, .swagger-section pre .change, .swagger-section pre .markdown .bullet, .swagger-section pre .markdown .link_url { color: #080; } .swagger-section pre .label, .swagger-section pre .javadoc, .swagger-section pre .ruby .string, .swagger-section pre .decorator, .swagger-section pre .filter .argument, .swagger-section pre .localvars, .swagger-section pre .array, .swagger-section pre .attr_selector, .swagger-section pre .important, .swagger-section pre .pseudo, .swagger-section pre .pi, .swagger-section pre .doctype, .swagger-section pre .deletion, .swagger-section pre .envvar, .swagger-section pre .shebang, .swagger-section pre .apache .sqbracket, .swagger-section pre .nginx .built_in, .swagger-section pre .tex .formula, .swagger-section pre .erlang_repl .reserved, .swagger-section pre .prompt, .swagger-section pre .markdown .link_label, .swagger-section pre .vhdl .attribute, .swagger-section pre .clojure .attribute, .swagger-section pre .coffeescript .property { color: #8888ff; } .swagger-section pre .keyword, .swagger-section pre .id, .swagger-section pre .phpdoc, .swagger-section pre .title, .swagger-section pre .built_in, .swagger-section pre .aggregate, .swagger-section pre .css .tag, .swagger-section pre .javadoctag, .swagger-section pre .phpdoc, .swagger-section pre .yardoctag, .swagger-section pre .smalltalk .class, .swagger-section pre .winutils, .swagger-section pre .bash .variable, .swagger-section pre .apache .tag, .swagger-section pre .go .typename, .swagger-section pre .tex .command, .swagger-section pre .markdown .strong, .swagger-section pre .request, .swagger-section pre .status { font-weight: bold; } .swagger-section pre .markdown .emphasis { font-style: italic; } .swagger-section pre .nginx .built_in { font-weight: normal; } .swagger-section pre .coffeescript .javascript, .swagger-section pre .javascript .xml, .swagger-section pre .tex .formula, .swagger-section pre .xml .javascript, .swagger-section pre .xml .vbscript, .swagger-section pre .xml .css, .swagger-section pre .xml .cdata { opacity: 0.5; } .swagger-section .swagger-ui-wrap { line-height: 1; font-family: "Droid Sans", sans-serif; max-width: 960px; margin-left: auto; margin-right: auto; /* JSONEditor specific styling */ } .swagger-section .swagger-ui-wrap b, .swagger-section .swagger-ui-wrap strong { font-family: "Droid Sans", sans-serif; font-weight: bold; } .swagger-section .swagger-ui-wrap q, .swagger-section .swagger-ui-wrap blockquote { quotes: none; } .swagger-section .swagger-ui-wrap p { line-height: 1.4em; padding: 0 0 10px; color: #333333; } .swagger-section .swagger-ui-wrap q:before, .swagger-section .swagger-ui-wrap q:after, .swagger-section .swagger-ui-wrap blockquote:before, .swagger-section .swagger-ui-wrap blockquote:after { content: none; } .swagger-section .swagger-ui-wrap .heading_with_menu h1, .swagger-section .swagger-ui-wrap .heading_with_menu h2, .swagger-section .swagger-ui-wrap .heading_with_menu h3, .swagger-section .swagger-ui-wrap .heading_with_menu h4, .swagger-section .swagger-ui-wrap .heading_with_menu h5, .swagger-section .swagger-ui-wrap .heading_with_menu h6 { display: block; clear: none; float: left; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; width: 60%; } .swagger-section .swagger-ui-wrap table { border-collapse: collapse; border-spacing: 0; } .swagger-section .swagger-ui-wrap table thead tr th { padding: 5px; font-size: 0.9em; color: #666666; border-bottom: 1px solid #999999; } .swagger-section .swagger-ui-wrap table tbody tr:last-child td { border-bottom: none; } .swagger-section .swagger-ui-wrap table tbody tr.offset { background-color: #f0f0f0; } .swagger-section .swagger-ui-wrap table tbody tr td { padding: 6px; font-size: 0.9em; border-bottom: 1px solid #cccccc; vertical-align: top; line-height: 1.3em; } .swagger-section .swagger-ui-wrap ol { margin: 0px 0 10px; padding: 0 0 0 18px; list-style-type: decimal; } .swagger-section .swagger-ui-wrap ol li { padding: 5px 0px; font-size: 0.9em; color: #333333; } .swagger-section .swagger-ui-wrap ol, .swagger-section .swagger-ui-wrap ul { list-style: none; } .swagger-section .swagger-ui-wrap h1 a, .swagger-section .swagger-ui-wrap h2 a, .swagger-section .swagger-ui-wrap h3 a, .swagger-section .swagger-ui-wrap h4 a, .swagger-section .swagger-ui-wrap h5 a, .swagger-section .swagger-ui-wrap h6 a { text-decoration: none; } .swagger-section .swagger-ui-wrap h1 a:hover, .swagger-section .swagger-ui-wrap h2 a:hover, .swagger-section .swagger-ui-wrap h3 a:hover, .swagger-section .swagger-ui-wrap h4 a:hover, .swagger-section .swagger-ui-wrap h5 a:hover, .swagger-section .swagger-ui-wrap h6 a:hover { text-decoration: underline; } .swagger-section .swagger-ui-wrap h1 span.divider, .swagger-section .swagger-ui-wrap h2 span.divider, .swagger-section .swagger-ui-wrap h3 span.divider, .swagger-section .swagger-ui-wrap h4 span.divider, .swagger-section .swagger-ui-wrap h5 span.divider, .swagger-section .swagger-ui-wrap h6 span.divider { color: #aaaaaa; } .swagger-section .swagger-ui-wrap a { color: #547f00; } .swagger-section .swagger-ui-wrap a img { border: none; } .swagger-section .swagger-ui-wrap article, .swagger-section .swagger-ui-wrap aside, .swagger-section .swagger-ui-wrap details, .swagger-section .swagger-ui-wrap figcaption, .swagger-section .swagger-ui-wrap figure, .swagger-section .swagger-ui-wrap footer, .swagger-section .swagger-ui-wrap header, .swagger-section .swagger-ui-wrap hgroup, .swagger-section .swagger-ui-wrap menu, .swagger-section .swagger-ui-wrap nav, .swagger-section .swagger-ui-wrap section, .swagger-section .swagger-ui-wrap summary { display: block; } .swagger-section .swagger-ui-wrap pre { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; background-color: #fcf6db; border: 1px solid #e5e0c6; padding: 10px; } .swagger-section .swagger-ui-wrap pre code { line-height: 1.6em; background: none; } .swagger-section .swagger-ui-wrap .content > .content-type > div > label { clear: both; display: block; color: #0F6AB4; font-size: 1.1em; margin: 0; padding: 15px 0 5px; } .swagger-section .swagger-ui-wrap .content pre { font-size: 12px; margin-top: 5px; padding: 5px; } .swagger-section .swagger-ui-wrap .icon-btn { cursor: pointer; } .swagger-section .swagger-ui-wrap .info_title { padding-bottom: 10px; font-weight: bold; font-size: 25px; } .swagger-section .swagger-ui-wrap .footer { margin-top: 20px; } .swagger-section .swagger-ui-wrap p.big, .swagger-section .swagger-ui-wrap div.big p { font-size: 1em; margin-bottom: 10px; } .swagger-section .swagger-ui-wrap form.fullwidth ol li.string input, .swagger-section .swagger-ui-wrap form.fullwidth ol li.url input, .swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea, .swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input { width: 500px !important; } .swagger-section .swagger-ui-wrap .info_license { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_tos { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .message-fail { color: #cc0000; } .swagger-section .swagger-ui-wrap .info_url { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_email { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_name { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_description { padding-bottom: 10px; font-size: 15px; } .swagger-section .swagger-ui-wrap .markdown ol li, .swagger-section .swagger-ui-wrap .markdown ul li { padding: 3px 0px; line-height: 1.4em; color: #333333; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input { display: block; padding: 4px; width: auto; clear: both; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title { font-size: 1.3em; } .swagger-section .swagger-ui-wrap table.fullwidth { width: 100%; } .swagger-section .swagger-ui-wrap .model-signature { font-family: "Droid Sans", sans-serif; font-size: 1em; line-height: 1.5em; } .swagger-section .swagger-ui-wrap .model-signature .signature-nav a { text-decoration: none; color: #AAA; } .swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover { text-decoration: underline; color: black; } .swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected { color: black; text-decoration: none; } .swagger-section .swagger-ui-wrap .model-signature .propType { color: #5555aa; } .swagger-section .swagger-ui-wrap .model-signature pre:hover { background-color: #ffffdd; } .swagger-section .swagger-ui-wrap .model-signature pre { font-size: .85em; line-height: 1.2em; overflow: auto; max-height: 200px; cursor: pointer; } .swagger-section .swagger-ui-wrap .model-signature ul.signature-nav { display: block; min-width: 230px; margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child { padding-right: 0; border-right: none; } .swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li { float: left; margin: 0 5px 5px 0; padding: 2px 5px 2px 0; border-right: 1px solid #ddd; } .swagger-section .swagger-ui-wrap .model-signature .propOpt { color: #555; } .swagger-section .swagger-ui-wrap .model-signature .snippet small { font-size: 0.75em; } .swagger-section .swagger-ui-wrap .model-signature .propOptKey { font-style: italic; } .swagger-section .swagger-ui-wrap .model-signature .description .strong { font-weight: bold; color: #000; font-size: .9em; } .swagger-section .swagger-ui-wrap .model-signature .description div { font-size: 0.9em; line-height: 1.5em; margin-left: 1em; } .swagger-section .swagger-ui-wrap .model-signature .description .stronger { font-weight: bold; color: #000; } .swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper { border-spacing: 0; position: absolute; background-color: #ffffff; border: 1px solid #bbbbbb; display: none; font-size: 11px; max-width: 400px; line-height: 30px; color: black; padding: 5px; margin-left: 10px; } .swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th { text-align: center; background-color: #eeeeee; border: 1px solid #bbbbbb; font-size: 11px; color: #666666; font-weight: bold; padding: 5px; line-height: 15px; } .swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName { font-weight: bold; } .swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:first-child, .swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:last-child { display: inline; } .swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:not(:first-child):before { display: block; content: ''; } .swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown > p:only-child { margin-right: -3px; } .swagger-section .swagger-ui-wrap .model-signature .propName { font-weight: bold; } .swagger-section .swagger-ui-wrap .model-signature .signature-container { clear: both; } .swagger-section .swagger-ui-wrap .body-textarea { width: 300px; height: 100px; border: 1px solid #aaa; } .swagger-section .swagger-ui-wrap .markdown p code, .swagger-section .swagger-ui-wrap .markdown li code { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; background-color: #f0f0f0; color: black; padding: 1px 3px; } .swagger-section .swagger-ui-wrap .required { font-weight: bold; } .swagger-section .swagger-ui-wrap .editor_holder { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; font-size: 0.9em; } .swagger-section .swagger-ui-wrap .editor_holder label { font-weight: normal!important; /* JSONEditor uses bold by default for all labels, we revert that back to normal to not give the impression that by default fields are required */ } .swagger-section .swagger-ui-wrap .editor_holder label.required { font-weight: bold!important; } .swagger-section .swagger-ui-wrap input.parameter { width: 300px; border: 1px solid #aaa; } .swagger-section .swagger-ui-wrap h1 { color: black; font-size: 1.5em; line-height: 1.3em; padding: 10px 0 10px 0; font-family: "Droid Sans", sans-serif; font-weight: bold; } .swagger-section .swagger-ui-wrap .heading_with_menu { float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap .heading_with_menu ul { display: block; clear: none; float: right; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; margin-top: 10px; } .swagger-section .swagger-ui-wrap h2 { color: black; font-size: 1.3em; padding: 10px 0 10px 0; } .swagger-section .swagger-ui-wrap h2 a { color: black; } .swagger-section .swagger-ui-wrap h2 span.sub { font-size: 0.7em; color: #999999; font-style: italic; } .swagger-section .swagger-ui-wrap h2 span.sub a { color: #777777; } .swagger-section .swagger-ui-wrap span.weak { color: #666666; } .swagger-section .swagger-ui-wrap .message-success { color: #89BF04; } .swagger-section .swagger-ui-wrap caption, .swagger-section .swagger-ui-wrap th, .swagger-section .swagger-ui-wrap td { text-align: left; font-weight: normal; vertical-align: middle; } .swagger-section .swagger-ui-wrap .code { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea { font-family: "Droid Sans", sans-serif; height: 250px; padding: 4px; display: block; clear: both; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select { display: block; clear: both; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean { float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label { display: block; float: left; clear: none; margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input { display: block; float: left; clear: none; margin: 0 5px 0 0; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label { color: black; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label { display: block; clear: both; width: auto; padding: 0 0 3px; color: #666666; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr { padding-left: 3px; color: #888888; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints { margin-left: 0; font-style: italic; font-size: 0.9em; margin: 0; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons { margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap span.blank, .swagger-section .swagger-ui-wrap span.empty { color: #888888; font-style: italic; } .swagger-section .swagger-ui-wrap .markdown h3 { color: #547f00; } .swagger-section .swagger-ui-wrap .markdown h4 { color: #666666; } .swagger-section .swagger-ui-wrap .markdown pre { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; background-color: #fcf6db; border: 1px solid #e5e0c6; padding: 10px; margin: 0 0 10px 0; } .swagger-section .swagger-ui-wrap .markdown pre code { line-height: 1.6em; } .swagger-section .swagger-ui-wrap div.gist { margin: 20px 0 25px 0 !important; } .swagger-section .swagger-ui-wrap ul#resources { font-family: "Droid Sans", sans-serif; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource { border-bottom: 1px solid #dddddd; } .swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a, .swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a, .swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a { color: #555555; } .swagger-section .swagger-ui-wrap ul#resources li.resource:last-child { border-bottom: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading { border: 1px solid transparent; float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options { overflow: hidden; padding: 0; display: block; clear: none; float: right; margin: 14px 10px 0 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li { float: left; clear: none; margin: 0; padding: 2px 10px; border-right: 1px solid #dddddd; color: #666666; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a { color: #aaaaaa; text-decoration: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover { text-decoration: underline; color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active { text-decoration: underline; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first { padding-left: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last { padding-right: 0; border-right: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first { padding-left: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 { color: #999999; padding-left: 0; display: block; clear: none; float: left; font-family: "Droid Sans", sans-serif; font-weight: bold; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a { color: #999999; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation { float: none; clear: both; overflow: hidden; display: block; margin: 0 0 10px; padding: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading { float: none; clear: both; overflow: hidden; display: block; margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 { display: block; clear: none; float: left; width: auto; margin: 0; padding: 0; line-height: 1.1em; color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path { padding-left: 10px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a { color: black; text-decoration: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover { text-decoration: underline; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a { text-transform: uppercase; text-decoration: none; color: white; display: inline-block; width: 50px; font-size: 0.7em; text-align: center; padding: 7px 0 4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; -o-border-radius: 2px; -ms-border-radius: 2px; -khtml-border-radius: 2px; border-radius: 2px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span { margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options { overflow: hidden; padding: 0; display: block; clear: none; float: right; margin: 6px 10px 0 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li { float: left; clear: none; margin: 0; padding: 2px 10px; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a { text-decoration: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content { border-top: none; padding: 10px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -o-border-bottom-left-radius: 6px; -ms-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -o-border-bottom-right-radius: 6px; -ms-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; margin: 0 0 20px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 { font-size: 1.1em; margin: 0; padding: 15px 0 5px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header { float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a { padding: 4px 0 0 10px; display: inline-block; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit { display: block; clear: none; float: left; padding: 6px 8px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber { background-image: url('../images/throbber.gif'); width: 128px; height: 16px; display: block; clear: none; float: right; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error { outline: 2px solid black; outline-color: #cc0000; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name='parameterContentType'] { max-width: 300px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; padding: 10px; font-size: 0.9em; max-height: 400px; overflow-y: auto; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading { background-color: #f9f2e9; border: 1px solid #f0e0ca; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a { background-color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #f0e0ca; color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a { color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content { background-color: #faf5ee; border: 1px solid #f0e0ca; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 { color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a { color: #dcb67f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading { background-color: #fcffcd; border: 1px solid black; border-color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a { text-transform: uppercase; background-color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #ffd20f; color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a { color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content { background-color: #fcffcd; border: 1px solid black; border-color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 { color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a { color: #6fc992; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading { background-color: #f5e8e8; border: 1px solid #e8c6c7; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a { text-transform: uppercase; background-color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #e8c6c7; color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a { color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { background-color: #f7eded; border: 1px solid #e8c6c7; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 { color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a { color: #c8787a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading { background-color: #e7f6ec; border: 1px solid #c3e8d1; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a { background-color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #c3e8d1; color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a { color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content { background-color: #ebf7f0; border: 1px solid #c3e8d1; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 { color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a { color: #6fc992; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading { background-color: #FCE9E3; border: 1px solid #F5D5C3; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a { background-color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #f0cecb; color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a { color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content { background-color: #faf0ef; border: 1px solid #f0cecb; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 { color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a { color: #dcb67f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading { background-color: #e7f0f7; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a { background-color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #c3d9ec; color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content { background-color: #ebf3f9; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a { color: #6fa5d2; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading { background-color: #e7f0f7; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a { background-color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #c3d9ec; color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content { background-color: #ebf3f9; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4 { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a { color: #6fa5d2; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { border-top: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last { padding-right: 0; border-right: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active { text-decoration: underline; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first { padding-left: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first { padding-left: 0; } .swagger-section .swagger-ui-wrap p#colophon { margin: 0 15px 40px 15px; padding: 10px 0; font-size: 0.8em; border-top: 1px solid #dddddd; font-family: "Droid Sans", sans-serif; color: #999999; font-style: italic; } .swagger-section .swagger-ui-wrap p#colophon a { text-decoration: none; color: #547f00; } .swagger-section .swagger-ui-wrap h3 { color: black; font-size: 1.1em; padding: 10px 0 10px 0; } .swagger-section .swagger-ui-wrap .markdown ol, .swagger-section .swagger-ui-wrap .markdown ul { font-family: "Droid Sans", sans-serif; margin: 5px 0 10px; padding: 0 0 0 18px; list-style-type: disc; } .swagger-section .swagger-ui-wrap form.form_box { background-color: #ebf3f9; border: 1px solid #c3d9ec; padding: 10px; } .swagger-section .swagger-ui-wrap form.form_box label { color: #0f6ab4 !important; } .swagger-section .swagger-ui-wrap form.form_box input[type=submit] { display: block; padding: 10px; } .swagger-section .swagger-ui-wrap form.form_box p.weak { font-size: 0.8em; } .swagger-section .swagger-ui-wrap form.form_box p { font-size: 0.9em; padding: 0 0 15px; color: #7e7b6d; } .swagger-section .swagger-ui-wrap form.form_box p a { color: #646257; } .swagger-section .swagger-ui-wrap form.form_box p strong { color: black; } .swagger-section .swagger-ui-wrap .operation-status td.markdown > p:last-child { padding-bottom: 0; } .swagger-section .title { font-style: bold; } .swagger-section .secondary_form { display: none; } .swagger-section .main_image { display: block; margin-left: auto; margin-right: auto; } .swagger-section .oauth_body { margin-left: 100px; margin-right: 100px; } .swagger-section .oauth_submit { text-align: center; } .swagger-section .api-popup-dialog { z-index: 10000; position: absolute; width: 500px; background: #FFF; padding: 20px; border: 1px solid #ccc; border-radius: 5px; display: none; font-size: 13px; color: #777; } .swagger-section .api-popup-dialog .api-popup-title { font-size: 24px; padding: 10px 0; } .swagger-section .api-popup-dialog .api-popup-title { font-size: 24px; padding: 10px 0; } .swagger-section .api-popup-dialog .error-msg { padding-left: 5px; padding-bottom: 5px; } .swagger-section .api-popup-dialog .api-popup-authbtn { height: 30px; } .swagger-section .api-popup-dialog .api-popup-cancel { height: 30px; } .swagger-section .api-popup-scopes { padding: 10px 20px; } .swagger-section .api-popup-scopes li { padding: 5px 0; line-height: 20px; } .swagger-section .api-popup-scopes li input { position: relative; top: 2px; } .swagger-section .api-popup-scopes .api-scope-desc { padding-left: 20px; font-style: italic; } .swagger-section .api-popup-actions { padding-top: 10px; } .swagger-section .access { float: right; } .swagger-section .auth { float: right; } .swagger-section .api-ic { height: 18px; vertical-align: middle; display: inline-block; background: url(../images/explorer_icons.png) no-repeat; } .swagger-section .api-ic .api_information_panel { position: relative; margin-top: 20px; margin-left: -5px; background: #FFF; border: 1px solid #ccc; border-radius: 5px; display: none; font-size: 13px; max-width: 300px; line-height: 30px; color: black; padding: 5px; } .swagger-section .api-ic .api_information_panel p .api-msg-enabled { color: green; } .swagger-section .api-ic .api_information_panel p .api-msg-disabled { color: red; } .swagger-section .api-ic:hover .api_information_panel { position: absolute; display: block; } .swagger-section .ic-info { background-position: 0 0; width: 18px; margin-top: -6px; margin-left: 4px; } .swagger-section .ic-warning { background-position: -60px 0; width: 18px; margin-top: -6px; margin-left: 4px; } .swagger-section .ic-error { background-position: -30px 0; width: 18px; margin-top: -6px; margin-left: 4px; } .swagger-section .ic-off { background-position: -90px 0; width: 58px; margin-top: -4px; cursor: pointer; } .swagger-section .ic-on { background-position: -160px 0; width: 58px; margin-top: -4px; cursor: pointer; } .swagger-section #header { background-color: #89bf04; padding: 14px; } .swagger-section #input_baseUrl { width: 400px; } .swagger-section #api_selector { display: block; clear: none; float: right; } .swagger-section #api_selector .input { display: block; clear: none; float: left; margin: 0 10px 0 0; } .swagger-section #api_selector input { font-size: 0.9em; padding: 3px; margin: 0; } .swagger-section #input_apiKey { width: 200px; } .swagger-section #explore { display: block; text-decoration: none; font-weight: bold; padding: 6px 8px; font-size: 0.9em; color: white; background-color: #547f00; -moz-border-radius: 4px; -webkit-border-radius: 4px; -o-border-radius: 4px; -ms-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; } .swagger-section #explore:hover { background-color: #547f00; } .swagger-section #header #logo { font-size: 1.5em; font-weight: bold; text-decoration: none; background: transparent url(../images/logo_small.png) no-repeat left center; padding: 20px 0 20px 40px; color: white; } .swagger-section #content_message { margin: 10px 15px; font-style: italic; color: #999999; } .swagger-section #message-bar { min-height: 30px; text-align: center; padding-top: 10px; } .swagger-section .swagger-collapse:before { content: "-"; } .swagger-section .swagger-expand:before { content: "+"; } PK5Hl4.connexion/vendor/swagger-ui/css/typography.css/* Google Font's Droid Sans */ @font-face { font-family: 'Droid Sans'; font-style: normal; font-weight: 400; src: local('Droid Sans'), local('DroidSans'), url('../fonts/DroidSans.ttf') format('truetype'); } /* Google Font's Droid Sans Bold */ @font-face { font-family: 'Droid Sans'; font-style: normal; font-weight: 700; src: local('Droid Sans Bold'), local('DroidSans-Bold'), url('../fonts/DroidSans-Bold.ttf') format('truetype'); } PKjGFP##)connexion/vendor/swagger-ui/css/style.css.swagger-section #header a#logo { font-size: 1.5em; font-weight: bold; text-decoration: none; background: transparent url(../images/logo.png) no-repeat left center; padding: 20px 0 20px 40px; } #text-head { font-size: 80px; font-family: 'Roboto', sans-serif; color: #ffffff; float: right; margin-right: 20%; } .navbar-fixed-top .navbar-nav { height: auto; } .navbar-fixed-top .navbar-brand { height: auto; } .navbar-header { height: auto; } .navbar-inverse { background-color: #000; border-color: #000; } #navbar-brand { margin-left: 20%; } .navtext { font-size: 10px; } .h1, h1 { font-size: 60px; } .navbar-default .navbar-header .navbar-brand { color: #a2dfee; } /* tag titles */ .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a { color: #393939; font-family: 'Arvo', serif; font-size: 1.5em; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 { color: #525252; padding-left: 0px; display: block; clear: none; float: left; font-family: 'Arvo', serif; font-weight: bold; } .navbar-default .navbar-collapse, .navbar-default .navbar-form { border-color: #0A0A0A; } .container1 { width: 1500px; margin: auto; margin-top: 0; background-image: url('../images/shield.png'); background-repeat: no-repeat; background-position: -40px -20px; margin-bottom: 210px; } .container-inner { width: 1200px; margin: auto; background-color: rgba(223, 227, 228, 0.75); padding-bottom: 40px; padding-top: 40px; border-radius: 15px; } .header-content { padding: 0; width: 1000px; } .title1 { font-size: 80px; font-family: 'Vollkorn', serif; color: #404040; text-align: center; padding-top: 40px; padding-bottom: 100px; } #icon { margin-top: -18px; } .subtext { font-size: 25px; font-style: italic; color: #08b; text-align: right; padding-right: 250px; } .bg-primary { background-color: #00468b; } .navbar-default .nav > li > a, .navbar-default .nav > li > a:focus { color: #08b; } .navbar-default .nav > li > a, .navbar-default .nav > li > a:hover { color: #08b; } .navbar-default .nav > li > a, .navbar-default .nav > li > a:focus:hover { color: #08b; } .text-faded { font-size: 25px; font-family: 'Vollkorn', serif; } .section-heading { font-family: 'Vollkorn', serif; font-size: 45px; padding-bottom: 10px; } hr { border-color: #00468b; padding-bottom: 10px; } .description { margin-top: 20px; padding-bottom: 200px; } .description li { font-family: 'Vollkorn', serif; font-size: 25px; color: #525252; margin-left: 28%; padding-top: 5px; } .gap { margin-top: 200px; } .troubleshootingtext { color: rgba(255, 255, 255, 0.7); padding-left: 30%; } .troubleshootingtext li { list-style-type: circle; font-size: 25px; padding-bottom: 5px; } .overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000; } .block.response_body.json:hover { cursor: pointer; } .backdrop { color: blue; } #myModal { height: 100%; } .modal-backdrop { bottom: 0; position: fixed; } .curl { padding: 10px; font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; font-size: 0.9em; max-height: 400px; margin-top: 5px; overflow-y: auto; background-color: #fcf6db; border: 1px solid #e5e0c6; border-radius: 4px; } .curl_title { font-size: 1.1em; margin: 0; padding: 15px 0 5px; font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif; font-weight: 500; line-height: 1.1; } .footer { display: none; } .swagger-section .swagger-ui-wrap h2 { padding: 0; } h2 { margin: 0; margin-bottom: 5px; } .markdown p { font-size: 15px; font-family: 'Arvo', serif; } .swagger-section .swagger-ui-wrap .code { font-size: 15px; font-family: 'Arvo', serif; } .swagger-section .swagger-ui-wrap b { font-family: 'Arvo', serif; } #signin:hover { cursor: pointer; } .dropdown-menu { padding: 15px; } .navbar-right .dropdown-menu { left: 0; right: auto; } #signinbutton { width: 100%; height: 32px; font-size: 13px; font-weight: bold; color: #08b; } .navbar-default .nav > li .details { color: #000000; text-transform: none; font-size: 15px; font-weight: normal; font-family: 'Open Sans', sans-serif; font-style: italic; line-height: 20px; top: -2px; } .navbar-default .nav > li .details:hover { color: black; } #signout { width: 100%; height: 32px; font-size: 13px; font-weight: bold; color: #08b; } PK5HK)connexion/vendor/swagger-ui/css/print.css/* Original style from softwaremaniacs.org (c) Ivan Sagalaev */ .swagger-section pre code { display: block; padding: 0.5em; background: #F0F0F0; } .swagger-section pre code, .swagger-section pre .subst, .swagger-section pre .tag .title, .swagger-section pre .lisp .title, .swagger-section pre .clojure .built_in, .swagger-section pre .nginx .title { color: black; } .swagger-section pre .string, .swagger-section pre .title, .swagger-section pre .constant, .swagger-section pre .parent, .swagger-section pre .tag .value, .swagger-section pre .rules .value, .swagger-section pre .rules .value .number, .swagger-section pre .preprocessor, .swagger-section pre .ruby .symbol, .swagger-section pre .ruby .symbol .string, .swagger-section pre .aggregate, .swagger-section pre .template_tag, .swagger-section pre .django .variable, .swagger-section pre .smalltalk .class, .swagger-section pre .addition, .swagger-section pre .flow, .swagger-section pre .stream, .swagger-section pre .bash .variable, .swagger-section pre .apache .tag, .swagger-section pre .apache .cbracket, .swagger-section pre .tex .command, .swagger-section pre .tex .special, .swagger-section pre .erlang_repl .function_or_atom, .swagger-section pre .markdown .header { color: #800; } .swagger-section pre .comment, .swagger-section pre .annotation, .swagger-section pre .template_comment, .swagger-section pre .diff .header, .swagger-section pre .chunk, .swagger-section pre .markdown .blockquote { color: #888; } .swagger-section pre .number, .swagger-section pre .date, .swagger-section pre .regexp, .swagger-section pre .literal, .swagger-section pre .smalltalk .symbol, .swagger-section pre .smalltalk .char, .swagger-section pre .go .constant, .swagger-section pre .change, .swagger-section pre .markdown .bullet, .swagger-section pre .markdown .link_url { color: #080; } .swagger-section pre .label, .swagger-section pre .javadoc, .swagger-section pre .ruby .string, .swagger-section pre .decorator, .swagger-section pre .filter .argument, .swagger-section pre .localvars, .swagger-section pre .array, .swagger-section pre .attr_selector, .swagger-section pre .important, .swagger-section pre .pseudo, .swagger-section pre .pi, .swagger-section pre .doctype, .swagger-section pre .deletion, .swagger-section pre .envvar, .swagger-section pre .shebang, .swagger-section pre .apache .sqbracket, .swagger-section pre .nginx .built_in, .swagger-section pre .tex .formula, .swagger-section pre .erlang_repl .reserved, .swagger-section pre .prompt, .swagger-section pre .markdown .link_label, .swagger-section pre .vhdl .attribute, .swagger-section pre .clojure .attribute, .swagger-section pre .coffeescript .property { color: #8888ff; } .swagger-section pre .keyword, .swagger-section pre .id, .swagger-section pre .phpdoc, .swagger-section pre .title, .swagger-section pre .built_in, .swagger-section pre .aggregate, .swagger-section pre .css .tag, .swagger-section pre .javadoctag, .swagger-section pre .phpdoc, .swagger-section pre .yardoctag, .swagger-section pre .smalltalk .class, .swagger-section pre .winutils, .swagger-section pre .bash .variable, .swagger-section pre .apache .tag, .swagger-section pre .go .typename, .swagger-section pre .tex .command, .swagger-section pre .markdown .strong, .swagger-section pre .request, .swagger-section pre .status { font-weight: bold; } .swagger-section pre .markdown .emphasis { font-style: italic; } .swagger-section pre .nginx .built_in { font-weight: normal; } .swagger-section pre .coffeescript .javascript, .swagger-section pre .javascript .xml, .swagger-section pre .tex .formula, .swagger-section pre .xml .javascript, .swagger-section pre .xml .vbscript, .swagger-section pre .xml .css, .swagger-section pre .xml .cdata { opacity: 0.5; } .swagger-section .swagger-ui-wrap { line-height: 1; font-family: "Droid Sans", sans-serif; max-width: 960px; margin-left: auto; margin-right: auto; /* JSONEditor specific styling */ } .swagger-section .swagger-ui-wrap b, .swagger-section .swagger-ui-wrap strong { font-family: "Droid Sans", sans-serif; font-weight: bold; } .swagger-section .swagger-ui-wrap q, .swagger-section .swagger-ui-wrap blockquote { quotes: none; } .swagger-section .swagger-ui-wrap p { line-height: 1.4em; padding: 0 0 10px; color: #333333; } .swagger-section .swagger-ui-wrap q:before, .swagger-section .swagger-ui-wrap q:after, .swagger-section .swagger-ui-wrap blockquote:before, .swagger-section .swagger-ui-wrap blockquote:after { content: none; } .swagger-section .swagger-ui-wrap .heading_with_menu h1, .swagger-section .swagger-ui-wrap .heading_with_menu h2, .swagger-section .swagger-ui-wrap .heading_with_menu h3, .swagger-section .swagger-ui-wrap .heading_with_menu h4, .swagger-section .swagger-ui-wrap .heading_with_menu h5, .swagger-section .swagger-ui-wrap .heading_with_menu h6 { display: block; clear: none; float: left; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; width: 60%; } .swagger-section .swagger-ui-wrap table { border-collapse: collapse; border-spacing: 0; } .swagger-section .swagger-ui-wrap table thead tr th { padding: 5px; font-size: 0.9em; color: #666666; border-bottom: 1px solid #999999; } .swagger-section .swagger-ui-wrap table tbody tr:last-child td { border-bottom: none; } .swagger-section .swagger-ui-wrap table tbody tr.offset { background-color: #f0f0f0; } .swagger-section .swagger-ui-wrap table tbody tr td { padding: 6px; font-size: 0.9em; border-bottom: 1px solid #cccccc; vertical-align: top; line-height: 1.3em; } .swagger-section .swagger-ui-wrap ol { margin: 0px 0 10px; padding: 0 0 0 18px; list-style-type: decimal; } .swagger-section .swagger-ui-wrap ol li { padding: 5px 0px; font-size: 0.9em; color: #333333; } .swagger-section .swagger-ui-wrap ol, .swagger-section .swagger-ui-wrap ul { list-style: none; } .swagger-section .swagger-ui-wrap h1 a, .swagger-section .swagger-ui-wrap h2 a, .swagger-section .swagger-ui-wrap h3 a, .swagger-section .swagger-ui-wrap h4 a, .swagger-section .swagger-ui-wrap h5 a, .swagger-section .swagger-ui-wrap h6 a { text-decoration: none; } .swagger-section .swagger-ui-wrap h1 a:hover, .swagger-section .swagger-ui-wrap h2 a:hover, .swagger-section .swagger-ui-wrap h3 a:hover, .swagger-section .swagger-ui-wrap h4 a:hover, .swagger-section .swagger-ui-wrap h5 a:hover, .swagger-section .swagger-ui-wrap h6 a:hover { text-decoration: underline; } .swagger-section .swagger-ui-wrap h1 span.divider, .swagger-section .swagger-ui-wrap h2 span.divider, .swagger-section .swagger-ui-wrap h3 span.divider, .swagger-section .swagger-ui-wrap h4 span.divider, .swagger-section .swagger-ui-wrap h5 span.divider, .swagger-section .swagger-ui-wrap h6 span.divider { color: #aaaaaa; } .swagger-section .swagger-ui-wrap a { color: #547f00; } .swagger-section .swagger-ui-wrap a img { border: none; } .swagger-section .swagger-ui-wrap article, .swagger-section .swagger-ui-wrap aside, .swagger-section .swagger-ui-wrap details, .swagger-section .swagger-ui-wrap figcaption, .swagger-section .swagger-ui-wrap figure, .swagger-section .swagger-ui-wrap footer, .swagger-section .swagger-ui-wrap header, .swagger-section .swagger-ui-wrap hgroup, .swagger-section .swagger-ui-wrap menu, .swagger-section .swagger-ui-wrap nav, .swagger-section .swagger-ui-wrap section, .swagger-section .swagger-ui-wrap summary { display: block; } .swagger-section .swagger-ui-wrap pre { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; background-color: #fcf6db; border: 1px solid #e5e0c6; padding: 10px; } .swagger-section .swagger-ui-wrap pre code { line-height: 1.6em; background: none; } .swagger-section .swagger-ui-wrap .content > .content-type > div > label { clear: both; display: block; color: #0F6AB4; font-size: 1.1em; margin: 0; padding: 15px 0 5px; } .swagger-section .swagger-ui-wrap .content pre { font-size: 12px; margin-top: 5px; padding: 5px; } .swagger-section .swagger-ui-wrap .icon-btn { cursor: pointer; } .swagger-section .swagger-ui-wrap .info_title { padding-bottom: 10px; font-weight: bold; font-size: 25px; } .swagger-section .swagger-ui-wrap .footer { margin-top: 20px; } .swagger-section .swagger-ui-wrap p.big, .swagger-section .swagger-ui-wrap div.big p { font-size: 1em; margin-bottom: 10px; } .swagger-section .swagger-ui-wrap form.fullwidth ol li.string input, .swagger-section .swagger-ui-wrap form.fullwidth ol li.url input, .swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea, .swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input { width: 500px !important; } .swagger-section .swagger-ui-wrap .info_license { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_tos { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .message-fail { color: #cc0000; } .swagger-section .swagger-ui-wrap .info_url { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_email { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_name { padding-bottom: 5px; } .swagger-section .swagger-ui-wrap .info_description { padding-bottom: 10px; font-size: 15px; } .swagger-section .swagger-ui-wrap .markdown ol li, .swagger-section .swagger-ui-wrap .markdown ul li { padding: 3px 0px; line-height: 1.4em; color: #333333; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input { display: block; padding: 4px; width: auto; clear: both; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title, .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title { font-size: 1.3em; } .swagger-section .swagger-ui-wrap table.fullwidth { width: 100%; } .swagger-section .swagger-ui-wrap .model-signature { font-family: "Droid Sans", sans-serif; font-size: 1em; line-height: 1.5em; } .swagger-section .swagger-ui-wrap .model-signature .signature-nav a { text-decoration: none; color: #AAA; } .swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover { text-decoration: underline; color: black; } .swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected { color: black; text-decoration: none; } .swagger-section .swagger-ui-wrap .model-signature .propType { color: #5555aa; } .swagger-section .swagger-ui-wrap .model-signature pre:hover { background-color: #ffffdd; } .swagger-section .swagger-ui-wrap .model-signature pre { font-size: .85em; line-height: 1.2em; overflow: auto; max-height: 200px; cursor: pointer; } .swagger-section .swagger-ui-wrap .model-signature ul.signature-nav { display: block; min-width: 230px; margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child { padding-right: 0; border-right: none; } .swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li { float: left; margin: 0 5px 5px 0; padding: 2px 5px 2px 0; border-right: 1px solid #ddd; } .swagger-section .swagger-ui-wrap .model-signature .propOpt { color: #555; } .swagger-section .swagger-ui-wrap .model-signature .snippet small { font-size: 0.75em; } .swagger-section .swagger-ui-wrap .model-signature .propOptKey { font-style: italic; } .swagger-section .swagger-ui-wrap .model-signature .description .strong { font-weight: bold; color: #000; font-size: .9em; } .swagger-section .swagger-ui-wrap .model-signature .description div { font-size: 0.9em; line-height: 1.5em; margin-left: 1em; } .swagger-section .swagger-ui-wrap .model-signature .description .stronger { font-weight: bold; color: #000; } .swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper { border-spacing: 0; position: absolute; background-color: #ffffff; border: 1px solid #bbbbbb; display: none; font-size: 11px; max-width: 400px; line-height: 30px; color: black; padding: 5px; margin-left: 10px; } .swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th { text-align: center; background-color: #eeeeee; border: 1px solid #bbbbbb; font-size: 11px; color: #666666; font-weight: bold; padding: 5px; line-height: 15px; } .swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName { font-weight: bold; } .swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:first-child, .swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:last-child { display: inline; } .swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:not(:first-child):before { display: block; content: ''; } .swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown > p:only-child { margin-right: -3px; } .swagger-section .swagger-ui-wrap .model-signature .propName { font-weight: bold; } .swagger-section .swagger-ui-wrap .model-signature .signature-container { clear: both; } .swagger-section .swagger-ui-wrap .body-textarea { width: 300px; height: 100px; border: 1px solid #aaa; } .swagger-section .swagger-ui-wrap .markdown p code, .swagger-section .swagger-ui-wrap .markdown li code { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; background-color: #f0f0f0; color: black; padding: 1px 3px; } .swagger-section .swagger-ui-wrap .required { font-weight: bold; } .swagger-section .swagger-ui-wrap .editor_holder { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; font-size: 0.9em; } .swagger-section .swagger-ui-wrap .editor_holder label { font-weight: normal!important; /* JSONEditor uses bold by default for all labels, we revert that back to normal to not give the impression that by default fields are required */ } .swagger-section .swagger-ui-wrap .editor_holder label.required { font-weight: bold!important; } .swagger-section .swagger-ui-wrap input.parameter { width: 300px; border: 1px solid #aaa; } .swagger-section .swagger-ui-wrap h1 { color: black; font-size: 1.5em; line-height: 1.3em; padding: 10px 0 10px 0; font-family: "Droid Sans", sans-serif; font-weight: bold; } .swagger-section .swagger-ui-wrap .heading_with_menu { float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap .heading_with_menu ul { display: block; clear: none; float: right; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; margin-top: 10px; } .swagger-section .swagger-ui-wrap h2 { color: black; font-size: 1.3em; padding: 10px 0 10px 0; } .swagger-section .swagger-ui-wrap h2 a { color: black; } .swagger-section .swagger-ui-wrap h2 span.sub { font-size: 0.7em; color: #999999; font-style: italic; } .swagger-section .swagger-ui-wrap h2 span.sub a { color: #777777; } .swagger-section .swagger-ui-wrap span.weak { color: #666666; } .swagger-section .swagger-ui-wrap .message-success { color: #89BF04; } .swagger-section .swagger-ui-wrap caption, .swagger-section .swagger-ui-wrap th, .swagger-section .swagger-ui-wrap td { text-align: left; font-weight: normal; vertical-align: middle; } .swagger-section .swagger-ui-wrap .code { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea { font-family: "Droid Sans", sans-serif; height: 250px; padding: 4px; display: block; clear: both; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select { display: block; clear: both; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean { float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label { display: block; float: left; clear: none; margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input { display: block; float: left; clear: none; margin: 0 5px 0 0; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label { color: black; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label { display: block; clear: both; width: auto; padding: 0 0 3px; color: #666666; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr { padding-left: 3px; color: #888888; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints { margin-left: 0; font-style: italic; font-size: 0.9em; margin: 0; } .swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons { margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap span.blank, .swagger-section .swagger-ui-wrap span.empty { color: #888888; font-style: italic; } .swagger-section .swagger-ui-wrap .markdown h3 { color: #547f00; } .swagger-section .swagger-ui-wrap .markdown h4 { color: #666666; } .swagger-section .swagger-ui-wrap .markdown pre { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; background-color: #fcf6db; border: 1px solid #e5e0c6; padding: 10px; margin: 0 0 10px 0; } .swagger-section .swagger-ui-wrap .markdown pre code { line-height: 1.6em; } .swagger-section .swagger-ui-wrap div.gist { margin: 20px 0 25px 0 !important; } .swagger-section .swagger-ui-wrap ul#resources { font-family: "Droid Sans", sans-serif; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource { border-bottom: 1px solid #dddddd; } .swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a, .swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a, .swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a { color: #555555; } .swagger-section .swagger-ui-wrap ul#resources li.resource:last-child { border-bottom: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading { border: 1px solid transparent; float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options { overflow: hidden; padding: 0; display: block; clear: none; float: right; margin: 14px 10px 0 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li { float: left; clear: none; margin: 0; padding: 2px 10px; border-right: 1px solid #dddddd; color: #666666; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a { color: #aaaaaa; text-decoration: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover { text-decoration: underline; color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active { text-decoration: underline; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first { padding-left: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last { padding-right: 0; border-right: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first { padding-left: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 { color: #999999; padding-left: 0; display: block; clear: none; float: left; font-family: "Droid Sans", sans-serif; font-weight: bold; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a { color: #999999; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation { float: none; clear: both; overflow: hidden; display: block; margin: 0 0 10px; padding: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading { float: none; clear: both; overflow: hidden; display: block; margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 { display: block; clear: none; float: left; width: auto; margin: 0; padding: 0; line-height: 1.1em; color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path { padding-left: 10px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a { color: black; text-decoration: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover { text-decoration: underline; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a { text-transform: uppercase; text-decoration: none; color: white; display: inline-block; width: 50px; font-size: 0.7em; text-align: center; padding: 7px 0 4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; -o-border-radius: 2px; -ms-border-radius: 2px; -khtml-border-radius: 2px; border-radius: 2px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span { margin: 0; padding: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options { overflow: hidden; padding: 0; display: block; clear: none; float: right; margin: 6px 10px 0 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li { float: left; clear: none; margin: 0; padding: 2px 10px; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a { text-decoration: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access { color: black; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content { border-top: none; padding: 10px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -o-border-bottom-left-radius: 6px; -ms-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -o-border-bottom-right-radius: 6px; -ms-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; margin: 0 0 20px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 { font-size: 1.1em; margin: 0; padding: 15px 0 5px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header { float: none; clear: both; overflow: hidden; display: block; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a { padding: 4px 0 0 10px; display: inline-block; font-size: 0.9em; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit { display: block; clear: none; float: left; padding: 6px 8px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber { background-image: url('../images/throbber.gif'); width: 128px; height: 16px; display: block; clear: none; float: right; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error { outline: 2px solid black; outline-color: #cc0000; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name='parameterContentType'] { max-width: 300px; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre { font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; padding: 10px; font-size: 0.9em; max-height: 400px; overflow-y: auto; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading { background-color: #f9f2e9; border: 1px solid #f0e0ca; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a { background-color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #f0e0ca; color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a { color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content { background-color: #faf5ee; border: 1px solid #f0e0ca; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 { color: #c5862b; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a { color: #dcb67f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading { background-color: #fcffcd; border: 1px solid black; border-color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a { text-transform: uppercase; background-color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #ffd20f; color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a { color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content { background-color: #fcffcd; border: 1px solid black; border-color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 { color: #ffd20f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a { color: #6fc992; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading { background-color: #f5e8e8; border: 1px solid #e8c6c7; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a { text-transform: uppercase; background-color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #e8c6c7; color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a { color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { background-color: #f7eded; border: 1px solid #e8c6c7; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 { color: #a41e22; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a { color: #c8787a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading { background-color: #e7f6ec; border: 1px solid #c3e8d1; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a { background-color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #c3e8d1; color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a { color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content { background-color: #ebf7f0; border: 1px solid #c3e8d1; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 { color: #10a54a; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a { color: #6fc992; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading { background-color: #FCE9E3; border: 1px solid #F5D5C3; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a { background-color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #f0cecb; color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a { color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content { background-color: #faf0ef; border: 1px solid #f0cecb; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 { color: #D38042; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a { color: #dcb67f; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading { background-color: #e7f0f7; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a { background-color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #c3d9ec; color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content { background-color: #ebf3f9; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a { color: #6fa5d2; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading { background-color: #e7f0f7; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a { background-color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li { border-right: 1px solid #dddddd; border-right-color: #c3d9ec; color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content { background-color: #ebf3f9; border: 1px solid #c3d9ec; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4 { color: #0f6ab4; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a { color: #6fa5d2; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { border-top: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last { padding-right: 0; border-right: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active { text-decoration: underline; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first { padding-left: 0; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child, .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first { padding-left: 0; } .swagger-section .swagger-ui-wrap p#colophon { margin: 0 15px 40px 15px; padding: 10px 0; font-size: 0.8em; border-top: 1px solid #dddddd; font-family: "Droid Sans", sans-serif; color: #999999; font-style: italic; } .swagger-section .swagger-ui-wrap p#colophon a { text-decoration: none; color: #547f00; } .swagger-section .swagger-ui-wrap h3 { color: black; font-size: 1.1em; padding: 10px 0 10px 0; } .swagger-section .swagger-ui-wrap .markdown ol, .swagger-section .swagger-ui-wrap .markdown ul { font-family: "Droid Sans", sans-serif; margin: 5px 0 10px; padding: 0 0 0 18px; list-style-type: disc; } .swagger-section .swagger-ui-wrap form.form_box { background-color: #ebf3f9; border: 1px solid #c3d9ec; padding: 10px; } .swagger-section .swagger-ui-wrap form.form_box label { color: #0f6ab4 !important; } .swagger-section .swagger-ui-wrap form.form_box input[type=submit] { display: block; padding: 10px; } .swagger-section .swagger-ui-wrap form.form_box p.weak { font-size: 0.8em; } .swagger-section .swagger-ui-wrap form.form_box p { font-size: 0.9em; padding: 0 0 15px; color: #7e7b6d; } .swagger-section .swagger-ui-wrap form.form_box p a { color: #646257; } .swagger-section .swagger-ui-wrap form.form_box p strong { color: black; } .swagger-section .swagger-ui-wrap .operation-status td.markdown > p:last-child { padding-bottom: 0; } .swagger-section .title { font-style: bold; } .swagger-section .secondary_form { display: none; } .swagger-section .main_image { display: block; margin-left: auto; margin-right: auto; } .swagger-section .oauth_body { margin-left: 100px; margin-right: 100px; } .swagger-section .oauth_submit { text-align: center; } .swagger-section .api-popup-dialog { z-index: 10000; position: absolute; width: 500px; background: #FFF; padding: 20px; border: 1px solid #ccc; border-radius: 5px; display: none; font-size: 13px; color: #777; } .swagger-section .api-popup-dialog .api-popup-title { font-size: 24px; padding: 10px 0; } .swagger-section .api-popup-dialog .api-popup-title { font-size: 24px; padding: 10px 0; } .swagger-section .api-popup-dialog .error-msg { padding-left: 5px; padding-bottom: 5px; } .swagger-section .api-popup-dialog .api-popup-authbtn { height: 30px; } .swagger-section .api-popup-dialog .api-popup-cancel { height: 30px; } .swagger-section .api-popup-scopes { padding: 10px 20px; } .swagger-section .api-popup-scopes li { padding: 5px 0; line-height: 20px; } .swagger-section .api-popup-scopes li input { position: relative; top: 2px; } .swagger-section .api-popup-scopes .api-scope-desc { padding-left: 20px; font-style: italic; } .swagger-section .api-popup-actions { padding-top: 10px; } #header { display: none; } .swagger-section .swagger-ui-wrap .model-signature pre { max-height: none; } .swagger-section .swagger-ui-wrap .body-textarea { width: 100px; } .swagger-section .swagger-ui-wrap input.parameter { width: 100px; } .swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options { display: none; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints { display: block !important; } .swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content { display: block !important; } PKjGs**)connexion/vendor/swagger-ui/css/reset.css/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } PKjG 66.connexion/vendor/swagger-ui/images/favicon.ico h&  (  "$Y77Y.mmmmmm.wmmmmmmmmw".mϺmmmmлm-"mmxmmmmvmmZmmrmmmmpmmY8mmū/E::D0nŬm78mlū/D9:C0mūm7Zmm rmmmmpmmYmmxmmmmvmm"/mϹmmmmϺm."xmmmmmmmmw/mmmmmm/Z88Z""( @ 8zz:xzdwɱf§f§wɱfҾ&mmmmmmmm%ѽzmmmmmmmmmmmmz`mmmmmmmmmmmmmmmm^LmmmmmmmmmmmmmmmmmmIb`mmmmmmmmmmmmmmmmmmmm]dmmm rmmmmmmmm smmmv{mmmpƭлmmmmmmmmϺsǯmmmzzҾmmmm/mmmmmmmmmm*mmmmѽ6&mmmm~mmmmmmmmmm{mmmm$8xmmmmm}mmmmmmmmmmxmmmmmzmmmmmqmmmmmmmmmmpmmmmmyʲmmmm0mormmppmmqom3mmmmwɱhèmmmл3m}pp|m1мmmmf§hèmmmϺ4m|pp{m2лmmmf§yʲmmmm-mnqmmppmmqnm/mmmmwɱmmmmmqmmmmmmmmmmpmmmmmxmmmmm}mmmmmmmmmmxmmmmmz6'mmmm~mmmmmmmmmm{mmmm%8ҿmmmm/mmmmmmmmmm+mmmmѽv{mmmoƬѼmmmmmmmmмrǮmmmzxmmm rmmmmmmmm rmmmbammmmmmmmmmmmmmmmmmmm_dNmmmmmmmmmmmmmmmmmmKbmmmmmmmmmmmmmmmm`{mmmmmmmmmmmm{ӿ(mmmmmmmm'Ҿbzʲhèhèyʲdvx6xx6??PKjG884connexion/vendor/swagger-ui/images/pet_store_api.pngPNG  IHDRw=sBIT|d pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATHIhA@_Uwgbb`ԈN" &FQ0(Q,.Q*".Q"AQ1`bd[kޯ/J48߼[un}8|њavH3Ph aMhCX0p+}3؄ş=Pc`4d|mX[Mx%"GkjkQ 1]m ?'DpML)H + }R)ūWmok{M{G'JVqxs' XPTT|tttӿd]f#E L(l<ԒZ7VIENDB`PKjG"@2connexion/vendor/swagger-ui/images/wordnik_api.pngPNG  IHDRw=sBIT|d pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6NIDATHMh\Ug&'3Lgn,EZZD(EGĕ U hAj_ +H@~!- nL҉؈U'K{q}s܏w!op繹:4ձt ԉґ CF'n|/\`d˜<#{ ?hEvݎ- q)y'*Tjޡd03@.O:ܗXF"/+ղA`{mmY )ql$Sє,T|.˿kC6S _ "| \* +WkNUv$af/p[:wd}Wn'qGUB6 lj300$6v[M9ND3?PPS]L(!+%5  (VЦŽV.02ƪZ a˯\7uXN{'rrŷWG, +lQ%<\?hl|wTL"l)]G3~J2aچSh@(H qx:>C3 52ZbN?5{/K,؊0 [LUy(OϟoJk 6g,yV^,N- ĀZ 2PBYEִE5\cYL!܂P_[r^Sv(> RĕV?&tP˴ӝX ]IENDB`PKjGhϕ4connexion/vendor/swagger-ui/images/favicon-16x16.pngPNG  IHDRaLIDAT8OHa?f֚etH(n R:TR:DT<B$Ћ1rF.y Ieh;(4ƤO9A~'8TmyTsUA1&ZD[WOQ? klcj=\l 9,OfQ@JfVFp9}ORhM)),z,L6:WǏ9yzGː&iۖeOa7:^/#\q# m#N,~^&5A6Q "Bb.1ZUjNlOrkS9Q},AVM6Wm[askP?*d#@SS)ODsgr\xL2̺u0JMVp/yΜ".*w?T5eT5Vx5 )`.Xb]u}$l1h +Wl =㜣uH@(df)8nHG$^n'ipF(g(//j0_S;h"İ@\:cx+/<DFiIENDB`PKjG\xRvv4connexion/vendor/swagger-ui/images/favicon-32x32.pngPNG  IHDR szz=IDATXkpW9B$$)D$H-&0:L;L cZ@D Qg:h -? VfT6[ I$osisY{][gi{o +A"@_1GZ1~'AN E/z^ S#vE#vn,Rr?jF;^g]JiA5EyKU9#vD'2]Wk#5"B$zwF>;3iD>Cmy=5Mz8Uū;d|{mJ޻BMkBKTr}?ENf!J'NU EbMhI}KcQh#k7qv1&yIoߚК c8t[ u"G9am4bר*?1r]=UEyu6(zވ-h[~ua3lIɞ~9dڴh0^6ueքXވ-DorQk7Shp)=yTcyy("sUxwϼsk#n<<_z# [x * -PUN78JᔿHpNFTclנj;\]}gqSU7mGQU:wy:{d]<\rc{p~sƵ_q)̨=7SCj BI5a 'C6Qڻ)⼥)~{c\~I\Zp6yH<w?y2fcM_9ŏ;5idw/׎}5}FNp 4`[c$G9>EADȦU~b+j6X<^~K-P-F,ք!Ia Co;jsu>C].f y٥):{=W긺$y8A!: SZ9>iK!%b7 h$05a3'<Ʊšd=U8PYYj-p,7TSl9 ),z-޻vvL6e{DVlSl#1xE PIr2 Gmz+_)7u|mff5Pt1i٬>j;8q%rgdՔKV1{+^}{uoF3)Uo;p~T'QYWԎlkˋTƄVUZ.ā;X]ʲwDƘ"rU^[LnΙ4վsQ[ͤg #vExmm#G޿u䭖>WS<Uu U ?hǴ&p᭷5s"!A +_`"uWDl|1 .T%f;PKjGjR5connexion/vendor/swagger-ui/images/explorer_icons.pngPNG  IHDR,2* pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F IDATxmpTKy$6@"HAB,RLX:fDtZi 3(Bvx@-H(HRP dI{a%$!{w!y~3wٽ{sQaRMSih3i}^kM"(bxޝdi0,:>ݲ4;i'&lI kNA)eWhXd:`UJq֔4 b*Xg+bԄjyj KeWPW[Ua{=>#"HRƶmR6PRPP@~~~멿]jhhӧOX_fF1n8Ν̹bL{.THKu,;e%khSTVW.Y;y] *+D/]lJ׺֭ӦiRTT-ܒԠ9sjgBx<Ο?ϑ#G# UUUk0큛 Goܚqz w^'W.KYGЗM7ډ ۶}>p=IG_MU`;*Twow{I***hkkO>Iә1co'O& D|dddPSSC0tZζ wymY[PQ|.w2X1)k׊ӤҰfhަ{CE%úZt^3=YݦUorh?cX~Z/eaߡAo]rJ!{BuK]7Ê]҅ʥpkk+e%E"Z[[.$| 2H$B(rP(f15XvԄ Zc(h7mCN3H@?L+BÚeo(I^N$.ϜIpxTmE:Y\'9\窿]:}+5c޽455Gii)=z79}4555/^Lzٳab,Mw_&/!|EŔ,~b6a(X]÷s"òLkX?>N;0K%*iۯvpwf[__͛={6ńa֬YÚ5kXhc4s! :f۶9s O?4Çw7M˲b5mX Jf`P|l(Xk糏MmDhկKb}ZjNg5u'[8Ԃ/sB_;X]ʁ}>_Jj0b i={6MMM94MgZw1D"Q d 0$`}l:|da_+%yq:gؤLL;ZJq\+q}frjX?y ax-b'{v5 t/wGGMMM=1"477 mضm2Ο?ϫ.))p@/qã?/s[vƯfbkHa]džjhҵ7 ahymm7=4%1v{u&LmRx<"Xʘ:u*Zk,r <3:mmǬ"ѭǫz}Ǵ/EN~.O|aO եT7°>Vm{7ɫ =.No=^ͭ'@]|wuKj +ñcN*g0l0ǔ/<2ma8ib*r&o2j)cs}8("ɯLn%z,^lboR*۷j$ȰֻYWҙnۼE-?g7Kou:[kMII o&[ne֬Y455QYYINN&MlɶmW 2_Xl0L ~AͱN㉢,NSv"(Ei&u]2BTR0ګic/i?TZ=?cCq1rB!86W֠_+aM]Ƕcv)++&1[ _y6[w a_eE.o׶Q<6I9-[_7$0]ϩ2z6֞Z..Sco*trv2Pt\xg#V+]%-zr^tjͽt:'*rzޭ+j8q"&M5}ݬZʩOu1\wx@|þV6Ths^>{]F‚XQc7n:]Mr$ЏC7g'P1+vYKsd:=LSDK[[)@܅]QTwC늪]eeYI8N_٨.|739%miZ}P9ϻ='C)mUm{ ߺ(]_Zw0 |AV6o),,JƌCQQY]]T? ak ~ţ7H8ٶ͂ ĵRiX+׃^+=FR|bɞiT{a/vsz.:e!/kI[ruזtvZSR%233)((z/SUUEmmmR$^[o"s#3.JS 6zBUz6]7I8gjښ*a,pJmftWEW }Am'vJ୤uAHaᛂ!@1,A1,AİAİAİAAAA KA KA K1,A1,A1,AİAİAİAAAA KA KA K1,A1,A1,AİAİAAAH-yŦIENDB`PKjG})$)$/connexion/vendor/swagger-ui/images/throbber.gifGIF89a|~|̤씒􌊌䄆ܬԤ씖! NETSCAPE2.0! ,#dihlp,tmx|4d0IYFʀTHC :Dcs}FH $(1iR$ 8B$fr"dfhlnptvxz|~#& & y$  & %%%%& %&&%$$Fb@t`DOڴyb†$jg" J63A#a2J+i1X4m޺sL`8&$%X`v PFFjHuv-akر& p E LI,Ő*k!lbOx\ϠCMӨS! ,LJL  dfd424윚 $&$tvtTVT$"$464|~|@pH,Ȥrl:ШtJZz+ YHH(n`N`PEǃG&}G({ IkG"Iz|IH{B"&t$ D &[CG& C"' '\ūC D#*D ߢE&F']EEQ'x A@!ۧD iPDFo`n"#}aD"E5r$Ȓ*N.lp!iHă;T!RHo:tʡrbiSnOsZ! #b귀 hp< <h" iT tܥ' rpJ+ * E+[q=u`D1#8Fa֜ЛF2 GN6;@QL!t"$A0ɍ`gnĹk ,ho˟O}7A! 0,DBD$&$dbdTRT 424|~|LNLljl\Z\<:<DFDdfd  464\^\@pH,Ȥrl:ШtJZ]0*Hr,/|~x$yyF& I &H,,IHHD,x y D+G*%D [//[$ C, *BCD-10$C&!0 F*da#ţ=" 'YOpP"o@ 6H @Vhfr! ,DBDdbd424ԴTVTtrt LJLܼljl<><\^\DFD464ܴ\Z\|~|  LNL伾lnl@pH,Ȥrl:ШtJZIPfI!E,I1~գHl<"E1+0C}+mE0"" YfG)"_H)H D2 B2B"B%,&D)-  3C)3'-B ,%2/2GF,+$ CB $C"*+R@8B #PH  vāD 2L8z29зB;} i!"32PAH/`EDx`̚ ,ʓIh790쐈F Uh&i A `O"'D={#̡ KH,1Q$F7q d}2@X bNSMAf]ؖ‚ "lv-۶n"p$ |ȇI%hp !$A XT q($h(D! 0,DBD$"$dbd424 \^\윚|~|<:<@pH,Ȥrl:ШtJZP"pUK^ARD0 CRwKKB 4}D D (F Hz|IvH&I_HF/# C*0l0!0 /CB- +0,G+% C"BdݻF H&(b"w 0`F.\*i`H!R0^\@ITy]E$xABK>0hO# ]^!2 p·F*ыQӋAO"3'=? - X0a!% J, ьEBS2U8e4'l0ނq6CYmVF6mx"bG<^ŇDFpB"dd&Mw@!$h$T=!eD\@P3'@0VF B. v ($&! ,DFD$"$䔒dfd424 ̬윚tvtTVT,.,<><LJL$&$씖trt464  Ԭ|~|pH,Ȥrl:ШtJZ%tp`HvH*T\,GZM$$IB!-G&,((,&D-)_B-$'Ez|~H I-vH!F&"+D * B,##D,%B',E[* D&++/ F%eD (D p!$ACexwo^{/އsBBLO*8`Gx%_0`b2i(R0bp qqD.Hg7w "C| "HJrG88a'<É6X|)I!{xXaGBpP"pB Qh&X`Kp'0(cA! ,DBDdbd424ԴTVTtrt LJLܼljl<><\^\DFD464ܴ\Z\|~|  LNL伾lnl@pH,Ȥrl:ШtJZ,fbA.xYRHKq|Ae0a" #S""0I H0 I"hF2"E1++oEE)3 '-C ,%B2/2G%,&z- 32 B"ڛ~BF)Ͻ-*%FE !8#%X H8( q!N$pa"! »`("B׆' / ᢇG::yZˠFBHeYĥ?4=Yd'LT؃OFP*d(p+Қ-vژ*"&xC-"4|9$דC Ep9lؙCY\FwaAʵ/&sUBC0DpvWi:+^n3E@1JGG,0@I!4q4NRyy$J ! @CE0 tf vfxh(bA! 0,DBD$"$dbd424 \^\윚|~|<:<@pH,Ȥrl:ШtJZجvJvLvJbK`0\fPqH%i%-yH&G bHH{}H~D D (FF/# D- +C,G+%C /B*0o0!F D!E& 0$Lx. +N"1DOLA!2, FPX "<( yo(&ҢEBp!$"Ha\{'SH̞4mHw~pK q@SmIAcWR+" ضW$QA;` h 3ѣdʭ*2# [tCap.@ 3UpmA5h Nd pțqij,Ï ổ \ QBPD^|a|@e WƀRH0XPxL) GFQ^ ($(D! ,DFD$"$䔒dfd424 ̬윚tvtTVT,.,<><LJL$&$씖trt464  Ԭ|~|pH,Ȥrl:ШtJZج &x4ƣ  ‘*F$$IB!-I H-x&Hz|~G&,((,C-)aB-$'D&"+D * C',F]* +B,##D,%+/ F%gD B!&s` iW/޼z/ip p!$AKe0] #^ `ErpCdĔF0SII~NI%E~HB \ 1(ʒsf@_7" ,w.SBƀr`D @S> @ ($! -,DBD$"$dbdTRTԴ424 LJL윚ܬ|~|\Z\<:<DFD$&$dfdԼ464  LNL윞\^\pH,Ȥrl:ШtJZجvzI(X#e%Y%)I"Iϑ8)lnHprtvG E E# D+ )C G) wD B-ªE$( B D&D$B F)FF喥]BCB!2 #r 8!$?#$`d$GDaЁլm`98+rHJ$_^o\7Lnͧ#L`dφ2! $FvXW|Etk$.@sCZ;"k/Rxh@ &@A(NAB#*` Lìg^U4*5܂5\"j D!< agt癠K~Ȋ (ygJ|OIą18P1bz(hA! ,̤DBD촲dfd \Z\|~|ԤLJL촶ljl  \^\@pH,Ȥrl:ШtJZجvzHBq r@F.dH 9'lvtG &!F"'yE$D! %F$qC"'FBGEC FE $FD #$E4kHzdE2 ȉm-@"P!D"UT߱4LH`DžD a|#ƅD%1LIİ2@-h؃:Ct$HwH[ :#DtEj䫸CR `ZEJ$py!T˂-L@>CDV@q-KOfB (vF*.""B$TDxG[MŇ{;9.< + "Nӫ_=;PKjG4Aconnexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-regular.ttfGDEFGPOSZM^GSUB OS/2ӵeu`cmapmagvcvt 9~>Lfpgms#vgasp glyfI; |o(head r 6hhea u$hmtxmsTrDLlocaۈpdmaxpipD name08post;prep!}:@ H@  H ?//+3/2]10+#34>32#".Py3"./""/."&5!!5&%5""57@# / o  ?33/3/]]]9/10#!#J)s)-)r)3@X!   P P  H   ?O   /3?399//]332233]22/]33/3/]9293/92393/3/10!!#!#!5!!5!3!3!!!?RTRNA+RR%TT#@}TTHPPH{-6?@34/))/!!p/<753.'4.'>2]T2f`T !W`e/YV*1[OdCB8JX[.+F3][(B1YSFrT7 !BUnJCoS5 *)ZBSkH!7-&b$9/&qYf3 ';?]<>@3<><>(2#(AA  0?>%7!-????/]]99//881032#"#".54>3232#"#".54>32 #GPPG$JsOIpL&#IqNKqM'GPPG#JsOJpK&#IqNKqL'՞,JHlv??vllu>>uJIHlv??vllu>>uJm}!S@M'JI,IH G6AGB B6B6B;54.#"2>7%4>7.54>32>73#'#".!4$;V8/B*Vd:bTH }4P7#B`}(MoG<-2^XS[02Tm<`+" )5A'1`l|Nis="AAC%#>@F)$=,Y(6!?HU86[A$NzdV*$MWc9KwS++SwK@m]O$73#.R$JqN%GjENqJ$1}]2w^Z=@ ??]210#>54'3$KqNEjH$NqK$1|Z^w]Rw$@?2/]/^]]10% '%7++wo`f`Fof )@   ` ?32/]]22]10!5!3!!#}}{?y 8@ +  @ H_ //]]+32]]]10%#>7j'/36z|{8=}5RBy@ @//]105!RѨ5@ 4Ddt H//+]]]]1074>32#"."./""/."o&5!!5&%5""5@ ?/382/8310 #!Jb'&@o))o  #ss??/]]10#".54>3232>54.#"3qvs93o~wt:BkMMlEElMMkBݱfffe貖KJᗖJJ5@!@n~ @ ??/^]]]3/3]10!#4>7'3ǰ`+baY"y{+`#<@ #o%%"o! " s"t?2?39/]3/3]3/310)5>54.#"'>32!p^KvS,"?V5_Ef(\jvA`l;5]K}QL;Z? M54.+532>54.#"'>32.StGAʊmUW]\W)5bYQ~U,$B\8kJ\&]n}Fln8`IxX9 `t@"-.2(JlCDa?(Jf=4R9C6}6)6a? N@, Vn  w_ t??39/322/]3]]9/]33332/]210##!533!4>7#?հ]{  eHH0d8{uf"11.*N@&o,,'$$(h#Y###@ Hs't$s ?3?9//+]3/]]333]3102#".'532>54&#"'!!>!cHDŀ3c[R!!Ybc*O|V.??9Z7' i7lir~C $ %NvQ 9]q +?7@ 1n "AA;o 6u,s's??9//]2]2104>32.#"3>32#".2>54.#"q5\ƅ./+#X+ZdC* 9L_;_l;>tfdJn#####  h88Y8(888H88C&CVCCC-s;s??9/]]]]]99/]3/]]]]2/]]99102#".54>7.54>32>54./">54&5TqB(F`8:oW5Cyfnu=-Lh:1V?%Cr DhHFkH$'If?~j}#>W30U?$~,XXClWEL_vI\h86e\Kx`JIZmBWX,5Y?##A\84TH@<Tje9R@34BT6ejj)=5@9o??/n   4u*s%u??9//]3]210#".'532>7##".54>32"32>54.5\ƅ..,#X+f+ 8L`;_l;?sfeJ%.;rjrDNG(TWFoN*/K`0CkBf'>@)))) 4Ddt@  H#/?/+]]32]1074>32#".4>32#"."./""/.""./""/."o&5!!5&%5""5'5!!5'%4""4?f a@/"""" d t P D ;  /   +  @H_ /?/]]+32]3/]]]]]]]10%#>74>32#".j'/3"./""/."6z|{8=}5'5!!5'%4""4fN@0@@o0 Pp?/^]]]q33/]]29=/33/]]10%5 d!ff\@= @ {hB9/o/]]3/^]]q/]]]]]]]]3]2105!5!fdTffN@0@@o0 Pp?/^]]]q33/]]39=/33/]]10 5f dBlfX%%';>@!2(('F F=/= -7Q?3/2/^]9/]9/3/1054>7>54.#"'>324>32#".'B20D+9U8SF?Qa]h86P64B&"./""/."%9\PM*)CEO50O94"*;3`WCiZT/-C?B,&5!!5&%5""5mJWho@?X`'''FF'N1 j@j;@NN, [d@6S@EI/3?99//^]^]322/]]q9///]]10#".'##".54>3232>54.#"32>7#"$&546$3232>?.#"%9La:-I4!6GY5MwR+;ob-ZRE"+.F/V{ZO=wod+V؂fv7jeU7N2M*Je?>}qaH)2A#%B18eVezD`5D(=hNݘOoR&,fEeՅw-SsE :^x@$FFII@ H/@_ H?2?9/9+/83^]3/8+]q39=/99]]99]]3310!!#3 .'ߢg;Dj4 Z$*[pg1111$Zd0 #`y $`"`??9/^]]92]]]9/]]q210!2#!32>54&+!2>54.#ÃB'JmEEyZ4A{oTrF XwI !K|\'Wg>lR7 -OxVdm:J;Y;xh(He=8^C%}#L@@H ` p  @ H %%[f$!_ _?3?3]3/+]]9/+]10"3267#".54>32.k{C;vvYN'NUa;LWlON?'QډۖN#ln,* . &@ [gZd``??]10#!!24.+3 `_B~uɢ ^\ՊC$ B@&g  Zd _O _ _??9/^]q229/]10)!!!!! =< p@@8 H  / Zd _?o@H@H_??9/++^]q2^]3/+]]q9/10!#!!!!}+7@++ )Zg--[ f,+_$_$_??9/]29/10!#".546$32.#"32>7!7pvKV_ oXH$SX].zB7x,I>73 ii,*Qډ؜V  =@# Ze   Zd _ ?2?39/^]2]]]210!#!#3!3պfVhRd W@& + { T + ; K   Z@ H  ?2?2/^]+]22_]]]]q10)57'5!df))ff)h)H{s/@`p/Z    _/?/^]3/]]]10"&'532>533L"N-%K=&;i{ 2XD^ie1 d@- f   /Zd  H@ H ?3?399++2]]]3/8^]33/839]310!##373=yr%3#@Zd_??]]31033!Ǻ=/@69 H9Z@ H H eO  @ H&  Z d H  H ?22+2?33+322]+^]]]993+3+2]+210]]!##!3!#46767##EAJI?9XJw4=GIQ@)(Ze'   Z dH  H ?22+?3+322]]]]2]210!###33&'.531MLA9LLJ CC> }q'4@ [g)))p)/)_)[ f(#__??]]]]10#".54>3232>54.#"qQ훣LLQ4krrk22jrrl4ݩllkk뫉ۙQQۉڗQQ3F@,[(8Hg@Zd`0@` ??9/]2^]]]]10+#!232>54&+37~Ϙj~3232>54.#"q1_]+Zyg3)LLQ4krrk22jrrl4݃ⵄ&^54.+d 1Qh7Z~Q%)SW\W]>q\#EgEHd@h3B@'Y##Zg555`5?5*Z f4*'_$ ` ?3?3992]]]3]10#"&'532654.'.54>32.#"EsoA"W`f2Iz]YU)@tawJCAXzFsT[\/aj7#"xp6PC?%#ShTX_2-#+q`9SC;!$L`~^@2  O  0 Z@Wgw@  H_??2/+]3/^]]2/]]]]]q10!#!5!!q^_/@ZeoZ d_ ?2?]]]10#".5332>7BɈąDYR(LrĐRMzH6bQ l@ `p@ H/@ H H @  H ?3?33++?3/83+]3/8+]39=/33103#3>7'*.Ja[JJa*߶HH@HHH@/H%D%%$%D%T%%% p@ H,o,, ,0,,@ H H %% H% H%?33++3?333++/83^]]]3/8+]q39=///]^]q3+3+3+3+3+3+103>73#.'&'#3>7)   ~  8pi^&&Zcg1rJ3l/7437/p6\.cb[&%blo1` @  7  8p@ H   /  @(' ?2?399]]/822/83^]3/8+]q39=/3]33]3/8310!# # 3 3`ZLN[{/L7s@  @ H@@/OZwO6?3?9]/^]]]92/8]]]33/8]]]]]3+]10 3#3TBB/R 8@ g  ? O f __?9?92/2^]22/10)5!5!!TM:ۑ9&@??/]210!!#39k1!?///8338310# J3$@`p ??]2103#5!!3jϕ)%?/3/103# )f%d!NH//3/10!5!NR! @ _/]/10#.'53x#RM?+.0SXQ"QQL^^#2T@)G#U44o40H @ H H V3P*R$P??3?9/22/++^]2210!'##".546?54.#"'>32%2>=%!BN`?EtU07Q4SB@Jdfa0/=hL+ZzI a-A*'Q{TECZ70"(8)Yb&MuOc 9Q3\V?/8-HW11@ I%GT0*P  P?2?3??22+102#".'##33>"32654&^m<32.#"3267ReJLfN268<:Q66{?Ֆۉ>"  %q04@&GU22.H V1+P P?3?3??]2210%##".54>323&'.53#%2>754.#"T;M`<]n<32!32>7"!4.`nHBxecn;L3WQL'(MQW`r 9XJ҇֕NGnq ۜDqP,p@N`?OG/ OP ???^]32/^]3/]322/]9/]]]10###5754>32.#"3-U|N;c'/I((:&?KD`kT# 0SAh%^?R^@ 2SG7/`7p777/7/'HYG@M H  0@`````@'@ H'2 7.5467.54>3232654.+"32654&#"&/_],!)8]Q$A͋kj5'BW/*6@E+G12ba%O@;aH7ZA#L?)\lcdgidcjJq#mEL^5  (!/Pm=Xa4*PqG<[B* R5=Y*?Q`3Yb4 %@.sl.:! ,M`spow{tx2@GU` G TP ?2??322]10!4&#"#33>32\ipQnC ER\0Â4f`2+?*3u%@  GTS??3/22]10!#34632#"&d=-'?,-=J)<6 +:98u!.@# #G  T"S P??3/2/22]10"&'532>534632#"&B0?6#.#"Hm=-'?,-= 'A3M{W/_<6 +:98^@ D@ H/ G T @ H H ??399++?2^]3/8+]333931073 ##3V%om7i%RZ6d@ GT??]10!#3d^,e@?# G   g w  G,U... .P..GT-#P( ?22??32232^]]]]9/]]]]210!4&#"#4&#"#33>323>32diIfAciMh? BOY.x&IW`2Â/[XÂ4f`J+?*X^/D-3^0@GU` G TP  ?2??32]10!4&#"#33>32\ipQnC ER\0Â4f`J+?*3q-^0@HW!@!!!!H V PP??^]]10#".54>3232654&#"-C}ogGC|ogG'ՑLLՉӑKKӈ?^06@.HW22& G T1 P +P?2???3222]10".'##33>32"32654&;`M; :M`<^m<754.#"".54>32373#46767#5LiAAlQf]n<H;?hK)9GX^3_QJ+P=%Z?^5H@-%GW7?7_777,G V6&)P," P?2?992]2]]]310#"&'532>54.'.54>32.#"?:m`m;LTY,A[95\HHsP+7dVaH?AGfb8^FHqP*-PxQ(#");$212#4./7#".5#5?3!!-*# (04>jM,Ni?  Ne}QNabJ0@GU`G T P??3?3]210!'##".5332>53u ER\0[\/joQnC+?).bi=4e`:Jm@ H H H@ HP/O@ G  ??39]/8^]]]3/8++9=/3+3+10!33>73w  ǼJ!hl``lh!cJ/ù/@ H/ H' @ H  H  H@ HT''@ H[  H'  '-.H.@ H...1 1011@-  'fv?33]3?3]33/83^]]3/8++39=///+]+]3+3+3+3+3+3+10!.'&'##33>733>73   翃  Ĭ   h-24:>?:2j%J-ig[Wa_!k"\_XWhm/H#J @ 6 9k{W:JdtX5E   6@H@Hk{W:J  0        ; K (    ??/]]]]]]]^]]q]]]++]]]q9=///]]]]]]]]]q3]33]]]]q10]] 33 # #u3fL J"d"H@ H$$$$P$$/$O$@ "#P?2?333/83^]]]3/8++9=/331033>73#"&'532>?  ǼNAVtP4L@#0F4%9J(XXR#Va^!c'QZ1 ,@)R5J l@  H@ H ? _   HH?@ HO HO?2+?2+/]+33+]]3/+3+]310)5!5!!5 }D='@@% '#  #_)??9/]]9/]332/210.54ᒑ4>7-A(M_6}}6_M(A-wssw0=# !GnNNgVVgMNnG! #=0i{ zj-@0@p@??/^]]q103#閖3)@@% $$$# ??9/]]9/]332/2104675.54.'53"5>5wssw-A(M_6!A`>}6_M(A-;jz {iL0=# !GnN4H-VgNnG! #=0fJZ#<@ %%   @H  ? O o  /]3/+2/]]10.#"563232>7#".%7-)<;8d27C/%7/(<;8c27C !,l  !,l ^A@ H0@ H /^]//+3/2]10+3##".54>32y3#..##..#H&5!!5&%4""4%Z@%F %'@'H 0 @  s!s@ H??99//+33/^]]29/3210$#5.54>753.#"3267vnLWb45aVH.58<;Q6 KljˈK !  %D#(u@ o# H@0 H**!@ H)!u /"""""""""ts??9/]323/+3]3/++399//^]32102.#"!!!!5>=#534>jBB8K0RY@+ )DaCՉDW_2{#7@#. !p99 $@1 H8  ) 3   ? o  /]]]2/]93]23/+]2]3/]9/]210467'7>327'#"&''7.732>54.#"#b/l<7.54>32.#"#"&'532>54.'.7>54.'-:KU7dVaH8AGcf9_FHqN*)4EL;l`l;LTY+E]73^LIsP)?eH#)!AlR/&)3S@-&rT=bD%( ';9.,/ANa>4UD1&mNGoM(! '3--1>NdY%?:7 $.8"&@;9-:3 j 5@! @P 0  /]]32/^]]104632#"&%4632#"&38('::'(8w8(#:&(8s6015522560 &522dD%AUj@C"""&L444WB& /`p-G;Q-?/99//]^]/]q99//3/10"32>7#".54>32.4>32#".732>54.#"{=^@!=_C69815<#fe36id?;>4a6ahha66ahha6meꅅeeꅅe,SxKNxR+  BzgexC!ha66ahhb55bheeꅅeeDB-N@/-///O///$ `  .-'?99/]2/]]2210'#".546?54&#"'>3232>='/8#+H4c=80Z*03u<}w3D)2*":+R# 3M3flH9d$jz:9+3-,A,1Rs `@ P`   @! H    /3/39=/93333/]]+299//]310%R5uu6tt)NNNNf9@$yVK8 ?/]]]]]]]]]10#!5RBydD:N@}R  E---P;/`p&@4J&??99//]^]q3392/]q99//]^]q929++]10]32654&+###324>32#".732>54.#"H[OSYF-9C5*! _騞6ahha66ahha6meꅅeeꅅeHEJ;0K9( nW%G8`}ha66ahhb55bheeꅅee//3/10!5! {V'C@, ))0@ o #?3/^]]]q/]]104>32#".732>54.#"{2UsAAsV22VsAAsU2{4F((F55F((F4AsV22VsAArU11UrA'E44E'(G55Gf :@!  ` ?32//]]333223]10!5!3!!#5!}}}{1Jm@@ O   @ H@H ??9/+3/+]210!57>54&#"'>32!m9H(B63]-N6RUC;"A@2&^0A!?[92VU[79h0a@<2_222@ H''@ H/_&#, ?3?39/^]9/+3/+]3/9/910#"&'532654&+532654.#"'>32NQEXX(S~VF{9?5bXk`bb\T#/;a3E=DL,EiF#NjjN73#//*?MQ#yLQQ"QXSJ7@" G U `pGTP  ?3???2]21032>53#'##"&'#3djoRnC 0gHj#4e`:ST.*&(#U*6qf7@!0@P    /2?/]]9/^]10####".54>3!fxy=U_m32#"."./""/."&5!!5&%4""4#9@ @ H //9/+9/]33310#"&'532654.'73-1GP.?%Zy9":+all+1# s):?J4@!O@ H 0 ??/]]33/+]103#4>7'3&^J<<8(I`B.@ H!! ?]+10#".54>3232654&#")MmD?jN+)LmD>kN,:KVUKKUVKmSY//YSSX..XSwyywxssTs V@/    @     /3/399=//3333/]]299//3]10 '7'7tt6huu5eN\\NbeN\\Nb?&{'J0@?@@]5]]5]]]55?55,&{'5t3(@@p@]]5]]5]5?5&u'?<@'8p8P88333d3P303 33L]]]]]]]]5]]55?55DwD^';D@2(('F == F@H ''-7Q/3?2/9/+^]9/3/103267#".54>7>=#".54>32P'A20D+9U7TE@Ra]g85Q64B&#..##..#%:[QL*)CEO50O93#*:3`XDhZT/-C>C+/&5!!5&%4""4s&$CR&%+5+5s&$vR@ !&l%+5+5s&$R&%+5+55&$R@ &,%+5+5+&$j!R@ &)%+55+55&$}1@ P@ %+55]]]]]]]55V@* Z$4T  g@  __ _ O    _?3/?99//^]q2/8329///]]]]}32310)!#!!!!!!#V%˺=ul;<}&&z O*$ %+5s&(CR &´ %+5+5s&(v?R@ &J %+5+5s&(R & %+5+5+&(jR@ & %+55+55>ds&,CR & %+5+5Rs&,vxR@ &j %+5+5s&,R@  & %+5+5@w+&,j R@ & %+55+55/]@:[g! !Zd _?o@H``??9/+^]q3222/2]9/103!2#!#%4.+!!3 /_`B~uP %\^`ՊC$5&1R@  & !/ %+5+5}qs&2CTR(&.( %+5+5}qs&2vR@ 4&X(. %+5+5}qs&2R@ (&0( %+5+5}q5&2}R0&1? %+5+5}q+&2jR@ 1&(< %+55+55-{ H@HH H H HH@0H@  P   Pp ?^]q2323/]3333]10++++++++ 7   'i=Bh?fg?i>gf=g}q&1\@:)*'[ g333p3/3_3[f2)*-"_  -_ ?3?399]]]]9910#"''7&54>327.#"'32>\[^Q훽NZa[L^BP.0C0rGrl4jX/rErk2c޷lGNd*k*&N QڊTQs&8C=R& %+5+5s&8vR@ $&H %+5+5s&8yR&  %+5+5+&8j}R@ !&, %+55+557s&<v1R@ &c %+5+53<@![g Zd``    ??99//22]]10+#33232>54&+37~Ϙ~54.'.54>54.#"#4>32+?K?+'F98X=!8eUa5AHL%8Q4+H8?U5)>H>)!W~Q'#"-@($;8:#(DCF*6O?6:C,*>)0SANhU%&Lt^!&DC3&93 "%+5+5^!&Dv5@ ?&39 "%+5+5^!&D@ 3&3;3 "%+5+5^&DŽ@ ;&)32>32!32>7#"&'#".732>="!4.^7Q4SB@Jd+3gal9`1UNJ%'KOU1>"L_tJG{Z4aO=hL+ZzI n 7T3ECZ70"(8U]U]Gnq rs6U;'Q{R\V&MuOc 9QcDqP,qo^&FzB /&  %+5q!&HC(&.(%+5+5q!&HvR@ 4&v(.%+5+5q!&H@ (&0(%+5+5q&Hj@ 1&(<%+55+55g!&CU& %+5+5B!&v0@ &t %+5+5U!&@ & %+5+5%&j@  &%+55+55o-#'9t@F(H# """ W;@;;;;2H V: #!!-P07P??99//]]339^]]9///9210#".54>327.''7.'774.#"326-C}ohG?vif+xZJ(U/FAz;JCoO,"FnKMmF!!GmL=ܘOBww~A;<vQr7{ H,quAݰ8kR2.XUL}Z1&Q@ !&"0 %+5+5q-!&RC &״& %+5+5q-!&RvP@ ,&N & %+5+5q-!&R &( %+5+5q-&R(&)7 %+5+5q-&Rj)& 4 %+55+55f+`@0-"Vf(8@( H'  `?3/^]3/]q/3+3]]3/]105!4>32#".4>32#".f)*  *))*  *)#/ /#!//#/ /#!//s/$-\@;'(%H  W/@////H V.('+"P +P??99^]]9910#"''7.54>327.#"4'326/C}o}bDP?FC|o?q1DP>EK-D'rH-'ՑL5mJHՉӑKlIIцT3џc{!&XC&! %+5+5!&Xv`@ '&W! %+5+5!&X@ &# %+5+5&Xj$&/ %+55+55 !&\v@ /&g#)%+5+5? 18@/H W33' GT2,P!P?3?3??2222]10>32#".'##3%"32654&d:M`<^m<73y3l46j3yDC;;CE"a77a"LQQ""QQLm1@@-?O_0  ?O__/]^]/]]10#".54>324&#"3261#=T12R; ;R20T>#u?12?981?3Q88O33O87O45<<55<<8@#/  @H@ H /]23/++3/^]]10".#"#>3232673(OLF -0h!5J.*QLE-.i!5J#+#5>73%'.46z|{8=|5P %@_ _o?/]/3]10#>7B'/37y}z8<|5?y 5@ H _oH?/+33/]+10%#>7j'/36z|{8=}5 b@H_o_o P`p_o ?32/]33/]/3/]3]]]10'>73!'>73'.4'.46z|{8=|56z|{8=|5 b@H_oP`p_o _o ?22/33/]/]3/]3]]]10#>7!#>7B'/3H'/37y}z8<|57y}z8<|5? ~@Q 0@`pP`p_ _o@ H ?22/+33/]/]]3/]3]_]]]10%#>7!#>7j'/3H'/36z|{8=}56z|{8=}5mF@$/_o_ o  @  H/]]/+]]]]104>32#".$?V21V@%%@V12V?$Gd??dGFd??dRs<@ H?//9=/33/]]+210R5uu)NNRs?@( ??//9=/33/]3]/]]10 '7uu5eN\\Nbh@ ??/82/8310 #h՝+J J F@*  _@ H   /  ??9/^]32/+]9/33210##5!533!5467}y}  oC*c1 %*(iS/ZFxJ&V 8rtF"Jf " ^ P  \ $ 6j|X,B2Phd h`<z&>.n&TT v!!!"l"#Z#$$F$N%%6%%&&&''B'|''(B((())))))**(*****++ +8+P+j+++,,.,F,`,-H-`-x---. ....///2//00$0:0R0j0001D1Z1r11112D222333233344P44445(5\566~667,7J7d%_<O\Ys'7+3h{fmhRh=hRhf?R%hbhh`hRhhhqhZhjhj%%?hfhfhfh%m}y9}R+H}}'h'`7PRmm3B)J?^qqHq%%+qq1Z!# R=h3hf'hhDh{hhy3dDRhfRdm{hf1=q%#?BT?,hD}9999>R@y/}}}}}h}7?^?^?^?^?^?^^qHqHqHqHqoqqqqqhfs  mRRff??NRNR  s&33f @ [(1ASC@ Ds J x ~1    " : D 1    " 9 D@EYXUTSRQPONMLKJIHGFEDCBA@?>=<;:9876510/.-,('&%$#"! ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y &QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,(#p(>(#p(E: -, E%EadPQXED!!Y-,I#D-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+)#D)z-,Ee,#DE+#D-,KRXED!!Y-,KQXED!!Y-,%# `#-,%# a#-,%-,F#F`F# F`ab# # pE` PXaFY`h:-, E%FRKQ[X%F ha%%?#!8!Y-, E%FPX%F ha%%?#!8!Y-,CC -,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,KSX%Id#Ei@ab aj#D#!# 9/Y-,KSX %Idi &%Id#ab aj#D&#D#D& 9# 9//Y-,E#E`#E`#E`#vhb -,H+-, ETX@D E@aD!!Y-,E0/E#Ea``iD-,KQX/#p#B!!Y-,KQX %EiSXD!!Y!!Y-,EC`c`iD-,/ED-,E# E`D-,E#E`D-,K#QX34 34YDD-,CX&EXdf`d `f X!@YaY#XeY)#D#)!!!!!Y-,CTXKS#KQZX8!!Y!!!!Y-,CX%Ed `f X!@Ya#XeY)#D%% XY%% F%#B<%%%% F%`#B< XY%%)) EeD%%)%% XY%%CH%%%%`CH!Y!!!!!!!-,% F%#B%%EH!!!!-,% %%CH!!!-,E# E P X#e#Y#h @PX!@Y#XeY`D-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,!KTX8!!Y-,CTXF+!!!!Y-,CTXG+!!!Y-,CTXH+!!!!Y-,CTXI+!!!Y-, #KSKQZX#8!!Y-,%ISX @8!Y-,F#F`#Fa#  Fab@@pE`h:-, #Id#SX<!Y-,KRX}zY-,KKTB-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,Eh#KQX# E d@PX|Yh`YD-,%%#>#> #eB #B#?#? #eB#B-,zE#-@ `@+ F3UU0U0o0`@8F/?O_o@FQ_+s@ F+|@ F/?O@ F/@|P|t t0ttt oooouooKo nnnnKnU?gg/g?gg@fPfff?eeedd@Od Fa_+`_G_P"[[T[[I[;[ZZkZKZ;Z3UU3U?WW/WVFV FTF@mT FRP+?POP_PHHHeHVH:HGGG;G3UU3UUGU+oTS++KRKP[%S@QZUZ[XYBK2SX`YKdSX@YKSXBYss^stu++++++++_sssssssssss+++++_sst+++_ssssssssss++++_s^stsst++++_sssstssssststt_s+st+s+_sstt_s+_sstt_ss++sts+st+ss++s+++sss+^ NuJU}qq}}winfoxG:x Zy mmm{TooZ   *"  ,L x TDroid SansRegularAscender - Droid SansVersion 1.00 build 113DroidSanshttp://www.apache.org/licenses/LICENSE-2.0ff  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~uni00AD overscore foursuperior  ,latnkernfpp ""x XR.PF@:.  0 " T j j $ X ....lRRRR0 0::::D $')) ,, ./ 257>DFHKNN!PR"UW%Y^(.4>CIU[abe,$,)7R9R:f;)<R=)FGHJRTW)Y)Z\)\))))R))&*24789:< &*24789:<,79;<$,79:;<== = )")$9:<@)`)==) )&*24)) &*24789:<33$&;<=q$,79:;<=7JR R")$&*2467DFGHJPQRSTUVXYZ[\]qRR $>R R")$&*24DFGHJPQRSTUVXRR>f f$&*24DFGHJPQRSTUVX]ff ) )&*24FGHRT))DR R")$&*246DFGHJPQRSTUVX[\]qRR f fYZ\ff) )J)) ) ))) f fDJffR RWRRR RIRR ) )R))= =I==R-{% DD"&*24789:<=;IWYZ\' DD"&*-^24789:<=;IWYZ\% DD"&*-^24789:<=;WYZ\'f f DD"&*-^24789:<=;WYZ\ff) ) )&*24@)`)))) )&24))) )&24))) )&*24))$ $,-679:;<=@`$,79:;<=$0=DRR R = )")$&*-02467'9):@=DFGHIJPQRSTUVXYZ[\]`=qRR = ===  o oI[][] = ="FGHIJRTW== = =I==7)$,)7R9R:f;)<R=)FGHJRTW)Y)Z\))))R PKjG3{:)gg=connexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-700.svg PKjG]$a$aBconnexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-regular.woffwOFFa$GDEFGPOS$ZM^GSUB  OS/2^`ӵecmap(jmagcvt 9~>Lfpgm 's#gasp glyf Jo(I; |headX36 hheaX$ hmtxXLmsTlocaZۈmaxp\ iname\80post]\Y;prep^k! x<QFm۶mkm jճ}g LCV.& ڂY%& ?-ՖZ^]_q%pq㕘C?3/X1;5>|klr?˲_59HkXo]^ZVcouj:ݱ/_^㔅Ό2-C5sMU$~# F# &uROX46iCsZцΔ')O_PCNuF1Zc2u6ݴd/aNЃӜW)շyi<%y#fѐr֣ i'= Z3AXFjjZQO4 :;X~9+Xvc7VhN覇^ ? Gy")xRfSĩ8]\| kYz6na+خg?G y' =jֲl`Vaq?d|؈FcΏtgGGV~O-3ZꨧFX2q9+Xǹ^l2T;ݛtV6Zu@#M8C]t#[Y?5e&Nj!f\ۮ8 2Ν)usy&Ś}Sߙ3xwfTl%Œ B^uz<d%| )y1%K2\jklPzh 3ڥn}짙Zi>pNnz襟u 1̈r뤹Hn2cV?3ӫᄕ7Eʋ)T, u\G= 4גjf7{>M>ކbrf/Oy,<)TVD1%K2\]8oS>4B+mt]tC/ daNmҷQVySBSZi:颛z'FN6%d^s#BbJ.rVoUWG= 4҄'7*f7{>L N8WE7=πAfDnIjΪa6#$~ƅwPi|6G#ׅiT.vc?}4~<˥W+>0qoJkNj\߿W?Я+} ;eT+g7 }_Rfw ++;s3̾E]9ȕsf] duB2 NYNK|C;ٷe#e\8yYIGg!X~#;Єe r -z&a)OI;IK]fpծ ;HIߩޛL[DLf'p3czo)M1#[X`0|\]oc_1{dCnLC9z!PvŁ/A_c; #_P,J6-F;tE7=ҏ|Sѥ??&$9&;߆ xc`fQc:՘QB3_`HcB4:;3\03Q``cbxc```bf `HK1E32ctGADAJANAIJp9a %HO﫿/l~kL{ ';#xlqo6kނy1f۶m۶F XQfý]ijZ}\4 'hA x꽯̰7lSy:ҁwp䤳-^06hr^E;_̷F0?yB/0̵;{&ކ=&θ}YJ{lkx^׼w~}VD{U.PJJrp5>%?q\7-SxupQ ?+n܁VP"<˩ueڬM/Hn_vLu$;X1|IoH=8l6>u$UX; C_]/`Gun<]R6yI2p6CWxbLw@[eA-Yu1|a W8!>;z(4##=<}Չf J_N1gC;̣<ά'1xdP*,6z Wf'Qu=P;k±r,P u׳ tStr4`*Jv @2ZG': VGI $H$-f|x q7ym4-Y .<&" @Z rz{z?bY"E.]\qﴜgVD37p_7$Gd@SrXmTBD<ڗ+*},OY:%\W6 AVGyQF5$N"oj5mJlajSYbElє<9w%c\0g=r BQZL z_' 쾐ipc8dvCj3 pYE-yCyTȯ/(ucn5SS~觾\s?C۲;q;JSNq|ښ%Vzwgld0xnb1Usbs{99gWrTz>_EcGv{/9B -JԲ[q3,q 5Mצ|Yhj5Pz?vx| \SWsB6B *KDDETqmmXmS.t{]cUg}gu^;t?&(uˋܛ{!{at?n~ @S_ApB¢&%׈k렋#ܱKQ@~Ft>W^ IE#c^lp0CM ּRwN4j͋K(ꕂʀ,UIR^%/v ,"N~CGmj#"wcP9d9*C|_6z HmEpIѵE,CFÍ|BBrrvGCp!8y3`8j6yMө;5Ʌu*NCafΙΤ3QTh$H1eQa>?1QkPV%EF([e@dl6LzwHӔ"s ] \o&cn8ĶQHt'F riQ0T襄\-h†h=GEE}|#!Q^_]XpIl[JU /a0%}>og_M*Jx5 (&fhMD@gM24~G/o72 }4?j,o-XIC.\%TPm^p6yXA^01ַPXZ]gJs|/.=j̐ͦEvWڜc:$rLyyꗎS|]EBT5·l6͙ 8scǬp({L^i0+{=| ]<()OB$r]?;0ShZA.}oL(桑,ԴV56շrIԊb*.'!9ߓy85Ǯgڌ(z>N3Y,1IgQy=$t^:oR2 FRI#bgC,X])|"4j@D D)OI\WyJSu'չTzkV_}In΅v,.u;3U6vouM =TP11(ص#*<'T-nʿq`ϔ y^$2oĺ9=:>TZ\OДD) ]DaO.+6)*">#{,(' U_ӳ//P&4#FL0#XJm8tPvll[[}ӱ6 ,.5w(ߟ0^8J __HA0;gmxvd{ulE pg}o7E~ Vd@ Oaİ@T@Ǣ}@#=!oyGmpcMz`Mo>>== ^C p{ iQQ)AP?K>AG)tFȋY)]hAI[)Ž}#u}LoٗޖS<܄>F:Tnp@ܺAd[/Y"H":'"c 9 ٰV qU;n֖oz6MTd[B 1Iʀm.\7~~o+.A1@z 4 co !"[#&XU !2IĐ XF./cE?8M#]SzdAaTyQTa?MFѵw"g:+ŗ 6hA57;lۿs ~ٷEYsg-ԬymIA3>KͼqaN;uD^ɳ¶-Ӗƽ 5ṰTmU9D9HCߑ(V$M:'@!;s^-8&Q,P pe(苢5{MAS(L (d=:އ8q6piИ8N&p #$!?"zG,vIDD=v^i (7o &R7*{fH`+Ykk##mv5pHhzq'i:E!.ұvǞxINݵOvl۴MR4oۂSRe-;W(~Ey^@$`_G22.TEVl\X7Cgy_ZMh y`lQS\c-ۥv(\j\6 q.we kjj5(hi--dU ]6v_iʵDh&3! &WG W^~dRU OM\ٽwcsT-7=3JWN-Z5̡l\ ͏x]0=>p%{WT-ΒY7r}3{5/ر*Ń%5ɄP^vnBv+F+6h,!a(([~?W\vS6Dz1gr$JG*-iJc,"p18n"KY(~x(5)%㛞Z~x-i@$3V7@ns~ci& oZ=9 4#& nHӍ\hhW"Ϋggx2||%e0F<2ba !Õ!PU3ȫC~4FvNAuzܩizӃOc t>d2@.~ʱf&CyoB<՚L|P,;Hu *H'0چpk8@'@Ft@ AJ/(3Q頿!*T**_$!80'*hs|EK "V'/AC +4#E(xϣ_00`@Q 1E}%Z@!0tݛڷtxaauݢf~wn A3= RCLB4Иg dm6U0"*y"u98ڽ(XJLf\F`1+yk7#ubiMΪ .=eʲ9S] ZVvGKZL b ioYVD|#9`[3QGV'VC]:u͢y0hOrA4sUHbLOO!>5Dt 9MMA0NOxWU:1@.ؾ9r1_Ufٕ8(M -SKfV\պr湑GΝp"Qg7XOY4b¦+R98{e`&'hr:Q~aK!2Ew3\eUՕDٲ"`b 0]}#?n[7}MM[?vS@pL`ַch\;Zѕ̹guSInQݍ+P\PWo 6g`pCʿ #!;h5 ()|aeW@M2ylgt,q97,: /xdNG|{tq%uHDWk+J- G0qeQ(}nKU~&XHp1ToY1>7y Jo>Wo+X>KqٜkѬ18WOyuXp{xv*lHЋOzPq U$+|q6.c$:̝=>>t8>p?;C9xC {-Hh=ޢHk=׭N?KO|z*?'@EBKI29 t"w:@ Rm0&xpCС"nP+.%[`¥Flm :BNaQ'bt9 SA2ՠҪs:JB ~XZk-FYU_1%g%X7h%x  (ˌXJI:zU&[ĵ>Lά`ɚ5?Mso?ۣw遮.3@#hFض 6AJFW5cL  JH-a2&ved0׳e\շqX}ۏnw'4>{ȵW[7v;gzbO*G5BjO 'e CTwu(V2ѢFѸ60';?0n}ޛV|_6f/{gن(ݚQ]F*1iԩu X%:E,j|`Ҁ A/q}zOzyy$ŃRn)B T7_FQsFXVgX pƴ h]+޷{[B;?5Z7%Lxz?=Y%TS/ZQyR%NUBC)|x Rj yCK+ΜPeBP`d g, fy//!?>rl馼=3o[c~Q-j[Kӓ o;cS%Q}郫y/H> U-Ppow/s V|٘RoOݒo"OČjxC sԯͰ؋]T,+fLE2eqO,đm&'o~"uQ 9XR]G\XrW;4 2Yp9 L" i;F~sdB]l'ξ#E!P^w)=tmB"XP 6Q0`N!!<cQSRZ^RcbF@*GhefHv%%2FOϤ?L~ aԗ,t3mm,E('!p$WHF^FX3C@ {ΓNGQn*'N_ȅдPw]$^=2:3{j QC P<\ˊT>/vj#/C B-!cF&jό8.9jJ Pt4+o4/qP^BmDhu+ D|=e8diCVj5._Oo9dyա|fêkVki~V^..o/fв٘H)r{£H (BU1:B{ZSܦT@- dW!T*mjXqu O4pҏR]阻 CǫxN|Gۙ*)DZT='~"E1#2Ѣ91z7dN*8jsmdt/332Iigc5%#ųv@t~W˩TC VeFz/J2Ţ 0LyHb7~m|61>gDU[A "hz-Fe/{\ޯw9(ށ` xDX 83h-c N|', +AOS j%"~!T9ؗ^}}"\i$ !? ?S?,`Cp{#qxBf*pIo9IÄ<[r$f!Ȟ A5bD f3#ibR1w.-ݓ> nʵCQkp~b eI]αKo$zS2G񚓣]Nϔ;hG6guikQ!++bU_M!@dkR;R/{cꮊy5'.-KGVGy)pז'-βšEw.̾~5"풗dOYJc-ٵobXw}d: G}3 X>'/YRk: hMyM+3k Ci+H}K¥ZTjREr3?ɷn.;rҠe,/rEՠݣM2[DŁbeO.(k60!4px^2JQ zuۨEH!Ti 'Ac#4賄be$fvR$s;Já7G׽UnbnWW?T>rB7v;N4DԚCS3nQmӇ ū Z_,^Pc@ǰ7K{Lu8\OTT;jJh_ ?"̮Emg9$&}a4mfaY]bى3*Y09V'̭ˉU4Ǯrն.yi^vv~luuDDIҺVzTǫ[Mj(nUsă==UEb>OR2Qjv>F%3|׈4^|uڻ7-ͱV.I&7uFYdiuhFrc(鼱0#EuXyo[2c][=`Ei㭟b\@KQ_7LJV5c3(XJ7$ArsVuj씳L#[ESP&0v\2%UW.~衎U`M *rS֮\߱tYf\րsm(+pϕrS#6nSo4OQ=ywcGzwP-sItlRċ¿oke2кW61Ɛ4!}Gj5%LٖdD. V,'-[>N -Q 1(Am,:eˤW42 W Cd 6GOz];^k'ң\#kS.WjpQWPʫFJM }O-1=$#;'0)S6 N?݇N:LL%Y]>aJrl,lb*M%>5Ud אq!VqF\e<_Ω r{^&C.LY4QX%裸aXg J YT8{@Վ[wT ]Tܼif!}h]+zY;ַ`/ eVm7FoSyI‡x(~Hr"nX< g_,WS݋Ӝ[.x?q]r?2R!C..nbk2n6ژIl$癞RW,uomY*vHX,RK_P,O[8LzgxD3}OL,I~.+=~h$vUgL86c!CasȞ[_WUDCBKyKZ^~Sfmw.+ϩ7P92A:vadl: 1>quAU@,}ZK\- Z6"O|>Xzy3s!ԛ #iBp" $Ҕi74qo2M<敒3FI$.g-yޙmΰUa2C{Ǚ'Ӕ \VQsez~{~y,'H8cB\9*D'Lzph.`veYLP')ZC*y;w2\ޥ<1/ٯs9ɏXP]LJRP"B])BSfFy+e5*[w8²x1P<{Lݪ?/ Du?ո(:-(L[0:Cmz5-4g9QB`6JAMLj|:5 0r[ˇ_WƻGħDI(S3}9f>zSѾl=D6beW-8m_-~Mknmkd[j/xgiAL^\PмH-h D/odm=+&T4;ڛX\Qg6Ss|0ޏDQw-KH^(sBe>#. ,h1Z@kegXLfL 2{?VǦZf?A;?)42Lo$z!SlVM^xRQm"PN7Gg%1!D^)! Đ㉎`v.~v]]7];|h:E7%f=3K88%%0crP *n'#XȚ%; OMJ+ݣ,W*օC pW6`]SYE5mW=y݇ a},|B_^Y3mkA$Cp݌[+N\96ڊx Cń# 'TocL[q [Мl0%;r V'ƐP$ݷ]\WRthbG1ZZq 5wKM[9֛w[78FJ5zdDb 0`Fw׀#,jXB&w"?3y?ΟD  T )ND\H4~2)a1}=[Ӱ_ԛL |'{}Ù 8l)G! obp Xhd,gxZ]9%`T=ͬ^}:n=mE6fMg=cљ-N g3NH9B'dNIVT`u 1q'^vr gpN^6-|=kYw;P2 Qe?$%w|(џ5 lrZmIJ bwkIbuҕ]vWy=f+k4O|g?_ǫDk*ՇX^]g0C'S:WY*G6Oaۃh!W.<)9^͏V 09<'"d%m"pCyTw]1'F^=Xw VU j uV{<՝pwu@V$y ȃ0fGyYe;@$t{W KxgxɅT1 m7I;c|HS?ISO;J#'ז~y?mOPm5pyOuM:5ffᎏZ [hpme?>:4gUuRV2&cQ&J $/C*K::9i Η}hӛ6r  F\^.M孛0 ;.(  E ɟI]`7)gX{Eo _8L>M!"hM;]XCf=2ûP/y&q kK4lԺb܂Qppi1(d2VTzcrw9+ūo 5nmE(Re8MꓻUΒҖ8>/WK^a='+Gca4D b~>~;qٶLeB>&W"~FMdɶhOd񶎖 .Z48ݶ+a'.fEEŊk;p`ݻI{XhҪu8;$9GB8< 4+!>MSbȄj!G_бԛс5-c.kzR]/k}@0 0(ט !dX9ecVB+ H 8!2˰̇_Q1YH2Ò1`fx%"kT܌<"LŲ0mcYMR1u};`_"vB}"O"FgJ>qk57PD+QBq's .f",<-at0D}o1}P vٱNi07׹b2KV/eKđWtl-imV6AB (}Ho5g1 wzVF/Ix/%',݇9} zRө3Vm^JCKD&vpd6d-BS$G4R#59BR"JhF2@|C-X<qj7 /`/5UC*Jr9lm[R`|Sf0~yز9u*5 6l&}Agy85RCúBCc |֥kaS[)e Ӳj-O)3A_v0F?}aY4Pncuin.۟q]љLzv,:Ip [q_. ~?~ن˴ VFSMUMdԼɴ).$m_>z74h 0phKI 4\Bn3,j-bN'r~p~S9!C(sB(`&%]n;R)^2cT8PkQaߒ%Hn]HCֆnj9 ,QPNld.YAj,9$R>_B]u+uo\wSٚX\\_m7Du%RoZ*Vh =y5wombYrASmU#-˯R!h*4H?zؓ[n,.= )x;d_N@,h xW\1 [8>:>΅bx)q{%mؒ9`G?6n&vOYD PA̋< ,NzP} LP?hӷ1m>Yy1E >ڊ =3oµ)J/$:B tO*а`v.#7wk;{VfK ~i]o~Y s9ZÃ-v 6z1k`,y,Mz&y+ퟶQTJy=$u3,s;x{ {t.KXY(v{ }'M2:oX,~%r;w\Iirkp%cNY /_b?J k'NrJN` v5"*8 XY.xOTx7M'ӸAW>􁈼=y;7>\@z@kfz4}ˉ_ވʻ4XzUNo-{EKu<ݽm۷٫[ؽ:RPF^S{7:~<La6WryGc{nz| :vY>)[n7şQ֚8^R ~4bJ36" eܧ,Q]ڄ0C 8'nU'FL'MMJO)XgR!rétSWBx-J}Ff/R| ^+0ߟqV`oNPʱ[٭JV$//@+?TlO[XjGTdY:5];@skjȤp3o +5ph}Ǒx!uwV΋dcvy3ضG.غ|j9j0.4NuA)umV%[ŅcQ7p,8Fl4nsg] !в6 zi#lJKER5w1\2NJ{iO jAֽk.aCǚUK^Dz`B>xURŨH(o5uAfĭ5gG{#M4w:]WQmZUr,@GȎH/H8TTЛIF`4+fKr [2 R(dETh^VhZ{Uc]U_vb/~55Oz,>~ \XsM16ʍ$pNgSE"S"y[GHݽ , .WpŠŝ r@f@ii]g0yITQ%9w$h z?>O9{ }^%[RGj@%ە)9e0~q jAw(#:]qvZU֙"喋0 S=A\@6\-=m=p誺k%?{"Бƞ}XE_a*QW<3wR Jjd%]]ěSgJq.n 3߇J8w,yPI`rspQn̰gt]i0O뒺{:NFy]P˕HiΞ6ct6ij:Rsߺ].\.)6CAq:DdutCI'hN'PGɹMϥ+}9sc< @T$X8=o,8qVB~:8<$0n&=#}(>PexAA|Cw׆ߐtgӗeUNF\u\uBuVմJB@dIV~t$y׉Ka7h54Z,五8L"NpW=%J=E=+̣ȕ- 0 YȌ`3SfJlI$2n {^kZATZ-ßWaiFN~4<ӟSA`Mء -RD;v}H31ideU0O>{|@xc`d`=ͪ6_9@70o?u@.H9l xc`d``/'oE"2]xm A j۶6mAm#mf5ny?Mz$EHL󋠌Ř`9z1Ȼi/ZjJ%P-\>,p_s~ҕ&Y2' Oj /1Hoq(j%D5"4W""aC]syqz //Q$Iui;a#ZFk4jo@g݋rKb[l0vX҇'c;Iy]m<#x~%󯹸QnGgH.3 {F5{'g$KƐlG`V&؊n3ʣgߛHh-ۯa混y8_]@mo?B RgJݲ~rNZt&*oyD`fzlGh 6k?$?w,hT92(@,{B%2 5akֆZz1 =FxJ&V 8rtF"Jf " ^ P  \ $ 6j|X,B2Phd h`<z&>.n&TT v!!!"l"#Z#$$F$N%%6%%&&&''B'|''(B((())))))**(*****++ +8+P+j+++,,.,F,`,-H-`-x---. ....///2//00$0:0R0j0001D1Z1r11112D222333233344P44445(5\566~667,7J7iS/ZxmnP^!.WQm=5 [Xce}arkqp_lpeorJ{UJdsEjHA^wO!1!Ei/yP-|MhI%/<$JCh^jNSWyIǣ*&6$WJlO5 Fņ[WvY)xlAk۶n.A/"I)iY9yE%eU5u M-m]=}C#cS3s K+k[;{G'gW7wO/oAp2?foٶ]l۶2s3hZhh:訓κ誛z詗諟hjFikm h`5jZXYV%֙~hg堠G{OzCb~XgR2Ҳ6)+*( &h8m香a;W{cN:Na.9_vJ6 WK\18K|@Zbb`x)Q,V<[UjmCRQh_"h],ΕIV_PkfbPAȡ˹\*;T'SgS&0 ]ErYsE.yѝ]Xt5le!LMmm$/reVPuO 9h8v6jъ(iV+(|~rTCݕ t3}MTDSJ*+;07 h;JjĤ*h4% n3q/V,S^ GPM^K,oe Ea+yEf5ԍ6P+lr3,15RRI_ I Yh.S.[X{aK}KI=sn3atJ",QD fĔRrsHDhcȒ#c950"|ޠu [N3+KYD~`ja8VK9K *yTS)E \4[X *2NV40&7Anf0 Fe81Rš(die@,.vnC^#b3l_ +\.0a+sl4SZe`dq/ôB}~dB8MF =ahA]B5T}6,)8'sw. vH eC,YC2$:6 FÔ@d!ҭ "|@Ath ^q:b,ԤhG TFkD1~D4Keč 4<2p[LyrܥMoG^5),_ɭ~{lvqhݡ6vHzsm];ߦ!|e N#;g)%6VH#6CijC xN=, cQIbM$yiOHNLG"Aפ7?U.Q! r !FL?rK P_oF|4jyF̡P*@`^W8nts\u,/Z/۹i"ڗ)O\+.nV0akAdPbT #IdͱA/C( 3vjDxZ+rK 9@\( pk 3$laLVegRU%RULhe & 99Ý6x9+8| &P^"ު[w_hB{ Xo10 &9ƍcXٝI!O'{c]:a1ν^[ &ny"rvi. OSSR@3PAլI0bXm02K zDC:OW<h Mj'? zh f{xk"PnЬk )X%6d U YXEEǢ A_1B0`Wm O;aNu, /kn"ڷjuIQ!Ŀ89$ABaMmnU1dc+-hCdfKʲpCFJ(5^0d RLi dNu%J&& -`{!&ƂJpƹhlؼM-GBL%[-'ItONVJH&oy'׵YFp qg?Q,`r3ߩk1`~ qZ(LC6s. xir]S)P g<Zk "b!VHǒ2aE0A`>^|d A8ᘄt0q33s+E_!)R1)~:u: u )81T(b Ԥ fZU|x$fDKɦ(oGD:H izɨ@1Zaˣ 9R<1J%LaLD& g(( F +0j-'%,)QUU% +T8@Lʱ!S0V l1"eك3H?rkw U#MeJJk02j HABy"%Fꇫ}~BNnG0aRع`D>ܝNm*­@D-,jEF@ C0 kL5KՒJ TB&.v!7 p{ SPRMGS8aED#U@P;LH^^QOT2sN ijȔO&hRi͟D _X1iЙ5-NZ8Hn2&atY @E3c9:W~6޸D6#y -浕 !JWb`V:mf&8O8 @̜H`Κ± 9QBw M)uQJ`4I]<܅K."dMư-CŇ\6{ u(L$(2G8$#Rƅ0MmH$Ӑn(*%0/EOAָ*4%0[&ZⲝzK6Tnة p 諞h.$$je|A'!fFһ;(pWW9!vG QZ]H8ɥ.B6ji_PX']DNg#e4)1 %13i:fS=3m bb֧ytk"T`Ms\+}lwMԺRh)|Q2QZgBw#K]Dun4Ŝ*)E nt ^#0 <6l(2lBC {v RI&FVIuN+3[}V*$CA =oh7EYY̗+g`ߘjTI֬L7GƠF3P:H#[0Y0 %0NU9:xIc)lZ98ΰf1VJ jQU6y\ٿnJ;dN湉^ή4gR 7y1$נD x;G+ eՂ2$Ph1\z0A!NXN7K 9%uш䧁`?O0'?m,c7"Rs`ȱ Ns;YC(&@!D´ ӔNp'I:>h&I줐EvgY5 Q0nt놆Y(a5gHpVoÂ1 8b.JWbϋ,Ǔؼ  Ү520<"cnôx8gX?XPLK lCЕ壦J=q0RfMLXa_ܶLɰbU?oH[PN"+<%<8gBY Kr^z*ǮA,CFäଇ<a4SuQP1rp}r@yM"c)cc>%dS\%":` 7Xl9T71,l4`~S*J#W# f=!L9 D)O֔4+¡ Ajٙlр#?|\kê״W4od uY '=2UZ`q3#怅@ӪNcЌ@ ̗M^GS=3)@rQܪIU B5 ͫ aQXq0hM+hz8g. j=[4gz}gkTMvf|!.g0mȁSR*vQfU\򢒩5hN\.CCF$jZ*,qmR+/C+e`m&^ ѮUp"dUgї>1 Gꎾ:"*2u?mʓ'ӐNAAa.0FŤkz91Šo rLW]22+r  M.W[Zn_5@,%\@pD!\7xb]uւ $n5b&h~A{>PO^wk 葾drϖCҜp-?6EojL̓I5pkbۇ2J4IٙwXbFޯ!u "o_ Ef3A@vr 9% z$-6&?h: $R@@V@WwHhFۧHAK Y0]2?\wM(9Tp@t[>tPgFûCkaԳ@* V> p T=H*m4Qi@:v"i^hҪ*'=B0eLݛY1=nGj`[:AaoG3Ma/^̲Ǭ5@$QXuvTihj5(6xc 8ru,$=<淽_XEoF{^U`;Q郈xY?0rX!@MܦdU p`12ӟ,]_6Ɍ,L" R*~y&KL0(y0_RV1 F*;@;`]㍨RB @C6^لqEA3W<ǘ/xbN)rE=xU3>E/4K2]1N}GX>cLAtzF1GφYJ#y QKC(~ hTAbr9,'=TxNT,?'s>`0~@N〦H9njJqP/U.%HoJGd:^Y#`VuLm﹍T2ؿ/dٿPVJPWHX7hUriT IΛGڍ}ܒf wCv'RRD0"/2~ PP‰ld1zk85pBycjX!;'sǎƖŶeJy o@I>7 `^7|ijQ9#P`q m6 Xa(=)D#&Ha eG[ʁƦgXrZaef`g$DRQPG}Øi2Źө",`6tU=o E#QnH#IJz_܆r]E8G!1D-7taXjsk$ q8R eqe^4 t&N(c=|;p"TzȄh0N qh%yw `(wp^A&֬ x3{?r86{(/~9ZrમSi5fʶ>@jagznCv5ֶC})'^8lhS $e7]mMo;'Q'N*6Oj0jW֡dt[-qQuvюe !-ɓoCva?;!ps#ڏ˘x6l{Iݔ;r+n% T N#*A!'>:[!l׶HLY e5=2䇄}tz9 M"ehRId]1/BS@ jH57T[T>y`vF:^nXI,:@Ee\ ʠkcQ4$'`Z 8i)&["kPCy!CC[pwRK9/D N1tEiP@T߭fD73P#J}I)Q<4C5MD-]XeɌ ϞnÃ[҃rxw5N؂8)WnƆYuZ)hmd$s 6ᤚ) @/^np^>;AD(CF̋^p5JgiUImt B|ږLk3WRm жJb X`| Y`=FTaS@ő%I(vT>dqLXA+XYݫ7B+Vdʅi:5 7amPz[n>vd(FSicnrȃzʚSq6hâp:[-VZ٘,KK+Όl>8^;D :|rKh&g#MW0TL;K .CpU,6JԊ9r+"m6KF%!-\ 9$ [&Mpp=D"25&` ]~3o*K%eqnҒj51B|Vf}:HVF P \-J›ʉN!RHVئ:v7CJS0[*IV t~|{HH%d: iw:1,-#}Ǩu >ͱ7 {A_sM][&&C`*pQiX@ƟM&Aq4R/3i I͋W""zkӌ@ҡR6XjdaϒAD"KENjSUƪ 8ox,i,OI1{T:+SPPJ c9yރm_ U8G)Y Q"0D5.%Y+(>/-'" K m':Up{`RMh!|"⪂X/gw2(\r fF/Y Q^ɛ 6XnL@AX Ib{ʰE0@{W^M Q w ;%M!'LD*ɕ:KXMzի}6D8\R<"/E1ᩕ$6gIcOBgxݍrv 3 ʉ\$f:lQ< FWb1(BAl(6wA(ɩ5=QǴJNGe1H̑LFc790CMZYRpqVynsV|FtIN0Gƅ@sH9$b  xg΅_]\[Rnqa{ 4J&: @UL{5CxF 7rhN{ް9 \>bbHDv\P- Wt 5 #t%}$g{PX&`F.69''TסX`д @,}z& k8?ZRLkps]bY !3-T ^?3۴|}\Gկ&d 6.An9lr"*LC)bf/ 3 c UuԚMT%ě'Ch/Lw&0?n*\B#u_ I虥k|ٲ L/t_&$q;'Ih<lrP:.k>p^2\O0 _0O["U.G:Qf򇂘s,Jh3S#Uw:Ζ܋D8YUO0H陎p|TKv]X&U Ka̔'LD}k/+$Ε VdW΢REk~{ "G Y *y y^}NDNSYl;c>0f25:fQt1!׳x&JHsg2!XuAѵڙL`)(B׊xoQx;OhTagEHOQ {<&&RuhXqf-FڭJ\}R_҂gH4>%>mae00ڄI4iiUW;;\AiˏDNkDϓO߇M'&#]" l%^ _58!"4,ufn;2̩ۂ?'|oAj>ڎy6)EG [!p*`b B `syԋAt*Zc=3ȨF'#ǃԹr @le NLRr0b86,- ~ͣtRP#g<ܳ#\k2>'^s/JزgPYD@Ku]SnBe ؽDdy,yõ"/@EԦ1ul~1'p>{U*ɰΣ1b2̉ت*sf։[,I]&iqVT8jY"\4b"'eS90jǖ068LAB4xa.a we@xYjʪj6閴TlVbܦ@7 vjY /Ti*7 Iltez&%]?ae!PyᥙFFeYQcH~Cw2| {δ0StӒ~_ I;bCbr:̭$7))+G` oo@b󁸋'(L_߈ƵI{RaT'R6n4d/'‡F]@5B#5뤝&ǘM>,GKPdtvRIf$z<9kHFX<ϳw@4PzGT'9RjW: 1^{'&ϡu`$:t9PA?qm@ 3I_1`=_UJlN:CkIg'6:A;2RPXgvRͰW"4$]C:' 4̫1f!4RmuvA9Uf\kgQdITX[ "k\ ]}Ӆ{y`4CLβOZP8ݦs͎KL-d~e5 z{`\ʰ/ΖTPؒKdGtLyTRT.jHnHEϰq/J'DbނUNEK>EJh*|2,N 9PQ}M|Y`ER#- #vNN#PO^=i%thn[\n/@܋ي/NBp<ʖ9iw;w^%ą>T*%޳&-b[!cxi7K7u!.a4S7CuIBD]J"-| ))l/=n3GoϹYd~ (2IB{~o<,3 g d)B/KR ,19缷B?y6n~n"ƅJ0_v *(4Xe|xֈ WFSkecB䧠ǥbYdU`o֌G" ).].v/aNM ܲX j"_re &.Q*&S(u *G$HY/\*yrH S'(쪮EIVN![ fs;)r(.#D~~VhhE %6_ec;T)tA]S3]}]@ .QmWU Fn]R7JPq֩bɻAx#::,<14~,2r>3  SZ˅vw5u3g%"mT=*Er3elw+"^*e'u!uDA2m|jO f{6VX*XNXİ^ wa\ j: ,pz}`v*am<2('$cv<erXMG4 $aE0jN IL鐲Z!a1kan"fkة#K]XE,GoiNt X&@|GXhP5|1Z\&~k VXw*_~F,:0u@ (x?/Bi't=hs!0q㬣c_OUUFCHc3?=<zX89^V^؇h+y|6! PxȂH =hTDQhAMG?)Y+;,?+$4B'Fvt bC>DZa ndk&b+qu쵈\THf29Љ30N0rjU1G%_Xdx|=9al]xnP6^|sE5q◾m}*y&ow[Hr+ՀQ~q L9>h ;JܐP]réh["#^D(jJXӬ*ʍT ڜ2ZIiSs֣(ɓ;qc@"ZdfM 3nINš$ա~` ~*ōj]Z93~9IPF>Qx9x ,ВnpV% AP#`*xgEnzaOd><:۔ eN:cL2`DǐNuuE( !> >AQr4:1-XA7F&La{ȖP;JNŽl==s5)ڕeB^,D8J#VT]vB2d$DHtmjS5*ѥ\86 }ʱ=XyMI(tU7s)Gc;L PMqTVǜԮ*E"UacSdfAb#]yⲚLrQa@J Hpn:\sp#_0&4 D5؝N x'S0\%G! yHJېN3iC6)qIo*XCYqSb柃V(dY *41E2-< ^ŕQ7@+p;TᲜzYuUŚ+C†T S}%H5`H'c `aRg/p ˜$l؟t!F\`|D77i6k%1猣TFې%~{=º&LN;V(i~ ] C*UdÂU[Q攔U/dئ ?ߡ$ p qucFwgfVOofcAːc59%TڮvF3n .w2;>y+6XS3|d_ȑN>0/p8 ?$ W7e=xX3Ǹ4nn \Uè[:+"RD)"MU[yeu<\peCV=NB!Y~;[68%ca +TQhԒE?M5D2P(dp1{YR> g0Z7B Bƨ죠 8iұmx$~L =pY^lpt }^\X;zDc'>$VYfMSH##7QDDQ)ø'^SlS>X1HGopmOGR6sf?v t4:P0!ReM"I#;@066ԡ1#O3*"k{`O^gȉ,$EAucA[t&vFA1]Ax z^Օ23ymf=e(5AfBFv^^ #(+&? *IBx*lLd bjP|![ͱE)xeAF+PTQlk1b: ۘB\ToBgqK,H K&<̅"h7uQ'/4=Bg5g7ՋAm*oٷWC)l4~:$zJq 70 lV-0v9 *:;A ?CNj 4k-r\C,Et}e9l":6ebb:'Ee hZ cПiRQ8[E؎:zCc\ݖI5YZi1@zmSRϝDJe/pDl)<GA)Q:ڲ]t osC!!PζEa>7W N;aZqK,\Ii(8ӑxd pծ+tcXOVM{2b2r4Ph lo`"q.{fm.RP Zm<Z4'z0$A.rÂTp۵H'Zٸ[xd)zY̤C.!_詗qe-ŃLy?Y60XW7̐v#2jZK&lEOk\;{l⮑&:? ||I׃ {mJS֨Vv#zo}NO9< 2V,yڵ OBV7;''.jUX o:TބShgܞN ,gyzl"V=˻+0B F9pI\rA5nZ^nzGzdjU!;i4 S1 "P)+Zb~%t 7'ro<ŇLyĶ hJЗ H&'L O/SҬH@U^#ʐTgUM/>xs4}IB8px3b8;/AxO>iXT-k6Di~M8HV+ Ynxؽ# IV, ! ϾD{.G%kY#t,1xdnA.f$֑8*JvTFgdM?>v8+Z3 B.sz!$Du ocQ'(-+-a0Vظ;gWB=c) 9%O xEm9W.@"m{7r&^.h|,s<6Q"M "LX cbDn& 4ec qAJSE"n"@S im2y6e4d8JI֭Ƀ Z߃3Aܹ,g,xB܅CXťud<-5mgsDull],eZeON2 {#bLzH/B,s2cfcLLH^hv0ěK>f;6UPpMu1!?QFrҌz^>$bIFݚc~}pTEQ 4DY[f^ Z6&pDD!1p}gŠcʷ R' h~ (B1Ѵ Ban؇VFF.NN4ۅnZ7O͔w/bèm@l˔B/)!s`0 ]Rr[e s$^q] }H /1l)$@*Rهu9,!G<7OV0TZ|?9]zwKg;pD5/.L-gXYD^ _"$>5lz!1>/!%j= kqqD%if$ ` AP )*Oj 3NLR*b`@C]o!hÕa4vx۠#s$<~s^6U^Ld® %09.wmf1~s *IVʊZJ_Zª"tf~m`G?Mv I9tV@<==jHyNauvI;G[$k*DIH3bb9!low @נ(JOS9(C̅|P CwUk*`o-`nASZbbmXזw _~e}{QhĦ̶a*2 _ uxFwԣ@n `1ǃ4݊"q8‘-{ȅ_'Xd1As!;%0q ^&t4wX$ z"-5u&^s0j7o;;^rg Bɛ"fB.QH=HO"5` `J4D09KJ )ѠmdIպ6Z J;3QF3kr 1ʠ֬Z8r5C QqZNQ@z[Ѧ0upj+^])aF7aWƲAM]s0")`[3,)l\A'@.,f,Il/5n IJʐrf6|3܃k]H]!1|"JE^W4&Njztɡ}׶ppwZHAI\,f8KlγeM>F/`L(;;9@U=o] Xs=Xa`F888rh}uG6:XQ V` %0AFUL,p<[ ;a:7P u)3~:(7͒KN:=(ۦЫѨTP*{/ Կ"K[l0ʧUyKZ2C&V0"1B.!lWsa%raȆe(TFVMzfrX 8 ɖ4R9V396P(Y aѤth0˷jUks?DRHd sLd]BUp8U9TYD'&ļ;Z v[ĉRiWH@:*]ֱ1hOnڂ\}`d.)EΛKVMÔl7PWݵa𐟇$$sK0L |<\$/7hnLv[bL' \1aER->ðch PY(eYգinǞOe4IPKjGlh(,(,Cconnexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-regular.woff2wOF2,(Z+@ `  x66$L ( 8gtNUj8,HQ0ʊ/ |Z&(E' ( ;ko,X(ga ېf(-3 -AI&PVNgV dZW@': JϙntL' d *cJs85Դ5ָkUw1e盼̻29cƈcJgJ2 ^ M.UwۏP-o#M:|@0U3駒\"%\C\ MjT>m Tz <7lf×~`TUUa+hO}F| :ՐNs'aiYQwg9>zGvȐ|䠝md(!KvEޮòR_Vp-Kd&/}@rl+4 U0X]:_&P 1Ya.c0iGU8-v1@&[Qd߼+B8>:(jW9w_FU_I6ӫeIoƫΫ 0~t㭡ϝOp[#'>t9Թy5خ196mtVٿΑ1f&^-䀷0G8=9psrg0ĄfXPko,048<FARPHY`7e~|pi)."uw@8ad"\;R(8d1f,$RNPIJɠRIͷlz,>,o:#:N93GD>;lAɰ2lĨ0ISvMK3w GD~_ oF$I\oyuƄ@ ),.aіGoknK[mmonz!pam$t"@Et8""gOOرmDd 1jZdlˮٱg@.kR#uQ6w&"8_5rҬ<2_;a؇#\^Hd'ʏ&Md"UZh>-Z٦=ϾeIgǼhɲYgtQ{I=K\%sdWprEZAN$RHҝHbTQUU>/gns (᫏DNTɲ#፽+kTZY*Ow+U辽fw'ٛb9ܵǭǘ#9c9=iNrP7)̲[[.vO$Yf]l8οT齪6بlLkEi qƩ$P0uZ3gA" <9^s!x֬a{^Q%Jm5J&V,u).F+u]&Xm6oEJ hAU>eHJrL X)O?(zAI]fbW}\~=}:?AhʃTy};׎^ ز(}^{YCɻX"TFi gCO֐}Yk}AW[} f N >CJOL1'6ji(׻AxzEO\qg:jrUMiP~֩my(~S?2݈EkVRqK"N.^lr\ĒeYgtQ2jf<VWhҤ_ܻ ; {WHyB\SH M97$J%^m3U,Lnț#`A=2w`nt !^O Bpo8 g\ .m=Wo{/^X~1%zw&w}k=oK'BJŽ<튘"a#/%VW~R-qċ8\,̇Z#k ٺj| qtγi* :#7ݞf][HvEu}dwێ;qyq9rEb8t(^u_c;9[elv:h F4$b{,= en]~ϻIăd@V,Q1Cv̀*Zb*xZCG@,?^|"iL5PCdm$J*/I3^lHdX |Ԩd820w5,)##NߘYWiZD"CH*!ʴ\_oOJԞvEI:\4zT#s4t)Mɵ*u{SG:q7|'gb/U}لt0rB˵E"A4EFrŽj@G0_~Z雅I$4Z9ix ʡe^3 {{R }ϟ^gr X̠ 9|\S#;Q#pL $4o|dz̻!2E>M(*v)2Oę`Yπ21rSCi_ZYKwTUu`Du'z¡/t v"zQYưOtK_>w{߼ȁ(dKŶ) 3)z\' 6;fҎ*\L+D+X4DaZd*_@*z9Q+TEPc?0Fc3ÓP8<8҆Im*Z*5}ifGX#,NdQ80מ ]Wt Yst>rY{5k1:g6bj^_\]Y I"UC)(B+7*)X(/qpLcA_Xd2>`TW :k7nWg4rS`yY1V 5Њ:Be}>w@z.BC2Ir@^|R2/nD#d9I`!e@>ʚnvlFJId-rrI8 _ 约z`A AwM s;JJfXléFp:̚*]`0wuAКA2tUR|Nc᫘ETA-QȭI_ Tp 5@ %*_YۄN.~凊݈-+$EւWXN|l!.}W1 =>VX+ٵmʽԈk}B> v4hWʚxX5cT :鰩 tsZo : RTzX.EMj#-\i6P1xFKE  ^K#9FnZ,V+~;X%:~eU;~i^{U7 uP!җ\wgU; kjXqlX} kE=a赭AX)[Vg JV+B,+&Ŝ;p?BgJU}&E-'n8qpUp \ZjkL?AC s#ց )LanʋP{mug %Ͷk+#XYFq x*usݛ(Ͳ dBA/D\E[fI!Sjg-oC&Ztsk,[K<(SM᪺#rz|ܶ Ŧ=@} Qv+|!={B5un@Stke Zu w>S+Z]pJ ]N2dʽ`;zMsDΛ= y̓5dc-@[uG*2qԈXE,`xY%kpĹb%{E.cXhWyﲼ碇a{kj23:]I҄!jpGPyTחl=Cvx܁ {X":z@. $,^ђF:$YR*ԾSBijBkh¦?:"j jlC*X3C! XdY#Yly |fVwaJmdYP*AT$gE[500Te'S9=9ɤ7)^ӣex~1MXYx%TP*|-Lm%ٛ׍;#iGIL򬂺3~pORYUH#3\xZ(SLfըb"kT\`gf9MfW%4'B6 }B^|X]`yve`ty%Se9у>π_(uLUלui ^g(igE%>6Gwϱի)͞^gw ~m}k눵oZKG}x\m̻ꣶ;dHD9@%juw'SzT`|2O?4lC՜B35}bqhS_}~d<=ړ0nhR*t 9RyY3̒MjO3#`GpDئ3bb &{' b^ xdF 1W֩dyQңtF(]r5 ̡6I{{jXAI6l\i k{+3 %ޮqd䎸nIʥ$_6EY3= ͇ݴid?y~v" -`@[fE( s/3cH_AK>.@ XD91+5t790L%{Ҹos";[CVMՁIbRUb6}VQ݂RXl*z,wZُɦ:t* Ԏ0z"T6'M#E.Ezm4Qs &/ 'qA eU]E+C#ʫUVqωQ/κZQ5=fz+k3ŞM̛`1<@ͳʦyZ˽ug_Xtn:cfm˚q"H?,q+-0sZUt7rd.xW}o &v,. Sx?}Ae~X2IFmC'nx. :%to}㭸w9z}ѦNdNPt^߃Z?b:'EU/LSRy$Iͥfl\r=RFY/ k`n -/>#$z]ęѪPxV!e\l\c(O!dT #t9Um[&&eE&Qup=(ϰ׹]@Z|+Ҏq=K+Ǐ.^MJfQ0^24^t,J-mA @2^MPU瘦lJt̙]vbٲn WHeqJ?O?K$!80")&W. zXWRĕ=e b5C; \0ο">keY/GBJ(1~{c({b XB(UD\mXOzLPi{wnv0<%|q#DQteF=v\ypܠM }JW*ƸB]Vwj"=~( D4ӼMp"%mNEêy6kSVTf~ft}Q(ʘ-8$n4{Z:a=Q g=r,KS-OC2] _~\^87u\hͳ@`I$L"t>t'KEwί [fكYM:6 ۦJ?JdzrI4D{&te8SpN%&j'v&XOlw 06r:z ~{:ow7[ŷxxȇ8Ͳʜ T{D)ζ$0ɐ;0dk{OdZy k`|x;]% ұRxN H$Uzɘpk;UeHvG)w{ޖE5,N>߅I̘q~W?7'ICeէzqa%Q_sźi:8Q@~B:.ϠeJ~ R2Gt7uMž!Ȅ@kĥX.M窆rg.e|Dϫ|vunn)àt3w)!&9ڒo8ʿ䒲 e% կtp9\Z7t tm'Kt-y Wg'ިH*KB=}.QOʯ? Cv-萒8 OP fED4\Riǁ:|nsmdtsM>+0 ^Dg}VGP}Υhz{ uhc6`3~׾N,X/|( (yP\1JK5M{@Y6qMߓ_y,3N \@2vliLjC}c<,Ӱ^2\b+#;{Qw PiLuS[^YihP#mX!6x,0Dщtz"HRatL"Q1۱:{In3CAjs.CyoGrݞ|'KЌ,V:1cҏIfi##<*,D8 *Dz^̍,*'; a .*TלLO$0 /yQEج1P.,8ņGKaRuRKaK7WJFxUBWU4ݟURk"2rF5}Z|^(3;Lmx0Os_[P\wW)`yJ8>k($ W߬4r񀑼Kn@bS)*aTM ,ۢ: :ԴaWsc$N_#Cp l=|SLտ\jbH.z v0erEPB`J2|`lR, -, cwƛ /dihbm;p~WH#&J(JSe8N z)(rqd7@Xc*]:q_Sȩus LMfifj`l ,wm`l"6 )nSS$qJ,dmSa Hp@OqF05א*D}eU{$Ni#.bjύ'?Z^:`Nc}S$WZa)NfE*lPbDʀƋ*Au稪)PԈyMݘHd_ ]^a!"'E9Tl\r䚦0 ~j.>v7!..^Xӿ1}]eިi|>If%6ŵ{TZ^^4A͡i1Z-#::2'HcWR3G-l:DIdܩOKНt>FLrZ~Mɶ%QȮk MDNN,Bɍ4eX}WщdOӽB[L-z+mQEf:bϸXfQ#tdh% tj@U҈Î{Rs38ĉ$E|/lS @ZJ-s#˽Z$ {IvEe5|n{Ih|«ytAqq sv~/]3T]Yu:IXN2S]/9WMx|5+-$EX%YIƷ]m_2mQSn=?_ 6W_S}o7Ӹ Ĕxmb4NcfJn@r>DBJ.'xR>bIƽGO) Q^)pkS)Eƒ>'g|t)ıouB yWݒp3`&}з&Tnx\W}k O[<ߤ?&'.<à w~TCw O"AS)_0ޡ=U6{?86`Xuy p7 ³މe40C8 [7'aN݅0k N=%ԑXec dn2Xgj5_wH HuQoB^0e0ZT`\dQր1:"l~VnrVM?E~A9RL%Qhh/u?qz$eQ5IIdGZoZ_7B7Jq+z~Hzc'j3O(:lFfKQ Pn F ?ozRzh-]g92A^B:wt|Ie]\_ߔRCESk"\_ǰn4tw  n,Փ;}RjpִAZ]Ac&o/wvѿixi{lK:Z)[v[K8 g% [G;-'X.[)K{nqת\y-|: QT^ *lVjjԩQlՠQ79C3:5.jwi'y#ux<-+*.Br,+,YPKjGree>connexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-700.woffwOFFeDGDEFGPOS$ZM^GSUB  OS/2`` cmap(jmagcvt KRQfpgm 's#gasp glyf O~u}]phead]L36 hhea]$ ahmtx]LIloca_da"maxpa8 nameaXdw4postbY;prepclbeq֊ x<QFm۶mkm jճ}g LCV.& ڂY%& ?-ՖZ^]_q%pq㕘C?3/X1;5>|klr?˲_59HkXo]^ZVcouj:ݱ/_^㔅Ό2-C5sMU$~# F# &uROX46iCsZцΔ')O_PCNuF1Zc2u6ݴd/aNЃӜW)շyi<%y#fѐr֣ i'= Z3AXFjjZQO4 :;X~9+Xvc7VhN覇^ ? Gy")xRfSĩ8]\| kYz6na+خg?G y' =jֲl`Vaq?d|؈FcΏtgGGV~O-3ZꨧFX2q9+Xǹ^l2T;ݛtV6Zu@#M8C]t#[Y?5e&Nj!f\ۮ8 2Ν)usy&Ś}Sߙ3xwfTl%Œ B^uz<d%| )y1%K2\jklPzh 3ڥn}짙Zi>pNnz襟u 1̈r뤹Hn2cV?3ӫᄕ7Eʋ)T, u\G= 4גjf7{>M>ކbrf/Oy,<)TVD1%K2\]8oS>4B+mt]tC/ daNmҷQVySBSZi:颛z'FN6%d^s#BbJ.rVoUWG= 4҄'7*f7{>L N8WE7=πAfDnIjΪa6#$~ƅwPi|6G#ׅiT.vc?}4~<˥W+>0qoJkNj\߿W?Я+} ;eT+g7 }_Rfw ++;s3̾E]9ȕsf] duB2 NYNK|C;ٷe#e\8yYIGg!X~#;Єe r -z&a)OI;IK]fpծ ;HIߩޛL[DLf'p3czo)M1#[X`0|\]oc_1{dCnLC9z!PvŁ/A_c; #_P,J6-F;tE7=ҏ|Sѥ??&$9&;߆ c33f @ [(1ASC Ds ^ xc```bf `HK1E32ctGADAJANAIJp9a %HO﫿/l~kL{ ';#x#`.P@wm[iF[Vf6l*Cm[m9~X n5njx+lOk.#EI=ivC1-&/E9:;<D tr BifI_4.oXWe"j8ni@^h05*$2?H"#sp+Kr{)*H!H=vP:rWc[Y[b$l!mUOxuSGFQTdU"sI DZAU9^ӞfҐ/\* e1{f7wܾu;PW._xgN?vU.PJJrp5>%?q\7-SxupQ ?+n܁VP"<˩ueڬM/Hn_vLu$;X1|IoH=8l6>u$UX; C_]/`Gun<]R6yI2p6CWxbLw@[eA-Yu1|a W8!>;z(4##=<}Չf J_N1gC;̣<ά'1xdP*,6z Wf'Qu=P;k±r,P u׳ tStr4`*Jv @2ZG': VGI $H$-f|x q7ym4-Y .<&" @Z rz{z?bY"E.]\qﴜgVD37p_7$Gd@SrXmTBD<ڗ+*},OY:%\W6 AVGyQF5$N"oj5mJlajSYbElє<9w%c\0g=r BQZL z_' 쾐ipc8dvCj3 pYE-yCyTȯ/(ucn5SS~觾\s?C۲;q;JSNq|ښ%Vzwgld0xnb1Usbs{99gWrTz>_EcGv{/9B -JԲ[q3,q 5Mצ|Yhj5Pz?vx| |׵=΢}_-k,ɶlKl˲%6`Af&%)%ibih^KHRڤMҬ4_B)feyiK=|lL믟d͌FϹwF/|oGAvL:|yIΨ3t!2ld G 0\a9q@yD>>gs*p"V 1*=X&Hc@0s'LѲL\Aat9@&(EeНV}ґHD fOgMiJ$[R15GFb{k!ISȅ.B6[]p"80WpJŤש9~ ֩*Z}L4^1jJh @LO}Foqk#o7 *E)Fcc"a8@?lRF Sqɞ27Y&1.~+`* `/+HGQ;w>kt';^|苤7p;{pcD- @dF9T d@:ZD(zԕH*b=0j-꯭u<=ssZ)+81X3G2^ ft`0 eBCBC>Z٬.X(dDegd;v1R0I$85)?5?ѷñ85W*'a؍p9IdUHOW㰵bW V-wI΋,ZRT?_Zqg9GO!wSo6?⭫LU'] ׏ak5h pwCS"WK'unX9M[1/|.οTȃ OD¡Զ^8]SޙFǎO|^x}{ f^o-~|)kH/BGO~8'34Bn :#uM131HEm,D2P 𣁢j4p(!1ԕ+2xSZ4{=ݻ{D}v z;V=%ȪU674l>#xӇ٧}l§ Te(3-Eŵ{kqm%PHj~#nlꤞW=L`b")"*5bf_Դ"4E%+ ig8(+ p (Nfݝ H;\`i0[u1u0&$,B$:"-zڡt@ԤAs7] +&|wt߼|BY:UfW7G?:&,H%j/ʂiɉVߕضpza3:)/i®դ[R;w+my󡭤FWrAy\,r.e" kO間x$NJ1ڥsiPwf~a{:.Kx]RSSfQ!-L߫PQh3gb{0v:„kp4/eSꫮ^SU~  2Z{y؅4TkxjoN8x~ b\)W̿N#OF,kTMzѾwR>,F3[r)L @?{C,"pm|䕿ٳ #m+͟jJ|B.Y[=8~topec۾OZ40`@w(.Uiޞ$pf\׻UfԖSv۪J-LgiF픿 *֑*dtޚ\3*⛭eraK,t6 Jx&>3 Z2 q?a VƲen='n1shvdcK"ƒjsyY `xrkj31^g R=ʃK ey [YM?t k[3%e ,N1`Nx#E=l8e*TV8#'a~ #AT~ ZWͬO@D<E /1+b[.f |,pXEk;QopeSc@ m8붠r#cT)"`O-;:Kep Qz Uvmwe~zѝKۗVtS~`K^=|Y &_H等9Jjcs7i|o{ߖ)o[VS=pW{[5qyf?OI+tj2FdFal+>[LbQn{Hˀ  OL,6'2eh Zi im4DӔh.xl-H`Hkk B@D̿d0a .= ddLB9(#/v˹>9b5#$J7xL0<lBrŢk㰓+XN##1! GQYSbpDia**3 #;=+ }$v.<@5k\GJM{tOɘ= $hP撣H iɓ'`^A U a !Zca 瓑4+0H_J!Myb08Cy8~{QQ!5ޤ{6!v#oi죎LX"Dqw* k1VR[ht%ūU/ɆdIG-M7ٖ9%LSm%:w͞V(&H.-DKlΔvYjm+4 2hYh6L3`)>ca^ nBKS ( o 'Y~AQ qY"XKr2T_Url&Ź4䒸l 5j90t5s6XZ?3ߊV>PY`jwoFfs/.^r3_#P=j=]R:+ag~u|s ZSoM*E%em%BIWS`{ӮWo]v7O9 ,ϕT,-8/ܿ~/\(ܲ]^w->  ݘB.lxVG/S~ۈt95hpOD(:`p@l]C>ͥO8dBx:MEiza+hݕUn_E,d>BK:^$X,'+zsZɠ%YX |#k@6arrC"xՎ Pmɴ fqsRO 8KǸ[@L9Xv9g>poAgYaQs3("NhyGOd_Kq Ck;cn=R?3aUug#97.mXՕT4eӮou-h-I̚2;xr,/ǶRL&4)Y?_ ~cI!ss>Yfqx3|H%`{T':26.LmKfcy7X¥u{1@V:k71(( [MU/`}um26e4TsUۃ. XzO$>4N}cp PHnFJ%X LT}mk SUur/!m#[#$A(DZRW=~\MTʾDžgSGX{9%Q#c3q< È3rVg3E&co1k"*p>|6{jZ.!?3n2xCOFxG7]pYpIOHՈjxG E [wt}UQYw-zb\?!}?P@TFTR1ؓHIzwP *ud/s>)v]&pk3ZCkZ1~Qr}QCn ZJD4ɑO>z]ɮÇ;o]HI]\͈9Nӣ_lZZCǭ] DC4PNǩZD.r"e$"uiKEWG֌$Lg oM@rdl)0Ra n9^c4ifk8z]-TLhȲ4"$obʸ :aTGN9YėyTqF47=qu\ yk8 ?i0zvz7^f=hqCDv)XA931T?u#NmZ읋bժfUvUXETO> Q̲+yT%#Kg" {D"~40Aud'=8LH t8 L# }Aw9d.|~*oR[{(?9^)Y%DSl`SQ׾؉yvy'-JVi`Ncj4+Ay¹~U٫pذT2׌Qbvy02bE7H[Gr,Je}8x?F f3opF8AT=hgfJ7zX8hV=Foy}T=F X] _T)4ĭSљlaʡQ`LU\W$?糮YwiTq sbkZjLF)[:lȶN'lq {/|JN𯱎lLE}V)!l^yuב{Im̗p>%o+ 7JzP:@2VS (*Byzۊf.^OL)7NU T uvt&4L9?/oR8UPNV޳Fr곩g6SJŻd^NEԐ ?UBLQbQT >.NY:j8AqX_f$=Xh\13W*@Ɂ;b]!XA㡅kX^{h5M7О7B/ݛ޽;7W" /qJwc6p^\VFm({LzZK7gE &@ԋG_GĺȨ<"`r\1a֫@AdyEO0܈aob='(H3)0Y.`}T˴5{wR(gx+8Jr JWnT,'@ fGEшկ\ܧܯ<J:HD(_{OzF8Gu4I{0 P<"gOݳO/}2rjg(A2D&P+ScOUĩS)=?뭯F+z7HOA+9' W9BT >S7%*Φn.Y 8BMP#V#mx_+ᆥgHVDBVdW8|~{}hIW% sS[2w-LT@!yJVǜ"@Z&`^+l3w}q&lMC44-\$!Kƒ$Y܄*P &ZZe5:MΦ1 2~,1ͤǨ> XYF:`EL<`;hp1DX<>wzjŞWRylƮy;޻uá yQkj..fexEFZ`u¥7*kZ3){SJf81gu`}wLEflhD:E E5-]U%`v!nnT. C3Eޘw͚Y+0h%8K(Tl`cW κ1tSCŝ3Wm^?oK@_(ɆKtDYVɌ( 1:d5!K3r3OBMog Ӟ< /Rn+/(PrM((/˃F?It@*RRz,FMLy&L!٣]l1h}_1q3[>SֵÜ b<x7hͪYz5 FKBaAezAH.h9We'eG "0WZ2٭LfI=X2& Ii&!xa:gF& gi)J,B@ jBh@h.]W eG!h 2ՠrvN M΋8޴aۦl;vJLV_:QQNL1yzOGƮOBzcqz" EiwFG|W)y.Sdaucs2]JN>azț3O2ywңF^9z*-9>?[O2Jo#w@wޕ˳ݺW{[͕l+|Ё::noQƎ4mtaG7N]s!Y;tz&oaGaFm91߽ ;~Xi5p":snZRS#bG o^R/ m73f`r"reؑw4F χ:*؊BWާ-EςaZRGTvr L)<&Dkܝds<k }}6\>?kc>JZe96O]N/CJ"zYo&l?̌B6F|~G.(Uݢt2i#z+\Hs+RlҕD2YZFEC՟7jj 9^c׈ #+wYu{W\f\YT]0'X\4jM`š{# ]>ڹa8uzWjӗtn 4de(_Ƿ#'ZpD`<J3@򺦹\k]NY4k54_h.hxMi2C};5K: 瑠&6uozh@p4;/?m'$Z=gc!d\kdDd zP P1g!U\$ĺoXǝNѢ3^AkVkhhh_~VyB j@6ȫX7m:FJ-+Nk` M4h4u}90+hA z_޳%H61Vz\"@+7H!Ki< i3;;jk `L< )O OeRZ VH Yd'3߁pc s;3YA|oFbd_G/i:h¦;1 qᝁPޑx0w!ϖ#gIq )QsE|83/ ]Ujg%Qes5˅L%eߚБ;&.ٰYOstgB HFѪ/;"Lݜ`TZݬ0\tTz f@w% o F Do*7Cb=yKn]V3-cvp1z"yJB#,_\~]GB\;5URFЯ?A;P*BD]8  |((BXH D@Pĩ Pd!VjǵĎޥV: JQB() k8K"PM .$`c=oPPNj˗T#Bsgb3;R%Q5:NկGvH^]:p@: Gy VHv/Yd_CrƃU]I9jX< (5ٯ}NLTZV[;jm VLH/xFZ;f5lEe4CFcG#(# A,"UjnÏ+]L XКP%jMoO<yI55d5S<b0:ZUr}[qXw:nW?ƃ4eYѭX 7 ,?1hMX:y=VtѾܺc1<[wqÿcR7fx)Gf֔ߖ׼tf"JQA7zX*W0XK!SXvVos3s>i_DP(PE[uj*$ȲUN!ݽI~Zthw2WGĢ݇`mf:GږO:"t@c\+j}mP+R? Xlh!61y!#$ֳl=6heYoi]2VGE#rHD^&r#fdbUJa+ `C0-&D9JJls=^fiyQu9-+}+s~:G=HC+ߋbym>%1l@Fp1WX[JOCM hL- ˚4\6:UB:/"|!Xψk-zBW|pơFH0?|6x"##Eg }4 %^:7*rn iznԾ=}=q?DNg /gFy%\E.s {U75od%V$mx&ک׽~0UO@mWʢs?ůE#Mݙ¼’BHKzkt+ݸ ZNYw[Ϛb Vwj>hbyB,m3"*C"$)WrX9_)=)TK<-l J0ik~6=۲9=y*tJOJ\drw >t:?9Q[ϙJjjo>ʙ.@TMl:d+N'NOOp;pB3Ydt~^|\~tk*BS=ǔ(z;L = flcp.wI\X-p2l|5 F$vӝE5";n:I4yK79]DT1cqHDV|HsY8X~S~S+hdԍ^x**"TI1lp͈b#.fI@I+r!n5ȳfBPt8::H~]ܵs%s3tnKFx7V]UWj3Z(212. ts:BgOӃ,i\G5mL˳@ȋy &0L*c2L~!iOApL v}}}]ڵBt^j! Ϙ8E1'̵/BҮmr 9kn&wy"W_6ұr?Z>ƶ;-{믨ipO?ۓ/o۽fYGW,}x{ciZeݻj^z E]ʐ˗(45WrVj*ǥ \{|p]` I_!/r 8 HgS7qqOjjE1TRUZϔ JS?s"ތ'!`'f]T3G HxQizQ@CiMDHCp ^pJ"9CJT:.ԩT:%kr_]&{*:NinG17c1M9Dv/#$nW>]138rPNJQ{ߣqKKzCԤ@K-v(p^p."xMX /q7_qra2${tgtCsHU|Lxg+ nLս;[[֝:JR>_oٛLliݙlְOkT錤]89R#=[q$r(}T lT89N.dhj&21f3d谑%wґn&GwӹUzM^ (oLͩ>ՓVwDճ&,~vd٤+TT3Oggtͫi)|?*mD ;T: 2BۭFvZ'h/q*EBB,٧Oi0@B(f [aJ(nsq胲??0hN}^*-c UYS0xbѨ=c^qWNt픶&C([2S'RXڰ;4֪J ^rak(*1}\9=*89'S1]UYuXt;rϘQ`5U Q*S0I}qZݜ?ˣ׻\:֘Xr+6,w|&`_tݧ*D4S{1FgD 然z4 Fx,Js+kaY "?2!J .fs+#gŰp^x~v='Lz`/_& Sbs?+p1Ev4~OK4z' uw pdVva8bQ(h e-t9UoZ[u7tekJ%lY冿5k8=nSA;Ҷy,|QDs)h=ƓVy}2S7yMQS u{`ZQ_Ǝtu޼)40~`~`ZY7TjVE̍P⪣W%2梂1hE&}jyO5"*??Goq́&&$_bGfmik<;Z6sƍ1=0!Аٓ`ko>ŋ-iEqP(f*Q~ZZJ>2!@AB!3>1$h5JƎp@ `V)7~(cr[#0zCB/2{G_mWV#!B\H $!hh Iʲ@hoe]R[wowo޺w{ݵ73pHiD?sfK?/PÒa4#a ]}92b/Sʗ"//f>gt8nhl|煏>933@F‹ MY1h$ .[ \¥4ӚXj4TV5fךZg;a(NLEe' 卋kY!A?qZPؒD6;]TvqwlL4 h}1LMOԢAr쁼?=b!zp~Eys`r+SPx0lM..ةFY)p6$/[rc|bfϠ//2_, BhR'k0l)ES7<%X3gQl n0719SAm)wMW9swT^+Z&omae]ߧF\s$h5M$Dh*K=,'?|M [({:2BnzϾ零CUƄ\·_ſg.Zp-ۍq[_t(~#XڧW-]?~#k<*t'НpT,:Iqq11M(cҒlК5XS1ތ*P&$1qs$!X3zˌ'-!f(OMth} T=*??;o]ߗ\vӥgo)}B~eB@yLBX;k7/a `Z2 P(9oڲe:j>H:~V #vCRgwGRok>_N;sRyM+UC;pY}؆dPn;- ֍wm9{6nz޹Ϯ}{_1=uuhxcu0{$SO;jlo{7ؗݺ?4xlsmkײg#f >o2(6/?Qa D*zU'ТWUE6*vVDrdkip82,)!.ROxY~j'3>Att`2@&oɎd粸+]Q>6Kp0Q?O㏥4Mvkpd̽2gS6,#SQ+GwQ*mHЛ)y &S%芫(VLTT@xӶ7|*^LW6+(S)aj"B!6,HƾcO|8*d^ʧ 736,d)ZoMz>J!dN`4W('晊1,1:QR~~/+P.=a][{J`y;kU|*I}0ꃋ_B~G-oAt[Rk>-<`~~qѰ~ElyT?QYqU.W OcKE-z2X(S@չ! L[LB$K^| ɷ߭v@mY34g_@ WSkbڝe9!ƒP0Ycۨ.g oa5JVҲS^ 벡u$X漴/sп3xU;Vt\gEϛrwvZ\O 4~tv>w]:^Wk6޴E~N+de^PE݆V<)bKM;UUm4VUmp|%4/3$t~c?$#kգ&R˺J. @4[/yЙAwwT$_/}ieUnh\Ut_65аO ^rS*j;j3|ͬ BP:ćr<)\Ƣ~_˂4Z7iw0g ?Y=Ӹ2鉹OYBm8xTk![yQ_svٹs *ĩ*{#m2|h,oU%񼊟;chigt'Yؙ1cLg<"9{= \9ʓȇb'e iݖD&x5r-&' f&O +x(VI/L)\Pd)=9;A;ڒHIdsCń)ӔVđrs[Sn.t¥zv%mJ]^]o *pAꪩC~4O>OXk2&2D?9h3@tyQB(Zf`2\m'+_ncNs-kB~[/~VÚ1H䦌ްZ ^Fg70dIURF+G #9F:=#.pIf1Ls&ޔ2'`5TVz&!'`̋TEM}) 2ED~[[Je$4 >00OL|@x(oi Ņv[[sv"1Ct4GtOy]4"7ʤZ,w[a Vf.ʘ^ZQMxor\؅h]$723Z7Ӏ5*ǵo5fy|Woi%G/{񑋆Z;,^%\ve7 d e{f6cF1)_yQsQCހ 78V7hp BJ̗rtX^M&9ν\"kRqPUtE:$"R~ޒ9_V:Vx:o?z)vY`:n$5ar{ܸњl孶CJy G5nJ%%N*E_xA<>\TFC'C~ZeEVscPZg1PO3h<#*žJJG$N'UJ!:C ָu6+UW+Q*vT#<\ N{y=As-Pnna3T'&Zj#9ն6_*!9qNؤU_-X}>Ȧ_%].+ȆҩDžIV79<)J9ktž8o c<-?țH E>f{J))lkӵ'ܜճg j쒡K6_2 _"Om,ON9i@UH*(LVVTBgKfүxZ+rx[1p1BӵxE؅5+wEx 鐃Vc6<+뷮EFxc=[asBPW~Τm@26tHA԰be+SՕr`s:W:t/|Tky9d|=s@xc`d`p6_9@/0:b:&(: xc`d``/'_%:*  xmCAĶm۶m6mۘuUlęԍT㶪ǏO$'u17zQGSA4%=*qiJf*\ 9V' I"%OJڤZv;D_+l\rK8ҝE`3qI9^A:Qr򇺸+\Nx}'l'Ql,9>To놟ee,}o`rlDOy/sj3̐pjo V븜z*1\]mcR0@"f2OIzGP=۳HSҞZcft7PHvQuL~>(D[jWCۛ(͙kAU:7!/j3%U_95@UB3sðZ} /!Zj_y?ܦ?uYfjc7}kN=*@SDRӐJlt5T:X$^B>p:lR  > f \ 0 r Fz<lT8(@pJn$ph8 ` z !F!F!""#6##$$%&*&|&&'L'b''(F())T))**P*++(+R+t+,,,2,J,d,,---2-J-d-|---...F.^.v...///////0J001 1"181P1h2 262N2d2z22222333333445 585P5h55666:6z67F7\7r778.889~99::::gU/Z&x}ndo&\cD-k6҃z 8³<#{+/| 헾 WWف TM1UDEM_UX )x#zh dddfZѬhR4'i)-mq)%C%M5)c i] o˾rR2W1xlAk۶n.A/"I)iY9yE%eU5u M-m]=}C#cS3s K+k[;{G'gW7wO/oAp2?foٶ]l۶2s3hZhh:訓κ誛z詗諟hjFikm h`5jZXYV%֙~hg堠G{OzCb~XgR2Ҳ6)+*( &h8m香a;W{cN:Na.9_vJ6 WK\18K|@k xHof&>Sч6'xMaa Kx޻\Sg2^ܓỤ޾UJo\WJt Ξ)5'G\vصZ/O/f25{%ێ$؎m-67mƩx)nP]ec oCۙ ܼ&Q'A[$L\615$'잀=Hv j4l;40ۼVu^M*J'卢3Z-}Q]õ6ÚceC?~4Ps':#Y)͝;-`fc@ˆMYL0 -Ei9A ȝ:>ezNm#haa3!qTW[+VkBMNX ʌ5W(&$1 l]D?; kPTkS:X8eC4a9Jb:ߟF֗PK5H'tAA/connexion/vendor/swagger-ui/fonts/DroidSans.ttf FFTMQ3(GDEFD GPOSp9dGSUBlt$ OS/2ӵe`cmapۯTcvt 9~>Lfpgms#gasp glyfI; |o(head ,6hhea d$hmtxmsTLlocaۈmaxpi nameS{post;4prep! ._<O\YssiS/Z&33f @ [(1ASC@ Ds J '7+3h{fmhRh=hRhf?R%hbhh`hRhhhqhZhjhj%%?hfhfhfh%m}y9}R+H}}'h'`7PRmm3B)J?^qqHq%%+qq1Z!# R=h3hf'hhDh{hhy3dDRhfRdm{hf1=q%#?BT?,hD}9999>R@y/}}}}}h}7?^?^?^?^?^?^^qHqHqHqHqoqqqqqhfs  mRRff??NRNR  x ~1    " : D 1    " 9 D  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}bɹyqz@EYXUTSRQPONMLKJIHGFEDCBA@?>=<;:9876510/.-,('&%$#"! ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y &QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,(#p(>(#p(E: -, E%EadPQXED!!Y-,I#D-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+)#D)z-,Ee,#DE+#D-,KRXED!!Y-,KQXED!!Y-,%# `#-,%# a#-,%-,F#F`F# F`ab# # pE` PXaFY`h:-, E%FRKQ[X%F ha%%?#!8!Y-, E%FPX%F ha%%?#!8!Y-,CC -,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,KSX%Id#Ei@ab aj#D#!# 9/Y-,KSX %Idi &%Id#ab aj#D&#D#D& 9# 9//Y-,E#E`#E`#E`#vhb -,H+-, ETX@D E@aD!!Y-,E0/E#Ea``iD-,KQX/#p#B!!Y-,KQX %EiSXD!!Y!!Y-,EC`c`iD-,/ED-,E# E`D-,E#E`D-,K#QX34 34YDD-,CX&EXdf`d `f X!@YaY#XeY)#D#)!!!!!Y-,CTXKS#KQZX8!!Y!!!!Y-,CX%Ed `f X!@Ya#XeY)#D%% XY%% F%#B<%%%% F%`#B< XY%%)) EeD%%)%% XY%%CH%%%%`CH!Y!!!!!!!-,% F%#B%%EH!!!!-,% %%CH!!!-,E# E P X#e#Y#h @PX!@Y#XeY`D-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,!KTX8!!Y-,CTXF+!!!!Y-,CTXG+!!!Y-,CTXH+!!!!Y-,CTXI+!!!Y-, #KSKQZX#8!!Y-,%ISX @8!Y-,F#F`#Fa#  Fab@@pE`h:-, #Id#SX<!Y-,KRX}zY-,KKTB-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,Eh#KQX# E d@PX|Yh`YD-,%%#>#> #eB #B#?#? #eB#B-,zE#-@ `@+ F3UU0U0o0`@8F/?O_o@FQ_+s@ F+|@ F/?O@ F/@|P|t t0ttt oooouooKo nnnnKnU?gg/g?gg@fPfff?eeedd@Od Fa_+`_G_P"[[T[[I[;[ZZkZKZ;Z3UU3U?WW/WVFV FTF@mT FRP+?POP_PHHHeHVH:HGGG;G3UU3UUGU+oTS++KRKP[%S@QZUZ[XYBK2SX`YKdSX@YKSXBYss^stu++++++++_sssssssssss+++++_sst+++_ssssssssss++++_s^stsst++++_sssstssssststt_s+st+s+_sstt_s+_sstt_ss++sts+st+ss++s+++sss+^ NuJU}qq}}winfoxG:x Zy mmm{TooFxJ&V 8rtF"Jf " ^ P  \ $ 6j|X,B2Phd h`<z&>.n&TT v!!!"l"#Z#$$F$N%%6%%&&&''B'|''(B((())))))**(*****++ +8+P+j+++,,.,F,`,-H-`-x---. ....///2//00$0:0R0j0001D1Z1r11112D222333233344P44445(5\566~667,7J7:@ H@  H ?//+3/2]10+#34>32#".Py3"./""/."&5!!5&%5""57@# / o  ?33/3/]]]9/10#!#J)s)-)r)3@X!   P P  H   ?O   /3?399//]332233]22/]33/3/]9293/92393/3/10!!#!#!5!!5!3!3!!!?RTRNA+RR%TT#@}TTHPPH{-6?@34/))/!!p/<753.'4.'>2]T2f`T !W`e/YV*1[OdCB8JX[.+F3][(B1YSFrT7 !BUnJCoS5 *)ZBSkH!7-&b$9/&qYf3 ';?]<>@3<><>(2#(AA  0?>%7!-????/]]99//881032#"#".54>3232#"#".54>32 #GPPG$JsOIpL&#IqNKqM'GPPG#JsOJpK&#IqNKqL'՞,JHlv??vllu>>uJIHlv??vllu>>uJm}!S@M'JI,IH G6AGB B6B6B;54.#"2>7%4>7.54>32>73#'#".!4$;V8/B*Vd:bTH }4P7#B`}(MoG<-2^XS[02Tm<`+" )5A'1`l|Nis="AAC%#>@F)$=,Y(6!?HU86[A$NzdV*$MWc9KwS++SwK@m]O$73#.R$JqN%GjENqJ$1}]2w^Z=@ ??]210#>54'3$KqNEjH$NqK$1|Z^w]Rw$@?2/]/^]]10% '%7++wo`f`Fof )@   ` ?32/]]22]10!5!3!!#}}{?y 8@ +  @ H_ //]]+32]]]10%#>7j'/36z|{8=}5RBy@ @//]105!RѨ5@ 4Ddt H//+]]]]1074>32#"."./""/."o&5!!5&%5""5@ ?/382/8310 #!Jb'&@o))o  #ss??/]]10#".54>3232>54.#"3qvs93o~wt:BkMMlEElMMkBݱfffe貖KJᗖJJ5@!@n~ @ ??/^]]]3/3]10!#4>7'3ǰ`+baY"y{+`#<@ #o%%"o! " s"t?2?39/]3/3]3/310)5>54.#"'>32!p^KvS,"?V5_Ef(\jvA`l;5]K}QL;Z? M54.+532>54.#"'>32.StGAʊmUW]\W)5bYQ~U,$B\8kJ\&]n}Fln8`IxX9 `t@"-.2(JlCDa?(Jf=4R9C6}6)6a? N@, Vn  w_ t??39/322/]3]]9/]33332/]210##!533!4>7#?հ]{  eHH0d8{uf"11.*N@&o,,'$$(h#Y###@ Hs't$s ?3?9//+]3/]]333]3102#".'532>54&#"'!!>!cHDŀ3c[R!!Ybc*O|V.??9Z7' i7lir~C $ %NvQ 9]q +?7@ 1n "AA;o 6u,s's??9//]2]2104>32.#"3>32#".2>54.#"q5\ƅ./+#X+ZdC* 9L_;_l;>tfdJn#####  h88Y8(888H88C&CVCCC-s;s??9/]]]]]99/]3/]]]]2/]]99102#".54>7.54>32>54./">54&5TqB(F`8:oW5Cyfnu=-Lh:1V?%Cr DhHFkH$'If?~j}#>W30U?$~,XXClWEL_vI\h86e\Kx`JIZmBWX,5Y?##A\84TH@<Tje9R@34BT6ejj)=5@9o??/n   4u*s%u??9//]3]210#".'532>7##".54>32"32>54.5\ƅ..,#X+f+ 8L`;_l;?sfeJ%.;rjrDNG(TWFoN*/K`0CkBf'>@)))) 4Ddt@  H#/?/+]]32]1074>32#".4>32#"."./""/.""./""/."o&5!!5&%5""5'5!!5'%4""4?f a@/"""" d t P D ;  /   +  @H_ /?/]]+32]3/]]]]]]]10%#>74>32#".j'/3"./""/."6z|{8=}5'5!!5'%4""4fN@0@@o0 Pp?/^]]]q33/]]29=/33/]]10%5 d!ff\@= @ {hB9/o/]]3/^]]q/]]]]]]]]3]2105!5!fdTffN@0@@o0 Pp?/^]]]q33/]]39=/33/]]10 5f dBlfX%%';>@!2(('F F=/= -7Q?3/2/^]9/]9/3/1054>7>54.#"'>324>32#".'B20D+9U8SF?Qa]h86P64B&"./""/."%9\PM*)CEO50O94"*;3`WCiZT/-C?B,&5!!5&%5""5mJWho@?X`'''FF'N1 j@j;@NN, [d@6S@EI/3?99//^]^]322/]]q9///]]10#".'##".54>3232>54.#"32>7#"$&546$3232>?.#"%9La:-I4!6GY5MwR+;ob-ZRE"+.F/V{ZO=wod+V؂fv7jeU7N2M*Je?>}qaH)2A#%B18eVezD`5D(=hNݘOoR&,fEeՅw-SsE :^x@$FFII@ H/@_ H?2?9/9+/83^]3/8+]q39=/99]]99]]3310!!#3 .'ߢg;Dj4 Z$*[pg1111$Zd0 #`y $`"`??9/^]]92]]]9/]]q210!2#!32>54&+!2>54.#ÃB'JmEEyZ4A{oTrF XwI !K|\'Wg>lR7 -OxVdm:J;Y;xh(He=8^C%}#L@@H ` p  @ H %%[f$!_ _?3?3]3/+]]9/+]10"3267#".54>32.k{C;vvYN'NUa;LWlON?'QډۖN#ln,* . &@ [gZd``??]10#!!24.+3 `_B~uɢ ^\ՊC$ B@&g  Zd _O _ _??9/^]q229/]10)!!!!! =< p@@8 H  / Zd _?o@H@H_??9/++^]q2^]3/+]]q9/10!#!!!!}+7@++ )Zg--[ f,+_$_$_??9/]29/10!#".546$32.#"32>7!7pvKV_ oXH$SX].zB7x,I>73 ii,*Qډ؜V  =@# Ze   Zd _ ?2?39/^]2]]]210!#!#3!3պfVhRd W@& + { T + ; K   Z@ H  ?2?2/^]+]22_]]]]q10)57'5!df))ff)h)H{s/@`p/Z    _/?/^]3/]]]10"&'532>533L"N-%K=&;i{ 2XD^ie1 d@- f   /Zd  H@ H ?3?399++2]]]3/8^]33/839]310!##373=yr%3#@Zd_??]]31033!Ǻ=/@69 H9Z@ H H eO  @ H&  Z d H  H ?22+2?33+322]+^]]]993+3+2]+210]]!##!3!#46767##EAJI?9XJw4=GIQ@)(Ze'   Z dH  H ?22+?3+322]]]]2]210!###33&'.531MLA9LLJ CC> }q'4@ [g)))p)/)_)[ f(#__??]]]]10#".54>3232>54.#"qQ훣LLQ4krrk22jrrl4ݩllkk뫉ۙQQۉڗQQ3F@,[(8Hg@Zd`0@` ??9/]2^]]]]10+#!232>54&+37~Ϙj~3232>54.#"q1_]+Zyg3)LLQ4krrk22jrrl4݃ⵄ&^54.+d 1Qh7Z~Q%)SW\W]>q\#EgEHd@h3B@'Y##Zg555`5?5*Z f4*'_$ ` ?3?3992]]]3]10#"&'532654.'.54>32.#"EsoA"W`f2Iz]YU)@tawJCAXzFsT[\/aj7#"xp6PC?%#ShTX_2-#+q`9SC;!$L`~^@2  O  0 Z@Wgw@  H_??2/+]3/^]]2/]]]]]q10!#!5!!q^_/@ZeoZ d_ ?2?]]]10#".5332>7BɈąDYR(LrĐRMzH6bQ l@ `p@ H/@ H H @  H ?3?33++?3/83+]3/8+]39=/33103#3>7'*.Ja[JJa*߶HH@HHH@/H%D%%$%D%T%%% p@ H,o,, ,0,,@ H H %% H% H%?33++3?333++/83^]]]3/8+]q39=///]^]q3+3+3+3+3+3+103>73#.'&'#3>7)   ~  8pi^&&Zcg1rJ3l/7437/p6\.cb[&%blo1` @  7  8p@ H   /  @(' ?2?399]]/822/83^]3/8+]q39=/3]33]3/8310!# # 3 3`ZLN[{/L7s@  @ H@@/OZwO6?3?9]/^]]]92/8]]]33/8]]]]]3+]10 3#3TBB/R 8@ g  ? O f __?9?92/2^]22/10)5!5!!TM:ۑ9&@??/]210!!#39k1!?///8338310# J3$@`p ??]2103#5!!3jϕ)%?/3/103# )f%d!NH//3/10!5!NR! @ _/]/10#.'53x#RM?+.0SXQ"QQL^^#2T@)G#U44o40H @ H H V3P*R$P??3?9/22/++^]2210!'##".546?54.#"'>32%2>=%!BN`?EtU07Q4SB@Jdfa0/=hL+ZzI a-A*'Q{TECZ70"(8)Yb&MuOc 9Q3\V?/8-HW11@ I%GT0*P  P?2?3??22+102#".'##33>"32654&^m<32.#"3267ReJLfN268<:Q66{?Ֆۉ>"  %q04@&GU22.H V1+P P?3?3??]2210%##".54>323&'.53#%2>754.#"T;M`<]n<32!32>7"!4.`nHBxecn;L3WQL'(MQW`r 9XJ҇֕NGnq ۜDqP,p@N`?OG/ OP ???^]32/^]3/]322/]9/]]]10###5754>32.#"3-U|N;c'/I((:&?KD`kT# 0SAh%^?R^@ 2SG7/`7p777/7/'HYG@M H  0@`````@'@ H'2 7.5467.54>3232654.+"32654&#"&/_],!)8]Q$A͋kj5'BW/*6@E+G12ba%O@;aH7ZA#L?)\lcdgidcjJq#mEL^5  (!/Pm=Xa4*PqG<[B* R5=Y*?Q`3Yb4 %@.sl.:! ,M`spow{tx2@GU` G TP ?2??322]10!4&#"#33>32\ipQnC ER\0Â4f`2+?*3u%@  GTS??3/22]10!#34632#"&d=-'?,-=J)<6 +:98u!.@# #G  T"S P??3/2/22]10"&'532>534632#"&B0?6#.#"Hm=-'?,-= 'A3M{W/_<6 +:98^@ D@ H/ G T @ H H ??399++?2^]3/8+]333931073 ##3V%om7i%RZ6d@ GT??]10!#3d^,e@?# G   g w  G,U... .P..GT-#P( ?22??32232^]]]]9/]]]]210!4&#"#4&#"#33>323>32diIfAciMh? BOY.x&IW`2Â/[XÂ4f`J+?*X^/D-3^0@GU` G TP  ?2??32]10!4&#"#33>32\ipQnC ER\0Â4f`J+?*3q-^0@HW!@!!!!H V PP??^]]10#".54>3232654&#"-C}ogGC|ogG'ՑLLՉӑKKӈ?^06@.HW22& G T1 P +P?2???3222]10".'##33>32"32654&;`M; :M`<^m<754.#"".54>32373#46767#5LiAAlQf]n<H;?hK)9GX^3_QJ+P=%Z?^5H@-%GW7?7_777,G V6&)P," P?2?992]2]]]310#"&'532>54.'.54>32.#"?:m`m;LTY,A[95\HHsP+7dVaH?AGfb8^FHqP*-PxQ(#");$212#4./7#".5#5?3!!-*# (04>jM,Ni?  Ne}QNabJ0@GU`G T P??3?3]210!'##".5332>53u ER\0[\/joQnC+?).bi=4e`:Jm@ H H H@ HP/O@ G  ??39]/8^]]]3/8++9=/3+3+10!33>73w  ǼJ!hl``lh!cJ/ù/@ H/ H' @ H  H  H@ HT''@ H[  H'  '-.H.@ H...1 1011@-  'fv?33]3?3]33/83^]]3/8++39=///+]+]3+3+3+3+3+3+10!.'&'##33>733>73   翃  Ĭ   h-24:>?:2j%J-ig[Wa_!k"\_XWhm/H#J @ 6 9k{W:JdtX5E   6@H@Hk{W:J  0        ; K (    ??/]]]]]]]^]]q]]]++]]]q9=///]]]]]]]]]q3]33]]]]q10]] 33 # #u3fL J"d"H@ H$$$$P$$/$O$@ "#P?2?333/83^]]]3/8++9=/331033>73#"&'532>?  ǼNAVtP4L@#0F4%9J(XXR#Va^!c'QZ1 ,@)R5J l@  H@ H ? _   HH?@ HO HO?2+?2+/]+33+]]3/+3+]310)5!5!!5 }D='@@% '#  #_)??9/]]9/]332/210.54ᒑ4>7-A(M_6}}6_M(A-wssw0=# !GnNNgVVgMNnG! #=0i{ zj-@0@p@??/^]]q103#閖3)@@% $$$# ??9/]]9/]332/2104675.54.'53"5>5wssw-A(M_6!A`>}6_M(A-;jz {iL0=# !GnN4H-VgNnG! #=0fJZ#<@ %%   @H  ? O o  /]3/+2/]]10.#"563232>7#".%7-)<;8d27C/%7/(<;8c27C !,l  !,l ^A@ H0@ H /^]//+3/2]10+3##".54>32y3#..##..#H&5!!5&%4""4%Z@%F %'@'H 0 @  s!s@ H??99//+33/^]]29/3210$#5.54>753.#"3267vnLWb45aVH.58<;Q6 KljˈK !  %D#(u@ o# H@0 H**!@ H)!u /"""""""""ts??9/]323/+3]3/++399//^]32102.#"!!!!5>=#534>jBB8K0RY@+ )DaCՉDW_2{#7@#. !p99 $@1 H8  ) 3   ? o  /]]]2/]93]23/+]2]3/]9/]210467'7>327'#"&''7.732>54.#"#b/l<7.54>32.#"#"&'532>54.'.7>54.'-:KU7dVaH8AGcf9_FHqN*)4EL;l`l;LTY+E]73^LIsP)?eH#)!AlR/&)3S@-&rT=bD%( ';9.,/ANa>4UD1&mNGoM(! '3--1>NdY%?:7 $.8"&@;9-:3 j 5@! @P 0  /]]32/^]]104632#"&%4632#"&38('::'(8w8(#:&(8s6015522560 &522dD%AUj@C"""&L444WB& /`p-G;Q-?/99//]^]/]q99//3/10"32>7#".54>32.4>32#".732>54.#"{=^@!=_C69815<#fe36id?;>4a6ahha66ahha6meꅅeeꅅe,SxKNxR+  BzgexC!ha66ahhb55bheeꅅeeDB-N@/-///O///$ `  .-'?99/]2/]]2210'#".546?54&#"'>3232>='/8#+H4c=80Z*03u<}w3D)2*":+R# 3M3flH9d$jz:9+3-,A,1Rs `@ P`   @! H    /3/39=/93333/]]+299//]310%R5uu6tt)NNNNf9@$yVK8 ?/]]]]]]]]]10#!5RBydD:N@}R  E---P;/`p&@4J&??99//]^]q3392/]q99//]^]q929++]10]32654&+###324>32#".732>54.#"H[OSYF-9C5*! _騞6ahha66ahha6meꅅeeꅅeHEJ;0K9( nW%G8`}ha66ahhb55bheeꅅee//3/10!5! {V'C@, ))0@ o #?3/^]]]q/]]104>32#".732>54.#"{2UsAAsV22VsAAsU2{4F((F55F((F4AsV22VsAArU11UrA'E44E'(G55Gf :@!  ` ?32//]]333223]10!5!3!!#5!}}}{1Jm@@ O   @ H@H ??9/+3/+]210!57>54&#"'>32!m9H(B63]-N6RUC;"A@2&^0A!?[92VU[79h0a@<2_222@ H''@ H/_&#, ?3?39/^]9/+3/+]3/9/910#"&'532654&+532654.#"'>32NQEXX(S~VF{9?5bXk`bb\T#/;a3E=DL,EiF#NjjN73#//*?MQ#yLQQ"QXSJ7@" G U `pGTP  ?3???2]21032>53#'##"&'#3djoRnC 0gHj#4e`:ST.*&(#U*6qf7@!0@P    /2?/]]9/^]10####".54>3!fxy=U_m32#"."./""/."&5!!5&%4""4#9@ @ H //9/+9/]33310#"&'532654.'73-1GP.?%Zy9":+all+1# s):?J4@!O@ H 0 ??/]]33/+]103#4>7'3&^J<<8(I`B.@ H!! ?]+10#".54>3232654&#")MmD?jN+)LmD>kN,:KVUKKUVKmSY//YSSX..XSwyywxssTs V@/    @     /3/399=//3333/]]299//3]10 '7'7tt6huu5eN\\NbeN\\Nb?&{'J0@?@@]5]]5]]]55?55,&{'5t3(@@p@]]5]]5]5?5&u'?<@'8p8P88333d3P303 33L]]]]]]]]5]]55?55DwD^';D@2(('F == F@H ''-7Q/3?2/9/+^]9/3/103267#".54>7>=#".54>32P'A20D+9U7TE@Ra]g85Q64B&#..##..#%:[QL*)CEO50O93#*:3`XDhZT/-C>C+/&5!!5&%4""4s&$CR&%+5+5s&$vR@ !&l%+5+5s&$R&%+5+55&$R@ &,%+5+5+&$j!R@ &)%+55+55&$}1@ P@ %+55]]]]]]]55V@* Z$4T  g@  __ _ O    _?3/?99//^]q2/8329///]]]]}32310)!#!!!!!!#V%˺=ul;<}&&z O*$ %+5s&(CR &´ %+5+5s&(v?R@ &J %+5+5s&(R & %+5+5+&(jR@ & %+55+55>ds&,CR & %+5+5Rs&,vxR@ &j %+5+5s&,R@  & %+5+5@w+&,j R@ & %+55+55/]@:[g! !Zd _?o@H``??9/+^]q3222/2]9/103!2#!#%4.+!!3 /_`B~uP %\^`ՊC$5&1R@  & !/ %+5+5}qs&2CTR(&.( %+5+5}qs&2vR@ 4&X(. %+5+5}qs&2R@ (&0( %+5+5}q5&2}R0&1? %+5+5}q+&2jR@ 1&(< %+55+55-{ H@HH H H HH@0H@  P   Pp ?^]q2323/]3333]10++++++++ 7   'i=Bh?fg?i>gf=g}q&1\@:)*'[ g333p3/3_3[f2)*-"_  -_ ?3?399]]]]9910#"''7&54>327.#"'32>\[^Q훽NZa[L^BP.0C0rGrl4jX/rErk2c޷lGNd*k*&N QڊTQs&8C=R& %+5+5s&8vR@ $&H %+5+5s&8yR&  %+5+5+&8j}R@ !&, %+55+557s&<v1R@ &c %+5+53<@![g Zd``    ??99//22]]10+#33232>54&+37~Ϙ~54.'.54>54.#"#4>32+?K?+'F98X=!8eUa5AHL%8Q4+H8?U5)>H>)!W~Q'#"-@($;8:#(DCF*6O?6:C,*>)0SANhU%&Lt^!&DC3&93 "%+5+5^!&Dv5@ ?&39 "%+5+5^!&D@ 3&3;3 "%+5+5^&DŽ@ ;&)32>32!32>7#"&'#".732>="!4.^7Q4SB@Jd+3gal9`1UNJ%'KOU1>"L_tJG{Z4aO=hL+ZzI n 7T3ECZ70"(8U]U]Gnq rs6U;'Q{R\V&MuOc 9QcDqP,qo^&FzB /&  %+5q!&HC(&.(%+5+5q!&HvR@ 4&v(.%+5+5q!&H@ (&0(%+5+5q&Hj@ 1&(<%+55+55g!&CU& %+5+5B!&v0@ &t %+5+5U!&@ & %+5+5%&j@  &%+55+55o-#'9t@F(H# """ W;@;;;;2H V: #!!-P07P??99//]]339^]]9///9210#".54>327.''7.'774.#"326-C}ohG?vif+xZJ(U/FAz;JCoO,"FnKMmF!!GmL=ܘOBww~A;<vQr7{ H,quAݰ8kR2.XUL}Z1&Q@ !&"0 %+5+5q-!&RC &״& %+5+5q-!&RvP@ ,&N & %+5+5q-!&R &( %+5+5q-&R(&)7 %+5+5q-&Rj)& 4 %+55+55f+`@0-"Vf(8@( H'  `?3/^]3/]q/3+3]]3/]105!4>32#".4>32#".f)*  *))*  *)#/ /#!//#/ /#!//s/$-\@;'(%H  W/@////H V.('+"P +P??99^]]9910#"''7.54>327.#"4'326/C}o}bDP?FC|o?q1DP>EK-D'rH-'ՑL5mJHՉӑKlIIцT3џc{!&XC&! %+5+5!&Xv`@ '&W! %+5+5!&X@ &# %+5+5&Xj$&/ %+55+55 !&\v@ /&g#)%+5+5? 18@/H W33' GT2,P!P?3?3??2222]10>32#".'##3%"32654&d:M`<^m<73y3l46j3yDC;;CE"a77a"LQQ""QQLm1@@-?O_0  ?O__/]^]/]]10#".54>324&#"3261#=T12R; ;R20T>#u?12?981?3Q88O33O87O45<<55<<8@#/  @H@ H /]23/++3/^]]10".#"#>3232673(OLF -0h!5J.*QLE-.i!5J#+#5>73%'.46z|{8=|5P %@_ _o?/]/3]10#>7B'/37y}z8<|5?y 5@ H _oH?/+33/]+10%#>7j'/36z|{8=}5 b@H_o_o P`p_o ?32/]33/]/3/]3]]]10'>73!'>73'.4'.46z|{8=|56z|{8=|5 b@H_oP`p_o _o ?22/33/]/]3/]3]]]10#>7!#>7B'/3H'/37y}z8<|57y}z8<|5? ~@Q 0@`pP`p_ _o@ H ?22/+33/]/]]3/]3]_]]]10%#>7!#>7j'/3H'/36z|{8=}56z|{8=}5mF@$/_o_ o  @  H/]]/+]]]]104>32#".$?V21V@%%@V12V?$Gd??dGFd??dRs<@ H?//9=/33/]]+210R5uu)NNRs?@( ??//9=/33/]3]/]]10 '7uu5eN\\Nbh@ ??/82/8310 #h՝+J J F@*  _@ H   /  ??9/^]32/+]9/33210##5!533!5467}y}  oC*c1 %*(n4j  0i N< g < . .D*   h   *  ,;   (  8 \Y \ Ts Digitized data copyright 2007, Google Corporation.Digitized data copyright 2007, Google Corporation.Droid SansDroid SansRegularRegularAscender - Droid SansAscender - Droid SansDroid SansDroid SansVersion 1.00 build 113Version 1.00 build 113DroidSansDroidSansDroid is a trademark of Google and may be registered in certain jurisdictions.Droid is a trademark of Google and may be registered in certain jurisdictions.Ascender CorporationAscender CorporationDroid Sans is a humanist sans serif typeface designed for user interfaces and electronic communication.Droid Sans is a humanist sans serif typeface designed for user interfaces and electronic communication.http://www.ascendercorp.com/http://www.ascendercorp.com/http://www.ascendercorp.com/typedesigners.htmlhttp://www.ascendercorp.com/typedesigners.htmlLicensed under the Apache License, Version 2.0Licensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0http://www.apache.org/licenses/LICENSE-2.0Droid SansDroid Sansff  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~uni00AD overscore foursuperior3O ,latnkernfPjhJ@Fp h " " ( " : ` v | " " ( ( > ` ` *j  hhhhTrrrrrJ. " " " " " " (xxxx *HH,$,)7R9R:f;)<R=)FGHJRTW)Y)Z\)\))))R))-{&*24789:<7 &*24789:<,79;<) ) )&*24@)`)))$,79:;<== = )")$9:<@)`)==) )&*24))) )&*24)) &*24789:<$,79:;<=33$&;<=q$,79:;<=7JR R")$&*2467DFGHJPQRSTUVXYZ[\]qRR $>R R")$&*24DFGHJPQRSTUVXRR>f f$&*24DFGHJPQRSTUVX]ff ) )&*24FGHRT))DR R")$&*246DFGHJPQRSTUVX[\]qRR = === f fYZ\ff) )J)) ) )))[] f fDJffR RWRRR RIRR ) )R))= =I==R' DD"&*-^24789:<=;IWYZ\% DD"&*24789:<=;IWYZ\% DD"&*-^24789:<=;WYZ\'f f DD"&*-^24789:<=;WYZ\ff) )&24))) )&24))$ $,-679:;<=@`$0=DRR R = )")$&*-02467'9):@=DFGHIJPQRSTUVXYZ[\]`=qRR  o oI[] = ="FGHIJRTW== = =I==)$,)7R9R:f;)<R=)FGHJRTW)Y)Z\))))R $')) ,, ./ 257>DFHKNN!PR"UW%Y^(.4>CIU[abe latnPK5H_*.4connexion/vendor/swagger-ui/fonts/DroidSans-Bold.ttf FFTMQ3GDEF GPOSp9GSUBlt OS/2 `cmapۯTcvt KRQ\fpgms#gasp glyf}]p uhead ,6hhea ad$hmtxILlocada"dmaxp nameJ(post;prepeq֊ be,_<O\YwsswygU/Z&c33f @ [(1ASC Ds ^ Ju+-hb ?R!R=\?hXR?=HuNh?h\hNh9hhVhLh7hHh?HuR?hXhXhXf3#w{dwB9HND w w 1^d)jP1N 3BJLVfff)jqqqffybP/Psb P7hhXJuhhRh\hhjd/RhX=dm\hX/;L =qHu\9T . . ZB333333`w{{{{*B6/D w w w w whm wsVVVVVVVfffffqqqqJfffffhXfPPqTRRR?%?bRR w x ~1    " : D 1    " 9 D  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}bɹyqz@EYXUTSRQPONMLKJIHGFEDCBA@?>=<;:9876510/.-,('&%$#"! ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y &QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,(#p(>(#p(E: -, E%EadPQXED!!Y-,I#D-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+)#D)z-,Ee,#DE+#D-,KRXED!!Y-,KQXED!!Y-,%# `#-,%# a#-,%-,F#F`F# F`ab# # pE` PXaFY`h:-, E%FRKQ[X%F ha%%?#!8!Y-, E%FPX%F ha%%?#!8!Y-,CC -,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,KSX%Id#Ei@ab aj#D#!# 9/Y-,KSX %Idi &%Id#ab aj#D&#D#D& 9# 9//Y-,E#E`#E`#E`#vhb -,H+-, ETX@D E@aD!!Y-,E0/E#Ea``iD-,KQX/#p#B!!Y-,KQX %EiSXD!!Y!!Y-,EC`c`iD-,/ED-,E# E`D-,E#E`D-,K#QX34 34YDD-,CX&EXdf`d `f X!@YaY#XeY)#D#)!!!!!Y-,CTXKS#KQZX8!!Y!!!!Y-,CX%Ed `f X!@Ya#XeY)#D%% XY%% F%#B<%%%% F%`#B< XY%%)) EeD%%)%% XY%%CH%%%%`CH!Y!!!!!!!-,% F%#B%%EH!!!!-,% %%CH!!!-,E# E P X#e#Y#h @PX!@Y#XeY`D-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,!KTX8!!Y-,CTXF+!!!!Y-,CTXG+!!!Y-,CTXH+!!!!Y-,CTXI+!!!Y-, #KSKQZX#8!!Y-,%ISX @8!Y-,F#F`#Fa#  Fab@@pE`h:-, #Id#SX<!Y-,KRX}zY-,KKTB-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,Eh#KQX# E d@PX|Yh`YD-,%%#>#> #eB #B#?#? #eB#B-,zE#-@3 P07GW/@P0%5UeWfF@? F33U3U0@`_ 030@`F趴 F@ F/?З/?OόgFt&n6nUg fffee dd'^7^&]\Z[Z&Z6Z3UU3U/ WW+WWV"V2VVUT@!T F SSFO7OFN7N[k{ FH FGF@1F F3UU3UUGU0oTS++KRK P[%S@QZUZ[XYBK2SX`YKdSX@YKSXBYssss+++++++++ssssss+sss^sst+++s++ssssss++++ssssst+s+ss+s++s+s++++sss+++++ssssssssss+^ Nu^{18L+ff6?/!ww6? ^}TLyJx71%UX$^B>p:lR  > f \ 0 r Fz<lT8(@pJn$ph8 ` z !F!F!""#6##$$%&*&|&&'L'b''(F())T))**P*++(+R+t+,,,2,J,d,,---2-J-d-|---...F.^.v...///////0J001 1"181P1h2 262N2d2z22222333333445 585P5h55666:6z67F7\7r778.889~99::::u]@B/?wfxi ` ?//]q3]]]]2]]]]]]]10#!4>32#".3Z0@%#?00?#%@0/A((A/-@**@B/@ _ ?33/]3/^]]9/10#!#))))-@P!   ` ` p  H      T 0 @ [?O   /3?399//]]]]]]]]]33]2233]22/]]33/3/]9293/]]92393/3/10!!####5!7#5!333337#/MNLJ/!MMNN/Ljjiib%3<C@F&.@#@@?@@:0 44+4{444)OE==$=t===@? H-*AA&9.@@@@&%@H%%# &@&P&&&&&:P`@/]33/]333/]]33/+9]]333333/+]3]]2]9/]]]323]]3210#5.'&'.'.54>753.'4.'>5%5ifBpbY+*cjm4 [[-9j_WdeA>'_^. +;84967K`>  &>#L^rHK{[9 (+)#J\rR$ </?0? "-A1 H?@ H: H5 H@$ H H( H H#8.Y""V  !!@#!!).C +=&3"!?/??/99//883]3]10++++++++32654#"#".54>32 #32654#"#".54>32;-21/`2-)V[UW,(UZVX-+p-21/`2-)V[UW,(TZVX-}|{}lv??vllu>>uHJ}|{}lv??vllu>>uR-9I@A'G():::HG#$-&DDDH67;K(( @" HK.G 67??''3-$#G3??3?99/39/3/+3]9///]]]]9]9]10)'#".54>7.54>32>7!%32674.#">aPtxËL%Da<&5 =mZVi<-Lg;#5=)6F+ 9M-73#.R$JqN$HjENqJ$1}]2w^Z=d@  ??210#>54'3d$JqNEjH$NqJ$1|Z^w]?V#@@1?2/]/]]]10% '%7)u!㜉'm)hy9w)hpX @  /3322/222210!5!3!!#ondq? V@A/? < L y   *  &6F/?O @ H /+/]3]2]]]]]]10%#>7!'/36z|{8=}5=V@ ?/]]105!=u9&@/? `//]]]1074>32#".u0@%#?00?#%@0/A((A/-@**@D(@ ?//833/8210]] !D!J?)!@n#n tt??/10#".54>3232654&#")7y|=7x~~>JVjh[[h5I.۱ffgf@~\1%@n `??/]]33/310)4>7'31 NIOP! wN'!/@!n#@P`   ?2?39/]33310)5>54&#"'>32!'+XAjL*YKOP-bvXiv?54.+532>54&#"'>321UsCEٓvZ-dda+VrD%Sbhf\zIai0SG;*ctLl~EoLy[=`xC'($ :Q0-I3!9L+NX#4'/Y= 8@ n u ??39/32/29/]]332210#!!5!3!54>7#=m# -//i 1>B<- *^/V(b@#%&&&&"$! H!{!]!m!!!n*@ Ht %s"t ?3?9/]/+9/]]]+933]3102#".'32654&#"'!!>V^xDJՊ7lcY$#\cd-;94{7 U:plwF  #oylq BL+);M@/" ( !  7/n =7nP`2u*t%u??9/]3/]29/]10]]]4>32.#"3>32#".2>54&#"L;eّ230&U+f+ 9L_;_i8C|nlO)C1Y[.L63KmiпyE Cxf$?->vowEM?`Bk{$:H%3eQ27'-@ s??9/3]/]2]103!!`H!':N@j  %  #JJn00nP@@n######((nP` 66EE4EDEdEEEE-v;v??9/]]]]99/]]3/]]]]3/]]]]99]]10]]]]2#".54>7.54>32654./">54.5[zH(F`8:oV4Hmv~A,Lf:1V?%I|v3L2ih#7F#,H3!9)+9 8+*:,XYBkWDL_vI[h86d[Kx`JIYlAWY,(C0cQ*C903=H8&8#*=/%&1>(#8&?);G@* "('  7n=/n 2u*t%u??9/]]/29/]10]]]#".'532>7##".54>32%"32>54.;eْ230%U,f+ 8L`;_i8C|nlP)D1Z[.L63KFiѾxE Cye$>.>vowFM?aBj|$:H%3eQ2us'0@)))/)?) `#/?/]32]]1074>32#".4>32#".u0@%#?00?#%@00@%#?00?#%@0/A((A/-@**@g/A((A/-A))A?s k@P < L y   *  """"/"?"  `  &6F/?O @ H /+?/]3]/]]]3]]]]10%#>74>32#".'/3/0@%#?00?#%@06z|{8=}5/A((A/-A))AX`@A4Ddt5E&/O:J) 0@/]q33]]/]2]]9=/33/210]]%5 H}X2@ II @/]]3/]]/32105!5!XH'{X`@A;Kk{ 5E&/O:J) 0@/]q33]]/]3]]9=/33/310]] 5X}H=Ju';8@2((' H= -7M?3?9/9/3/10]54>7>54&#"'>324>32#".+D0*:$MOEUf+emp6fr=7S7*5 0A%#?00?#%A0J3SKG&!438%9J:*-#1^V?cUO,!1,/ 3232>54.#"32>7#"$&54>3232>?.#"-\^&C8) 2>K,SX.>tg-`YN #4"LmQFʄ8vuq3^債h6f⁞ l>L?*=' 6;R3_[#//$9iYg}E  ]**6 6\{EȊHfՑK"*1g|ßq=epc'Gc=2Ri3@ &6Fv@?H )9IyH `p@_?2?3]9//83]]]3/8]3]933999910+]+]!!!! .'de{^  ]\D`@Rcd#54&+32>54.#ЌG:S67_G)Fv6:N0ir=S35V@'Wg>lR7 -OxVdm:s*?*TI4J-)C0w#B@+e  !!Z!j!! g%%%`%%[f$_ _??]]]]210]]"3267#".546$32.%Y]0+Y`Yi0^bg;NZmddREsu}A(% lo70':# &@ Zg?Zd__??]10#!!24.+326#ec1]Wr^\zt8H F@*g  Zd _L; _ _??9/]]]]]]22210)!!!!!J W@:g  \d _oL;_??9/]]]]]]]2]]210)!!!!Fw''D@('' %\)`)p))[ f('_+"_"_??9/]]]]29/10!#".546$32.#"3267!D:vNZdu]gD^ft>+\eB[(5  ai2(".GqlH 1 G@+ Ze  Zd _L; ?2?39/]]]]]2]]210)!!!!!65w=B ;@#  @ H0  Z _ _?2?2/]3323]+]10)57'5!gRRRNR9R4@# Zeo '_/]?]2/10]"&'32>5!Ab"%Q0.O;!6IR  1R>~w8 r@N9y  I Y  9IYy di  E U  Zd $ ?3?399]2]]3/8]]33310]]]])!!7!t6zNX-`V@m)@/?Zd_??]]103!!6J H @Y HG6'I; ) H] eX 6 F   '  ^ d  ?2?33/3]]22]933+]2210]]]]]]++!#!!3!!4>767# <P{\V%NLFX^JBJL$T[@, H9I +I H^e  H @H6 F   $  F  @ H ^ d  ?22?33+]22]]++]+]22]]+10)#!!3&'.5!w >RMLA9PLJ CC>w'(@[g)/)?)[ f(#__??]10#".54>3232>54.#"OOOO (S~WYQ''Q~XWS(ݩllkksDDssDDm=@&Z ?_Zd__??9/]2]10]32654&++!!2=wO:٠Gͅ@humh`P?uw/W@8&6&[g1/1?1[f0;K[)  +_!_ /??9/83]]]]99]]10!""#".54>3232>54.#"'OwQir OOO (S~WYQ''Q~XWS(wѬ,mJlkksDDssDD ~@P  ZD   Z d gL;` _  ?3?9/]]]]]]]92]3/8]39/]9]]310]]]32654&+!! !Tpx~O (CW0oX&G8-gdhXyKz_G54.'.54>32.#"CyjT0bee23I-#?Y7.reDAxj5ecd5d-NJG$NS7W>K~[2bo<,, +")9")?74Dedbk8&  SE%924!(Se);>@' o 0 @  Z@_??2/]3/2/]]]]]10)!!! 0@  ZeZ d_ ?2?]10]]#".5!3265 EԏϋH5 ?^?uNrĐRMziQsI"X@+   `po@   ?2?3]/83]]3/8]3]93310]]!!!>79899JP``!!`_Pj6&@m 5)595I5f%v%'%%i$y$($ $&6Fk{ H dt6FV%k{9IY* dt@> H-V%%%%Y$$$$  -556`6p6666688@&5$ { , < L    -?23]]3?3]]]]]33/83]]3/8]3]9333]]3]]3310]+]]]]]]]]]]]]+]]]]]]]]]).'!!>7!>7!    1        16DJF;;EJD81=LTPEDMRG7 3 7GRMDEPTL= |@8    `p o @  ?3?399]]/83]33]]]3/8]3]933333]10) ! ! !cV N^)+q@  0  ?@dtZ0@ H?3?9/3+3/]92/8]]]]33/8]3]]]10]] !!!VNDDP\Z/1 t@1iH  @ ` p  P O f@HO __?2?23/]33]+]]]]3/]33]+]10)5!!!k}s"@??/]210!!#3s B(@ ?//833/8310]] !!!J3 @ ??3/2103#5!!3qT=7@+   ?3//23/39=/3310]]]]3#EDJNH//3/10!5!NRLP! *@E _o_/]2/]/33/]]10.'5!"_\LV+.0SXQ"QQLVu.a@>    @ .FU0O0000&G0  Q:N)N??2?3]9//]]]229/]10]]]!'##".546?54&#"'>3232>5); !BNa@DtU0PHHEcTpe=T3D7*H5-A*+W[ TEB*#/6/A(F;9S6w08@ .GW2&FT1+M  M?2?3??2210]]2#".'##!3>"32654&Vf99hX8WD331 6GZ03G,,I6[UUsJ؎ْJ(3{!M!''#<-%JqK!Q~U,fs<@&   !!/!O!o!GV M M??]]3/]310]]".54>32.#"3267qxIKvVKXBz7oddkWJ%FGMBٗ:*&%-# f=08@  %HU2.GV1+M  M?2?2??2210]]".54>323&'.5!#'#72>754.#"Vf99iX6ZH9 1; 6GY76L/.N;`Z[J؎ٓJ-;#'("M!f"=,%KpK!Q~U,fDs)e@A  %%% HW++0+FV*9I(P|ON ??9/]]]]]]2]]]9/]10]]"!.".54>32!32>7dQk0H xʒQJro}CV%C_=3[VT,(QZhrz3V?$RFבܓJCz@gG& ! )HJ@,  H/FNM ???32/]3/32]]3/9/10+#!#5754>32.#"3Ϩ4`U\~,HD.<1yyRRkT# M7.54>7.54>3232654&+"32654&#"=6jj6 *8QY0Lrr9*FY/)!$6"Xg8lh21* \0N9bg>4#nDEH@?I\3"I*Ud7%%LuQ_k9+QrH=Z@( *3 4-(&rZc4/$XJ?* 5f[dd[Zjj6@!FU0 F TM ?2??22]10])4&#"!!3>32jKN;P011`S`4yy0^Y*]'.,WM/dl/@0` FTS??3/]22]]104>32#".!!-=""<--<""=->1+9##9+*:##:^'E@,  FU))0)`))S### 'M?]?3/]]]22/210]"&'532>5!4>32#".f0f"6"-!1'W6-=""<--<""=- 'A3)Me:k+9##9+*:##:n  H@6 H0$ F T H ??399]+?23/8]]]33399]++10]]7! !!!pXlw1`TRJ @0`FT??]]10)!1s*q@4  Fy8& #F"U,_, F T+@ H'M # ?22??322+32]9/]]]]]]]210]])4&#"!33>323>32!4&#"`HM:M.)CPZ.s+DR[.HMm\yy0^Y^+>(OU+>('yyjs;@$EFU0 F TM  ?2??22]10]])4&#"!33>32jIP

    (/dlfds 6@!  G W!_!GV MM??]10]]]]32654&#"#".54>32^ji^^ki]GwoLGxoL1ؔMM،ؓLLws08@ .GW2& F T1 M +M?2???22210]]".'#!33>32"32654&7WD4+6GZ7Wf8:i3G,,I6[UU(3#7;J"<-J؎ٓJ%JqK!Q~U,f=s08@  !&F#U2GV1$" M,M?2?2??2210]]%2>754.#"".54>3237!!46767#Z7K./M:`Z[Wf89iX8ZI8 6GZ%JqK%Q~U,J؎ٓK-;#9 !"=,Hs@@! HFFTEU ?3]??2]]3/+]102.#"!33>  ;cG'-8EWsCmO^+F1bs7c@ !!' HFW9909.@ H.F V8.+N( H($N H ?3+?3+992+]]+310]]#".'532>54.'.54>32.#"@vh7^TN(*]\W%):% .YKIkE"7*L=GrR,LXX,"%!%/"!APgGNuN'..$.,&!'=Nh/L\  H@4 HO_oF _ o  NM??332/]33/2]3/]+310+%267#".5#5?3!!f-Q*+KI~\5X@"UlfA>d^;@#J FU0F T  ?3?2]/]210]]!'##".5!32>5!{)ER\0R`41IP

    7!u?@u^9{15w9}s^33333@ H1 H$$$$@ H#### H@ H H@Q H H$$$### 333*& **)** 12222@ H225555@1#  I  +F?33/]3?3]33/83]]38+]39]]3]3]3]3]3]3]10+]+]+]++]+]++]!.'&'#!!3>7!3>7!V   Z/q  zPu  u+?OY,gwwh,ZO@}^'moc=FI@1 \icbqp' X^ @[   iZ9I( FVf'7  @ H  /   @ Hi Z 9 I *   @ HfT6F$  ?3?399]]]]]]+]]]]]]+/83]32]]3/8+]3]9]]]]]]]]]33]10]]]] !! ! !ZZ};#PjP^@.8 7  ) 9     @, H  p  &6@ ?2?33]]3/83]]]]]]3/]]3/8+]3]]]]]93]]]3]]10!3>7!#"&'532>?N PF>֡4L@#0D1# ^4v/8:9u /B)87m^ |@IYiH   @ H   @ HFVf@H@ HNN?2?2/+]3]+]+]]3/+9/33]+]10)5!5!!mVFʹQ(N@2 ( H% H!0''oI!"??9/]]]9/]32210++4>'4>3".5}>aB!&c(A-sz-A(c&oR+D0>JiC  6+ջ# n^+6  CjJ;/@ 0@p?//]103#!(Rس H@) H %(%$o$$$I$$$??9/]]]9/332210++#5>5&675&'4.'523"&c(@-zr-@(c& Ba>}-JjC  6++^n #++6  CiJ0D+RaX'}$\@,(H %  @ H&   H @ H ?_@H/+]33/++]3/10+]+].#"5>3232>7#".%9/*><93N39F0&90*><9e39Fh !,67  -m u^i@J[/?wfxi` /?/]3]]]]]]2]]]]]]]]10_]3!#".54>323^0@%#?00?#%@0^1%/A((A/-A))A)c)@ %%%%++++n@ H**?*!u(v  /]3]/3]+]]29/32105.54>753.#"3267\h88i[&LG?V587B\;rL23|E KljˈK    (SW%RB&@j $$*$ 'Wn!k{:   @`c @w  Gst?2]]?]29/]32/]]]3/]399//]]]]3]]]]]210]2.#"!!!!5>=#5354>nP]Gu?CKN,5*C/?o0"#M_ۏ7Q:(*:R:qd.\ "6@_327'#"&''7&732>54.#"+f36`/},c68c+}53D'(F55F('D36c,*g68b-}}{}[j'E33E'(E33Eb@ O@<  @ n  @  @ H ?3?99//]]3]+3232/]33]2]292/8]3]933/8]3]9310!3#3#!5#535#53!59<\Zݲ/$@0@p?/99///]32103#3#j)CV@51E11&120B00$0:J))@ H  H$@V H$H'D HRMM(MM!!:'XoXXXX@ HDD'DD00?$HRHRHR 05, ?2?299//3333/]3/]3/+]23/]99+99+10++]]]]]]4>7.54>32.#"#"&'532>54.'.7>54.'y%0?F:k[fURDNQJ4Q8GuS.E8>?>renF'Z\Y'8J--QBLxR+qv 4[F %,K?2(vKAkL)/% 3.0*''DSe>d{%(iJJwT.)&# *'&* @Qf[?a3 $, 631$,%%@ #/]]32/2/104>32#".%4>32#"&%33&&33%&43''3>2HH$?]?]99//]]/]]99//]]310]]"3267#".54>32&4>32#".732>54.#"aj`k999vMkk64iiSDJq}6ahha66ahha6`ޥ``ޥ`򔃇D|jg{D,":ha66ahhb55bhޥ``ޥ``/.@ H  H H@D H .00000000@ H%O _  @H .((??2?39//+]3+]22]10]++++'#".54>?4&#"'>3232>=(qD2Q: +QwKZ;6(b4B>[DeB!&/ & 3$n:@7T9F="&$'7 $R^\ [@2 / _      ?322322333]]2233/]33310%R55=wwwwX?@ /3/10%#!5!#l=VdD 4H@W ?@ `  ??'J55     p     ::.DD ?]?]9///]]93/]]99//]]329910###!232654.+4>32#".732>54.#"MB/B9/ `6ahha66ahha6`ޥ``ޥ`^npR9B#. ha66ahhb55bhޥ``ޥ``?/10!5! \'@ )#?104>32#".732>54.#"\6^~HH]66]HH~^6*9 9**9 9*qG~^77^~GH~]55]~H8**8 9++9X D@(   @ H/+]3322//33223310]!5!3!!#5!onq/JR@3 H H   / _ Ee ?2?3/]33]]2+10+!57>54&#"'>32!y.=%0((W5{AmBmM+6T54&#"'>32QY3J1LABIJE&@0p\4@$ 23/T9e>g>jM,Ed *7B$y##(265&'&2&(/>!7!L0/*V *6>?:LQQ"18;82j^9@"B F U0FT M ??2??32]210]32>5!#'##"&'!!KQ:N01+ #iK6Z1yy0^YUU.,*+%T$Jq5@ H   /2?9//]9/+10####".54>3!=U_m32#".u0@%#?00?#%@0/A((A/-A))AK@0( H??//9/]9]/]3/33310+#"&'532654&'73HwW-H%'%+J\N:-9Z>! #%9= "/=\JH7@$/_p ??3/]33/3]10#4>7'%3HNm-J=>4 =9Y H @5 H H H!!!!!!!!@ HO _  ??/]+]10++++#".54>3232654&#"-TvJEuU/-SwKDsV0L7><77<>7\W]11]WW]00]WdeeddccT^^ ]@4     /_   ?322322333]]2/_]322310 '7'7^55#;w\\w9;w\\w9.'&{*@`p`]5]5]55?55.'&{t0@pD`]5]]]5]]5?5Z''u @P0]]5]55?55By^';C@) 2((' H @P` -7M/3?9/]/9/3/10]3267#".54>7>=#".54>32+D0*:$NNETg+fmp6fr=8S7)5 )0@%#?00?#%@0^J3SKF&!438%9J;)-"1]U?cUP,!1,0;V/A((A/-A))A3s&$CR&#%+5+53s&$vR@ &V%+5+53s&$NR@ &*%+5+53`&$NR@ &)%+5+53V&$jLR@ &&5%+55+553 &$LX @4.34!%+55?3/559@%FF Zp g@.H_ _  L ;    __?2?29/]]]]]]2//3]+229/]332399]]]]10])!!!!!!!!#3X[\a\`Nw&&z ,$ %+5s&(CR &%+5+5s&(v\R@  &M %+5+5 s&(R@  &%+5+5V&(jR@ & *%+55+55*s&,CR &%+5+5Bs&,vR@  &` %+5+5,s&,@R@  &%+5+56V&,j>R& *%+55+55/#g@BZg!?!X;Z'd _oL;__??9/]]]]]]]322]2]]]103!2#!#%4.+3#326/ce1]WrRd\^Tzt8`&1R&* %+5+5ws&2CTR(&-4 %+5+5ws&2vR@ (&I(/ %+5+5ws&2R(&/; %+5+5w`&2R@ +&,: %+5+5wV&2jR7&(F %+55+55m  n@D V%5Y  * :  V%5Y*: @ H_/]+]/10]]]]]]]]]]]]] 7   '՗-1-ӕ-+ј-՘w$/2@(%[g1/1?1[ f0'+ +??99]9910#"''7&54>327&#"4'32>OHRa]O[AFP^] /EaWS(+9"P0YQ'ݩl=u^d(k!o`cݸs+DstD s&8C=R&$ %+5+5 s&8vR@ &_ %+5+5 s&8R&+ %+5+5 V&8jR@ '&6 %+55+55s&<vZR@  &R %+5+5mH@,Zg?_ Zd` `   ??99//22]]10]+!!3232654&+m3u6|u9Tyxjsh^OByizlg+Co< H H@7 HF11GHF**9E  GWEE8F9TD 4M?9O?3]??99]]99]]]10+++#"&'532654.'.54>54&#"!4>32+?K?+5R91L5b<ELP"PX)JI>)dalkJusH@aL:0*"(3&AM\<"=>**1"$@?E(5N>45>(?Nahsmj4+SzV!&DC/&Ǵ4; %+5+5V!&Dvm@ /&/6 %+5+5V &D@ /&$6B %+5+5V&D@ 2&$3A %+5+5V&Dj@ >&+/M %+55+55V&D@ 4&%9/ %+55+55Vu4CL@^   G'F55 *H HHH/%WNONoN;G VM59'I'(''PGGG|GGG,(DDO (N>N,N/?2??]3?]9/]]]3]]22]2]]9/329910]]]]"&'#".546?54&#"'>32632!326732>5"!.E+Tb{RD{]6PHHEcTpm~o|CV%C_=^X(QZhe=T3D7*H5Rk/Hei6M3+W[ TEB*#/6Cz@gG&+- /A(F;9S6rz3V?$fs&Fzh@ P((  %+]5fD!&HC*&/6%+5+5fD!&Hvs@ *&l*1%+5+5fD!&H@ *& 1=%+5+5fD&Hj@ 9& *H%+55+55!&C& %+5+5!&vE@ &Z %+5+5!&& %+5+5&j&"%+55+55JH#'7v@Q $  (GW99/9_9990GV88!--N55N_K/?]]]]3?]9/]]2]]]]]10]]]].'77#".54>327.''4.#"326"N*`I9dHlG$HvoLAua` eBe1K3l]1L5j\0"E&jEyܘODzzC?1X8h/VB'?hJ)j&Q3&- %+5+5fd!&RC &%, %+5+5fd!&Rvf@  &O ' %+5+5fd!&R &'3 %+5+5fd&R#&$2 %+5+5fd&Rj/& > %+55+55X+`@7""=M} +- '?_  H//+]/]]/]]]9/]3]2105!4>32#".4>32#".X&32&&23&&32&&23&d*:##:*(:%%:*:$$:*(9%%9fd#,@S''w''#'3''&,< % '$$8$H$$GW._.7GGV-@% H& H&*!!8!H!!M**7*G**M?]?]99++]]]9910]]]]]]]]]]]]]]#"&''7.54>327&#"4'326dGw9h09DEOGx>s31>?F: (9i]%i^1ؔM^ZoJۏؓLO`bHхVA@1Nd!&XC& ' %+5+5d!&Xv@ &P" %+5+5d!&X)&". %+5+5d&Xj/*&9 %+55+55P!&\v=@ &c& %+5+5w$58@  3G W7+FT60M%M?2?2??2210]]>32#".'#!!"32654&7HY7Vf98fW7ZG613G,,I6[UU#<-J؎ٓJ&2 4;yB#%N%JqK!Q~U,P&\j@ .&= %+55+55^ @0`FT??]]10)!1^!6@!) _ o  _/]22/]3]]/33/]310.'#5>7!!3n46h3?A<d324&#"326J'E\67\A$$A\75\E(6**600*68Y>!!=Y77X=!!=W8-33--44H@0opH _ o   G_/]3]3/]]3/]3/]]310"#>3232673#".% (AX5)NMK$$ )BW4(PLKB56PtL% '!46OtM%!'!R?/105!R\R?/105!R\ E@2/)9I v 3 C %     ?/3]]]]]2]]10'>73%'.46z|{8=|5 C@1/ y < L   *  &6F ?/3]2]]]]]10#>7'/37y}z8<|5? V@A/? y < L   *  &6F/?O @ H /+/]3]2]]]]]]10%#>7!'/36z|{8=}5u x@Z)9I3Cv% )9I v 3 C   %   ?32/]3]]]]2]/3]]]]2]]10>73!%>73!(.4'.46z|{8=|56z|{8=|5u x@Z<Ly * &6F y < L   *  &6F ?32/3]2]]]]/]3]2]]]]]10#>7!#>7!'/3'/37y}z8<|57y}z8<|5? @_o 0y<L * &6FOo y < L   *  &6FO_o @ H /+32/]]3]2]]]]/]]3]2]]]]]]]10%#>7!#>7!'/3'/36z|{8=}56z|{8=}5b)G@-`p/O_  `p0H/+]/]]]]]104>32#".b,Mi=;iN--Ni;=iM,VxL##LxVUxM$$MxR^b+@?322]22310R5=wwR^b+@?322]22310 '7b5#;w\\w9w?//833/8210 #+J J \@<5E/_ 6F 2B@H ??39/332/+29/]33]22]10]##5!533!5467}} ᗗAͤ*]1 +-*n4j @~N` g ` . .h*8 h   4   ,P   (  8& \} \  T Digitized data copyright 2007, Google Corporation.Digitized data copyright 2007, Google Corporation.Droid SansDroid SansBoldBoldAscender - Droid Sans BoldAscender - Droid Sans BoldDroid Sans BoldDroid Sans BoldVersion 1.00 build 112Version 1.00 build 112DroidSans-BoldDroidSans-BoldDroid is a trademark of Google and may be registered in certain jurisdictions.Droid is a trademark of Google and may be registered in certain jurisdictions.Ascender CorporationAscender CorporationDroid Sans is a humanist sans serif typeface designed for user interfaces and electronic communication.Droid Sans is a humanist sans serif typeface designed for user interfaces and electronic communication.http://www.ascendercorp.com/http://www.ascendercorp.com/http://www.ascendercorp.com/typedesigners.htmlhttp://www.ascendercorp.com/typedesigners.htmlLicensed under the Apache License, Version 2.0Licensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0http://www.apache.org/licenses/LICENSE-2.0Droid Sans BoldDroid Sans Boldff  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~uni00AD overscore foursuperior2O ,latnkernfPjhJ@Fp h " " ( " : ` v | " " ( ( > ` ` *j  hhhhTrrrrrJ. " " " " " " (xxxx *HH,$,)7R9R:f;)<R=)FGHJRTW)Y)Z\)\))))R))-{&*24789:<7 &*24789:<,79;<) ) )&*24@)`)))$,79:;<== = )")$9:<@)`)==) )&*24))) )&*24)) &*24789:<$,79:;<=33$&;<=q$,79:;<=7JR R")$&*2467DFGHJPQRSTUVXYZ[\]qRR $>R R")$&*24DFGHJPQRSTUVXRR>f f$&*24DFGHJPQRSTUVX]ff ) )&*24FGHRT))DR R")$&*246DFGHJPQRSTUVX[\]qRR = === f fYZ\ff) )J)) ) )))[] f fDJffR RWRRR RIRR ) )R))= =I==R' DD"&*-^24789:<=;IWYZ\% DD"&*24789:<=;IWYZ\% DD"&*-^24789:<=;WYZ\'f f DD"&*-^24789:<=;WYZ\ff) )&24))) )&24))$ $,-679:;<=@`$0=DRR R = )")$&*-02467'9):@=DFGHIJPQRSTUVXYZ[\]`=qRR  o oI[] = ="FGHIJRTW== = =I==)$,)7R9R:f;)<R=)FGHJRTW)Y)Z\))))R $')) ,, ./ 257>DFHKNN!PR"UW%Y^(.4>CIU[abe latnPKjG$8AA=connexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-700.ttfGDEF`GPOSZM^xGSUB 8 OS/2 {`cmapmag|cvt KRQfpgms#|gaspT glyf}]puhead x6hhea a{$hmtxIx8Llocada"vXmaxpv8 namew4dpost;lprepeq֊bu]@B/?wfxi ` ?//]q3]]]]2]]]]]]]10#!4>32#".3Z0@%#?00?#%@0/A((A/-@**@B/@ _ ?33/]3/^]]9/10#!#))))-@P!   ` ` p  H      T 0 @ [?O   /3?399//]]]]]]]]]33]2233]22/]]33/3/]9293/]]92393/3/10!!####5!7#5!333337#/MNLJ/!MMNN/Ljjiib%3<C@F&.@#@@?@@:0 44+4{444)OE==$=t===@? H-*AA&9.@@@@&%@H%%# &@&P&&&&&:P`@/]33/]333/]]33/+9]]333333/+]3]]2]9/]]]323]]3210#5.'&'.'.54>753.'4.'>5%5ifBpbY+*cjm4 [[-9j_WdeA>'_^. +;84967K`>  &>#L^rHK{[9 (+)#J\rR$ </?0? "-A1 H?@ H: H5 H@$ H H( H H#8.Y""V  !!@#!!).C +=&3"!?/??/99//883]3]10++++++++32654#"#".54>32 #32654#"#".54>32;-21/`2-)V[UW,(UZVX-+p-21/`2-)V[UW,(TZVX-}|{}lv??vllu>>uHJ}|{}lv??vllu>>uR-9I@A'G():::HG#$-&DDDH67;K(( @" HK.G 67??''3-$#G3??3?99/39/3/+3]9///]]]]9]9]10)'#".54>7.54>32>7!%32674.#">aPtxËL%Da<&5 =mZVi<-Lg;#5=)6F+ 9M-73#.R$JqN$HjENqJ$1}]2w^Z=d@  ??210#>54'3d$JqNEjH$NqJ$1|Z^w]?V#@@1?2/]/]]]10% '%7)u!㜉'm)hy9w)hpX @  /3322/222210!5!3!!#ondq? V@A/? < L y   *  &6F/?O @ H /+/]3]2]]]]]]10%#>7!'/36z|{8=}5=V@ ?/]]105!=u9&@/? `//]]]1074>32#".u0@%#?00?#%@0/A((A/-@**@D(@ ?//833/8210]] !D!J?)!@n#n tt??/10#".54>3232654&#")7y|=7x~~>JVjh[[h5I.۱ffgf@~\1%@n `??/]]33/310)4>7'31 NIOP! wN'!/@!n#@P`   ?2?39/]33310)5>54&#"'>32!'+XAjL*YKOP-bvXiv?54.+532>54&#"'>321UsCEٓvZ-dda+VrD%Sbhf\zIai0SG;*ctLl~EoLy[=`xC'($ :Q0-I3!9L+NX#4'/Y= 8@ n u ??39/32/29/]]332210#!!5!3!54>7#=m# -//i 1>B<- *^/V(b@#%&&&&"$! H!{!]!m!!!n*@ Ht %s"t ?3?9/]/+9/]]]+933]3102#".'32654&#"'!!>V^xDJՊ7lcY$#\cd-;94{7 U:plwF  #oylq BL+);M@/" ( !  7/n =7nP`2u*t%u??9/]3/]29/]10]]]4>32.#"3>32#".2>54&#"L;eّ230&U+f+ 9L_;_i8C|nlO)C1Y[.L63KmiпyE Cxf$?->vowEM?`Bk{$:H%3eQ27'-@ s??9/3]/]2]103!!`H!':N@j  %  #JJn00nP@@n######((nP` 66EE4EDEdEEEE-v;v??9/]]]]99/]]3/]]]]3/]]]]99]]10]]]]2#".54>7.54>32654./">54.5[zH(F`8:oV4Hmv~A,Lf:1V?%I|v3L2ih#7F#,H3!9)+9 8+*:,XYBkWDL_vI[h86d[Kx`JIYlAWY,(C0cQ*C903=H8&8#*=/%&1>(#8&?);G@* "('  7n=/n 2u*t%u??9/]]/29/]10]]]#".'532>7##".54>32%"32>54.;eْ230%U,f+ 8L`;_i8C|nlP)D1Z[.L63KFiѾxE Cye$>.>vowFM?aBj|$:H%3eQ2us'0@)))/)?) `#/?/]32]]1074>32#".4>32#".u0@%#?00?#%@00@%#?00?#%@0/A((A/-@**@g/A((A/-A))A?s k@P < L y   *  """"/"?"  `  &6F/?O @ H /+?/]3]/]]]3]]]]10%#>74>32#".'/3/0@%#?00?#%@06z|{8=}5/A((A/-A))AX`@A4Ddt5E&/O:J) 0@/]q33]]/]2]]9=/33/210]]%5 H}X2@ II @/]]3/]]/32105!5!XH'{X`@A;Kk{ 5E&/O:J) 0@/]q33]]/]3]]9=/33/310]] 5X}H=Ju';8@2((' H= -7M?3?9/9/3/10]54>7>54&#"'>324>32#".+D0*:$MOEUf+emp6fr=7S7*5 0A%#?00?#%A0J3SKG&!438%9J:*-#1^V?cUO,!1,/ 3232>54.#"32>7#"$&54>3232>?.#"-\^&C8) 2>K,SX.>tg-`YN #4"LmQFʄ8vuq3^債h6f⁞ l>L?*=' 6;R3_[#//$9iYg}E  ]**6 6\{EȊHfՑK"*1g|ßq=epc'Gc=2Ri3@ &6Fv@?H )9IyH `p@_?2?3]9//83]]]3/8]3]933999910+]+]!!!! .'de{^  ]\D`@Rcd#54&+32>54.#ЌG:S67_G)Fv6:N0ir=S35V@'Wg>lR7 -OxVdm:s*?*TI4J-)C0w#B@+e  !!Z!j!! g%%%`%%[f$_ _??]]]]210]]"3267#".546$32.%Y]0+Y`Yi0^bg;NZmddREsu}A(% lo70':# &@ Zg?Zd__??]10#!!24.+326#ec1]Wr^\zt8H F@*g  Zd _L; _ _??9/]]]]]]22210)!!!!!J W@:g  \d _oL;_??9/]]]]]]]2]]210)!!!!Fw''D@('' %\)`)p))[ f('_+"_"_??9/]]]]29/10!#".546$32.#"3267!D:vNZdu]gD^ft>+\eB[(5  ai2(".GqlH 1 G@+ Ze  Zd _L; ?2?39/]]]]]2]]210)!!!!!65w=B ;@#  @ H0  Z _ _?2?2/]3323]+]10)57'5!gRRRNR9R4@# Zeo '_/]?]2/10]"&'32>5!Ab"%Q0.O;!6IR  1R>~w8 r@N9y  I Y  9IYy di  E U  Zd $ ?3?399]2]]3/8]]33310]]]])!!7!t6zNX-`V@m)@/?Zd_??]]103!!6J H @Y HG6'I; ) H] eX 6 F   '  ^ d  ?2?33/3]]22]933+]2210]]]]]]++!#!!3!!4>767# <P{\V%NLFX^JBJL$T[@, H9I +I H^e  H @H6 F   $  F  @ H ^ d  ?22?33+]22]]++]+]22]]+10)#!!3&'.5!w >RMLA9PLJ CC>w'(@[g)/)?)[ f(#__??]10#".54>3232>54.#"OOOO (S~WYQ''Q~XWS(ݩllkksDDssDDm=@&Z ?_Zd__??9/]2]10]32654&++!!2=wO:٠Gͅ@humh`P?uw/W@8&6&[g1/1?1[f0;K[)  +_!_ /??9/83]]]]99]]10!""#".54>3232>54.#"'OwQir OOO (S~WYQ''Q~XWS(wѬ,mJlkksDDssDD ~@P  ZD   Z d gL;` _  ?3?9/]]]]]]]92]3/8]39/]9]]310]]]32654&+!! !Tpx~O (CW0oX&G8-gdhXyKz_G54.'.54>32.#"CyjT0bee23I-#?Y7.reDAxj5ecd5d-NJG$NS7W>K~[2bo<,, +")9")?74Dedbk8&  SE%924!(Se);>@' o 0 @  Z@_??2/]3/2/]]]]]10)!!! 0@  ZeZ d_ ?2?]10]]#".5!3265 EԏϋH5 ?^?uNrĐRMziQsI"X@+   `po@   ?2?3]/83]]3/8]3]93310]]!!!>79899JP``!!`_Pj6&@m 5)595I5f%v%'%%i$y$($ $&6Fk{ H dt6FV%k{9IY* dt@> H-V%%%%Y$$$$  -556`6p6666688@&5$ { , < L    -?23]]3?3]]]]]33/83]]3/8]3]9333]]3]]3310]+]]]]]]]]]]]]+]]]]]]]]]).'!!>7!>7!    1        16DJF;;EJD81=LTPEDMRG7 3 7GRMDEPTL= |@8    `p o @  ?3?399]]/83]33]]]3/8]3]933333]10) ! ! !cV N^)+q@  0  ?@dtZ0@ H?3?9/3+3/]92/8]]]]33/8]3]]]10]] !!!VNDDP\Z/1 t@1iH  @ ` p  P O f@HO __?2?23/]33]+]]]]3/]33]+]10)5!!!k}s"@??/]210!!#3s B(@ ?//833/8310]] !!!J3 @ ??3/2103#5!!3qT=7@+   ?3//23/39=/3310]]]]3#EDJNH//3/10!5!NRLP! *@E _o_/]2/]/33/]]10.'5!"_\LV+.0SXQ"QQLVu.a@>    @ .FU0O0000&G0  Q:N)N??2?3]9//]]]229/]10]]]!'##".546?54&#"'>3232>5); !BNa@DtU0PHHEcTpe=T3D7*H5-A*+W[ TEB*#/6/A(F;9S6w08@ .GW2&FT1+M  M?2?3??2210]]2#".'##!3>"32654&Vf99hX8WD331 6GZ03G,,I6[UUsJ؎ْJ(3{!M!''#<-%JqK!Q~U,fs<@&   !!/!O!o!GV M M??]]3/]310]]".54>32.#"3267qxIKvVKXBz7oddkWJ%FGMBٗ:*&%-# f=08@  %HU2.GV1+M  M?2?2??2210]]".54>323&'.5!#'#72>754.#"Vf99iX6ZH9 1; 6GY76L/.N;`Z[J؎ٓJ-;#'("M!f"=,%KpK!Q~U,fDs)e@A  %%% HW++0+FV*9I(P|ON ??9/]]]]]]2]]]9/]10]]"!.".54>32!32>7dQk0H xʒQJro}CV%C_=3[VT,(QZhrz3V?$RFבܓJCz@gG& ! )HJ@,  H/FNM ???32/]3/32]]3/9/10+#!#5754>32.#"3Ϩ4`U\~,HD.<1yyRRkT# M7.54>7.54>3232654&+"32654&#"=6jj6 *8QY0Lrr9*FY/)!$6"Xg8lh21* \0N9bg>4#nDEH@?I\3"I*Ud7%%LuQ_k9+QrH=Z@( *3 4-(&rZc4/$XJ?* 5f[dd[Zjj6@!FU0 F TM ?2??22]10])4&#"!!3>32jKN;P011`S`4yy0^Y*]'.,WM/dl/@0` FTS??3/]22]]104>32#".!!-=""<--<""=->1+9##9+*:##:^'E@,  FU))0)`))S### 'M?]?3/]]]22/210]"&'532>5!4>32#".f0f"6"-!1'W6-=""<--<""=- 'A3)Me:k+9##9+*:##:n  H@6 H0$ F T H ??399]+?23/8]]]33399]++10]]7! !!!pXlw1`TRJ @0`FT??]]10)!1s*q@4  Fy8& #F"U,_, F T+@ H'M # ?22??322+32]9/]]]]]]]210]])4&#"!33>323>32!4&#"`HM:M.)CPZ.s+DR[.HMm\yy0^Y^+>(OU+>('yyjs;@$EFU0 F TM  ?2??22]10]])4&#"!33>32jIP

    (/dlfds 6@!  G W!_!GV MM??]10]]]]32654&#"#".54>32^ji^^ki]GwoLGxoL1ؔMM،ؓLLws08@ .GW2& F T1 M +M?2???22210]]".'#!33>32"32654&7WD4+6GZ7Wf8:i3G,,I6[UU(3#7;J"<-J؎ٓJ%JqK!Q~U,f=s08@  !&F#U2GV1$" M,M?2?2??2210]]%2>754.#"".54>3237!!46767#Z7K./M:`Z[Wf89iX8ZI8 6GZ%JqK%Q~U,J؎ٓK-;#9 !"=,Hs@@! HFFTEU ?3]??2]]3/+]102.#"!33>  ;cG'-8EWsCmO^+F1bs7c@ !!' HFW9909.@ H.F V8.+N( H($N H ?3+?3+992+]]+310]]#".'532>54.'.54>32.#"@vh7^TN(*]\W%):% .YKIkE"7*L=GrR,LXX,"%!%/"!APgGNuN'..$.,&!'=Nh/L\  H@4 HO_oF _ o  NM??332/]33/2]3/]+310+%267#".5#5?3!!f-Q*+KI~\5X@"UlfA>d^;@#J FU0F T  ?3?2]/]210]]!'##".5!32>5!{)ER\0R`41IP

    7!u?@u^9{15w9}s^33333@ H1 H$$$$@ H#### H@ H H@Q H H$$$### 333*& **)** 12222@ H225555@1#  I  +F?33/]3?3]33/83]]38+]39]]3]3]3]3]3]3]10+]+]+]++]+]++]!.'&'#!!3>7!3>7!V   Z/q  zPu  u+?OY,gwwh,ZO@}^'moc=FI@1 \icbqp' X^ @[   iZ9I( FVf'7  @ H  /   @ Hi Z 9 I *   @ HfT6F$  ?3?399]]]]]]+]]]]]]+/83]32]]3/8+]3]9]]]]]]]]]33]10]]]] !! ! !ZZ};#PjP^@.8 7  ) 9     @, H  p  &6@ ?2?33]]3/83]]]]]]3/]]3/8+]3]]]]]93]]]3]]10!3>7!#"&'532>?N PF>֡4L@#0D1# ^4v/8:9u /B)87m^ |@IYiH   @ H   @ HFVf@H@ HNN?2?2/+]3]+]+]]3/+9/33]+]10)5!5!!mVFʹQ(N@2 ( H% H!0''oI!"??9/]]]9/]32210++4>'4>3".5}>aB!&c(A-sz-A(c&oR+D0>JiC  6+ջ# n^+6  CjJ;/@ 0@p?//]103#!(Rس H@) H %(%$o$$$I$$$??9/]]]9/332210++#5>5&675&'4.'523"&c(@-zr-@(c& Ba>}-JjC  6++^n #++6  CiJ0D+RaX'}$\@,(H %  @ H&   H @ H ?_@H/+]33/++]3/10+]+].#"5>3232>7#".%9/*><93N39F0&90*><9e39Fh !,67  -m u^i@J[/?wfxi` /?/]3]]]]]]2]]]]]]]]10_]3!#".54>323^0@%#?00?#%@0^1%/A((A/-A))A)c)@ %%%%++++n@ H**?*!u(v  /]3]/3]+]]29/32105.54>753.#"3267\h88i[&LG?V587B\;rL23|E KljˈK    (SW%RB&@j $$*$ 'Wn!k{:   @`c @w  Gst?2]]?]29/]32/]]]3/]399//]]]]3]]]]]210]2.#"!!!!5>=#5354>nP]Gu?CKN,5*C/?o0"#M_ۏ7Q:(*:R:qd.\ "6@_327'#"&''7&732>54.#"+f36`/},c68c+}53D'(F55F('D36c,*g68b-}}{}[j'E33E'(E33Eb@ O@<  @ n  @  @ H ?3?99//]]3]+3232/]33]2]292/8]3]933/8]3]9310!3#3#!5#535#53!59<\Zݲ/$@0@p?/99///]32103#3#j)CV@51E11&120B00$0:J))@ H  H$@V H$H'D HRMM(MM!!:'XoXXXX@ HDD'DD00?$HRHRHR 05, ?2?299//3333/]3/]3/+]23/]99+99+10++]]]]]]4>7.54>32.#"#"&'532>54.'.7>54.'y%0?F:k[fURDNQJ4Q8GuS.E8>?>renF'Z\Y'8J--QBLxR+qv 4[F %,K?2(vKAkL)/% 3.0*''DSe>d{%(iJJwT.)&# *'&* @Qf[?a3 $, 631$,%%@ #/]]32/2/104>32#".%4>32#"&%33&&33%&43''3>2HH$?]?]99//]]/]]99//]]310]]"3267#".54>32&4>32#".732>54.#"aj`k999vMkk64iiSDJq}6ahha66ahha6`ޥ``ޥ`򔃇D|jg{D,":ha66ahhb55bhޥ``ޥ``/.@ H  H H@D H .00000000@ H%O _  @H .((??2?39//+]3+]22]10]++++'#".54>?4&#"'>3232>=(qD2Q: +QwKZ;6(b4B>[DeB!&/ & 3$n:@7T9F="&$'7 $R^\ [@2 / _      ?322322333]]2233/]33310%R55=wwwwX?@ /3/10%#!5!#l=VdD 4H@W ?@ `  ??'J55     p     ::.DD ?]?]9///]]93/]]99//]]329910###!232654.+4>32#".732>54.#"MB/B9/ `6ahha66ahha6`ޥ``ޥ`^npR9B#. ha66ahhb55bhޥ``ޥ``?/10!5! \'@ )#?104>32#".732>54.#"\6^~HH]66]HH~^6*9 9**9 9*qG~^77^~GH~]55]~H8**8 9++9X D@(   @ H/+]3322//33223310]!5!3!!#5!onq/JR@3 H H   / _ Ee ?2?3/]33]]2+10+!57>54&#"'>32!y.=%0((W5{AmBmM+6T54&#"'>32QY3J1LABIJE&@0p\4@$ 23/T9e>g>jM,Ed *7B$y##(265&'&2&(/>!7!L0/*V *6>?:LQQ"18;82j^9@"B F U0FT M ??2??32]210]32>5!#'##"&'!!KQ:N01+ #iK6Z1yy0^YUU.,*+%T$Jq5@ H   /2?9//]9/+10####".54>3!=U_m32#".u0@%#?00?#%@0/A((A/-A))AK@0( H??//9/]9]/]3/33310+#"&'532654&'73HwW-H%'%+J\N:-9Z>! #%9= "/=\JH7@$/_p ??3/]33/3]10#4>7'%3HNm-J=>4 =9Y H @5 H H H!!!!!!!!@ HO _  ??/]+]10++++#".54>3232654&#"-TvJEuU/-SwKDsV0L7><77<>7\W]11]WW]00]WdeeddccT^^ ]@4     /_   ?322322333]]2/_]322310 '7'7^55#;w\\w9;w\\w9.'&{*@`p`]5]5]55?55.'&{t0@pD`]5]]]5]]5?5Z''u @P0]]5]55?55By^';C@) 2((' H @P` -7M/3?9/]/9/3/10]3267#".54>7>=#".54>32+D0*:$NNETg+fmp6fr=8S7)5 )0@%#?00?#%@0^J3SKF&!438%9J;)-"1]U?cUP,!1,0;V/A((A/-A))A3s&$CR&#%+5+53s&$vR@ &V%+5+53s&$NR@ &*%+5+53`&$NR@ &)%+5+53V&$jLR@ &&5%+55+553 &$LX @4.34!%+55?3/559@%FF Zp g@.H_ _  L ;    __?2?29/]]]]]]2//3]+229/]332399]]]]10])!!!!!!!!#3X[\a\`Nw&&z ,$ %+5s&(CR &%+5+5s&(v\R@  &M %+5+5 s&(R@  &%+5+5V&(jR@ & *%+55+55*s&,CR &%+5+5Bs&,vR@  &` %+5+5,s&,@R@  &%+5+56V&,j>R& *%+55+55/#g@BZg!?!X;Z'd _oL;__??9/]]]]]]]322]2]]]103!2#!#%4.+3#326/ce1]WrRd\^Tzt8`&1R&* %+5+5ws&2CTR(&-4 %+5+5ws&2vR@ (&I(/ %+5+5ws&2R(&/; %+5+5w`&2R@ +&,: %+5+5wV&2jR7&(F %+55+55m  n@D V%5Y  * :  V%5Y*: @ H_/]+]/10]]]]]]]]]]]]] 7   '՗-1-ӕ-+ј-՘w$/2@(%[g1/1?1[ f0'+ +??99]9910#"''7&54>327&#"4'32>OHRa]O[AFP^] /EaWS(+9"P0YQ'ݩl=u^d(k!o`cݸs+DstD s&8C=R&$ %+5+5 s&8vR@ &_ %+5+5 s&8R&+ %+5+5 V&8jR@ '&6 %+55+55s&<vZR@  &R %+5+5mH@,Zg?_ Zd` `   ??99//22]]10]+!!3232654&+m3u6|u9Tyxjsh^OByizlg+Co< H H@7 HF11GHF**9E  GWEE8F9TD 4M?9O?3]??99]]99]]]10+++#"&'532654.'.54>54&#"!4>32+?K?+5R91L5b<ELP"PX)JI>)dalkJusH@aL:0*"(3&AM\<"=>**1"$@?E(5N>45>(?Nahsmj4+SzV!&DC/&Ǵ4; %+5+5V!&Dvm@ /&/6 %+5+5V &D@ /&$6B %+5+5V&D@ 2&$3A %+5+5V&Dj@ >&+/M %+55+55V&D@ 4&%9/ %+55+55Vu4CL@^   G'F55 *H HHH/%WNONoN;G VM59'I'(''PGGG|GGG,(DDO (N>N,N/?2??]3?]9/]]]3]]22]2]]9/329910]]]]"&'#".546?54&#"'>32632!326732>5"!.E+Tb{RD{]6PHHEcTpm~o|CV%C_=^X(QZhe=T3D7*H5Rk/Hei6M3+W[ TEB*#/6Cz@gG&+- /A(F;9S6rz3V?$fs&Fzh@ P((  %+]5fD!&HC*&/6%+5+5fD!&Hvs@ *&l*1%+5+5fD!&H@ *& 1=%+5+5fD&Hj@ 9& *H%+55+55!&C& %+5+5!&vE@ &Z %+5+5!&& %+5+5&j&"%+55+55JH#'7v@Q $  (GW99/9_9990GV88!--N55N_K/?]]]]3?]9/]]2]]]]]10]]]].'77#".54>327.''4.#"326"N*`I9dHlG$HvoLAua` eBe1K3l]1L5j\0"E&jEyܘODzzC?1X8h/VB'?hJ)j&Q3&- %+5+5fd!&RC &%, %+5+5fd!&Rvf@  &O ' %+5+5fd!&R &'3 %+5+5fd&R#&$2 %+5+5fd&Rj/& > %+55+55X+`@7""=M} +- '?_  H//+]/]]/]]]9/]3]2105!4>32#".4>32#".X&32&&23&&32&&23&d*:##:*(:%%:*:$$:*(9%%9fd#,@S''w''#'3''&,< % '$$8$H$$GW._.7GGV-@% H& H&*!!8!H!!M**7*G**M?]?]99++]]]9910]]]]]]]]]]]]]]#"&''7.54>327&#"4'326dGw9h09DEOGx>s31>?F: (9i]%i^1ؔM^ZoJۏؓLO`bHхVA@1Nd!&XC& ' %+5+5d!&Xv@ &P" %+5+5d!&X)&". %+5+5d&Xj/*&9 %+55+55P!&\v=@ &c& %+5+5w$58@  3G W7+FT60M%M?2?2??2210]]>32#".'#!!"32654&7HY7Vf98fW7ZG613G,,I6[UU#<-J؎ٓJ&2 4;yB#%N%JqK!Q~U,P&\j@ .&= %+55+55^ @0`FT??]]10)!1^!6@!) _ o  _/]22/]3]]/33/]310.'#5>7!!3n46h3?A<d324&#"326J'E\67\A$$A\75\E(6**600*68Y>!!=Y77X=!!=W8-33--44H@0opH _ o   G_/]3]3/]]3/]3/]]310"#>3232673#".% (AX5)NMK$$ )BW4(PLKB56PtL% '!46OtM%!'!R?/105!R\R?/105!R\ E@2/)9I v 3 C %     ?/3]]]]]2]]10'>73%'.46z|{8=|5 C@1/ y < L   *  &6F ?/3]2]]]]]10#>7'/37y}z8<|5? V@A/? y < L   *  &6F/?O @ H /+/]3]2]]]]]]10%#>7!'/36z|{8=}5u x@Z)9I3Cv% )9I v 3 C   %   ?32/]3]]]]2]/3]]]]2]]10>73!%>73!(.4'.46z|{8=|56z|{8=|5u x@Z<Ly * &6F y < L   *  &6F ?32/3]2]]]]/]3]2]]]]]10#>7!#>7!'/3'/37y}z8<|57y}z8<|5? @_o 0y<L * &6FOo y < L   *  &6FO_o @ H /+32/]]3]2]]]]/]]3]2]]]]]]]10%#>7!#>7!'/3'/36z|{8=}56z|{8=}5b)G@-`p/O_  `p0H/+]/]]]]]104>32#".b,Mi=;iN--Ni;=iM,VxL##LxVUxM$$MxR^b+@?322]22310R5=wwR^b+@?322]22310 '7b5#;w\\w9w?//833/8210 #+J J \@<5E/_ 6F 2B@H ??39/332/+29/]33]22]10]##5!533!5467}} ᗗAͤ*]1 +-*gU/Z&X$^B>p:lR  > f \ 0 r Fz<lT8(@pJn$ph8 ` z !F!F!""#6##$$%&*&|&&'L'b''(F())T))**P*++(+R+t+,,,2,J,d,,---2-J-d-|---...F.^.v...///////0J001 1"181P1h2 262N2d2z22222333333445 585P5h55666:6z67F7\7r778.889~99::::W6_<O\YwsJu+-hb ?R!R=\?hXR?=HuNh?h\hNh9hhVhLh7hHh?HuR?hXhXhXf3#w{dwB9HND w w 1^d)jP1N 3BJLVfff)jqqqffybP/Psb P7hhXJuhhRh\hhjd/RhX=dm\hX/;L =qHu\9T . . ZB333333`w{{{{*B6/D w w w w whm wsVVVVVVVfffffqqqqJfffffhXfPPqTRRR?%?bRR w swyc33f @ [(1ASC Ds ^ x ~1    " : D 1    " 9 D@EYXUTSRQPONMLKJIHGFEDCBA@?>=<;:9876510/.-,('&%$#"! ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y &QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,(#p(>(#p(E: -, E%EadPQXED!!Y-,I#D-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+)#D)z-,Ee,#DE+#D-,KRXED!!Y-,KQXED!!Y-,%# `#-,%# a#-,%-,F#F`F# F`ab# # pE` PXaFY`h:-, E%FRKQ[X%F ha%%?#!8!Y-, E%FPX%F ha%%?#!8!Y-,CC -,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,KSX%Id#Ei@ab aj#D#!# 9/Y-,KSX %Idi &%Id#ab aj#D&#D#D& 9# 9//Y-,E#E`#E`#E`#vhb -,H+-, ETX@D E@aD!!Y-,E0/E#Ea``iD-,KQX/#p#B!!Y-,KQX %EiSXD!!Y!!Y-,EC`c`iD-,/ED-,E# E`D-,E#E`D-,K#QX34 34YDD-,CX&EXdf`d `f X!@YaY#XeY)#D#)!!!!!Y-,CTXKS#KQZX8!!Y!!!!Y-,CX%Ed `f X!@Ya#XeY)#D%% XY%% F%#B<%%%% F%`#B< XY%%)) EeD%%)%% XY%%CH%%%%`CH!Y!!!!!!!-,% F%#B%%EH!!!!-,% %%CH!!!-,E# E P X#e#Y#h @PX!@Y#XeY`D-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,!KTX8!!Y-,CTXF+!!!!Y-,CTXG+!!!Y-,CTXH+!!!!Y-,CTXI+!!!Y-, #KSKQZX#8!!Y-,%ISX @8!Y-,F#F`#Fa#  Fab@@pE`h:-, #Id#SX<!Y-,KRX}zY-,KKTB-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,Eh#KQX# E d@PX|Yh`YD-,%%#>#> #eB #B#?#? #eB#B-,zE#-@3 P07GW/@P0%5UeWfF@? F33U3U0@`_ 030@`F趴 F@ F/?З/?OόgFt&n6nUg fffee dd'^7^&]\Z[Z&Z6Z3UU3U/ WW+WWV"V2VVUT@!T F SSFO7OFN7N[k{ FH FGF@1F F3UU3UUGU0oTS++KRK P[%S@QZUZ[XYBK2SX`YKdSX@YKSXBYssss+++++++++ssssss+sss^sst+++s++ssssss++++ssssst+s+ss+s++s+s++++sss+++++ssssssssss+^ Nu^{18L+ff6?/!ww6? ^}TLyJx71%UZ   4 P ,n  TDroid SansBoldAscender - Droid Sans BoldDroid Sans BoldVersion 1.00 build 112DroidSans-Boldhttp://www.apache.org/licenses/LICENSE-2.0ff  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~uni00AD overscore foursuperior  ,latnkernfpp ""x XR.PF@:.  0 " T j j $ X ....lRRRR0 0::::D $')) ,, ./ 257>DFHKNN!PR"UW%Y^(.4>CIU[abe,$,)7R9R:f;)<R=)FGHJRTW)Y)Z\)\))))R))&*24789:< &*24789:<,79;<$,79:;<== = )")$9:<@)`)==) )&*24)) &*24789:<33$&;<=q$,79:;<=7JR R")$&*2467DFGHJPQRSTUVXYZ[\]qRR $>R R")$&*24DFGHJPQRSTUVXRR>f f$&*24DFGHJPQRSTUVX]ff ) )&*24FGHRT))DR R")$&*246DFGHJPQRSTUVX[\]qRR f fYZ\ff) )J)) ) ))) f fDJffR RWRRR RIRR ) )R))= =I==R-{% DD"&*24789:<=;IWYZ\' DD"&*-^24789:<=;IWYZ\% DD"&*-^24789:<=;WYZ\'f f DD"&*-^24789:<=;WYZ\ff) ) )&*24@)`)))) )&24))) )&24))) )&*24))$ $,-679:;<=@`$,79:;<=$0=DRR R = )")$&*-02467'9):@=DFGHIJPQRSTUVXYZ[\]`=qRR = ===  o oI[][] = ="FGHIJRTW== = =I==7)$,)7R9R:f;)<R=)FGHJRTW)Y)Z\))))R PKjG],,?connexion/vendor/swagger-ui/fonts/droid-sans-v6-latin-700.woff2wOF2,[D,@ `  @n6$L ( dgXN%㘕 @Um(J")[2)O$„фi&:3i^&j?Q9 '|W4YLp(_i{[$l`$"!VQ%3zK}{.ʟm"c y+FΈpX09C&dBni`08XX˻phSU_!o`eu*ѰyT*SRP'd&5*?tK |6[:l::x56>"ů(οNs 8L flNJVBN9jj:oL}^MRAC ADD9yd^< fOE@B ZoY"TLI5^ yC'5~!_KuU5os1/C5?2+TZu֕~ bvG “OCnZNQWOFv䎓}x6O5< a_)c%3J6Y[88lXpX\'  M=FYg $:ELr%jW.,ࢋQ"D1rB#'2+q"( H Tn;ЩKwvA(CdvZAh8PE# 9r !ƥ]`Fasjl hDaZ|uVY+91kvS[b,=v>< h1\ᏉNɕUljBI%-v:uH_}6c֜y dW=x18lpwpjϬ|~;+D'U(Y*FzwxJ-PDDDDDDEDDDOUcrR%Bg@Ѵ:~45!҆8Vk7a3ov*JS2 .ml 梔u!;,VVwb_c1cm3 3 bɂ"*aT$F,H׏.n!un}4~*^mM/gts+G>QssupFJ}qy(| X<dyd7IɴI}# \;GL-иTc[^خ(8/|@kp:H4Ԫ$aP{B/S|XcO%'Cpb%mw4O4'/F;1H-piyjlY@C9ֿh&S5,1Zm⁃Bئ7t-pf#b!ěqWOl-tܦ-fSʎ[ ,XD9+XM7O!6YdJ3Mm. }S3 f u6Ge6K'#`"0o{plMB+X6RhRMS~ײ}^y&4UWAשE& 0˨qovwn{Ýb*vcp~]KCooe{ƧW M2Mr;1IR谼P? >V4h*ڥr%-ݾNn< N ,wFZ+k`7ak6Uvh":y 6}}ޢ|Y=QD JqyöZYm`<| tCJ3Jr6 i 'Ge+iȲ-B^]M5͑ƅ:5wS;^.f\]#>}~ľܲ}eq7w&EyUͦM eaܒT s՛> [tbD&!^(k䪴~T6 N7>r;7>x#u>5Ƀ]~;`-u^f̤`evg.ޡ M]I$$씱9.,^E֐5g*'6͜}nI87AZGY) B*L*K**]-:o9BCp tϧҴ6d{D<MŢ3!VR^¡u@("'o~;f ]~E4lx>$(ƦG }U=%/*A0.iw%eK8Nv)VXd&ViL ۢ"F'^vtt>wIJӹ9?$H PB!E%'US1Z:d6B;a Xdv(&Iرkbi3*Zs3Qr?SrBaCGC,8Ёg(4[@y] 4W%qV9 >U%מi.*U%0Ukc[7U=074/bcDz@=VRKa xl9 isc:m^$z>o[+@]kj{Diwkq6>I)ucؼr=#c6n߸aTjg{A(G~TFgzf\A:7Jya ڳ`>͞$"x&#\:qmݱL%d:}i6hnc_ěN"Kb9Ѳtu>C!)=6CSAgJb[W 8I'q9)CG"pcn ̤nZCpnj(It}wEYrCc;MGW.mԬJ_ȴk7o Iذw+*NPq4rah;o1X~C ;50[ %!/cQyrFR6>& B{i|@i;/@>+hqu*tXL&A[4m_YWŔɽ`hJ]1 iEZFU AMr#\R;]C4XaVʙIĂ{:-"@ X=yC>g!/JB_/#&M xƭ$ݏf]B:}~K愄*q&>mMUH7cמT#k+&.fq慍P]ݛ͡n&8nhKC{̙j8HT.ȲPK>Qod+Kf,,K a<Ũc)\֮jVRR14͌b՚״{c53a&)zģ!YKW1w"sNƌDՠKfNڭ;ѬAzIw2=T(ݞjEl>u-kn`v X ,"9W#eYuI!ŜǁB 7n$0Ayȍ,lݴ0LM\ CHLj+o\ɩ[3wT O?ÓÞ? H ͞F y!/x&?]uomX͌Inw_E kel϶ֳB^SlLYSĄ߄nnjZp)U:ng\jr(H־"# ,LӔ`۹ :^IA@$ԷI ;ڠGT'(%- JN>hA\*mU/L0 ͍c,UWMy_fj#N*jӒjYľ"[WnJQ:Al\N[a#N&zSе%Jg? r \)k6GxSu)tGEūťEEUpY 'u}mpqsv-FF7(֜9|,Lt߾3're7w=/?wtDlq@{(Ыfk?ݒybT9#rGs/eq* i k%<|8,bozhq$65X}2Vu2Vq˴HK}^<6%"vzuwrT0V7ϔEN ׶CP~oH8-{j Ș`KK_JAf6}2:fjY`v{Z+j7Vdc'&쫫b[܈9f6m ӽ]3ɶ f*#wWSշz?cA))C /f`(;L>$VlWP j"$=d,:ި!(jnF6{ ( XmItļ\ CLb'(jtO*wlEW/<1'շiPG_b]ɮ6ٳ5(T3)zW3@,͑L=7e 1\m5 -?Lۃ,9v.ّ65P͡2~#c'ӷEQwzxsD7ҴNi:B, Vw␒'9/\nj#tũlp=$8%JÎ*rw7rr$#)( }?OXGo~sYe{W8Q%~POmrΝu8c%ZYjO/CpՉDl}7L+$.:FU>tO3B~ŁHZ; K7}RFnwAP!*HfR-}Kht|2& '-ֱb "O(R%$@(T-J!yC/)S?H`%31"vᏂsI Ȯo/Ji"fQHھV`jX4R>>\߫* -?qjr?^~1~' BiV4Azd.T-/igz+TA9P9Såz~e03j]M! WhoDpzwp{(],7#w&>8ZXڪE! d&gKrzG``1@KzKSbdty~t3ICwװ)FZ zY$_2moDYCu?{ | wY\C&0[|HYd55Re& a(/HH˚ ybޑ[YXܴۜvt0p5"q/cՈUntКm. Yt+n-eM݄awAt)㏢}>%4Ra-à jʖ1)Yh֙rĂBCJZ-uP&MT/Fkm@$_6ak79AT-\+?XldT h~u_0/%+71h/.4D۷23HhL;Im9'uO5*s\ctn`_Ax'!yʨO_OxL.rF"nރN뀹0F1Hnah~@x2/ZBB21h[pr;{$pܑ4JMz[!R8Z'9 ?#.Q5zc>xMu OG`BK4#]gZm>r.Bݸ!AXTUʊG)׬!K?N̕F _ [8YϻfOrT Q&{@>aSÏMҜ{v=Ë6V!1x8/3+$C:͘g'c gOnr~&!@|Wru3gR"VK6-JlC|鮚L]UBU5MB]YaåB:QⓃN!;uxaP;DڪBҤDAGQ)Nilϥ-QO䩦/3nuUuqo3FOpk]V&4ҠD1Ű fW)~,R6}f[k ߴU{3(}r4!E}]$zV&M 2X-P"0|JI\}+pdɋnSsٲ7;7:Wm| }g˟p׾7\w*= \>ו6c܎ȋ=ucTIҤs(bDMZy}hk.t畢d?3W~=z*ٿ\i¶"F,>S464e`KKWNDg֖3"JP7R<,z^7 N Bҽ(޴(tod>OQ}QD>|{[uJ:Ej+`iKC*s'DŻFU H&hiutN|Ui6hIQr( ٓ[(&dV>rF'n."'PóoAIQ? A{卵wg D{N*Nͯ_ ]mlPs%QW]ٞS:]vɜ ?{8cl֩0cM<mθ7=}/{θ\|} kKiDߔ8HV1V'D b]JAf GDOZ),.Ru[YlvO_|][]t^!8ѳu[_Zׯaa))bbLϗ2#XUu e?*USIo0Mݾxk-16v:`w?n)EIQBK@C!]z&@M? 4r/[eJ{'O l-<d*Sp ťvkoMȃb19ǓPOR#jp= cbK^o;b@$0Ϭ3 2T|U A{> f|LeZ_Ȧ{/I,~0OBlֲ:*)Ntd])J<^BdHD*Vp]mB\P%7tь-]i'&1)Ȝ ١æ.$z# ZR:-pQ `W"3ׯ _0SF_D=sޜqO쎁oMλމް)GoZߛ׍n@sb.MؙQ[ C/HnIS ``H٥W4tm_v/>uJvƯԮ0~0J'h? <Ɇ䊚&ZW) DXp2N;.)硌[zzkf5.%xa='4d82+d&)K ; ,?1kA2 Ie\E:Jʐokl9ĞB}}n,rjUHD wk7$ !cL|ԫٴ+I+8v9~_U|=^WG:V2ENHi'ȑχǹHd"TLtų|iz WF`bc"htr˛u6_&#Y L RkJMT98KX3g@okf=kPQ0\;\<*XB1K XIg[GJ+Dr%~W<$pIXPKFR a3F!x%,"҃呑2RO&-.H5+BEX<:xP|i֛&pT/^XoGyҀ0d2 xzWωQo5uAbCW i vTο'[?!݀GrGoG.dby\<>KWK%KcagA|*CA ?a=l?JS|L.3 PZDZ8=tztcV#p_ï'JZ::i:Vg0ꚓCUhH!4[B魶z }ฮX̋tLsOV2_~ gu2{Vu7JNCn EI4!-Lk5~r{\ Ѻ&4 p B5xCZ^$RMM@H(ěf˰9bI; ҇˭!F,?S:˞0}srÀUa -[bxUI$'E$1E/ٕ! Rx4nKqɰ!-d4v =\(òsM ܕ"v-"HK#aDWQAQ骅rG٭wS;%2$.CntFzkLK8Rc*wG$ZzֲﰷATDݛG"sn6/$W;@h"2q'tmpt}.@,hmU/(`YC[>\AF-b# 7x΄q|=lhAZ*p9jv9΢EDN<m <-,%Rג34E2;΁m棆@wbqF"jԕyHX@Bg#錒Z *F).$Õxl*-QNcW CXʉ6ԗOPԎN/BИ`l/] OHۛBL%BQX"JUZ:YKѡ 2V e͢~~^v7f?}=ݗ.߸zn~G?ͻyKKPYQUa٤޾?{w;rIO<Z"$tYxXy .~iVAV qIH3YK]I5KcB>EZ+͡,JfEk2 -zF瞏BjKҮS XJUX)Jmq1ll]%4S %ՇCY9Ό60IZϡRIxoÃLU.nc7'"IMg ŵZ C#f/5'C3'zt8n`s/Jv8EH"pso8M`ۊ4Ռ>P6D #"4iS%5e^Sn BYL` B.1JVpW\~qvNtmv5qb݃׮/q[SǞa>? z.=]DsHʎd7K@me9r. <)) hբ;p 3=+̈]^߸:,}d!xRV2$C\6FƛS>]izhѥZ>B}jX '9NxRTuz^g,ZRڗ[T@KS^XY"- 0i8 a C2yܳkqNҚ+#+`4{LOOR`(t| F:7A0JaC?%yzBۇ WgGx)2͙W'ٝՇd L,E6x a#` Xڸ/k(JWnՂyȜ@Sr+"%2g巇$7A] ז;̓n(`*m "Zd&ɘdA?y=Ÿ`   ?P4$jmo$JJM ,fn[M~_Bo)ѨKQs]ˤEF~к 2+z3+Cס"Ց<:[=d^ jNA ƐX,f(T-XM"pQa F-=HʥwO& i$~~F>2z' wL= έ h,3le:f"H6D%3z5T νiU) (V [75"4tyЂ<';>@yt:=/ί(+I 5<?B8|,9 ]͎V SI>xp>v4g\JS#vjgDoQhsqh(FуhKbr3}#sf(TH+:!1SP8:1s ˪dGJNwL?ʍoV%G,'myC5r K%2DbtT't&@BO]f" MЍ|cl>.ȶAL2bϽVJ*c!fR%- F+;o . /E¤`}`debwDI!;" izOE({"KxL}?e"^wgG2[X"1iPP9$~;Y&R̈q 0V/f40?N@ +/NMnJU@o3WY+$ +S5~F(?Tnיvܘ~윽Mpk@u VEӇkF!P#*J3FjLu.Stm8D^.MUs^GW.r? ,Hۑ'C#{RKD W!nՋjjm쐙wv_T&_Lj4 4\ scJ/+dQTk4 38d*U,DX(`\֏) ?2&+  D/`a}dx\zKThc~Sq,ɨs-}B3ͪ fJ$ 1-q{ mN s :፳|Yz`7t!15bCy+v/= u᪦= ftmx}ɐ(3jA?̓ %{ YOkoR?E-2p;v^.#w[[5=ImUT*cM1jzo^̗KO“IIjQI?F~-|kXP }m*e`!!KC8ȩ"? ˟ҝ"0cj쬊%TCE|Fj99p\{Y*ʜ!܇.QXP8*ɝ`θx1ׅ*nGRsSm~X% +z +5feW)WIrk6*\Dp/(x^k^hזX Om(q=ϵؑ Jޗf?DyK5; S 1D5Tz >YvCC$Qb0ԁO=d^j܎7jO/lz&;ԭ6Oي2.χ%iLvDWFE( xg_eTj6NU(T-99˽(O%?$udkg!KT≮Bg`{>iemiZ;!P{{6detN0'\dx{sɳK*+@zw!u0)ڛFp VK *go/M!qʫ׈*bSzt3 FрeN_"t빎{=hK&Pd0(βա1@0~G:ݰ2%\rJ:n!\/MbTkV5n: NHim;*tX-tMȨCO@(7==p  `d+v4+6)=13S&H$bkY&*șѨ2iY!V-o*!=N ٸ+eYqP, #hTy y2ڶ35 KCL0O;,1IGמǵr;%DαF)U]hn R_Aum ~A,7 ^ ՠ/H'\Ҽ B^L.T ( uWu ^d Q*IIzc2 ڽΪ9 (!J`LkYfGWRЄ H[C]IiٯT ƀfPRF >ž~^!za%xl% ?uX ΰ+,ʺT3`l 6ˀ|Sb\VKZ#`7J@Bb@ٕ/)2=L{ep31:y|Z~MVNt'`1F4Pe ?㔎O[h-;!G l̚<}<"Q:s'U@}MDN8~$.~1t6g /l0?l5ĝ9;ב\,BJKD6l%~әptVbgv"B-U ʘ|4?<7QL9|©c7d("b4+i[6Z)5W o.Vht2,CǴAR3\;Ŝ{!ћ$aFLuӫ)>,k9 ;b $7Y$ѭRP1_AfKT\@X?N*1b{z4m]aWQ z@5NHJZ5Û0L P(c;pG)N7nn8?ЫD:eN# R(/HXG&+ 4X.3|WZD;q72jR,ٱSCMy`~ku6 &IJaɿa&2̴JQxW#!sc~.ԖԤA6k Ψ=> #r )y"d9b&:@ Oyf񫒄"K^>L^$_~tBzhOB( jav݊,\XP9^ y_^H fc%RYgEpQm #{,D]R|',I\Q5m%0SW/2`NzpYRGad<(#$,"mQ.C}PX(ok,މ, lߟ]_S$ w\I2,VRMLs9RAdްY-O+V 8DKlil"u,0l3[ vl+.mlj:l,Swz&^$g<´MV.v*Ą05:%?ҩdw$Ю&Ek"!He_WACb*\(>Ul]Upn1AzyKnV>JOҳU Xּ=a져;I[i|8#vgҢaFj\]Jax410CiŻи9 VpʭfC]OV$ӈ!voQx+6TBF"a6$Q915؛jPB@ML d?31HX-%p'EOhMBiJCR4 #8nBNu#Do{i=y| PMR Y|9ZYW(5_zf)dRƲ* M6a@z$#M-H wBij?!#\2cYZE<5qRc/#G]9B7t3Ɏ ~haLؤࣘe.g^zXK6Ybx6mttZ:t5q3&my %+ad;PgDQXi>UnBi)/PCO~s[MmXψf6,p?/"6{6sq@VW9Z9; x=?H}a< 3M5j:_In7#Ӽeb# "Կ3o 0}kYTE]Y D.><ړjڈԟ*bXl J7{bƊBq"K֖b eVGHsq@ Π*& AQ.TlI:X k1q,-S|l;¾jIFT!It!J b%2͹L)4v4@7t^uyӻE\\yd`YR,6T݈TGH~PZpк:FӶn(1 ^]Èm QZ? .SRexVtXdJ(NyB&x>ѦB *=sG#,VpkL C0L]Ƽl4,֥lza軚h|T;S7AtAeԈNU3\QZBd0JECDHXE&'aݓvJS{G!HfqB~GaSK(3u][ c%.O v'ũ;hӲi]4â)ӫbOt 03*◙l v)u"^M鍮e[ o gћ:-yBW7v|6u:XY^V~JO8cX] DO42MJp.KZI䊪s~QI&&B  c19A5V<1Q mX\\A$-ȓLɱ;`"[J#I7}/gQ:>\)7o_Nv zU-AKQ!732&Li 3@ђOD# B\t$zΠ)9CSI qӲTpv J̔  (Z!D6. QݦpE3UF ,|m."z*Aȁ =l2ӺT$b0qa +d8Wje7i#Cg ~C8$@-F颀HBԩ$v ;Y%X4$^ ݤGU`*GSqe ?Khq6z$|K!,Fjv瓸/2 Ջ- s37=ADz7s[N}^aDDd]:ح< fIgIaMRR o)7(< fL⧻%4 κ),' ƌ!916Ng:L-anj¬fEѫ_ux#iI_h D)_!v㧧󋍗\_*cJL 6,{HnT~J=40mK3`Ku6%#Z P-g߿+ ƾ6H:ᒨ73"F{^,kg3I?ג֪Pt: ,^[$B*./-@&hqZ1F{sGyސ& )\噅|@NIz5DHAKy tDeZMDԨ0vDcrȼAMk=Y/1GD-GnO榁h"\!X<vXJX75.K F9"\+ nA|ŵ_J"-#/GƢ0Bmh&>6-D!tF#ػܖ'|`[HJmE-[CH0M >CC˓ FQؓnh)ՄKga&aA3*m dg r[5 #E.NLjhm["쓺l -sn6; ƇWӏ ] gMn6}(Sd:\YWwh*pxQMe5ʔmUs1LC1 v뎻aqCG s抵:xc]=֎1I䊱1;[pI}f8ؔSC 044*vTƎO30>kQ0|N)&V,f<[+Ш([&Ճ=H1+ET}yydxC\O%?>H`-Θ\_-&{c(i>aBsM o^`{e%]'iI M*ehL(}5,ir]"N2^bΰAdkB?.,] K DƏ/.j P€*֍,.3Zʟ4irƵ,3~͚/?,I) kh54ؾ-0w<pmn@T3F_H*&kdd;ߋhҁ=KSOW}5렐olJ!wQY@.+2HzL” tɴpo%Iۨ>ʁ/XX']9ͦD"B>{F70{ n?<'\R9kret䗾f-6r">޶-XVqrtFk 'IXu;u02IPI8xVsDŽDWڿD'@DKiG>|߱cЖ! R#Tr*1Ǻ`Mj!bB Ǿ_ !y`jz'cS,빦mtr?Gk(0jSELio6GM]e#sdVg{@(@:!_۔qpy7PXN?9=-(u)ӯ '|#V1tjM:1 :fys7n)-D돇Zyc{W sSlSpHrS@LhônjϜQqMJӆҸ4~bZXо%V؜W` ۮ ECqbŚ*^@kɰ[;\W4c{[ظ.@N)xMN!&c3CNC&;Z< V qI .96pV6lIA&~ῑ gś<l:u:.[kA"KMᯄЋ, Srttdcxվ E*@m[L[M SKEjB}%ytQWES;d/o&0\hY_8fVT&%ŰPS`XmQARu}ʱ S:~uLU7/SbThD<{컧TTp5)Z )a{䟯T /ɅB.XF`(˹51S LHaQQ')Nm2u ;00ʹ[$eĻ%nlm(0;z1 Io%dL\i+v(Mozg'Y!~5 O5& Ig{g*P5w~lzE`mb`PUZUeGD-:)jdQ%V}dVfҦ0㗘bfX2 R7,Y . QM,|#i$ILF{bu|e@El=l$&f䊪LL9N-#c0;Q_pEB"> v}6] c}¡Dq|5 TVo'B );p_caA7s_ XC\M)II矗PPDu(6)$rQBTyuT!PDL ǒ^p Hv"3H\yjҍ V̀S 'pG8qJɨH +b~37ha:B4H(֒~RS#߂$tP 3 qe9 kV":jSJ4O] n̈ԫ9p4cj$ku0 }֛^*N5YhpV3(I)/rA6H&%7.|d|,3liDQLG!&FPGCAjϱ3gNjx`<=LNAw݆1@2*/$M\LK|X3<@t+DrEF\QC۲uަ8e)X&kyӾ>gDXmV@@6raH}>yGEVTYqi#1G_XaD _;R~}|aVl,~ARsZeWiuHiycӏzDivVXi`ULh37M:5bG00SIr=26D(eJdjT^EY5sJ>v[#Jƿ&t&NVC[1ӢH)iOIJ WNI T$; S\w{Tm Me>nO̦J(l:$TROܗ;4Sw[Ax<iInPOW6֮c$YCii)ٻ,$# p&J#P&uK(#r_!ú4WwL5q(`+#~K_C uh4aXY GT`D_/ؑa=ښ] PD&LYmmvwIl u=(Bn0kU! x_p"HFFoA>+PvD/Ԙx Kj3n^ab(R {9`f-su4Te#Wr`?)xǩmlMe: _yFAQf!- Q-ݶ/}X{ZdU3"(q/)Z!(0߃\L rHk$$~T:i%L G*33YxF^EH~\Fh]}V)i㤰jٕlsy+0$U4w\3B"&SM9ex"ЏFS\ÔK~nj RG7D= $\\/MDǙ~R Vh.;"raR 3nv%C8a>3a9 nf!p/-c 1es/xWɅU2y` [lQl7W?ɱ?} !E`0$ 'ͩY*#=l 9K[` P3 A ?@qM$H4j`iS] cCvb,"DRA-6i6U)o 7{U":=1 j^iHȐ۰$`hd Y%ViWsp-0Rb^i/i@TZqKc$5[ h̹Ǧ8Y}+\zQXd%8^lJf|c<[Ύ[z}qroYNTz7Ko-A!)cҤ>olK_dMM)&އdz~4}3J/R*`y/*~7Y¶4 I $=&/,ȃ ԁ8=^Zk(N 7)ۦJ8F崙Rht0ڵ2tXߌC TNKUn}KTNQzg"|qLv%x>E ]ڽN9cd)Ǣ 3L-E6Зfhs+`0@z ɬꅃ ֎uU#B^B^Ok72/Ejp &[Rh1Q[3 1/6Ҡ8sF,2|;=5A@AyX `ҋ񤎄 !{%sqjU(Vws횠Adh;fBW4Y'L *3+U3I3ee.KPVE7P0p_ӪHz`pa=˭N{-ɻE`5یWV*ElmSv/$f:y9 \+P{pEu*kyd\+(?}QOPRA\hx@\Sz3ҨD74vg70[&b軫j{\Xm- >@[ʉp$U_9bKVC^XQެI]&cM x,:d 6)(rܲ(^Fg!S?iBcbBʘ_"Sjdʌ kjFx yh 7N=dzBa\-}95ya(Bұ9 L}aΰ4 ڍR-+qBa WtIRt&|]~`2ZWd,  RM+QBNq^@-J~9_2b p1g{38'Aha@`jy.f I (ss]n&ۏg$pBQ*&ʉraoJ$Ae,njo fMW ˳40MΤݓIԪFt(Ae~5T!#z&'nE -,S>. TU8tIOpA^rwA9`Z![{x9" PqھslIAI]`p͗ -xc[Q\RѿJi<غXhoJa ޞ10  ̨"|@v`=uąTf#|*T-g>_z*U3CVA3a"gq bIrB)OdyQe!sl ^P 4 rPm:1@:,OZ*W8I\繢 OCA>1P)!KQ=\IdgF]-(Sۦ'7B!BڪkncJ gin;2@KEo}ǎN'HS0:,Ÿ&gD=iQ$sjwiP/b QgFOC鲓[yf^"zKb^ Yw5ޠ!Wϕ^'~UM[ȵ bRL*43tPvW"N4}(oYAeov,LƓSd 0man7 yH~o|=~øT_mX0ҋ]$ _np)3=!/2 +Io3sRZ̑RT?/YJb: H&[aE]3| A3 KA t#wqWMV n /% •WVT*EƚFYT,Iġ!WW"7V.IT" cr (x:d JX‚[ _*ׁKH 5LӮC҆8 M*RA u7t5~>ԏ $TA#Gxtx]Py`b\zkEo^!*@/0 8,S릝N B[`FL~=vεZX?vG6 G薱naF0&deI&V37-eGHPNRZQyZB1% 0ϡ .X̬v9!]Z2Tbڨ+,1C3S*h &*qEc{!En ka=4غJ`W]zݧQ_ "՚9eB$4bS ,PvJn\O Nٖ.n&'n-$AC\~(d#A{`*Zt&s$6ff 6|ne5H!Uf(;CYF8>QsKOu*Kann#B8A!UQk0ňdJ̕. UCR$I?ARjhyq4M݆ ڱ&')kF =~kX̖2Dm0A\RLըQ\FJ~O7rYx QtE2T"(qp?;1DCo@>Ё3ͬEVDč3,H7O, G}Ķ@ ږ"']¸3zOX&%`h P+ҏ6- Q )}`.Rj/`.fnGQp+1GXt6 \[Z+P=DURI֍c%7ӣef~Q f~)3(: a0;MX w)L3_lMGxbgĀ"9e‰`RA[$O0" FA" xF+=nt]"gcEW&R$q{ Kz!:7%iMa\$1 DbԼU20U,A; dD }r D1Q́yհ|ň9Jc K8dql gNPkNm_^CX:?Q *ƅjQ/-_R U ^f e&2`F[&bST1V`~u|rU,H! PKjGaVDii3connexion/vendor/swagger-ui/lib/jquery-1.8.0.min.js/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ (function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
    a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
    t
    ",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="

    ",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
    ",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

    ",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
    ","
    "]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
    ").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);PKjGCqq5connexion/vendor/swagger-ui/lib/jquery.slideto.min.js(function(b){b.fn.slideto=function(a){a=b.extend({slide_duration:"slow",highlight_duration:3E3,highlight:true,highlight_color:"#FFFF99"},a);return this.each(function(){obj=b(this);b("body").animate({scrollTop:obj.offset().top},a.slide_duration,function(){a.highlight&&b.ui.version&&obj.effect("highlight",{color:a.highlight_color},a.highlight_duration)})})}})(jQuery); PKjG< KK5connexion/vendor/swagger-ui/lib/highlight.7.3.pack.jsvar hljs=new function(){function l(o){return o.replace(/&/gm,"&").replace(//gm,">")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("")}while(o!=u.node);r.splice(q,1);while(q'+L[0]+""}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return''+r.value+""}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+=""}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"
    ")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[b],starts:{e:"",rE:true,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);PK5HLjee.connexion/vendor/swagger-ui/lib/js-yaml.min.js/* js-yaml 3.4.6 https://github.com/nodeca/js-yaml */ !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.jsyaml=t()}}(function(){var t;return function e(t,n,i){function r(a,s){if(!n[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};t[a][0].call(l.exports,function(e){var n=t[a][1][e];return r(n?n:e)},l,l.exports,e,t,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;an;n+=1)r=o[n],t[r]=e[r];return t}function s(t,e){var n,i="";for(n=0;e>n;n+=1)i+=t;return i}function c(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t}e.exports.isNothing=i,e.exports.isObject=r,e.exports.toArray=o,e.exports.repeat=s,e.exports.isNegativeZero=c,e.exports.extend=a},{}],3:[function(t,e,n){"use strict";function i(t,e){var n,i,r,o,a,s,c;if(null===e)return{};for(n={},i=Object.keys(e),r=0,o=i.length;o>r;r+=1)a=i[r],s=String(e[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),c=t.compiledTypeMap[a],c&&E.call(c.styleAliases,s)&&(s=c.styleAliases[s]),n[a]=s;return n}function r(t){var e,n,i;if(e=t.toString(16).toUpperCase(),255>=t)n="x",i=2;else if(65535>=t)n="u",i=4;else{if(!(4294967295>=t))throw new O("code point within a string may not be greater than 0xFFFFFFFF");n="U",i=8}return"\\"+n+j.repeat("0",i-e.length)+e}function o(t){this.schema=t.schema||S,this.indent=Math.max(1,t.indent||2),this.skipInvalid=t.skipInvalid||!1,this.flowLevel=j.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=i(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function a(t,e){for(var n,i=j.repeat(" ",e),r=0,o=-1,a="",s=t.length;s>r;)o=t.indexOf("\n",r),-1===o?(n=t.slice(r),r=s):(n=t.slice(r,o+1),r=o+1),n.length&&"\n"!==n&&(a+=i),a+=n;return a}function s(t,e){return"\n"+j.repeat(" ",t.indent*e)}function c(t,e){var n,i,r;for(n=0,i=t.implicitTypes.length;i>n;n+=1)if(r=t.implicitTypes[n],r.resolve(e))return!0;return!1}function u(t){this.source=t,this.result="",this.checkpoint=0}function l(t,e,n,i){var r,o,s,l,f,m,g,y,v,x,A,b,w,k,C,j,O,S,_,I,E;if(0===e.length)return void(t.dump="''");if(-1!==et.indexOf(e))return void(t.dump="'"+e+"'");for(r=!0,o=e.length?e.charCodeAt(0):0,s=M===o||M===e.charCodeAt(e.length-1),(K===o||W===o||G===o||z===o)&&(r=!1),s?(r=!1,l=!1,f=!1):(l=!i,f=!i),m=!0,g=new u(e),y=!1,v=0,x=0,A=t.indent*n,b=t.lineWidth,-1===b&&(b=9007199254740991),40>A?b-=A:b=40,k=0;k0&&(O=e.charCodeAt(k-1),O===M&&(f=!1,l=!1)),l&&(S=k-v,v=k,S>x&&(x=S))),w!==D&&(m=!1),g.takeUpTo(k),g.escapeChar())}if(r&&c(t,e)&&(r=!1),_="",(l||f)&&(I=0,e.charCodeAt(e.length-1)===N&&(I+=1,e.charCodeAt(e.length-2)===N&&(I+=1)),0===I?_="-":2===I&&(_="+")),f&&b>x&&(l=!1),y||(f=!1),r)t.dump=e;else if(m)t.dump="'"+e+"'";else if(l)E=p(e,b),t.dump=">"+_+"\n"+a(E,A);else if(f)_||(e=e.replace(/\n$/,"")),t.dump="|"+_+"\n"+a(e,A);else{if(!g)throw new Error("Failed to dump scalar value");g.finish(),t.dump='"'+g.result+'"'}}function p(t,e){var n,i="",r=0,o=t.length,a=/\n+$/.exec(t);for(a&&(o=a.index+1);o>r;)n=t.indexOf("\n",r),n>o||-1===n?(i&&(i+="\n\n"),i+=f(t.slice(r,o),e),r=o):(i&&(i+="\n\n"),i+=f(t.slice(r,n),e),r=n+1);return a&&"\n"!==a[0]&&(i+=a[0]),i}function f(t,e){if(""===t)return t;for(var n,i,r,o=/[^\s] [^\s]/g,a="",s=0,c=0,u=o.exec(t);u;)n=u.index,n-c>e&&(i=s!==c?s:n,a&&(a+="\n"),r=t.slice(c,i),a+=r,c=i+1),s=n+1,u=o.exec(t);return a&&(a+="\n"),a+=c!==s&&t.length-c>e?t.slice(c,s)+"\n"+t.slice(s+1):t.slice(c)}function h(t){return F!==t&&N!==t&&T!==t&&B!==t&&V!==t&&Z!==t&&J!==t&&X!==t&&U!==t&&Y!==t&&$!==t&&L!==t&&Q!==t&&R!==t&&P!==t&&D!==t&&q!==t&&H!==t&&!tt[t]&&!d(t)}function d(t){return!(t>=32&&126>=t||133===t||t>=160&&55295>=t||t>=57344&&65533>=t||t>=65536&&1114111>=t)}function m(t,e,n){var i,r,o="",a=t.tag;for(i=0,r=n.length;r>i;i+=1)A(t,e,n[i],!1,!1)&&(0!==i&&(o+=", "),o+=t.dump);t.tag=a,t.dump="["+o+"]"}function g(t,e,n,i){var r,o,a="",c=t.tag;for(r=0,o=n.length;o>r;r+=1)A(t,e+1,n[r],!0,!0)&&(i&&0===r||(a+=s(t,e)),a+="- "+t.dump);t.tag=c,t.dump=a||"[]"}function y(t,e,n){var i,r,o,a,s,c="",u=t.tag,l=Object.keys(n);for(i=0,r=l.length;r>i;i+=1)s="",0!==i&&(s+=", "),o=l[i],a=n[o],A(t,e,o,!1,!1)&&(t.dump.length>1024&&(s+="? "),s+=t.dump+": ",A(t,e,a,!1,!1)&&(s+=t.dump,c+=s));t.tag=u,t.dump="{"+c+"}"}function v(t,e,n,i){var r,o,a,c,u,l,p="",f=t.tag,h=Object.keys(n);if(t.sortKeys===!0)h.sort();else if("function"==typeof t.sortKeys)h.sort(t.sortKeys);else if(t.sortKeys)throw new O("sortKeys must be a boolean or a function");for(r=0,o=h.length;o>r;r+=1)l="",i&&0===r||(l+=s(t,e)),a=h[r],c=n[a],A(t,e+1,a,!0,!0,!0)&&(u=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024,u&&(l+=t.dump&&N===t.dump.charCodeAt(0)?"?":"? "),l+=t.dump,u&&(l+=s(t,e)),A(t,e+1,c,!0,u)&&(l+=t.dump&&N===t.dump.charCodeAt(0)?":":": ",l+=t.dump,p+=l));t.tag=f,t.dump=p||"{}"}function x(t,e,n){var i,r,o,a,s,c;for(r=n?t.explicitTypes:t.implicitTypes,o=0,a=r.length;a>o;o+=1)if(s=r[o],(s.instanceOf||s.predicate)&&(!s.instanceOf||"object"==typeof e&&e instanceof s.instanceOf)&&(!s.predicate||s.predicate(e))){if(t.tag=n?s.tag:"?",s.represent){if(c=t.styleMap[s.tag]||s.defaultStyle,"[object Function]"===I.call(s.represent))i=s.represent(e,c);else{if(!E.call(s.represent,c))throw new O("!<"+s.tag+'> tag resolver accepts not "'+c+'" style');i=s.represent[c](e,c)}t.dump=i}return!0}return!1}function A(t,e,n,i,r,o){t.tag=null,t.dump=n,x(t,n,!1)||x(t,n,!0);var a=I.call(t.dump);i&&(i=0>t.flowLevel||t.flowLevel>e);var s,c,u="[object Object]"===a||"[object Array]"===a;if(u&&(s=t.duplicates.indexOf(n),c=-1!==s),(null!==t.tag&&"?"!==t.tag||c||2!==t.indent&&e>0)&&(r=!1),c&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(u&&c&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),"[object Object]"===a)i&&0!==Object.keys(t.dump).length?(v(t,e,t.dump,r),c&&(t.dump="&ref_"+s+t.dump)):(y(t,e,t.dump),c&&(t.dump="&ref_"+s+" "+t.dump));else if("[object Array]"===a)i&&0!==t.dump.length?(g(t,e,t.dump,r),c&&(t.dump="&ref_"+s+t.dump)):(m(t,e,t.dump),c&&(t.dump="&ref_"+s+" "+t.dump));else{if("[object String]"!==a){if(t.skipInvalid)return!1;throw new O("unacceptable kind of an object to dump "+a)}"?"!==t.tag&&l(t,t.dump,e,o)}null!==t.tag&&"?"!==t.tag&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function b(t,e){var n,i,r=[],o=[];for(w(t,r,o),n=0,i=o.length;i>n;n+=1)e.duplicates.push(r[o[n]]);e.usedDuplicates=new Array(i)}function w(t,e,n){var i,r,o;if(null!==t&&"object"==typeof t)if(r=e.indexOf(t),-1!==r)-1===n.indexOf(r)&&n.push(r);else if(e.push(t),Array.isArray(t))for(r=0,o=t.length;o>r;r+=1)w(t[r],e,n);else for(i=Object.keys(t),r=0,o=i.length;o>r;r+=1)w(t[i[r]],e,n)}function k(t,e){e=e||{};var n=new o(e);return b(t,n),A(n,0,t,!0,!0)?n.dump+"\n":""}function C(t,e){return k(t,j.extend({schema:_},e))}var j=t("./common"),O=t("./exception"),S=t("./schema/default_full"),_=t("./schema/default_safe"),I=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=9,N=10,T=13,M=32,L=33,D=34,U=35,q=37,Y=38,P=39,$=42,B=44,K=45,H=58,R=62,W=63,G=64,V=91,Z=93,z=96,J=123,Q=124,X=125,tt={};tt[0]="\\0",tt[7]="\\a",tt[8]="\\b",tt[9]="\\t",tt[10]="\\n",tt[11]="\\v",tt[12]="\\f",tt[13]="\\r",tt[27]="\\e",tt[34]='\\"',tt[92]="\\\\",tt[133]="\\N",tt[160]="\\_",tt[8232]="\\L",tt[8233]="\\P";var et=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];u.prototype.takeUpTo=function(t){var e;if(t checkpoint"),e.position=t,e.checkpoint=this.checkpoint,e;return this.result+=this.source.slice(this.checkpoint,t),this.checkpoint=t,this},u.prototype.escapeChar=function(){var t,e;return t=this.source.charCodeAt(this.checkpoint),e=tt[t]||r(t),this.result+=e,this.checkpoint+=1,this},u.prototype.finish=function(){this.source.length>this.checkpoint&&this.takeUpTo(this.source.length)},e.exports.dump=k,e.exports.safeDump=C},{"./common":2,"./exception":4,"./schema/default_full":9,"./schema/default_safe":10}],4:[function(t,e,n){"use strict";function i(t,e){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"")}var r=t("inherit");r(i,Error),i.prototype.toString=function(t){var e=this.name+": ";return e+=this.reason||"(unknown reason)",!t&&this.mark&&(e+=" "+this.mark.toString()),e},e.exports=i},{inherit:31}],5:[function(t,e,n){"use strict";function i(t){return 10===t||13===t}function r(t){return 9===t||32===t}function o(t){return 9===t||32===t||10===t||13===t}function a(t){return 44===t||91===t||93===t||123===t||125===t}function s(t){var e;return t>=48&&57>=t?t-48:(e=32|t,e>=97&&102>=e?e-97+10:-1)}function c(t){return 120===t?2:117===t?4:85===t?8:0}function u(t){return t>=48&&57>=t?t-48:-1}function l(t){return 48===t?"\x00":97===t?"":98===t?"\b":116===t?" ":9===t?" ":110===t?"\n":118===t?" ":102===t?"\f":114===t?"\r":101===t?"":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"…":95===t?" ":76===t?"\u2028":80===t?"\u2029":""}function p(t){return 65535>=t?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}function f(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||H,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function h(t,e){return new $(e,new B(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function d(t,e){throw h(t,e)}function m(t,e){t.onWarning&&t.onWarning.call(null,h(t,e))}function g(t,e,n,i){var r,o,a,s;if(n>e){if(s=t.input.slice(e,n),i)for(r=0,o=s.length;o>r;r+=1)a=s.charCodeAt(r),9===a||a>=32&&1114111>=a||d(t,"expected valid JSON character");else X.test(s)&&d(t,"the stream contains non-printable characters");t.result+=s}}function y(t,e,n){var i,r,o,a;for(P.isObject(n)||d(t,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(n),o=0,a=i.length;a>o;o+=1)r=i[o],R.call(e,r)||(e[r]=n[r])}function v(t,e,n,i,r){var o,a;if(i=String(i),null===e&&(e={}),"tag:yaml.org,2002:merge"===n)if(Array.isArray(r))for(o=0,a=r.length;a>o;o+=1)y(t,e,r[o]);else y(t,e,r);else e[i]=r;return e}function x(t){var e;e=t.input.charCodeAt(t.position),10===e?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):d(t,"a line break is expected"),t.line+=1,t.lineStart=t.position}function A(t,e,n){for(var o=0,a=t.input.charCodeAt(t.position);0!==a;){for(;r(a);)a=t.input.charCodeAt(++t.position);if(e&&35===a)do a=t.input.charCodeAt(++t.position);while(10!==a&&13!==a&&0!==a);if(!i(a))break;for(x(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position)}return-1!==n&&0!==o&&t.lineIndent1&&(t.result+=P.repeat("\n",e-1))}function k(t,e,n){var s,c,u,l,p,f,h,d,m,y=t.kind,v=t.result;if(m=t.input.charCodeAt(t.position),o(m)||a(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m)return!1;if((63===m||45===m)&&(c=t.input.charCodeAt(t.position+1),o(c)||n&&a(c)))return!1;for(t.kind="scalar",t.result="",u=l=t.position,p=!1;0!==m;){if(58===m){if(c=t.input.charCodeAt(t.position+1),o(c)||n&&a(c))break}else if(35===m){if(s=t.input.charCodeAt(t.position-1),o(s))break}else{if(t.position===t.lineStart&&b(t)||n&&a(m))break;if(i(m)){if(f=t.line,h=t.lineStart,d=t.lineIndent,A(t,!1,-1),t.lineIndent>=e){p=!0,m=t.input.charCodeAt(t.position);continue}t.position=l,t.line=f,t.lineStart=h,t.lineIndent=d;break}}p&&(g(t,u,l,!1),w(t,t.line-f),u=l=t.position,p=!1),r(m)||(l=t.position+1),m=t.input.charCodeAt(++t.position)}return g(t,u,l,!1),t.result?!0:(t.kind=y,t.result=v,!1)}function C(t,e){var n,r,o;if(n=t.input.charCodeAt(t.position),39!==n)return!1;for(t.kind="scalar",t.result="",t.position++,r=o=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(g(t,r,t.position,!0),n=t.input.charCodeAt(++t.position),39!==n)return!0;r=o=t.position,t.position++}else i(n)?(g(t,r,o,!0),w(t,A(t,!1,e)),r=o=t.position):t.position===t.lineStart&&b(t)?d(t,"unexpected end of the document within a single quoted scalar"):(t.position++,o=t.position);d(t,"unexpected end of the stream within a single quoted scalar")}function j(t,e){var n,r,o,a,u,l;if(l=t.input.charCodeAt(t.position),34!==l)return!1;for(t.kind="scalar",t.result="",t.position++,n=r=t.position;0!==(l=t.input.charCodeAt(t.position));){if(34===l)return g(t,n,t.position,!0),t.position++,!0;if(92===l){if(g(t,n,t.position,!0),l=t.input.charCodeAt(++t.position),i(l))A(t,!1,e);else if(256>l&&rt[l])t.result+=ot[l],t.position++;else if((u=c(l))>0){for(o=u,a=0;o>0;o--)l=t.input.charCodeAt(++t.position),(u=s(l))>=0?a=(a<<4)+u:d(t,"expected hexadecimal character");t.result+=p(a),t.position++}else d(t,"unknown escape sequence");n=r=t.position}else i(l)?(g(t,n,r,!0),w(t,A(t,!1,e)),n=r=t.position):t.position===t.lineStart&&b(t)?d(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}d(t,"unexpected end of the stream within a double quoted scalar")}function O(t,e){var n,i,r,a,s,c,u,l,p,f,h,m=!0,g=t.tag,y=t.anchor;if(h=t.input.charCodeAt(t.position),91===h)a=93,u=!1,i=[];else{if(123!==h)return!1;a=125,u=!0,i={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=i),h=t.input.charCodeAt(++t.position);0!==h;){if(A(t,!0,e),h=t.input.charCodeAt(t.position),h===a)return t.position++,t.tag=g,t.anchor=y,t.kind=u?"mapping":"sequence",t.result=i,!0;m||d(t,"missed comma between flow collection entries"),p=l=f=null,s=c=!1,63===h&&(r=t.input.charCodeAt(t.position+1),o(r)&&(s=c=!0,t.position++,A(t,!0,e))),n=t.line,T(t,e,W,!1,!0),p=t.tag,l=t.result,A(t,!0,e),h=t.input.charCodeAt(t.position),!c&&t.line!==n||58!==h||(s=!0,h=t.input.charCodeAt(++t.position),A(t,!0,e),T(t,e,W,!1,!0),f=t.result),u?v(t,i,p,l,f):i.push(s?v(t,null,p,l,f):l),A(t,!0,e),h=t.input.charCodeAt(t.position),44===h?(m=!0,h=t.input.charCodeAt(++t.position)):m=!1}d(t,"unexpected end of the stream within a flow collection")}function S(t,e){var n,o,a,s,c=z,l=!1,p=e,f=0,h=!1;if(s=t.input.charCodeAt(t.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(t.kind="scalar",t.result="";0!==s;)if(s=t.input.charCodeAt(++t.position),43===s||45===s)z===c?c=43===s?Q:J:d(t,"repeat of a chomping mode identifier");else{if(!((a=u(s))>=0))break;0===a?d(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?d(t,"repeat of an indentation width identifier"):(p=e+a-1,l=!0)}if(r(s)){do s=t.input.charCodeAt(++t.position);while(r(s));if(35===s)do s=t.input.charCodeAt(++t.position);while(!i(s)&&0!==s)}for(;0!==s;){for(x(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!l||t.lineIndentp&&(p=t.lineIndent),i(s))f++;else{if(t.lineIndente)&&0!==r)d(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(T(t,e,Z,!0,a)&&(g?h=t.result:m=t.result),g||(v(t,p,f,h,m),f=h=m=null),A(t,!0,-1),c=t.input.charCodeAt(t.position)),t.lineIndent>e&&0!==c)d(t,"bad indentation of a mapping entry");else if(t.lineIndente?h=1:t.lineIndent===e?h=0:t.lineIndente?h=1:t.lineIndent===e?h=0:t.lineIndentc;c+=1)if(l=t.implicitTypes[c],l.resolve(t.result)){t.result=l.construct(t.result),t.tag=l.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else R.call(t.typeMap,t.tag)?(l=t.typeMap[t.tag],null!==t.result&&l.kind!==t.kind&&d(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+l.kind+'", not "'+t.kind+'"'),l.resolve(t.result)?(t.result=l.construct(t.result),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):d(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):d(t,"unknown tag !<"+t.tag+">");return null!==t.tag||null!==t.anchor||g}function M(t){var e,n,a,s,c=t.position,u=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};0!==(s=t.input.charCodeAt(t.position))&&(A(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==s));){for(u=!0,s=t.input.charCodeAt(++t.position),e=t.position;0!==s&&!o(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(e,t.position),a=[],n.length<1&&d(t,"directive name must not be less than one character in length");0!==s;){for(;r(s);)s=t.input.charCodeAt(++t.position);if(35===s){do s=t.input.charCodeAt(++t.position);while(0!==s&&!i(s));break}if(i(s))break;for(e=t.position;0!==s&&!o(s);)s=t.input.charCodeAt(++t.position);a.push(t.input.slice(e,t.position))}0!==s&&x(t),R.call(st,n)?st[n](t,n,a):m(t,'unknown document directive "'+n+'"')}return A(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,A(t,!0,-1)):u&&d(t,"directives end mark is expected"),T(t,t.lineIndent-1,Z,!1,!0),A(t,!0,-1),t.checkLineBreaks&&tt.test(t.input.slice(c,t.position))&&m(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&b(t)?void(46===t.input.charCodeAt(t.position)&&(t.position+=3,A(t,!0,-1))):void(t.positioni;i+=1)e(o[i])}function U(t,e){var n=L(t,e);if(0===n.length)return void 0;if(1===n.length)return n[0];throw new $("expected a single document in the stream, but found more")}function q(t,e,n){D(t,e,P.extend({schema:K},n))}function Y(t,e){return U(t,P.extend({schema:K},e))}for(var P=t("./common"),$=t("./exception"),B=t("./mark"),K=t("./schema/default_safe"),H=t("./schema/default_full"),R=Object.prototype.hasOwnProperty,W=1,G=2,V=3,Z=4,z=1,J=2,Q=3,X=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,tt=/[\x85\u2028\u2029]/,et=/[,\[\]\{\}]/,nt=/^(?:!|!!|![a-z\-]+!)$/i,it=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,rt=new Array(256),ot=new Array(256),at=0;256>at;at++)rt[at]=l(at)?1:0,ot[at]=l(at);var st={YAML:function(t,e,n){var i,r,o;null!==t.version&&d(t,"duplication of %YAML directive"),1!==n.length&&d(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),null===i&&d(t,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),o=parseInt(i[2],10),1!==r&&d(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=2>o,1!==o&&2!==o&&m(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var i,r;2!==n.length&&d(t,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],nt.test(i)||d(t,"ill-formed tag handle (first argument) of the TAG directive"),R.call(t.tagMap,i)&&d(t,'there is a previously declared suffix for "'+i+'" tag handle'),it.test(r)||d(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[i]=r}};e.exports.loadAll=D,e.exports.load=U,e.exports.safeLoadAll=q,e.exports.safeLoad=Y},{"./common":2,"./exception":4,"./mark":6,"./schema/default_full":9,"./schema/default_safe":10}],6:[function(t,e,n){"use strict";function i(t,e,n,i,r){this.name=t,this.buffer=e,this.position=n,this.line=i,this.column=r}var r=t("./common");i.prototype.getSnippet=function(t,e){var n,i,o,a,s;if(!this.buffer)return null;for(t=t||4,e=e||75,n="",i=this.position;i>0&&-1==="\x00\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1));)if(i-=1,this.position-i>e/2-1){n=" ... ",i+=5;break}for(o="",a=this.position;ae/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(i,a),r.repeat(" ",t)+n+s+o+"\n"+r.repeat(" ",t+this.position-i+n.length)+"^"},i.prototype.toString=function(t){var e,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),t||(e=this.getSnippet(),e&&(n+=":\n"+e)),n},e.exports=i},{"./common":2}],7:[function(t,e,n){"use strict";function i(t,e,n){var r=[];return t.include.forEach(function(t){n=i(t,e,n)}),t[e].forEach(function(t){n.forEach(function(e,n){e.tag===t.tag&&r.push(n)}),n.push(t)}),n.filter(function(t,e){return-1===r.indexOf(e)})}function r(){function t(t){i[t.tag]=t}var e,n,i={};for(e=0,n=arguments.length;n>e;e+=1)arguments[e].forEach(t);return i}function o(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(t){if(t.loadKind&&"scalar"!==t.loadKind)throw new s("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=i(this,"implicit",[]),this.compiledExplicit=i(this,"explicit",[]),this.compiledTypeMap=r(this.compiledImplicit,this.compiledExplicit)}var a=t("./common"),s=t("./exception"),c=t("./type");o.DEFAULT=null,o.create=function(){var t,e;switch(arguments.length){case 1:t=o.DEFAULT,e=arguments[0];break;case 2:t=arguments[0],e=arguments[1];break;default:throw new s("Wrong number of arguments for Schema.create function")}if(t=a.toArray(t),e=a.toArray(e),!t.every(function(t){return t instanceof o}))throw new s("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!e.every(function(t){return t instanceof c}))throw new s("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new o({include:t,explicit:e})},e.exports=o},{"./common":2,"./exception":4,"./type":13}],8:[function(t,e,n){"use strict";var i=t("../schema");e.exports=new i({include:[t("./json")]})},{"../schema":7,"./json":12}],9:[function(t,e,n){"use strict";var i=t("../schema");e.exports=i.DEFAULT=new i({include:[t("./default_safe")],explicit:[t("../type/js/undefined"),t("../type/js/regexp"),t("../type/js/function")]})},{"../schema":7,"../type/js/function":18,"../type/js/regexp":19,"../type/js/undefined":20,"./default_safe":10}],10:[function(t,e,n){"use strict";var i=t("../schema");e.exports=new i({include:[t("./core")],implicit:[t("../type/timestamp"),t("../type/merge")],explicit:[t("../type/binary"),t("../type/omap"),t("../type/pairs"),t("../type/set")]})},{"../schema":7,"../type/binary":14,"../type/merge":22,"../type/omap":24,"../type/pairs":25,"../type/set":27,"../type/timestamp":29,"./core":8}],11:[function(t,e,n){"use strict";var i=t("../schema");e.exports=new i({explicit:[t("../type/str"),t("../type/seq"),t("../type/map")]})},{"../schema":7,"../type/map":21,"../type/seq":26,"../type/str":28}],12:[function(t,e,n){"use strict";var i=t("../schema");e.exports=new i({include:[t("./failsafe")],implicit:[t("../type/null"),t("../type/bool"),t("../type/int"),t("../type/float")]})},{"../schema":7,"../type/bool":15,"../type/float":16,"../type/int":17,"../type/null":23,"./failsafe":11}],13:[function(t,e,n){"use strict";function i(t){var e={};return null!==t&&Object.keys(t).forEach(function(n){t[n].forEach(function(t){e[String(t)]=n})}),e}function r(t,e){if(e=e||{},Object.keys(e).forEach(function(e){if(-1===a.indexOf(e))throw new o('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=i(e.styleAliases||null),-1===s.indexOf(this.kind))throw new o('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var o=t("./exception"),a=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],s=["scalar","sequence","mapping"];e.exports=r},{"./exception":4}],14:[function(t,e,n){"use strict";function i(t){if(null===t)return!1;var e,n,i=0,r=t.length,o=u;for(n=0;r>n;n++)if(e=o.indexOf(t.charAt(n)),!(e>64)){if(0>e)return!1;i+=6}return i%8===0}function r(t){var e,n,i=t.replace(/[\r\n=]/g,""),r=i.length,o=u,a=0,c=[];for(e=0;r>e;e++)e%4===0&&e&&(c.push(a>>16&255),c.push(a>>8&255),c.push(255&a)),a=a<<6|o.indexOf(i.charAt(e));return n=r%4*6,0===n?(c.push(a>>16&255),c.push(a>>8&255),c.push(255&a)):18===n?(c.push(a>>10&255),c.push(a>>2&255)):12===n&&c.push(a>>4&255),s?new s(c):c}function o(t){var e,n,i="",r=0,o=t.length,a=u;for(e=0;o>e;e++)e%3===0&&e&&(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+t[e];return n=o%3,0===n?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}function a(t){return s&&s.isBuffer(t)}var s=t("buffer").Buffer,c=t("../type"),u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";e.exports=new c("tag:yaml.org,2002:binary",{kind:"scalar",resolve:i, construct:r,predicate:a,represent:o})},{"../type":13,buffer:30}],15:[function(t,e,n){"use strict";function i(t){if(null===t)return!1;var e=t.length;return 4===e&&("true"===t||"True"===t||"TRUE"===t)||5===e&&("false"===t||"False"===t||"FALSE"===t)}function r(t){return"true"===t||"True"===t||"TRUE"===t}function o(t){return"[object Boolean]"===Object.prototype.toString.call(t)}var a=t("../type");e.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:i,construct:r,predicate:o,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(t,e,n){"use strict";function i(t){return null===t?!1:u.test(t)?!0:!1}function r(t){var e,n,i,r;return e=t.replace(/_/g,"").toLowerCase(),n="-"===e[0]?-1:1,r=[],0<="+-".indexOf(e[0])&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:0<=e.indexOf(":")?(e.split(":").forEach(function(t){r.unshift(parseFloat(t,10))}),e=0,i=1,r.forEach(function(t){e+=t*i,i*=60}),n*e):n*parseFloat(e,10)}function o(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(s.isNegativeZero(t))return"-0.0";return n=t.toString(10),l.test(n)?n.replace("e",".e"):n}function a(t){return"[object Number]"===Object.prototype.toString.call(t)&&(0!==t%1||s.isNegativeZero(t))}var s=t("../common"),c=t("../type"),u=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),l=/^[-+]?[0-9]+e/;e.exports=new c("tag:yaml.org,2002:float",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o,defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(t,e,n){"use strict";function i(t){return t>=48&&57>=t||t>=65&&70>=t||t>=97&&102>=t}function r(t){return t>=48&&55>=t}function o(t){return t>=48&&57>=t}function a(t){if(null===t)return!1;var e,n=t.length,a=0,s=!1;if(!n)return!1;if(e=t[a],("-"===e||"+"===e)&&(e=t[++a]),"0"===e){if(a+1===n)return!0;if(e=t[++a],"b"===e){for(a++;n>a;a++)if(e=t[a],"_"!==e){if("0"!==e&&"1"!==e)return!1;s=!0}return s}if("x"===e){for(a++;n>a;a++)if(e=t[a],"_"!==e){if(!i(t.charCodeAt(a)))return!1;s=!0}return s}for(;n>a;a++)if(e=t[a],"_"!==e){if(!r(t.charCodeAt(a)))return!1;s=!0}return s}for(;n>a;a++)if(e=t[a],"_"!==e){if(":"===e)break;if(!o(t.charCodeAt(a)))return!1;s=!0}return s?":"!==e?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(a)):!1}function s(t){var e,n,i=t,r=1,o=[];return-1!==i.indexOf("_")&&(i=i.replace(/_/g,"")),e=i[0],("-"===e||"+"===e)&&("-"===e&&(r=-1),i=i.slice(1),e=i[0]),"0"===i?0:"0"===e?"b"===i[1]?r*parseInt(i.slice(2),2):"x"===i[1]?r*parseInt(i,16):r*parseInt(i,8):-1!==i.indexOf(":")?(i.split(":").forEach(function(t){o.unshift(parseInt(t,10))}),i=0,n=1,o.forEach(function(t){i+=t*n,n*=60}),r*i):r*parseInt(i,10)}function c(t){return"[object Number]"===Object.prototype.toString.call(t)&&0===t%1&&!u.isNegativeZero(t)}var u=t("../common"),l=t("../type");e.exports=new l("tag:yaml.org,2002:int",{kind:"scalar",resolve:a,construct:s,predicate:c,represent:{binary:function(t){return"0b"+t.toString(2)},octal:function(t){return"0"+t.toString(8)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return"0x"+t.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},{"../common":2,"../type":13}],18:[function(t,e,n){"use strict";function i(t){if(null===t)return!1;try{var e="("+t+")",n=s.parse(e,{range:!0});return"Program"!==n.type||1!==n.body.length||"ExpressionStatement"!==n.body[0].type||"FunctionExpression"!==n.body[0].expression.type?!1:!0}catch(i){return!1}}function r(t){var e,n="("+t+")",i=s.parse(n,{range:!0}),r=[];if("Program"!==i.type||1!==i.body.length||"ExpressionStatement"!==i.body[0].type||"FunctionExpression"!==i.body[0].expression.type)throw new Error("Failed to resolve function");return i.body[0].expression.params.forEach(function(t){r.push(t.name)}),e=i.body[0].expression.body.range,new Function(r,n.slice(e[0]+1,e[1]-1))}function o(t){return t.toString()}function a(t){return"[object Function]"===Object.prototype.toString.call(t)}var s;try{s=t("esprima")}catch(c){"undefined"!=typeof window&&(s=window.esprima)}var u=t("../../type");e.exports=new u("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13,esprima:"esprima"}],19:[function(t,e,n){"use strict";function i(t){if(null===t)return!1;if(0===t.length)return!1;var e=t,n=/\/([gim]*)$/.exec(t),i="";if("/"===e[0]){if(n&&(i=n[1]),i.length>3)return!1;if("/"!==e[e.length-i.length-1])return!1;e=e.slice(1,e.length-i.length-1)}try{return!0}catch(r){return!1}}function r(t){var e=t,n=/\/([gim]*)$/.exec(t),i="";return"/"===e[0]&&(n&&(i=n[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function o(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function a(t){return"[object RegExp]"===Object.prototype.toString.call(t)}var s=t("../../type");e.exports=new s("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13}],20:[function(t,e,n){"use strict";function i(){return!0}function r(){return void 0}function o(){return""}function a(t){return"undefined"==typeof t}var s=t("../../type");e.exports=new s("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13}],21:[function(t,e,n){"use strict";var i=t("../type");e.exports=new i("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})},{"../type":13}],22:[function(t,e,n){"use strict";function i(t){return"<<"===t||null===t}var r=t("../type");e.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:i})},{"../type":13}],23:[function(t,e,n){"use strict";function i(t){if(null===t)return!0;var e=t.length;return 1===e&&"~"===t||4===e&&("null"===t||"Null"===t||"NULL"===t)}function r(){return null}function o(t){return null===t}var a=t("../type");e.exports=new a("tag:yaml.org,2002:null",{kind:"scalar",resolve:i,construct:r,predicate:o,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":13}],24:[function(t,e,n){"use strict";function i(t){if(null===t)return!0;var e,n,i,r,o,c=[],u=t;for(e=0,n=u.length;n>e;e+=1){if(i=u[e],o=!1,"[object Object]"!==s.call(i))return!1;for(r in i)if(a.call(i,r)){if(o)return!1;o=!0}if(!o)return!1;if(-1!==c.indexOf(r))return!1;c.push(r)}return!0}function r(t){return null!==t?t:[]}var o=t("../type"),a=Object.prototype.hasOwnProperty,s=Object.prototype.toString;e.exports=new o("tag:yaml.org,2002:omap",{kind:"sequence",resolve:i,construct:r})},{"../type":13}],25:[function(t,e,n){"use strict";function i(t){if(null===t)return!0;var e,n,i,r,o,s=t;for(o=new Array(s.length),e=0,n=s.length;n>e;e+=1){if(i=s[e],"[object Object]"!==a.call(i))return!1;if(r=Object.keys(i),1!==r.length)return!1;o[e]=[r[0],i[r[0]]]}return!0}function r(t){if(null===t)return[];var e,n,i,r,o,a=t;for(o=new Array(a.length),e=0,n=a.length;n>e;e+=1)i=a[e],r=Object.keys(i),o[e]=[r[0],i[r[0]]];return o}var o=t("../type"),a=Object.prototype.toString;e.exports=new o("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:i,construct:r})},{"../type":13}],26:[function(t,e,n){"use strict";var i=t("../type");e.exports=new i("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}})},{"../type":13}],27:[function(t,e,n){"use strict";function i(t){if(null===t)return!0;var e,n=t;for(e in n)if(a.call(n,e)&&null!==n[e])return!1;return!0}function r(t){return null!==t?t:{}}var o=t("../type"),a=Object.prototype.hasOwnProperty;e.exports=new o("tag:yaml.org,2002:set",{kind:"mapping",resolve:i,construct:r})},{"../type":13}],28:[function(t,e,n){"use strict";var i=t("../type");e.exports=new i("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}})},{"../type":13}],29:[function(t,e,n){"use strict";function i(t){return null===t?!1:null===s.exec(t)?!1:!0}function r(t){var e,n,i,r,o,a,c,u,l,p,f=0,h=null;if(e=s.exec(t),null===e)throw new Error("Date resolve error");if(n=+e[1],i=+e[2]-1,r=+e[3],!e[4])return new Date(Date.UTC(n,i,r));if(o=+e[4],a=+e[5],c=+e[6],e[7]){for(f=e[7].slice(0,3);f.length<3;)f+="0";f=+f}return e[9]&&(u=+e[10],l=+(e[11]||0),h=6e4*(60*u+l),"-"===e[9]&&(h=-h)),p=new Date(Date.UTC(n,i,r,o,a,c,f)),h&&p.setTime(p.getTime()-h),p}function o(t){return t.toISOString()}var a=t("../type"),s=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$");e.exports=new a("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:i,construct:r,instanceOf:Date,represent:o})},{"../type":13}],30:[function(t,e,n){},{}],31:[function(t,e,n){e.exports=t("./lib/inherit")},{"./lib/inherit":32}],32:[function(e,n,i){!function(e){function r(t){var e=f(t);if(v)for(var n,i=0;n=b[i++];)t.hasOwnProperty(n)&&e.push(n);return e}function o(t,e,n){for(var i,o,a=r(n),s=0,u=a.length;u>s;)"__self"!==(i=a[s++])&&(o=n[i],g(o)&&(!c||o.toString().indexOf(".__base")>-1)?e[i]=function(n,i){var r=t[n]?t[n]:"__constructor"===n?e.__self.__parent:y;return function(){var t=this.__base;this.__base=r;var e=i.apply(this,arguments);return this.__base=t,e}}(i,o):e[i]=o)}function a(t,e){for(var n,i=1;n=t[i++];)e?g(n)?s.self(e,n.prototype,n):s.self(e,n):e=g(n)?s(t[0],n.prototype,n):s(t[0],n);return e||t[0]}function s(){var t=arguments,e=m(t[0]),n=e||g(t[0]),i=n?e?a(t[0]):t[0]:u,r=t[n?1:0]||{},s=t[n?2:1],c=r.__constructor||n&&i.prototype.__constructor?function(){return this.__constructor.apply(this,arguments)}:n?function(){return i.apply(this,arguments)}:function(){};if(!n)return c.prototype=r,c.prototype.__self=c.prototype.constructor=c,h(c,s);h(c,i),c.__parent=i;var l=i.prototype,f=c.prototype=p(l);return f.__self=f.constructor=c,r&&o(l,f,r),s&&o(i,c,s),c}var c=function(){"_"}.toString().indexOf("_")>-1,u=function(){},l=Object.prototype.hasOwnProperty,p=Object.create||function(t){var e=function(){};return e.prototype=t,new e},f=Object.keys||function(t){var e=[];for(var n in t)l.call(t,n)&&e.push(n);return e},h=function(t,e){for(var n in e)l.call(e,n)&&(t[n]=e[n]);return t},d=Object.prototype.toString,m=Array.isArray||function(t){return"[object Array]"===d.call(t)},g=function(t){return"[object Function]"===d.call(t)},y=function(){},v=!0,x={toString:""};for(var A in x)x.hasOwnProperty(A)&&(v=!1);var b=v?["toString","valueOf"]:null;s.self=function(){var t=arguments,e=m(t[0]),n=e?a(t[0],t[0][0]):t[0],i=t[1],r=t[2],s=n.prototype;return i&&o(s,s,i),r&&o(n,n,r),n};var w=!0;"object"==typeof i&&(n.exports=s,w=!1),"object"==typeof modules&&(modules.define("inherit",function(t){t(s)}),w=!1),"function"==typeof t&&(t(function(t,e,n){n.exports=s}),w=!1),w&&(e.inherit=s)}(this)},{}],"/":[function(t,e,n){"use strict";var i=t("./lib/js-yaml.js");e.exports=i},{"./lib/js-yaml.js":1}]},{},[])("/")}); PKjG=\W3connexion/vendor/swagger-ui/lib/handlebars-2.0.0.js/*! handlebars v2.0.0 Copyright (C) 2011-2014 by Yehuda Katz 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 */ !function(a,b){"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Handlebars=a.Handlebars||b()}(this,function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return i[a]}function c(a){for(var b=1;b":">",'"':""","'":"'","`":"`"},j=/[&<>"'`]/g,k=/[&<>"'`]/;g.extend=c;var l=Object.prototype.toString;g.toString=l;var m=function(a){return"function"==typeof a};m(/x/)&&(m=function(a){return"function"==typeof a&&"[object Function]"===l.call(a)});var m;g.isFunction=m;var n=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===l.call(a):!1};return g.isArray=n,g.escapeExpression=d,g.isEmpty=e,g.appendContextPath=f,g}(a),c=function(){"use strict";function a(a,b){var d;b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;f0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):d(this);if(c.data&&c.ids){var g=q(c.data);g.contextPath=f.appendContextPath(c.data.contextPath,c.name),c={data:g}}return e(b,c)}),a.registerHelper("each",function(a,b){if(!b)throw new g("Must pass iterator to #each");var c,d,e=b.fn,h=b.inverse,i=0,j="";if(b.data&&b.ids&&(d=f.appendContextPath(b.data.contextPath,b.ids[0])+"."),l(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(k(a))for(var m=a.length;m>i;i++)c&&(c.index=i,c.first=0===i,c.last=i===a.length-1,d&&(c.contextPath=d+i)),j+=e(a[i],{data:c});else for(var n in a)a.hasOwnProperty(n)&&(c&&(c.key=n,c.index=i,c.first=0===i,d&&(c.contextPath=d+n)),j+=e(a[n],{data:c}),i++);return 0===i&&(j=h(this)),j}),a.registerHelper("if",function(a,b){return l(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||f.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){l(a)&&(a=a.call(this));var c=b.fn;if(f.isEmpty(a))return b.inverse(this);if(b.data&&b.ids){var d=q(b.data);d.contextPath=f.appendContextPath(b.data.contextPath,b.ids[0]),b={data:d}}return c(a,b)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)}),a.registerHelper("lookup",function(a,b){return a&&a[b]})}var e={},f=a,g=b,h="2.0.0";e.VERSION=h;var i=6;e.COMPILER_REVISION=i;var j={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};e.REVISION_CHANGES=j;var k=f.isArray,l=f.isFunction,m=f.toString,n="[object Object]";e.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:o,log:p,registerHelper:function(a,b){if(m.call(a)===n){if(b)throw new g("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){m.call(a)===n?f.extend(this.partials,a):this.partials[a]=b},unregisterPartial:function(a){delete this.partials[a]}};var o={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(o.level<=a){var c=o.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};e.logger=o;var p=o.log;e.log=p;var q=function(a){var b=f.extend({},a);return b._parent=a,b};return e.createFrame=q,e}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");if(!a||!a.main)throw new l("Unknown template object: "+typeof a);b.VM.checkRevision(a.compiler);var c=function(c,d,e,f,g,h,i,j,m){g&&(f=k.extend({},f,g));var n=b.VM.invokePartial.call(this,c,e,f,h,i,j,m);if(null==n&&b.compile){var o={helpers:h,partials:i,data:j,depths:m};i[e]=b.compile(c,{data:void 0!==j,compat:a.compat},b),n=i[e](f,o)}if(null!=n){if(d){for(var p=n.split("\n"),q=0,r=p.length;r>q&&(p[q]||q+1!==r);q++)p[q]=d+p[q];n=p.join("\n")}return n}throw new l("The partial "+e+" could not be compiled when running in runtime-only mode")},d={lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:k.escapeExpression,invokePartial:c,fn:function(b){return a[b]},programs:[],program:function(a,b,c){var d=this.programs[a],e=this.fn(a);return b||c?d=f(this,a,e,b,c):d||(d=this.programs[a]=f(this,a,e)),d},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=k.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler},e=function(b,c){c=c||{};var f=c.data;e._setup(c),!c.partial&&a.useData&&(f=i(b,f));var g;return a.useDepths&&(g=c.depths?[b].concat(c.depths):[b]),a.main.call(d,b,d.helpers,d.partials,f,g)};return e.isTop=!0,e._setup=function(c){c.partial?(d.helpers=c.helpers,d.partials=c.partials):(d.helpers=d.merge(c.helpers,b.helpers),a.usePartial&&(d.partials=d.merge(c.partials,b.partials)))},e._child=function(b,c,e){if(a.useDepths&&!e)throw new l("must pass parent depths");return f(d,b,a[b],c,e)},e}function f(a,b,c,d,e){var f=function(b,f){return f=f||{},c.call(a,b,a.helpers,a.partials,f.data||d,e&&[b].concat(e))};return f.program=b,f.depth=e?e.length:0,f}function g(a,b,c,d,e,f,g){var h={partial:!0,helpers:d,partials:e,data:f,depths:g};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,h):void 0}function h(){return""}function i(a,b){return b&&"root"in b||(b=b?o(b):{},b.root=a),b}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES,o=c.createFrame;return j.checkRevision=d,j.template=e,j.program=f,j.invokePartial=g,j.noop=h,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.escapeExpression=j.escapeExpression,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,m["default"]=m,f=m}(d,a,c,b,e),g=function(a){"use strict";function b(a){a=a||{},this.firstLine=a.first_line,this.firstColumn=a.first_column,this.lastColumn=a.last_column,this.lastLine=a.last_line}var c,d=a,e={ProgramNode:function(a,c,d){b.call(this,d),this.type="program",this.statements=a,this.strip=c},MustacheNode:function(a,c,d,f,g){if(b.call(this,g),this.type="mustache",this.strip=f,null!=d&&d.charAt){var h=d.charAt(3)||d.charAt(2);this.escaped="{"!==h&&"&"!==h}else this.escaped=!!d;this.sexpr=a instanceof e.SexprNode?a:new e.SexprNode(a,c),this.id=this.sexpr.id,this.params=this.sexpr.params,this.hash=this.sexpr.hash,this.eligibleHelper=this.sexpr.eligibleHelper,this.isHelper=this.sexpr.isHelper},SexprNode:function(a,c,d){b.call(this,d),this.type="sexpr",this.hash=c;var e=this.id=a[0],f=this.params=a.slice(1);this.isHelper=!(!f.length&&!c),this.eligibleHelper=this.isHelper||e.isSimple},PartialNode:function(a,c,d,e,f){b.call(this,f),this.type="partial",this.partialName=a,this.context=c,this.hash=d,this.strip=e,this.strip.inlineStandalone=!0},BlockNode:function(a,c,d,e,f){b.call(this,f),this.type="block",this.mustache=a,this.program=c,this.inverse=d,this.strip=e,d&&!c&&(this.isInverse=!0)},RawBlockNode:function(a,c,f,g){if(b.call(this,g),a.sexpr.id.original!==f)throw new d(a.sexpr.id.original+" doesn't match "+f,this);c=new e.ContentNode(c,g),this.type="block",this.mustache=a,this.program=new e.ProgramNode([c],{},g)},ContentNode:function(a,c){b.call(this,c),this.type="content",this.original=this.string=a},HashNode:function(a,c){b.call(this,c),this.type="hash",this.pairs=a},IdNode:function(a,c){b.call(this,c),this.type="ID";for(var e="",f=[],g=0,h="",i=0,j=a.length;j>i;i++){var k=a[i].part;if(e+=(a[i].separator||"")+k,".."===k||"."===k||"this"===k){if(f.length>0)throw new d("Invalid path: "+e,this);".."===k?(g++,h+="../"):this.isScoped=!0}else f.push(k)}this.original=e,this.parts=f,this.string=f.join("."),this.depth=g,this.idName=h+this.string,this.isSimple=1===a.length&&!this.isScoped&&0===g,this.stringModeValue=this.string},PartialNameNode:function(a,c){b.call(this,c),this.type="PARTIAL_NAME",this.name=a.original},DataNode:function(a,c){b.call(this,c),this.type="DATA",this.id=a,this.stringModeValue=a.stringModeValue,this.idName="@"+a.stringModeValue},StringNode:function(a,c){b.call(this,c),this.type="STRING",this.original=this.string=this.stringModeValue=a},NumberNode:function(a,c){b.call(this,c),this.type="NUMBER",this.original=this.number=a,this.stringModeValue=Number(a)},BooleanNode:function(a,c){b.call(this,c),this.type="BOOLEAN",this.bool=a,this.stringModeValue="true"===a},CommentNode:function(a,c){b.call(this,c),this.type="comment",this.comment=a,this.strip={inlineStandalone:!0}}};return c=e}(c),h=function(){"use strict";var a,b=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,CONTENT:12,COMMENT:13,openRawBlock:14,END_RAW_BLOCK:15,OPEN_RAW_BLOCK:16,sexpr:17,CLOSE_RAW_BLOCK:18,openBlock:19,block_option0:20,closeBlock:21,openInverse:22,block_option1:23,OPEN_BLOCK:24,CLOSE:25,OPEN_INVERSE:26,inverseAndProgram:27,INVERSE:28,OPEN_ENDBLOCK:29,path:30,OPEN:31,OPEN_UNESCAPED:32,CLOSE_UNESCAPED:33,OPEN_PARTIAL:34,partialName:35,param:36,partial_option0:37,partial_option1:38,sexpr_repetition0:39,sexpr_option0:40,dataName:41,STRING:42,NUMBER:43,BOOLEAN:44,OPEN_SEXPR:45,CLOSE_SEXPR:46,hash:47,hash_repetition_plus0:48,hashSegment:49,ID:50,EQUALS:51,DATA:52,pathSegments:53,SEP:54,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],performAction:function(a,b,c,d,e,f){var g=f.length-1;switch(e){case 1:return d.prepareProgram(f[g-1].statements,!0),f[g-1];case 2:this.$=new d.ProgramNode(d.prepareProgram(f[g]),{},this._$);break;case 3:this.$=f[g];break;case 4:this.$=f[g];break;case 5:this.$=f[g];break;case 6:this.$=f[g];break;case 7:this.$=new d.ContentNode(f[g],this._$);break;case 8:this.$=new d.CommentNode(f[g],this._$);break;case 9:this.$=new d.RawBlockNode(f[g-2],f[g-1],f[g],this._$);break;case 10:this.$=new d.MustacheNode(f[g-1],null,"","",this._$);break;case 11:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!1,this._$);break;case 12:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!0,this._$);break;case 13:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 14:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 15:this.$={strip:d.stripFlags(f[g-1],f[g-1]),program:f[g]};break;case 16:this.$={path:f[g-1],strip:d.stripFlags(f[g-2],f[g])};break;case 17:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 18:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 19:this.$=new d.PartialNode(f[g-3],f[g-2],f[g-1],d.stripFlags(f[g-4],f[g]),this._$);break;case 20:this.$=new d.PartialNode(f[g-2],void 0,f[g-1],d.stripFlags(f[g-3],f[g]),this._$);break;case 21:this.$=new d.SexprNode([f[g-2]].concat(f[g-1]),f[g],this._$);break;case 22:this.$=new d.SexprNode([f[g]],null,this._$);break;case 23:this.$=f[g];break;case 24:this.$=new d.StringNode(f[g],this._$);break;case 25:this.$=new d.NumberNode(f[g],this._$);break;case 26:this.$=new d.BooleanNode(f[g],this._$);break;case 27:this.$=f[g];break;case 28:f[g-1].isHelper=!0,this.$=f[g-1];break;case 29:this.$=new d.HashNode(f[g],this._$);break;case 30:this.$=[f[g-2],f[g]];break;case 31:this.$=new d.PartialNameNode(f[g],this._$);break;case 32:this.$=new d.PartialNameNode(new d.StringNode(f[g],this._$),this._$);break;case 33:this.$=new d.PartialNameNode(new d.NumberNode(f[g],this._$));break;case 34:this.$=new d.DataNode(f[g],this._$);break;case 35:this.$=new d.IdNode(f[g],this._$);break;case 36:f[g-2].push({part:f[g],separator:f[g-1]}),this.$=f[g-2];break;case 37:this.$=[{part:f[g]}];break;case 38:this.$=[];break;case 39:f[g-1].push(f[g]);break;case 48:this.$=[];break;case 49:f[g-1].push(f[g]);break;case 52:this.$=[f[g]];break;case 53:f[g-1].push(f[g])}},table:[{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],defaultActions:{4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},parseError:function(a){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:((null===n||"undefined"==typeof n)&&(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;gb[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 12;break;case 1:return 12;case 2:return this.popState(),12;case 3:return b.yytext=b.yytext.substr(5,b.yyleng-9),this.popState(),15;case 4:return 12;case 5:return e(0,4),this.popState(),13;case 6:return 45;case 7:return 46;case 8:return 16;case 9:return this.popState(),this.begin("raw"),18;case 10:return 34;case 11:return 24;case 12:return 29;case 13:return this.popState(),28;case 14:return this.popState(),28;case 15:return 26;case 16:return 26;case 17:return 32;case 18:return 31;case 19:this.popState(),this.begin("com");break;case 20:return e(3,5),this.popState(),13;case 21:return 31;case 22:return 51;case 23:return 50;case 24:return 50;case 25:return 54;case 26:break;case 27:return this.popState(),33;case 28:return this.popState(),25;case 29:return b.yytext=e(1,2).replace(/\\"/g,'"'),42;case 30:return b.yytext=e(1,2).replace(/\\'/g,"'"),42;case 31:return 52;case 32:return 44;case 33:return 44;case 34:return 43;case 35:return 50;case 36:return b.yytext=e(1,2),50;case 37:return"INVALID";case 38:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[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],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[5],inclusive:!1},raw:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,38],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();return a=b}(),i=function(a){"use strict";function b(a,b){return{left:"~"===a.charAt(2),right:"~"===b.charAt(b.length-3)}}function c(a,b,c,d,i,k){if(a.sexpr.id.original!==d.path.original)throw new j(a.sexpr.id.original+" doesn't match "+d.path.original,a);var l=c&&c.program,m={left:a.strip.left,right:d.strip.right,openStandalone:f(b.statements),closeStandalone:e((l||b).statements)};if(a.strip.right&&g(b.statements,null,!0),l){var n=c.strip;n.left&&h(b.statements,null,!0),n.right&&g(l.statements,null,!0),d.strip.left&&h(l.statements,null,!0),e(b.statements)&&f(l.statements)&&(h(b.statements),g(l.statements))}else d.strip.left&&h(b.statements,null,!0);return i?new this.BlockNode(a,l,b,m,k):new this.BlockNode(a,b,l,m,k)}function d(a,b){for(var c=0,d=a.length;d>c;c++){var i=a[c],j=i.strip;if(j){var k=e(a,c,b,"partial"===i.type),l=f(a,c,b),m=j.openStandalone&&k,n=j.closeStandalone&&l,o=j.inlineStandalone&&k&&l;j.right&&g(a,c,!0),j.left&&h(a,c,!0),o&&(g(a,c),h(a,c)&&"partial"===i.type&&(i.indent=/([ \t]+$)/.exec(a[c-1].original)?RegExp.$1:"")),m&&(g((i.program||i.inverse).statements),h(a,c)),n&&(g(a,c),h((i.inverse||i.program).statements))}}return a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"content"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"content"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"content"===d.type&&(c||!d.rightStripped)){var e=d.string;d.string=d.string.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.string!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"content"===d.type&&(c||!d.leftStripped)){var e=d.string;return d.string=d.string.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.string!==e,d.leftStripped}}var i={},j=a;return i.stripFlags=b,i.prepareBlock=c,i.prepareProgram=d,i}(c),j=function(a,b,c,d){"use strict";function e(a){return a.constructor===h.ProgramNode?a:(g.yy=k,g.parse(a))}var f={},g=a,h=b,i=c,j=d.extend;f.parser=g;var k={};return j(k,i,h),f.parse=e,f}(h,g,i,b),k=function(a,b){"use strict";function c(){}function d(a,b,c){if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function e(a,b,c){function d(){var d=c.parse(a),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var e,f=function(a,b){return e||(e=d()),e.call(this,a,b)};return f._setup=function(a){return e||(e=d()),e._setup(a)},f._child=function(a,b,c){return e||(e=d()),e._child(a,b,c)},f}function f(a,b){if(a===b)return!0;if(i(a)&&i(b)&&a.length===b.length){for(var c=0;cc;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!f(d.args,e.args))return!1}for(b=this.children.length,c=0;b>c;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.opcodes=[],this.children=[],this.depths={list:[]},this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds;var c=this.options.knownHelpers;if(this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)this.options.knownHelpers[d]=c[d];return this.accept(a)},accept:function(a){return this[a.type](a)},program:function(a){for(var b=a.statements,c=0,d=b.length;d>c;c++)this.accept(b[c]);return this.isSimple=1===d,this.depths.list=this.depths.list.sort(function(a,b){return a-b}),this},compileProgram:function(a){var b,c=(new this.compiler).compile(a,this.options),d=this.guid++; this.usePartial=this.usePartial||c.usePartial,this.children[d]=c;for(var e=0,f=c.depths.list.length;f>e;e++)b=c.depths.list[e],2>b||this.addDepth(b-1);return d},block:function(a){var b=a.mustache,c=a.program,d=a.inverse;c&&(c=this.compileProgram(c)),d&&(d=this.compileProgram(d));var e=b.sexpr,f=this.classifySexpr(e);"helper"===f?this.helperSexpr(e,c,d):"simple"===f?(this.simpleSexpr(e),this.opcode("pushProgram",c),this.opcode("pushProgram",d),this.opcode("emptyHash"),this.opcode("blockValue",e.id.original)):(this.ambiguousSexpr(e,c,d),this.opcode("pushProgram",c),this.opcode("pushProgram",d),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},hash:function(a){var b,c,d=a.pairs;for(this.opcode("pushHash"),b=0,c=d.length;c>b;b++)this.pushParam(d[b][1]);for(;b--;)this.opcode("assignToHash",d[b][0]);this.opcode("popHash")},partial:function(a){var b=a.partialName;this.usePartial=!0,a.hash?this.accept(a.hash):this.opcode("push","undefined"),a.context?this.accept(a.context):(this.opcode("getContext",0),this.opcode("pushContext")),this.opcode("invokePartial",b.name,a.indent||""),this.opcode("append")},content:function(a){a.string&&this.opcode("appendContent",a.string)},mustache:function(a){this.sexpr(a.sexpr),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},ambiguousSexpr:function(a,b,c){var d=a.id,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.ID(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.id;"DATA"===b.type?this.DATA(b):b.parts.length?this.ID(b):(this.addDepth(b.depth),this.opcode("getContext",b.depth),this.opcode("pushContext")),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.id,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new h("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.falsy=!0,this.ID(e),this.opcode("invokeHelper",d.length,e.original,e.isSimple)}},sexpr:function(a){var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ID:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0];b?this.opcode("lookupOnContext",a.parts,a.falsy,a.isScoped):this.opcode("pushContext")},DATA:function(a){this.options.data=!0,this.opcode("lookupData",a.id.depth,a.id.parts)},STRING:function(a){this.opcode("pushString",a.string)},NUMBER:function(a){this.opcode("pushLiteral",a.number)},BOOLEAN:function(a){this.opcode("pushLiteral",a.bool)},comment:function(){},opcode:function(a){this.opcodes.push({opcode:a,args:j.call(arguments,1)})},addDepth:function(a){0!==a&&(this.depths[a]||(this.depths[a]=!0,this.depths.list.push(a)))},classifySexpr:function(a){var b=a.isHelper,c=a.eligibleHelper,d=this.options;if(c&&!b){var e=a.id.parts[0];d.knownHelpers[e]?b=!0:d.knownHelpersOnly&&(c=!1)}return b?"helper":c?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;c>b;b++)this.pushParam(a[b])},pushParam:function(a){this.stringParams?(a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",a.stringModeValue,a.type),"sexpr"===a.type&&this.sexpr(a)):(this.trackIds&&this.opcode("pushId",a.type,a.idName||a.stringModeValue),this.accept(a))},setupFullMustacheParams:function(a,b,c){var d=a.params;return this.pushParams(d),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.hash(a.hash):this.opcode("emptyHash"),d}},g.precompile=d,g.compile=e,g}(c,b),l=function(a,b){"use strict";function c(a){this.value=a}function d(){}var e,f=a.COMPILER_REVISION,g=a.REVISION_CHANGES,h=b;d.prototype={nameLookup:function(a,b){return d.isValidJavaScriptVariableName(b)?a+"."+b:a+"['"+b+"']"},depthedLookup:function(a){return this.aliases.lookup="this.lookup",'lookup(depths, "'+a+'")'},compilerInfo:function(){var a=f,b=g[a];return[a,b]},appendToBuffer:function(a){return this.environment.isSimple?"return "+a+";":{appendToBuffer:!0,content:a,toString:function(){return"buffer += "+a+";"}}},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.depths.list.length||this.options.compat;var e,f,g,i=a.opcodes;for(f=0,g=i.length;g>f;f++)e=i[f],this[e.opcode].apply(this,e.args);if(this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new h("Compile completed with content left on stack");var j=this.createFunctionContext(d);if(this.isChild)return j;var k={compiler:this.compilerInfo(),main:j},l=this.context.programs;for(f=0,g=l.length;g>f;f++)l[f]&&(k[f]=l[f]);return this.environment.usePartial&&(k.usePartial=!0),this.options.data&&(k.useData=!0),this.useDepths&&(k.useDepths=!0),this.options.compat&&(k.compat=!0),d||(k.compiler=JSON.stringify(k.compiler),k=this.objectLiteral(k)),k},preamble:function(){this.lastContext=0,this.source=[]},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));for(var d in this.aliases)this.aliases.hasOwnProperty(d)&&(b+=", "+d+"="+this.aliases[d]);var e=["depth0","helpers","partials","data"];this.useDepths&&e.push("depths");var f=this.mergeSource(b);return a?(e.push(f),Function.apply(this,e)):"function("+e.join(",")+") {\n "+f+"}"},mergeSource:function(a){for(var b,c,d="",e=!this.forceBuffer,f=0,g=this.source.length;g>f;f++){var h=this.source[f];h.appendToBuffer?b=b?b+"\n + "+h.content:h.content:(b&&(d?d+="buffer += "+b+";\n ":(c=!0,d=b+";\n "),b=void 0),d+=h+"\n ",this.environment.isSimple||(e=!1))}return e?(b||!d)&&(d+="return "+(b||'""')+";\n"):(a+=", buffer = "+(c?"":this.initializeBuffer()),d+=b?"return buffer + "+b+";\n":"return buffer;\n"),a&&(d="var "+a.substring(2)+(c?"":";\n ")+d),d},blockValue:function(a){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var b=[this.contextName(0)];this.setupParams(a,0,b);var c=this.popStack();b.splice(1,0,c),this.push("blockHelperMissing.call("+b.join(", ")+")")},ambiguousBlockValue:function(){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var a=[this.contextName(0)];this.setupParams("",0,a,!0),this.flushInline();var b=this.topStack();a.splice(1,0,b),this.pushSource("if (!"+this.lastHelper+") { "+b+" = blockHelperMissing.call("+a.join(", ")+"); }")},appendContent:function(a){this.pendingContent&&(a=this.pendingContent+a),this.pendingContent=a},append:function(){this.flushInline();var a=this.popStack();this.pushSource("if ("+a+" != null) { "+this.appendToBuffer(a)+" }"),this.environment.isSimple&&this.pushSource("else { "+this.appendToBuffer("''")+" }")},appendEscaped:function(){this.aliases.escapeExpression="this.escapeExpression",this.pushSource(this.appendToBuffer("escapeExpression("+this.popStack()+")"))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c){var d=0,e=a.length;for(c||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[d++]));e>d;d++)this.replaceStack(function(c){var e=this.nameLookup(c,a[d],"context");return b?" && "+e:" != null ? "+e+" : "+c})},lookupData:function(a,b){a?this.pushStackLiteral("this.data(data, "+a+")"):this.pushStackLiteral("data");for(var c=b.length,d=0;c>d;d++)this.replaceStack(function(a){return" && "+this.nameLookup(a,b[d],"data")})},resolvePossibleLambda:function(){this.aliases.lambda="this.lambda",this.push("lambda("+this.popStack()+", "+this.contextName(0)+")")},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"sexpr"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(){this.pushStackLiteral("{}"),this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}"))},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push("{"+a.ids.join(",")+"}"),this.stringParams&&(this.push("{"+a.contexts.join(",")+"}"),this.push("{"+a.types.join(",")+"}")),this.push("{\n "+a.values.join(",\n ")+"\n }")},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},push:function(a){return this.inlineStack.push(a),a},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},invokeHelper:function(a,b,c){this.aliases.helperMissing="helpers.helperMissing";var d=this.popStack(),e=this.setupHelper(a,b),f=(c?e.name+" || ":"")+d+" || helperMissing";this.push("(("+f+").call("+e.callParams+"))")},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(c.name+".call("+c.callParams+")")},invokeAmbiguous:function(a,b){this.aliases.functionType='"function"',this.aliases.helperMissing="helpers.helperMissing",this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper");this.push("((helper = (helper = "+e+" || "+c+") != null ? helper : helperMissing"+(d.paramsInit?"),("+d.paramsInit:"")+"),(typeof helper === functionType ? helper.call("+d.callParams+") : helper))")},invokePartial:function(a,b){var c=[this.nameLookup("partials",a,"partial"),"'"+b+"'","'"+a+"'",this.popStack(),this.popStack(),"helpers","partials"];this.options.data?c.push("data"):this.options.compat&&c.push("undefined"),this.options.compat&&c.push("depths"),this.push("this.invokePartial("+c.join(", ")+")")},assignToHash:function(a){var b,c,d,e=this.popStack();this.trackIds&&(d=this.popStack()),this.stringParams&&(c=this.popStack(),b=this.popStack());var f=this.hash;b&&f.contexts.push("'"+a+"': "+b),c&&f.types.push("'"+a+"': "+c),d&&f.ids.push("'"+a+"': "+d),f.values.push("'"+a+"': ("+e+")")},pushId:function(a,b){"ID"===a||"DATA"===a?this.pushString(b):"sexpr"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:d,compileChildren:function(a,b){for(var c,d,e=a.children,f=0,g=e.length;g>f;f++){c=e[f],d=new this.compiler;var h=this.matchExistingProgram(c);null==h?(this.context.programs.push(""),h=this.context.programs.length,c.index=h,c.name="program"+h,this.context.programs[h]=d.compile(c,b,this.context,!this.precompile),this.context.environments[h]=c,this.useDepths=this.useDepths||d.useDepths):(c.index=h,c.name="program"+h)}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;c>b;b++){var d=this.context.environments[b];if(d&&d.equals(a))return b}},programExpression:function(a){var b=this.environment.children[a],c=(b.depths.list,this.useDepths),d=[b.index,"data"];return c&&d.push("depths"),"this.program("+d.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},pushStackLiteral:function(a){return this.push(new c(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent))),this.pendingContent=void 0),a&&this.source.push(a)},pushStack:function(a){this.flushInline();var b=this.incrStack();return this.pushSource(b+" = "+a+";"),this.compileStack.push(b),b},replaceStack:function(a){{var b,d,e,f="";this.isInline()}if(!this.isInline())throw new h("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof c)f=b=g.value,e=!0;else{d=!this.stackSlot;var i=d?this.incrStack():this.topStackName();f="("+this.push(i)+" = "+g+")",b=this.topStack()}var j=a.call(this,b);e||this.popStack(),d&&this.stackSlot--,this.push("("+f+j+")")},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;if(a.length){this.inlineStack=[];for(var b=0,d=a.length;d>b;b++){var e=a[b];e instanceof c?this.compileStack.push(e):this.pushStack(e)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),d=(b?this.inlineStack:this.compileStack).pop();if(!a&&d instanceof c)return d.value;if(!b){if(!this.stackSlot)throw new h("Invalid stack pop");this.stackSlot--}return d},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof c?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(this.quotedString(c)+":"+a[c]);return"{"+b.join(",")+"}"},setupHelper:function(a,b,c){var d=[],e=this.setupParams(b,a,d,c),f=this.nameLookup("helpers",b,"helper");return{params:d,paramsInit:e,name:f,callParams:[this.contextName(0)].concat(d).join(", ")}},setupOptions:function(a,b,c){var d,e,f,g={},h=[],i=[],j=[];g.name=this.quotedString(a),g.hash=this.popStack(),this.trackIds&&(g.hashIds=this.popStack()),this.stringParams&&(g.hashTypes=this.popStack(),g.hashContexts=this.popStack()),e=this.popStack(),f=this.popStack(),(f||e)&&(f||(f="this.noop"),e||(e="this.noop"),g.fn=f,g.inverse=e);for(var k=b;k--;)d=this.popStack(),c[k]=d,this.trackIds&&(j[k]=this.popStack()),this.stringParams&&(i[k]=this.popStack(),h[k]=this.popStack());return this.trackIds&&(g.ids="["+j.join(",")+"]"),this.stringParams&&(g.types="["+i.join(",")+"]",g.contexts="["+h.join(",")+"]"),this.options.data&&(g.data="data"),g},setupParams:function(a,b,c,d){var e=this.objectLiteral(this.setupOptions(a,b,c));return d?(this.useRegister("options"),c.push("options"),"options="+e):(c.push(e),"")}};for(var i="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "),j=d.RESERVED_WORDS={},k=0,l=i.length;l>k;k++)j[i[k]]=!0;return d.isValidJavaScriptVariableName=function(a){return!d.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},e=d}(d,c),m=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c.parser,j=c.parse,k=d.Compiler,l=d.compile,m=d.precompile,n=e,o=g.create,p=function(){var a=o();return a.compile=function(b,c){return l(b,c,a)},a.precompile=function(b,c){return m(b,c,a)},a.AST=h,a.Compiler=k,a.JavaScriptCompiler=n,a.Parser=i,a.parse=j,a};return g=p(),g.create=p,g["default"]=g,f=g}(f,g,j,k,l);return m});PKjGmm)connexion/vendor/swagger-ui/lib/marked.js/** * marked - a markdown parser * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) * https://github.com/chjj/marked */ ;(function() { /** * Block-Level Grammar */ var block = { newline: /^\n+/, code: /^( {4}[^\n]+\n*)+/, fences: noop, hr: /^( *[-*_]){3,} *(?:\n+|$)/, heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/, nptable: noop, lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/, blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/, list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/, def: /^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/, table: noop, paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/, text: /^[^\n]+/ }; block.bullet = /(?:[*+-]|\d+\.)/; block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/; block.item = replace(block.item, 'gm') (/bull/g, block.bullet) (); block.list = replace(block.list) (/bull/g, block.bullet) ('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))') ('def', '\\n+(?=' + block.def.source + ')') (); block.blockquote = replace(block.blockquote) ('def', block.def) (); block._tag = '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b'; block.html = replace(block.html) ('comment', //) ('closed', /<(tag)[\s\S]+?<\/\1>/) ('closing', /])*?>/) (/tag/g, block._tag) (); block.paragraph = replace(block.paragraph) ('hr', block.hr) ('heading', block.heading) ('lheading', block.lheading) ('blockquote', block.blockquote) ('tag', '<' + block._tag) ('def', block.def) (); /** * Normal Block Grammar */ block.normal = merge({}, block); /** * GFM Block Grammar */ block.gfm = merge({}, block.normal, { fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/, paragraph: /^/ }); block.gfm.paragraph = replace(block.paragraph) ('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|' + block.list.source.replace('\\1', '\\3') + '|') (); /** * GFM + Tables Block Grammar */ block.tables = merge({}, block.gfm, { nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/, table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ }); /** * Block Lexer */ function Lexer(options) { this.tokens = []; this.tokens.links = {}; this.options = options || marked.defaults; this.rules = block.normal; if (this.options.gfm) { if (this.options.tables) { this.rules = block.tables; } else { this.rules = block.gfm; } } } /** * Expose Block Rules */ Lexer.rules = block; /** * Static Lex Method */ Lexer.lex = function(src, options) { var lexer = new Lexer(options); return lexer.lex(src); }; /** * Preprocessing */ Lexer.prototype.lex = function(src) { src = src .replace(/\r\n|\r/g, '\n') .replace(/\t/g, ' ') .replace(/\u00a0/g, ' ') .replace(/\u2424/g, '\n'); return this.token(src, true); }; /** * Lexing */ Lexer.prototype.token = function(src, top, bq) { var src = src.replace(/^ +$/gm, '') , next , loose , cap , bull , b , item , space , i , l; while (src) { // newline if (cap = this.rules.newline.exec(src)) { src = src.substring(cap[0].length); if (cap[0].length > 1) { this.tokens.push({ type: 'space' }); } } // code if (cap = this.rules.code.exec(src)) { src = src.substring(cap[0].length); cap = cap[0].replace(/^ {4}/gm, ''); this.tokens.push({ type: 'code', text: !this.options.pedantic ? cap.replace(/\n+$/, '') : cap }); continue; } // fences (gfm) if (cap = this.rules.fences.exec(src)) { src = src.substring(cap[0].length); this.tokens.push({ type: 'code', lang: cap[2], text: cap[3] }); continue; } // heading if (cap = this.rules.heading.exec(src)) { src = src.substring(cap[0].length); this.tokens.push({ type: 'heading', depth: cap[1].length, text: cap[2] }); continue; } // table no leading pipe (gfm) if (top && (cap = this.rules.nptable.exec(src))) { src = src.substring(cap[0].length); item = { type: 'table', header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), cells: cap[3].replace(/\n$/, '').split('\n') }; for (i = 0; i < item.align.length; i++) { if (/^ *-+: *$/.test(item.align[i])) { item.align[i] = 'right'; } else if (/^ *:-+: *$/.test(item.align[i])) { item.align[i] = 'center'; } else if (/^ *:-+ *$/.test(item.align[i])) { item.align[i] = 'left'; } else { item.align[i] = null; } } for (i = 0; i < item.cells.length; i++) { item.cells[i] = item.cells[i].split(/ *\| */); } this.tokens.push(item); continue; } // lheading if (cap = this.rules.lheading.exec(src)) { src = src.substring(cap[0].length); this.tokens.push({ type: 'heading', depth: cap[2] === '=' ? 1 : 2, text: cap[1] }); continue; } // hr if (cap = this.rules.hr.exec(src)) { src = src.substring(cap[0].length); this.tokens.push({ type: 'hr' }); continue; } // blockquote if (cap = this.rules.blockquote.exec(src)) { src = src.substring(cap[0].length); this.tokens.push({ type: 'blockquote_start' }); cap = cap[0].replace(/^ *> ?/gm, ''); // Pass `top` to keep the current // "toplevel" state. This is exactly // how markdown.pl works. this.token(cap, top, true); this.tokens.push({ type: 'blockquote_end' }); continue; } // list if (cap = this.rules.list.exec(src)) { src = src.substring(cap[0].length); bull = cap[2]; this.tokens.push({ type: 'list_start', ordered: bull.length > 1 }); // Get each top-level item. cap = cap[0].match(this.rules.item); next = false; l = cap.length; i = 0; for (; i < l; i++) { item = cap[i]; // Remove the list item's bullet // so it is seen as the next token. space = item.length; item = item.replace(/^ *([*+-]|\d+\.) +/, ''); // Outdent whatever the // list item contains. Hacky. if (~item.indexOf('\n ')) { space -= item.length; item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, ''); } // Determine whether the next list item belongs here. // Backpedal if it does not belong in this list. if (this.options.smartLists && i !== l - 1) { b = block.bullet.exec(cap[i + 1])[0]; if (bull !== b && !(bull.length > 1 && b.length > 1)) { src = cap.slice(i + 1).join('\n') + src; i = l - 1; } } // Determine whether item is loose or not. // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/ // for discount behavior. loose = next || /\n\n(?!\s*$)/.test(item); if (i !== l - 1) { next = item.charAt(item.length - 1) === '\n'; if (!loose) loose = next; } this.tokens.push({ type: loose ? 'loose_item_start' : 'list_item_start' }); // Recurse. this.token(item, false, bq); this.tokens.push({ type: 'list_item_end' }); } this.tokens.push({ type: 'list_end' }); continue; } // html if (cap = this.rules.html.exec(src)) { src = src.substring(cap[0].length); this.tokens.push({ type: this.options.sanitize ? 'paragraph' : 'html', pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', text: cap[0] }); continue; } // def if ((!bq && top) && (cap = this.rules.def.exec(src))) { src = src.substring(cap[0].length); this.tokens.links[cap[1].toLowerCase()] = { href: cap[2], title: cap[3] }; continue; } // table (gfm) if (top && (cap = this.rules.table.exec(src))) { src = src.substring(cap[0].length); item = { type: 'table', header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') }; for (i = 0; i < item.align.length; i++) { if (/^ *-+: *$/.test(item.align[i])) { item.align[i] = 'right'; } else if (/^ *:-+: *$/.test(item.align[i])) { item.align[i] = 'center'; } else if (/^ *:-+ *$/.test(item.align[i])) { item.align[i] = 'left'; } else { item.align[i] = null; } } for (i = 0; i < item.cells.length; i++) { item.cells[i] = item.cells[i] .replace(/^ *\| *| *\| *$/g, '') .split(/ *\| */); } this.tokens.push(item); continue; } // top-level paragraph if (top && (cap = this.rules.paragraph.exec(src))) { src = src.substring(cap[0].length); this.tokens.push({ type: 'paragraph', text: cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1] }); continue; } // text if (cap = this.rules.text.exec(src)) { // Top-level should never reach here. src = src.substring(cap[0].length); this.tokens.push({ type: 'text', text: cap[0] }); continue; } if (src) { throw new Error('Infinite loop on byte: ' + src.charCodeAt(0)); } } return this.tokens; }; /** * Inline-Level Grammar */ var inline = { escape: /^\\([\\`*{}\[\]()#+\-.!_>])/, autolink: /^<([^ >]+(@|:\/)[^ >]+)>/, url: noop, tag: /^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/, link: /^!?\[(inside)\]\(href\)/, reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/, nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/, strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/, em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/, br: /^ {2,}\n(?!\s*$)/, del: noop, text: /^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/; inline.link = replace(inline.link) ('inside', inline._inside) ('href', inline._href) (); inline.reflink = replace(inline.reflink) ('inside', inline._inside) (); /** * Normal Inline Grammar */ inline.normal = merge({}, inline); /** * Pedantic Inline Grammar */ inline.pedantic = merge({}, inline.normal, { strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/ }); /** * GFM Inline Grammar */ inline.gfm = merge({}, inline.normal, { escape: replace(inline.escape)('])', '~|])')(), url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/, del: /^~~(?=\S)([\s\S]*?\S)~~/, text: replace(inline.text) (']|', '~]|') ('|', '|https?://|') () }); /** * GFM + Line Breaks Inline Grammar */ inline.breaks = merge({}, inline.gfm, { br: replace(inline.br)('{2,}', '*')(), text: replace(inline.gfm.text)('{2,}', '*')() }); /** * Inline Lexer & Compiler */ function InlineLexer(links, options) { this.options = options || marked.defaults; this.links = links; this.rules = inline.normal; this.renderer = this.options.renderer || new Renderer; this.renderer.options = this.options; if (!this.links) { throw new Error('Tokens array requires a `links` property.'); } if (this.options.gfm) { if (this.options.breaks) { this.rules = inline.breaks; } else { this.rules = inline.gfm; } } else if (this.options.pedantic) { this.rules = inline.pedantic; } } /** * Expose Inline Rules */ InlineLexer.rules = inline; /** * Static Lexing/Compiling Method */ InlineLexer.output = function(src, links, options) { var inline = new InlineLexer(links, options); return inline.output(src); }; /** * Lexing/Compiling */ InlineLexer.prototype.output = function(src) { var out = '' , link , text , href , cap; while (src) { // escape if (cap = this.rules.escape.exec(src)) { src = src.substring(cap[0].length); out += cap[1]; continue; } // autolink if (cap = this.rules.autolink.exec(src)) { src = src.substring(cap[0].length); if (cap[2] === '@') { text = cap[1].charAt(6) === ':' ? this.mangle(cap[1].substring(7)) : this.mangle(cap[1]); href = this.mangle('mailto:') + text; } else { text = escape(cap[1]); href = text; } out += this.renderer.link(href, null, text); continue; } // url (gfm) if (!this.inLink && (cap = this.rules.url.exec(src))) { src = src.substring(cap[0].length); text = escape(cap[1]); href = text; out += this.renderer.link(href, null, text); continue; } // tag if (cap = this.rules.tag.exec(src)) { if (!this.inLink && /^/i.test(cap[0])) { this.inLink = false; } src = src.substring(cap[0].length); out += this.options.sanitize ? escape(cap[0]) : cap[0]; continue; } // link if (cap = this.rules.link.exec(src)) { src = src.substring(cap[0].length); this.inLink = true; out += this.outputLink(cap, { href: cap[2], title: cap[3] }); this.inLink = false; continue; } // reflink, nolink if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) { src = src.substring(cap[0].length); link = (cap[2] || cap[1]).replace(/\s+/g, ' '); link = this.links[link.toLowerCase()]; if (!link || !link.href) { out += cap[0].charAt(0); src = cap[0].substring(1) + src; continue; } this.inLink = true; out += this.outputLink(cap, link); this.inLink = false; continue; } // strong if (cap = this.rules.strong.exec(src)) { src = src.substring(cap[0].length); out += this.renderer.strong(this.output(cap[2] || cap[1])); continue; } // em if (cap = this.rules.em.exec(src)) { src = src.substring(cap[0].length); out += this.renderer.em(this.output(cap[2] || cap[1])); continue; } // code if (cap = this.rules.code.exec(src)) { src = src.substring(cap[0].length); out += this.renderer.codespan(escape(cap[2], true)); continue; } // br if (cap = this.rules.br.exec(src)) { src = src.substring(cap[0].length); out += this.renderer.br(); continue; } // del (gfm) if (cap = this.rules.del.exec(src)) { src = src.substring(cap[0].length); out += this.renderer.del(this.output(cap[1])); continue; } // text if (cap = this.rules.text.exec(src)) { src = src.substring(cap[0].length); out += escape(this.smartypants(cap[0])); continue; } if (src) { throw new Error('Infinite loop on byte: ' + src.charCodeAt(0)); } } return out; }; /** * Compile Link */ InlineLexer.prototype.outputLink = function(cap, link) { var href = escape(link.href) , title = link.title ? escape(link.title) : null; return cap[0].charAt(0) !== '!' ? this.renderer.link(href, title, this.output(cap[1])) : this.renderer.image(href, title, escape(cap[1])); }; /** * Smartypants Transformations */ InlineLexer.prototype.smartypants = function(text) { if (!this.options.smartypants) return text; return text // em-dashes .replace(/--/g, '\u2014') // opening singles .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018') // closing singles & apostrophes .replace(/'/g, '\u2019') // opening doubles .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c') // closing doubles .replace(/"/g, '\u201d') // ellipses .replace(/\.{3}/g, '\u2026'); }; /** * Mangle Links */ InlineLexer.prototype.mangle = function(text) { var out = '' , l = text.length , i = 0 , ch; for (; i < l; i++) { ch = text.charCodeAt(i); if (Math.random() > 0.5) { ch = 'x' + ch.toString(16); } out += '&#' + ch + ';'; } return out; }; /** * Renderer */ function Renderer(options) { this.options = options || {}; } Renderer.prototype.code = function(code, lang, escaped) { if (this.options.highlight) { var out = this.options.highlight(code, lang); if (out != null && out !== code) { escaped = true; code = out; } } if (!lang) { return '
    '
          + (escaped ? code : escape(code, true))
          + '\n
    '; } return '
    '
        + (escaped ? code : escape(code, true))
        + '\n
    \n'; }; Renderer.prototype.blockquote = function(quote) { return '
    \n' + quote + '
    \n'; }; Renderer.prototype.html = function(html) { return html; }; Renderer.prototype.heading = function(text, level, raw) { return '' + text + '\n'; }; Renderer.prototype.hr = function() { return this.options.xhtml ? '
    \n' : '
    \n'; }; Renderer.prototype.list = function(body, ordered) { var type = ordered ? 'ol' : 'ul'; return '<' + type + '>\n' + body + '\n'; }; Renderer.prototype.listitem = function(text) { return '
  • ' + text + '
  • \n'; }; Renderer.prototype.paragraph = function(text) { return '

    ' + text + '

    \n'; }; Renderer.prototype.table = function(header, body) { return '
    \n' + '\n' + header + '\n' + '\n' + body + '\n' + '
    \n'; }; Renderer.prototype.tablerow = function(content) { return '\n' + content + '\n'; }; Renderer.prototype.tablecell = function(content, flags) { var type = flags.header ? 'th' : 'td'; var tag = flags.align ? '<' + type + ' style="text-align:' + flags.align + '">' : '<' + type + '>'; return tag + content + '\n'; }; // span level renderer Renderer.prototype.strong = function(text) { return '' + text + ''; }; Renderer.prototype.em = function(text) { return '' + text + ''; }; Renderer.prototype.codespan = function(text) { return '' + text + ''; }; Renderer.prototype.br = function() { return this.options.xhtml ? '
    ' : '
    '; }; Renderer.prototype.del = function(text) { return '' + text + ''; }; Renderer.prototype.link = function(href, title, text) { if (this.options.sanitize) { try { var prot = decodeURIComponent(unescape(href)) .replace(/[^\w:]/g, '') .toLowerCase(); } catch (e) { return ''; } if (prot.indexOf('javascript:') === 0) { return ''; } } var out = '
    '; return out; }; Renderer.prototype.image = function(href, title, text) { var out = '' + text + '' : '>'; return out; }; /** * Parsing & Compiling */ function Parser(options) { this.tokens = []; this.token = null; this.options = options || marked.defaults; this.options.renderer = this.options.renderer || new Renderer; this.renderer = this.options.renderer; this.renderer.options = this.options; } /** * Static Parse Method */ Parser.parse = function(src, options, renderer) { var parser = new Parser(options, renderer); return parser.parse(src); }; /** * Parse Loop */ Parser.prototype.parse = function(src) { this.inline = new InlineLexer(src.links, this.options, this.renderer); this.tokens = src.reverse(); var out = ''; while (this.next()) { out += this.tok(); } return out; }; /** * Next Token */ Parser.prototype.next = function() { return this.token = this.tokens.pop(); }; /** * Preview Next Token */ Parser.prototype.peek = function() { return this.tokens[this.tokens.length - 1] || 0; }; /** * Parse Text Tokens */ Parser.prototype.parseText = function() { var body = this.token.text; while (this.peek().type === 'text') { body += '\n' + this.next().text; } return this.inline.output(body); }; /** * Parse Current Token */ Parser.prototype.tok = function() { switch (this.token.type) { case 'space': { return ''; } case 'hr': { return this.renderer.hr(); } case 'heading': { return this.renderer.heading( this.inline.output(this.token.text), this.token.depth, this.token.text); } case 'code': { return this.renderer.code(this.token.text, this.token.lang, this.token.escaped); } case 'table': { var header = '' , body = '' , i , row , cell , flags , j; // header cell = ''; for (i = 0; i < this.token.header.length; i++) { flags = { header: true, align: this.token.align[i] }; cell += this.renderer.tablecell( this.inline.output(this.token.header[i]), { header: true, align: this.token.align[i] } ); } header += this.renderer.tablerow(cell); for (i = 0; i < this.token.cells.length; i++) { row = this.token.cells[i]; cell = ''; for (j = 0; j < row.length; j++) { cell += this.renderer.tablecell( this.inline.output(row[j]), { header: false, align: this.token.align[j] } ); } body += this.renderer.tablerow(cell); } return this.renderer.table(header, body); } case 'blockquote_start': { var body = ''; while (this.next().type !== 'blockquote_end') { body += this.tok(); } return this.renderer.blockquote(body); } case 'list_start': { var body = '' , ordered = this.token.ordered; while (this.next().type !== 'list_end') { body += this.tok(); } return this.renderer.list(body, ordered); } case 'list_item_start': { var body = ''; while (this.next().type !== 'list_item_end') { body += this.token.type === 'text' ? this.parseText() : this.tok(); } return this.renderer.listitem(body); } case 'loose_item_start': { var body = ''; while (this.next().type !== 'list_item_end') { body += this.tok(); } return this.renderer.listitem(body); } case 'html': { var html = !this.token.pre && !this.options.pedantic ? this.inline.output(this.token.text) : this.token.text; return this.renderer.html(html); } case 'paragraph': { return this.renderer.paragraph(this.inline.output(this.token.text)); } case 'text': { return this.renderer.paragraph(this.parseText()); } } }; /** * Helpers */ function escape(html, encode) { return html .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); } function unescape(html) { return html.replace(/&([#\w]+);/g, function(_, n) { n = n.toLowerCase(); if (n === 'colon') return ':'; if (n.charAt(0) === '#') { return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1)); } return ''; }); } function replace(regex, opt) { regex = regex.source; opt = opt || ''; return function self(name, val) { if (!name) return new RegExp(regex, opt); val = val.source || val; val = val.replace(/(^|[^\[])\^/g, '$1'); regex = regex.replace(name, val); return self; }; } function noop() {} noop.exec = noop; function merge(obj) { var i = 1 , target , key; for (; i < arguments.length; i++) { target = arguments[i]; for (key in target) { if (Object.prototype.hasOwnProperty.call(target, key)) { obj[key] = target[key]; } } } return obj; } /** * Marked */ function marked(src, opt, callback) { if (callback || typeof opt === 'function') { if (!callback) { callback = opt; opt = null; } opt = merge({}, marked.defaults, opt || {}); var highlight = opt.highlight , tokens , pending , i = 0; try { tokens = Lexer.lex(src, opt) } catch (e) { return callback(e); } pending = tokens.length; var done = function(err) { if (err) { opt.highlight = highlight; return callback(err); } var out; try { out = Parser.parse(tokens, opt); } catch (e) { err = e; } opt.highlight = highlight; return err ? callback(err) : callback(null, out); }; if (!highlight || highlight.length < 3) { return done(); } delete opt.highlight; if (!pending) return done(); for (; i < tokens.length; i++) { (function(token) { if (token.type !== 'code') { return --pending || done(); } return highlight(token.text, token.lang, function(err, code) { if (err) return done(err); if (code == null || code === token.text) { return --pending || done(); } token.text = code; token.escaped = true; --pending || done(); }); })(tokens[i]); } return; } try { if (opt) opt = merge({}, marked.defaults, opt); return Parser.parse(Lexer.lex(src, opt), opt); } catch (e) { e.message += '\nPlease report this to https://github.com/chjj/marked.'; if ((opt || marked.defaults).silent) { return '

    An error occured:

    '
            + escape(e.message + '', true)
            + '
    '; } throw e; } } /** * Options */ marked.options = marked.setOptions = function(opt) { merge(marked.defaults, opt); return marked; }; marked.defaults = { gfm: true, tables: true, breaks: false, pedantic: false, sanitize: false, smartLists: false, silent: false, highlight: null, langPrefix: 'lang-', smartypants: false, headerPrefix: '', renderer: new Renderer, xhtml: false }; /** * Expose */ marked.Parser = Parser; marked.parser = Parser.parse; marked.Renderer = Renderer; marked.Lexer = Lexer; marked.lexer = Lexer.lex; marked.InlineLexer = InlineLexer; marked.inlineLexer = InlineLexer.output; marked.parse = marked; if (typeof module !== 'undefined' && typeof exports === 'object') { module.exports = marked; } else if (typeof define === 'function' && define.amd) { define(function() { return marked; }); } else { this.marked = marked; } }).call(function() { return this || (typeof window !== 'undefined' ? window : global); }());PKjG'\WkWk2connexion/vendor/swagger-ui/lib/underscore-min.map{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createIndexFinder","array","predicate","cb","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","slice","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","call","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","i","key","baseCreate","result","MAX_ARRAY_INDEX","Math","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","target","fromIndex","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","max","computed","lastComputed","min","shuffle","rand","set","shuffled","random","sample","n","guard","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","idx","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","item","zip","unzip","object","sortedIndex","isNaN","lastIndexOf","from","findLastIndex","low","high","mid","floor","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":";;;;CAKC,WAoKC,QAASA,GAAaC,GAGpB,QAASC,GAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,GAClD,KAAOD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAAK,CACjD,GAAIQ,GAAaH,EAAOA,EAAKC,GAASA,CACtCF,GAAOD,EAASC,EAAMF,EAAIM,GAAaA,EAAYN,GAErD,MAAOE,GAGT,MAAO,UAASF,EAAKC,EAAUC,EAAMK,GACnCN,EAAWO,EAAWP,EAAUM,EAAS,EACzC,IAAIJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBD,EAAQN,EAAM,EAAI,EAAIO,EAAS,CAMnC,OAJIM,WAAUN,OAAS,IACrBH,EAAOF,EAAIG,EAAOA,EAAKC,GAASA,GAChCA,GAASN,GAEJC,EAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,IA+btD,QAASO,GAAkBd,GACzB,MAAO,UAASe,EAAOC,EAAWP,GAChCO,EAAYC,EAAGD,EAAWP,EAG1B,KAFA,GAAIF,GAAkB,MAATQ,GAAiBA,EAAMR,OAChCD,EAAQN,EAAM,EAAI,EAAIO,EAAS,EAC5BD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAC5C,GAAIgB,EAAUD,EAAMT,GAAQA,EAAOS,GAAQ,MAAOT,EAEpD,QAAQ,GAgQZ,QAASY,GAAoBhB,EAAKG,GAChC,GAAIc,GAAaC,EAAmBb,OAChCc,EAAcnB,EAAImB,YAClBC,EAASV,EAAEW,WAAWF,IAAgBA,EAAYG,WAAcC,EAGhEC,EAAO,aAGX,KAFId,EAAEe,IAAIzB,EAAKwB,KAAUd,EAAEgB,SAASvB,EAAMqB,IAAOrB,EAAKwB,KAAKH,GAEpDP,KACLO,EAAON,EAAmBD,GACtBO,IAAQxB,IAAOA,EAAIwB,KAAUJ,EAAMI,KAAUd,EAAEgB,SAASvB,EAAMqB,IAChErB,EAAKwB,KAAKH,GAt4BhB,GAAII,GAAOC,KAGPC,EAAqBF,EAAKlB,EAG1BqB,EAAaC,MAAMV,UAAWC,EAAWU,OAAOX,UAAWY,EAAYC,SAASb,UAIlFK,EAAmBI,EAAWJ,KAC9BS,EAAmBL,EAAWK,MAC9BC,EAAmBd,EAASc,SAC5BC,EAAmBf,EAASe,eAK5BC,EAAqBP,MAAMQ,QAC3BC,EAAqBR,OAAO9B,KAC5BuC,EAAqBR,EAAUS,KAC/BC,EAAqBX,OAAOY,OAG1BC,EAAO,aAGPpC,EAAI,SAASV,GACf,MAAIA,aAAeU,GAAUV,EACvB6B,eAAgBnB,QACtBmB,KAAKkB,SAAW/C,GADiB,GAAIU,GAAEV,GAOlB,oBAAZgD,UACa,mBAAXC,SAA0BA,OAAOD,UAC1CA,QAAUC,OAAOD,QAAUtC,GAE7BsC,QAAQtC,EAAIA,GAEZkB,EAAKlB,EAAIA,EAIXA,EAAEwC,QAAU,OAKZ,IAAI1C,GAAa,SAAS2C,EAAM5C,EAAS6C,GACvC,GAAI7C,QAAiB,GAAG,MAAO4C,EAC/B,QAAoB,MAAZC,EAAmB,EAAIA,GAC7B,IAAK,GAAG,MAAO,UAASC,GACtB,MAAOF,GAAKG,KAAK/C,EAAS8C,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOE,GAC7B,MAAOJ,GAAKG,KAAK/C,EAAS8C,EAAOE,GAEnC,KAAK,GAAG,MAAO,UAASF,EAAOjD,EAAOoD,GACpC,MAAOL,GAAKG,KAAK/C,EAAS8C,EAAOjD,EAAOoD,GAE1C,KAAK,GAAG,MAAO,UAASC,EAAaJ,EAAOjD,EAAOoD,GACjD,MAAOL,GAAKG,KAAK/C,EAASkD,EAAaJ,EAAOjD,EAAOoD,IAGzD,MAAO,YACL,MAAOL,GAAKO,MAAMnD,EAASI,aAO3BI,EAAK,SAASsC,EAAO9C,EAAS6C,GAChC,MAAa,OAATC,EAAsB3C,EAAEiD,SACxBjD,EAAEW,WAAWgC,GAAe7C,EAAW6C,EAAO9C,EAAS6C,GACvD1C,EAAEkD,SAASP,GAAe3C,EAAEmD,QAAQR,GACjC3C,EAAEoD,SAAST,GAEpB3C,GAAET,SAAW,SAASoD,EAAO9C,GAC3B,MAAOQ,GAAGsC,EAAO9C,EAASwD,KAI5B,IAAIC,GAAiB,SAASC,EAAUC,GACtC,MAAO,UAASlE,GACd,GAAIK,GAASM,UAAUN,MACvB,IAAa,EAATA,GAAqB,MAAPL,EAAa,MAAOA,EACtC,KAAK,GAAII,GAAQ,EAAWC,EAARD,EAAgBA,IAIlC,IAAK,GAHD+D,GAASxD,UAAUP,GACnBD,EAAO8D,EAASE,GAChBC,EAAIjE,EAAKE,OACJgE,EAAI,EAAOD,EAAJC,EAAOA,IAAK,CAC1B,GAAIC,GAAMnE,EAAKkE,EACVH,IAAiBlE,EAAIsE,SAAc,KAAGtE,EAAIsE,GAAOH,EAAOG,IAGjE,MAAOtE,KAKPuE,EAAa,SAASjD,GACxB,IAAKZ,EAAEkD,SAAStC,GAAY,QAC5B,IAAIsB,EAAc,MAAOA,GAAatB,EACtCwB,GAAKxB,UAAYA,CACjB,IAAIkD,GAAS,GAAI1B,EAEjB,OADAA,GAAKxB,UAAY,KACVkD,GAMLC,EAAkBC,KAAKC,IAAI,EAAG,IAAM,EACpClE,EAAc,SAAS+C,GACzB,GAAInD,GAASmD,GAAcA,EAAWnD,MACtC,OAAwB,gBAAVA,IAAsBA,GAAU,GAAeoE,GAAVpE,EASrDK,GAAEkE,KAAOlE,EAAEmE,QAAU,SAAS7E,EAAKC,EAAUM,GAC3CN,EAAWO,EAAWP,EAAUM,EAChC,IAAI8D,GAAGhE,CACP,IAAII,EAAYT,GACd,IAAKqE,EAAI,EAAGhE,EAASL,EAAIK,OAAYA,EAAJgE,EAAYA,IAC3CpE,EAASD,EAAIqE,GAAIA,EAAGrE,OAEjB,CACL,GAAIG,GAAOO,EAAEP,KAAKH,EAClB,KAAKqE,EAAI,EAAGhE,EAASF,EAAKE,OAAYA,EAAJgE,EAAYA,IAC5CpE,EAASD,EAAIG,EAAKkE,IAAKlE,EAAKkE,GAAIrE,GAGpC,MAAOA,IAITU,EAAEoE,IAAMpE,EAAEqE,QAAU,SAAS/E,EAAKC,EAAUM,GAC1CN,EAAWc,EAAGd,EAAUM,EAIxB,KAAK,GAHDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvB2E,EAAUhD,MAAM3B,GACXD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC4E,GAAQ5E,GAASH,EAASD,EAAIM,GAAaA,EAAYN,GAEzD,MAAOgF,IA+BTtE,EAAEuE,OAASvE,EAAEwE,MAAQxE,EAAEyE,OAAStF,EAAa,GAG7Ca,EAAE0E,YAAc1E,EAAE2E,MAAQxF,GAAc,GAGxCa,EAAE4E,KAAO5E,EAAE6E,OAAS,SAASvF,EAAKc,EAAWP,GAC3C,GAAI+D,EAMJ,OAJEA,GADE7D,EAAYT,GACRU,EAAE8E,UAAUxF,EAAKc,EAAWP,GAE5BG,EAAE+E,QAAQzF,EAAKc,EAAWP,GAE9B+D,QAAa,IAAKA,KAAS,EAAUtE,EAAIsE,GAA7C,QAKF5D,EAAEgF,OAAShF,EAAEiF,OAAS,SAAS3F,EAAKc,EAAWP,GAC7C,GAAIyE,KAKJ,OAJAlE,GAAYC,EAAGD,EAAWP,GAC1BG,EAAEkE,KAAK5E,EAAK,SAASqD,EAAOjD,EAAOwF,GAC7B9E,EAAUuC,EAAOjD,EAAOwF,IAAOZ,EAAQrD,KAAK0B,KAE3C2B,GAITtE,EAAEmF,OAAS,SAAS7F,EAAKc,EAAWP,GAClC,MAAOG,GAAEgF,OAAO1F,EAAKU,EAAEoF,OAAO/E,EAAGD,IAAaP,IAKhDG,EAAEqF,MAAQrF,EAAEsF,IAAM,SAAShG,EAAKc,EAAWP,GACzCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,KAAKU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE3D,OAAO,GAKTU,EAAEuF,KAAOvF,EAAEwF,IAAM,SAASlG,EAAKc,EAAWP,GACxCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,IAAIU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE1D,OAAO,GAKTU,EAAEgB,SAAWhB,EAAEyF,SAAWzF,EAAE0F,QAAU,SAASpG,EAAKqG,EAAQC,GAE1D,MADK7F,GAAYT,KAAMA,EAAMU,EAAE6F,OAAOvG,IAC/BU,EAAE8F,QAAQxG,EAAKqG,EAA4B,gBAAbC,IAAyBA,IAAc,GAI9E5F,EAAE+F,OAAS,SAASzG,EAAK0G,GACvB,GAAIC,GAAOvE,EAAMkB,KAAK3C,UAAW,GAC7BiG,EAASlG,EAAEW,WAAWqF,EAC1B,OAAOhG,GAAEoE,IAAI9E,EAAK,SAASqD,GACzB,GAAIF,GAAOyD,EAASF,EAASrD,EAAMqD,EACnC,OAAe,OAARvD,EAAeA,EAAOA,EAAKO,MAAML,EAAOsD,MAKnDjG,EAAEmG,MAAQ,SAAS7G,EAAKsE,GACtB,MAAO5D,GAAEoE,IAAI9E,EAAKU,EAAEoD,SAASQ,KAK/B5D,EAAEoG,MAAQ,SAAS9G,EAAK+G,GACtB,MAAOrG,GAAEgF,OAAO1F,EAAKU,EAAEmD,QAAQkD,KAKjCrG,EAAEsG,UAAY,SAAShH,EAAK+G,GAC1B,MAAOrG,GAAE4E,KAAKtF,EAAKU,EAAEmD,QAAQkD,KAI/BrG,EAAEuG,IAAM,SAASjH,EAAKC,EAAUM,GAC9B,GACI8C,GAAO6D,EADP1C,GAAUT,IAAUoD,GAAgBpD,GAExC,IAAgB,MAAZ9D,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAE6F,OAAOvG,EACxC,KAAK,GAAIqE,GAAI,EAAGhE,EAASL,EAAIK,OAAYA,EAAJgE,EAAYA,IAC/ChB,EAAQrD,EAAIqE,GACRhB,EAAQmB,IACVA,EAASnB,OAIbpD,GAAWc,EAAGd,EAAUM,GACxBG,EAAEkE,KAAK5E,EAAK,SAASqD,EAAOjD,EAAOwF,GACjCsB,EAAWjH,EAASoD,EAAOjD,EAAOwF,IAC9BsB,EAAWC,GAAgBD,KAAcnD,KAAYS,KAAYT,OACnES,EAASnB,EACT8D,EAAeD,IAIrB,OAAO1C,IAIT9D,EAAE0G,IAAM,SAASpH,EAAKC,EAAUM,GAC9B,GACI8C,GAAO6D,EADP1C,EAAST,IAAUoD,EAAepD,GAEtC,IAAgB,MAAZ9D,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAE6F,OAAOvG,EACxC,KAAK,GAAIqE,GAAI,EAAGhE,EAASL,EAAIK,OAAYA,EAAJgE,EAAYA,IAC/ChB,EAAQrD,EAAIqE,GACAG,EAARnB,IACFmB,EAASnB,OAIbpD,GAAWc,EAAGd,EAAUM,GACxBG,EAAEkE,KAAK5E,EAAK,SAASqD,EAAOjD,EAAOwF,GACjCsB,EAAWjH,EAASoD,EAAOjD,EAAOwF,IACnBuB,EAAXD,GAAwCnD,MAAbmD,GAAoCnD,MAAXS,KACtDA,EAASnB,EACT8D,EAAeD,IAIrB,OAAO1C,IAKT9D,EAAE2G,QAAU,SAASrH,GAInB,IAAK,GAAesH,GAHhBC,EAAM9G,EAAYT,GAAOA,EAAMU,EAAE6F,OAAOvG,GACxCK,EAASkH,EAAIlH,OACbmH,EAAWxF,MAAM3B,GACZD,EAAQ,EAAiBC,EAARD,EAAgBA,IACxCkH,EAAO5G,EAAE+G,OAAO,EAAGrH,GACfkH,IAASlH,IAAOoH,EAASpH,GAASoH,EAASF,IAC/CE,EAASF,GAAQC,EAAInH,EAEvB,OAAOoH,IAMT9G,EAAEgH,OAAS,SAAS1H,EAAK2H,EAAGC,GAC1B,MAAS,OAALD,GAAaC,GACVnH,EAAYT,KAAMA,EAAMU,EAAE6F,OAAOvG,IAC/BA,EAAIU,EAAE+G,OAAOzH,EAAIK,OAAS,KAE5BK,EAAE2G,QAAQrH,GAAKoC,MAAM,EAAGsC,KAAKuC,IAAI,EAAGU,KAI7CjH,EAAEmH,OAAS,SAAS7H,EAAKC,EAAUM,GAEjC,MADAN,GAAWc,EAAGd,EAAUM,GACjBG,EAAEmG,MAAMnG,EAAEoE,IAAI9E,EAAK,SAASqD,EAAOjD,EAAOwF,GAC/C,OACEvC,MAAOA,EACPjD,MAAOA,EACP0H,SAAU7H,EAASoD,EAAOjD,EAAOwF,MAElCmC,KAAK,SAASC,EAAMC,GACrB,GAAIC,GAAIF,EAAKF,SACTK,EAAIF,EAAMH,QACd,IAAII,IAAMC,EAAG,CACX,GAAID,EAAIC,GAAKD,QAAW,GAAG,MAAO,EAClC,IAAQC,EAAJD,GAASC,QAAW,GAAG,OAAQ,EAErC,MAAOH,GAAK5H,MAAQ6H,EAAM7H,QACxB,SAIN,IAAIgI,GAAQ,SAASC,GACnB,MAAO,UAASrI,EAAKC,EAAUM,GAC7B,GAAIiE,KAMJ,OALAvE,GAAWc,EAAGd,EAAUM,GACxBG,EAAEkE,KAAK5E,EAAK,SAASqD,EAAOjD,GAC1B,GAAIkE,GAAMrE,EAASoD,EAAOjD,EAAOJ,EACjCqI,GAAS7D,EAAQnB,EAAOiB,KAEnBE,GAMX9D,GAAE4H,QAAUF,EAAM,SAAS5D,EAAQnB,EAAOiB,GACpC5D,EAAEe,IAAI+C,EAAQF,GAAME,EAAOF,GAAK3C,KAAK0B,GAAamB,EAAOF,IAAQjB,KAKvE3C,EAAE6H,QAAUH,EAAM,SAAS5D,EAAQnB,EAAOiB,GACxCE,EAAOF,GAAOjB,IAMhB3C,EAAE8H,QAAUJ,EAAM,SAAS5D,EAAQnB,EAAOiB,GACpC5D,EAAEe,IAAI+C,EAAQF,GAAME,EAAOF,KAAaE,EAAOF,GAAO,IAI5D5D,EAAE+H,QAAU,SAASzI,GACnB,MAAKA,GACDU,EAAE8B,QAAQxC,GAAaoC,EAAMkB,KAAKtD,GAClCS,EAAYT,GAAaU,EAAEoE,IAAI9E,EAAKU,EAAEiD,UACnCjD,EAAE6F,OAAOvG,OAIlBU,EAAEgI,KAAO,SAAS1I,GAChB,MAAW,OAAPA,EAAoB,EACjBS,EAAYT,GAAOA,EAAIK,OAASK,EAAEP,KAAKH,GAAKK,QAKrDK,EAAEiI,UAAY,SAAS3I,EAAKc,EAAWP,GACrCO,EAAYC,EAAGD,EAAWP,EAC1B,IAAIqI,MAAWC,IAIf,OAHAnI,GAAEkE,KAAK5E,EAAK,SAASqD,EAAOiB,EAAKtE,IAC9Bc,EAAUuC,EAAOiB,EAAKtE,GAAO4I,EAAOC,GAAMlH,KAAK0B,MAE1CuF,EAAMC,IAShBnI,EAAEoI,MAAQpI,EAAEqI,KAAOrI,EAAEsI,KAAO,SAASnI,EAAO8G,EAAGC,GAC7C,MAAa,OAAT/G,MAA2B,GACtB,MAAL8G,GAAaC,EAAc/G,EAAM,GAC9BH,EAAEuI,QAAQpI,EAAOA,EAAMR,OAASsH,IAMzCjH,EAAEuI,QAAU,SAASpI,EAAO8G,EAAGC,GAC7B,MAAOxF,GAAMkB,KAAKzC,EAAO,EAAG6D,KAAKuC,IAAI,EAAGpG,EAAMR,QAAe,MAALsH,GAAaC,EAAQ,EAAID,MAKnFjH,EAAEwI,KAAO,SAASrI,EAAO8G,EAAGC,GAC1B,MAAa,OAAT/G,MAA2B,GACtB,MAAL8G,GAAaC,EAAc/G,EAAMA,EAAMR,OAAS,GAC7CK,EAAEyI,KAAKtI,EAAO6D,KAAKuC,IAAI,EAAGpG,EAAMR,OAASsH,KAMlDjH,EAAEyI,KAAOzI,EAAE0I,KAAO1I,EAAE2I,KAAO,SAASxI,EAAO8G,EAAGC,GAC5C,MAAOxF,GAAMkB,KAAKzC,EAAY,MAAL8G,GAAaC,EAAQ,EAAID,IAIpDjH,EAAE4I,QAAU,SAASzI,GACnB,MAAOH,GAAEgF,OAAO7E,EAAOH,EAAEiD,UAI3B,IAAI4F,GAAU,SAASC,EAAOC,EAASC,EAAQC,GAE7C,IAAK,GADDC,MAAaC,EAAM,EACdxF,EAAIsF,GAAc,EAAGtJ,EAASmJ,GAASA,EAAMnJ,OAAYA,EAAJgE,EAAYA,IAAK,CAC7E,GAAIhB,GAAQmG,EAAMnF,EAClB,IAAI5D,EAAY4C,KAAW3C,EAAE8B,QAAQa,IAAU3C,EAAEoJ,YAAYzG,IAAS,CAE/DoG,IAASpG,EAAQkG,EAAQlG,EAAOoG,EAASC,GAC9C,IAAIK,GAAI,EAAGC,EAAM3G,EAAMhD,MAEvB,KADAuJ,EAAOvJ,QAAU2J,EACNA,EAAJD,GACLH,EAAOC,KAASxG,EAAM0G,SAEdL,KACVE,EAAOC,KAASxG,GAGpB,MAAOuG,GAITlJ,GAAE6I,QAAU,SAAS1I,EAAO4I,GAC1B,MAAOF,GAAQ1I,EAAO4I,GAAS,IAIjC/I,EAAEuJ,QAAU,SAASpJ,GACnB,MAAOH,GAAEwJ,WAAWrJ,EAAOuB,EAAMkB,KAAK3C,UAAW,KAMnDD,EAAEyJ,KAAOzJ,EAAE0J,OAAS,SAASvJ,EAAOwJ,EAAUpK,EAAUM,GACtD,GAAa,MAATM,EAAe,QACdH,GAAE4J,UAAUD,KACf9J,EAAUN,EACVA,EAAWoK,EACXA,GAAW,GAEG,MAAZpK,IAAkBA,EAAWc,EAAGd,EAAUM,GAG9C,KAAK,GAFDiE,MACA+F,KACKlG,EAAI,EAAGhE,EAASQ,EAAMR,OAAYA,EAAJgE,EAAYA,IAAK,CACtD,GAAIhB,GAAQxC,EAAMwD,GACd6C,EAAWjH,EAAWA,EAASoD,EAAOgB,EAAGxD,GAASwC,CAClDgH,IACGhG,GAAKkG,IAASrD,GAAU1C,EAAO7C,KAAK0B,GACzCkH,EAAOrD,GACEjH,EACJS,EAAEgB,SAAS6I,EAAMrD,KACpBqD,EAAK5I,KAAKuF,GACV1C,EAAO7C,KAAK0B,IAEJ3C,EAAEgB,SAAS8C,EAAQnB,IAC7BmB,EAAO7C,KAAK0B,GAGhB,MAAOmB,IAKT9D,EAAE8J,MAAQ,WACR,MAAO9J,GAAEyJ,KAAKZ,EAAQ5I,WAAW,GAAM,KAKzCD,EAAE+J,aAAe,SAAS5J,GACxB,GAAa,MAATA,EAAe,QAGnB,KAAK,GAFD2D,MACAkG,EAAa/J,UAAUN,OAClBgE,EAAI,EAAGhE,EAASQ,EAAMR,OAAYA,EAAJgE,EAAYA,IAAK,CACtD,GAAIsG,GAAO9J,EAAMwD,EACjB,KAAI3D,EAAEgB,SAAS8C,EAAQmG,GAAvB,CACA,IAAK,GAAIZ,GAAI,EAAOW,EAAJX,GACTrJ,EAAEgB,SAASf,UAAUoJ,GAAIY,GADAZ,KAG5BA,IAAMW,GAAYlG,EAAO7C,KAAKgJ,IAEpC,MAAOnG,IAKT9D,EAAEwJ,WAAa,SAASrJ,GACtB,GAAIsI,GAAOI,EAAQ5I,WAAW,GAAM,EAAM,EAC1C,OAAOD,GAAEgF,OAAO7E,EAAO,SAASwC,GAC9B,OAAQ3C,EAAEgB,SAASyH,EAAM9F,MAM7B3C,EAAEkK,IAAM,WACN,MAAOlK,GAAEmK,MAAMlK,YAKjBD,EAAEmK,MAAQ,SAAShK,GAIjB,IAAK,GAHDR,GAASQ,GAASH,EAAEuG,IAAIpG,EAAO,UAAUR,QAAU,EACnDmE,EAASxC,MAAM3B,GAEVD,EAAQ,EAAWC,EAARD,EAAgBA,IAClCoE,EAAOpE,GAASM,EAAEmG,MAAMhG,EAAOT,EAEjC,OAAOoE,IAMT9D,EAAEoK,OAAS,SAASlF,EAAMW,GAExB,IAAK,GADD/B,MACKH,EAAI,EAAGhE,EAASuF,GAAQA,EAAKvF,OAAYA,EAAJgE,EAAYA,IACpDkC,EACF/B,EAAOoB,EAAKvB,IAAMkC,EAAOlC,GAEzBG,EAAOoB,EAAKvB,GAAG,IAAMuB,EAAKvB,GAAG,EAGjC,OAAOG,IAOT9D,EAAE8F,QAAU,SAAS3F,EAAO8J,EAAMN,GAChC,GAAIhG,GAAI,EAAGhE,EAASQ,GAASA,EAAMR,MACnC,IAAuB,gBAAZgK,GACThG,EAAe,EAAXgG,EAAe3F,KAAKuC,IAAI,EAAG5G,EAASgK,GAAYA,MAC/C,IAAIA,GAAYhK,EAErB,MADAgE,GAAI3D,EAAEqK,YAAYlK,EAAO8J,GAClB9J,EAAMwD,KAAOsG,EAAOtG,GAAK,CAElC,IAAIsG,IAASA,EACX,MAAOjK,GAAE8E,UAAUpD,EAAMkB,KAAKzC,EAAOwD,GAAI3D,EAAEsK,MAE7C,MAAW3K,EAAJgE,EAAYA,IAAK,GAAIxD,EAAMwD,KAAOsG,EAAM,MAAOtG,EACtD,QAAQ,GAGV3D,EAAEuK,YAAc,SAASpK,EAAO8J,EAAMO,GACpC,GAAIrB,GAAMhJ,EAAQA,EAAMR,OAAS,CAIjC,IAHmB,gBAAR6K,KACTrB,EAAa,EAAPqB,EAAWrB,EAAMqB,EAAO,EAAIxG,KAAK0C,IAAIyC,EAAKqB,EAAO,IAErDP,IAASA,EACX,MAAOjK,GAAEyK,cAAc/I,EAAMkB,KAAKzC,EAAO,EAAGgJ,GAAMnJ,EAAEsK,MAEtD,QAASnB,GAAO,GAAG,GAAIhJ,EAAMgJ,KAASc,EAAM,MAAOd,EACnD,QAAQ,GAiBVnJ,EAAE8E,UAAY5E,EAAkB,GAEhCF,EAAEyK,cAAgBvK,GAAmB,GAIrCF,EAAEqK,YAAc,SAASlK,EAAOb,EAAKC,EAAUM,GAC7CN,EAAWc,EAAGd,EAAUM,EAAS,EAGjC,KAFA,GAAI8C,GAAQpD,EAASD,GACjBoL,EAAM,EAAGC,EAAOxK,EAAMR,OACbgL,EAAND,GAAY,CACjB,GAAIE,GAAM5G,KAAK6G,OAAOH,EAAMC,GAAQ,EAChCpL,GAASY,EAAMyK,IAAQjI,EAAO+H,EAAME,EAAM,EAAQD,EAAOC,EAE/D,MAAOF,IAMT1K,EAAE8K,MAAQ,SAASC,EAAOC,EAAMC,GAC1BhL,UAAUN,QAAU,IACtBqL,EAAOD,GAAS,EAChBA,EAAQ,GAEVE,EAAOA,GAAQ,CAKf,KAAK,GAHDtL,GAASqE,KAAKuC,IAAIvC,KAAKkH,MAAMF,EAAOD,GAASE,GAAO,GACpDH,EAAQxJ,MAAM3B,GAETwJ,EAAM,EAASxJ,EAANwJ,EAAcA,IAAO4B,GAASE,EAC9CH,EAAM3B,GAAO4B,CAGf,OAAOD,GAQT,IAAIK,GAAe,SAASC,EAAYC,EAAWxL,EAASyL,EAAgBrF,GAC1E,KAAMqF,YAA0BD,IAAY,MAAOD,GAAWpI,MAAMnD,EAASoG,EAC7E,IAAIsF,GAAO1H,EAAWuH,EAAWxK,WAC7BkD,EAASsH,EAAWpI,MAAMuI,EAAMtF,EACpC,OAAIjG,GAAEkD,SAASY,GAAgBA,EACxByH,EAMTvL,GAAEiC,KAAO,SAASQ,EAAM5C,GACtB,GAAImC,GAAcS,EAAKR,OAASD,EAAY,MAAOA,GAAWgB,MAAMP,EAAMf,EAAMkB,KAAK3C,UAAW,GAChG,KAAKD,EAAEW,WAAW8B,GAAO,KAAM,IAAI+I,WAAU,oCAC7C,IAAIvF,GAAOvE,EAAMkB,KAAK3C,UAAW,GAC7BwL,EAAQ,WACV,MAAON,GAAa1I,EAAMgJ,EAAO5L,EAASsB,KAAM8E,EAAKyF,OAAOhK,EAAMkB,KAAK3C,aAEzE,OAAOwL,IAMTzL,EAAE2L,QAAU,SAASlJ,GACnB,GAAImJ,GAAYlK,EAAMkB,KAAK3C,UAAW,GAClCwL,EAAQ,WAGV,IAAK,GAFDI,GAAW,EAAGlM,EAASiM,EAAUjM,OACjCsG,EAAO3E,MAAM3B,GACRgE,EAAI,EAAOhE,EAAJgE,EAAYA,IAC1BsC,EAAKtC,GAAKiI,EAAUjI,KAAO3D,EAAIC,UAAU4L,KAAcD,EAAUjI,EAEnE,MAAOkI,EAAW5L,UAAUN,QAAQsG,EAAKhF,KAAKhB,UAAU4L,KACxD,OAAOV,GAAa1I,EAAMgJ,EAAOtK,KAAMA,KAAM8E,GAE/C,OAAOwF,IAMTzL,EAAE8L,QAAU,SAASxM,GACnB,GAAIqE,GAA8BC,EAA3BjE,EAASM,UAAUN,MAC1B,IAAc,GAAVA,EAAa,KAAM,IAAIoM,OAAM,wCACjC,KAAKpI,EAAI,EAAOhE,EAAJgE,EAAYA,IACtBC,EAAM3D,UAAU0D,GAChBrE,EAAIsE,GAAO5D,EAAEiC,KAAK3C,EAAIsE,GAAMtE,EAE9B,OAAOA,IAITU,EAAEgM,QAAU,SAASvJ,EAAMwJ,GACzB,GAAID,GAAU,SAASpI,GACrB,GAAIsI,GAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAOjJ,MAAM7B,KAAMlB,WAAa2D,EAE7D,OADK5D,GAAEe,IAAImL,EAAOC,KAAUD,EAAMC,GAAW1J,EAAKO,MAAM7B,KAAMlB,YACvDiM,EAAMC,GAGf,OADAH,GAAQE,SACDF,GAKThM,EAAEoM,MAAQ,SAAS3J,EAAM4J,GACvB,GAAIpG,GAAOvE,EAAMkB,KAAK3C,UAAW,EACjC,OAAOqM,YAAW,WAChB,MAAO7J,GAAKO,MAAM,KAAMiD,IACvBoG,IAKLrM,EAAEuM,MAAQvM,EAAE2L,QAAQ3L,EAAEoM,MAAOpM,EAAG,GAOhCA,EAAEwM,SAAW,SAAS/J,EAAM4J,EAAMI,GAChC,GAAI5M,GAASoG,EAAMnC,EACf4I,EAAU,KACVC,EAAW,CACVF,KAASA,KACd,IAAIG,GAAQ,WACVD,EAAWF,EAAQI,WAAY,EAAQ,EAAI7M,EAAE8M,MAC7CJ,EAAU,KACV5I,EAASrB,EAAKO,MAAMnD,EAASoG,GACxByG,IAAS7M,EAAUoG,EAAO,MAEjC,OAAO,YACL,GAAI6G,GAAM9M,EAAE8M,KACPH,IAAYF,EAAQI,WAAY,IAAOF,EAAWG,EACvD,IAAIC,GAAYV,GAAQS,EAAMH,EAc9B,OAbA9M,GAAUsB,KACV8E,EAAOhG,UACU,GAAb8M,GAAkBA,EAAYV,GAC5BK,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWG,EACXhJ,EAASrB,EAAKO,MAAMnD,EAASoG,GACxByG,IAAS7M,EAAUoG,EAAO,OACrByG,GAAWD,EAAQQ,YAAa,IAC1CP,EAAUJ,WAAWM,EAAOG,IAEvBjJ,IAQX9D,EAAEkN,SAAW,SAASzK,EAAM4J,EAAMc,GAChC,GAAIT,GAASzG,EAAMpG,EAASuN,EAAWtJ,EAEnC8I,EAAQ,WACV,GAAIpE,GAAOxI,EAAE8M,MAAQM,CAEVf,GAAP7D,GAAeA,GAAQ,EACzBkE,EAAUJ,WAAWM,EAAOP,EAAO7D,IAEnCkE,EAAU,KACLS,IACHrJ,EAASrB,EAAKO,MAAMnD,EAASoG,GACxByG,IAAS7M,EAAUoG,EAAO,QAKrC,OAAO,YACLpG,EAAUsB,KACV8E,EAAOhG,UACPmN,EAAYpN,EAAE8M,KACd,IAAIO,GAAUF,IAAcT,CAO5B,OANKA,KAASA,EAAUJ,WAAWM,EAAOP,IACtCgB,IACFvJ,EAASrB,EAAKO,MAAMnD,EAASoG,GAC7BpG,EAAUoG,EAAO,MAGZnC,IAOX9D,EAAEsN,KAAO,SAAS7K,EAAM8K,GACtB,MAAOvN,GAAE2L,QAAQ4B,EAAS9K,IAI5BzC,EAAEoF,OAAS,SAAShF,GAClB,MAAO,YACL,OAAQA,EAAU4C,MAAM7B,KAAMlB,aAMlCD,EAAEwN,QAAU,WACV,GAAIvH,GAAOhG,UACP8K,EAAQ9E,EAAKtG,OAAS,CAC1B,OAAO,YAGL,IAFA,GAAIgE,GAAIoH,EACJjH,EAASmC,EAAK8E,GAAO/H,MAAM7B,KAAMlB,WAC9B0D,KAAKG,EAASmC,EAAKtC,GAAGf,KAAKzB,KAAM2C,EACxC,OAAOA,KAKX9D,EAAEyN,MAAQ,SAASC,EAAOjL,GACxB,MAAO,YACL,QAAMiL,EAAQ,EACLjL,EAAKO,MAAM7B,KAAMlB,WAD1B,SAOJD,EAAE2N,OAAS,SAASD,EAAOjL,GACzB,GAAIjD,EACJ,OAAO,YAKL,QAJMkO,EAAQ,IACZlO,EAAOiD,EAAKO,MAAM7B,KAAMlB,YAEb,GAATyN,IAAYjL,EAAO,MAChBjD,IAMXQ,EAAE4N,KAAO5N,EAAE2L,QAAQ3L,EAAE2N,OAAQ,EAM7B,IAAIE,KAAelM,SAAU,MAAMmM,qBAAqB,YACpDtN,GAAsB,UAAW,gBAAiB,WAClC,uBAAwB,iBAAkB,iBAqB9DR,GAAEP,KAAO,SAASH,GAChB,IAAKU,EAAEkD,SAAS5D,GAAM,QACtB,IAAIyC,EAAY,MAAOA,GAAWzC,EAClC,IAAIG,KACJ,KAAK,GAAImE,KAAOtE,GAASU,EAAEe,IAAIzB,EAAKsE,IAAMnE,EAAKwB,KAAK2C,EAGpD,OADIiK,IAAYvN,EAAoBhB,EAAKG,GAClCA,GAITO,EAAE+N,QAAU,SAASzO,GACnB,IAAKU,EAAEkD,SAAS5D,GAAM,QACtB,IAAIG,KACJ,KAAK,GAAImE,KAAOtE,GAAKG,EAAKwB,KAAK2C,EAG/B,OADIiK,IAAYvN,EAAoBhB,EAAKG,GAClCA,GAITO,EAAE6F,OAAS,SAASvG,GAIlB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACdkG,EAASvE,MAAM3B,GACVgE,EAAI,EAAOhE,EAAJgE,EAAYA,IAC1BkC,EAAOlC,GAAKrE,EAAIG,EAAKkE,GAEvB,OAAOkC,IAKT7F,EAAEgO,UAAY,SAAS1O,EAAKC,EAAUM,GACpCN,EAAWc,EAAGd,EAAUM,EAKtB,KAAK,GADDD,GAHFH,EAAQO,EAAEP,KAAKH,GACbK,EAASF,EAAKE,OACd2E,KAEK5E,EAAQ,EAAWC,EAARD,EAAgBA,IAClCE,EAAaH,EAAKC,GAClB4E,EAAQ1E,GAAcL,EAASD,EAAIM,GAAaA,EAAYN,EAE9D,OAAOgF,IAIXtE,EAAEiO,MAAQ,SAAS3O,GAIjB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACdsO,EAAQ3M,MAAM3B,GACTgE,EAAI,EAAOhE,EAAJgE,EAAYA,IAC1BsK,EAAMtK,IAAMlE,EAAKkE,GAAIrE,EAAIG,EAAKkE,IAEhC,OAAOsK,IAITjO,EAAEkO,OAAS,SAAS5O,GAGlB,IAAK,GAFDwE,MACArE,EAAOO,EAAEP,KAAKH,GACTqE,EAAI,EAAGhE,EAASF,EAAKE,OAAYA,EAAJgE,EAAYA,IAChDG,EAAOxE,EAAIG,EAAKkE,KAAOlE,EAAKkE,EAE9B,OAAOG,IAKT9D,EAAEmO,UAAYnO,EAAEoO,QAAU,SAAS9O,GACjC,GAAI+O,KACJ,KAAK,GAAIzK,KAAOtE,GACVU,EAAEW,WAAWrB,EAAIsE,KAAOyK,EAAMpN,KAAK2C,EAEzC,OAAOyK,GAAMhH,QAIfrH,EAAEsO,OAAShL,EAAetD,EAAE+N,SAI5B/N,EAAEuO,UAAYvO,EAAEwO,OAASlL,EAAetD,EAAEP,MAG1CO,EAAE+E,QAAU,SAASzF,EAAKc,EAAWP,GACnCO,EAAYC,EAAGD,EAAWP,EAE1B,KAAK,GADmB+D,GAApBnE,EAAOO,EAAEP,KAAKH,GACTqE,EAAI,EAAGhE,EAASF,EAAKE,OAAYA,EAAJgE,EAAYA,IAEhD,GADAC,EAAMnE,EAAKkE,GACPvD,EAAUd,EAAIsE,GAAMA,EAAKtE,GAAM,MAAOsE,IAK9C5D,EAAEyO,KAAO,SAASrE,EAAQsE,EAAW7O,GACnC,GAA+BN,GAAUE,EAArCqE,KAAaxE,EAAM8K,CACvB,IAAW,MAAP9K,EAAa,MAAOwE,EACpB9D,GAAEW,WAAW+N,IACfjP,EAAOO,EAAE+N,QAAQzO,GACjBC,EAAWO,EAAW4O,EAAW7O,KAEjCJ,EAAOoJ,EAAQ5I,WAAW,GAAO,EAAO,GACxCV,EAAW,SAASoD,EAAOiB,EAAKtE,GAAO,MAAOsE,KAAOtE,IACrDA,EAAMiC,OAAOjC,GAEf,KAAK,GAAIqE,GAAI,EAAGhE,EAASF,EAAKE,OAAYA,EAAJgE,EAAYA,IAAK,CACrD,GAAIC,GAAMnE,EAAKkE,GACXhB,EAAQrD,EAAIsE,EACZrE,GAASoD,EAAOiB,EAAKtE,KAAMwE,EAAOF,GAAOjB,GAE/C,MAAOmB,IAIT9D,EAAE2O,KAAO,SAASrP,EAAKC,EAAUM,GAC/B,GAAIG,EAAEW,WAAWpB,GACfA,EAAWS,EAAEoF,OAAO7F,OACf,CACL,GAAIE,GAAOO,EAAEoE,IAAIyE,EAAQ5I,WAAW,GAAO,EAAO,GAAI2O,OACtDrP,GAAW,SAASoD,EAAOiB,GACzB,OAAQ5D,EAAEgB,SAASvB,EAAMmE,IAG7B,MAAO5D,GAAEyO,KAAKnP,EAAKC,EAAUM,IAI/BG,EAAE6O,SAAWvL,EAAetD,EAAE+N,SAAS,GAGvC/N,EAAE8O,MAAQ,SAASxP,GACjB,MAAKU,GAAEkD,SAAS5D,GACTU,EAAE8B,QAAQxC,GAAOA,EAAIoC,QAAU1B,EAAEsO,UAAWhP,GADtBA,GAO/BU,EAAE+O,IAAM,SAASzP,EAAK0P,GAEpB,MADAA,GAAY1P,GACLA,GAITU,EAAEiP,QAAU,SAAS7E,EAAQ/D,GAC3B,GAAI5G,GAAOO,EAAEP,KAAK4G,GAAQ1G,EAASF,EAAKE,MACxC,IAAc,MAAVyK,EAAgB,OAAQzK,CAE5B,KAAK,GADDL,GAAMiC,OAAO6I,GACRzG,EAAI,EAAOhE,EAAJgE,EAAYA,IAAK,CAC/B,GAAIC,GAAMnE,EAAKkE,EACf,IAAI0C,EAAMzC,KAAStE,EAAIsE,MAAUA,IAAOtE,IAAM,OAAO,EAEvD,OAAO,EAKT,IAAI4P,GAAK,SAAS1H,EAAGC,EAAG0H,EAAQC,GAG9B,GAAI5H,IAAMC,EAAG,MAAa,KAAND,GAAW,EAAIA,IAAM,EAAIC,CAE7C,IAAS,MAALD,GAAkB,MAALC,EAAW,MAAOD,KAAMC,CAErCD,aAAaxH,KAAGwH,EAAIA,EAAEnF,UACtBoF,YAAazH,KAAGyH,EAAIA,EAAEpF,SAE1B,IAAIgN,GAAY1N,EAASiB,KAAK4E,EAC9B,IAAI6H,IAAc1N,EAASiB,KAAK6E,GAAI,OAAO,CAC3C,QAAQ4H,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAK7H,GAAM,GAAKC,CACzB,KAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,CAC/C,KAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EAGnB,GAAI6H,GAA0B,mBAAdD,CAChB,KAAKC,EAAW,CACd,GAAgB,gBAAL9H,IAA6B,gBAALC,GAAe,OAAO,CAIzD,IAAI8H,GAAQ/H,EAAE/G,YAAa+O,EAAQ/H,EAAEhH,WACrC,IAAI8O,IAAUC,KAAWxP,EAAEW,WAAW4O,IAAUA,YAAiBA,IACxCvP,EAAEW,WAAW6O,IAAUA,YAAiBA,KACzC,eAAiBhI,IAAK,eAAiBC,GAC7D,OAAO,EAQX0H,EAASA,MACTC,EAASA,KAET,KADA,GAAIzP,GAASwP,EAAOxP,OACbA,KAGL,GAAIwP,EAAOxP,KAAY6H,EAAG,MAAO4H,GAAOzP,KAAY8H,CAQtD,IAJA0H,EAAOlO,KAAKuG,GACZ4H,EAAOnO,KAAKwG,GAGR6H,EAAW,CAGb,GADA3P,EAAS6H,EAAE7H,OACPA,IAAW8H,EAAE9H,OAAQ,OAAO,CAEhC,MAAOA,KACL,IAAKuP,EAAG1H,EAAE7H,GAAS8H,EAAE9H,GAASwP,EAAQC,GAAS,OAAO,MAEnD,CAEL,GAAsBxL,GAAlBnE,EAAOO,EAAEP,KAAK+H,EAGlB,IAFA7H,EAASF,EAAKE,OAEVK,EAAEP,KAAKgI,GAAG9H,SAAWA,EAAQ,OAAO,CACxC,MAAOA,KAGL,GADAiE,EAAMnE,EAAKE,IACLK,EAAEe,IAAI0G,EAAG7D,KAAQsL,EAAG1H,EAAE5D,GAAM6D,EAAE7D,GAAMuL,EAAQC,GAAU,OAAO,EAMvE,MAFAD,GAAOM,MACPL,EAAOK,OACA,EAITzP,GAAE0P,QAAU,SAASlI,EAAGC,GACtB,MAAOyH,GAAG1H,EAAGC,IAKfzH,EAAE2P,QAAU,SAASrQ,GACnB,MAAW,OAAPA,GAAoB,EACpBS,EAAYT,KAASU,EAAE8B,QAAQxC,IAAQU,EAAE4P,SAAStQ,IAAQU,EAAEoJ,YAAY9J,IAA6B,IAAfA,EAAIK,OAChE,IAAvBK,EAAEP,KAAKH,GAAKK,QAIrBK,EAAE6P,UAAY,SAASvQ,GACrB,SAAUA,GAAwB,IAAjBA,EAAIwQ,WAKvB9P,EAAE8B,QAAUD,GAAiB,SAASvC,GACpC,MAA8B,mBAAvBqC,EAASiB,KAAKtD,IAIvBU,EAAEkD,SAAW,SAAS5D,GACpB,GAAIyQ,SAAczQ,EAClB,OAAgB,aAATyQ,GAAgC,WAATA,KAAuBzQ,GAIvDU,EAAEkE,MAAM,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,SAAU,SAAS8L,GACxFhQ,EAAE,KAAOgQ,GAAQ,SAAS1Q,GACxB,MAAOqC,GAASiB,KAAKtD,KAAS,WAAa0Q,EAAO,OAMjDhQ,EAAEoJ,YAAYnJ,aACjBD,EAAEoJ,YAAc,SAAS9J,GACvB,MAAOU,GAAEe,IAAIzB,EAAK,YAMJ,kBAAP,KAAyC,gBAAb2Q,aACrCjQ,EAAEW,WAAa,SAASrB,GACtB,MAAqB,kBAAPA,KAAqB,IAKvCU,EAAEkQ,SAAW,SAAS5Q,GACpB,MAAO4Q,UAAS5Q,KAASgL,MAAM6F,WAAW7Q,KAI5CU,EAAEsK,MAAQ,SAAShL,GACjB,MAAOU,GAAEoQ,SAAS9Q,IAAQA,KAASA,GAIrCU,EAAE4J,UAAY,SAAStK,GACrB,MAAOA,MAAQ,GAAQA,KAAQ,GAAgC,qBAAvBqC,EAASiB,KAAKtD,IAIxDU,EAAEqQ,OAAS,SAAS/Q,GAClB,MAAe,QAARA,GAITU,EAAEsQ,YAAc,SAAShR,GACvB,MAAOA,SAAa,IAKtBU,EAAEe,IAAM,SAASzB,EAAKsE,GACpB,MAAc,OAAPtE,GAAesC,EAAegB,KAAKtD,EAAKsE,IAQjD5D,EAAEuQ,WAAa,WAEb,MADArP,GAAKlB,EAAIoB,EACFD,MAITnB,EAAEiD,SAAW,SAASN,GACpB,MAAOA,IAIT3C,EAAEwQ,SAAW,SAAS7N,GACpB,MAAO,YACL,MAAOA,KAIX3C,EAAEyQ,KAAO,aAETzQ,EAAEoD,SAAW,SAASQ,GACpB,MAAO,UAAStE,GACd,MAAc,OAAPA,MAAmB,GAAIA,EAAIsE,KAKtC5D,EAAE0Q,WAAa,SAASpR,GACtB,MAAc,OAAPA,EAAc,aAAe,SAASsE,GAC3C,MAAOtE,GAAIsE,KAMf5D,EAAEmD,QAAUnD,EAAE2Q,QAAU,SAAStK,GAE/B,MADAA,GAAQrG,EAAEuO,aAAclI,GACjB,SAAS/G,GACd,MAAOU,GAAEiP,QAAQ3P,EAAK+G,KAK1BrG,EAAE0N,MAAQ,SAASzG,EAAG1H,EAAUM,GAC9B,GAAI+Q,GAAQtP,MAAM0C,KAAKuC,IAAI,EAAGU,GAC9B1H,GAAWO,EAAWP,EAAUM,EAAS,EACzC,KAAK,GAAI8D,GAAI,EAAOsD,EAAJtD,EAAOA,IAAKiN,EAAMjN,GAAKpE,EAASoE,EAChD,OAAOiN,IAIT5Q,EAAE+G,OAAS,SAASL,EAAKH,GAKvB,MAJW,OAAPA,IACFA,EAAMG,EACNA,EAAM,GAEDA,EAAM1C,KAAK6G,MAAM7G,KAAK+C,UAAYR,EAAMG,EAAM,KAIvD1G,EAAE8M,IAAM+D,KAAK/D,KAAO,WAClB,OAAO,GAAI+D,OAAOC,UAIpB,IAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAActR,EAAEkO,OAAO6C,GAGvBQ,EAAgB,SAASnN,GAC3B,GAAIoN,GAAU,SAASC,GACrB,MAAOrN,GAAIqN,IAGThO,EAAS,MAAQzD,EAAEP,KAAK2E,GAAKsN,KAAK,KAAO,IACzCC,EAAaC,OAAOnO,GACpBoO,EAAgBD,OAAOnO,EAAQ,IACnC,OAAO,UAASqO,GAEd,MADAA,GAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BH,EAAWI,KAAKD,GAAUA,EAAOE,QAAQH,EAAeL,GAAWM,GAG9E9R,GAAEiS,OAASV,EAAcR,GACzB/Q,EAAEkS,SAAWX,EAAcD,GAI3BtR,EAAE8D,OAAS,SAASsG,EAAQhH,EAAU+O,GACpC,GAAIxP,GAAkB,MAAVyH,MAAsB,GAAIA,EAAOhH,EAI7C,OAHIT,SAAe,KACjBA,EAAQwP,GAEHnS,EAAEW,WAAWgC,GAASA,EAAMC,KAAKwH,GAAUzH,EAKpD,IAAIyP,GAAY,CAChBpS,GAAEqS,SAAW,SAASC,GACpB,GAAIC,KAAOH,EAAY,EACvB,OAAOE,GAASA,EAASC,EAAKA,GAKhCvS,EAAEwS,kBACAC,SAAc,kBACdC,YAAc,mBACdT,OAAc,mBAMhB,IAAIU,GAAU,OAIVC,GACFxB,IAAU,IACVyB,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRzB,EAAU,4BAEV0B,EAAa,SAASzB,GACxB,MAAO,KAAOmB,EAAQnB,GAOxBzR,GAAEmT,SAAW,SAASC,EAAMC,EAAUC,IAC/BD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWrT,EAAE6O,YAAawE,EAAUrT,EAAEwS,iBAGtC,IAAIrP,GAAUyO,SACXyB,EAASpB,QAAUU,GAASlP,QAC5B4P,EAASX,aAAeC,GAASlP,QACjC4P,EAASZ,UAAYE,GAASlP,QAC/BiO,KAAK,KAAO,KAAM,KAGhBhS,EAAQ,EACR+D,EAAS,QACb2P,GAAKpB,QAAQ7O,EAAS,SAASsO,EAAOQ,EAAQS,EAAaD,EAAUc,GAanE,MAZA9P,IAAU2P,EAAK1R,MAAMhC,EAAO6T,GAAQvB,QAAQR,EAAS0B,GACrDxT,EAAQ6T,EAAS9B,EAAM9R,OAEnBsS,EACFxO,GAAU,cAAgBwO,EAAS,iCAC1BS,EACTjP,GAAU,cAAgBiP,EAAc,uBAC/BD,IACThP,GAAU,OAASgP,EAAW,YAIzBhB,IAEThO,GAAU,OAGL4P,EAASG,WAAU/P,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,2CACP,oDACAA,EAAS,eAEX,KACE,GAAIgQ,GAAS,GAAIhS,UAAS4R,EAASG,UAAY,MAAO,IAAK/P,GAC3D,MAAOiQ,GAEP,KADAA,GAAEjQ,OAASA,EACLiQ,EAGR,GAAIP,GAAW,SAASQ,GACtB,MAAOF,GAAO7Q,KAAKzB,KAAMwS,EAAM3T,IAI7B4T,EAAWP,EAASG,UAAY,KAGpC,OAFAL,GAAS1P,OAAS,YAAcmQ,EAAW,OAASnQ,EAAS,IAEtD0P,GAITnT,EAAE6T,MAAQ,SAASvU,GACjB,GAAIwU,GAAW9T,EAAEV,EAEjB,OADAwU,GAASC,QAAS,EACXD,EAUT,IAAIhQ,GAAS,SAASgQ,EAAUxU,GAC9B,MAAOwU,GAASC,OAAS/T,EAAEV,GAAKuU,QAAUvU,EAI5CU,GAAEgU,MAAQ,SAAS1U,GACjBU,EAAEkE,KAAKlE,EAAEmO,UAAU7O,GAAM,SAAS0Q,GAChC,GAAIvN,GAAOzC,EAAEgQ,GAAQ1Q,EAAI0Q,EACzBhQ,GAAEY,UAAUoP,GAAQ,WAClB,GAAI/J,IAAQ9E,KAAKkB,SAEjB,OADApB,GAAK+B,MAAMiD,EAAMhG,WACV6D,EAAO3C,KAAMsB,EAAKO,MAAMhD,EAAGiG,QAMxCjG,EAAEgU,MAAMhU,GAGRA,EAAEkE,MAAM,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,WAAY,SAAS8L,GAChF,GAAIhK,GAAS3E,EAAW2O,EACxBhQ,GAAEY,UAAUoP,GAAQ,WAClB,GAAI1Q,GAAM6B,KAAKkB,QAGf,OAFA2D,GAAOhD,MAAM1D,EAAKW,WACJ,UAAT+P,GAA6B,WAATA,GAAqC,IAAf1Q,EAAIK,cAAqBL,GAAI,GACrEwE,EAAO3C,KAAM7B,MAKxBU,EAAEkE,MAAM,SAAU,OAAQ,SAAU,SAAS8L,GAC3C,GAAIhK,GAAS3E,EAAW2O,EACxBhQ,GAAEY,UAAUoP,GAAQ,WAClB,MAAOlM,GAAO3C,KAAM6E,EAAOhD,MAAM7B,KAAKkB,SAAUpC,eAKpDD,EAAEY,UAAU+B,MAAQ,WAClB,MAAOxB,MAAKkB,UAKdrC,EAAEY,UAAUqT,QAAUjU,EAAEY,UAAUsT,OAASlU,EAAEY,UAAU+B,MAEvD3C,EAAEY,UAAUe,SAAW,WACrB,MAAO,GAAKR,KAAKkB,UAUG,kBAAX8R,SAAyBA,OAAOC,KACzCD,OAAO,gBAAkB,WACvB,MAAOnU,OAGX4C,KAAKzB"}PKjGjAOO/connexion/vendor/swagger-ui/lib/backbone-min.js// Backbone.js 1.1.2 (function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('