mirror of
https://github.com/Redocly/redoc.git
synced 2024-11-24 09:33:44 +03:00
1 line
6.7 MiB
1 line
6.7 MiB
{"version":3,"sources":["browser-update.js","zone.min.js","Reflect.ts","polyfill.min.js","../jspm_packages/npm/scrollparent@0.1.0/scrollparent.js","../jspm_packages/npm/scrollparent@0.1.0.js","../.tmp/lib/components/ApiInfo/api-info.js","../.tmp/lib/components/ApiLogo/api-logo.js","../.tmp/lib/components/ParamsList/params-list.js","../.tmp/lib/components/RequestSamples/request-samples.js","../.tmp/lib/components/Method/method.js","../.tmp/lib/components/MethodsList/methods-list.js","../.tmp/lib/common/components/StickySidebar/sticky-sidebar.js","../.tmp/lib/components/Redoc/redoc.js","../.tmp/lib/components/JsonSchema/json-schema-lazy.js","../.tmp/lib/common/components/Zippy/zippy.js","../.tmp/lib/components/ResponsesList/responses-list.js","../.tmp/lib/common/components/Tabs/tabs.js","../.tmp/lib/utils/helpers.js","../.tmp/lib/components/ResponsesSamples/responses-samples.js","../jspm_packages/npm/json-schema-instantiator@0.3.0/src/instantiator.js","../jspm_packages/npm/json-schema-instantiator@0.3.0/index.js","../jspm_packages/npm/json-schema-instantiator@0.3.0.js","../.tmp/lib/utils/JsonFormatterPipe.js","../.tmp/lib/components/SchemaSample/schema-sample.js","../jspm_packages/npm/core-js@1.2.6/library/modules/core.is-iterable.js","../jspm_packages/npm/core-js@1.2.6/library/fn/is-iterable.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/is-iterable.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/sliced-to-array.js","../.tmp/lib/events.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/events/key_events.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/generic_browser_adapter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/browser_adapter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/testability.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/xhr_cache.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/profile/wtf_init.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/events/dom_events.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/debug/by.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/animate/css_animation_options.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/animate/animation.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/animate/css_animation_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/math.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/animate/browser_details.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/animate/animation_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/shared_styles_host.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/dom_tokens.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/dom_renderer.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/debug/debug_renderer.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/debug/ng_probe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/platform/common_dom.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/title.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/browser.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/tools/common_tools.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/tools/tools.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/events/event_manager.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/events/hammer_common.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/events/hammer_gestures.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser_common.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/offline_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/shadow_css.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/style_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/compile_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/compile_view.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/compile_query.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/compile_element.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/view_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/property_binder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/compile_method.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/expression_converter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/compile_binding.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/event_binder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/constants.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/lifecycle_binder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/view_binder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_compiler/view_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/provider_parser.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/template_parser.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/style_url_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/html_ast.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/html_lexer.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/parse_util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/html_parser.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/template_preparser.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/directive_normalizer.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/directive_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/pipe_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/view_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/directive_lifecycle_reflector.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/assertions.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/runtime_metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/selector.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/metadata/lifecycle_hooks.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/url_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/compile_metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/identifiers.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/config.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/abstract_js_emitter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/output_jit.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/dart_emitter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/output_ast.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/abstract_emitter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/path_util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/ts_emitter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/output_interpreter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/debug_context.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/element_injector.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/view.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/output/interpretive_view.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/runtime_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/dom/dom_adapter.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/html_tags.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/schema/element_schema_registry.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/schema/dom_element_schema_registry.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/expression_parser/ast.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/expression_parser/parser.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/expression_parser/lexer.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/template_ast.js","../jspm_packages/npm/angular2@2.0.0-beta.17/compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/compiler/xhr.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/platform/browser/xhr_impl.js","../jspm_packages/npm/angular2@2.0.0-beta.17/platform/browser.js","../.tmp/lib/options.js","../.tmp/lib/components/SideMenu/side-menu.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.array.from.js","../jspm_packages/npm/core-js@1.2.6/library/fn/array/from.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/array/from.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/to-consumable-array.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.same-value.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.species-constructor.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.invoke.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.html.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.dom-create.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.task.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.microtask.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-detect.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.promise.js","../jspm_packages/npm/core-js@1.2.6/library/fn/promise.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/promise.js","../jspm_packages/npm/core-js@1.2.6/library/modules/core.get-iterator.js","../jspm_packages/npm/core-js@1.2.6/library/fn/get-iterator.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/get-iterator.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.map.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es7.map.to-json.js","../jspm_packages/npm/core-js@1.2.6/library/fn/map.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/map.js","../jspm_packages/npm/z-schema@3.17.0/src/Polyfills.js","../jspm_packages/npm/z-schema@3.17.0/src/SchemaCache.js","../jspm_packages/npm/z-schema@3.17.0/src/SchemaCompilation.js","../jspm_packages/npm/validator@5.2.0/lib/toInt.js","../jspm_packages/npm/validator@5.2.0/lib/toBoolean.js","../jspm_packages/npm/validator@5.2.0/lib/equals.js","../jspm_packages/npm/validator@5.2.0/lib/contains.js","../jspm_packages/npm/validator@5.2.0/lib/matches.js","../jspm_packages/npm/validator@5.2.0/lib/isURL.js","../jspm_packages/npm/validator@5.2.0/lib/isMACAddress.js","../jspm_packages/npm/validator@5.2.0/lib/isIP.js","../jspm_packages/npm/validator@5.2.0/lib/isBoolean.js","../jspm_packages/npm/validator@5.2.0/lib/isAlpha.js","../jspm_packages/npm/validator@5.2.0/lib/alpha.js","../jspm_packages/npm/validator@5.2.0/lib/isAlphanumeric.js","../jspm_packages/npm/validator@5.2.0/lib/isNumeric.js","../jspm_packages/npm/validator@5.2.0/lib/isLowercase.js","../jspm_packages/npm/validator@5.2.0/lib/isUppercase.js","../jspm_packages/npm/validator@5.2.0/lib/isAscii.js","../jspm_packages/npm/validator@5.2.0/lib/isFullWidth.js","../jspm_packages/npm/validator@5.2.0/lib/isHalfWidth.js","../jspm_packages/npm/validator@5.2.0/lib/isVariableWidth.js","../jspm_packages/npm/validator@5.2.0/lib/isMultibyte.js","../jspm_packages/npm/validator@5.2.0/lib/isSurrogatePair.js","../jspm_packages/npm/validator@5.2.0/lib/isInt.js","../jspm_packages/npm/validator@5.2.0/lib/isFloat.js","../jspm_packages/npm/validator@5.2.0/lib/isDecimal.js","../jspm_packages/npm/validator@5.2.0/lib/toFloat.js","../jspm_packages/npm/validator@5.2.0/lib/isDivisibleBy.js","../jspm_packages/npm/validator@5.2.0/lib/isHexColor.js","../jspm_packages/npm/validator@5.2.0/lib/isJSON.js","../jspm_packages/npm/validator@5.2.0/lib/isNull.js","../jspm_packages/npm/validator@5.2.0/lib/isLength.js","../jspm_packages/npm/validator@5.2.0/lib/isUUID.js","../jspm_packages/npm/validator@5.2.0/lib/isHexadecimal.js","../jspm_packages/npm/validator@5.2.0/lib/isMongoId.js","../jspm_packages/npm/validator@5.2.0/lib/isDate.js","../jspm_packages/npm/validator@5.2.0/lib/isAfter.js","../jspm_packages/npm/validator@5.2.0/lib/toDate.js","../jspm_packages/npm/validator@5.2.0/lib/isBefore.js","../jspm_packages/npm/validator@5.2.0/lib/isIn.js","../jspm_packages/npm/validator@5.2.0/lib/isCreditCard.js","../jspm_packages/npm/validator@5.2.0/lib/isISIN.js","../jspm_packages/npm/validator@5.2.0/lib/isISBN.js","../jspm_packages/npm/validator@5.2.0/lib/isMobilePhone.js","../jspm_packages/npm/validator@5.2.0/lib/isCurrency.js","../jspm_packages/npm/validator@5.2.0/lib/isISO8601.js","../jspm_packages/npm/validator@5.2.0/lib/isBase64.js","../jspm_packages/npm/validator@5.2.0/lib/isDataURI.js","../jspm_packages/npm/validator@5.2.0/lib/ltrim.js","../jspm_packages/npm/validator@5.2.0/lib/rtrim.js","../jspm_packages/npm/validator@5.2.0/lib/trim.js","../jspm_packages/npm/validator@5.2.0/lib/escape.js","../jspm_packages/npm/validator@5.2.0/lib/unescape.js","../jspm_packages/npm/validator@5.2.0/lib/stripLow.js","../jspm_packages/npm/validator@5.2.0/lib/whitelist.js","../jspm_packages/npm/validator@5.2.0/lib/blacklist.js","../jspm_packages/npm/validator@5.2.0/lib/isWhitelisted.js","../jspm_packages/npm/validator@5.2.0/lib/isByteLength.js","../jspm_packages/npm/validator@5.2.0/lib/util/assertString.js","../jspm_packages/npm/validator@5.2.0/lib/isFQDN.js","../jspm_packages/npm/validator@5.2.0/lib/isEmail.js","../jspm_packages/npm/validator@5.2.0/lib/util/merge.js","../jspm_packages/npm/validator@5.2.0/lib/normalizeEmail.js","../jspm_packages/npm/validator@5.2.0/lib/util/toString.js","../jspm_packages/npm/validator@5.2.0/index.js","../jspm_packages/npm/validator@5.2.0.js","../jspm_packages/npm/z-schema@3.17.0/src/FormatValidators.js","../jspm_packages/npm/z-schema@3.17.0/src/JsonValidation.js","../jspm_packages/npm/lodash._stringtopath@4.7.1/index.js","../jspm_packages/npm/lodash._stringtopath@4.7.1.js","../jspm_packages/npm/lodash.get@4.2.1/index.js","../jspm_packages/npm/lodash.get@4.2.1.js","../jspm_packages/npm/z-schema@3.17.0/src/Errors.js","../jspm_packages/npm/z-schema@3.17.0/src/Report.js","../jspm_packages/npm/z-schema@3.17.0/src/SchemaValidation.js","../jspm_packages/npm/z-schema@3.17.0/src/Utils.js","../jspm_packages/npm/z-schema@3.17.0/src/schemas/schema.json","../jspm_packages/npm/z-schema@3.17.0/src/schemas/hyper-schema.json","../jspm_packages/npm/z-schema@3.17.0/src/ZSchema.js","../jspm_packages/npm/z-schema@3.17.0.js","../jspm_packages/npm/swagger-schema-official@2.0.0-bab6bed/schema.json","../jspm_packages/npm/swagger-parser@4.0.0-beta.2/lib/validate-schema.js","../jspm_packages/npm/swagger-methods@1.0.0/lib/index.js","../jspm_packages/npm/swagger-methods@1.0.0.js","../jspm_packages/npm/swagger-parser@4.0.0-beta.2/lib/validate-spec.js","../jspm_packages/npm/swagger-parser@4.0.0-beta.2/lib/util.js","../jspm_packages/npm/swagger-parser@4.0.0-beta.2/lib/options.js","../jspm_packages/npm/swagger-parser@4.0.0-beta.2/lib/promise.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/parsers/json.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/parsers/yaml.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/parsers/text.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/parsers/binary.js","../jspm_packages/github/jspm/nodelibs-fs@0.1.2/index.js","../jspm_packages/github/jspm/nodelibs-fs@0.1.2.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/resolvers/file.js","../jspm_packages/npm/stream-http@2.3.0/lib/capability.js","../jspm_packages/npm/stream-http@2.3.0/lib/response.js","../jspm_packages/npm/readable-stream@2.1.2/lib/_stream_readable.js","../jspm_packages/npm/process-nextick-args@1.0.6/index.js","../jspm_packages/npm/process-nextick-args@1.0.6.js","../jspm_packages/npm/util-deprecate@1.0.2/browser.js","../jspm_packages/npm/util-deprecate@1.0.2.js","../jspm_packages/npm/readable-stream@2.1.2/lib/_stream_writable.js","../jspm_packages/npm/readable-stream@2.1.2/lib/_stream_duplex.js","../jspm_packages/npm/readable-stream@2.1.2/lib/_stream_transform.js","../jspm_packages/npm/readable-stream@2.1.2/lib/_stream_passthrough.js","../jspm_packages/npm/readable-stream@2.1.2/readable.js","../jspm_packages/npm/readable-stream@2.1.2.js","../jspm_packages/npm/to-arraybuffer@1.0.1/index.js","../jspm_packages/npm/to-arraybuffer@1.0.1.js","../jspm_packages/npm/stream-http@2.3.0/lib/request.js","../jspm_packages/npm/xtend@4.0.1/immutable.js","../jspm_packages/npm/xtend@4.0.1.js","../jspm_packages/npm/builtin-status-codes@2.0.0/browser.js","../jspm_packages/npm/builtin-status-codes@2.0.0.js","../jspm_packages/npm/stream-http@2.3.0/index.js","../jspm_packages/npm/stream-http@2.3.0.js","../jspm_packages/npm/readable-stream@1.1.14/readable.js","../jspm_packages/npm/readable-stream@1.1.14/writable.js","../jspm_packages/npm/readable-stream@1.1.14/duplex.js","../jspm_packages/npm/readable-stream@1.1.14/transform.js","../jspm_packages/npm/isarray@0.0.1/index.js","../jspm_packages/npm/isarray@0.0.1.js","../jspm_packages/npm/events@1.0.2/events.js","../jspm_packages/npm/events@1.0.2.js","../jspm_packages/github/jspm/nodelibs-events@0.1.1/index.js","../jspm_packages/github/jspm/nodelibs-events@0.1.1.js","../jspm_packages/npm/string_decoder@0.10.31/index.js","../jspm_packages/npm/string_decoder@0.10.31.js","../jspm_packages/npm/readable-stream@1.1.14/lib/_stream_readable.js","../jspm_packages/npm/readable-stream@1.1.14/lib/_stream_writable.js","../jspm_packages/npm/readable-stream@1.1.14/lib/_stream_duplex.js","../jspm_packages/npm/readable-stream@1.1.14/lib/_stream_transform.js","../jspm_packages/npm/core-util-is@1.0.2/lib/util.js","../jspm_packages/npm/core-util-is@1.0.2.js","../jspm_packages/npm/readable-stream@1.1.14/lib/_stream_passthrough.js","../jspm_packages/npm/readable-stream@1.1.14/passthrough.js","../jspm_packages/npm/stream-browserify@1.0.0/index.js","../jspm_packages/npm/stream-browserify@1.0.0.js","../jspm_packages/github/jspm/nodelibs-stream@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-stream@0.1.0.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1/lib/response.js","../jspm_packages/npm/Base64@0.2.1/base64.js","../jspm_packages/npm/Base64@0.2.1.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1/lib/request.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1/index.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1.js","../jspm_packages/npm/https-browserify@0.0.0/index.js","../jspm_packages/npm/https-browserify@0.0.0.js","../jspm_packages/github/jspm/nodelibs-https@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-https@0.1.0.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/resolvers/http.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/validators/z-schema.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/options.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/refs.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/util/plugins.js","../jspm_packages/npm/es6-promise@3.1.2/dist/es6-promise.js","../jspm_packages/npm/es6-promise@3.1.2.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/util/promise.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/parse.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/resolve-external.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/bundle.js","../jspm_packages/npm/call-me-maybe@1.0.1/index.js","../jspm_packages/npm/call-me-maybe@1.0.1.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/mark.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/loader.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/dumper.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/schema.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/str.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/seq.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/map.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/schema/failsafe.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/null.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/bool.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/int.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/common.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/float.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/schema/json.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/schema/core.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/timestamp.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/merge.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/binary.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/omap.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/pairs.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/set.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/schema/default_safe.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/js/undefined.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/js/regexp.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/type/js/function.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/schema/default_full.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml/exception.js","../jspm_packages/npm/js-yaml@3.6.0/lib/js-yaml.js","../jspm_packages/npm/js-yaml@3.6.0/index.js","../jspm_packages/npm/js-yaml@3.6.0.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/util/yaml.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/index.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/ref.js","../jspm_packages/npm/base64-js@0.0.8/lib/b64.js","../jspm_packages/npm/base64-js@0.0.8.js","../jspm_packages/npm/ieee754@1.1.6/index.js","../jspm_packages/npm/ieee754@1.1.6.js","../jspm_packages/npm/isarray@1.0.0/index.js","../jspm_packages/npm/isarray@1.0.0.js","../jspm_packages/npm/buffer@3.6.0/index.js","../jspm_packages/npm/buffer@3.6.0.js","../jspm_packages/github/jspm/nodelibs-buffer@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-buffer@0.1.0.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/pointer.js","../jspm_packages/npm/util@0.10.3/support/isBufferBrowser.js","../jspm_packages/npm/inherits@2.0.1/inherits_browser.js","../jspm_packages/npm/inherits@2.0.1.js","../jspm_packages/npm/util@0.10.3/util.js","../jspm_packages/npm/util@0.10.3.js","../jspm_packages/github/jspm/nodelibs-util@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-util@0.1.0.js","../jspm_packages/npm/ono@2.2.1/lib/index.js","../jspm_packages/npm/ono@2.2.1.js","../jspm_packages/npm/ms@0.7.1/index.js","../jspm_packages/npm/ms@0.7.1.js","../jspm_packages/npm/debug@2.2.0/debug.js","../jspm_packages/npm/debug@2.2.0/browser.js","../jspm_packages/npm/debug@2.2.0.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/util/debug.js","../jspm_packages/npm/punycode@1.3.2/punycode.js","../jspm_packages/npm/punycode@1.3.2.js","../jspm_packages/npm/querystring@0.2.0/decode.js","../jspm_packages/npm/querystring@0.2.0/encode.js","../jspm_packages/npm/querystring@0.2.0/index.js","../jspm_packages/npm/querystring@0.2.0.js","../jspm_packages/npm/url@0.10.3/url.js","../jspm_packages/npm/url@0.10.3.js","../jspm_packages/github/jspm/nodelibs-url@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-url@0.1.0.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/util/url.js","../jspm_packages/npm/json-schema-ref-parser@3.1.2/lib/dereference.js","../jspm_packages/npm/swagger-parser@4.0.0-beta.2/lib/index.js","../jspm_packages/npm/swagger-parser@4.0.0-beta.2.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.to-string.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.string-at.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.string.iterator.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.add-to-unscopables.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.array.iterator.js","../jspm_packages/npm/core-js@1.2.6/library/modules/web.dom.iterable.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.library.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-create.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-define.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-step.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.set-species.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.collection-strong.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.property-desc.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.hide.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.redefine.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.redefine-all.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.strict-new.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.has.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.set-to-string-tag.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.descriptors.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.collection.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.set.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-call.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.is-array-iter.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-integer.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-length.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iterators.js","../jspm_packages/npm/core-js@1.2.6/library/modules/core.get-iterator-method.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.for-of.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.shared.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.uid.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.wks.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.classof.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.collection-to-json.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es7.set.to-json.js","../jspm_packages/npm/core-js@1.2.6/library/fn/set.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/set.js","../.tmp/lib/utils/swagger-defs.js","../.tmp/lib/utils/SchemaManager.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.keys.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/keys.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/keys.js","../.tmp/prismjs-bundle.js","../jspm_packages/npm/marked@0.3.5/lib/marked.js","../jspm_packages/npm/marked@0.3.5.js","../.tmp/lib/utils/pipes.js","../.tmp/lib/components/base.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/async_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/uppercase_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/lowercase_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/json_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/slice_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/date_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/intl.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/number_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/replace_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/i18n_plural_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/invalid_pipe_argument_exception.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/i18n_select_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes/common_pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_control_name.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_form_control.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_model.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_control_group.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_form_model.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/control_container.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/normalize_validator.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/shared.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_form.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/default_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/checkbox_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/number_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_control_status.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/select_control_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/validators.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/validators.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/model.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/form_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/control_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/abstract_control_directive.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/ng_control.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms/directives/radio_control_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/forms.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/observable_list_diff.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_class.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_for.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_if.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_template_outlet.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_style.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/metadata/di.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/metadata/directives.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/metadata/view.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/prod_mode.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/facade.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/zone.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/render.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/query_list.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/template_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/view_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/debug/debug_node.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/platform_directives_and_pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/platform_common_providers.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/zone/ng_zone_impl.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/zone/ng_zone.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/testability/testability.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/console.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/application_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/promise.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/SubjectSubscription.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/throwError.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/ObjectUnsubscribedError.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/Subject.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/observable/PromiseObservable.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/operator/toPromise.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/isArray.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/isObject.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/isFunction.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/tryCatch.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/errorObject.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/UnsubscriptionError.js","../jspm_packages/npm/process@0.11.2/browser.js","../jspm_packages/npm/process@0.11.2.js","../jspm_packages/github/jspm/nodelibs-process@0.1.2/index.js","../jspm_packages/github/jspm/nodelibs-process@0.1.2.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/Subscription.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/Observer.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/Subscriber.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/root.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/symbol/rxSubscriber.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/util/toSubscriber.js","../jspm_packages/npm/symbol-observable@0.2.4/ponyfill.js","../jspm_packages/npm/symbol-observable@0.2.4/index.js","../jspm_packages/npm/symbol-observable@0.2.4.js","../jspm_packages/npm/rxjs@5.0.0-beta.7/Observable.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/async.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/view_type.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/element_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/profile/wtf_impl.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/profile/profile.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/view_container_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/element.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/exceptions.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/differs/iterable_differs.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/differs/default_iterable_differ.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/differs/keyvalue_differs.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/differs/default_keyvalue_differ.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/constants.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/change_detector_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/change_detection_util.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/change_detection/change_detection.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/render/api.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/util/decorators.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/decorators.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/injector.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/reflective_injector.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/provider.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/reflective_provider.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/forward_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/reflective_key.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/reflective_exceptions.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di/opaque_token.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/di.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/application_tokens.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/view_utils.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/component_factory.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/component_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/linker/dynamic_component_loader.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/application_common_providers.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/reflection/reflector_reader.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/reflection/reflector.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/base_wrapped_exception.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/exception_handler.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/exceptions.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/reflection/reflection_capabilities.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/core/reflection/reflection.js","../jspm_packages/npm/angular2@2.0.0-beta.17/core.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/lang.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/facade/collection.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_switch.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/ng_plural.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives/core_directives.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/directives.js","../jspm_packages/npm/angular2@2.0.0-beta.17/src/common/common_directives.js","../jspm_packages/npm/angular2@2.0.0-beta.17/common.js","../jspm_packages/github/Robdel12/DropKick@2.1.7/lib/dropkick.js","../jspm_packages/github/Robdel12/DropKick@2.1.7.js","../.tmp/lib/common/components/DropDown/dropdown.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-iobject.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.object-sap.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.get-own-property-descriptor.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/get-own-property-descriptor.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/get-own-property-descriptor.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/get.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/create.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/create.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.is-object.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.an-object.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.set-proto.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.set-prototype-of.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/set-prototype-of.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/set-prototype-of.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/inherits.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/define-property.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/define-property.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/create-class.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/class-call-check.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.global.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.a-function.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.ctx.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.export.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.defined.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-object.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.cof.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iobject.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.fails.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.object-assign.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.assign.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.core.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/assign.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/assign.js","../jspm_packages/npm/foreach@2.0.5/index.js","../jspm_packages/npm/foreach@2.0.5.js","../jspm_packages/npm/json-pointer@0.3.0/index.js","../jspm_packages/npm/json-pointer@0.3.0.js","../.tmp/lib/utils/JsonPointer.js","../.tmp/lib/components/JsonSchema/json-schema.js","../.tmp/lib/components/index.js","../.tmp/lib/index.js"],"names":["Reflect","Reflect.decorate","Reflect.metadata","Reflect.metadata.decorator","Reflect.defineMetadata","Reflect.hasMetadata","Reflect.hasOwnMetadata","Reflect.getMetadata","Reflect.getOwnMetadata","Reflect.getMetadataKeys","Reflect.getOwnMetadataKeys","Reflect.deleteMetadata","Reflect.DecorateConstructor","Reflect.DecoratePropertyWithDescriptor","Reflect.DecoratePropertyWithoutDescriptor","Reflect.GetOrCreateMetadataMap","Reflect.OrdinaryHasMetadata","Reflect.OrdinaryHasOwnMetadata","Reflect.OrdinaryGetMetadata","Reflect.OrdinaryGetOwnMetadata","Reflect.OrdinaryDefineOwnMetadata","Reflect.OrdinaryMetadataKeys","Reflect.OrdinaryOwnMetadataKeys","Reflect.IsUndefined","Reflect.IsArray","Reflect.IsObject","Reflect.IsConstructor","Reflect.IsSymbol","Reflect.ToPropertyKey","Reflect.GetPrototypeOf","Reflect.CreateMapPolyfill","Reflect.CreateMapPolyfill.Map","Reflect.CreateMapPolyfill.size","Reflect.CreateMapPolyfill.has","Reflect.CreateMapPolyfill.get","Reflect.CreateMapPolyfill.set","Reflect.CreateMapPolyfill.delete","Reflect.CreateMapPolyfill.clear","Reflect.CreateMapPolyfill.forEach","Reflect.CreateMapPolyfill._find","Reflect.CreateSetPolyfill","Reflect.CreateSetPolyfill.Set","Reflect.CreateSetPolyfill.size","Reflect.CreateSetPolyfill.has","Reflect.CreateSetPolyfill.add","Reflect.CreateSetPolyfill.delete","Reflect.CreateSetPolyfill.clear","Reflect.CreateSetPolyfill.forEach","Reflect.CreateWeakMapPolyfill","Reflect.CreateWeakMapPolyfill.WeakMap","Reflect.CreateWeakMapPolyfill.has","Reflect.CreateWeakMapPolyfill.get","Reflect.CreateWeakMapPolyfill.set","Reflect.CreateWeakMapPolyfill.delete","Reflect.CreateWeakMapPolyfill.clear","Reflect.CreateWeakMapPolyfill.FillRandomBytes","Reflect.CreateWeakMapPolyfill.GenRandomBytes","Reflect.CreateWeakMapPolyfill.CreateUUID","Reflect.CreateWeakMapPolyfill.CreateUniqueKey","Reflect.CreateWeakMapPolyfill.GetOrCreateWeakMapTable","$__System","registerDynamic","$__require","exports","module","global","this","__define","define","undefined","parents","node","ps","parentNode","concat","style","prop","getComputedStyle","getPropertyValue","overflow","scroll","test","scrollParent","HTMLElement","i","length","window","Scrollparent","ApiInfo","SchemaManager","RedocComponent","BaseComponent","_BaseComponent","schemaMgr","optionsMgr","_get","Object","getPrototypeOf","_ApiInfo","prototype","call","data","componentSchema","info","specUrl","options","metadata","OptionsManager","selector","styles","template","ApiLogo","_ApiLogo","logoInfo","imgUrl","url","bgColor","backgroundColor","safePush","obj","item","push","ParamsList","_ParamsList","paramsList","getMethodParams","pointer","map","paramData","propPointer","_pointer","JsonSchema","injectPropertyData","name","paramsMap","orderParams","body","bodyParam","noParams","_Object$keys","paramsPlaces","placeHint","path","query","formData","header","params","forEach","place","res","param","directives","JsonSchemaLazy","RequestSamples","Tabs","Tab","PrismPipe","redocEvents","ViewChildren","QueryList","ChangeDetectorRef","ChangeDetectionStrategy","tabs","changeDetector","_RequestSamples","changes","subscribe","_","_this","first","subscribeForEvents","lang","samplesLanguageChanged","next","sampleLang","_this2","selectyByTitle","markForCheck","bodySchemaPtr","JsonPointer","join","samples","SchemaSample","inputs","pipes","changeDetection","OnPush","Method","_Method","apiUrl","httpMethod","baseName","methodInfo","tags","filterMainTags","findBodyParam","operationId","methodAnchor","encodeURIComponent","tag","tagsMap","getTagsMap","filter","pathParams","find","ResponsesList","ResponsesSamples","MethodsList","EncodeURIComponentPipe","_MethodsList","menuStructure","buildMenuTree","_Array$from","entries","entry","_entry","description","_entry$1","methods","method","StickySidebar","Directive","ElementRef","BrowserDomAdapter","elementRef","dom","$element","nativeElement","setStyle","cancelScrollBinding","onAndCancel","updatePosition","scrollY","scrollYOffset","$redocEl","offsetTop","stick","unstick","offsetParent","bind","unbind","pageYOffset","scrollTop","_modeLocked","Redoc","provide","enableProdMode","bootstrap","_Redoc","element","parseOptions","$scrollParent","detectScollParent","elem","addClass","redocEl","setTimeout","removeClass","providers","useValue","appRef","destroy","showLoadingAnimation","instance","load","then","debugMode","hideLoadingAnimation","bootstrapped","console","log","error","specUrlAttributeName","hasAttribute","getAttribute","init","el","elClone","parent","nextSibling","parentElement","nextElementSibling","cloneNode","innerHTML","insertBefore","SideMenu","Default","insertAfter","newNode","referenceNode","cache","Component","ViewContainerRef","CORE_DIRECTIVES","DynamicComponentLoader","viewRef","dcl","schema","byPointer","$ref","disableLazySchemas","loaded","loadNextToLocation","compRef","initComponent","hostView","changeDetectorRef","detectChanges","normalizePointer","location","querySelector","skipReadOnly","auto","loadCached","Zippy","EventEmitter","type","visible","empty","open","close","events","isNumeric","n","isNaN","parseFloat","isFinite","statusCodeType","_ResponsesList","responses","respCode","resp","ref","code","headers","k","respInfo","extendable","change","tab","notify","arguments","active","tabTitle","prevActive","newActive","addTab","statusCode","Error","hasExample","response","examples","_ResponsesSamples","isPrimitive","typesInstantiator","instantiatePrimitive","val","instantiate","visit","properties","property","hasOwnProperty","allOf","len","minItems","items","string","number","integer","null","boolean","object","htmlEncode","t","toString","replace","decorateWithSpan","value","className","valueToHTML","valueType","output","constructor","Array","level","arrayToHTML","objectToHTML","json","collapsed","COLLAPSE_LEVEL","hasContents","key","keys","jsonToHTML","JsonFormatter","Pipe","isBlank","_SchemaSample","base","sample","dereference","SchemaSampler","addEventListener","event","target","getElementsByClassName","classList","contains","remove","add","classof","ITERATOR","Iterators","isIterable","it","O","default","__esModule","_getIterator","_isIterable","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","done","err","isArray","TypeError","bootsrEmmiter","langChanged","__extends","d","b","__","p","create","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","decorate","defineProperty","__metadata","v","dom_adapter_1","lang_1","collection_1","event_manager_1","di_1","modifierKeys","modifierKeyGetters","alt","altKey","control","ctrlKey","meta","metaKey","shift","shiftKey","KeyEventsPlugin","_super","supports","eventName","isPresent","parseEventName","handler","parsedEvent","outsideHandler","eventCallback","StringMapWrapper","get","manager","getZone","runOutsideAngular","DOM","parts","toLowerCase","split","domEventName","StringWrapper","equals","_normalizeKey","pop","fullKey","modifierName","ListWrapper","result","set","getEventFullKey","getEventKey","modifierGetter","zone","runGuarded","keyName","Injectable","EventManagerPlugin","xhr_impl_1","GenericBrowserDomAdapter","_animationPrefix","_transitionEnd","createElement","defaultDoc","getStyle","domPrefixes","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","e","getXHR","XHRImpl","getDistributedNodes","resolveAndSetHref","baseUrl","href","supportsDOMEvents","supportsNativeShadowDOM","isFunction","createShadowRoot","getAnimationPrefix","getTransitionEnd","supportsAnimation","DomAdapter","getBaseElementHref","baseElement","document","relativePath","urlParsingNode","setAttribute","pathname","charAt","generic_browser_adapter_1","_attrToPropMap","class","innerHtml","readonly","tabindex","DOM_KEY_LOCATION_NUMPAD","_keyMap","\b","\t","","\u001b","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","A","B","C","D","E","F","G","H","I","J","K","M","N","`","","apply","parse","templateHtml","makeCurrent","setRootDomAdapter","hasProperty","setProperty","getProperty","invoke","methodName","args","logError","logGroup","group","logGroupEnd","groupEnd","enumerable","configurable","querySelectorAll","on","evt","listener","removeEventListener","dispatchEvent","createMouseEvent","eventType","createEvent","initEvent","preventDefault","returnValue","isPrevented","defaultPrevented","getInnerHTML","getOuterHTML","outerHTML","nodeName","nodeValue","content","firstChild","childNodes","childNodesAsList","createFixedSize","clearNodes","removeChild","appendChild","replaceChild","newChild","oldChild","insertAllBefore","nodes","setInnerHTML","getText","textContent","setText","getValue","setValue","getChecked","checked","setChecked","createComment","text","createTemplate","html","tagName","doc","createElementNS","ns","createTextNode","createScriptTag","attrName","attrValue","createStyleElement","css","getShadowRoot","shadowRoot","getHost","host","clone","getElementsByTagName","slice","hasClass","styleName","styleValue","removeStyle","stylename","hasStyle","attributeMap","Map","elAttrs","attributes","attrib","attribute","hasAttributeNS","getAttributeNS","setAttributeNS","removeAttribute","removeAttributeNS","templateAwareRoot","isTemplateElement","createHtmlDocument","implementation","createHTMLDocument","getBoundingClientRect","top","bottom","left","right","width","height","getTitle","title","setTitle","newTitle","elementMatches","matches","msMatchesSelector","webkitMatchesSelector","isTextNode","nodeType","Node","TEXT_NODE","isCommentNode","COMMENT_NODE","isElementNode","ELEMENT_NODE","hasShadowRoot","isShadowRoot","DocumentFragment","importIntoDoc","toImport","importNode","adoptNode","getHref","keyIdentifier","startsWith","String","fromCharCode","parseInt","substring","getGlobalEventTarget","getHistory","history","getLocation","getBaseHref","resetBaseElement","getUserAgent","navigator","userAgent","setData","getData","setGlobalVar","setValueOnPath","requestAnimationFrame","callback","cancelAnimationFrame","id","performanceNow","performance","now","DateWrapper","toMillis","core_1","PublicTestability","testability","_testability","isStable","whenStable","findBindings","using","provider","exactMatch","findProviders","BrowserGetTestability","setTestabilityGetter","addToWindow","registry","getAngularTestability","findInAncestors","findTestabilityInTree","getAllAngularTestabilities","testabilities","getAllTestabilities","getAllAngularRootElements","getAllRootElements","whenAllStable","count","didWork","decrement","didWork_","frameworkStabilizers","createGrowableSize","getTestability","xhr_1","exceptions_1","promise_1","CachedXHR","_cache","$templateCache","BaseException","PromiseWrapper","resolve","reject","XHR","wtfInit","DomEventsPlugin","addGlobalEventListener","By","all","debugElement","directive","providerTokens","indexOf","CssAnimationOptions","classesToAdd","classesToRemove","animationClasses","math_1","util_1","Animation","browserDetails","callbacks","eventClearFunctions","completed","_stringPrefix","startTime","setup","wait","timestamp","start","delay","computedDelay","duration","computedDuration","raf","fromStyles","applyStyles","transitionDuration","transitionDelay","addClasses","removeClasses","toStyles","computedStyles","Math","max","parseDurationString","addEvents","dashCaseKey","camelCaseToDashCase","classes","totalTime","handleAnimationEvent","handleAnimationCompleted","elapsedTime","round","elapsedTimeIncludesDelay","stopPropagation","fn","onComplete","maxValue","NumberWrapper","stripLetters","ms","floor","str","replaceAll","RegExpWrapper","css_animation_options_1","animation_1","CssAnimationBuilder","addAnimationClass","setDuration","setDelay","setStyles","from","to","setFromStyles","setToStyles","NaN","BrowserDetails","doesElapsedTimeIncludesDelay","div","elapsed","frames","queue","RafQueue","cancel","_raf","currentFrameId","_nextFrame","css_animation_builder_1","browser_details_1","AnimationBuilder","__param","paramIndex","decorator","dom_tokens_1","SharedStylesHost","_styles","_stylesSet","Set","addStyles","additions","SetWrapper","has","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","head","_addStylesToHost","addHost","hostNode","removeHost","Inject","DOCUMENT","CONST_EXPR","OpaqueToken","input","replaceAllMapped","CAMEL_CASE_REGEXP","m","dashCaseToCamelCase","DASH_CASE_REGEXP","toUpperCase","moveNodesAfterSibling","sibling","appendNodes","decoratePreventDefault","eventHandler","allowDefaultBehavior","_shimContentAttribute","componentShortId","CONTENT_ATTR","COMPONENT_REGEX","_shimHostAttribute","HOST_ATTR","_flattenStyles","compId","splitNamespace","match","firstMatch","NS_PREFIX_RE","animation_builder_1","shared_styles_host_1","metadata_1","NAMESPACE_URIS","xlink","svg","TEMPLATE_COMMENT_TEXT","TEMPLATE_BINDINGS_EXP","DomRootRenderer","eventManager","sharedStylesHost","animate","_registeredComponents","renderComponent","componentProto","renderer","DomRenderer","DomRootRenderer_","_document","_eventManager","EventManager","_rootRenderer","encapsulation","ViewEncapsulation","Native","Emulated","_contentAttr","_hostAttr","selectRootElement","selectorOrNode","debugInfo","isString","nsAndName","createViewRoot","hostElement","nodesParent","createTemplateAnchor","comment","createText","projectNodes","attachViewAfter","viewRootNodes","animateNodeEnter","detachView","animateNodeLeave","destroyView","viewAllNodes","listen","renderElement","listenGlobal","setElementProperty","propertyName","propertyValue","setElementAttribute","attributeName","attributeValue","attrNs","setBindingDebugInfo","dashCasedPropertyName","existingBindings","parsedBindings","Json","stringify","setElementClass","isAdd","setElementStyle","invokeElementMethod","renderNode","COMPONENT_VARIABLE","debug_node_1","DebugDomRootRenderer","_delegate","DebugDomRenderer","nativeEl","debugEl","DebugElement","indexDebugNode","getDebugNode","DebugNode","debugParent","debugElement_1","addChild","debugNode","debugViewRootNodes","rootNode","insertChildrenAfter","removeDebugNodeFromIndex","listeners","EventListener","inspectNativeElement","_createConditionalRootRenderer","rootRenderer","assertionsEnabled","_createRootRenderer","INSPECT_GLOBAL_NAME","CORE_TOKENS_GLOBAL_NAME","CORE_TOKENS","debug_renderer_1","dom_renderer_1","ApplicationRef","NgZone","ELEMENT_PROBE_PROVIDERS","Provider","RootRenderer","useFactory","deps","ELEMENT_PROBE_PROVIDERS_PROD_MODE","__export","dom_events_1","EVENT_MANAGER_PLUGINS","Title","win","gc","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","application_ref_1","browser_1","ChangeDetectionPerfRecord","msPerTick","numTicks","AngularTools","profiler","AngularProfiler","injector","timeChangeDetection","config","record","profileName","isProfilerAvailable","profile","tick","end","profileEnd","toFixed","enableDebugTools","context","ng","common_tools_1","disableDebugTools","ng_zone_1","plugins","_zone","_plugins","reversed","plugin","_findPluginFor","_eventNames","pan","panstart","panmove","panend","pancancel","panleft","panright","panup","pandown","pinch","pinchstart","pinchmove","pinchend","pinchcancel","pinchin","pinchout","press","pressup","rotate","rotatestart","rotatemove","rotateend","rotatecancel","swipe","swipeleft","swiperight","swipeup","swipedown","tap","HammerGesturesPluginCommon","hammer_common_1","HAMMER_GESTURE_CONFIG","HammerGestureConfig","overrides","buildHammer","mc","Hammer","enable","HammerGesturesPlugin","_config","isCustomEvent","eventObj","off","_exceptionHandler","ExceptionHandler","IS_DART","initDomAdapter","browser_adapter_1","wtf_init_1","testability_2","common_1","testability_1","key_events_1","xhr_cache_1","hammer_gestures_1","common_dom_1","dom_tokens_2","title_1","common_dom_2","browser_adapter_2","tools_1","hammer_gestures_2","BROWSER_PLATFORM_MARKER","BROWSER_PROVIDERS","PLATFORM_COMMON_PROVIDERS","PLATFORM_INITIALIZER","multi","BROWSER_APP_COMMON_PROVIDERS","APPLICATION_COMMON_PROVIDERS","FORM_PROVIDERS","PLATFORM_PIPES","COMMON_PIPES","PLATFORM_DIRECTIVES","COMMON_DIRECTIVES","useClass","useExisting","Testability","CACHED_TEMPLATE_PROVIDER","_resolveViewStatements","compileResult","dependencies","dep","factoryPlaceholder","moduleUrl","_templateModuleUrl","comp","statements","_resolveStyleStatements","valuePlaceholder","_stylesModuleUrl","sourceUrl","isShimmed","urlWithoutSuffix","MODULE_SUFFIX","stylesheetUrl","shim","_assertComponent","isComponent","compile_metadata_1","o","component_factory_1","_COMPONENT_FACTORY_IDENTIFIER","CompileIdentifierMetadata","runtime","ComponentFactory","SourceModule","source","NormalizedComponentWithViewDirectives","component","OfflineCompiler","_directiveNormalizer","_templateParser","_styleCompiler","_viewCompiler","_outputEmitter","normalizeDirectiveMetadata","normalizeDirective","compileTemplates","components","exportedVars","componentWithDirs","compMeta","compViewFactoryVar","_compileComponent","hostMeta","createHostComponentMeta","hostViewFactoryVar","compFactoryVar","variable","importExpr","literal","importType","TypeModifier","Const","toDeclStmt","StmtModifier","Final","_codegenSourceModule","compileStylesheet","cssText","plainStyles","shimStyles","stylesVar","targetStatements","styleResult","compileComponent","parsedTemplate","viewResult","addAll","viewFactoryVar","emitStatements","stripComments","_commentRe","processRules","ruleCallback","inputWithEscapedBlocks","escapeBlocks","nextBlockIndex","escapedString","_ruleRe","suffix","contentPrefix","BLOCK_PLACEHOLDER","blocks","rule","CssRule","inputParts","_curlyRe","resultParts","escapedBlocks","bracketCount","currentBlockParts","partIndex","part","CLOSE_CURLY","OPEN_CURLY","StringWithEscapedBlocks","ShadowCss","strictStyling","shimCssText","hostSelector","_insertDirectives","_scopeCssText","_insertPolyfillDirectivesInCssText","_insertPolyfillRulesInCssText","_cssContentNextSelectorRe","_cssContentRuleRe","scopeSelector","unscoped","_extractUnscopedRulesFromCssText","_insertPolyfillHostInCssText","_convertColonHost","_convertColonHostContext","_convertShadowDOMSelectors","_scopeSelectors","trim","matcher","_cssContentUnscopedRuleRe","RegExpMatcherWrapper","_convertColonRule","_cssColonHostRe","_colonHostPartReplacer","_cssColonHostContextRe","_colonHostContextPartReplacer","regExp","partReplacer","_polyfillHostNoCombinator","_polyfillHost","_shadowDOMSelectorsRe","_scopeSelector","strict","deepParts","_shadowDeepSelectors","shallowPart","_selectorNeedsScoping","_applyStrictSelectorScope","_applySelectorScope","re","_makeScopeMatcher","lre","rre","_selectorReSuffix","_applySimpleSelectorScope","_polyfillHostRe","replaceBy","isRe","splits","scoped","sep","_colonHostContextRe","_polyfillHostContext","_colonHostRe","_parenSuffix","getStylesVarName","view_1","shadow_css_1","url_resolver_1","style_url_resolver_1","StylesCompileDependency","StylesCompileResult","StyleCompiler","_urlResolver","_shadowCss","_compileStyles","styleUrls","styleWithImports","extractStyleUrls","absUrls","styleExpressions","plainStyle","_shimIfNeeded","identifier","ExternalExpr","stmt","literalArr","ArrayType","DYNAMIC_TYPE","UrlResolver","_findPipeMeta","view","pipeMeta","pipeMetas","localPipeMeta","identifiers_1","_PurePipeProxy","argCount","CompilePipe","_purePipeProxies","THIS_EXPR","pipeCount","pure","diDeps","diDep","token","equalsTo","identifierToken","Identifiers","injectFromViewParentInjector","fields","ClassField","Private","createMethod","resetDebugInfo","addStmt","toStmt","purePipeProxy","createPureProxy","callMethod","BuiltinMethod","callingView","getPropertyInView","castByValue","callFn","getViewType","embeddedTemplateIndex","view_type_1","ViewType","EMBEDDED","isHost","HOST","COMPONENT","constants_1","compile_query_1","compile_method_1","compile_pipe_1","CompileView","genConfig","viewIndex","declarationElement","templateVariableBindings","rootNodesOrAppElements","bindings","classStatements","eventHandlerMethods","getters","disposables","subscriptions","purePipes","locals","literalArrayCount","literalMapCount","CompileMethod","injectorGetMethod","updateContentQueriesMethod","dirtyParentQueriesMethod","updateViewQueriesMethod","detectChangesInInputsMethod","detectChangesRenderPropertiesMethod","afterContentLifecycleCallbacksMethod","afterViewLifecycleCallbacksMethod","destroyMethod","viewType","classType","viewFactory","getViewFactoryName","componentView","viewQueries","CompileTokenMap","directiveInstance","forEachWithIndex","queryMeta","queryIndex","propName","selectors","queryList","createQueryList","CompileQuery","addQueryToTokenMap","constructorViewQueryCount","viewQuery","isNull","setEmbeddedView","callPipe","compView","pipe","getLocal","EventHandlerVars","currView","createLiteralArray","values","proxyExpr","proxyParams","proxyReturnEntries","paramName","FnParam","ReturnStatement","createLiteralMap","literalMap","afterNodes","queries","afterChildren","createQueryValues","viewValues","flatten","ViewQueryValues","mapNestedViews","appElement","declarationAppElement","expressions","adjustedExpressions","expr","replaceVarInExpression","compileView","ownerDirectiveExpression","_values","addValue","currentView","elPath","parentEl","unshift","queryListForDirtyExpr","last","embeddedView","newViewValues","targetMethod","updateStmts","valueExpr","IfStmt","createInjectInternalCondition","nodeIndex","childNodeCount","providerExpr","indexCondition","lowerEquals","InjectMethodVars","requestNodeIndex","and","identical","createDiTokenExpression","createProviderProperty","providerValueExpressions","isMulti","isEager","compileElement","resolvedProviderValueExpr","internalField","getter","sourceAst","ClassGetter","finish","template_ast_1","CompileNode","isRootElement","CompileElement","_directives","_resolvedProvidersArray","hasViewContainer","hasEmbeddedView","references","_compViewExpr","_instances","_queryCount","_queries","_componentConstructorViewQueryLists","contentNodesByNgContentIndex","referenceTokens","Injector","Renderer","_createAppElement","createNull","fieldName","parentNodeIndex","AppElement","statement","setComponentView","compViewExpr","ngContentSelectors","createTemplateRefExpr","TemplateRef_","CompileProviderMetadata","TemplateRef","ProviderAst","ProviderAstType","Builtin","sourceSpan","beforeChildren","_resolvedProviders","resolvedProvider","_getDependency","providerType","CompileDiDependencyMetadata","depsExpr","Expression","size","multiProvider","eager","directiveInstances","_addQuery","queriesWithReads","queriesForProvider","_getQueriesFor","_QueryWithRead","varName","varValue","varToken","CompileTokenMetadata","queryWithRead","read","componentConstructorViewQueryList","NULL_EXPR","compExpr","getComponent","providerChildNodeCount","PrivateService","addContentNode","ngContentIndex","nodeExpr","getProviderTokens","currentEl","distance","descendants","_getLocalDependency","requestingProviderType","currElement","isValue","isSkipSelf","PublicService","isOptional","definedView","viewProp","ReadPropExpr","readPropExpr_1","some","field","cast","optional","identifierIsInstance","createFlatArray","lastNonArrayExpressions","ConcatArray","pureProxyProp","pureProxyId","pureProxies","buildView","targetDependencies","builderVisitor","ViewBuilderVisitor","templateVisitAll","nestedViewCount","finishView","createViewTopLevelStmts","compile_element_1","_mergeHtmlAndDirectiveAttrs","declaredHtmlAttrs","directiveMeta","hostAttributes","prevValue","mergeAttributeValue","mapToKeyValueArray","_readHtmlAttrs","attrs","htmlAttrs","ast","attrValue1","attrValue2","CLASS_ATTR","STYLE_ATTR","entryArray","sort","entry1","entry2","compare","keyValueArray","nodeDebugInfosVar","genDebugInfo","createStaticNodeDebugInfo","ExternalType","StaticNodeDebugInfo","renderCompTypeVar","RenderComponentType","viewClass","createViewClass","createViewFactory","componentToken","varTokenEntries","MapType","emptyTemplateVariableBindings","viewConstructorArgs","ViewConstructorVars","viewUtils","ViewUtils","parentInjector","declarationEl","viewConstructor","ClassMethod","SUPER_EXPR","ViewTypeEnum","fromValue","ChangeDetectionStrategyEnum","getChangeDetectionMode","viewMethods","rootSelectorVar","STRING_TYPE","generateCreateMethod","NUMBER_TYPE","notFoundResult","addReturnValuefNotEmpty","DetectChangesVars","throwOnChange","BOOL_TYPE","generateDetectChangesMethod","ClassStmt","AppView","getContextType","templateUrlInfo","viewFactoryArgs","initRenderCompTypeStmts","templateUrl","ViewEncapsulationEnum","constructorMethod","parentRenderNodeExpr","parentRenderNodeStmts","ViewProperties","parentRenderNodeVar","renderTypes","resultExpr","stmts","isEmpty","afterContentStmts","not","afterViewStmts","varStmts","readVars","findReadVarNames","changed","SimpleChange","valUnwrapper","ValueUnwrapper","typeMeta","mode","change_detection_1","isDefaultChangeDetectionStrategy","CheckAlways","CheckOnce","compile_view_1","IMPLICIT_TEMPLATE_VAR","ViewCompileDependency","_isRootNode","_addRootNodeAndProject","vcAppEl","_getParentRenderNode","visitBoundText","_visitText","visitText","renderText","compileNode","createRenderNode","resetDebugInfoExpr","visitNgContent","parentRenderNode","nodesExpression","projectableNodes","index","flattenNestedViewRenderNodes","visitElement","createRenderNodeExpr","debugContextExpr","directiveAst","attrNameAndValues","nestedComponentIdentifier","children","codeGenContentNodes","visitEmbeddedTemplate","renderComment","variables","varAst","visitAttr","ctx","visitDirective","visitEvent","eventTargetAndNames","visitReference","visitVariable","visitDirectiveProperty","visitElementProperty","createBindFieldExpr","exprIndex","createCurrValueExpr","currValExpr","fieldExpr","parsedExpression","actions","checkExpression","expression_converter_1","convertCdExpressionToIr","expression","uninitialized","needsValueUnwrapper","initValueUnwrapperStmt","condition","checkBinding","or","bindRenderText","boundText","bindingIndex","compile_binding_1","CompileBinding","valueField","bindAndWriteToRenderer","boundProps","boundProp","renderMethod","renderValue","PropertyBindingType","Property","logBindingUpdate","logBindingUpdateStmt","Attribute","conditional","Class","Style","strValue","unit","plus","bindRenderInputs","bindDirectiveHostProps","hostProperties","bindDirectiveInputs","lifecycleHooks","calcChangesMap","lifecycle_hooks_1","LifecycleHooks","OnChanges","isOnPushComp","constants_2","directiveName","_DebugState","NULL_DEBUG_STATE","_view","_newState","_currState","_bodyStatements","_debugEnabled","_updateDebugContextIfNeeded","_updateDebugContext","newState","sourceLocation","line","col","templateAst","addStmts","nameResolver","implicitReceiver","valueUnwrapper","visitor","_AstToIrVisitor","irAst","_Mode","ExpressionWithWrappedValueInfo","convertCdStatementToIr","flattenStatements","Statement","ensureStatementMode","ensureExpressionMode","convertToStatementIfNeeded","arg","IMPLICIT_RECEIVER","_nameResolver","_implicitReceiver","_valueUnwrapper","visitBinary","op","operation","BinaryOperator","Plus","Minus","Multiply","Divide","Modulo","And","Or","Equals","NotEquals","Identical","NotIdentical","Lower","Bigger","LowerEquals","BiggerEquals","BinaryOperatorExpr","visitChain","visitAll","visitConditional","trueExp","falseExp","visitPipe","exp","visitFunctionCall","visitImplicitReceiver","visitInterpolation","strings","interpolate","visitKeyedRead","visitKeyedWrite","visitLiteralArray","visitLiteralMap","visitLiteralPrimitive","visitMethodCall","receiver","varExpr","visitPrefixNot","visitPropertyRead","visitPropertyWrite","visitSafePropertyRead","visitSafeMethodCall","asts","visitQuote","collectEventListeners","hostEvents","dirs","eventListeners","hostEvent","CompileEventListener","getOrCreate","addAction","finishMethod","bindDirectiveOutputs","outputs","observablePropName","listenToDirective","bindRenderOutputs","listenToRenderer","convertStmtIntoExpression","ExpressionStatement","santitizeEventName","eventTarget","listenerIndex","_hasComponentHostListener","_actionResultExprs","_method","_methodName","_eventParam","renderEvent","targetEventListeners","actionStmts","lastIndex","lastStatement","returnExpr","preventDefaultVar","notIdentical","markPathToRootStart","listenExpr","eventListener","disposable","FUNCTION_TYPE","subscription","SubscribeObservable","_enumExpression","classIdentifier","resolveEnumToken","None","ChangeDetectorStateEnum","ChangeDetectorState","NeverChecked","CheckedBefore","Errored","Checked","Detached","bindDirectiveDetectChangesLifecycleCallbacks","OnInit","STATE_IS_NEVER_CHECKED","NOT_THROW_ON_CHANGES","DoCheck","bindDirectiveAfterContentLifecycleCallbacks","AfterContentInit","AfterContentChecked","bindDirectiveAfterViewLifecycleCallbacks","AfterViewInit","AfterViewChecked","bindDirectiveDestroyLifecycleCallbacks","onDestroyMethod","OnDestroy","bindPipeDestroyLifecycleCallbacks","pipeInstance","bindView","ViewBinderVisitor","lifecycle_binder_1","property_binder_1","event_binder_1","_nodeIndex","view_builder_1","view_binder_1","config_1","ViewCompileResult","ViewCompiler","_genConfig","CompilerConfig","_transformProvider","_a","_transformProviderAst","_normalizeProviders","targetErrors","targetProviders","normalizeProvider","CompileTypeMetadata","ProviderError","_resolveProvidersFromDirectives","providersByToken","dirProvider","_resolveProviders","directivesWithComponentFirst","dir","viewProviders","targetProvidersByToken","clear","_getViewQueries","_addQueryToTokenMap","_getContentQueries","contentQueries","parse_util_1","message","span","ParseError","ProviderViewContext","errors","ProviderElementContext","_viewContext","_parent","_isViewRoot","_directiveAsts","refs","_sourceSpan","_transformedProviders","_seenProviders","_hasViewContainer","_attrs","attrAst","directivesMeta","_allProviders","_contentQueries","queriedTokens","_addQueryReadsTo","refAst","_getOrCreateLocalProvider","afterElement","sortedProviderTypes","sortedDirectives","dir1","dir2","queryReadTokens","queryReadToken","transformedProviderAst","transformedProviders","transformedDeps","transformedUseValue","transformedUseExisting","existingDiDep","isAttribute","normalizeBlank","currEager","isSelf","prevElement","splitClasses","classAttrValue","createElementCssSelector","elementName","matchableAttrs","cssSelector","selector_1","CssSelector","elNameNoNs","html_tags_1","splitNsName","setElement","attrNameNoNs","addAttribute","addClassName","removeDuplicates","hasMatch","console_1","ast_1","parser_1","html_parser_1","view_utils_1","element_schema_registry_1","template_preparser_1","html_ast_1","provider_parser_1","BIND_NAME_REGEXP","TEMPLATE_ELEMENT","TEMPLATE_ATTR","TEMPLATE_ATTR_PREFIX","PROPERTY_PARTS_SEPARATOR","ATTRIBUTE_PREFIX","CLASS_PREFIX","STYLE_PREFIX","TEXT_CSS_SELECTOR","TEMPLATE_TRANSFORMS","TemplateParseError","TemplateParseResult","TemplateParser","_exprParser","_schemaRegistry","_htmlParser","_console","transforms","tryParse","warnings","ParseErrorLevel","WARNING","FATAL","warn","errorString","htmlAstWithErrors","rootNodes","uniqDirectives","uniqPipes","providerViewContext","parseVisitor","TemplateParseVisitor","htmlVisitAll","EMPTY_ELEMENT_CONTEXT","transform","Optional","Parser","ElementSchemaRegistry","HtmlParser","Console","directivesIndex","ngContentCount","selectorMatcher","SelectorMatcher","addSelectables","pipesByName","_reportError","_parseInterpolation","sourceInfo","parseInterpolation","_checkPipes","MAX_INTERPOLATION_VALUES","wrapLiteralPrimitive","_parseAction","parseAction","_parseBinding","parseBinding","_parseTemplateBindings","bindingsResult","parseTemplateBindings","templateBindings","binding","warning","collector","PipeCollector","pipeName","visitExpansion","visitExpansionCase","findNgContentIndex","BoundTextAst","TextAst","contex","AttrAst","visitComment","preparsedElement","preparseElement","PreparsedElementType","SCRIPT","STYLE","STYLESHEET","isStyleUrlResolvable","hrefAttr","elementOrDirectiveProps","elementOrDirectiveRefs","elementVars","templateElementOrDirectiveProps","templateMatchableAttrs","templateElementVars","hasInlineTemplates","lcElName","attr","hasBinding","_parseAttr","hasTemplateBinding","_parseInlineTemplateBinding","elementCssSelector","directiveMetas","_parseDirectives","directiveAsts","_createDirectiveAsts","elementProps","_createElementPropertyAsts","isViewRoot","providerContext","nonBindable","NON_BINDABLE_VISITOR","ElementContext","parsedElement","projectionSelector","projectAs","NG_CONTENT","NgContentAst","_assertAllEventsPublishedByDirectives","_assertNoComponentsNorElementBindingsOnTemplate","EmbeddedTemplateAst","transformedDirectiveAsts","transformProviders","transformedHasViewContainer","_assertOnlyOneComponent","ngContentIndex_1","ElementAst","templateCssSelector","templateDirectiveMetas","templateDirectiveAsts","templateElementProps","templateProviderContext","targetMatchableAttrs","targetProps","targetVars","templateBindingsSource","keyIsVar","VariableAst","_parsePropertyAst","_parseLiteralAttr","targetEvents","targetRefs","_normalizeAttributeName","bindParts","_parseProperty","_parseVariable","_parseReference","_parseEvent","_parseAssignmentEvent","_parsePropertyInterpolation","ElementOrDirectiveRef","BoundElementOrDirectiveProperty","splitAtColon","BoundEventAst","props","targetReferences","matchedReferences","directiveProperties","_createDirectiveHostPropertyAsts","_createDirectiveHostEventAsts","hostListeners","_createDirectivePropertyAsts","elOrDirRef","exportAs","ReferenceAst","DirectiveAst","refToken","hostProps","targetPropertyAsts","exprAst","_createElementPropertyAst","targetEventAsts","targetBoundDirectiveProps","boundPropsByName","isLiteral","elProp","dirProp","BoundDirectivePropertyAst","boundElementProps","boundDirectivePropsIndex","templateName","bindingType","boundPropertyName","getMappedPropName","nsSeparatorIdx","name_1","mergeNsAndName","BoundElementPropertyAst","_findComponentDirectiveNames","componentTypeNames","typeName","allDirectiveEvents","fullName","NonBindableVisitor","_ngContentIndexMatcher","_wildcardNgContentIndex","wildcardNgContentIndex","ngContentIndices","RecursiveAstVisitor","schemeMatch","_urlWithSchemaRe","resolver","foundUrls","modifiedCssText","_cssImportRe","StyleWithImports","astResult","HtmlTextAst","HtmlExpansionAst","switchValue","cases","switchValueSourceSpan","HtmlExpansionCaseAst","valueSourceSpan","expSourceSpan","HtmlAttrAst","HtmlElementAst","startSourceSpan","endSourceSpan","HtmlCommentAst","tokenizeHtml","sourceContent","tokenizeExpansionForms","_HtmlTokenizer","ParseSourceFile","tokenize","unexpectedCharacterErrorMsg","charCode","char","$EOF","unknownEntityErrorMsg","entitySrc","isNotWhitespace","isWhitespace","$TAB","$SPACE","$NBSP","isNameEnd","$GT","$SLASH","$SQ","$DQ","$EQ","isPrefixEnd","$a","$z","$A","$Z","$0","$9","isDigitEntityEnd","$SEMICOLON","isAsciiHexDigit","isNamedEntityEnd","isAsciiLetter","isSpecialFormStart","peek","nextPeek","$LBRACE","$f","$F","compareCharCodeCaseInsensitive","code1","code2","toUpperCaseCharCode","mergeTextTokens","srcTokens","lastDstToken","dstTokens","HtmlTokenType","TEXT","HtmlToken","HtmlTokenError","errorMsg","tokenType","HtmlTokenizeResult","tokens","$LF","$CR","$BANG","$HASH","$AMPERSAND","$MINUS","$COLON","$LT","$LBRACKET","$RBRACKET","$RBRACE","$COMMA","$X","$x","CR_OR_CRLF_REGEXP","ControlFlowError","file","column","expansionCaseStack","_advance","_processCarriageReturns","_getLocation","_attemptCharCode","_consumeCdata","_consumeComment","_consumeDocType","_consumeTagClose","_consumeTagOpen","_consumeExpansionFormStart","_consumeExpansionCaseStart","isInExpansionCase","_consumeExpansionCaseEnd","isInExpansionForm","_consumeExpansionFormEnd","_consumeText","_beginToken","EOF","_endToken","ParseLocation","_getSpan","ParseSourceSpan","currentTokenStart","currentTokenType","_createError","msg","charCodeAt","_attemptCharCodeCaseInsensitive","_requireCharCode","_attemptStr","chars","_attemptStrCaseInsensitive","_requireStr","_attemptCharCodeUntilFn","predicate","_requireCharCodeUntilFn","offset","_attemptUntilChar","_readChar","decodeEntities","_decodeEntity","startPosition","_savePosition","_restorePosition","NAMED_ENTITIES","isHex","numberStart","strNum","entity","_consumeRawText","firstCharOfEnd","attemptEndRest","tagCloseStart","textStart","ESCAPABLE_RAW_TEXT","RAW_TEXT","COMMENT_START","textToken","COMMENT_END","CDATA_START","CDATA_END","DOC_TYPE","_consumePrefixAndName","nameOrPrefixStart","prefix","nameStart","lowercaseTagName","savedPos","_consumeTagOpenStart","_consumeAttributeName","_consumeAttributeValue","_consumeTagOpenEnd","contentTokenType","getHtmlTagDefinition","contentType","HtmlTagContentType","_consumeRawTextWithTagClose","TAG_CLOSE","TAG_OPEN_START","ATTR_NAME","prefixAndName","ATTR_VALUE","quoteChar","valueStart","TAG_OPEN_END_VOID","TAG_OPEN_END","EXPANSION_FORM_START","_readUntil","EXPANSION_CASE_VALUE","EXPANSION_CASE_EXP_START","EXPANSION_CASE_EXP_END","EXPANSION_FORM_END","interpolation","isTextEnd","position","nbTokens","ctxStart","ctxEnd","ctxLen","ctxLines","getElementFullName","localName","implicitNamespacePrefix","getNsPrefix","lastOnStack","stack","html_lexer_1","HtmlTreeError","HtmlParseTreeResult","parseExpansionForms","tokensAndErrors","treeAndErrors","TreeBuilder","build","elementStack","_consumeStartTag","_consumeEndTag","_closeVoidElement","_consumeExpansion","prev","_advanceIf","startToken","_addToParent","expCase","_parseExpansionCase","mainSourceSpan","_collectExpansionExpTokens","parsedExp","expansionFormStack","parent_1","_getParentElement","ignoreFirstLf","isVoid","startTagToken","_consumeAttr","selfClosing","_pushElement","_popElement","isClosedByChild","tagDef","requireExtraParent","newParent","parentToAdd","endTagToken","stackIndex","splice","closedByParent","valueToken","selectAttr","relAttr","lcAttrName","NG_CONTENT_SELECT_ATTR","LINK_STYLE_HREF_ATTR","LINK_STYLE_REL_ATTR","NG_NON_BINDABLE_ATTR","NG_PROJECT_AS","normalizeNgContentSelect","OTHER","NG_CONTENT_ELEMENT","STYLE_ELEMENT","SCRIPT_ELEMENT","LINK_ELEMENT","LINK_STYLE_REL_VALUE","PreparsedElement","async_1","DirectiveNormalizer","_xhr","normalizeTemplate","normalizedTemplate","CompileDirectiveMetadata","directiveType","normalizeLoadedTemplate","sourceAbsUrl","templateContent","templateMeta","templateAbsUrl","rootNodesAndErrors","TemplatePreparseVisitor","allStyles","allStyleAbsUrls","allResolvedStyles","styleUrl","CompileTemplateMetadata","ngNonBindableStackCount","child","_isDirectiveMetadata","DirectiveMetadata","reflection_1","reflector_reader_1","DirectiveResolver","_reflector","reflector","typeMetadata","annotations","resolveForwardRef","propertyMetadata","propMetadata","_mergeWithPropertyMetadata","dm","a","InputMetadata","bindingPropertyName","OutputMetadata","HostBindingMetadata","hostPropertyName","HostListenerMetadata","ContentChildrenMetadata","ViewChildrenMetadata","ContentChildMetadata","ViewChildMetadata","_merge","mergedOutputs","mergedInputs","mergedHost","merge","mergedQueries","ComponentMetadata","moduleId","ReflectorReader","CODEGEN_DIRECTIVE_RESOLVER","_isPipeMetadata","PipeMetadata","PipeResolver","metas","annotation","CODEGEN_PIPE_RESOLVER","directives_1","ViewResolver","_resolve","viewMeta","ViewMetadata","_throwMixingViewAndComponent","hasLifecycleHook","lcInterface","Type","proto","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","ngOnChanges","ngDoCheck","ngOnDestroy","ngOnInit","assertArrayOfStrings","flattenDirectives","platformDirectives","flattenArray","flattenPipes","platformPipes","tree","out","isValidType","calcModuleUrl","cmpMetadata","scheme","getUrlScheme","importUri","reflective_exceptions_1","cpl","md","dimd","directive_resolver_1","pipe_resolver_1","view_resolver_1","directive_lifecycle_reflector_1","di_2","platform_directives_and_pipes_1","assertions_1","provider_1","reflective_provider_1","RuntimeMetadataResolver","_directiveResolver","_pipeResolver","_viewResolver","_platformDirectives","_platformPipes","_directiveCache","_pipeCache","_anonymousTypes","_anonymousTypeIndex","sanitizeTokenName","found","sanitizeIdentifier","getDirectiveMetadata","dirMeta","changeDetectionStrategy","cmpMeta","getProvidersMetadata","getQueriesMetadata","getTypeMetadata","LIFECYCLE_HOOKS_VALUES","hook","getDependenciesMetadata","getFactoryMetadata","factory","CompileFactoryMetadata","getPipeMetadata","pipeType","CompilePipeMetadata","getViewDirectivesMetadata","getViewPipesMetadata","typeOrFunc","constructDependencies","NoAnnotationError","compileToken","AttributeMetadata","getTokenMetadata","compileQuery","q","QueryMetadata","getQueryMetadata","upperBoundVisibility","HostMetadata","SelfMetadata","lowerBoundVisibility","SkipSelfMetadata","isViewQuery","getProviderMetadata","compileDeps","compileQueries","isVarBindingQuery","varBindings","CompileQueryMetadata","_EMPTY_ATTR_VALUE","_SELECTOR_REGEXP","classNames","notSelectors","results","_addResult","cssSel","current","inNot","isElementSelector","getMatchingElementTemplate","classAttr","notSelector","_elementMap","_elementPartialMap","_classMap","_classPartialMap","_attrValueMap","_attrValuePartialMap","_listContexts","createNotMatcher","notMatcher","cssSelectors","callbackCtxt","listContext","SelectorListContext","_addSelectable","selectable","SelectorContext","isTerminal","_addTerminal","_addPartial","terminalMap","terminalValuesMap","parttialMap","partialValuesMap","terminalList","matchedCallback","alreadyMatched","_matchTerminal","_matchPartial","selectables","starSelectables","finalize","nestedSelector","cbContext","createUrlResolverWithoutPackagePrefix","createOfflineCompileUrlResolver","_ASSET_SCHEME","_split","_ComponentIndex","Scheme","_buildFromEncodedParts","opt_scheme","opt_userInfo","opt_domain","opt_port","opt_path","opt_queryData","opt_fragment","uri","_splitRe","_removeDotSegments","leadingSlash","trailingSlash","segments","up","pos","segment","_joinAndCanonicalizePath","Path","UserInfo","Domain","Port","QueryData","Fragment","_resolveUrl","encodeURI","baseParts","lastIndexOf","application_tokens_1","DEFAULT_PACKAGE_URL_PROVIDER","PACKAGE_ROOT_URL","_packagePrefix","resolvedUrl","resolvedParts","stripRight","stripLeft","pathSegements","metadataFromJson","_COMPILE_METADATA_FROM_JSON","componentType","componentSelector","_arrayFromJson","_objFromJson","_arrayToJson","_objToJson","isBoolean","isNumber","toJson","_normalizeArray","HOST_REG_EXP","CompileMetadataWithIdentifier","unimplemented","CompileMetadataWithType","_b","fromJson","normalizeBool","token2","rk","runtimeCacheKey","ak","assetCacheKey","_valueMap","existing","VIEW_ENCAPSULATION_VALUES","serializeEnum","inputsMap","bindConfig","outputsMap","CHANGE_DETECTION_STRATEGY_VALUES","hookValue","Identifier","Factory","debug_context_1","element_1","element_ref_1","view_container_ref_1","api_1","view_2","linker_1","injector_1","template_ref_1","APP_VIEW_MODULE_URL","VIEW_UTILS_MODULE_URL","CD_MODULE_URL","impViewUtils","impAppView","impDebugContext","DebugContext","impAppElement","impElementRef","impViewContainerRef","impChangeDetectorRef","impRenderComponentType","impQueryList","impTemplateRef","impTemplateRef_","impValueUnwrapper","impInjector","impViewEncapsulation","impViewType","impChangeDetectionStrategy","impStaticNodeDebugInfo","impRenderer","impSimpleChange","impUninitialized","impChangeDetectorState","impFlattenNestedViewRenderNodes","impDevModeEqual","devModeEqual","impInterpolate","impCheckBinding","impCastByValue","pureProxy1","pureProxy2","pureProxy3","pureProxy4","pureProxy5","pureProxy6","pureProxy7","pureProxy8","pureProxy9","pureProxy10","useJit","DefaultRenderTypes","RenderTypes","abstract_emitter_1","AbstractJsEmitterVisitor","visitDeclareClassStmt","pushClass","_visitClassConstructor","print","visitExpression","println","_visitClassGetter","_visitClassMethod","popClass","_visitParams","incIndent","visitAllStatements","decIndent","visitReadVarExpr","builtin","BuiltinVar","This","Super","visitDeclareVarStmt","visitCastExpr","visitInvokeFunctionExpr","fnExpr","ReadVarExpr","currentClass","visitAllExpressions","visitFunctionExpr","visitDeclareFunctionStmt","visitTryCatchStmt","bodyStmts","CATCH_ERROR_VAR","catchStmts","CATCH_STACK_VAR","visitAllObjects","getBuiltinMethodName","AbstractEmitterVisitor","defaultValues","jitStatements","resultVar","converter","JitEmitterVisitor","EmitterVisitorContext","createRoot","evalExpression","toSource","getArgs","abstract_js_emitter_1","_evalArgNames","_evalArgValues","visitExternalExpr","debugOutputAstAsDart","_DartEmitterVisitor","_debugModuleUrl","visitStatement","visitType","getSuperConstructorCallExpr","InvokeFunctionExpr","isConstType","hasModifier","path_util_1","DartEmitter","srcParts","importsWithPrefixes","importedModuleUrl","getImportModulePath","ImportEnv","Dart","_moduleUrl","_visitIdentifier","typeParams","_visitClassField","ctorStmts","superCtorExpr","visitBinaryOperatorExpr","operator","lhs","rhs","visitLiteralArrayExpr","visitLiteralMapExpr","visitInstantiateExpr","classExpr","visitBuiltintType","typeStr","BuiltinTypeName","Bool","Dynamic","Function","Number","Int","visitExternalType","visitArrayType","of","visitMapType","newValue","transformer","_ReplaceVariableTransformer","finder","_VariableFinder","varNames","typeModifiers","LiteralExpr","LiteralArrayExpr","LiteralMapExpr","NotExpr","FunctionExpr","modifiers","modifier","BuiltinType","INT_TYPE","ReadKeyExpr","InvokeMethodExpr","InstantiateExpr","trueCase","falseCase","ConditionalExpr","notEquals","minus","divide","multiply","modulo","lower","bigger","biggerEquals","CastExpr","WriteVarExpr","visitWriteVarExpr","DeclareVarStmt","WriteKeyExpr","visitWriteKeyExpr","WritePropExpr","visitWritePropExpr","visitInvokeMethodExpr","visitLiteralExpr","visitConditionalExpr","visitNotExpr","DeclareFunctionStmt","visitReadPropExpr","visitReadKeyExpr","CatchError","CatchStack","visitExpressionStmt","visitReturnStmt","AbstractClassPart","visitIfStmt","CommentStmt","visitCommentStmt","TryCatchStmt","ThrowStmt","visitThrowStmt","ExpressionTransformer","exprs","RecursiveExpressionVisitor","_varName","_newValue","escapeSingleQuoteString","escapeDollar","_SINGLE_QUOTE_ESCAPE_STRING_RE","_createIndent","OutputEmitter","_EmittedLine","indent","_exportedVars","_indent","_classes","_lines","isExportedVar","lastPart","lineIsEmpty","_currentLine","newLine","removeEmptyLastLine","clazz","lines","_escapeDollarInStrings","hasElseCase","lineWasEmpty","opStr","useNewLine","separator","moduleUrlStr","importedUrlStr","importEnv","absolutePathPrefix","_AssetUrl","importedUrl","firstLevelDir","packageName","getRelativePath","modulePath","importedPath","moduleParts","_PATH_SEP_RE","importedParts","longestPrefix","getLongestPathSegmentPrefix","goParentCount","JS","_PATH_SEP","arr1","arr2","prefixSize","minLen","min","_ASSET_URL_RE","allowNonMatching","debugOutputAstAsTypeScript","_TsEmitterVisitor","TypeScriptEmitter","interpretStatements","instanceFactory","stmtsWithReturn","_ExecutionContext","StatementInterpreter","isDynamicInstance","DynamicInstance","_executeFunctionStatements","varValues","childCtx","createChildWihtLocalVars","vars","_declareFn","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","dart_emitter_1","ts_emitter_1","superClass","superInstance","ReturnValue","_DynamicClass","_classStmt","_ctx","_visitor","instanceCtx","paramNames","ctorParamNames","debugAst","currCtx","di","setter","ObservableWrapper","FunctionWrapper","createInstance","refTokens","CONST","_tplRow","_tplCol","staticNodeDebugInfos","staticNodeInfo","_staticNodeInfo","parentView","allNodes","refName","injectorGet","localValue","_UNDEFINED","ElementInjector","notFoundValue","THROW_IF_NOT_FOUND","_findLastRenderNode","lastNode","appEl","nestedViews","nestedView","view_ref_1","profile_1","element_injector_1","EMPTY_CONTEXT","_scope_check","wtfCreateScope","cdMode","contentChildren","viewChildren","viewContainerElement","cdState","destroyed","_currentDebugContext","ViewRef_","givenProjectableNodes","rootSelectorOrNode","ensureSlotCount","slotCount","_hasExternalHostElement","createInternal","_resetDebug","_rethrowWithContext","renderParent","dirtyParentQueriesInternal","selectOrCreateHostElement","debugCtx","injectorGetInternal","flatRootNodes","_destroyRecurse","_destroyLocal","dispose","destroyInternal","hasLocal","contextName","setLocal","addRenderContentChild","removeContentChild","s","throwDestroyedError","detectChangesInternal","wtfLeave","detectContentChildrenChanges","detectViewChildrenChanges","addToContentChildren","renderAppElement","removeFromContentChildren","markAsCheckOnce","markPathToRootAsCheckOnce","debug","rowNum","colNum","ViewWrappedException","ExpressionChangedAfterItHasBeenCheckedException","cb","details","ViewDestroyedException","InterpretiveAppViewInstanceFactory","_InterpretiveAppView","rootSelector","assertComponent","style_compiler_1","view_compiler_1","template_parser_1","directive_normalizer_1","runtime_metadata_1","ir","output_jit_1","output_interpreter_1","interpretive_view_1","RuntimeCompiler","_runtimeMetadataResolver","_templateNormalizer","_styleCache","_hostCacheKeys","_compiledTemplateCache","_compiledTemplateDone","resolveComponent","hostCacheKey","_loadAndCompileComponent","compiledTemplate","clearCache","cacheKey","viewDirectives","compilingComponentsPath","CompiledTemplate","_compileComponentStyles","stylesAndNormalizedViewDirMetas","normalizedViewDirMetas","childPromises","childCompilingComponentsPath","childCacheKey","childViewDirectives","childViewPipes","childIsRecursive","childComp","proxyViewFactory","_resolveStylesCompileResult","promises","_loadStylesheetDep","cssTexts","nestedCompileResultPromises","nestedCompileResult","nestedStylesArr","cssTextPromise","childInjector","contextEl","adapter","TAG_DEFINITIONS","DEFAULT_TAG_DEFINITION","Aacute","aacute","Acirc","acirc","acute","AElig","aelig","Agrave","agrave","alefsym","Alpha","alpha","amp","ang","apos","Aring","aring","asymp","Atilde","atilde","Auml","auml","bdquo","Beta","beta","brvbar","bull","cap","Ccedil","ccedil","cedil","cent","Chi","chi","circ","clubs","cong","copy","crarr","cup","curren","dagger","Dagger","darr","dArr","deg","Delta","delta","diams","Eacute","eacute","Ecirc","ecirc","Egrave","egrave","emsp","ensp","Epsilon","epsilon","equiv","Eta","eta","ETH","eth","Euml","euml","euro","exist","fnof","forall","frac12","frac14","frac34","frasl","Gamma","gamma","ge","gt","harr","hArr","hearts","hellip","Iacute","iacute","Icirc","icirc","iexcl","Igrave","igrave","image","infin","int","Iota","iota","iquest","isin","Iuml","iuml","Kappa","kappa","Lambda","lambda","laquo","larr","lArr","lceil","ldquo","le","lfloor","lowast","loz","lrm","lsaquo","lsquo","lt","macr","mdash","micro","middot","Mu","mu","nabla","nbsp","ndash","ne","ni","notin","nsub","Ntilde","ntilde","Nu","nu","Oacute","oacute","Ocirc","ocirc","OElig","oelig","Ograve","ograve","oline","Omega","omega","Omicron","omicron","oplus","ordf","ordm","Oslash","oslash","Otilde","otilde","otimes","Ouml","ouml","para","permil","perp","Phi","phi","Pi","pi","piv","plusmn","pound","prime","Prime","prod","Psi","psi","quot","radic","rang","raquo","rarr","rArr","rceil","rdquo","real","reg","rfloor","Rho","rho","rlm","rsaquo","rsquo","sbquo","Scaron","scaron","sdot","sect","shy","Sigma","sigma","sigmaf","sim","spades","sub","sube","sum","sup","sup1","sup2","sup3","supe","szlig","Tau","tau","there4","Theta","theta","thetasym","thinsp","THORN","thorn","tilde","times","trade","Uacute","uacute","uarr","uArr","Ucirc","ucirc","Ugrave","ugrave","uml","upsih","Upsilon","upsilon","Uuml","uuml","weierp","Xi","xi","Yacute","yacute","yen","yuml","Yuml","Zeta","zeta","zwj","zwnj","HtmlTagDefinition","closedByChildren","requiredParents","PARSABLE_DATA","currentParent","lcParent","area","embed","link","img","hr","br","track","wbr","thead","tbody","tfoot","tr","td","th","math","li","dt","dd","rb","rt","rtc","rp","optgroup","option","pre","listing","script","textarea","DomElementSchemaRegistry","_protoElements","_getProtoElement","elm","mappedPropName","attrToPropMap","AST","Quote","uninterpretedExpression","EmptyExpr","ImplicitReceiver","Chain","Conditional","PropertyRead","PropertyWrite","SafePropertyRead","KeyedRead","KeyedWrite","BindingPipe","LiteralPrimitive","LiteralArray","LiteralMap","Interpolation","Binary","PrefixNot","MethodCall","SafeMethodCall","FunctionCall","ASTWithSource","TemplateBinding","AstTransformer","decorators_1","lexer_1","INTERPOLATION_REGEXP","ParseException","errLocation","ctxLocation","SplitInterpolation","TemplateBindingParseResult","_lexer","_checkNoInterpolation","_stripComments","_ParseAST","parseChain","_parseBindingAst","parseSimpleBinding","SimpleExpressionChecker","check","quote","_parseQuote","prefixSeparatorIndex","isIdentifier","splitInterpolation","_findInterpolationErrorColumn","_commentStart","outerQuote","nextChar","isQuote","partInErrIdx","j","Lexer","advance","optionalCharacter","isCharacter","peekKeywordLet","isKeywordLet","peekDeprecatedKeywordVar","isKeywordDeprecatedVar","peekDeprecatedOperatorHash","isOperator","expectCharacter","optionalOperator","expectOperator","expectIdentifierOrKeyword","isKeyword","expectIdentifierOrKeywordOrString","parsePipe","parseExpression","parseConditional","inputIndex","parseLogicalOr","yes","no","parseLogicalAnd","parseEquality","parseRelational","parseAdditive","parseMultiplicative","parsePrefix","parseCallChain","parsePrimary","$PERIOD","parseAccessMemberOrMethodCall","$LPAREN","parseCallArguments","$RPAREN","isKeywordNull","isKeywordUndefined","isKeywordTrue","isKeywordFalse","elements","parseExpressionList","parseLiteralMap","toNumber","literalValue","terminator","isSafe","positionals","parseBlockContent","expectTemplateBindingKey","operatorFound","simple","newCharacterToken","Token","TokenType","Character","newIdentifierToken","newKeywordToken","Keyword","newOperatorToken","Operator","newStringToken","newNumberToken","isIdentifierStart","$_","$$","scanner","_Scanner","isIdentifierPart","isDigit","isExponentStart","$e","$E","isExponentSign","$PLUS","$BT","unescape","$n","$FF","$r","$t","$v","$VTAB","scanToken","numValue","operater","$PERCENT","$STAR","$QUESTION","$BACKSLASH","$CARET","$u","$BAR","ScannerError","scanIdentifier","scanNumber","scanCharacter","scanString","scanOperator","scanComplexOperator","one","twoCode","two","threeCode","three","KEYWORDS","parseIntAutoRadix","buffer","marker","StringJoiner","unescapedCode","hex","unescaped","createFromList","_createCompilerConfig","config_2","runtime_compiler_1","template_parser_2","component_resolver_1","runtime_compiler_2","dom_element_schema_registry_1","url_resolver_2","view_resolver_2","directive_resolver_2","pipe_resolver_2","COMPILER_PROVIDERS","ComponentResolver","dirAst","compiler_1","completer","xhr","XMLHttpRequest","responseType","onload","responseText","status","onerror","send","promise","browserPlatform","getPlatform","createPlatform","ReflectiveInjector","resolveAndCreate","browser_common_2","assertPlatform","appComponentType","customProviders","reflectionCapabilities","reflection_capabilities_1","ReflectionCapabilities","appInjector","BROWSER_APP_PROVIDERS","coreLoadAndBootstrap","browser_common_1","compiler_2","defaults","OPTION_NAMES","redocDebugMode","_Set","_options","parsedOpts","attributesMap","$1","_normalizeOptions","numberOffset","offsetHeight","opts","_Object$assign","CHANGE","INVIEW_POSITION","NEXT","BACK","INITIAL","ABOVE","BELLOW","INVIEW","_SideMenu","bindEvents","activeCatIdx","activeMethodIdx","prevOffsetY","hashScroll","activeCatCaption","activeItemCaption","hash","$el","substr","namespace","ptr","decodeURIComponent","getMethodElByOperId","getMethodElByPtr","scrollTo","mobileNavOffset","$mobileNav","clientHeight","_cancel","scrollHandler","idx","methodIdx","mobileMode","toggleMobileNav","activate","scrollToActive","subjRect","getCurrentMethodEl","catIdx","menu","activeMethodPtr","currentItem","summary","catCount","catLength","resMethodIdx","resCatIdx","prevCatIdx","_calcActiveIndexes","_calcActiveIndexes22","isScrolledDown","stable","$activeMethodHost","elementInViewPos","getElementInViewPos","changeActive","$overflowParent","$resourcesNav","viewportHeight","innerHeight","$export","toObject","isArrayIter","toLength","getIterFn","S","iter","arrayLike","step","iterator","$$len","mapfn","mapping","iterFn","is","x","y","anObject","aFunction","SPECIES","that","un","documentElement","isObject","process","defer","channel","port","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","ONREADYSTATECHANGE","run","listner","nextTick","port2","port1","onmessage","postMessage","importScripts","macrotask","Observer","MutationObserver","WebKitMutationObserver","Promise","isNode","flush","domain","exit","enter","toggle","observe","characterData","task","SAFE_CLOSING","riter","exec","skipClosing","safe","Wrapper","$","LIBRARY","strictNew","forOf","setProto","same","speciesConstructor","asap","PROMISE","P","testResolve","USE_NATIVE","P2","self","works","thenableThenGotten","setDesc","sameConstructor","getConstructor","isThenable","PromiseCapability","$$resolve","$$reject","perform","isReject","chain","ok","reaction","fail","h","isUnhandled","emit","onunhandledrejection","reason","$reject","$resolve","wrapper","executor","onFulfilled","onRejected","catch","W","capability","iterable","abrupt","remaining","each","alreadyCalled","race","getIterator","strong","getEntry","def","toJSON","Infinity","decodeJSONPointer","getRemotePath","io","getQueryPath","findId","Report","SchemaCompilation","SchemaValidation","Utils","cacheSchemaByUri","remotePath","removeFromCacheByUri","checkCacheForUri","getSchema","report","getSchemaByReference","getSchemaByUri","referenceCache","cloneDeep","root","queryPath","compileRemote","remoteReport","compileSchema","validateSchema","remoteReportIsValid","isValid","addError","lim","mergeReference","scope","isAbsoluteUri","toRemove","joinedScope","isScopeAbsolute","isScopeRelative","isRelativeUri","isRefRelative","collectReferences","__$refResolved","$schema","__$schemaResolved","SchemaCache","compileArrayOfSchemasLoop","mainReport","compiledCount","compileArrayOfSchemas","lastLoopCompiled","compiled","sch","__$missingReferences","idx2","refObj","commonErrorMessage","loadedSchema","__$compiled","isRoot","rootSchema","isValidExceptReferences","schemaReader","getSchemaReader","subreport","hasNotValid","hasError","isAbsolute","isDownloaded","ignoreUnresolvableRemotes","ignoreUnresolvableReferences","_interopRequireDefault","toInt","radix","_assertString2","_assertString","toBoolean","comparison","_toString2","_toString","pattern","RegExp","isURL","_merge2","default_url_options","protocol","auth","hostname","port_str","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","_isIP2","_isFQDN2","host_whitelist","host_blacklist","_isFQDN","_isIP","require_tld","allow_underscores","allow_trailing_dot","isMACAddress","macAddress","isIP","version","ipv4Maybe","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","ipv6Block","isAlpha","locale","_alpha","en-US","cs-CZ","de-DE","es-ES","fr-FR","nl-NL","pl-PL","pt-PT","ru-RU","tr-TR","ar","alphanumeric","englishLocales","_locale","arabicLocales","isAlphanumeric","numeric","isLowercase","isUppercase","isAscii","ascii","isFullWidth","fullWidth","isHalfWidth","halfWidth","isVariableWidth","_isFullWidth","_isHalfWidth","isMultibyte","multibyte","isSurrogatePair","surrogatePair","isInt","isFloat","float","isDecimal","decimal","toFloat","isDivisibleBy","num","_toFloat2","_toFloat","isHexColor","hexcolor","isJSON","JSON","_typeof","Symbol","isLength","surrogatePairs","isUUID","uuid",3,4,5,"isHexadecimal","hexadecimal","isMongoId","_isHexadecimal2","_isHexadecimal","getTimezoneOffset","iso8601Parts","_isISO","iso8601","timezone","sign","hours","minutes","isDate","normalizedDate","Date","timezoneOffset","timezoneDifference","getTime","day","getDate","dayOrYear","dayOrYearMatches","year","digitString","getFullYear","isAfter","date","_toDate2","original","_toDate","toDate","isBefore","isIn","array","isCreditCard","sanitized","creditCard","digit","tmpNum","shouldDouble","isISIN","checksumStr","character","isISBN","checksum","isbn10Maybe","isbn13Maybe","factor","isMobilePhone","phones","ar-SY","el-GR","en-AU","en-GB","en-HK","en-IN","en-NZ","en-ZA","en-ZM","fi-FI","ms-MY","nb-NO","nn-NO","pt-BR","vi-VN","zh-CN","zh-TW","currencyRegex","symbol","require_symbol","negative","whole_dollar_amount_without_sep","whole_dollar_amount_with_sep","thousands_separator","valid_whole_dollar_amounts","whole_dollar_amount","decimal_amount","decimal_separator","allow_negatives","parens_for_negatives","negative_sign_after_digits","negative_sign_before_digits","allow_negative_sign_placeholder","allow_space_after_symbol","allow_space_after_digits","symbol_after_digits","isCurrency","default_currency_options","isBase64","notBase64","firstPaddingChar","isDataURI","dataURI","ltrim","rtrim","escape","stripLow","keep_new_lines","_blacklist2","_blacklist","whitelist","blacklist","isWhitelisted","isByteLength","assertString","isFDQN","default_fqdn_options","tld","isEmail","default_email_options","allow_display_name","display_email","displayName","user","lower_domain","_isByteLength2","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","_isByteLength","normalizeEmail","email","default_normalize_email_options","_isEmail2","remove_extension","remove_dots","lowercase","_isEmail","_toInt","_toInt2","_toBoolean","_toBoolean2","_equals","_equals2","_contains","_contains2","_matches","_matches2","_isURL","_isURL2","_isMACAddress","_isMACAddress2","_isBoolean","_isBoolean2","_isAlpha","_isAlpha2","_isAlphanumeric","_isAlphanumeric2","_isNumeric","_isNumeric2","_isLowercase","_isLowercase2","_isUppercase","_isUppercase2","_isAscii","_isAscii2","_isFullWidth2","_isHalfWidth2","_isVariableWidth","_isVariableWidth2","_isMultibyte","_isMultibyte2","_isSurrogatePair","_isSurrogatePair2","_isInt","_isInt2","_isFloat","_isFloat2","_isDecimal","_isDecimal2","_isDivisibleBy","_isDivisibleBy2","_isHexColor","_isHexColor2","_isJSON","_isJSON2","_isNull","_isNull2","_isLength","_isLength2","_isUUID","_isUUID2","_isMongoId","_isMongoId2","_isDate","_isDate2","_isAfter","_isAfter2","_isBefore","_isBefore2","_isIn","_isIn2","_isCreditCard","_isCreditCard2","_isISIN","_isISIN2","_isISBN","_isISBN2","_isMobilePhone","_isMobilePhone2","_isCurrency","_isCurrency2","_isISO2","_isBase","_isBase2","_isDataURI","_isDataURI2","_ltrim","_ltrim2","_rtrim","_rtrim2","_trim","_trim2","_escape","_escape2","_unescape","_unescape2","_stripLow","_stripLow2","_whitelist","_whitelist2","_isWhitelisted","_isWhitelisted2","_normalizeEmail","_normalizeEmail2","validator","isFQDN","isISO8601","FormatValidators","date-time","dateTime","valid","labels","host-name","ipv4","ipv6","regex","strictUris","strict-uri","JsonValidators","multipleOf","whatIs","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","ucs2decode","minLength","additionalItems","maxItems","uniqueItems","isUniqueArray","maxProperties","keysCount","minProperties","required","requiredPropertyName","additionalProperties","patternProperties","pp","difference","idx3","assumeAdditional","dependencyName","dependencyDefinition","validate","enum","areEqual","validateResult","breakOnFirstError","anyOf","subReports","passed","subReport","oneOf","passes","maxErrors","definitions","format","formatValidatorFn","addAsyncTask","ignoreUnknownFormats","recurseArray","recurseObject","regexString","maxRefs","jsonType","customValidator","checkGlobal","isHostObject","Hash","hashDelete","hashHas","hashGet","nativeCreate","HASH_UNDEFINED","hashSet","MapCache","mapClear","__data__","mapDelete","isKeyable","assocDelete","mapGet","assocGet","mapHas","assocHas","mapSet","assocSet","assocIndexOf","eq","getNative","isNative","func","funcToString","memoize","FUNC_ERROR_TEXT","memoized","Cache","other","objectToString","funcTag","genTag","isObjectLike","reIsNative","reIsHostCtor","isSymbol","symbolTag","symbolToString","INFINITY","rePropName","reRegExpChar","reEscapeChar","objectTypes","function","freeExports","freeModule","freeGlobal","freeSelf","freeWindow","thisGlobal","arrayProto","objectProto","symbolProto","stringToPath","baseGet","isKey","castPath","reIsPlainProp","reIsDeepProp","defaultValue","INVALID_TYPE","INVALID_FORMAT","ENUM_MISMATCH","ANY_OF_MISSING","ONE_OF_MISSING","ONE_OF_MULTIPLE","NOT_PASSED","ARRAY_LENGTH_SHORT","ARRAY_LENGTH_LONG","ARRAY_UNIQUE","ARRAY_ADDITIONAL_ITEMS","MULTIPLE_OF","MINIMUM","MINIMUM_EXCLUSIVE","MAXIMUM","MAXIMUM_EXCLUSIVE","OBJECT_PROPERTIES_MINIMUM","OBJECT_PROPERTIES_MAXIMUM","OBJECT_MISSING_REQUIRED_PROPERTY","OBJECT_ADDITIONAL_PROPERTIES","OBJECT_DEPENDENCY_KEY","MIN_LENGTH","MAX_LENGTH","PATTERN","KEYWORD_TYPE_EXPECTED","KEYWORD_UNDEFINED_STRICT","KEYWORD_UNEXPECTED","KEYWORD_MUST_BE","KEYWORD_DEPENDENCY","KEYWORD_PATTERN","KEYWORD_VALUE_TYPE","UNKNOWN_FORMAT","CUSTOM_MODE_FORCE_PROPERTIES","REF_UNRESOLVED","UNRESOLVABLE_REFERENCE","SCHEMA_NOT_REACHABLE","SCHEMA_TYPE_EXPECTED","SCHEMA_NOT_AN_OBJECT","ASYNC_TIMEOUT","PARENT_SCHEMA_VALIDATION_FAILED","REMOTE_NOT_VALID","parentOrOptions","reportOptions","parentReport","asyncTasks","Errors","asyncTaskResultProcessFn","processAsyncTasks","timeout","respond","asyncTaskResult","timedOut","tasksCount","validationTimeout","getPath","returnPathAsString","getSchemaId","errorCode","schemaDescription","addCustomError","errorMessage","reportPathAsArray","schemaId","inner","JsonValidation","SchemaValidators","forceAdditional","forceProperties","schemaKey","schemaDependency","primitiveTypes","primitiveTypeStr","noEmptyStrings","noEmptyArrays","forceItems","forceMinItems","forceMaxItems","forceMinLength","forceMaxLength","validateArrayOfSchemas","__$validated","hasParentSchema","noTypeless","schemas","noExtraKeywords","pedanticCheck","tmpSchema","what","json1","json2","keys1","keys2","indexes","l","bigSet","subSet","src","cidx","visited","cloned","extra","schemaArray","positiveInteger","positiveIntegerDefault0","simpleTypes","stringArray","links","fragmentResolution","media","binaryEncoding","pathStart","linkDescription","rel","targetSchema","mediaType","encType","ZSchema","setRemoteReference","Draft4Schema","Draft4HyperSchema","defaultOptions","strictMode","asyncTimeout","lastReport","foundError","schemaName","validated","schemaPath","getLastError","getLastErrors","getMissingReferences","reference","getMissingRemoteReferences","missingReferences","missingRemoteReferences","remoteReference","getResolvedSchema","cleanup","typeOf","___$visited","setSchemaReader","registerFormat","formatName","validatorFunction","unregisterFormat","getRegisteredFormats","getDefaultOptions","^x-","swagger","basePath","schemes","consumes","produces","paths","parameters","security","securityDefinitions","externalDocs","termsOfService","contact","license","^/","parameterDefinitions","responseDefinitions","mimeType","deprecated","pathItem","put","post","delete","patch","^([0-9]{3})$|^(default)$","responseValue","collectionFormat","vendorExtension","bodyParameter","in","headerParameterSubSchema","queryParameterSubSchema","allowEmptyValue","formDataParameterSubSchema","pathParameterSubSchema","nonBodyParameter","parameter","discriminator","readOnly","xml","example","fileSchema","primitivesItems","securityRequirement","wrapped","basicAuthenticationSecurity","apiKeySecurity","oauth2ImplicitSecurity","flow","scopes","authorizationUrl","oauth2PasswordSecurity","tokenUrl","oauth2ApplicationSecurity","oauth2AccessCodeSecurity","oauth2Scopes","mediaTypeList","parametersList","schemesList","collectionFormatWithMulti","jsonReference","api","util","swaggerSchema","formatZSchemaError","ono","syntax","initializeZSchema","validateSpec","pathName","pathId","validatePath","swaggerMethods","operationName","validateParameters","responseName","responseId","validateResponse","operationParams","checkForDuplicates","reduce","combinedParams","duplicate","validateBodyParameters","validatePathParameters","validateParameterTypes","bodyParams","formParams","placeholders","swaggerParamRegExp","validTypes","parameterId","schemaTypes","outer","headerName","headerId","inherits","ParserOptions","$RefParserOptions","order","spec","Buffer","allowEmpty","canParse","isBuffer","YAML","TEXT_REGEXP","encoding","BINARY_REGEXP","_nodeRequire","readFileSync","address","onreadystatechange","readyState","fs","canRead","isFileSystemPath","toFileSystemPath","readFile","checkTypeSupport","fetch","ReadableByteStream","blobConstructor","Blob","ArrayBuffer","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","vbArray","VBArray","stream","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","IncomingMessage","reader","_destroyed","Readable","_mode","rawHeaders","trailers","rawTrailers","_fetchResponse","statusMessage","statusText","_it","getReader","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","_read","_onXHRProgress","responseBody","toArray","newData","Uint8Array","MSStreamReader","onprogress","byteLength","readAsArrayBuffer","ReadableState","Duplex","objectMode","readableObjectMode","hwm","highWaterMark","defaultHwm","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","StringDecoder","_readableState","readable","Stream","readableAddChunk","state","chunk","addToFront","er","chunkInvalid","onEofChunk","skipAdd","write","emitReadable","maybeReadMore","needMoreData","computeNewHighWaterMark","MAX_HWM","howMuchToRead","processNextTick","emitReadable_","maybeReadMore_","pipeOnDrain","EElistenerCount","nReadingNextTick","resume","resume_","fromList","ret","list","stringMode","buf","cpy","endReadable","endReadableNT","xs","f","emitter","debugUtil","debuglog","isPaused","setEncoding","enc","nOrig","doRead","dest","pipeOpts","onunpipe","onend","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","_writableState","needDrain","listenerCount","pause","unpipe","doEnd","stdout","stderr","endFn","once","_events","dests","ev","addListener","wrap","paused","_fromList","deprecate","warned","trace","localStorage","nop","WriteReq","WritableState","writableObjectMode","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","CorkedRequest","Writable","writable","_write","writev","_writev","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","doWrite","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","asyncWrite","afterWrite","onwriteDrain","finishMaybe","holder","prefinish","need","endWritable","browser","internalUtil","getBuffer","cork","uncork","setDefaultEncoding","allowHalfOpen","onEndNT","objectKeys","TransformState","afterTransform","needTransform","transforming","writechunk","writeencoding","ts","_transformState","rs","Transform","_transform","_flush","ws","PassThrough","env","READABLE_STREAM","byteOffset","arrayCopy","decideMode","preferBinary","statusValid","toArrayBuffer","ClientRequest","_opts","_body","_headers","setHeader","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","credentials","withCredentials","_connect","setRequestHeader","_response","abort","flushHeaders","setNoDelay","setSocketKeepAlive","extend","100","101","102","200","201","202","203","204","205","206","207","208","226","300","301","302","303","304","305","307","308","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","422","423","424","425","426","428","429","431","500","501","502","503","504","505","506","507","508","509","510","511","statusCodes","http","request","defaultProtocol","search","req","Agent","defaultMaxSockets","STATUS_CODES","METHODS","_maxListeners","isUndefined","defaultMaxListeners","setMaxListeners","newListener","g","fired","removeAllListeners","assertEncoding","isBufferEncoding","passThroughWrite","utf16DetectIncompleteChar","charReceived","charLength","base64DetectIncompleteChar","isEncoding","surrogateSize","detectIncompleteChar","charBuffer","charStr","available","cr","isNullOrUndefined","roundUpToNextPowerOf2","EE","cbs","isRegExp","isError","didOnEnd","_isStdio","parseHeaders","Response","capable","streaming","status2","getResponse","respType","responseBlob","handle","_emitData","respBody","InvalidCharacterError","btoa","block","atob","bs","bc","Base64","Request","isSafeRequestHeader","__aborted","isXHR2Compatible","FormData","xhrHttp","ActiveXObject","axs","ax","ax_","https","download","u","httpOptions","redirects","redirectTo","isHttp","canValidate","resolved","isMergeable","sourceSetting","targetSetting","jsonParser","yamlParser","textParser","binaryParser","fileResolver","httpResolver","zschemaValidator","yaml","binary","external","circular","zschema","$Refs","_$refs","_root$Ref","getPaths","$refs","types","pathType","encoded","decoded","$Ref","exists","withoutHash","stripHash","_add","_get$Ref","getResult","extension","MAX_SAFE_INTEGER","lastError","runNextPlugin","onSuccess","onError","lib$es6$promise$utils$$objectOrFunction","lib$es6$promise$utils$$isFunction","lib$es6$promise$asap$$setScheduler","scheduleFn","lib$es6$promise$asap$$customSchedulerFn","lib$es6$promise$asap$$setAsap","asapFn","lib$es6$promise$asap$$asap","lib$es6$promise$asap$$useNextTick","lib$es6$promise$asap$$flush","lib$es6$promise$asap$$useVertxTimer","lib$es6$promise$asap$$vertxNext","lib$es6$promise$asap$$useMutationObserver","iterations","observer","lib$es6$promise$asap$$BrowserMutationObserver","lib$es6$promise$asap$$useMessageChannel","lib$es6$promise$asap$$useSetTimeout","lib$es6$promise$asap$$len","lib$es6$promise$asap$$queue","lib$es6$promise$asap$$attemptVertx","vertx","runOnLoop","runOnContext","lib$es6$promise$then$$then","onFulfillment","onRejection","_state","lib$es6$promise$$internal$$FULFILLED","lib$es6$promise$$internal$$REJECTED","lib$es6$promise$$internal$$noop","_result","lib$es6$promise$$internal$$invokeCallback","lib$es6$promise$$internal$$subscribe","lib$es6$promise$promise$resolve$$resolve","Constructor","lib$es6$promise$$internal$$resolve","lib$es6$promise$$internal$$selfFulfillment","lib$es6$promise$$internal$$cannotReturnOwn","lib$es6$promise$$internal$$getThen","lib$es6$promise$$internal$$GET_THEN_ERROR","lib$es6$promise$$internal$$tryThen","fulfillmentHandler","rejectionHandler","lib$es6$promise$$internal$$handleForeignThenable","thenable","sealed","lib$es6$promise$$internal$$fulfill","lib$es6$promise$$internal$$reject","_label","lib$es6$promise$$internal$$handleOwnThenable","lib$es6$promise$$internal$$handleMaybeThenable","maybeThenable","lib$es6$promise$then$$default","lib$es6$promise$promise$resolve$$default","lib$es6$promise$$internal$$publishRejection","_onerror","lib$es6$promise$$internal$$publish","lib$es6$promise$$internal$$PENDING","_subscribers","subscribers","settled","detail","lib$es6$promise$$internal$$ErrorObject","lib$es6$promise$$internal$$tryCatch","lib$es6$promise$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","lib$es6$promise$$internal$$initializePromise","lib$es6$promise$promise$all$$all","lib$es6$promise$enumerator$$default","lib$es6$promise$promise$race$$race","lib$es6$promise$utils$$isArray","lib$es6$promise$promise$reject$$reject","lib$es6$promise$promise$$needsResolver","lib$es6$promise$promise$$needsNew","lib$es6$promise$promise$$Promise","_id","lib$es6$promise$promise$$counter","lib$es6$promise$enumerator$$Enumerator","_instanceConstructor","_input","_remaining","_enumerate","_validationError","lib$es6$promise$polyfill$$polyfill","local","lib$es6$promise$promise$$default","lib$es6$promise$utils$$_isArray","lib$es6$promise$asap$$scheduleFlush","lib$es6$promise$asap$$browserWindow","lib$es6$promise$asap$$browserGlobal","lib$es6$promise$asap$$isNode","lib$es6$promise$asap$$isWorker","Uint8ClampedArray","lib$es6$promise$promise$all$$default","lib$es6$promise$promise$race$$default","lib$es6$promise$promise$reject$$default","_setScheduler","_setAsap","_asap","_eachEntry","_settledAt","_willSettleAt","enumerator","lib$es6$promise$polyfill$$default","lib$es6$promise$umd$$ES6Promise","polyfill","getExtension","parseFile","parser","SyntaxError","resolvers","onParsed","allParsers","filteredParsers","parsers","resolveExternal","crawl","isExternal$Ref","resolve$Ref","keyPath","Pointer","resolvedPath","bundle","inventory","remap","pathFromRoot","is$Ref","inventory$Ref","defs","keyPathFromRoot","$refParent","$refKey","$refPath","depth","getHash","extended","isExtended$Ref","Mark","common","getSnippet","tail","snippet","repeat","compact","where","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","implicitTypes","compiledImplicit","typeMap","compiledTypeMap","lineStart","lineIndent","documents","generateError","YAMLException","throwError","throwWarning","captureSegment","checkJson","_position","_length","_character","PATTERN_NON_PRINTABLE","mergeMappings","destination","overridableKeys","sourceKeys","quantity","_hasOwnProperty","storeMappingPair","keyTag","keyNode","valueNode","readLineBreak","ch","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","simpleEscapeCheck","simpleEscapeMap","readFlowCollection","isPair","isExplicitPair","isMapping","readNext","_tag","_anchor","anchor","anchorMap","composeNode","CONTEXT_FLOW_IN","readBlockScalar","folding","chomping","CHOMPING_CLIP","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","CHOMPING_KEEP","CHOMPING_STRIP","readBlockSequence","detected","CONTEXT_BLOCK_IN","readBlockMapping","flowIndent","allowCompact","atExplicitKey","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_OUT","readTagProperty","tagHandle","isVerbatim","isNamed","PATTERN_TAG_HANDLE","PATTERN_FLOW_INDICATORS","PATTERN_TAG_URI","tagMap","readAnchorProperty","readAlias","alias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","blockIndent","indentStatus","atNewLine","hasContent","construct","readDocument","directiveArgs","documentStart","hasDirectives","checkLineBreaks","directiveHandlers","PATTERN_NON_ASCII_LINE_BREAKS","loadDocuments","loadAll","safeLoadAll","DEFAULT_SAFE_SCHEMA","safeLoad","major","minor","TAG","compileStyleMap","styleAliases","encodeHex","skipInvalid","flowLevel","isNothing","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","explicitTypes","compiledExplicit","duplicates","usedDuplicates","indentString","spaces","ind","generateNextLine","testImplicitResolving","CHAR_SPACE","CHAR_TAB","isPrintable","isPlainSafe","CHAR_COMMA","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_LEFT_CURLY_BRACKET","CHAR_RIGHT_CURLY_BRACKET","CHAR_COLON","CHAR_SHARP","isPlainSafeFirst","CHAR_MINUS","CHAR_QUESTION","CHAR_AMPERSAND","CHAR_ASTERISK","CHAR_EXCLAMATION","CHAR_VERTICAL_LINE","CHAR_GREATER_THAN","CHAR_SINGLE_QUOTE","CHAR_DOUBLE_QUOTE","CHAR_PERCENT","CHAR_COMMERCIAL_AT","CHAR_GRAVE_ACCENT","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","STYLE_DOUBLE","CHAR_LINE_FEED","STYLE_FOLDED","STYLE_LITERAL","STYLE_PLAIN","STYLE_SINGLE","writeScalar","iskey","dump","testAmbiguity","DEPRECATED_BOOLEANS_SYNTAX","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","moreIndented","lineRe","nextLF","foldLine","prevMoreIndented","breakRe","curr","escapeSeq","ESCAPE_SEQUENCES","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKey","objectValue","pairBuffer","objectKeyList","writeBlockMapping","explicitPair","detectType","explicit","typeList","instanceOf","represent","defaultStyle","duplicateIndex","objectOrArray","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","compileList","exclude","include","includedSchema","currentType","previousType","previousIndex","compileMap","collectType","Schema","definition","implicit","loadKind","DEFAULT","every","resolveYamlNull","constructYamlNull","canonical","uppercase","camelcase","resolveYamlBoolean","constructYamlBoolean","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","constructYamlInteger","digits","isInteger","isNegativeZero","octal","subject","sequence","cycle","NEGATIVE_INFINITY","resolveYamlFloat","YAML_FLOAT_PATTERN","constructYamlFloat","POSITIVE_INFINITY","representYamlFloat","SCIENTIFIC_WITHOUT_DOT","resolveYamlTimestamp","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","constructYamlTimestamp","month","hour","minute","second","tz_hour","tz_minute","fraction","UTC","setTime","representYamlTimestamp","toISOString","resolveYamlMerge","resolveYamlBinary","bitlen","BASE64_MAP","constructYamlBinary","tailbits","bits","NodeBuffer","representYamlBinary","isBinary","_require","resolveYamlOmap","pair","pairKey","pairHasKey","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","resolveJavascriptRegExp","regexp","constructJavascriptRegExp","representJavascriptRegExp","multiline","ignoreCase","compileStyleAliases","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","resolveJavascriptFunction","esprima","range","constructJavascriptFunction","representJavascriptFunction","mark","captureStackTrace","loader","dumper","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","MINIMAL_SCHEMA","SAFE_SCHEMA","DEFAULT_SCHEMA","scan","compose","addConstructor","reviver","replacer","space","$RefParser","normalizeArgs","Options","maybe","fromFileSystemPath","cwd","me","isAllowed$Ref","resolvedValue","merged","lookup","decode","elt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","L","placeHolders","Arr","uint8ToBase64","uint8","encode","tripletToBase64","temp","extraBytes","toByteArray","fromByteArray","base64js","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","pow","abs","LN2","typedArraySupport","Bar","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","fromNumber","fromString","fromObject","allocate","fromBuffer","fromArray","fromTypedArray","fromArrayBuffer","fromArrayLike","fromJsonObject","_augment","__proto__","_isBuffer","fromPool","poolSize","rootParent","RangeError","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","binarySlice","base64Slice","utf16leSlice","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","binaryWrite","base64Write","ucs2Write","utf16leToBytes","base64","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","stringtrim","INVALID_BASE64_RE","units","leadSurrogate","byteArray","hi","lo","dst","INSPECT_MAX_BYTES","inspect","arrayIndexOf","foundIndex","readUInt8","writeUInt8","swap","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","_set","fill","BP","toLocaleString","resolveIf$Ref","slashes","tildes","escapedSlash","escapedTilde","decodeURI","ctor","superCtor","super_","TempCtor","seen","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","numLinesEst","cur","pad","time","getHours","getMinutes","getSeconds","months","getMonth","formatRegExp","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","origin","Klass","formattedMessage","formatter","newError","extendError","extendToJSON","targetError","sourceError","extendStack","errorToJSON","errorToString","omitVendorSpecificProperties","vendorSpecificErrorProperties","hasLazyStack","extendStackProperty","supportsLazyStack","descriptor","sourceStack","targetStack","eval","EvalError","ReferenceError","URIError","short","long","plural","ceil","selectColor","prevColor","disabled","enabled","prevTime","diff","useColors","color","coerce","formatters","formatArgs","logFn","namespaces","save","skips","names","disable","humanize","firebug","exception","table","lastC","storage","removeItem","localstorage","chrome","mapDomain","regexSeparators","ucs2encode","stringFromCharCode","basicToDigit","digitToBasic","flag","adapt","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","punycode","not-basic","invalid-input","ucs2","amd","qs","maxKeys","kstr","vstr","stringifyPrimitive","ks","Url","urlParse","parseQueryString","slashesDenoteHost","urlFormat","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","ftp","gopher","http:","https:","ftp:","gopher:","file:","querystring","rest","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","domainArray","newOut","ae","esc","qm","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isWindows","platform","forwardSlashPattern","urlEncodePatterns","urlDecodePatterns","getProtocol","lastDot","hashIndex","keepFileProtocol","isFileUrl","dereferenced","dereference$Ref","foundCircularReference","directCircular","dereferencedValue","SwaggerParser","supportedSwaggerVersions","circular$RefOption","toInteger","defined","TO_STRING","$at","iterated","_t","point","addToUnscopables","toIObject","_k","Arguments","NodeList","HTMLCollection","setToStringTag","IteratorPrototype","NAME","redefine","hide","$iterCreate","getProto","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","core","DESCRIPTORS","KEY","redefineAll","$iterDefine","ID","$has","setSpecies","isExtensible","SIZE","fastKey","_f","IS_MAP","ADDER","_l","callbackfn","setStrong","bitmap","createDesc","stat","fails","IS_WEAK","_c","IS_ADDER","ArrayProto","getIteratorMethod","SHARED","store","px","random","uid","cof","ARG","T","callee","_instance","_schema","_Promise","endsWith","methodPtr","resolveRefs","injectPointers","dirName","pathParamsPtr","methodParamsPtr","methodParams","_step","_iterator","_iteratorNormalCompletion","x-traitTag","tag2MethodMapping","_Map","definedTags","_step2","_iterator2","_iteratorNormalCompletion2","_step3","_iterator3","_iteratorNormalCompletion3","_step4","_iterator4","_iteratorNormalCompletion4","methodPointer","compile","methodSummary","_step5","_iterator5","_iteratorNormalCompletion5","tagDetails","defPointer","globalDefs","_step6","_iterator6","_iteratorNormalCompletion6","defName","subTypes","findIndex","subType","$keys","_self","WorkerGlobalScope","Prism","languages","redef","inside","before","insert","grammar","newToken","DFS","highlightAll","async","highlightElement","language","hooks","Worker","worker","highlightedCode","immediateClose","highlight","strarr","tokenloop","patterns","lookbehind","lookbehindLength","after","aliases","markup","prolog","doctype","cdata","punctuation","attr-value","attr-name","mathml","atrule","important","style-attr","clike","class-name","keyword","template-string","interpolation-punctuation","js","fileHighlight","Extensions","py","ps1","psm1","actionscript","macro","constant","cpp","csharp","preprocessor","php","shell-comment","package","tokenStack","backupCode","coffeescript","class-member","multiline-comment","block-regex","inline-javascript","multiline-string","go","haskell","import_statement","hvariable","java","lua","matlab","perl","filehandle","vstring","python","triple-quoted-string","percent-operator","ellipsis","ruby","insideString","bash","shebang","swift","objectivec","scala","marked","rules","normal","gfm","tables","InlineLexer","inline","breaks","pedantic","opt","noop","pending","lex","escaped","silent","newline","fences","heading","nptable","lheading","blockquote","paragraph","bullet","lexer","bq","loose","align","cells","ordered","smartLists","sanitize","sanitizer","autolink","reflink","nolink","em","del","_inside","_href","mangle","inLink","outputLink","codespan","smartypants","langPrefix","raw","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","reverse","tok","parseText","row","cell","setOptions","inlineLexer","InvalidPipeArgumentException","KeysPipe","ValuesPipe","JsonPointerEscapePipe","MarkedPipe","langMap","_BaseException","c++","c#","objective-c","shell","viml","safeConcat","snapshot","commonInputs","JsonPipe","AsyncPipe","componentDecorator","prepareModel","dereferencedCache","resolvedRef","into","subSchema","omitParent","errMessage","_into$required","_toConsumableArray","traverse","invalid_pipe_argument_exception_1","ObservableStrategy","createSubscription","updateLatestValue","onDestroy","PromiseStrategy","_promiseStrategy","_observableStrategy","_ref","_latestValue","_latestReturnedValue","_subscription","_obj","_strategy","_dispose","_subscribe","WrappedValue","_selectStrategy","_updateLatestValue","isPromise","isObservable","UpperCasePipe","LowerCasePipe","SlicePipe","intl_1","defaultLocale","DatePipe","fromMillis","_ALIASES","DateFormatter","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","digitCondition","nameCondition","extractComponents","era","weekday","hour12","timeZoneName","NumberFormatStyle","NumberFormatter","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","currency","currencyAsSymbol","intlOptions","Currency","currencyDisplay","Intl","NumberFormat","dateFormatterCache","DateTimeFormat","_re","NumberPipe","_format","minInt","minFraction","maxFraction","DecimalPipe","Decimal","PercentPipe","Percent","CurrencyPipe","currencyCode","symbolDisplay","ReplacePipe","replacement","_supportedInput","_supportedPattern","_supportedReplacement","rgxPattern","interpolationExp","I18nPluralPipe","pluralMap","valueStr","isStringMap","I18nSelectPipe","async_pipe_1","uppercase_pipe_1","lowercase_pipe_1","json_pipe_1","slice_pipe_1","date_pipe_1","number_pipe_1","replace_pipe_1","i18n_plural_pipe_1","i18n_select_pipe_1","common_pipes_1","control_container_1","ng_control_1","control_value_accessor_1","shared_1","validators_1","controlNameBinding","NgControl","forwardRef","NgControlName","_validators","_asyncValidators","valueAccessors","update","_added","valueAccessor","selectValueAccessor","formDirective","addControl","isPropertyUpdated","viewModel","model","updateModel","removeControl","viewToModelUpdate","callEmit","controlPath","composeValidators","composeAsyncValidators","getControl","Host","SkipSelf","Self","NG_VALIDATORS","NG_ASYNC_VALIDATORS","NG_VALUE_ACCESSOR","ControlContainer","formControlBinding","NgFormControl","_isControlChanged","setUpControl","form","updateValueAndValidity","emitEvent","updateValue","model_1","NgModel","_control","Control","controlGroupProvider","NgControlGroup","addControlGroup","removeControlGroup","getControlGroup","formDirectiveProvider","NgFormModel","ngSubmit","_checkFormPresent","Validators","asyncValidator","composeAsync","onlySelf","_updateDomValue","ctrl","setUpControlGroup","onSubmit","writeValue","(submit)","abstract_control_directive_1","AbstractControlDirective","normalizeValidator","normalizeAsyncValidator","_throwError","registerOnChange","emitModelToViewChange","markAsDirty","registerOnTouched","markAsTouched","validators","normalize_validator_1","isFirstChange","looseIdentical","defaultAccessor","builtinAccessor","customAccessor","hasConstructor","default_value_accessor_1","DefaultValueAccessor","checkbox_value_accessor_1","CheckboxControlValueAccessor","number_value_accessor_1","NumberValueAccessor","select_control_value_accessor_1","SelectControlValueAccessor","radio_control_value_accessor_1","RadioControlValueAccessor","NgForm","asyncValidators","ControlGroup","controls","scheduleMicrotask","container","_findContainer","DEFAULT_VALUE_ACCESSOR","_renderer","_elementRef","onChange","onTouched","normalizedValue","(input)","(blur)","CHECKBOX_VALUE_ACCESSOR","(change)","NUMBER_VALUE_ACCESSOR","NgControlStatus","cd","_cd","untouched","touched","pristine","dirty","[class.ng-untouched]","[class.ng-touched]","[class.ng-pristine]","[class.ng-dirty]","[class.ng-valid]","[class.ng-invalid]","_buildValueString","_extractId","valueString","SELECT_VALUE_ACCESSOR","_optionMap","_idCounter","_getOptionId","_getOptionValue","_registerOption","MapWrapper","NgSelectOption","_element","_select","_setElementValue","Input","ng_control_name_1","ng_form_control_1","ng_model_1","ng_control_group_1","ng_form_model_1","ng_form_1","ng_control_status_1","ng_control_name_2","ng_form_control_2","ng_model_2","ng_control_group_2","ng_form_model_2","ng_form_2","default_value_accessor_2","checkbox_value_accessor_2","radio_control_value_accessor_2","RadioButtonState","number_value_accessor_2","ng_control_status_2","select_control_value_accessor_2","validators_2","RequiredValidator","MinLengthValidator","MaxLengthValidator","PatternValidator","FORM_DIRECTIVES","_convertToPromise","toPromise","_executeValidators","_executeAsyncValidators","_mergeErrors","arrayOfErrors","minlength","requiredLength","actualLength","maxlength","requiredPattern","actualValue","nullValidator","presentValidators","REQUIRED","REQUIRED_VALIDATOR","MIN_LENGTH_VALIDATOR","_validator","MAX_LENGTH_VALIDATOR","PATTERN_VALIDATOR","isControl","AbstractControl","_find","ControlArray","at","toObservable","fromPromise","VALID","INVALID","PENDING","_pristine","_touched","_value","_status","_errors","_valueChanges","_statusChanges","markAsPending","setParent","_updateValue","_runValidator","_calculateStatus","_runAsyncValidator","_cancelExistingSubscription","obs","_asyncValidationSubscription","setErrors","_updateControlsErrors","getError","_initObservables","_anyControlsHaveStatus","_onChange","optionals","_optionals","_setParentForControls","controlName","_included","_reduceValue","_reduceChildren","acc","initValue","removeAt","modelModule","FormBuilder","controlsConfig","_reduceControls","_createControl","controlConfig","RADIO_VALUE_ACCESSOR","RadioControlRegistry","_accessors","accessor","indexToRemove","select","fireUncheck","_registry","_injector","_fn","form_builder_1","form_builder_2","FORM_BINDINGS","__require","__exports","__module","_retrieveGlobal","prepareGlobal","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_initialClasses","_applyInitialClasses","_applyClasses","_rawClass","_cleanupClasses","_iterableDiffer","_keyValueDiffer","isListLikeIterable","_applyIterableChanges","_applyKeyValueChanges","rawClassVal","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","previousValue","isCleanup","expVal","IterableDiffers","KeyValueDiffers","NgFor","_viewContainer","_templateRef","_cdr","_ngForOf","_differ","_ngForTrackBy","getTypeNameForDebugging","_applyChanges","recordViewTuples","removedRecord","RecordViewTuple","forEachMovedItem","movedRecord","insertTuples","_bulkRemove","addedRecord","_bulkInsert","_perViewChange","ilen","forEachIdentityChange","currentIndex","tuples","movedTuples","tuple","detach","createEmbeddedView","NgIf","_prevCondition","newCondition","NgTemplateOutlet","_viewContainerRef","templateRef","_insertedViewRef","NgStyle","_differs","_rawStyle","_setStyle","DependencyMetadata","_selector","ViewQueryMetadata","_inputs","_properties","_outputs","_providers","_bindings","InjectableMetadata","viewBindings","_viewProviders","_viewBindings","_pure","directives_2","makeDecorator","View","makeParamDecorator","Query","ContentChildren","makePropDecorator","ContentChild","ViewChild","ViewQuery","Output","HostBinding","HostListener","WrappedException","exception_handler_1","NgZoneError","_dirty","_results","_emitter","getSymbolIterator","reset","notifyOnChanges","setDirty","_appElement","_viewFactory","change_detector_ref_1","ViewRef","EmbeddedViewRef","variableName","checkNoChanges","reattach","query_list_1","dynamic_component_loader_1","ComponentRef","asNativeElements","debugEls","_queryElementChildren","_queryNodeChildren","nativeNode","_nativeNodeToDebugNode","getAllDebugNodes","_debugInfo","inject","childIndex","newChildren","siblingIndex","previousChildren","nextChildren","queryAll","queryAllNodes","triggerEventHandler","CollectionChangeRecord","KeyValueChangeRecord","PLATFORM_CORE_PROVIDERS","Reflector","TestabilityRegistry","stackTrace","NgZoneImpl","onEnter","onLeave","setMicrotask","setMacrotask","Zone","fork","isAngularZone","onInvokeTask","delegate","applyThis","applyArgs","invokeTask","onInvoke","onHasTask","hasTaskState","hasTask","microTask","macroTask","onHandleError","handleError","isInAngularZone","runInner","runInnerGuarded","runOuter","ng_zone_impl_1","ng_zone_impl_2","enableLongStackTrace","_hasPendingMicrotasks","_hasPendingMacrotasks","_isStable","_nesting","_onUnstable","_onMicrotaskEmpty","_onStable","_onErrorEvents","_zoneImpl","_checkStable","hasMicrotasks","hasMacrotasks","assertInAngularZone","assertNotInAngularZone","_testabilityGetter","_ngZone","_pendingCount","_isZoneStable","_didWork","_callbacks","_watchAngularEvents","onUnstable","onStable","scheduleMicroTask","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","hasPendingMacrotasks","getPendingRequestCount","_applications","registerApplication","_NoopGetTestability","_warnImpl","createNgZone","_inPlatformCreate","_platform","disposed","lockMode","PlatformRef","requiredToken","disposePlatform","coreBootstrap","componentFactory","componentResolver","waitForAsyncInitializers","PlatformRef_","_disposeListeners","_disposed","inits","registerDisposeListener","addApplication","app","_applicationDisposed","ApplicationRef_","_bootstrapListeners","_rootComponents","_rootComponentTypes","_changeDetectorRefs","_runningTick","_enforceNoNewChanges","_asyncInitDonePromise","asyncInitDonePromise","APP_INITIALIZER","asyncInitResults","initResult","_asyncInitDone","onMicrotaskEmpty","registerBootstrapListener","registerChangeDetector","unregisterChangeDetector","_unloadComponent","_loadComponent","componentRef","_tickScope","detector","APPLICATION_CORE_PROVIDERS","PromiseCompleter","rej","catchError","success","rejection","computation","Subscription_1","SubjectSubscription","isUnsubscribed","unsubscribe","observers","subscriberIndex","Subscription","ObjectUnsubscribedError","Observable_1","Subscriber_1","SubjectSubscription_1","rxSubscriber_1","throwError_1","ObjectUnsubscribedError_1","Subject","isStopped","hasErrored","dispatching","hasCompleted","lift","subscriber","errorValue","complete","throwIfUnsubscribed","_unsubscribe","_next","_error","_complete","asObservable","observable","SubjectObservable","_finalNext","_finalError","_finalComplete","$$rxSubscriber","Subscriber","Observable","dispatchNext","dispatchError","root_1","PromiseObservable","scheduler","_isScalar","schedule","PromiseCtor","Rx","tryCatcher","tryCatchTarget","errorObject_1","errorObject","tryCatch","UnsubscriptionError","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","clearTimeout","Item","fun","argv","versions","chdir","umask","isArray_1","isObject_1","isFunction_1","tryCatch_1","UnsubscriptionError_1","hasErrors","_subscriptions","trial","teardown","EMPTY","subscriptionIndex","Observer_1","destinationOrNext","syncErrorValue","syncErrorThrown","syncErrorThrowable","SafeSubscriber","observerOrNext","_context","__tryOrSetError","__tryOrUnsub","toSubscriber","nextOrObserver","toSubscriber_1","$$observable","sink","Subject_1","PromiseObservable_1","toPromise_1","Subject_2","TimerWrapper","millis","setInterval","clearInterval","onNext","hasSubscribers","callNext","callError","callComplete","isAsync","_isAsync","generatorOrNext","schedulerFn","errorFn","completeFn","detectWTF","wtf","createScope","signature","leave","leaveScope","startTimeRange","rangeType","action","beginTimeRange","endTimeRange","noopScope","arg0","arg1","impl","wtfEnabled","wtfStartTimeRange","wtfEndTimeRange","ViewContainerRef_","_createComponentInContainerScope","_insertScope","_removeScope","_detachScope","views","createComponent","contextInjector","viewRef_","attachView","internalView","parentIndex","componentConstructorViewQueries","nestedViewClass","refRenderNode","prevView","lastRootNode","oldValue","currValue","originalException","originalStack","factories","copied","OptionalMetadata","DefaultIterableDifferFactory","cdRef","trackByFn","DefaultIterableDiffer","trackByIdentity","_trackByFn","_collection","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","forEachPreviousItem","_nextPrevious","_nextAdded","_nextMoved","_nextRemoved","_nextIdentityChange","collection","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","nextRecord","previousRecord","_prev","_remove","_moveAfter","_reinsertAfter","_addAfter","reinsertRecord","_addToMoves","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","previous","moves","removals","identityChanges","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","afterIndex","getMapKey","recordList","kv","DefaultKeyValueDifferFactory","isJsObject","DefaultKeyValueDiffer","_records","_mapHead","_previousMapHead","_changesHead","_changesTail","_nextChanged","createFromPairs","records","oldSeqRecord","lastOldSeqRecord","lastNewSeqRecord","seqChanged","_forEach","newSeqRecord","_addToChanges","_removeFromSeq","_addToAdditions","_isInRemovals","_removeFromRemovals","lastRecord","rec","CHANGE_DETECTOR_STATE_VALUES","areIterablesEqual","lang_2","hasWrappedValue","unwrap","iterable_differs_1","default_iterable_differ_1","keyvalue_differs_1","default_keyvalue_differ_1","default_keyvalue_differ_2","default_iterable_differ_2","iterable_differs_2","keyvalue_differs_2","change_detection_util_1","keyValDiff","iterableDiff","defaultIterableDiffers","defaultKeyValueDiffers","RenderDebugInfo","extractAnnotation","applyParams","fnOrArray","annoLength","paramsAnnotations","ii","paramAnnotations","defineMetadata","clsDef","_nextClassId","annotationCls","chainFn","DecoratorFactory","objOrType","annotationInstance","chainAnnotation","TypeDecorator","cls","getOwnMetadata","ParamDecoratorFactory","ParamDecorator","unusedKey","getMetadata","annotationsForParam","decoratorCls","PropDecoratorFactory","decoratorInstance","InjectMetadata","_THROW_IF_NOT_FOUND","_mapProviders","_proto","numberOfProviders","getProviderAtIndex","reflective_key_1","_MAX_CONSTRUCTION_COUNTER","UNDEFINED","ReflectiveProtoInjectorInlineStrategy","protoEI","provider0","provider1","provider2","provider3","provider4","provider5","provider6","provider7","provider8","provider9","keyId0","keyId1","keyId2","keyId3","keyId4","keyId5","keyId6","keyId7","keyId8","keyId9","OutOfBoundsError","createInjectorStrategy","ReflectiveInjectorInlineStrategy","ReflectiveProtoInjectorDynamicStrategy","protoInj","keyIds","ei","ReflectiveInjectorDynamicStrategy","ReflectiveProtoInjector","fromResolvedProviders","protoStrategy","obj0","obj1","obj2","obj3","obj4","obj5","obj6","obj7","obj8","obj9","resetConstructionCounter","_constructionCounter","instantiateProvider","_new","getObjByKeyId","keyId","inj","getObjAtIndex","getMaxNumberOfObjects","objs","resolveReflectiveProviders","ResolvedReflectiveProviders","ReflectiveInjector_","fromResolvedBindings","debugContext","resolveAndCreateChild","createChildFromResolved","resolveAndInstantiate","instantiateResolved","_debugContext","_getByKey","ReflectiveKey","getAt","_instantiateProvider","CyclicDependencyError","resolvedFactories","_instantiate","ResolvedReflectiveFactory","d10","d11","d12","d13","d14","d15","d16","d17","d18","d19","_getByReflectiveDependency","AbstractProviderError","InstantiationError","addKey","INJECTOR_KEY","_getByKeySelf","_getByKeyDefault","_throwOrNull","NoProviderError","inj_","ProviderBuilder","_multi","Binding","toClass","toValue","toAlias","toFactory","isType","aliasToken","resolveReflectiveFactory","factoryFn","resolvedDeps","forward_ref_1","_dependenciesFor","aliasInstance","ReflectiveDependency","fromKey","_EMPTY_LIST","resolveReflectiveProvider","ResolvedReflectiveProvider_","normalized","mergeResolvedReflectiveProviders","normalizedProvidersMap","MixingMultiProvidersWithRegularProvidersError","InvalidProviderError","_extractToken","depProps","_createDependency","paramMetadata","forwardRefFn","__forward_ref__","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","newKey","findFirstClosedCycle","constructResolvingPath","tokenStrs","constructResolvingMessage","injectors","_genMessage","_desc","reflective_injector_1","opaque_token_1","_appIdRandomProviderFactory","_randomChar","APP_ID","APP_ID_RANDOM_PROVIDER","_flattenNestedViewRenderNodes","renderNodes","expectedSlotCount","EMPTY_ARR","givenSlotCount","valueCount","c0","a1","c1","a2","c2","a3","c3","a4","c4","a5","c5","a6","c6","a7","c7","a8","c8","a9","c9","_toStringWithNull","exceptions_2","arrayLooseIdentical","mapLooseIdentical","m1","m2","k1","k2","v0","p0","v1","p1","v2","p2","v3","p3","v4","p4","v5","p5","v6","p6","v7","p7","v8","p8","v9","p9","_appId","_nextCompTypeId","createRenderComponentType","renderComponentType","ComponentRef_","_hostElement","_componentType","vu","_isComponentFactory","ReflectorComponentResolver","metadatas","DynamicComponentLoader_","_compiler","loadAsRoot","overrideSelectorOrNode","onDispose","_mergeMaps","ReflectionInfo","interfaces","_injectableInfo","_getters","_setters","_methods","_usedKeys","isReflectionEnabled","trackUsage","listUnusedKeys","allTypes","registerFunction","funcInfo","registerType","typeInfo","registerGetters","registerSetters","setters","registerMethods","_containsReflectionInfo","_getReflectionInfo","BaseWrappedException","base_wrapped_exception_1","_ArrayLogger","_logger","_rethrowException","exceptionToString","_findOriginalException","_findOriginalStack","_findContext","_extractMessage","_longStackTrace","wrapperMessage","makeTypeError","exception_handler_2","_wrapperMessage","_originalException","_originalStack","_wrapperStack","reflect","_reflect","a10","a11","a12","a13","a14","a15","a16","a17","a18","a19","a20","_zipTypesAndAnnotations","paramTypes","functionBody","reflector_1","reflector_2","_devMode","_global","valueOf","overriddenName","newLineIndex","deserializeEnum","enumValue","_symbolIterator","globalScope","declarations","fnBody","fnArgNames","fnArgValues","argName","bitWiseOr","bitWiseAnd","assert","s2","charVal","NumberParseError","fractionDigits","equal","regExpStr","posArgs","seconds","milliseconds","fromISOString","_flattenArray","comparator","iterator1","iterator2","item1","item2","createMapFromPairs","pairs","createMapFromMap","_clearValues","keyIterator","_arrayFromMap","getValues","createFromStringMap","stringMap","toStringMap","clearValues","startIndex","removeAll","compareFn","solution","candidate","candidateValue","createSetFromList","lst","_WHEN_DEFAULT","SwitchView","NgSwitch","_useDefault","_valueViews","_activeViews","_emptyAllActiveViews","_activateViews","_switchValue","_onWhenValueChanged","oldWhen","newWhen","_deregisterView","_registerView","activeContainers","NgSwitchWhen","viewContainer","ngSwitch","_switch","NgSwitchDefault","sswitch","ng_switch_1","_CATEGORY_DEFAULT","NgLocalization","NgPluralCase","NgPlural","_localization","_caseViews","_updateView","pluralCase","_formatValue","_clearViews","_getCategoryView","_activateView","_activeView","category","getPluralCategory","categoryView","_isValueView","_stripValue","ng_class_1","ng_for_1","ng_if_1","ng_template_outlet_1","ng_style_1","ng_plural_1","core_directives_1","forms_1","jQuery","require","Dropkick","_docListener","isMobile","isIframe","isIE","appVersion","sel","dk","getElementById","settings","initialize","bubble","classname","toggleClass","box","docElem","offsetLeft","scrollLeft","pageXOffset","clientTop","clientLeft","closest","ancestor","deferred","data-value","role","aria-selected","cacheID","lastChild","selected","dkOption","selectedIndex","multiple","selectedOptions","_changeListener","mobile","onDocClick","isOpen","dropHeight","above","below","direction","dkTop","dkBottom","dkOptsList","display","_scrollTo","disabledClass","combobox","CustomEvent","bubbles","selectOne","tIndex","sIndex","cScore","tScore","focus","defaultSelected","refresh","handleEvent","_keyHandler","_searchOptions","_highlight","selection","firstIndex","getSelection","collapseToStart","lastSelected","down","keyCode","keyChar","which","waitToReset","searchTimeout","searchString","optPos","optTop","optBottom","dkOpts","idpre","selOpt","optList","addOption","optgroupList","label","aria-live","aria-owns","tId","dropkick","DropDown","inst","DropKick","firstElementChild","autoWidth","IObject","$getOwnPropertyDescriptor","getDesc","_Object$getOwnPropertyDescriptor","_x","_x2","_x3","_again","setPrototypeOf","buggy","_Object$create","_Object$setPrototypeOf","subClass","_Object$defineProperty","defineProperties","protoProps","staticProps","__g","PROTOTYPE","own","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","$Object","isEnum","propertyIsEnumerable","setDescs","getKeys","getNames","getSymbols","getOwnPropertySymbols","assign","__e","hasOwn","nextTok","finalToken","dict","descend","walk","_JsonPointerLib","JsonPointerLib","_origParse","baseTokens","resTokens","runInjectors","injectTo","propertySchema","propertyPointer","injName","_JsonSchema","subClassIdx","derived","derivedEmtpy","_isArray","unwrapArray","joinAllOf","isTrivial","prepareObjectPropertiesData","initDerived","enumArr","enumOrder","enumItem","selectDerived","requiredMap","discriminatorFieldIdx","childFor","isDiscriminator","propsSchema","prepareAdditionalProperties","_additional","discrProp","_name","general","_displayType","_displayFormat","findDerivedDefinitions","noType","_displayTypeHint","simpleType","_range","REDOC_COMPONENTS","autoInit"],"mappings":"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mCA,MAAcA,EAAEA,SAA2BA;QAC1EU,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACpBA,MAAMA,IAAIA,SAASA,EAAEA,CAACA;QAC1BA,CAACA;QACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;YAC/BA,SAASA,GAAGA,aAAaA,CAACA,SAASA,CAACA,CAACA;QACzCA,CAACA;QAEDA,MAAMA,CAACA,uBAAuBA,CAACA,MAAMA,EAAEA,SAASA,CAACA,CAACA;IACtDA,CAACA;IATeV,0BAAkBA,qBASjCA,CAAAA;IAkDDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiCIA;IACJA,wBAA+BA,WAAgBA,EAAEA,MAAcA,EAAEA,SAA2BA;QACxFW,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACpBA,MAAMA,IAAIA,SAASA,EAAEA,CAACA;QAC1BA,CAACA;QACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;YAC/BA,SAASA,GAAGA,aAAaA,CAACA,SAASA,CAACA,CAACA;QACzCA,CAACA;QAEDA,4GAA4GA;QAC5GA,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,MAAMA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,KAAKA,CAACA,CAACA;QAC9EA,EAAEA,CAACA,CAACA,WAAWA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;YAC3BA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;YACnCA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,WAAWA,CAACA,IAAIA,GAAGA,CAACA,CAACA,CAACA,CAACA;YACvBA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEDA,IAAIA,cAAcA,GAAGA,YAAYA,CAACA,GAAGA,CAACA,MAAMA,CAACA,CAACA;QAC9CA,cAAcA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;QACjCA,EAAEA,CAACA,CAACA,cAAcA,CAACA,IAAIA,GAAGA,CAACA,CAACA,CAACA,CAACA;YAC1BA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEDA,YAAYA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;QAC5BA,MAAMA,CAACA,IAAIA,CAACA;IAChBA,CAACA;IA9BeX,sBAAcA,iBA8B7BA,CAAAA;IAEDA,6BAA6BA,UAA4BA,EAAEA,MAAgBA;QACvEY,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;YAC9CA,IAAIA,SAASA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;YAC9BA,IAAIA,SAASA,GAAGA,SAASA,CAACA,MAAMA,CAACA,CAACA;YAClCA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;gBAC1BA,EAAEA,CAACA,CAACA,CAACA,aAAaA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oBAC5BA,MAAMA,IAAIA,SAASA,EAAEA,CAACA;gBAC1BA,CAACA;gBACDA,MAAMA,GAAaA,SAASA,CAACA;YACjCA,CAACA;QACLA,CAACA;QACDA,MAAMA,CAACA,MAAMA,CAACA;IAClBA,CAACA;IAEDZ,wCAAwCA,UAA6BA,EAAEA,MAAcA,EAAEA,WAA4BA,EAAEA,UAA8BA;QAC/Ia,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;YAC9CA,IAAIA,SAASA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;YAC9BA,IAAIA,SAASA,GAAGA,SAASA,CAACA,MAAMA,EAAEA,WAAWA,EAAEA,UAAUA,CAACA,CAACA;YAC3DA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;gBAC1BA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oBACvBA,MAAMA,IAAIA,SAASA,EAAEA,CAACA;gBAC1BA,CAACA;gBACDA,UAAUA,GAAuBA,SAASA,CAACA;YAC/CA,CAACA;QACLA,CAACA;QACDA,MAAMA,CAACA,UAAUA,CAACA;IACtBA,CAACA;IAEDb,2CAA2CA,UAA+BA,EAAEA,MAAcA,EAAEA,WAA4BA;QACpHc,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;YAC9CA,IAAIA,SAASA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;YAC9BA,SAASA,CAACA,MAAMA,EAAEA,WAAWA,CAACA,CAACA;QACnCA,CAACA;IACLA,CAACA;IAEDd,kHAAkHA;IAClHA,gCAAgCA,MAAcA,EAAEA,SAA0BA,EAAEA,MAAeA;QACvFe,IAAIA,cAAcA,GAAGA,YAAYA,CAACA,GAAGA,CAACA,MAAMA,CAACA,CAACA;QAC9CA,EAAEA,CAACA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;YAClBA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACVA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,cAAcA,GAAGA,IAAIA,IAAIA,EAAkCA,CAACA;YAC5DA,YAAYA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,cAAcA,CAACA,CAACA;QAC7CA,CAACA;QAEDA,IAAIA,WAAWA,GAAGA,cAAcA,CAACA,GAAGA,CAACA,SAASA,CAACA,CAACA;QAChDA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;YACfA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACVA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDA,WAAWA,GAAGA,IAAIA,IAAIA,EAAYA,CAACA;YACnCA,cAAcA,CAACA,GAAGA,CAACA,SAASA,EAAEA,WAAWA,CAACA,CAACA;QAC/CA,CAACA;QAEDA,MAAMA,CAACA,WAAWA,CAACA;IACvBA,CAACA;IAEDf,oHAAoHA;IACpHA,6BAA6BA,WAAgBA,EAAEA,CAASA,EAAEA,CAAkBA;QACxEgB,IAAIA,MAAMA,GAAGA,sBAAsBA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,CAACA,CAACA,CAACA;QACvDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;YACTA,MAAMA,CAACA,IAAIA,CAACA;QAChBA,CAACA;QAEDA,IAAIA,MAAMA,GAAGA,cAAcA,CAACA,CAACA,CAACA,CAACA;QAC/BA,EAAEA,CAACA,CAACA,MAAMA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAClBA,MAAMA,CAACA,mBAAmBA,CAACA,WAAWA,EAAEA,MAAMA,EAAEA,CAACA,CAACA,CAACA;QACvDA,CAACA;QAEDA,MAAMA,CAACA,KAAKA,CAACA;IACjBA,CAACA;IAEDhB,uHAAuHA;IACvHA,gCAAgCA,WAAgBA,EAAEA,CAASA,EAAEA,CAAkBA;QAC3EiB,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,CAACA,EAAEA,CAACA,EAAEA,UAAUA,CAACA,KAAKA,CAACA,CAACA;QACjEA,EAAEA,CAACA,CAACA,WAAWA,KAAKA,SAASA,CAACA,CAACA,CAACA;YAC5BA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,MAAMA,CAACA,OAAOA,CAACA,WAAWA,CAACA,GAAGA,CAACA,WAAWA,CAACA,CAACA,CAACA;IACjDA,CAACA;IAEDjB,oHAAoHA;IACpHA,6BAA6BA,WAAgBA,EAAEA,CAASA,EAAEA,CAAkBA;QACxEkB,IAAIA,MAAMA,GAAGA,sBAAsBA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,CAACA,CAACA,CAACA;QACvDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;YACTA,MAAMA,CAACA,sBAAsBA,CAACA,WAAWA,EAAEA,CAACA,EAAEA,CAACA,CAACA,CAACA;QACrDA,CAACA;QAEDA,IAAIA,MAAMA,GAAGA,cAAcA,CAACA,CAACA,CAACA,CAACA;QAC/BA,EAAEA,CAACA,CAACA,MAAMA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAClBA,MAAMA,CAACA,mBAAmBA,CAACA,WAAWA,EAAEA,MAAMA,EAAEA,CAACA,CAACA,CAACA;QACvDA,CAACA;QAEDA,MAAMA,CAACA,SAASA,CAACA;IACrBA,CAACA;IAEDlB,uHAAuHA;IACvHA,gCAAgCA,WAAgBA,EAAEA,CAASA,EAAEA,CAAkBA;QAC3EmB,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,CAACA,EAAEA,CAACA,EAAEA,UAAUA,CAACA,KAAKA,CAACA,CAACA;QACjEA,EAAEA,CAACA,CAACA,WAAWA,KAAKA,SAASA,CAACA,CAACA,CAACA;YAC5BA,MAAMA,CAACA,SAASA,CAACA;QACrBA,CAACA;QAEDA,MAAMA,CAACA,WAAWA,CAACA,GAAGA,CAACA,WAAWA,CAACA,CAACA;IACxCA,CAACA;IAEDnB,wIAAwIA;IACxIA,mCAAmCA,WAAgBA,EAAEA,aAAkBA,EAAEA,CAASA,EAAEA,CAAkBA;QAClGoB,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,CAACA,EAAEA,CAACA,EAAEA,UAAUA,CAACA,IAAIA,CAACA,CAACA;QAChEA,WAAWA,CAACA,GAAGA,CAACA,WAAWA,EAAEA,aAAaA,CAACA,CAACA;IAChDA,CAACA;IAEDpB,yGAAyGA;IACzGA,8BAA8BA,CAASA,EAAEA,CAAkBA;QACvDqB,IAAIA,OAAOA,GAAGA,uBAAuBA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA;QAC5CA,IAAIA,MAAMA,GAAGA,cAAcA,CAACA,CAACA,CAACA,CAACA;QAC/BA,EAAEA,CAACA,CAACA,MAAMA,KAAKA,IAAIA,CAACA,CAACA,CAACA;YAClBA,MAAMA,CAACA,OAAOA,CAACA;QACnBA,CAACA;QAEDA,IAAIA,UAAUA,GAAGA,oBAAoBA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;QACjDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,MAAMA,IAAIA,CAACA,CAACA,CAACA,CAACA;YACzBA,MAAMA,CAACA,OAAOA,CAACA;QACnBA,CAACA;QACDA,EAAEA,CAACA,CAACA,OAAOA,CAACA,MAAMA,IAAIA,CAACA,CAACA,CAACA,CAACA;YACtBA,MAAMA,CAACA,UAAUA,CAACA;QACtBA,CAACA;QAEDA,IAAIA,GAAGA,GAAGA,IAAIA,IAAIA,EAAOA,CAACA;QAC1BA,IAAIA,IAAIA,GAAUA,EAAEA,CAACA;QAErBA,GAAGA,CAACA,CAAYA,UAAOA,EAAlBA,mBAAOA,EAAPA,IAAkBA,CAACA;YAAnBA,IAAIA,GAAGA,GAAIA,OAAOA,IAAXA;YACRA,IAAIA,MAAMA,GAAGA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA;YAC1BA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACVA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA;gBACbA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;YACnBA,CAACA;SACJA;QAEDA,GAAGA,CAACA,CAAYA,UAAUA,EAArBA,sBAAOA,EAAPA,IAAqBA,CAACA;YAAtBA,IAAIA,GAAGA,GAAIA,UAAUA,IAAdA;YACRA,IAAIA,MAAMA,GAAGA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA;YAC1BA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACVA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA;gBACbA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;YACnBA,CAACA;SACJA;QAEDA,MAAMA,CAACA,IAAIA,CAACA;IAChBA,CAACA;IAEDrB,4GAA4GA;IAC5GA,iCAAiCA,MAAcA,EAAEA,SAA0BA;QACvEsB,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,MAAMA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,KAAKA,CAACA,CAACA;QAC9EA,IAAIA,IAAIA,GAAUA,EAAEA,CAACA;QACrBA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;YACdA,WAAWA,CAACA,OAAOA,CAACA,UAACA,CAACA,EAAEA,GAAGA,IAAKA,OAAAA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,EAAdA,CAAcA,CAACA,CAACA;QACpDA,CAACA;QAEDA,MAAMA,CAACA,IAAIA,CAACA;IAChBA,CAACA;IAEDtB,qGAAqGA;IACrGA,qBAAqBA,CAAMA;QACvBuB,MAAMA,CAACA,CAACA,KAAKA,SAASA,CAACA;IAC3BA,CAACA;IAEDvB,oEAAoEA;IACpEA,iBAAiBA,CAAMA;QACnBwB,MAAMA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;IAC5BA,CAACA;IAEDxB,wEAAwEA;IACxEA,kBAAkBA,CAAMA;QACpByB,MAAMA,CAACA,OAAOA,CAACA,KAAKA,QAAQA,GAAGA,CAACA,KAAKA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,UAAUA,CAACA;IACxEA,CAACA;IAEDzB,0EAA0EA;IAC1EA,uBAAuBA,CAAMA;QACzB0B,MAAMA,CAACA,OAAOA,CAACA,KAAKA,UAAUA,CAACA;IACnCA,CAACA;IAED1B,kGAAkGA;IAClGA,kBAAkBA,CAAMA;QACpB2B,MAAMA,CAACA,OAAOA,CAACA,KAAKA,QAAQA,CAACA;IACjCA,CAACA;IAED3B,0EAA0EA;IAC1EA,uBAAuBA,KAAUA;QAC7B4B,EAAEA,CAACA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;YAClBA,MAAMA,CAASA,KAAKA,CAACA;QACzBA,CAACA;QACDA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;IACzBA,CAACA;IAED5B,wBAAwBA,CAAMA;QAC1B6B,IAAIA,KAAKA,GAAGA,MAAMA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA;QACrCA,EAAEA,CAACA,CAACA,OAAOA,CAACA,KAAKA,UAAUA,IAAIA,CAACA,KAAKA,iBAAiBA,CAACA,CAACA,CAACA;YACrDA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,kEAAkEA;QAClEA,0EAA0EA;QAC1EA,qFAAqFA;QACrFA,gFAAgFA;QAChFA,kCAAkCA;QAElCA,wFAAwFA;QACxFA,gFAAgFA;QAChFA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,iBAAiBA,CAACA,CAACA,CAACA;YAC9BA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,yGAAyGA;QACzGA,IAAIA,SAASA,GAAGA,CAACA,CAACA,SAASA,CAACA;QAC5BA,IAAIA,cAAcA,GAAGA,MAAMA,CAACA,cAAcA,CAACA,SAASA,CAACA,CAACA;QACtDA,EAAEA,CAACA,CAACA,cAAcA,IAAIA,IAAIA,IAAIA,cAAcA,KAAKA,MAAMA,CAACA,SAASA,CAACA,CAACA,CAACA;YAChEA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,gFAAgFA;QAChFA,IAAIA,WAAWA,GAAGA,cAAcA,CAACA,WAAWA,CAACA;QAC7CA,EAAEA,CAACA,CAACA,OAAOA,WAAWA,KAAKA,UAAUA,CAACA,CAACA,CAACA;YACpCA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,iFAAiFA;QACjFA,EAAEA,CAACA,CAACA,WAAWA,KAAKA,CAACA,CAACA,CAACA,CAACA;YACpBA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,+CAA+CA;QAC/CA,MAAMA,CAACA,WAAWA,CAACA;IACvBA,CAACA;IAED7B,iBAAiBA;IACjBA;QACI8B,IAAMA,aAAaA,GAAGA,EAAEA,CAACA;QACzBA;YACIC,IAAIA,CAACA,KAAKA,GAAGA,EAAEA,CAACA;YAChBA,IAAIA,CAACA,OAAOA,GAAGA,EAAEA,CAACA;YAClBA,IAAIA,CAACA,MAAMA,GAAGA,aAAaA,CAACA;QAChCA,CAACA;QACDD,GAAGA,CAACA,SAASA,GAAGA;YACZA,IAAIA,IAAIA;gBACJE,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA;YAC7BA,CAACA;YACDF,GAAGA,YAACA,GAAQA;gBACRG,EAAEA,CAACA,CAACA,GAAGA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBACDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBACvBA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBACDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YACDH,GAAGA,YAACA,GAAQA;gBACRI,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBACbA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;gBAC/BA,CAACA;gBACDA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDJ,GAAGA,YAACA,GAAQA,EAAEA,KAAUA;gBACpBK,IAAIA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;gBACjBA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;gBACrBA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBACzBA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;gBAClBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YACDL,MAAMA,YAACA,GAAQA;gBACXM,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBACbA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC9BA,IAAIA,CAACA,MAAMA,GAAGA,aAAaA,CAACA;oBAC5BA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBACDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YACDN,KAAKA;gBACDO,IAAIA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBACtBA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBACxBA,IAAIA,CAACA,MAAMA,GAAGA,aAAaA,CAACA;YAChCA,CAACA;YACDP,OAAOA,YAACA,QAA4DA,EAAEA,OAAaA;gBAC/EQ,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;oBAC5BA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;oBAClBA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,KAAKA,EAAEA,GAAGA,EAAEA,IAAIA,CAACA,CAACA;gBAC1CA,CAACA;YACLA,CAACA;YACDR,KAAKA,YAACA,GAAQA;gBACVS,IAAMA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;gBACxBA,IAAMA,IAAIA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBACzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;oBAC5BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA;wBAClBA,MAAMA,CAACA,CAACA,CAACA;oBACbA,CAACA;gBACLA,CAACA;gBACDA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACdA,CAACA;SACJT,CAACA;QACFA,MAAMA,CAAMA,GAAGA,CAACA;IACpBA,CAACA;IAED9B,iBAAiBA;IACjBA;QACIwC,IAAMA,aAAaA,GAAGA,EAAEA,CAACA;QACzBA;YACIC,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,IAAIA,EAAYA,CAACA;QACrCA,CAACA;QACDD,GAAGA,CAACA,SAASA,GAAGA;YACZA,IAAIA,IAAIA;gBACJE,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA;YAC5BA,CAACA;YACDF,GAAGA,YAACA,KAAUA;gBACVG,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,KAAKA,CAACA,CAACA;YAChCA,CAACA;YACDH,GAAGA,YAACA,KAAUA;gBACVI,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YACDJ,MAAMA,YAACA,KAAUA;gBACbK,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;YACnCA,CAACA;YACDL,KAAKA;gBACDM,IAAIA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA;YACtBA,CAACA;YACDN,OAAOA,YAACA,QAAuDA,EAAEA,OAAaA;gBAC1EO,IAAIA,CAACA,IAAIA,CAACA,OAAOA,CAACA,QAAQA,EAAEA,OAAOA,CAACA,CAACA;YACzCA,CAACA;SACJP,CAACA;QACFA,MAAMA,CAAMA,GAAGA,CAACA;IACpBA,CAACA;IAEDxC,qBAAqBA;IACrBA;QACIgD,IAAMA,SAASA,G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IACAynD,MAAA,IACAC,KAAA,IACAC,OAAA,IACAC,OAAA,IACAC,GAAA,IACAC,GAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,QAAA,IACAC,QAAA,IACAC,MAAA,IACApkD,GAAA,IACAqkD,KAAA,IACAC,KAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,OAAA,IACAC,KAAA,IACAC,IAAA,IACAC,IAAA,IACAC,GAAA,IACAC,GAAA,IACAC,IAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,KAAA,IACAztG,KAAA,IACA0tG,IAAA,IACAC,IAAA,IACAC,KAAA,IACAC,MAAA,IACAC,KAAA,IACAC,MAAA,IACAC,KAAA,IACAC,KAAA,IACAC,MAAA,IACAC,MAAA,IACAC,KAAA,IACAC,IAAA,IACAC,OAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACAC,KAAA,IACAC,KAAA,IACAC,IAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,IAAA,IACAC,OAAA,IACAC,IAAA,IACAC,KAAA,IACAC,IAAA,IACAC,IAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,MAAA,IACAC,IAAA,IACAC,IAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,SAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACAC,KAAA,IACAC,KAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACAC,IAAA,IACAC,MAAA,IACAC,QAAA,IACAC,QAAA,IACAC,KAAA,IACAC,KAAA,IA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A;AACI;AAAa;AAkH46T;ACnH77T;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AAIA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;AACA;AACI;AACI;AACA;YACJ;AAAA;AACJ;AACJ;AAEI;AACA;AACA;AACA;AAA0B;AAE9B;AACI;AACI;UACJ;AAAA;MAER;AAEI;AACA;MACJ;AAAA;AACJ;AAC0D;IAA2B;AACrF;AAAyE;IAAiC;AAC1G;AACI;IACJ;AACA;AAAqE;IAAa;AAClF;AACI;IACJ;AACA;AACI;IACJ;AACA;AAAoE;IAAyE;AAC7I;AACI;IACJ;AACA;EACJ;AACA;AAvEA;AACI;AAAa;AAuEg8M;ACxEj9M;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AAAqB;AAEzB;AAEA;AAGI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAU;AAKd;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAgB;AAMpB;AACI;AACA;AACI;IACJ;AAAA;AAC8D;IAA0C;AACxG;AAA8C;IAA0D;AACxG;AAAqE;IAAwB;AAC7F;AAAuE;IAAkB;AACzF;AAAgE;IAAiB;AACjF;AACI;IACJ;AAEA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AAAqD;IAA2B;AAChF;AACI;AACI;AACA;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AAA0D;IAAyC;AACnG;AAAsE;IAAmC;AACzG;AAAyE;IAAsC;AAC/G;AAAgE;IAA2C;AAC3G;AACI;AAGA;AAAqB;MAA8C;IACvE;AACA;AAAi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AAuC;MAAwE;AAC/G;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAAmE;IAA0C;AAC7G;EACJ;AACA;AArHA;AACI;AAAa;AAqHwwb;ACtHzxb;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAsC;AAAyC;AAAsB;AACrG;AACA;AAMA;AACI;EACJ;AAAA;AAEA;AACI;AACI;IACJ;AAAA;EAEJ;AAAA;AAEI;AACA;AACA;EACJ;AAAA;AAK6C;AAA4C;AAAqC;AAE9H;AAAwG;AAAiC;AAAqC;AAvC9K;AACI;AAAa;AAuCwkI;ACxCzlI;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAgC;AAAiB;AACtE;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA;AACI;AAAa;AA4BowD;AC7BrxD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AASA;AACI;AACA;AAKyC;IAAqC;AAK9E;AAAiD;IAAsC;AACvF;EACJ;AACA;AA3BA;AACI;AAAa;AA2B4qD;AC5B7rD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAIb;AACA;AACA;AACA;AACA;AAA0C;EAAuB;AAAkB;EAAa;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlBA;AACI;AAAa;AAkB4+D;ACnB7/D;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AAKA;AACI;AACI;IACJ;AAAA;EAEJ;AACA;AAKA;AACI;AACI;IACJ;AAAA;AAkBI;AACA;AAEA;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;AACA;MACJ;AAAA;AAEA;AAKI;MACJ;AAAA;AAEA;AACA;AACA;IACJ;AACA;EACJ;AACA;AA/EA;AACI;AAAa;AA+EguM;AChFjvM;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AAYA;AACI;EACJ;AAAA;AAKA;AACI;EACJ;AAAA;AA1BA;AACI;AAAa;AA2BgtD;AC5BjuD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AAA+B;MAA0B;AACzD;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AAA+C;IAAmB;AAElE;AACI;AACA;AACI;AACA;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AAKA;EACJ;AACA;AACA;AACI;AACA;AAE+D;IAAc;AAC7E;AACI;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AArEA;AACI;AAAa;AAqEwuK;ACtEzvK;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAU;AAEd;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;IACJ;AACA;EACJ;AACA;AA1DA;AACI;AAAa;AA0DgiG;AC3DjjG;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AAIA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACI;AAAY;AAEZ;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AAEI;AACA;AAAqC;AAA8B;UAAmB;QAAI;AAC1F;AACA;AAAqB;QAA6B;MACtD;IACJ;AACA;AAAsE;IAAoD;AAC1H;AAKA;EACJ;AACA;AAhFA;AACI;AAAa;AAgFgvL;ACjFjwL;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAGqD;AAA0B;AAAU;AAEzF;AAGI;EACJ;AAAA;AAEI;EACJ;AAAA;AAS+C;AAAiC;AAAU;AACtC;AAAsC;AAAU;AACnD;AAA+B;AAAO;AACxC;AAAuB;AAAO;AACd;AAAwC;AAAU;AAClD;AAAwC;AAAU;AAClD;AAAkD;AAAU;AAY3H;AACA;AACI;AACA;AACA;EACJ;AAAA;AA3FA;AACI;AAAa;AA4FoxT;AC7FryT;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AAAuF;AAE3F;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;MACJ;AACA;IACJ;AACA;AACI;AACA;AACA;IAIJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AAAoD;IAAiE;AACrH;EACJ;AAAA;AAEI;AACI;IACJ;AACA;EACJ;AAAA;AAEI;AACA;AACA;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;IACJ;AAAA;AACJ;AAjHI;AAAa;AAkHg5d;ACnHj6d;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AA6HA;AACI;AACI;IACJ;AAAA;AAUI;AAA+B;MAAmB;AAAA;AAElD;AACA;IACJ;AACA;AACI;AACA;IACJ;AAeA;AAEI;AAAgG;MAAmB;IACvH;AAgBA;AAEI;AACI;AACA;AACA;AACA;MACJ;IACJ;AASA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;MACJ;AAAA;AAEA;IACJ;AAgBA;AAEI;AAAY;AACZ;AACA;AACI;AACA;AACA;AACA;MACJ;AAAA;IAEJ;AAQA;AACI;IACJ;AAgBA;AACI;IACJ;AACA;AAEI;AACI;AACI;AAA6B;AAC7B;AACI;AACA;AACI;AAAK;AAET;UACJ;AAAA;QAEJ;AAEI;QACJ;AAAA;IAER;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;IACJ;AAKA;AACI;AACI;MACJ;AAAA;IAEJ;AAEA;AACI;AACA;AACI;AACA;AACA;AACI;QAEJ;AAEI;QACJ;AAAA;MAEJ;IACJ;AACA;AACI;AAAY;AACZ;AACI;AACA;AACA;AACA;AACI;QAGJ;AAAA;MAGJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AAEI;IACJ;AAEA;AACI;AACI;AACA;AACA;MACJ;AAEI;MACJ;AAAA;AAIJ;AACI;AACA;AAA0F;MAAa;AACvG;AAAmC;AAAmB;AACtD;AACI;AACA;AACA;AAEI;AACA;AAEI;AACA;AACA;AACI;YACJ;AAAA;AACJ;QAEJ;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;IACJ;AACA;EACJ;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AAA+E;IAAW;EAC9F;AAAA;AAEA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEA;IACJ;EACJ;AAAA;AAEA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEI;MACJ;AAEI;AACI;AACA;AACA;QACJ;AAAA;MAEJ;AAAA;AAEI;MACJ;AAAA;AACJ;AAEI;AACA;IACJ;AAAA;EAEJ;AAAA;AAlfI;AAAa;AAmf45wC;ACpf76wC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AAA+D;MAAyD;AACxH;AACA;AACI;AACA;AACA;MACJ;AAAA;AAMA;IACJ;AACA;AACI;IACJ;AACA;AAIA;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AAAA;AArFI;AAAa;AAsFwvQ;ACvFzwQ;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AACI;AACA;AACI;AACI;QACJ;AAAA;MAEJ;AACA;AACA;AACA;AAGA;AACI;MACJ;IACJ;AACA;AACI;AACI;AACA;AACA;MAGJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACI;AACA;MACJ;AAAA;AACJ;AAEI;IACJ;AAAA;EAEJ;AAAA;AAvEI;AAAa;AAwEg1Q;ACzEj2Q;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACI;AACA;AACI;AACA;AACA;AACA;QACJ;AACA;AACA;AACI;AACI;AAGA;AACA;UACJ;AAAA;MAER;AAAA;AAEA;AACI;MACJ;AACA;AACI;MACJ;AAAA;AACJ;AAEI;AACA;AACA;AACI;AACA;AACI;QACJ;AAAA;MAEJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACA;AACI;AACA;MACJ;AAAA;AAEI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AAAqC;MAAsB;AAC3D;AAAuD;AAA0C;QAA2D;MAAI;IACpK;AACA;EACJ;AACA;AACA;AACI;AACI;IACJ;AAEI;IACJ;AAEI;IACJ;AAAA;AACJ;AA/JI;AAAa;AAgK40oB;ACjK71oB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEA;AACA;AACI;AACA;AACI;QACJ;AAEI;AACA;AACA;QACJ;AAAA;AAEJ;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACI;MACJ;AAEI;MACJ;AAAA;EAER;AAAA;AAEI;AACI;IACJ;AACA;EAIJ;AAAA;AAEI;AACA;AACA;AAGA;EACJ;AAAA;AAEA;AACI;AACI;AACA;AACI;AACA;MACJ;AAAA;IAEJ;EACJ;AAAA;AArGA;AACI;AAAa;AAsG4kY;ACvG7lY;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAC6C;IAAwC;AACrF;AAAoD;IAAsC;AAC1F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAoC;MAAoD;AACxF;AACA;AACA;AACA;AACA;AACA;AACI;MACJ;AAAA;AACJ;AAEI;IACJ;AACA;AACI;AACA;AACA;AACA;AASA;AACA;AACA;IACJ;AACA;AACI;AACA;AAEA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AAEA;AAAgE;AAA6E;AAA8B;AAE3K;MACJ;AAAA;AAEJ;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACI;MACJ;AAGA;AACI;AACI;AACI;UACJ;AAEI;AACA;AAAyC;YAAiE;AAC1G;UACJ;AAEI;AACA;AAAyC;YAAiE;AAC1G;UAEJ;AAEI;AACI;YACJ;AAEI;YACJ;AAEI;YACJ;AAAA;AACJ;AAEJ;AACA;AACA;MACJ;AACA;AACgD;MAA4E;AAC5H;AACI;AACA;AACA;AAAiD;QAA+C;MACpG;AAAA;AAEA;AACI;AACA;AAA4F;QAA0D;MAC1J;AACA;AACI;AACA;AACA;AA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;AAEI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;QACJ;AAAA;AACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;AACI;QACJ;AAAA;AACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;AACA;AACI;QACJ;AAAA;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AAAiC;MAA+B;IACpE;AACA;AACI;IACJ;AACA;EACJ;AACA;AACI;AACI;AAA+B;MAAyC;IAC5E;AAEI;IACJ;AAAA;AACJ;AA7OI;AAAa;AA8O4x0B;AC/O7y0B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AAVA;AACI;AAAa;AAUgyB;ACXjzB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;IAEJ;AAAA;AAEI;AAA+D;MAC1B;AACrC;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AAGI;QAGJ;AAAA;AACJ;IAEJ;AACA;AACI;AAGA;AACA;AAAkD;MAAmC;AACrF;AAGA;IACJ;AACA;AACI;AACA;AAKA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;IACJ;AACA;AACI;AACA;AACA;AAGA;IAGJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACA;AACA;MACJ;IACJ;AACA;AAA6C;IAAgC;AAC7E;EACJ;AAAA;AAEA;AACI;AACI;AAA4C;MAAwC;AACjD;MAAmE;IAC1G;EACJ;AAAA;AAEA;AACI;AAA6C;IAAoC;EACrF;AAAA;AAEA;AACI;AACI;IACJ;AAEI;IACJ;AAAA;EAEJ;AAAA;AAEI;EACJ;AAAA;AAxII;AAAa;AAyIwsnB;AC1IztnB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AAAkB;AAEtB;AACI;AACA;AACA;AAAa;EAErB;AAAA;AAEI;AACA;AAEI;IACJ;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEI;IACJ;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEI;IACJ;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEI;IACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEA;EACJ;AACA;AACA;AACI;AACA;AAEA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AAEA;AACA;AACA;AACA;EACJ;AACA;AAlHA;AACI;AAAa;AAkHwpT;ACnHzqT;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AACA;AACA;AACA;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AACA;AACA;AACA;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AACA;AACA;AACI;IACJ;AAAA;AACJ;AAEA;AACI;AACA;AACI;IACJ;AAAA;AACJ;AA9DA;AACI;AAAa;AA+Dw0W;AChEz1W;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AAAqC;IAA2F;EACpI;AAAA;AAEA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AAAsE;IAAa;AACnF;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;MACJ;AACA;AAGA;AACI;AACA;AACA;AACA;MACJ;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;MACJ;AACA;AACA;IACJ;AACA;AAA8D;IAAa;AAC3E;AAAmE;IAAa;AAChF;AACI;IACJ;AACA;AAAmE;IAAa;AAChF;AAAkE;IAAa;AAC/E;AAA+E;IAAa;AAC5F;AAA6E;IAAa;AAC1F;EACJ;AA7EA;AACI;AAAa;AA6E4rX;AC9E7sX;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAEI;AACA;AACA;AACA;AAGA;AACA;AACA;IACJ;AACA;AAIA;EACJ;AACA;AAhDA;AACI;AAAa;AAgD4mH;ACjD7nH;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;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A;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AAAuD;MAA6D;AACpH;AAAqD;MAA2D;AAChH;AACI;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;MACJ;AAEI;MACJ;AAAA;AAEI;MACJ;AAAA;AAEI;AAA+C;QAA6D;MAChH;AAAA;IAEJ;AACA;AAMA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AACA;AACA;AAAgC;MAA+C;IACnF;AAAA;AAEI;AAAwB;MAA4C;AAAA;IAExE;AACA;AACI;AACA;AACI;AACA;AACA;AAEI;QACJ;AAAA;MAEJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;AACI;AACI;UACJ;AAAA;AAEJ;AAAqD;QAA+E;AACpI;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;AACI;AACI;UACJ;AAAA;MAER;AAAA;AAEJ;AAA0E;IAAa;AACvF;AAA8E;IAAa;AAC3F;AACI;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;IACJ;AACA;AAAwE;IAAa;AACrF;AACI;AACA;AACA;AACA;AAKI;MACJ;AAAA;AAKI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AAEI;AACA;QACJ;AAAA;AAEI;QACJ;AAAA;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACI;AACI;QACJ;AAAA;MAEJ;AAEI;AACA;AACA;MACJ;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAEI;AACA;MACJ;AAAA;AAEI;AACA;AACI;AACA;AACI;UACJ;AAEI;UACJ;AAEI;AACA;UACJ;AAAA;AACJ;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;AACA;AACI;AACA;UACJ;AAEI;AACA;UACJ;AAAA;AAGA;AACI;AACA;UACJ;AAEI;UACJ;AAAA;AAGA;AACA;QACJ;AAEI;QACJ;AAEI;AACA;QACJ;AAEI;AACA;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AAGA;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;IACJ;AACA;AAEI;AACA;AACA;AACA;AACA;AACA;IAGJ;AACA;AACI;IACJ;AACA;AACI;AAIA;AACA;AACI;MACJ;AACA;AAA0C;MAA8B;IAC5E;AACA;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACI;AAEI;AACA;UACJ;AAAA;AAEJ;MACJ;AACA;AACI;AACI;AACI;UACJ;AAAA;QAEJ;AAEI;AACA;AACI;UACJ;AAAA;QAEJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;QACJ;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACI;QACJ;MACJ;AAAA;AAEJ;AACI;AACI;AACA;AACI;AACA;AAEI;UACJ;AAAA;AAEJ;AACI;AAEA;AACI;UACJ;AAAA;MAER;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;MACJ;AACA;AACI;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACI;QACJ;AAAA;AAGA;AACI;AACA;AACA;AACI;AACA;AACA;UACJ;AAAA;QAEJ;AAEI;AACA;QACJ;AAEI;AACA;AACA;QACJ;AAEI;AACA;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEI;MACJ;IACJ;AACA;AACI;AACA;AACA;AACI;AAA6F;QAAmC;MACpI;AACA;AACI;AACI;QACJ;AAAA;IAER;AACA;EACJ;AACA;AACI;AACA;AAEI;AACA;AAMI;MACJ;AAAA;AAC2D;MAAsC;AACjG;AACA;AACA;AACA;IACJ;AACA;AAAsE;IAAa;AACnF;AACI;IACJ;AACA;AACI;AACA;IACJ;AACA;AAAwE;IAAY;AACpF;AAA4E;IAAY;AACxF;EACJ;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACI;EACJ;AAAA;AAEA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACI;AACA;AACI;AACA;AACI;UACJ;AAEI;UACJ;AAAA;AACJ;AACJ;IAEJ;AACA;AACI;AACA;AAAkF;MAAuC;AACzH;AACA;AACI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AAAuC;QAA4C;MACvF;AAAA;AACJ;EAEJ;AAAA;AAEA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAyC;MACA;AAEzC;AACI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAxwBI;AAAa;AAywBoglG;AC1wBrhlG;;AAAA;AACI;AAAmB;AACnB;AADJ;AAGA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AAAY;AAEhB;EACJ;AAAA;AAMA;AACI;AACA;AACI;AACA;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;EACJ;AAAA;AAEA;AAGA;AA1CA;AACI;AAAa;AA0CgsI;AC3CjtI;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACI;AACI;AACA;IACJ;AAAA;AAC4D;IAAyC;AACrG;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAC4D;IAAyC;AACrG;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAC+D;IAA4C;AAC3G;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAC+D;IAA4C;AAC3G;EACJ;AACA;AACA;AACI;AAA0B;IAAgB;AAAA;AAE1C;AACI;AACA;AACI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAnFA;AACI;AAAa;AAoFogO;ACrFrhO;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AAAyC;IAAgC;AAAA;EAG7E;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;IACJ;AAAA;EAEJ;AAEA;AACI;AACI;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAMI;IACJ;AACA;AACI;AACI;AACA;AACI;AACI;AACI;AACI;cACJ;AAEI;cACJ;AAEI;cACJ;AAAA;AAGA;YACJ;AAEI;YACJ;AAAA;AAGA;UACJ;AAEI;UACJ;AAGI;UACJ;AAGI;UACJ;AAEI;UACJ;AAAA;AAGA;AACI;UACJ;AAEI;UACJ;AAAA;AACJ;AACJ;AAEA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AAAwB;MAAc;AAAA;AAElC;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AAAsB;MAAY;AAAA;AAE9B;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;AACA;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;IAEJ;AACA;AACI;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAEI;AACA;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACI;QACJ;AAAA;AAEA;AACA;AACI;AACA;QACJ;AAEI;AACA;QACJ;AAAA;AAGA;AACA;AACA;AACI;AACA;QACJ;AAAA;AAEA;AACA;AACA;AACI;QACJ;AAAA;MAEJ;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;AAEI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AAAkE;MAAgC;AAClG;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AAAqE;MAAgC;AACrG;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACI;AACA;AACA;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACI;QACJ;AAAA;AAEA;AACA;AACA;AACA;AACI;AACA;AACA;AACI;AACA;UACJ;AAAA;QAEJ;AAAA;MAEJ;AAEI;AAEI;AAEA;AACA;AACA;QACJ;AAAA;MAEJ;AAAA;AAEA;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACI;AAAY;AAEhB;AACI;AAAY;AAEhB;AACI;AAAY;MAEpB;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACI;QACJ;AAAA;AAEA;MACJ;AAEI;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AAEA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAEI;MACJ;AAAA;AAEI;AACI;AACA;AACA;QACJ;AAEI;AACA;AACA;QACJ;AAEI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI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ACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AACA;AACI;AACI;AACA;AACI;MACJ;AAAA;AACJ;EAEJ;AAAA;AAEI;EACJ;AAAA;AAhVI;AAAa;AAiV4gmC;AClV7hmC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;AACI;QACJ;AAAA;AACJ;AAEJ;AACA;AACA;AACA;AACI;IACJ;AAEI;IACJ;AAEI;IACJ;AAEI;IACJ;AAAA;EAEJ;AAAA;AAEA;AACI;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAAA;EAEJ;AAAA;AAlFI;AAAa;AAmFg5N;ACpFj6N;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAEI;MACJ;AAAA;AAE0C;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA2B;MAC3B;IACR;AACA;AACI;AACA;AACI;MACJ;AAEI;AACA;AACuC;QAA8F;MACzI;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACA;AAC0B;MAAwD;AAExD;MAAiE;AAC3F;AACI;AACA;AAAyD;QAAuC;AAChG;MACJ;AACA;AACA;AAEI;MACJ;AAAA;AAEI;AACA;A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AmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AACJ;AAEI;AACA;AAEI;AACA;AACI;AACA;QACJ;AAAA;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AAA4B;AAEhC;AACA;AACI;UACJ;AAAA;AACJ;AAEA;AACI;QACJ;AAAA;AAEA;AACA;AACI;AACA;QACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAkF;UAA8E;AAChK;AACA;AACA;AACA;AAAuB;AAE3B;MACJ;AAAA;IAEJ;AACA;AACI;AACI;AACA;AACA;AACA;AAA+C;IAEvD;AACA;AACI;AACI;AACA;AACA;AACA;AAAkD;IAE1D;AACA;AACI;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AAAkF;UAAyE;AAAC;AAEhK;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;AAAA;AACJ;AACwC;MAAyC;IACrF;AACA;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;AAAA;AACJ;AACmC;MAAoC;IAC3E;AACA;AACI;AACA;AACA;AACI;MACJ;AAEI;AACI;QACJ;AAEI;QACJ;AAAA;AACJ;AAEI;AACA;AAA2C;QAA4C;AACvF;AACA;AACI;AACA;QACJ;AAEI;QACJ;AAAA;AAEA;AAA2C;QAAwC;AACnF;AACI;QACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AAC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CJ;AAAA;AAEI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;EACJ;AAAA;AAEA;AACI;AACI;AAAkC;AAAsB;AAAgB;AAA0B;AAAoB;AACtH;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAEA;AAAuC;AAAoB;AAAwB;AAA8B;AAAW;IAChI;AACA;AACI;AACA;AAEI;AACA;AACA;AACA;AACA;AAAa;IAErB;AACA;AACI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;AAAkC;AAA8B;AAAoB;AAAoB;AAA4B;AAA4B;AAAsB;AAAkB;AAA0B;AAAkB;AACpP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuB;IAE/B;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAsB;IAE9B;AACA;EACJ;AACA;AACA;AACI;AACI;AAAsB;AAAwB;AAAwB;AAA8B;AAA4B;AAAgB;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AAAuE;IAE/E;AACA;AACI;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA8B;IAEtC;AACA;EACJ;AACA;AACA;AACI;AACI;AAA0B;AAAgB;AAA0B;AAAoB;AAAoB;AAC5G;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACA;AACA;AACA;AAA2E;IAEnF;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAAkC;IAE1C;AACA;EACJ;AACA;AACA;AACI;AACI;AAAsB;AAA4B;AAClD;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AAAiD;IAEzD;AACA;AACI;AACI;AACA;AACA;AAAgD;IAExD;AACA;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;AAEJ;AACA;AAAiB;AAErB;AACI;AACI;AACI;QAIJ;AAEI;QACJ;AAAA;AAEJ;AACA;AAAiB;AAErB;AACI;AACA;AACA;IAEJ;AACA;AACI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;MACJ;AAAA;AAEA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;AAAiD;IAAqB;AACtE;AACI;AAAmB;MAA4B;AAC/C;AACA;AAAiB;AAErB;EACJ;AACA;AAIA;AACI;AACI;AAAkC;AAAsB;AAAgB;AAA0B;AAAoB;AAAoB;AAAkB;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AAA2E;IAEnF;AACA;AACI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AACI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AACI;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AAAkC;IAE1C;AACA;EACJ;AACA;AACA;AACI;AACI;AAAkC;AAA0B;AAA8B;AAAkB;AAAgC;AAC5I;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AAA8D;IAEtE;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AAA4B;IAEpC;AACA;EACJ;AACA;AAIA;AACI;AACI;AAAkC;AAAkC;AAAwB;AAA8B;AAAoB;AAA0B;AACxK;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AAGA;AACA;AACA;AACA;AACA;AAA6C;IAErD;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAA4C;IAEpD;AACA;EACJ;AACA;AAIA;AACI;AACI;AAAkC;AAAgB;AAA8B;AAAwB;AAAwB;AAAsC;AAAoB;AAAsB;AAAkC;AAAoC;AAAoC;AAAoC;AAA0B;AAAkC;AAAsB;AAA8B;AAC9c;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAkC;AAAgB;AAA8B;AAAwB;AAAwB;AAAsC;AAAoB;AAAsB;AAAgB;AAAoC;AAA0B;AAAkC;AAAsB;AAA8B;AACpX;AACA;AACA;AACA;AACI;AACI;AACA;AACI;UACJ;AAEI;UACJ;AAEI;UACJ;AAAA;MAER;AAAA;AAEA;AACI;AAGI;AACA;QACJ;MACJ;AAAA;AAEA;AACI;AAGI;AACA;QACJ;MACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;IAEzB;AACA;AACI;AAAmB;MAAkB;AACrC;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAkE;QAA4D;AAC9H;AAEA;AACA;AACA;AACA;AAA8E;IAEtF;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAA4D;QAAmC;AAC/F;AACA;AACA;AACA;AACA;AAA4C;IAEpD;AACA;EACJ;AACA;AAIA;AACI;AACA;AACI;AACI;AACA;AACA;AACA;AAAW;AAEf;AAAwC;AAAoB;AAAiB;AAAY;AAAe;AAAqB;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAc;EAEtB;AAAA;AAEA;AACI;AACI;AAAkC;AAAgB;AAAgB;AAAgB;AAClF;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAkB;AACrC;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACA;AAAiB;IAEzB;AACA;AACI;AACI;AACA;AACA;AACA;AAAgB;IAExB;AACA;EACJ;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AAAyC;AAE7C;AACI;AAA2D;IAA4B;EAC3F;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;AAA8B;AAE9B;AAAU;EAElB;AAAA;AAEI;AACI;AAAwB;AAExB;AAAU;EAElB;AAAA;AAEI;EACJ;AAAA;AAvoBI;AAAa;AAwoBov8D;ACzoBrw8D;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AAEI;AACA;AACA;AAAoB;AAExB;AAAyE;AAAiB;AAAgC;AAAkB;AAC5I;AACI;AACA;AACA;AAAqB;AAEzB;AACI;AACA;AACA;AAAqB;AAEzB;AACI;AACA;AACA;AAA2B;AAE/B;AACI;AACA;AACA;AAA4B;AAEhC;AACI;AACA;AACA;AAA8B;AAElC;AACI;AACA;AACA;AAAoB;AAExB;AACI;AACA;AACA;AAAsB;AAE1B;AACI;AACA;AACA;AAAuB;AAE3B;AAAgF;AAAwB;AAA0B;AAAyB;AAC3J;AACI;AACA;AACA;AAAmB;AAEvB;AACI;AACA;AACA;AAA4B;AAEhC;AACI;AACA;AACA;AAAmB;AAEvB;AACI;AACA;AACA;AAAkC;AAEtC;AACI;AACA;AACA;AAA8B;AAElC;AACI;AACA;AACA;AAAuB;AAE3B;AACI;AACA;AACA;AAAmB;AAEvB;AAA8E;AAAsB;AAA0B;AAAuB;AACrJ;AAA+E;AAAuB;AAA0B;AAAwB;AACxJ;AAAqF;AAA6B;AAA0B;AAA8B;AAC1K;AAA8E;AAAsB;AAAkC;AAAuB;AAC7J;AACI;AACA;AACA;AAAuC;AAE3C;AAA8E;AAAsB;AAA0B;AAAuB;AACrJ;AAA6E;AAAqB;AAAkC;AAAsB;AAC1J;AAA6E;AAAqB;AAAkC;AAAsB;AAC1J;AAEuD;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAoB;AAAkC;AAA+B;AACrF;AAAqB;AAAkC;AAAgC;AAE9I;EACJ;AACA;AACA;AACI;EACJ;AAAA;AArKA;AACI;AAAa;AAsK4snB;ACvK7tnB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACI;AACI;AAA8B;MAAoB;AAAA;AAElD;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AAAA;EAEJ;AACA;AAMA;AACI;AACA;AAEI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AAxEA;AACI;AAAa;AAwEwvH;ACzEzwH;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AACyC;MAAmD;AAC5F;AAAyC;MAAmD;AAC5F;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;AACI;AACA;QACJ;AAAA;AACJ;AAEA;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACI;AACA;AACA;AACI;AACA;QACJ;AAAA;MAEJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;IACJ;AACA;AACI;AAAwC;MAA8B;IAC1E;AACA;AACI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;IACJ;AACA;EACJ;AACA;AArKA;AACI;AAAa;AAqKwnf;ACtKzof;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACI;AAAsF;IAAiC;EAC3H;AAAA;AAEA;AACI;AAAqF;IAA2B;EACpH;AAAA;AAEA;AACI;AACA;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;EACJ;AAAA;AA3BA;AACI;AAAa;AA4Bo2F;AC7Br3F;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;EACJ;AAAA;AAEA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;MACJ;AAAA;AAEA;IACJ;AACA;EACJ;AA9CA;AACI;AAAa;AA8Cw2I;AC/Cz3I;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACI;IACJ;AAEI;IACJ;AAAA;AAEI;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAEA;AACI;AACA;AAEI;AAGA;AACA;AACA;AACA;AACI;MACJ;AACA;AACA;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;AAGA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AAAuC;MAA2C;AAClF;AACI;MACJ;AAAA;AACyC;MAA6C;AACtF;AAAyC;MAA6C;AACtF;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAAK;AAEL;AACA;AACA;AACA;AACA;AACA;AAAK;AAEL;AADG;AAGX;IACJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;QACJ;AAAA;MAEJ;IACJ;AACA;AACI;AACA;AACI;AACA;AACI;AACA;QACJ;AAAA;MAEJ;AAAA;AAEA;AACI;AACA;AAAuC;QAAmC;AAC1E;MACJ;AAAA;AAEJ;EACJ;AACA;AACI;AACI;AACA;AACI;AACA;AACI;AACI;UACJ;AAAA;AACJ;AACJ;AACJ;EAEJ;AAAA;AAEI;EACJ;AAAA;AAxXI;AAAa;AAyXgqkC;AC1XjrkC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AAEA;AACI;EACJ;AACA;AACA;AACI;AACI;AAA4B;MAAkB;AAAA;AAE9C;AACI;MACJ;AAAA;AACJ;AACmD;IAAgD;AACnG;EACJ;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAA4B;MAAkB;AAAA;AAE9C;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAA6B;MAAmB;AAAA;AACpB;MAAkB;AAAA;AAE9C;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAA4B;MAAkB;AAAA;AAE9C;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAA4B;MAAkB;AAAA;AAE9C;IACJ;AAAA;AAC4D;IAA4C;AACxG;EACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAC8C;IAAqC;AACnF;AACI;AAAuB;MAAa;AAAA;IAExC;AACA;AACI;IACJ;AACA;AAAkD;IAA6C;AAC/F;AACI;AAAuB;MAAa;AAAA;IAExC;AACA;AACI;AAA4B;MAAkB;AAAA;IAElD;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAEI;IACJ;AACA;AAA8C;IAAiC;AAC/E;AAA4C;IAAsC;AAClF;EACJ;AACA;AACA;AACI;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACI;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AACJ;AAEI;IACJ;AACA;AAA+C;IAA2C;AAC1F;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AAAuB;MAAa;AAAA;AACR;MAAkB;AAAA;IAElD;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;AACA;AACI;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AACJ;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AACP;MAAmB;AAAA;AAEhD;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAA4B;MAAkB;AAAA;AACvB;MAAa;AAAA;AAEpC;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AAAuB;MAAa;AAAA;AAEpC;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AAA4B;MAAkB;AAAA;IAElD;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;AACA;AACI;MACJ;AAAA;AACJ;AAEA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACI;AACA;EACJ;AACA;AACA;AACI;AACI;AAA4B;MAAkB;AAAA;AAE9C;AACI;MACJ;AAAA;AACJ;AACwD;IAAgD;AACxG;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AACR;MAAkB;AAAA;AAE9C;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AACR;MAAkB;AAAA;AAE9C;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AAAuB;MAAa;AAAA;AAEpC;AACA;AACI;MACJ;AAAA;AACJ;AACgE;IAAgD;AAChH;EACJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AACR;MAAkB;AAAA;AAE9C;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AACR;MAAkB;AAAA;AAE9C;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AAAuB;MAAa;AAAA;AACR;MAAkB;AAAA;AAE9C;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AAA4B;MAAkB;AAAA;AAE9C;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AAA4B;MAAmC;AAAA;AAE/D;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AAC6E;IAAY;AACzF;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAA6E;IAAY;AACzF;AAA8E;IAAY;AAC1F;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAEI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AAA6D;MAA6D;IAC9H;AACA;AACI;AACA;AAAmC;MAA6C;IACpF;AACA;AACI;IACJ;AACA;AAEI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAEI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAA8E;IAAa;AAC3F;AACI;AACA;AAAmC;MAA4C;IACnF;AACA;EACJ;AACA;AACA;AACI;AACA;AACkF;IAAY;AAC9F;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AAAkF;IAAY;AAC9F;AAAmF;IAAY;AAC/F;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AAAmF;IAAY;AAC/F;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AAAuC;MAAiD;AACxF;IACJ;AACA;AACI;AACA;AAAgC;MAA6C;IACjF;AACA;AACI;AACA;IACJ;AACA;AAEI;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AAEI;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AAAmF;IAAa;AAChG;AACI;AACA;AAAgC;MAA4C;IAChF;AACA;EACJ;AACA;AACA;AACI;AACA;EACJ;AAAA;AAEA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACI;AACA;AACA;EACJ;AAAA;AAEA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACA;IACJ;AACA;EACJ;AACA;AACI;AAAuB;IAAa;AAAA;EAExC;AAAA;AAEA;AACI;AAA6B;IAAmB;AAAA;EAEpD;AAAA;AAEA;AACI;AAA6B;IAAmB;AAAA;AAChB;IAAsB;AAAA;EAE1D;AAAA;AAEA;AACI;AAAuB;IAAa;AAAA;EAExC;AAAA;AAEA;AACI;AAAuB;IAAa;AAAA;EAExC;AAAA;AAEA;AACI;AAAuB;IAAa;AAAA;EAExC;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;AAAuB;IAAa;AAAA;EAExC;AAAA;AAn9BA;AACI;AAAa;AAo9Bw3hF;ACr9Bz4hF;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AAAmB;MAA4C;AAC/D;AACA;AAAiB;AAErB;AAAqE;IAAmD;AACxH;AACI;AAA2B;MAAe;AAAA;IAE9C;AACA;AAA4D;IAA6C;AACzG;AACI;AAA0B;MAAiB;AAAA;AAEvC;MACJ;AAAA;AAEI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AAA+D;IAA2B;AAC1F;AAAyD;IAA4B;AACrF;AACI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACA;AACI;MACJ;AAAA;AAEI;AACI;QACJ;AAEI;QACJ;AAAA;IAGR;AACA;EACJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;MACJ;AAEI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;QACJ;AAAA;AACJ;AAEA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AAAgC;MAA2B;AAC3D;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;AACA;AAGI;QACJ;AAAA;AACJ;AAEA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;MAGf;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;MACJ;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AAA0B;MAAiB;AAAA;AACJ;MAAyC;IACpF;AACA;AACI;AAA0B;MAAiB;AAAA;AAEvC;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AAAqC;MAAwC;IACjF;AACA;EACJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAEI;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAEA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AAAA;AAzZI;AAAa;AA0Zg6nC;AC3Zj7nC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AAEA;AACA;AACA;AACA;AACI;AACA;EACJ;AACA;AAIA;AACI;AACA;AACA;AACA;AACI;IACJ;AAAA;AAII;IACJ;AAEI;IACJ;AAAA;EAEJ;AAAA;AAEA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AAEI;IACJ;AAAA;EAEJ;AAAA;AAEA;AACI;AACA;AACA;AACI;IACJ;AAAA;EAEJ;AAAA;AA9EA;AACI;AAAa;AA+EgsP;AChFjtP;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACI;IACJ;AAEI;IACJ;AAAA;AAEI;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAEA;AACI;AACA;AAEI;AACA;AACA;AACA;AACA;AAEI;MAEJ;AACA;AACA;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;MACJ;AAEI;MACJ;AAAA;AAEA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AAAuC;MAA2C;AAClF;AACI;MACJ;AAAA;AACyC;MAA6C;AACtF;AAAyC;MAA6C;AACtF;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACI;AACA;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;AAGX;IACJ;AACA;AACI;AACA;AACI;AACA;AACI;AACA;QACJ;AAAA;IAER;AACA;AACI;AACA;AACI;AACA;AACI;AACA;QACJ;AAAA;MAEJ;AAAA;AAEA;AACI;AACA;AAAuC;QAAmC;AAC1E;MACJ;AAAA;AAEJ;EACJ;AA1UA;AACI;AAAa;AA0U406B;AC3U716B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;EACJ;AAAA;AAEA;AACI;AACA;AAEI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;IACJ;AAEI;IAEJ;AAAA;AACJ;AAEI;AACA;AACI;IACJ;AAAA;AAEA;EACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACI;AACI;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AAAkD;MAA6B;AAC/E;AACI;AAAuC;QAAqF;MAChI;AACA;AACI;AAAsD;QAAmB;AACzE;MACJ;AACA;AAAqF;MAAmB;AACxG;AACA;IACJ;AACA;AAAiD;IAAgD;AACjG;EACJ;AACA;AACI;AACA;AAEI;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACI;AACA;QACJ;AAAA;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;AACI;AACA;AACI;AAAwB;AAExB;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;MAGf;AAAA;AAEA;AACI;AACI;QACJ;AAAA;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;QACJ;AAAA;AAGA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACI;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACI;YACJ;AAEI;YACJ;AAAA;AACK;AAEL;AADG;MAGf;AAEI;AACA;AACI;QACJ;AAEI;QACJ;AAAA;AAGA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAEI;AACA;AACA;AACA;MACJ;AAAA;AAEJ;AACI;IACJ;AACA;AAA6E;IAAa;AAC1F;AACI;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AAAwE;IAAkB;AAC1F;AAAyE;IAA0B;AACnG;AACI;AACI;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AAAmD;MAAmB;AACtE;IACJ;AACA;AACI;AAAoD;MAAmB;AACvE;AACA;IACJ;AACA;AACI;AACA;AAAwB;MAA4C;AACpE;AAAwB;MAA4C;AACpE;AACI;AACI;AAAqB;AAErB;AAAsB;AAEtB;AAAqB;AAErB;AAAsB;AAEtB;AAAqB;AAErB;AAAqB;AAErB;AAAoB;AAEpB;AAAoB;AAEpB;AAAoB;AAEpB;AAAoB;AAEpB;AAAoB;AAEpB;AAAoB;AAEpB;AAAqB;AAErB;AAAoB;AAEpB;AAAqB;AAErB;AADG;IAGf;AACA;AACI;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AAGA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AAAuC;MACG;AAC1C;IACJ;AACA;AACI;AACA;AAAyC;MAAyC;IACtF;AACA;AACI;AACI;AACA;AACA;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;EACJ;AACA;AACI;AACI;AACI;AAAqB;QAA2E;AAAC;AAEjG;AAAuB;QAA6E;AAAC;AAErG;AAA2B;QAAiF;AAAC;AAE7G;AACI;QACJ;AAAC;AAED;AACI;QACJ;AAAC;AAED;AAAuC;QAA6F;AAAC;AAErI;AAA2C;QAAiG;AAAC;AAE7I;AAA+C;QAAqG;AAAC;AAErJ;AAAmD;QAAyG;AAAC;AAE7J;AAAuD;QAA6G;AAAC;AAErK;AAA2D;QAAiH;AAAC;AAE7K;AADG;EAGf;AAAA;AAEA;AAlbA;AACI;AAAa;AAkbovgD;ACnbrwgD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAKA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AAAmB;MAA2B;AAC9C;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACI;QACJ;AAAA;MAEJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;AACA;AAEI;QACJ;AAAA;MAIJ;AACA;AACA;AAAiB;AAErB;AACI;AAAmB;MAA6C;AAChE;AACA;AAAiB;AAErB;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;AAEJ;AACA;AAAiB;AAErB;AACI;AACI;AACA;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;AACA;AAKA;AACI;AACA;AACI;AACA;AACI;YACJ;AAEI;YACJ;AAAA;UAEJ;QACJ;AACA;AAA4F;QAAmC;AAC/H;MACJ;AACA;AACA;AAAiB;AAErB;EACJ;AACA;AArIA;AACI;AAAa;AAqIw9Q;ACtIz+Q;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAAgC;MAA+C;AAAA;AAE/E;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AA/BA;AACI;AAAa;AA+BwtE;AChCzuE;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAKA;AACA;A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A;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACuH;QAA8D;AAE7K;AACA;AACA;AACA;AACA;AACA;AAAqE;UAAyB;QAClG;AACJ;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEI;QACJ;AAAA;AAEJ;AACA;AACI;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AAAwD;MAAsC;AAC9F;AAEI;AACA;AACI;AACA;AACA;AACA;QACJ;AAAA;MAEJ;AAEI;AACI;AACA;AACA;QACJ;AAAA;AAEI;QACJ;AAEI;QACJ;AAAA;IAER;AACA;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AAIA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACI;MACJ;IACJ;AAAA;AAC2D;IAAgC;AAC3F;EACJ;AACA;AACI;AACI;IACJ;AAAA;AACJ;AAlLI;AAAa;AAmLwhvB;ACpLzivB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACI;AACI;IACJ;AAAA;AACJ;AAMA;AACI;AACA;AAMI;AAAmB;MAA4B;AAC/C;AAAwB;MAA6B;AACrD;AACA;AAAiB;AAErB;AACA;AACA;EACJ;AACA;AAhCA;AACI;AAAa;AAgCw4R;ACjCz5R;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AAKA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAe;AAEnB;AACI;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AAAkC;AAAwC;AAAsC;AAAsD;AAA8B;AAAoC;AAAoB;AAC5P;AACA;AACA;AACI;AAA8C;QAA+C;MACjG;AAAA;AAEA;AACA;AACI;AACA;AACA;AAA6C;QAA8C;MAC/F;AAAA;AAEA;AACA;IACJ;AAAA;AAEI;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AAGA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AA4BA;AAAmB;AAEvB;AACA;AAAiC;AAAsC;AAAmB;AAC1F;AAAiC;AAA6B;AAAmB;AACjF;AACI;AACA;AACA;AAAmB;AAEvB;AAA8B;AAAgC;AAAmB;AACjF;AAA8B;AAAgC;AAAmB;AACjF;AAA+B;AAA+B;AAAW;AACzE;AACA;AACA;AAA8B;AAA0B;AAAmB;AAC3E;AACA;AAA8B;AAAgC;AAAmB;AACjF;AAA8B;AAA6C;AAAmB;AAC9F;AAA8B;AAA6C;AAAmB;AAC9F;AAA+B;AAAuC;AAAmB;AACzF;AAA8B;AAA6C;AAAmB;AAC9F;AAAoC;AAAgC;AAAmB;AACvF;AAAkC;AAA0C;AAAmB;AAC/F;AACA;AACA;AACA;AACA;AACA;AAAoC;AAAoD;AAAkB;AAAG;AAEjH;AACA;AACI;AACA;EACJ;AAAA;AAEA;AACA;AACI;AACI;IACJ;AAAA;AAEA;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAjZA;AACI;AAAa;AAkZg2+B;ACnZj3+B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AACA;AAC6E;IAAa;AAC1F;AAA0E;IAAiB;AAC3F;EACJ;AACA;AAVA;AACI;AAAa;AAUw2B;ACXz3B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AAAyC;AAAyC;AAAkC;AACpH;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACI;AACA;AAGA;MACJ;AAAA;IAEJ;AACA;AACI;AAGI;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;IACJ;AACA;AAIA;EACJ;AACA;AA9DA;AACI;AAAa;AA8Do+I;AC/Dr/I;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACI;AACA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;AAAuC;IAAc;AACrD;EACJ;AACA;AAcA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;AAAyC;IAAgB;AACzD;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;AAG9C;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AAIA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAA0B;MAAgB;AAAA;IAE9C;AACA;AAAiD;IAA6C;AAC9F;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AAEI;AACA;AACA;IACJ;AACA;AAAqE;IAAgD;AACrH;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AAAgF;IAAa;AAC7F;AACI;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AAA0E;IAA2C;AACrH;AAAgF;IAAa;AAC7F;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AAA8B;MAAkC;AAChE;IACJ;AACA;AAAqE;IAAa;AAClF;EACJ;AACA;AACA;AACI;AACA;AAC2E;IAAY;AACvF;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AAAgE;IAAkD;AAClH;AACI;IACJ;AACA;EACJ;AACA;AAveA;AACI;AAAa;AAue4nlC;ACxe7olC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAEI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AAGI;AACA;AACI;MACJ;AAAA;AAEA;AACA;IACJ;AACA;AACI;AACI;AAAW;AAEf;AACI;AAAW;AAEf;AACI;AAAW;AAEf;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACI;AAAW;AAEf;AACI;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;AACA;AAEI;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACI;AACA;A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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAa;AAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AAAa;AAAU;AAAU;AAAU;AAAU;AAAU;AAAU;AAAU;AACnF;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AACgD;IAAqB;AACrE;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IAEJ;AACA;AACI;AAAwB;AAAsB;AAAkB;AAEhE;AACI;AACI;AACA;QACJ;AAEI;QACJ;AAAA;AACJ;AAEA;AACA;AACI;MACJ;AAAA;AAGI;AAA4B;AAE5B;AAA6B;AAEjC;AACI;AACI;AACA;AAA8F;AAElG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AAAsC;AAE1C;AACI;AAAwB;AAE5B;AACA;AACA;AACA;AACA;AACA;AACI;AAAwE;AAExE;AAAiE;AAErE;AACI;AAAiG;AAErG;AACI;AAAmH;AAEnH;AAAoE;AAEpE;AAA8D;AAE9D;AACI;AAAc;AACK;AAE/B;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AAYA;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;AAAc;AAElB;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AAGI;QACJ;AAEI;AACA;AACI;AAAc;AAEd;AAAkC;QAE1C;AAEI;QACJ;AAAA;MAEJ;AAAA;AAGA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACI;AAAkC;AAEtC;AACA;AACA;AAEI;AACA;AACI;YACJ;AAEI;YACJ;AAAA;AAEI;YACJ;AAAA;AAGA;AACA;UACJ;AAAA;AAEA;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AACJ;AAEA;AAEA;AACA;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;EACJ;AACA;AACI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;AAAY;AAEhB;AACI;AAAY;AAEhB;AACI;AACI;AAAY;IAEpB;AAAA;EAEJ;AAAA;AAEA;AACI;EAEJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEA;AACI;AACI;AACI;AAAkB;AAElB;AAAkB;AAElB;AAAkB;AAElB;AAAmB;AAEnB;AAAoB;AAEpB;AADG;EAGf;AAAA;AA0BA;AAzcA;AACI;AAAa;AAycgipC;AC1cjjpC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAgC;AAAiB;AACtE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;EACJ;AAAA;AAeiD;AAAmC;AAAO;AA/D3F;AACI;AAAa;AAwEo9L;ACzEr+L;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AACwD;IAAyC;AACjG;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AACwD;IAAyC;AACjG;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;AAEJ;AACA;AAAiB;AAErB;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AAIA;AACI;AACI;AACA;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAGI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACA;AACA;AACA;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AAII;AAIA;AAIA;AAIA;EACJ;AACA;AAIA;AACI;AAA0B;IAAgB;AAAA;AAE1C;AACI;AACA;AACI;MACJ;AAAA;AAEJ;EACJ;AAAA;AA/RA;AACI;AAAa;AAgSw2nB;ACjSz3nB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAgC;AAAiB;AACtE;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxCA;AACI;AAAa;AAwCg9D;ACzCj+D;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAMb;AACI;AACA;AACqC;IAAa;AAClD;EACJ;AACA;AAdA;AACI;AAAa;AAc4xB;ACf7yB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AAGI;AAEA;AAIA;AA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AGmB,QAAQ,KAAR,QAAQ;eAAR,QAAQ;SAAS,aAAa;;yBAA9B,QAAQ;;;;ACxD7B;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;EACF;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AAAoD;AAEpD;AACE;QACF;AAAA;AAEA;AACA;AACE;QACF;AAAA;AACF;AAEA;IACF;AAtCF;AACI;AAAa;AAsCjB;ACvCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAqD;AAAe;AADvF;AACI;AAAa;AAAyE;ACD1F;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AACI;AACF;AAAgB;IAEpB;AACE;IACF;AAAA;AAEF;AAbA;AACI;AAAa;AAajB;ACdA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAHA;AACI;AAAa;AAEhB;ACHD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACI;AACJ;EACF;AARA;AACI;AAAa;AAQjB;ACTA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AAAQ;AACyB;AACzB;AACkC;AAClC;AAC2C;AAC3C;AACoD;AACpD;AAC6D;AACrE;EACJ;AAfA;AACI;AAAa;AAchB;ACfD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;AACE;AACI;AACJ;AACE;AAAyB;AAEzB;QACF;AACA;AACA;MACF;AACA;AACE;MACF;AACA;AACE;AACE;QACF;MACF;AACE;AACA;AACA;AACA;MACF;AACE;AACE;QACF;AACA;MACF;AACE;AACE;AACE;AACA;UACF;QACF;MACF;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AAAe;EAEnB;AA1EA;AACI;AAAa;AA0EjB;AC3EA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACI;AACA;AACJ;AACE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACE;AAAc;AAEhB;AACE;AAAa;MAEjB;AAAA;AAEA;AACE;AAAc;AAElB;AACE;AACE;MACF;IACF;AACE;AACI;AACJ;AACA;AACE;MACF;IACF;AACE;AACE;MACF;IACF;AACE;AACE;MACF;IACF;AAAA;AAEE;AACE;AACA;AACA;AAA+B;AAEjC;AACE;AAAgB;AAEhB;AACA;MACF;AAAA;IAEF;EACF;AAnEA;AACI;AAAa;AAmEjB;ACpEA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACA;AACE;IACF;AACA;AACE;IACF;EACF;AAAa;AAEX;AACE;AAAY;AAEd;AACE;AACI;AACJ;AACE;MACF;AACA;AACE;MACF;AACA;IACF;AAAa;EAEf;AA5BA;AACI;AAAa;AA4BjB;AC7BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AAAyB;IAE7B;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;QACF;AAAA;AAEE;AACA;AACI;YACF;AACF;QACF;AAAA;AAEA;MACF;AAAA;IAEF;AACA;AACE;AACE;AAAW;IAEf;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACI;AACJ;AACE;AACE;AAA0C;AAE5C;MACF;AACA;IACF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;AAAM;AAER;AACA;AACE;AACI;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AACE;AACE;AAAe;AAEjB;AACE;cACF;AACE;cACF;AACE;AAAe;AAEjB;AAAa;AAEf;UACF;AAAA;AAEF;AACE;AAAe;AAEjB;AACA;AACE;AACE;AACI;AACA;AACJ;AACE;AACE;cACF;AACE;AACE;AACA;AAAY;cAEhB;AACE;cACF;AAAA;AACF;UAEF;AAAK;IAEX;AACA;AACE;AACI;AACA;AACA;AACJ;AACE;AAAY;AAEZ;AACA;AACE;AAAY;AAChB;IAEF;AACA;AACE;AACA;AACE;AAAM;AAER;AACA;AACA;AACA;AACA;IACF;AACA;AACE;AACI;AACJ;AACE;AAAM;AAER;AACA;AACE;AACE;AAAmD;AAEnD;AACE;AACE;AACA;AAAO;AAET;AACE;YACF;AACE;YACF;AAAA;QAEJ;AACE;AACA;AACA;QACF;AAAA;AAEA;AACE;AACA;AAAO;MAEX;AAAA;AAEF;AACE;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAO;AAET;AACE;QACF;AACE;QACF;AAAA;AAEF;AACE;AACE;AACI;AACA;AACJ;AACA;AACA;AACA;AACE;AAAuB;AAEvB;AAAqB;QAEzB;AACA;AACE;QACF;AAAA;IAEJ;AAAA;AAEA;AACA;AACA;AACA;AACI;AACI;AACJ;AACA;MACF;AACF;AACI;AACE;AAAQ;AAEN;AACJ;AACA;MACF;AACF;AACE;IACF;AACE;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACI;AACJ;AACE;AACE;AACA;AACE;AACE;AAAM;AAER;AACA;cACF;YACF;;AAEA;AAAgB;AAEpB;AACE;AAAoB;MAExB;AACA;AACE;AACI;AACA;AACJ;AACE;AACE;UACF;QACF;AACA;AACE;AAAoB;MAExB;AAAA;EAEJ;AAhTA;AACI;AAAa;AAgTjB;ACjTA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAkD;AAAe;AADpF;AACI;AAAa;AAAsE;ACDvF;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACA;AACE;AAAyC;EAE7C;AARA;AACI;AAAa;AAQjB;ACTA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAuD;AAAe;AADzF;AACI;AAAa;AAA2E;ACD5F;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;EACF;AACE;AACE;AACA;IACF;AACA;AACE;IACF;AAAA;AAdF;AACI;AAAa;AAejB;AChBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAA8C;AAAe;AADhF;AACI;AAAa;AAAkE;ACDnF;AAAA;AACI;AAAmB;AACnB;AADJ;AAGA;AACI;AAEI;AACI;MACJ;AAAA;AAGI;MACJ;AAAA;IAGJ;EACJ;AAAA;AAhBI;AAAa;AAiBjB;AClBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;AACA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AACF;AAEI;AACJ;AACE;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACA;AACA;AACE;AACA;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;AACF;AACF;AACF;AAEE;AACA;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;AAEF;AACE;AACA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;AACE;QACF;AAAA;AACF;AAEA;AACA;IACF;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;AACA;AACA;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;AACF;AACF;AAEE;AACA;AACI;AACF;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;IAEF;AACA;EACF;AAnIA;AACI;AAAa;AAmIjB;ACpIA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AACE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;EACF;AAAA;AAEE;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;AACA;AACA;AACA;AAAkB;IAEtB;AAAA;AAEE;AACE;AACA;AACA;AACA;AAAkB;IAEtB;AAAA;AAEA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACA;AACA;AACE;AACE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACJ;AACE;AACA;AACA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AACA;AACE;AACA;AACE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACJ;AACE;AACA;AACE;AACE;QACF;AAAA;AACF;AAEA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACA;AACE;AACA;YACF;AAAA;AACF;AAEE;UACF;AAAA;AACF;AACF;AAEF;EACF;AACA;AACE;AACA;AACE;AACA;AACE;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;IACF;AAAA;AAEA;AACA;AACI;AACJ;AACE;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACA;AACE;YACF;AACE;YACF;AAAA;AACF;AACF;AACF;AAEE;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACA;UACF;AAAA;AACF;AACF;IAEF;AAAA;AAEA;AACE;IACF;AACE;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AA1NA;AACI;AAAa;AA0NjB;AC3NA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAfA;AACI;AAAa;AAgBjB;ACjBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAdA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAfA;AACI;AAAa;AAgBjB;ACjBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AAAkC;AAEpC;AACE;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AArFA;AACI;AAAa;AAsFjB;ACvFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACA;AACE;IACF;AACE;AACE;MACF;AAAA;AAEE;MACF;AACA;IACF;AACE;AACA;AACA;AACA;AACA;AACE;MACF;AAAA;AAEE;MACF;AACE;AACA;AACA;MACF;AACE;AACA;AACA;MACF;AAAA;AAEE;AACE;AACE;UACF;AAAA;QAEF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AA5DA;AACI;AAAa;AA6DjB;AC9DA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAjBA;AACI;AAAa;AAkBjB;ACnBA;;AAAA;AACI;AAAmB;AACnB;AACJ;AAGA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuD;AAGzD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAoE;AAGtE;AAEA;AAAiB;AACf;AACA;AACA;EACF;AAAA;AAKA;AAAkB;AAChB;AACA;AACA;EACF;AAAA;AAhDI;AAAa;AAgDjB;ACjDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAjBA;AACI;AAAa;AAkBjB;ACnBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAdA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;AACA;EACF;AAAA;AAdA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAjBA;AACI;AAAa;AAkBjB;ACnBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAdA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AACE;EACF;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACE;AACA;IACF;AAAa;EAEf;AAAA;AArBA;AACI;AAAa;AAsBjB;ACvBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AACE;EACF;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACA;IACF;AACE;AACA;IACF;AAAA;AAEA;AACA;EACF;AAAA;AA5BA;AACI;AAAa;AA6BjB;AC9BA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AAAqE;AAEvE;AACE;AACA;AACA;AACA;EACF;AAAA;AApBA;AACI;AAAa;AAqBjB;ACtBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAdA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACI;AACA;AACA;AACJ;AACE;AACA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;AACA;MACF;AACE;AACA;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACA;AACE;IACF;AAAA;AAEA;AACE;AACA;IACF;AAAA;AAEA;AACI;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEE;IACF;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAlFA;AACI;AAAa;AAmFjB;ACpFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;EACF;AAAA;AAjBA;AACI;AAAa;AAkBjB;ACnBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;EACF;AAAA;AAjBA;AACI;AAAa;AAkBjB;ACnBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AACE;EACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACE;AACA;AACE;AACE;QACF;AAAA;AACF;IAEF;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAjCA;AACI;AAAa;AAkCjB;ACnCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;AACA;AACE;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AApCA;AACI;AAAa;AAqCjB;ACtCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;AACE;IACF;AAAA;AAEE;IACF;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;AACA;AACE;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAtCA;AACI;AAAa;AAuCjB;ACxCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AACF;EAEF;AAAA;AAjDA;AACI;AAAa;AAkDjB;ACnDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAgC;AAElC;AACE;AACA;AACE;IACF;AAAA;EAEF;AAAA;AA1CA;AACI;AAAa;AA2CjB;AC5CA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AACE;IACF;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AAEE;AACE;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA8B;AAEhC;AACE;AACA;AACA;EACF;AAAA;AAlEA;AACI;AAAa;AAmEjB;ACpEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACA;EACF;AACA;AACA;AACA;AACE;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;AACA;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAlBA;AACI;AAAa;AAmBjB;ACpBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;EACF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;EACF;AAAA;AAfA;AACI;AAAa;AAgBjB;ACjBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;EACF;AAAA;AAZA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAjBA;AACI;AAAa;AAkBjB;ACnBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AACE;EACF;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACA;IACF;AACE;AACA;IACF;AAAA;AAEA;EACF;AAAA;AA3BA;AACI;AAAa;AA4BjB;AC7BA;;AAAA;AACI;AAAmB;AACnB;AACJ;AAGA;AACA;AACE;AACE;IACF;AAAA;AACF;AAXA;AACI;AAAa;AAWkB;ACZnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AAAwB;AAE1B;AACE;AACA;AACA;AACE;IACF;AAAA;AAEA;AACE;AACA;AACE;MACF;AAAA;AACF;AAEI;AACF;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AACF;EAEF;AAAA;AA9CA;AACI;AAAa;AA+CjB;AChDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AAAgB;AAElB;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEA;AACA;AACE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AA3DA;AACI;AAAa;AA4DjB;AC7DA;;AAAA;AACI;AAAmB;AACnB;AACJ;AAGA;AACA;AACE;AACA;AAEA;AACE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAjBA;AACI;AAAa;AAiBkB;AClBnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACA;AAAqB;AAEvB;AACE;AACA;AACE;IACF;AAAA;AAEA;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAvCA;AACI;AAAa;AAwCjB;ACzCA;;AAAA;AACI;AAAmB;AACnB;AACJ;AAIA;AAAqG;EAAmB;AAAqB;EAAkG;AAE/O;AACA;AACE;AACE;AACE;MACF;AACE;MACF;AAAA;AAEA;IACF;AAAA;EAEF;AAAA;AArBA;AACI;AAAa;AAqBkB;ACtBnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA2B;AAE7B;AACA;AA5LA;AACI;AAAa;AA4LjB;AC7LA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADuC;ACAxD;AAAA;AACI;AAAmB;AACnB;AAAJ;AAEA;AACI;AACI;AACI;MACJ;AAAA;AAGA;AACI;MACJ;AAAA;AAKI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAGA;AACI;MACJ;AAAA;AAEA;AACI;MACJ;AAAA;AAOI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAiCA;AAEI;AAA6B;QAAc;AAAA;AAG3C;AAA0C;AAA6B;UAAc;AAAA;AAAE;AAC3F;IAEJ;AACA;AACI;IACJ;AACA;AACI;AAAgC;MAAa;AAAA;IAEjD;AACA;AACI;AAAgC;MAAa;AAAA;IAEjD;AACA;AACI;AACI;AACA;MACJ;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;IAIJ;AACA;AACI;IACJ;AAAA;AAGJ;AAhIA;AACI;AAAa;AAgIjB;ACjIA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACJ;AACE;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AACF;AAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACI;AACJ;AACE;AACE;YACF;AAAA;AACF;AACF;AAEE;AACA;AACE;AACE;AACA;AACE;cACF;AAAA;AACF;AACF;AAEE;UACF;AAAA;AACF;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEI;AACJ;AACE;AACA;AACE;AACA;AACE;UACF;AACE;AACA;AACE;AACA;AACE;cACF;AAAA;AACF;AACF;AACF;AACF;AAEF;AACE;AACI;AACJ;AACE;AACE;AACA;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACI;AACA;AACJ;AACE;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACI;AACA;AACJ;AACE;AACA;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;AAEF;AACA;AACE;AACA;AACE;AACE;AACE;AACE;YACF;AAAA;QAEJ;AACE;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;AACF;AAEF;AACE;AACA;AACE;AACE;AACE;AACA;AACA;QACF;AACE;AACE;AACA;AACA;UACF;AAAA;AACF;AACF;AAEA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEF;AACE;AACA;AACE;IACF;AAAA;AAEA;AACA;AACI;AACJ;AACE;AACI;AACJ;AACA;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEF;AACE;AACA;AACA;AACE;AACA;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;AACA;IACF;AAAA;AAEE;AACA;AACE;AACE;AACA;QACF;AACE;QACF;AACE;AACA;QACF;AAAA;MAEF;AAAA;AAEE;MACF;AAAA;AACF;AAEA;AACE;AACE;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;AACA;AACE;UACF;AAAA;AACF;AACF;AACF;AAEA;AACE;AACE;AACA;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAlaA;AACI;AAAa;AAkajB;ACnaA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACI;AACA;AACJ;AACA;AACA;AACA;AACA;AACE;AACA;AAAa;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;AACA;AACE;AACE;QACF;AAAa;AACf;IAEF;AAAA;AAEI;AACJ;AACA;AACA;AACA;AACA;AACI;AACJ;AACI;AACJ;AACI;AACJ;AAAiB;AAEf;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACI;AACJ;AACA;AACE;AACA;MACF;AAAA;AACF;AAEE;AACE;AACA;AACA;AAAiB;IAErB;AAAA;AAEE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;IAEF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;AACE;AACE;QACF;AAAA;AACF;IAEF;AAAA;AAEE;AACA;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;AACA;AACE;MACF;AACA;IACF;AACA;AACE;AACE;AACE;QACF;AAAa;AAEX;QACF;AAAa;AACf;IAEF;AAAA;AAEE;AACE;MACF;AAAA;AAEE;AACI;AACA;AACJ;AACE;QACF;AAAA;AAEA;AACA;MACF;AACA;AACA;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;IACF;AAAA;EAEF;AA9OA;AACI;AAAa;AA8OjB;AC/OA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD+C;ACAhE;AAAA;AACI;AAAmB;AACnB;AAMJ;AAGA;AAGA;AACI;AAGJ;AAOA;AAUA;AACE;AAEA;AACI;AAEJ;AACE;IACF;AAAA;EAEF;AAAA;AAUE;EACF;AAAA;AAWE;AACA;AACE;IACF;AAAA;EAIF;AAAA;AAqDA;AACE;EACF;AAAA;AAqBE;EAEF;AAAA;AA4BE;AACA;EACF;AAAA;AAtLA;AACI;AAAa;AAwLjB;ACzLA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;;AAAA;AACI;AAAmB;AACnB;AACJ;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA0F;AAzD9F;AACI;AAAa;AA2DjB;AC5DA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;IAEF;AACA;AACE;IACF;AACA;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AACE;AACI;AACJ;QACF;MACF;AAAA;AAEE;AACE;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;MAEJ;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACE;AACA;AACA;QACF;AAAA;IAEJ;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;AACE;AACE;UACF;AAAA;QAEF;MACF;AAAA;IAEF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;IAEF;AACA;AACE;AACA;AACE;AACE;AACA;AACA;AACE;AACE;YACF;AAAA;AACF;AAEE;UACF;AAAA;AACF;AACF;IAEF;AACA;AACE;AACE;MACF;AAAA;IAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAA2B;AAE7B;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACA;AACE;AACI;AACJ;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AACF;IAEF;AACA;EACF;AArKA;AACI;AAAa;AAqKjB;ACtKA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEF;AACE;AACA;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACA;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AAEA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AACF;AAEF;AACE;AACA;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEI;AACJ;AACE;AACI;AACJ;AACA;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEI;AACJ;AACE;AACI;AACJ;AACE;QACF;AACE;QACF;AAAA;AAEA;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACI;AACJ;AACE;AACI;AACA;AACJ;AACE;AACA;AACA;AACA;AACA;UACF;AACE;AACA;AACE;YACF;AAAA;AAEE;AACE;cACF;AAAA;AACF;AAEE;YACF;AAAA;AAEA;UACF;AAAA;AACF;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AAEA;MACF;AAAA;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACI;AACJ;AACE;AACI;AACJ;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AAAuB;AAEzB;AACE;AACA;AACE;IACF;AAAA;EAEF;AACA;AACE;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACE;AACA;AACA;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AACA;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;AACE;UACF;AAAA;MAEJ;AAAA;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;AAAC;AAAC;AAAnyE;AACI;AAAa;AADmxE;ACApyE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAoB;AAEtB;AACE;AACA;AACA;AACA;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;MAEF;AACE;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;AACE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACE;AACE;UACF;AACA;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEA;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACA;MACF;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACI;AACJ;AACE;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACI;AACJ;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEA;AACA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;AACE;AACA;AACI;AACJ;AACE;AACE;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;EAEJ;AAAA;AAEE;AACE;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AACF;AACF;AAEE;AACE;IACF;AAAA;AAEA;AACE;AACA;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AACF;AACF;AAEE;AACE;IACF;AAAA;AAEE;IACF;AAAA;AACF;AAhKI;AAAa;AAiKjB;AClKA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACJ;AACA;AACA;AACA;AAPA;AACI;AAAa;AAOjB;ACRA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACJ;AACA;AACE;AACA;EACF;AAAA;AAEI;AACA;AAAe;AAEnB;AAbA;AACI;AAAa;AAajB;ACdA;;AAAA;AACI;AAAmB;AACnB;AAEJ;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACE;AACE;AACA;AACE;UACF;AAAA;AAEE;AACE;YACF;AACE;YACF;AAAA;AAEA;UACF;AAAA;MAEJ;AAAA;EAEJ;AA1BA;AACI;AAAa;AA0BjB;AC3BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACJ;AACE;AACA;AACA;AACA;AACE;AACE;AACA;AACE;UACF;AAAA;AAEE;UACF;AACE;UACF;AAAA;MAEJ;AAAA;EAEJ;AAvBA;AACI;AAAa;AAuBjB;ACxBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACE;MACF;AACA;AACE;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;EAEJ;AArBA;AACI;AAAa;AAqBjB;ACtBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACE;AACA;AACA;AACE;MACF;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;EAEJ;AAlBA;AACI;AAAa;AAkBjB;ACnBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAGE;AACE;AACA;AACA;AACA;AACE;AACE;AACA;AACE;UACF;AAEE;AAAyB;AAC7B;AAEF;AACA;IACF;EAEF;AAAA;AAvBI;AAAa;AAwBjB;ACzBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;MACF;AACA;AACE;AACE;AACA;AACE;UACF;AACE;UACF;AAAA;AAEA;AACE;AACE;AACE;cACF;AACE;cACF;AAAA;UAEJ;AACE;UACF;AAAA;MAEJ;AAAA;EAEJ;AApCA;AACI;AAAa;AAoCjB;ACrCA;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AACA;AACC;AACA;EACD;AAAa;AAKb;AAEA;AACC;AACC;AACA;IACD;AAAa;EAEd;AAAA;AAKA;AAEA;AAGA;AACA;AAEA;AACA;AAEA;AACE;EACF;AAAA;AAtCA;AACI;AAAa;AAwCjB;ACzCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AAAM;AAER;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;QACF;MACF;AACA;AACE;AACA;AACA;AACA;AACA;AACI;AACA;AACF;AACA;QACF;AAAA;AAEA;AACE;AACE;AACE;AAAM;AAEN;AACA;YACF;AAAA;AAEA;UACF;QACF;AAAA;MAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACE;cACF;AAAA;YAEF;AACE;YACF;AACE;YACF;AAAA;UAEF;AAAA;AAEF;AACA;AACE;AACA;AACE;AACA;AACE;YACF;AAAA;AACF;AAEE;AAAuB;AAC3B;AACF;AAEF;AACA;AACA;AACE;AACA;AACA;AACA;AACE;AACE;AACE;AAAK;AAEL;UACF;AAAa;AAEX;AACA;UACF;AAAA;AAEA;AACE;UACF;AACE;AACA;UACF;AAAA;AAEE;AACA;AACE;AACA;AACE;AAAwC;YAE5C;AACE;YACF;AAAA;UAEF;AAAA;AACK;AAEL;AACE;AAAK;AAEP;AACA;AAAK;AAEL;AACA;AACE;AAAK;AAEP;AAAK;AAEL;AACA;AACE;AAAK;AAEP;AACE;AACE;AACA;YACF;AAAA;AAEF;AACE;UACF;AACA;AACA;AAAK;AAET;AACE;MACF;AAAA;EAEJ;AA9JA;AACI;AAAa;AA8JjB;AC/JA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AACA;AACA;AACE;AACE;MACF;AACE;AACE;AAAuC;AAC3C;AAEF;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;AACA;AACE;AAAiE;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAAuD;AAEzD;MACF;AAAA;AACF;AAEA;AACE;AACA;AACE;AAA4B;AAE9B;AACA;AACE;AAAyB;IAE7B;AAAA;AAEE;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACE;MACF;AACE;AACA;MACF;AACE;AACE;AACA;QACF;AACE;AACA;QACF;AACE;AACA;AACE;AACA;UACF;AAAA;AAEE;AAAqB;AAErB;AACE;AACA;YACF;AACE;AACA;AACE;;AAEA;AAAwB;AAExB;AAAoB;AACxB;AACF;QAEF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;AAAuD;AAEzD;AACA;IACF;AACA;AACA;AACE;AACE;MACF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;MACF;AAAA;IAEF;AAAA;AAEE;AACE;AAAQ;AAER;AAAsB;AAEtB;AACE;;AAEA;AAAmB;AACvB;AAEE;AAAQ;AAER;AAAgD;AAEhD;AACE;AACA;QACF;AACE;QACF;AAAA;AACF;IAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAA6B;AAE7B;AACA;AACE;;AAEA;AAAkB;MAEtB;AAAA;AAEA;AACE;AACE;AAAiB;MAErB;AAAA;AAEA;AACA;AACE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAyB;AAE3B;MACF;AAAA;AAEE;AAA+B;AAEjC;AACE;;AAEA;AAAU;AAEV;AACA;MACF;AAAA;AAEA;AACE;AAAyB;AAEzB;AAAiB;AAEjB;AAAsB;IAE1B;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACE;AAAM;AAEN;AACA;AACE;AACA;QACF;AAAA;AACF;AAEA;IACF;AAAA;AAEE;AACA;AACA;AACE;AACA;AACA;AACE;;AAEA;AAAqB;AACzB;AACF;AAEE;AACA;AACA;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACE;AACA;AACA;AACE;;AAEA;AAAkB;AACtB;IAEF;AAAA;AAEE;IACF;AACA;AACE;AACA;AACA;AACE;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACA;AACA;AACA;AACE;;AAEA;AAAsB;AAExB;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;AACA;MACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAS;AACb;AAEA;AACE;AACA;AACA;AACE;AACE;AACA;UACF;AAAA;QAEF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AAAsB;AAC1B;AAEE;SACG;AACH;;AAEA;AAAkD;AAElD;AACA;MACF;AAAA;AAEA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACA;AACE;AAAkB;AAElB;AACA;QACF;AAAA;IAEJ;AAAA;AAEE;AACA;AACE;AAAW;AAEX;AACE;AAAW;AAEX;AAAkB;AAEpB;AACA;AACA;AACE;AAAyB;MAE7B;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AAAW;AAEb;AACA;AACE;AAA4B;AAE9B;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;IAEF;AACA;AACA;AACE;AACA;IACF;AAAA;AAEE;AACA;AACE;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACE;AACA;MACF;AAAA;AAEA;AACA;AACA;AACE;AAAc;AAClB;AAEE;AACA;AACE;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AAAgB;AACpB;MAEF;AACA;AACE;AACA;AACE;AAAkC;AAElC;WACG;AACH;AAAM;AAER;AACE;AACA;QACF;AAAA;AAEF;AACE;AACE;AACE;AACE;YACF;UACF;QACF;AAAA;AACF;AAEA;AACE;MACF;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AAEF;IACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AAAW;AAEX;SACG;AACH;SACG;AACH;AACE;WACG;AACH;;AAEA;AAAiC;MAErC;AACE;AACE;AACA;AACA;QACF;AACE;QACF;AACE;AACE;;AAEA;AAAmB;AAErB;AACI;AACF;AACA;AACA;AACE;;AAEA;AAAwB;AAExB;;AAEA;AAAY;UAEhB;AAAA;AACF;AACF;IAEF;AAAA;AAEE;AACA;AACE;AAAyD;AAEzD;AACA;MACF;AAAA;AACF;AAEE;AACE;AACA;AACA;MACF;AAAA;AACF;AAEE;AACI;AACF;MACF;AAAA;AACF;AAEE;AACI;AACF;AACE;AAAQ;AACZ;IAEF;AAAA;AA9oBF;AACI;AAAa;AA+oBjB;AChpBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;IACF;AACE;IACF;AAAA;AAEE;AACA;AACA;AACE;MACF;AAAA;AAEE;MACF;IACF;AAAA;AAjBF;AACI;AAAa;AAkBjB;ACnBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AAGJ;AAoBA;AACE;AACE;IACF;AAAA;AAGA;AACE;AACE;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;MAEF;AAAA;IAEF;AAAA;EAGF;AAAA;AAYE;AACE;AAA0B;AAAY;AAEtC;IACF;AAAA;AAEA;AAAiB;AAAY;EAE/B;AAAA;AAjEI;AAAa;AAkEjB;ACnEA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACE;AACE;AAAuC;AAC3C;AAEF;AACA;AACA;AAAgB;AAEd;AACA;AACA;AACA;IACF;AAAA;AAEA;AACE;AACA;AACA;AACA;AACE;AAAiE;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;MACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACI;UACF;MACJ;AAAa;AAEf;AACA;AACE;AACA;AACE;AAA4B;AAE9B;AACA;AACE;AACE;AAA2B;AAE3B;AAA6B;AACjC;IAEF;AAAA;AAEE;IACF;AACA;AACE;AACA;AACA;IACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACA;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEE;SACG;AACH;AAAgC;AAEhC;AAAQ;AAER;SACG;AACH;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACE;AACA;AACE;AAAwB;AAC5B;AAEF;AACE;AACE;AAAiC;AAEjC;AAAoD;IAExD;AACA;AACE;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;AAAmB;AAErB;AACA;AACA;AACE;AAAsB;AAEtB;AACA;AACA;AACE;QACF;AACE;QACF;AAAA;MAEF;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;;AAEA;AAA6C;IAEjD;AAAA;AAEE;AACA;AACE;;AAEA;AAAM;AAER;IACF;AAAA;AAEE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;SACG;AACH;AACA;AACE;QACF;AAAA;AAEE;QACF;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AAA2B;AAE7B;AACA;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;QACF;AAAA;AAEA;AACA;AACA;AACA;MACF;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;UACF;AAAA;AACF;AAEE;AAAgC;AACpC;AAEA;AACA;IACF;AAAA;AAEE;IACF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AACE;AACA;MACF;AAAA;AAEE;AAA2B;AAE3B;AACA;MACF;AAAA;AAEE;AAA4B;AAEhC;AACE;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACE;AACE;AACA;AACA;QACF;AACE;QACF;AAAA;AACF;IAEF;AAAA;AAEE;AACA;AACA;AACE;AACE;;AAEA;AAAyB;AAC7B;AAEA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACA;AACA;AACE;AACA;AACA;AACA;QACF;AAAA;AAEE;QACF;AACE;QACF;AAAA;IAEJ;AAAA;AApWF;AACI;AAAa;AAqWjB;ACtWA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AAAqD;AACzD;AAEE;AACE;AAA0B;AAE5B;AACA;AACE;AAAqB;AAErB;AAAqB;AAEvB;AACE;AAA0B;IAE9B;AAAA;AAEE;AACE;AAAM;IAEV;AAAA;AAEE;IACF;AAAA;AAEE;AACI;AACF;MACF;AAAA;AACF;AAlDF;AACI;AAAa;AAmDjB;ACpDA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAuE;AAEzE;AACA;AACE;AAAiB;AAEnB;AACA;AACA;AACE;MACF;AAAA;AACF;AAEE;AACE;AAA6B;AAE/B;AACA;AACA;AACA;AACA;AACE;AACE;AAAmC;AAEnC;AAA2B;AAC/B;AAEE;AACE;AACE;UACF;;AAEA;AAAY;IAElB;AAAA;AAEE;AACA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AAA4B;AAChC;AAEF;AACE;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;AAA+B;AAEjC;AACA;AACE;AAA6D;AAE7D;AAAiE;IAErE;AAAA;AA/FF;AACI;AAAa;AAgGjB;ACjGA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAA+B;EAEnC;AAAA;AAEE;EACF;AAdA;AACI;AAAa;AAcjB;ACfA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACE;AACE;MACF;AAAa;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAhBF;AACI;AAAa;AAiBjB;AClBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADgD;ACAjE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACA;AACA;AACE;QACF;AAAA;MAEF;AACE;MACF;AAAA;EAEJ;AAtBA;AACI;AAAa;AAsBjB;ACvBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD4C;ACA7D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACA;AACA;AACE;AAAoF;AAEpF;MACF;AACA;AACA;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEA;AACE;MACF;IACF;AACA;AACA;AACE;AACA;AACA;AACE;AAAM;AAEN;AACA;AAAW;IAEf;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACE;AAAM;AAER;AACA;AACA;AACE;AACE;AACE;UACF;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AACA;AACE;AACA;AACA;AACA;AACA;AAA4D;AAE5D;AACA;QACF;AACE;QACF;MACF;AACE;AACA;AACE;QACF;AACE;AACE;UACF;AACA;QACF;AAAA;AAEE;AAA2C;AAE3C;AAA4C;AAE5C;AAA0D;AAE1D;QACF;AACA;AACA;AACE;AACE;AACA;AACE;AACA;AAAK;QAEX;AACA;AACE;AACE;UACF;QACF;AAAA;AAEE;AACE;AAAM;QAEV;AACA;AACE;QACF;AACE;AACE;UACF;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;AACA;MACF;AACE;MACF;AAAA;AACF;AAEE;AACA;AACE;AAAM;AAEN;AAAe;IAEnB;AACA;AACE;AACA;AACE;AAAM;AAER;IACF;AACA;AACE;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACE;AAAgC;AAEhC;AAAiB;AAErB;AACE;AACA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACA;AACA;AACA;AACA;EACF;AAtMA;AACI;AAAa;AAsMjB;ACvMA;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AAEA;AACI;AAEA;AACI;AAEA;AACI;AACI;QACJ;AAAA;AACJ;AACJ;EAGJ;AAAA;AAlBI;AAAa;AAmBjB;ACpBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADoC;ACArD;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuC;AA9DzC;AACI;AAAa;AA+DjB;AChEA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADoD;ACArE;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACE;AACE;;AAEA;AAAmB;AAErB;AACA;AACA;AACA;AACA;AACE;AAAuB;AAEzB;AACA;AACA;AACA;AACE;AAAsB;EAE1B;AACA;AACE;AACA;AACA;EACF;AACA;AACA;AACA;AACA;AAlCA;AACI;AAAa;AAkCjB;ACnCA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyC;ACA1D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAXF;AACI;AAAa;AAYjB;ACbA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AAmBJ;AACE;AACA;EACF;AAAA;AAIA;AAEA;AACA;AAIA;AAIA;AACE;AACE;AAA8C;AAEhD;EACF;AAEA;AACE;AAAQ;AAAS;AAAK;AAAM;AAAG;AAE/B;AACE;AAAiB;AAIjB;AAEE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAIA;AACE;AAAY;AAGZ;AAEE;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAGL;AACA;AACA;AACE;AAA0B;AAJvB;IAOX;AACE;AACA;AACA;AACE;AAA0B;AAG5B;AACA;AACE;AAA8B;AAClC;EAGF;AAEA;AACE;AAEA;AACE;AAA8C;AAG9C;AAAiB;AAKjB;AAEuC;AAIvC;OACG;AAEH;;AAGA;AAAmD;AAInD;AACA;AACE;MACF;AACE;MACF;AAAA;AAGE;AACA;AAIA;AAEE;QACF;AAAA;AACF;AACF;EAGF;AAEA;AAEA;AACE;AACE;AAA8C;AAIhD;AACE;AAEA;AACE;AACA;MACF;AAAA;AACF;AAGA;AAEA;EACF;AAGA;AACE;AAAU;AAAU;AAAQ;AAE5B;AACE;AAA8C;AAG9C;AAAW;AAGb;AACA;AAEA;AAEE;AACA;AACE;AAA2C;AAG7C;AACE;AAEE;AACA;QACF;AAAA;AACF;AAGE;AAAW;AAGX;AACA;MACF;AACE;MACF;AAAA;AAGE;AAA2C;AAC/C;EAGF;AAEA;AACE;AAAS;AAET;AACE;AAAW;AAIX;AACE;SACG;AACH;AAAyB;IAE7B;AAAA;AAIE;AACE;AAA8B;AAAQ;MAExC;AAAA;AAEA;AACA;IACF;AAAA;AAIA;AACE;IACF;AAEE;AACE;AAA0D;AAC9D;AAGA;EACF;AAEA;AACE;AACA;AACE;OACG;AACH;;AAEA;AAAgC;EAEpC;AAEA;AACE;AACA;AACE;OACG;AACH;;AAEA;AAAkC;EAEtC;AAEA;AACE;EACF;AAAA;AAGE;EACF;AAAA;AAGE;EACF;AAAA;AAGE;EACF;AAAA;AA3SI;AAAa;AA4SjB;AC7SA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAuE;ACDxF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAW;AAEX;AADK;IAGX;AACA;AACE;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACE;AACA;AAAK;AAEP;AACE;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACA;IACF;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACE;QACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;QACF;AAAA;AAEA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACE;AACA;MACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AAEE;AACA;QACF;AAAA;AAEE;AACA;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;AACE;AAAwB;AAExB;AACA;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AArIF;AACI;AAAa;AAsIjB;ACvIA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AAAC;AAEH;AACA;AACA;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAiE;AAEnE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAAuD;AAEzD;MACF;AAAA;AACF;AAEE;AACA;AACE;AAA4B;AAE9B;AACA;IACF;AAAA;AAEE;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AACE;AACA;AACE;AAAyB;AAE3B;AACE;AACA;QACF;AACE;AACA;QACF;AACE;AACE;AAAkC;AAElC;AAAqB;AAErB;AACA;UACF;AACE;AACA;AACE;;AAEA;AAAwB;AAExB;AAAoB;AACxB;QAEF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;AAAuD;AAEzD;AACA;IACF;AACA;AACA;AACE;AACE;MACF;AACE;AACA;AACE;AAAW;MAEf;AAAA;IAEF;AAAA;AAEE;AACE;AAAQ;AAER;AAAsB;AAEtB;AACE;;AAEA;AAAmB;AACvB;AAEE;AAAQ;AAER;AAA8C;AAE9C;AACE;AACA;QACF;AACE;AAAmB;AACvB;IAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAA6B;AAE7B;AACA;AACE;;AAEA;AAAkB;MAEtB;AAAA;AAEA;AACE;AACE;AAAiB;MAErB;AAAA;AAEA;AACA;AACE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAyB;AAE3B;MACF;AAAA;AAEE;AAA+B;AAEjC;AACE;;AAEA;AAAU;AAEV;AACA;MACF;AAAA;AAEA;AACE;AAAyB;AAEzB;AAAiB;AAEjB;AAAsB;IAE1B;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;AAEA;IACF;AAAA;AAEE;AACA;AACA;AACE;AACA;AACA;AACE;AACE;UACF;;AAEA;AAAqB;AACzB;AACF;AAEE;AACA;AACA;IACF;AAAA;AAEE;AACE;AACA;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACE;AACA;AACA;AACE;;AAEA;AAAkB;AACtB;IAEF;AAAA;AAEE;IACF;AACA;AACE;AACA;AACA;AACE;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACA;AACA;AACA;AACE;;AAEA;AAAsB;AAExB;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;AACA;MACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAS;AACb;AAEA;AACE;AACA;AACA;AACE;AACA;AACA;QACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AAAsB;AAC1B;AAEE;SACG;AACH;;AAEA;AAAkD;AAElD;AACA;MACF;AAAA;AAEA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACA;AACE;AAAkB;AAElB;AACA;QACF;AAAA;IAEJ;AAAA;AAEE;AACA;AACE;AAAW;AAEX;AACE;AAAW;AAEX;AAAkB;AAEpB;AACA;AACA;AACE;AAAyB;MAE7B;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACE;AAA6B;MAEjC;AAAA;AAEA;AACE;AAAW;AAEb;AACA;AACE;AAA4B;AAE9B;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACA;AACE;AACA;AACE;AACA;YACF;UACF;AACE;UACF;AAAA;AACF;AACF;IAEF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACE;AACA;QACF;AAAA;MAEF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AAAc;AAClB;AAEE;AACA;AACE;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AAAgB;AACpB;MAEF;AACA;AACE;AACA;AACE;AAAkC;AAElC;AAAM;AAER;AACE;AACA;QACF;AAAA;AAEF;AACE;AACE;AACE;AACE;YACF;UACF;QACF;AAAA;AACF;AAEA;AACE;MACF;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AAEF;IACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AAAW;AAEX;SACG;AACH;SACG;AACH;AACE;;AAEA;AAAiC;MAErC;AACE;AACE;AACA;AACA;QACF;AACE;QACF;AACE;AACE;;AAEA;AAAmB;AAErB;AACI;AACF;AACA;AACA;AACE;;AAEA;AAAwB;AAExB;;AAEA;AAAY;UAEhB;AAAA;AACF;AACF;IAEF;AAAA;AAEE;AACA;AACE;AAAyD;AAEzD;AACA;AACE;AACE;AACA;AACA;UACF;AAAA;MAEJ;AAAA;AACF;AAEE;AACI;AACF;MACF;AAAA;AACF;AAEE;AACI;AACF;AACE;AAAQ;AACZ;IAEF;AAAA;AA7mBF;AACI;AAAa;AA8mBjB;AC/mBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAiE;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;MACF;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACE;AAA4B;AAE9B;AACA;IACF;AAAA;AAEE;IACF;AACA;AACE;AACA;AACA;AACE;MACF;IACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACE;QACF;AACA;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEE;SACG;AACH;AAAgC;AAEhC;AAAkB;AAElB;SACG;AACH;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACE;AACA;AACE;AAAwB;AAC5B;AAEF;AACE;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;AAAmB;AAErB;AACA;AACA;AACE;AAAsB;AAEtB;;AAEA;AAAuD;IAE3D;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;;AAEA;AAA6C;IAEjD;AAAA;AAEE;AACE;AACE;AACA;QACF;SACG;AACH;AACA;MACF;AAAA;AAEA;IACF;AAAA;AAEE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;SACG;AACH;AACA;AACE;QACF;AAAA;AAEE;AACE;UACF;QACF;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AAA2B;AAE7B;AACA;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACE;AACA;AACE;AAAkC;AAEpC;AACE;AACE;AACA;UACF;AAAA;AAEF;MACF;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;UACF;AAAA;AACF;AAEE;;AAEA;AAAuB;AAC3B;IAEF;AAAA;AAEE;IACF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AACE;AACA;MACF;AAAA;AAEE;AAA2B;AAE3B;AACA;MACF;AAAA;AAEE;AAA4B;AAEhC;AACE;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACE;AACE;AACA;AACA;QACF;AACE;AAAwB;AAC5B;IAEF;AAAA;AAEE;AACA;AACA;AACE;AACE;;AAEA;AAAyB;AAC7B;IAEF;AAAA;AA1RF;AACI;AAAa;AA2RjB;AC5RA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACA;AACE;AAAc;IAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAAqD;AAEzD;AACE;AACE;AAA0B;AAE5B;AACA;AACE;AAAqB;AAErB;AAAqB;AAEvB;AACE;AAA0B;IAE9B;AAAA;AAEE;AACE;AAAM;IAEV;AAAA;AAEE;AACI;AACF;MACF;AAAA;AACF;AA1CF;AACI;AAAa;AA2CjB;AC5CA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAuE;AAEzE;AACA;AACE;AAAiB;AAEjB;AAAM;AAER;AACA;AACE;MACF;AAAA;AACF;AAEE;AACE;AAA6B;AAE/B;AACA;AACA;AACA;AACA;AACE;AACE;AACE;UACF;;AAEA;AAAY;IAElB;AAAA;AAEE;AACA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AAA4B;AAChC;AAEF;AACE;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;AAA+B;AAEjC;AACA;AACE;AAA6D;AAE7D;AAAiE;IAErE;AAAA;AAxFF;AACI;AAAa;AAyFjB;AC1FA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACE;AACE;MACF;AAAA;IAEF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAhEF;AACI;AAAa;AAiEjB;AClEA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD6C;ACA9D;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAA+B;EAEnC;AAAA;AAEE;EACF;AAbA;AACI;AAAa;AAajB;ACdA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACE;AACE;AACE;QACF;AAAA;AACF;AACF;AAEA;AACE;AACE;MACF;AAAA;AACF;AAEA;AACE;AACA;IACF;AAAA;AAEA;AACE;AACE;AAAM;AAER;IACF;AAAA;AAEE;AACE;AAAM;AAER;AACE;AAAc;AAClB;AAEE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEA;AACA;AACA;AACA;EACF;AAxEA;AACI;AAAa;AAwEjB;ACzEA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD+C;ACAhE;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAkF;ACDnG;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACE;AACA;EACF;AACA;AACA;AACE;AACA;AAAY;AAEd;AACE;AACA;AACA;AACE;AACA;AACE;AAAQ;AAEV;AACE;AACI;AACJ;AACE;AACE;UACF;AACE;UACF;AAAA;AAEA;QACF;AAAA;AAEA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACE;AAAuC;AAEvC;AAAmB;EAEvB;AACA;AACE;EACF;AACA;AACE;AACE;AACE;AACA;MACF;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;AACA;AACA;QACF;AAAA;AACa;AAEb;MACF;AACE;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;AAEA;AACE;MACF;AACE;AAAgB;IAEpB;AAAA;AAEF;AACE;AACA;AACE;AACA;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEF;AACE;EACF;AApGA;AACI;AAAa;AAoGjB;ACrGA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAAC;AAEC;AACA;AAEA;AACE;IACF;AAAA;AAEA;AAIA;AAEE;AAEa;AAAU;AAAS;AAAa;AAQ3C;AACA;AACE;QACF;AAAA;MAEF;AAAA;IAEF;AAIA;AAEE;AACA;AACE;MACF;AAAA;AAGc;AAAI;AAAQ;AAAS;AAUjC;MACF;AAAA;IAEF;EAEF;AA7DA;AACI;AAAa;AA6DjB;AC9DA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAa;AAEX;AACE;MACF;AAAa;AAEf;AACE;IACF;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AAAQ;AAEV;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;AACE;AAAM;IAEV;EACF;AACA;AACA;AACE;EACF;AACA;AACE;EACF;AACA;AACE;EACF;AACA;AACE;EACF;AACA;AACE;AACA;AACA;EACF;AACA;AACE;AACE;AAAiB;AAEnB;AACE;AACA;AACA;AACE;AACE;QACF;AAAA;AAEA;AAAqC;AACzC;AAEE;IACF;AACE;IACF;AACE;AACA;AACE;MACF;AAAA;IAEF;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;IAEF;AACE;IACF;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEF;AACA;AACE;AACE;AAAY;EAEhB;AACA;AACE;AACA;AACE;AAAc;EAElB;AACA;AACE;EACF;AACA;AACE;AACE;AAAoB;AAEpB;AACE;AAAQ;AACZ;EAEF;AACA;AACE;AACE;AAAW;AAEX;AAAW;AAEX;AAAW;AAxJf;AACI;AAAa;AAyJjB;AC1JA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AACE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AAAA;AAEE;AAAW;AAEX;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AAAoD;AAEtD;AACE;AAAsB;IAE1B;AACA;AACE;AACA;AACA;AACA;IACF;AACA;AACA;AACA;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACE;AACA;AACE;AACE;AACA;AACA;cACF;AACE;cACF;AAAA;UAEJ;AAAa;AACf;MAEF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqC;EAEzC;AAAA;AAtII;AAAa;AAuIjB;ACxIA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADmD;ACApE;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACE;AACE;AAAsB;AAC1B;AAEA;AACE;AACE;AAAW;AAEb;EACF;AAbA;AACI;AAAa;AAajB;ACdA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAgF;ACDjG;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADiD;ACAlE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;MACF;AACA;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEF;AACE;AACE;AACA;AACA;AACA;AACE;AACE;UACF;AACE;AACE;YACF;AACE;YACF;AACE;AACA;AACA;YACF;AAAA;AAEA;UACF;AAAA;AAEA;QACF;MACF;IACF;AAAA;AAEE;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAA2C;AAE7C;AACE;QACF;AAAA;AAEE;QACF;AACA;AACA;AACE;AACA;AACE;UACF;AACA;AACA;AACE;UACF;QACF;MACF;IACF;AAAA;AAlFF;AACI;AAAa;AAmFjB;ACpFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACA;AACE;MACF;AACA;AAAmC;EAEvC;AAVA;AACI;AAAa;AAUjB;ACXA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;EACF;AAAA;AAEE;AACE;AACA;AACA;AACA;AAAmB;AAErB;AACE;AACA;AACA;AAAa;AAEf;AACA;AAAoC;AAEtC;AACE;AACE;AACA;AACE;AACA;AACA;AACA;AACE;QACF;AACE;QACF;AAAA;AACF;AACF;EAEF;AAAA;AAEE;EACF;AAAA;AA9CI;AAAa;AA+CjB;AChDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACJ;AACA;AACE;AACA;AACA;EACF;AAAA;AAEE;AACA;AACE;IACF;EACF;AACA;AACE;AACA;AACA;AACE;AACA;IACF;EACF;AACA;AACA;AACE;AACE;AACA;IACF;AACE;IACF;AAAA;AAEF;AACE;EACF;AACA;AACE;AACA;AACA;AACA;AACE;IACF;AAAA;EAEF;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AACA;AACE;AACA;AACA;AACA;AACE;IACF;AAAA;EAEF;AACA;AACE;AACA;AACA;EACF;AACA;AACE;AACA;AACA;AACE;AACE;MACF;IACF;AAAA;AAEE;AACE;AACA;AAAiF;IAErF;EACF;AAAA;AAnFI;AAAa;AAoFjB;ACrFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACJ;AACE;AACE;IACF;AACE;AACA;IACF;EACF;AACA;AACE;AACE;IACF;EACF;AACA;AACE;AACE;IACF;AACA;AACE;IACF;EACF;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;AACA;AACE;QACF;AAAA;AAEE;AACA;AACA;AACE;UACF;AACE;UACF;AAAA;AAEA;QACF;AAAA;AACF;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACA;AACE;AACA;AAAa;MAEjB;AAAA;AAEE;AACA;AACA;MACF;AAAA;EAEJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAEE;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAnFI;AAAa;AAoFjB;ACrFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;QACF;MACF;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEF;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACE;AACE;QACF;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;QACF;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEA;AACE;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEE;AACE;AACA;AACA;AACA;QACF;AACE;QACF;AAAA;AACF;AAEA;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;AAAA;AAEA;AACA;AACE;AACA;AACE;UACF;QACF;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AAEA;AAA4C;AAE5C;AACA;AACA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AACE;AACA;QACF;AAAA;AACF;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;AACA;AACE;AACE;YACF;AAAA;AAEA;AACE;YACF;AACE;YACF;AAAA;AAEA;AACE;YACF;AAAA;AAEA;UACF;AACA;AACE;AACA;UACF;AAAA;MAEJ;AAAA;AAEE;AACE;QACF;AACE;QACF;AACE;AACE;UACF;AACE;UACF;QACF;AAAA;AACF;AAEE;AACE;QACF;AACE;AACE;UACF;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACA;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;AACF;AAEE;AACA;AACA;AACE;QACF;AAAA;AAEI;AACA;AACJ;AACE;AACA;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;MAEF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;AACA;QACF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;AACA;UACF;AACE;UACF;AAAA;AAEE;AACA;UACF;AAAA;AAEA;AACA;QACF;AAAA;AAEE;QACF;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;AACE;UACF;AACE;UACF;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACA;QACF;AAAA;AAEA;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACA;AACA;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;QACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEF;AACA;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACE;UACF;AACE;AACA;AACA;AACE;YACF;AAAA;AACF;AAEA;QACF;AAAA;AACF;AAEE;MACF;AACA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEF;AACE;AACA;AACA;AACE;AACA;AACE;UACF;AACE;AACA;UACF;AACE;AACA;AACA;UACF;AACE;AACE;YACF;UACF;AAAA;AAEA;QACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AAEF;AACE;AACA;AACE;QACF;AACE;QACF;MACF;AACA;AACE;AACA;AACE;QACF;AACE;QACF;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AAA4C;AAE9C;AACE;AACE;QACF;MACF;AACE;MACF;AACE;MACF;AAAA;IAEF;EACF;AArgBA;AACI;AAAa;AAqgBjB;ACtgBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADoD;ACArE;;AAAA;AACI;AAAmB;AACnB;AAEJ;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACJ;AACA;AACE;AACE;AACA;AACA;AACE;AACA;AAAgC;AAElC;AACE;AACA;AACA;QACF;AACE;AACA;QACF;MACF;AACE;MACF;AAAA;AACF;AAEE;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;IAEJ;AAAA;AAEE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEE;AACE;AACA;UACF;AACE;UACF;AAAA;AACF;IAEJ;AAAA;AAEE;IACF;AAAA;AAxEF;AACI;AAAa;AAyEjB;AC1EA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACE;IACF;AAAA;AAEE;AACA;AACA;IACF;AACE;IACF;AAAA;AACF;AAEE;AACA;AACE;AACE;MACF;AACE;AACE;AACA;AACA;AACE;UACF;AACE;UACF;AAAA;MAEJ;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;AACA;AACA;IACF;EACF;AAAA;AApDI;AAAa;AAqDjB;ACtDA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACE;AACE;QACF;AACE;AACA;AACA;AACE;UACF;AAAA;AAEE;AACA;AACA;AACA;AACE;YACF;AACE;YACF;AAAA;QAEJ;AAAA;AACF;AACF;AAEE;AACE;MACF;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;AAEnB;IACF;AAAA;AAEE;AACE;AACE;QACF;AACE;QACF;AACE;QACF;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AAEF;AACI;AACA;AACJ;AACE;AACA;AACE;QACF;AACE;QACF;AACE;QACF;AACE;AACA;AACA;AACA;AACA;AACE;UACF;AAAA;AACF;MAEF;IACF;AAAA;AAzGF;AACI;AAAa;AA0GjB;AC3GA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;IACF;AACA;AACE;AACE;AACE;AACE;UACF;QACF;AACE;AACE;UACF;QACF;AACA;MACF;AACE;MACF;AAAA;EAEJ;AAtBA;AACI;AAAa;AAsBjB;ACvBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD2C;ACA5D;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;AAAW;AAEb;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEA;EACF;AACA;AACE;AACI;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACA;AACE;MACF;AAAA;AACF;EAEF;AACA;AA1DA;AACI;AAAa;AA0DjB;AC3DA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;IACF;AAAA;EAEF;AAAA;AAEA;AACA;AACE;AACA;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;IACF;AAAA;AACF;AAEE;AACE;AACI;AACA;AACJ;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEF;AACE;AACI;AACJ;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEF;AACE;AACI;AACA;AACA;AACJ;AACE;AACA;AACE;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;IAEF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACA;AACE;AACA;MACF;AAAA;AACF;AACF;AAEE;AACI;AACJ;AACA;AACE;IACF;AAAA;AAEE;AACE;AACE;QACF;AAAA;AAEA;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACE;IACF;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACJ;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACA;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACJ;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACE;IACF;AACE;IACF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;AAEA;AACA;AACE;QACF;AAAA;AAEA;MACF;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACA;QACF;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEE;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACE;AACA;AACA;AACE;AACA;QACF;AACE;QACF;AAAA;AAEA;AACA;AACA;MACF;AACE;MACF;AACE;AACA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACE;AACA;AACA;MACF;AACE;AACA;AACA;AACE;QACF;AACE;AACA;QACF;AACE;AACA;AACA;AACE;AACA;AACE;YACF;AACE;YACF;AAAA;AACF;AAEA;QACF;AACE;QACF;AAAA;MAEF;AACE;AACA;AACA;MACF;AACE;MACF;AACE;AACA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;IACF;AACE;AACA;AACA;IACF;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;MACF;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACE;AACA;AACA;QACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AACE;IACF;AACE;IACF;AAAA;AAEA;AACA;AACE;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AAEA;AACE;QACF;AACE;AACA;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAEE;AACE;MACF;AACA;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACE;QACF;AACE;AACE;UACF;AAAA;AACF;MAEF;AAAA;AAEE;AACE;AACA;QACF;AACE;AACA;QACF;AACE;AACE;UACF;AAAA;AAEA;QACF;AAAA;AAEA;MACF;AAAA;AAEA;AACA;AACA;AACA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACA;AACE;AACE;AACA;AACA;QACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACA;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACE;AACE;AACA;UACF;AAAA;AAEA;AACA;QACF;AACE;AACA;QACF;AACE;QACF;AAAA;AAEA;MACF;AACE;AACE;AACA;AACE;UACF;AAAA;AAEE;AACA;AACE;YACF;AAAA;AAEE;AACA;YACF;AAAA;AAEA;AACA;AACA;AACA;UACF;AACE;UACF;AACE;AACA;AACA;UACF;AAAA;AAEA;QACF;AACE;AACA;AACA;QACF;AAAA;AAEA;MACF;AAAA;AAEE;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEE;AACA;QACF;AAAA;AAEA;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;AACA;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AAAY;AAEZ;IACF;AAAA;AAEA;AACE;AACA;IACF;AACE;AACA;AACA;IACF;AACE;IACF;AAAA;AAEA;AACE;AACE;MACF;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AAEA;AACE;AACE;AACE;AACA;AACE;YACF;AAAA;AAEA;UACF;AACE;UACF;AAAA;AACF;MAEF;AAAA;AAEA;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;IACF;AACE;IACF;AACE;IACF;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACJ;AACA;AACE;AAAY;AAEZ;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;AAAY;AAEd;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AACE;AACA;AACA;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;AAEA;QACF;AAAA;AACF;AACF;AAEE;IACF;AAAA;AAEE;AACE;MACF;AACE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;AACE;UACF;AACE;AACA;AACE;YACF;AAAA;AAEA;AACA;AACE;YACF;AAAA;AACF;AAEE;UACF;AAAA;AACF;AAEA;MACF;AAAA;AACF;AAEE;AACE;AACE;AACA;AACE;AACA;AACA;AACE;YACF;AAAA;UAEF;AAAA;AACF;AAEA;AACA;AACE;QACF;AAAA;AAEE;QACF;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEE;AACE;UACF;AACA;QACF;AAAA;AAEE;AAAK;AAEP;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AAAoB;AAEpB;MACF;AACE;MACF;AAAA;AACF;AAEA;AACE;AACA;IACF;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEA;AACE;AACE;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AACF;AAEA;AACA;AACE;AACA;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACE;IACF;AAAA;AACF;AAEE;AACA;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEA;AACA;AACA;AAloCA;AACI;AAAa;AAkoCjB;ACnoCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AAAS;AAEX;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;AACA;IACF;AACE;AACA;IACF;AACE;AACA;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AAEE;AAAa;IAEjB;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACE;AACA;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEI;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACE;AACA;AACE;AACA;UACF;AAAA;AAEA;QACF;AAAA;MAEF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AAEE;AACE;AAAa;AAEb;AAA6C;AAE7C;AAAgG;AAEhG;AAAuH;AAEvH;AAAkD;AAElD;AADK;IAGX;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACA;IACF;AACA;AACA;AACA;AACA;AACE;AACI;AACJ;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACE;AAAW;AAEb;AACA;AACI;AACA;AACA;AACJ;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;IAEF;AAAA;AAEA;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACE;AACE;AACE;AAAe;MAEnB;AAAA;AACF;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACE;AACE;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AAAkB;AAEpB;AACA;AACE;MACF;AAAA;AAEE;AAAkB;AAEpB;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AACE;IACF;AACE;IACF;AAAA;AAEE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;QAEF;AAAA;MAEF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEI;AACA;AACJ;AACE;AACA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AACE;AACE;MACF;AAAA;AAEE;AACE;AACA;AACE;UACF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;AACA;AACE;UACF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;QACF;AAAA;AAEA;AACE;AAAY;MAEhB;AAAA;AAEE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACE;AACA;AACE;AACE;QACF;AAAA;AAEA;AACA;AACE;AACE;UACF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AACF;AACF;AACF;AACF;AAEE;AACA;AACA;AACE;AAAoC;AAEpC;AAAwB;EAE5B;AAAA;AAEE;EACF;AAAA;AAEA;AA7iBA;AACI;AAAa;AA6iBjB;AC9iBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACA;AACE;IACF;AACA;AACE;AACE;AACE;QACF;AAAA;AAEF;IACF;AACA;AACE;IACF;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACE;MACF;AAAA;AAEF;AACA;AACA;EACF;AAAA;AAEA;AACE;AACI;AACJ;AACE;AACE;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AADK;AAGT;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AAEE;AACA;AAAc;EAElB;AACA;AAhFA;AACI;AAAa;AAgFjB;ACjFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAPF;AACI;AAAa;AAQjB;ACTA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAPF;AACI;AAAa;AAQjB;ACTA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAPF;AACI;AAAa;AAQjB;ACTA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AAAW;AAEb;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AAAA;AAEF;AAAwB;AAlC1B;AACI;AAAa;AAmCjB;ACpCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AAAY;AAEd;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AAAA;AAEF;AAAwB;AA/B1B;AACI;AAAa;AAgCjB;ACjCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;AAAY;AAEV;AACA;AACA;AACJ;AACE;AAAY;AAEd;AACE;IACF;AAAA;AAEE;AACE;AAAW;AAEb;AACE;AACA;AACE;AACA;AACE;AAAQ;AAER;AAAY;QAEhB;AAAA;MAEF;AAAA;AAEE;AACA;AACE;AACA;AACE;AAAQ;AAER;AAAY;QAEhB;AAAA;MAEF;AAAA;AAEE;AACA;AACE;AAAQ;AAER;AAAY;MAEhB;AAAA;IAEF;AAAA;AAEE;AACA;AACE;AAAQ;AAER;AAAK;AAEL;MACF;AAAA;IAEF;AAAA;AAEE;AAAY;AAEZ;AAAW;EAEf;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACE;AAAS;AAEX;IACF;AAAA;AAEE;AAAQ;AAER;AACE;AAAyC;AAEzC;AAAiC;IAErC;AAAA;AAEE;AACE;MACF;AACA;AACA;AACA;AACE;AACA;MACF;AACA;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AAAA;AAEF;AACA;AACE;AACA;AACA;AACA;AAAuB;AACzB;AApJF;AACI;AAAa;AAqJjB;ACtJA;;AAAA;AACI;AAAmB;AACnB;AAEJ;AACE;EACF;AAAA;AAIE;EACF;AAAA;AAIE;AAA6B;OACxB;AAAyB;AAAS;EAGzC;AAAA;AAIE;AAAW;AAAQ;AAAK;AAExB;AACE;AAEA;AACE;AACA;MACF;AAAA;AACF;EAGF;AAAA;AAIE;AAAiB;AAEjB;AACE;IACF;AAAA;EAGF;AAAA;AAIE;EACF;AAAA;AAIA;AACA;AACA;AACA;AACA;AA3DA;AACI;AAAa;AA2DjB;AC5DA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;AAAY;AAEZ;AAAY;EAEhB;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AACE;AACE;MACF;AACA;AACA;AACA;AACE;AACA;MACF;AACA;IACF;AAAA;EAEF;AAAA;AAEA;AACE;AACA;AACE;AACE;AACE;AAAa;AAEb;AAAa;AAEb;AAAa;IAEnB;AACE;AACE;AACE;AAAa;AAEb;AAAa;AAEb;AAAa;IAEnB;AACE;AACE;AACE;AAAc;AAEd;AAAc;AAEd;AAAc;IAEpB;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AAAwB;AAtF1B;AACI;AAAa;AAuFjB;ACxFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AAA6G;AAL/G;AACI;AAAa;AAMjB;ACPA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;AAAY;AAEZ;AAAW;AAEX;AAAW;EAEf;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AAAwC;AAExC;AAAqC;AAEvC;AACA;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAc;AAClB;AAEA;AACE;AAAoC;EAExC;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAgC;AApElC;AACI;AAAa;AAqEjB;ACtEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AAAA;AAEE;AACA;AAAwB;AAR1B;AACI;AAAa;AASjB;ACVA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACE;AACA;IACF;AAAc;AAEd;AACA;AACE;AACE;AAAY;AAEV;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AAAQ;AAER;AAAY;MAEhB;AAAA;IAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACE;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACA;MACF;AACE;AACA;MACF;AACE;MACF;AAAA;AAEE;AAA6B;IAEjC;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACE;AACA;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACA;AACA;MACF;AACE;AACA;AACA;AACA;MACF;AACE;AACA;AACA;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAA6B;EAEjC;AAxGA;AACI;AAAa;AAwGjB;ACzGA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;AAAW;AAET;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACE;AAAY;AAEZ;AACE;AACE;;AAEA;AAAY;AAChB;AACF;AAEE;AAAY;AAEZ;;AAEA;AAAY;AAChB;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AAA2B;AA3C7B;AACI;AAAa;AA4CjB;AC7CA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;AAAW;AAET;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACE;AAAY;AAEd;AACE;AAAY;IAEhB;AAAA;EAEF;AAAA;AAEE;AACE;AAAS;AAEP;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AAA4B;AA7C9B;AACI;AAAa;AA8CjB;AC/CA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;AAAW;AAET;AACJ;AACE;AACE;AACE;AAAY;AAChB;AACF;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AAA0B;AAvB5B;AACI;AAAa;AAwBjB;ACzBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACA;AAA+G;AANjH;AACI;AAAa;AAOjB;ACRA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAsC;AApBxC;AACI;AAAa;AAqBjB;ACtBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AAAY;AAEZ;AAAY;AAEV;AACA;AACJ;AACE;AACE;AAAmB;AAEnB;AAAY;AAEZ;AAAY;AAChB;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACE;AACE;AAAmB;IAEvB;AAAA;EAEF;AAAA;AAEE;AACA;AACE;AAAa;AAEb;AAAa;AAEb;AAAa;EAEjB;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAmC;AAlDrC;AACI;AAAa;AAmDjB;ACpDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACA;AACE;AACE;AACE;QACF;MACF;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACE;AACE;MACF;AAAA;AAEF;AACA;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AACF;AAvCA;AACI;AAAa;AAwCjB;ACzCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;EACF;AACE;AACE;AAAwB;AAC5B;AAEA;AACE;AACE;AAAY;AAEZ;AACI;AACJ;AACE;MACF;AAAA;IAEF;AACE;IACF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEE;IACF;AACA;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAqC;AAlDvC;AACI;AAAa;AAmDjB;ACpDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AAAwG;AAL1G;AACI;AAAa;AAMjB;ACPA;;AAAA;AACI;AAAmB;AACnB;AAEJ;AAEE;AAGA;AAEE;IACF;AAEE;IACF;AAAA;AAGA;AACA;AACA;EACF;AAAA;AAKA;AAGA;AACE;AAEA;AAEA;AACE;IACF;AAAA;EAGF;AAGA;AA1CA;AACI;AAAa;AA0CjB;AC3CA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;EACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7BA;AACI;AAAa;AA6BjB;AC9BA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkC;ACAnD;;AAAA;AACI;AAAmB;AACnB;AACJ;AACI;AAKJ;AAQE;AACE;AACE;MACF;AAEE;AACE;QACF;AAGE;QACF;AAAA;AACF;AAWF;AACE;AACE;AACA;MACF;AAEE;AACE;QACF;AAGE;QACF;AAAA;AACF;AACF;AAtDF;AACI;AAAa;AAuDjB;ACxDA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACE;AACA;IACF;AAAA;AAEE;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEA;AACE;AACA;MACF;AACE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;AACA;QACF;AAAA;AAEA;MACF;IACF;AACA;AACE;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACE;MACF;AACE;MACF;AACE;MACF;IACF;AACA;AACE;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AACE;MACF;IACF;AACA;AACE;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AACE;MACF;IACF;AACA;AACE;AACI;AACA;AACA;AACJ;AACA;AACE;MACF;AAAA;AAEE;AACA;AACE;AACA;QACF;AACE;AACA;QACF;AAAA;AAEA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACA;AACA;AACA;AAAiB;IAErB;AAAA;AArIF;AACI;AAAa;AAsIjB;ACvIA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADwD;ACAzE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACE;AACA;MACF;AACE;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;AACE;AACE;QACF;AAAA;AACF;AAEF;AACE;IACF;AACA;AACE;AACE;AACA;AACE;AACE;UACF;AAAA;AAEF;AACE;AACE;UACF;AAAA;AAEF;MACF;AACE;MACF;AAAA;EAEJ;AAhEA;AACI;AAAa;AAgEjB;ACjEA;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AAAC;AACA;AAEC;AAID;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACC;AACA;AAEC;AAAQ;AAGR;AAAQ;AAER;AAAQ;AAER;AAA6B;AAE7B;AAAkB;AAElB;AAAuB;AACzB;AAGC;AAAO;AAAG;AAAG;AAAK;AAAc;AAEhC;AACC;MACD;AAAA;AAQA;AAGA;AAGA;AAEA;AAEA;AACC;MACD;AAAA;AAGC;AACA;AACA;AACA;MACD;AAAA;AAGC;AACA;MACD;AACC;AACA;AACA;MACD;AAAA;IAGD;AAAA;AAGC;AACC;AACA;AACA;AAAM;AAEP;AACC;MACD;AAAA;AAGC;MACD;AAAA;AAIC;AACA;MACD;AAAA;AAIC;AACC;AACA;AACA;AACA;AACA;AAAI;AAEJ;AACA;AACA;AACA;AACA;AACA;AAAI;AAGN;IACD;AAAA;AAGA;EACD;AA5HA;AACI;AAAa;AA4HjB;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AAEA;AACE;AAA2B;AAAsD;AACjD;AAA6C;AAC9C;AAAyC;AAC1E;AAGE;AACA;AACA;AACA;AAAe;AAAwE;AAGvF;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AACA;AAAe;AAAwE;AAGvF;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AAAe;AAAwC;AACtB;AAAwB;AAEzD;EACF;AAEA;AACE;AAAe;AAAyB;AACxB;AACd;IAEF;AAAA;AACF;AAGE;AACA;AACA;AAAe;AAA0C;AAEvD;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAA0C;AAEvD;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AAAe;AAA6B;AAC5B;AACd;IACF;AAAA;AACF;AAGE;AACA;AACA;AAAe;AAA8C;AAE3D;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAA8C;AAE3D;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AACE;AAEA;IACF;AAAA;AAGA;AACA;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AACE;AAEA;IACF;AAAA;AAGA;AACA;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AAAe;AAA4C;AAC1B;AAAwB;AAC1C;AAAuB;AAEtC;EACF;AAEA;AACE;AACA;AACA;AAAe;AAAgD;AAE7D;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAAgD;AAE7D;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAAwD;AAErE;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAAwD;AACxD;AAA6B;AAE1C;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AAAgC;AAA6C;AAC9C;AAAyC;AACxD;AAAyC;AAC3D;AAGE;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAGE;EACF;AAEA;AACE;EACF;AAEA;AACE;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAGE;EACF;AAEA;AACE;EACF;AAGA;AACE;AAAY;AAAQ;AACG;AAAgB;AACL;AAA0B;AAC1C;AAAc;AACJ;AAAU;AAGnB;AAAO;AACoB;AAAO;AAInD;IACF;AAAA;AACuC;AAAgD;AAC1E;AAA8C;AAGpC;AAAgB;AAErC;IACF;AAAA;AAGA;AAEA;AAEE;AACE;MACF;AAAA;AAGA;AACE;MACF;AAAA;AAEA;IACF;AAAA;EAGF;AAGA;AACE;AAAY;AAAQ;AACR;AAAQ;AACV;AAAgB;AAET;AAAkC;AAGhC;AAAK;AACD;AAAK;AAEW;AAA0C;AAC/C;AAAwC;AAG1E;AACE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AACF;EAGF;AAMA;AACE;AACE;AACE;MACF;AACE;AACA;AAAgB;AACd;QACF;AAAA;MAEF;AAAA;AAEA;IACF;AAAA;AAMF;AAKA;AACE;AACA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;EACF;AAEA;AAEA;AAEE;AAEA;AAAoB;AAAQ;AAG1B;IACF;AAAA;EAEF;AAAA;AAGE;AAAc;AAAgB;EAEhC;AAAA;AAGE;AAAY;AAA0B;EAExC;AAAA;AAGE;AACA;AACA;AACA;AACA;AAEA;AACE;AAGA;AAEE;AAEE;AAEE;AAAuB;AAA2B;UAEpD;AAEE;AAAuB;AAA2B;UAEpD;AAAA;AAKA;QACF;AAAA;AAIE;AAAuB;AAA2B;AAElD;QACF;AAAA;MAIF;AAEE;AAAuB;AAA2B;AACpD;AAKA;AACE;AAAsB;AAAI;MAE5B;AACE;AAAsB;AAAI;MAK5B;AACE;AAAsB;AAAI;MAM5B;AACE;AAAsB;AAAI;MAO5B;AACE;MACF;AAAA;AACF;EAGF;AAAA;AAGE;AACA;AAEE;IACF;AAAA;EAEF;AAAA;AAGE;AAAO;AAAI;AACX;AACA;AACE;AAAsB;AAAI;AAG1B;AACA;AACA;AACA;IACF;AAAA;EAGF;AAAA;AAGE;EACF;AAAA;AAGE;AACE;AAAqD;AAAI;IAE3D;AAAA;EAEF;AAAA;AA1gDI;AAAa;AA2gDjB;AC5gDA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADoC;ACArD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAuE;ACDxF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACE;AACE;QACF;AAAA;AAEA;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEA;AACE;AACA;AACA;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;AACA;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACE;QACF;AACE;AACA;AACE;UACF;AACE;AACA;AACA;UACF;AAAA;QAEF;AAAA;AACF;AACF;AAEE;AACE;AACE;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;AA9GF;AACI;AAAa;AA+GjB;AChHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EAIF;AANA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AAEE;AACE;AACA;AAEI;AACA;AACA;AACA;AAAiB;IAGvB;EACF;AAEE;AACE;AACA;AACA;AACA;AACA;IACF;EACF;AAAA;AAtBI;AAAa;AAuBjB;ACxBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADiD;ACAlE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACA;AACE;AACE;AAAU;AAEV;AAAQ;AAER;AACE;AAAwB;AAExB;AAAwB;AAExB;AACE;YACF;AACE;YACF;AAAA;AAEA;AADK;MAGX;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACE;AACE;QACF;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;QAEF;AAAA;MAEF;AAAA;IAEF;AACA;AACA;AACA;AACE;AACE;AAA2C;AAE7C;AACE;AACE;AACA;AACE;AACA;UACF;QACF;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACE;AACA;AAAsB;AAExB;AACE;AAAwB;AAExB;AAAyB;AAEzB;MACF;AACE;MACF;AAAA;AAEE;AAAsB;AAEtB;AAAa;AAEb;AAAkB;AAElB;AAAwB;AAExB;AAA8B;IAElC;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;AAEnB;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAc;AAEhB;AACE;AACA;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;AACA;AACE;MACF;AACA;IACF;AAAA;AAEE;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;AACA;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;AACF;AAEI;AACA;AACJ;AACE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;AACA;AACE;MACF;AACE;AACE;QACF;MACF;AAAA;AAEA;IACF;AAAA;AAEE;AACE;AAA4C;AAE5C;AACA;MACF;AAAA;AAEE;AAAwC;AAExC;AAAyC;AAEzC;AAAkC;AACtC;AAEE;IACF;AAAA;AAEE;AACA;AACI;AACF;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;AAEF;IACF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACE;AACE;UACF;AACE;UACF;AAAA;AAEE;AACE;AACE;cACF;YACF;AACE;AACE;cACF;YACF;AAAA;AACF;AAEA;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;AAEA;AACE;AACA;QACF;AACE;AACA;QACF;AAAA;AACF;IAEF;AAAA;AAEE;AACA;AACE;AACA;AACE;AAAa;MAEjB;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;AACA;IACF;AAAA;AAEE;IACF;AACA;AACA;AACE;AACE;AAAa;AAEf;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;IACF;AAAA;AAtaF;AACI;AAAa;AAuajB;ACxaA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkC;ACAnD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAmE;ACDpF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADgD;ACAjE;;AAAA;AACI;AAAmB;AACnB;AAMJ;AACI;AACA;AAKJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AAQE;AACE;AACA;AAEA;AACE;AACA;MACF;AAEE;MACF;AAEE;MACF;AAAA;AAGE;AACA;MACF;AAAA;AAIE;MACF;AAAA;AAOA;AACA;AACA;AAEA;IACF;EACF;AAAA;AASE;AACE;AACA;IACF;AAAA;AACF;AAQE;AAGA;EACF;AAAA;AAUE;AACE;AACA;AACE;AAGA;AACE;QACF;AAAA;AAGE;QACF;AAGA;AACF;AACF;AACF;AAUE;AAGA;AAGA;AAEA;AACE;AACA;AACA;AACA;AACE;MACF;AAAA;AACF;EAGF;AAAA;AASE;EACF;AAAA;AAME;AACE;IACF;AAEE;AACA;AACE;MACF;AAAA;AACF;AACF;AAOE;EAOF;AAOA;AACE;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;EAEF;AAAA;AAME;AACA;AACE;AACA;AACE;AACE;QACF;AACA;AACA;AAAiB;IAErB;AAAA;AACF;AAnOI;AAAa;AAoOjB;ACrOA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AAEJ;AACA;AACA;AACA;AACA;AAeA;AACE;AACA;AAA4B;AAAiB;EAI/C;AAUA;AACE;AACA;AAAwB;AAAM;AAE9B;AAAY;AAAM;AAElB;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAQ;EAEd;AAAA;AAWE;AAAa;AAA+B;AAC/B;AAA+B;AAC/B;AAA+B;AAC/B;AAA+B;EAE9C;AAAA;AAWE;EAKF;AAAA;AAOE;AAAY;AAAM;AACA;AAAsC;EAE1D;AAAA;AA3HI;AAAa;AA4HjB;AC7HA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD6B;ACA9C;AAAA;AACI;AAAmB;AACnB;AAMJ;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAQA;AAMA;AAMA;AASA;AACE;EACF;AAAA;AAaE;AACA;AAIA;AAEE;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AAA4B;AAAoC;AACtB;AAA0B;AAIpE;AAEA;AAEE;MACF;AAAA;AAIA;AAEE;AAAoB;AAAY;AAEhC;AACA;AACE;AACA;AAGA;AACA;QACF;AAAA;MAEF;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAGA;AAEA;AAEA;EACF;AAAA;AAWE;AAEA;AACA;AAEA;AACE;AAAe;AAAQ;AAEvB;AACE;MACF;AACE;MACF;AAAA;AACF;AACF;AASE;EACF;AAAA;AAWE;AAAO;AACP;AACE;AACE;MACF;AAAA;AACF;AAEE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAWE;AAA0B;AAA+B;EAE3D;AAAA;AAnMI;AAAa;AAoMjB;ACrMA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;EACF;AACA;AACE;AACA;AACA;AACA;AACE;AAAW;AAEb;AACA;AACA;AACA;AACE;AACE;AAAM;AAER;AACE;MACF;AAAA;AAEF;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;AACE;MACF;AACE;MACF;AAAA;AACW;AACf;AAEE;AACA;AACE;IACF;AAAa;EAEf;AAAA;AAEA;AACE;AACE;IACF;AAAa;AACf;AA3DI;AAAa;AA4DjB;AC7DA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;;AAAA;AACI;AAAmB;AACnB;AACJ;AAOA;AAVA;AACI;AAAa;AAUjB;ACXA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACE;MACF;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AAA+B;AAEjC;AACA;AACA;AACA;AACJ;AACE;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AACA;AACA;AACE;AACA;QACF;AAAA;AAEA;AACA;AACA;MACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;AACE;YACF;AACE;AACA;YACF;AAAA;AAEA;UACF;AAAA;AACF;MAEF;AAAA;AAEE;AACE;AACA;AACE;AACA;AACA;UACF;AAAA;AAEA;QACF;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;MAEF;AAAA;AAEE;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;QACF;AAAA;AAEE;AACE;UACF;AAAA;QAEF;AAAA;AAEE;AACE;AACE;YACF;AAAA;AAEA;AACE;YACF;AAAA;AAEA;AACA;AACE;YACF;AAAA;AAEA;AACE;YACF;AAAA;UAEF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AAEA;AACA;QACF;AAAA;MAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;QACF;AAAA;AAEE;AACE;AACA;AACE;YACF;AAAA;AACF;AAEA;AACE;UACF;AAAA;AAEA;AACA;AACE;AACA;AACE;YACF;AAAA;AAEE;AACE;AACA;AACE;gBACF;AAAA;AAEA;AACA;AACA;cACF;AAAA;AAEA;AACA;AACA;YACF;AAAA;AACF;AAEA;QACF;AAAA;MAEF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACA;AACE;AACA;AAAmB;AAErB;AACA;AACA;AACA;AAAqB;AAEvB;AACE;AACE;QACF;MACF;AACE;AACE;QACF;AACE;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;EAEJ;AAxRA;AACI;AAAa;AAwRjB;ACzRA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyC;ACA1D;;AAAA;AACI;AAAmB;AACnB;AAwBJ;AACE;EACF;AAAA;AAGE;AACA;AACA;AAEA;AACE;IACF;AAAA;AAGA;AAEA;AACA;AACE;IACF;AAAA;AAIA;AACE;IACF;AAAA;AAGE;AACI;AACA;AAAM;AAAM;AAAG;AAEnB;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AAGA;AAEA;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AACF;EAGF;AA/EA;AACI;AAAa;AA+EjB;AChFA;;AAAA;AACI;AAAmB;AACnB;AAqBJ;AACE;AACE;AACE;AAAQ;AAGR;AAA2B;AAG3B;AAA2B;AAG3B;AADK;EAGX;AAEA;AACE;AACA;AACA;AACE;IACF;AAAA;AAGE;AACE;AACA;AACE;AACE;UACF;QACF;AACE;QACF;AAAA;IAGJ;AAAA;AAEW;AAAS;EAGtB;AA/DA;AACI;AAAa;AA+DjB;AChEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADsC;ACAvD;AAAA;AACI;AAAmB;AACnB;AAmBJ;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AAAA;AAOI;AAIA;AAGA;AAGA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACE;AACA;AAAkB;AAGpB;AACE;AACA;AAAkB;AAGpB;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAY;AAEd;AAEJ;AACE;AAAgD;AAAU;AAG1D;AACA;EACF;AAAA;AAGE;AACE;IACF;AAAA;AAMA;AAEA;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAOE;AACA;AACE;AACA;MACF;AAAA;AACF;AAqBE;AACA;AACE;AACA;AACE;AAAa;AACjB;AAIU;AACV;AAEE;MACF;AAGE;MACF;AAAA;AAKE;AACA;AACA;MACF;AAAA;AAIA;AACE;AACA;AACE;AAAa;AACjB;AAGE;AAAqB;AAGvB;AAGA;AAIA;AAIA;AAIA;AACE;AACA;AAAgB;AACd;AACA;AAAW;AAAQ;AAEjB;AACA;AAAgB;AACd;AAIE;cACF;AACE;cACF;AAAA;AACF;AAGE;AACA;AACA;AACA;AACE;AACA;cACF;AAAA;AAEE;cACF;AAAA;AAEA;YACF;AAAA;AACF;AACF;AACF;AAGE;MACF;AAEE;MACF;AAAA;AAOE;AACA;AACA;AACE;AACA;QAEF;AAAA;MAEF;AAAA;AAGA;AACA;AACA;AAIA;AACE;AACA;AACE;QACF;AAAA;AACF;AACF;AASE;AAAgB;AACd;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAKA;AAEE;AACA;IACF;AAAA;AAEA;AACE;AACA;AACA;AACE;MACF;AAAA;IAEF;AAEE;AACA;IACF;AAAA;AACU;AAAoB;AAG5B;IACF;AAAA;AAIE;AACA;AACA;IACF;AAAA;AAIA;EACF;AAGA;AAKE;AAAmB;AAAmB;AACX;AAAqC;EAElE;AAAA;AAGE;AACA;AACE;AACA;AACA;IACF;AAAA;AAGI;AACA;AACA;AACA;AAEJ;AACE;IACF;AACE;AAGA;AACE;MACF;AAAA;AACF;AAKE;IACF;AAAA;AAIA;AAA6C;AAAe;AAM1D;AACA;AAA4C;AAAyB;AAErE;IACF;AAAA;AAEoC;AAAiB;AACb;AAAqB;AAG3D;IACF;AACA;AAEA;EACF;AAEA;AACE;EACF;AAAA;AAGE;EACF;AAEA;AACE;AAAa;AAAe;EAE9B;AAAA;AAGE;AACE;AACA;AACA;IACF;AAAA;AAGA;AACE;IACF;AAIA;AAGA;AACE;AACA;IACF;AAAA;AAKE;AACE;AACE;AAAuB;AAI3B;AAEE;MACF;AAAA;AAGA;IACF;AAAA;AAWE;AACE;AACE;QACF;AACA;AACA;MACF;AAAA;AAGA;AACE;AACA;AAA4D;AAAA;AACxC;AAAkB;AACd;AAAsB;AACvB;AAAmB;AAClB;AAAmB;MAE7C;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACA;IACF;AAAA;AAGI;AAIA;AAEA;AACA;AACA;AACA;AAOJ;AACE;AACA;AACA;AACE;AAAuB;;AAClB;AAA4B;AACnC;AAEA;AACE;AACA;AACA;AACE;AAAuB;;AAClB;AAA8B;AACrC;MAEF;AAAA;IAEF;AAAA;AAIE;AAEA;AAEA;AACA;AACA;IAEF;AAGE;AAAc;AAAY;AAE1B;AACA;AACA;IACF;AAIE;AACE;AAIA;AAEA;AACE;AACA;QACF;AAAA;AACF;AAEA;AAEA;AACE;MAEF;AAAA;AAEA;IACF;AAAA;AAKE;AAEA;AACE;MACF;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAMA;AAMA;AACA;AACE;AACA;AACE;MACF;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AACF;AAIE;AACE;MACF;AAAA;AACF;AAIE;IACF;AAAA;AAGE;IACF;AAAA;AAMA;AACE;AAKA;AAEA;AACE;AACA;MACF;AAAA;AACF;AAIA;AACE;IACF;AAAA;AAGE;AACA;IACF;AACE;IACF;AAAA;AAIE;IAEF;AAAA;AAEA;AACA;AACA;EACF;AAEA;AACE;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AACU;AAAoB;AAGhC;AACE;EACF;AAAA;AAGE;EACF;AAAA;AAGE;EACF;AAAA;AAEE;EACF;AAAA;AAjsBI;AAAa;AAksBjB;ACnsBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADgC;ACAjD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAiE;ACDlF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD+C;ACAhE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACE;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AAEE;QACF;AACE;AACA;QACF;AAAA;AACF;AAEE;MACF;AAAA;IAEF;EACF;AAvFA;AACI;AAAa;AAuFjB;ACxFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;AACA;EACF;AAAA;AAEE;AACA;AACE;AACA;AAAc;AAEhB;AACE;AACA;AACE;AACA;AACA;MACF;AACE;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACA;UACF;AACE;AACE;AACA;AACA;YACF;AACE;YACF;AAAA;AACF;QAEF;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;AAAuB;EAE3B;AAAA;AAEE;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAjFI;AAAa;AAkFjB;ACnFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;EACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;IACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;IAEF;AACE;IACF;EACF;AACA;AACE;AACA;AACA;EACF;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;AAEE;MACF;AAAA;IAEF;AACE;IACF;EACF;AACA;AACE;AACI;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEE;AACA;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AAEA;AACA;AACA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;AACA;AACA;AAAiB;EAErB;AAAA;AA3GI;AAAa;AA4GjB;AC7GA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADuD;ACAxE;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AAAiC;AAEnC;IACF;EACF;AAfA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;EACF;AACE;AACI;AACA;AACJ;AACE;AACE;AACA;AAAS;AACV;AAEH;AACA;AACE;AACA;AAAU;EAEd;AArBA;AACI;AAAa;AAqBjB;ACtBA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAyB;ACD1C;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;AACA;AACA;EACF;AACE;AACI;AACA;AACJ;AACE;AACA;IACF;AAAA;AAEE;AAAqB;AAErB;AAAwB;EAE5B;AACA;AACA;AACA;AACA;AA3BA;AACI;AAAa;AA2BjB;AC5BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAI;ACDrB;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;EACF;AACA;AACE;AACA;EACF;AAZA;AACI;AAAa;AAYjB;ACbA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;EACF;AACA;AACE;AACA;AACE;AACE;AAAkB;AAElB;AACE;AACE;UACF;AAAC;AAED;AACE;UACF;AAAC;AAEL;AACE;MACF;IACF;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACE;AAA6C;AAE7C;AACA;AACE;QACF;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEA;AACA;AACE;AACE;AACA;AACA;AAAqD;AAEvD;AACE;AACE;AACE;AAAkC;AACtC;AAEA;AAAqE;AACzE;EAEF;AA9EA;AACI;AAAa;AA8EjB;AC/EA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AAAQ;AAAc;AAAW;EACnC;AAHA;AACI;AAAa;AAEhB;ACHD;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;AACA;AAdN;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACE;AAA4E;AAE5E;AACE;AAAU;AAEV;AAAU;IAEd;AAAA;EAEF;AACA;AACE;AACI;AACJ;AACE;AAAqB;AAErB;AACE;AAAY;AAChB;AAEF;AACE;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AAA0C;AAE9C;AACE;AACE;AACI;AACA;AACF;AACA;AACE;AAA+B;UAEnC;AAAA;AAEA;QACF;AACA;AACE;AACI;AACJ;AACE;AACI;AACJ;AACA;AACA;AACE;AAAa;AAEb;AAAa;AAEb;AAAc;AAEd;AAAc;UAElB;AAAA;QAEF;AACA;AACE;AACI;AACJ;AACE;AACA;AACE;AAAe;AACnB;AAEF;AACE;QACF;AAAA;AAEF;AACE;AACI;UACF;AAAG;IAET;AACA;AACE;AACI;AACA;AACJ;AACE;MACF;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AAAO;AAET;AACE;AAAe;AAEf;AAAc;AAEhB;AACE;AAAsB;AAC1B;IAEF;AACA;AACA;AACE;AACE;AACA;AACA;MACF;AACE;AACI;AACA;AACJ;AACE;AAAe;AAEf;AACA;QACF;AAAA;AAEE;AAAuB;AAEvB;AAAuB;MAE3B;AACA;IACF;AAAA;AAxJF;AACI;AAAa;AAyJjB;AC1JA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACE;AACA;AACA;AACA;AAAkB;EAEtB;AARA;AACI;AAAa;AAOhB;ACRD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AACE;AACA;EACF;AARA;AACI;AAAa;AAQjB;ACTA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;AAA+B;EAEnC;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AAAgC;AAAmD;EAErF;AAJA;AACI;AAAa;AAGhB;ACJD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;EACF;AAJA;AACI;AAAa;AAGhB;ACJD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACE;AACE;AACA;AAAS;AACT;AATN;AACI;AAAa;AAUjB;ACXA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACI;MACF;EACJ;AALA;AACI;AAAa;AAKjB;ACNA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;IACF;AACE;AACA;IACF;AACE;AACE;AACA;AACA;AACE;AAA8C;AAElD;AACE;AACA;AACE;AACE;AACE;AAAuC;AAEzC;UACF;AAAE;AAEN;AACE;AACI;UACF;AAAG;AACT;AAEA;AACA;AACA;AACE;AAAiC;EAErC;AApDA;AACI;AAAa;AAoDjB;ACrDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;EACF;AACI;IACF;AATF;AACI;AAAa;AASjB;ACVA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;IACF;AACE;AACA;AACE;AAA4B;IAEhC;AAAA;AAVF;AACI;AAAa;AAWjB;ACZA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAIhB;ACLD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAE;ACDnB;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACE;AAAiE;AANrE;AACI;AAAa;AAOjB;ACRA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AAA+C;AAE/C;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAvBJ;AACI;AAAa;AAwBjB;ACzBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAIhB;ACLD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACE;MACF;AACJ;AACE;AACI;AACA;AACJ;EACF;AAXA;AACI;AAAa;AAWjB;ACZA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACE;AACE;AAA+C;AAEjD;AACA;IACF;EACF;AAXA;AACI;AAAa;AAWjB;ACZA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AANA;AACI;AAAa;AAMjB;ACP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CnB;AADJ;AAAmB;AAAsD;AAAe;AADxF;AACI;AAAa;AAA0E;ACD3F;AAAA;AACI;AAAmB;AACnB;AAGJ;AAcA;AAGA;AAEA;AACC;AACC;AACC;AACC;UACD;AACC;UACD;AACC;UACD;AAAA;AAGD;AACC;QACD;AAGA;AACC;AAEA;AACC;AACC;AAEA;AACC;AACC;gBACD;AAAA;AACD;AAEY;AAIZ;AAAoC;cAAwB;AAAE;AAGhE;QACD;AAAA;AAGD;AACC;AACC;AAEA;AACC;UACD;AAAA;QAGD;AAWA;AACC;AACA;AAEA;AACC;AAEA;AACC;AACC;cACD;AAAA;AACD;UAGD;AAAA;AAIA;AAEC;AAEC;AAEC;AAEC;AACC;kBACD;AAAA;AACD;AACD;YAGD;AAAA;AACD;AAIC;AACC;YACD;AAAA;AAGD;QACD;AAGA;AACC;AACC;AACC;AAEA;AACC;cACD;AAEC;cACD;AAAA;AACD;AACD;AACD;AAED;AAEA;AACC;AAEA;AAAc;AACb;QACD;AAAA;AAGD;AAEC;AAAc;AAAS;AAEvB;AACC;QACD;AAAA;AAGC;AACA;QACD;AAAA;AAMA;AAEA;AACC;QACD;AAAA;AAIA;AACC;AACA;AACA;AACA;AAAS;AAGV;AACC;AACA;QACD;AAAA;AAIA;AACC;AAEA;AACC;AAEA;AAEA;AAEA;AACA;AACA;UACD;AAEA;AACC;AACA;AACA;AAAmB;QAErB;AAEC;AAEA;AAEA;AAEA;AAEA;AACA;QACD;AAAA;AAGD;AACC;AACA;MACD;AAEA;AACC;AAEA;AAEA;AAEA;AACC;AACC;UACD;AAAA;QAGD;AAAA;AAGC;AACC;UACD;AAAA;AAGA;AAEA;AACC;AACC;AACA;AACA;AACA;AAED;AAEA;AAEC;AAEA;AAEC;cACD;AAAA;AAGC;cACD;AAAA;AAIA;AAEA;AACC;AACC;gBACD;AAAA;AAGC;AACA;AACA;AACA;AACA;AAED;AAEA;AACC;gBACD;AAAA;AAIA;AAEA;AACC;gBACD;AAAA;cAGD;AAAA;AACD;AACD;AACD;MAGD;AAEA;AACC;AAEA;AACC;AAEA;AAEA;QACD;AAEA;AACC;AAEA;AACC;UACD;AAAA;AAEc;AACb;UACD;AAAA;AACD;AACD;AAGD;AACC;AACA;AACA;IACD;AAEA;AACC;AACC;MACD;AAAA;AAGC;AACC;QACD;MACD;AAAA;AAGC;AACA;AACA;AACA;AACA;AACA;AACA;AAAa;AAGd;AACC;MACD;AAAA;AAGC;AACA;MACD;AAAA;AAIA;AAEA;AACC;MACD;AAAA;IAID;AAEA;AACC;AAEC;MACD;AAAA;AAGC;AACI;AACA;AACA;AAEJ;AACA;AACC;QACD;AAAA;AAGD;IACD;AAAA;AAKA;AAEA;AACC;AAEA;AACC;MACD;AAAA;AACD;EAIA;AAEA;AACC;EACD;AAAA;AAIC;EACD;AAAA;AAQC;AACA;AACA;AACA;AACA;AACC;AACA;AACC;AACC;AACA;AACC;AACA;AAA0B;AAC3B;AAED;AACC;AACA;AAEA;AAED;AACA;AACC;AACA;AAEA;AACD;AAED;AAED;AAA4B;AAI7B;AAEC;AACC;IACD;AAAA;AAGD;AACA;AACA;AACA;AAOA;AACC;AACA;AACC;AACA;AAGA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AAAwB;AAGzB;AAEA;AACC;AAEE;AACA;AACA;AACA;AAAoB;AAItB;AAEE;AACA;AACC;AACC;AACA;AAAwC;AAEzC;AACA;AACC;AACA;AAA0B;AAC3B;AAED;AAAoB;EAGvB;AAAA;AAOC;AAEE;AACA;AAAe;AAGf;AACA;AAAe;AAGjB;AACA;AACC;AACA;AACA;AAEA;AAED;AACA;AACA;AACA;AACA;AACA;AAA6B;AAQ9B;AACC;AACA;AAEA;AAAkE;AAGnE;AAEE;AACA;AAAe;AAIjB;AAEE;AACA;AACC;AACC;AACA;AACC;AACC;AACA;AAAmB;AAEpB;AAA+B;AAChC;AAED;AAAkB;AACnB;AAIF;AACC;AAEE;AACA;AACA;AACA;AAA2B;EAG9B;AAAA;AAQA;AACC;AACC;IACD;AAAA;AAIC;AACC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAmB;AAGpB;AACC;AACC;AAEA;AAAc;AACd;AACA;AACC;UACD;AAAA;AAGC;UACD;AAAA;AAGC;AACA;UACD;AAAA;AAGA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACC;AAEC;AACC;AAEA;cACD;AAEC;cACD;AAEC;cACD;AAAA;AACD;AAGD;QACD;MACD;AAAA;AAID;EAED;AAGA;AACA;AACC;AACA;AAAsE;AAEvE;AAEA;AACC;AAEE;AACA;AACA;AAEA;EAGH;AAAA;AAGA;AACC;AACA;AACA;AAA8D;AAG/D;AACC;AAGC;AACA;AACA;AACA;AAEC;AACC;AACA;AAAe;AAGhB;AACC;AACA;AACA;AAAe;AAChB;AACD;AAGD;AAA0G;AAG3G;AACA;AAGA;AACA;AACC;AACA;AACA;AAAwJ;AAGzJ;AAEE;AACA;AAAe;AAIjB;AACA;AACC;AACA;AAIA;AAA0C;AAG3C;AAEE;AACA;AACA;AACA;AAGE;AACA;AACA;AAAe;AAEjB;AAKF;AAcA;AACC;AACA;AACA;AACC;AACA;AAAe;AAChB;AAKD;AAEE;AACA;AACA;AAAe;AAIjB;AACC;AACA;AACA;AACC;AACA;AACA;AAEA;AACD;AAID;AAEE;AACA;AAAe;AAKjB;AAIC;AACC;AACC;MACD;AAAA;AAIA;AACA;AACC;AAEA;MACD;IACD;AAGA;AACC;AACC;AACA;MACD;AAAA;AAID;AACC;AACC;MACD;AAAA;AAEgB;AAEf;MACD;AAAA;IAGD;AAGA;AACC;AACC;MACD;AAAA;AAID;AACC;AACC;AACA;AAA6B;AAE9B;AAA6B;EAE/B;AAAA;AAIA;AAGA;AACI;AACC;AACA;AAAgB;AAGrB;AACC;AACA;AAOE;AACA;AAEA;AAGF;AACA;AACC;AACA;AAAgB;AACjB;AAGD;AACC;AACC;AACA;AAAe;AAIhB;AACC;AACA;AACA;AACC;AACA;AAA6B;AAC9B;AACD;AAGD;AACC;AACC;AACA;AACC;AACC;AACA;AAAmB;AAEpB;AAA+B;AAChC;AAID;AAEE;AACA;AAAc;AAGd;AACA;AACA;AAEA;AAEF;AAID;EAKA;AAEA;AACA;AACC;AACA;AACA;AACA;AACA;AACA;AAAkC;AAEnC;AAGA;AACA;AACC;AACC;AACA;AAAe;AAEhB;AACA;AACA;AACA;AAIC;AACA;AAEA;AAGD;AAEA;AAMA;AAEA;AACA;AACA;AAA8B;AAI/B;AACA;AACC;AACA;AACA;AACC;AACA;AAAe;AAChB;AAGD;AACA;AACC;AAEA;AACA;AACA;AACA;AACA;AAIE;AACA;AAAe;AAGjB;AAAmC;AAGpC;AACA;AAEC;AACA;AAKA;AACA;AACA;AACA;AACA;AAAoC;AAGrC;AACA;AACC;AAGE;AACA;AAAe;AAGf;AACA;AAAe;AAIjB;AA0BA;AAuBE;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAWjB;AAeA;AAEC;AACA;AAAc;AAEf;AAEC;AACA;AAAc;AAEf;AACC;AACA;AAEA;AAED;AACA;AACA;AACA;AAA4B;AAI7B;AACA;AACC;AACC;AACA;AAAc;AAEf;AACC;AACA;AAAe;AAEhB;AACA;AACC;AACA;AAAe;AAEhB;AACC;AACA;AAAe;AAEhB;AACA;AACA;AACA;AACA;AAA8B;AAI/B;AACA;AACC;AACA;AACA;AAGC;AACA;AAAgB;AAEjB;AACA;AACA;AAIA;AACA;AACA;AAA4B;AAG7B;AAOA;AACC;AACC;AACA;AAAqQ;AAGtQ;AACC;AACA;AACC;AACC;AACA;AAAW;AAEZ;AAA2C;AAC5C;AAGD;AACC;AAEE;AACA;AAEA;AAGA;AACA;AAEA;AAIA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAAe;AAGjB;AACA;AAA6C;AAG9C;AACC;AACA;AAA4C;AAG7C;AAEE;AACA;AAEA;AAGA;AACA;AAEA;AAIA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAEA;EAGH;AAEA;AACA;AACC;AAIG;AACA;AAEC;AACE;AACA;AAAe;AAIjB;AAEA;AAEA;AAA6B;AAC9B;AAIA;AACA;AAEA;AAMH;AACC;AACC;AACA;AAAiB;AAElB;AACC;AACA;AAAe;AAEhB;AAGE;AACA;AACA;AAAmB;AAGnB;AACA;AAAmB;AAGrB;AAEA;AACC;AACA;AAAe;AAEhB;AACC;AACA;AAAe;AAEhB;AACC;AACA;AAAe;AAEhB;AACA;AAA4C;AAG7C;AACA;AACA;AACA;AACA;AACA;EACD;AAEA;AAEA;AACC;AACC;AACA;AAEE;AACA;AAEE;AACA;AAAgB;AAGlB;AAEF;AAED;AACA;AACA;AACA;AACA;AAA2iB;AAE5iB;AAEA;AACA;AACC;AACA;AACA;AAAkE;AAInE;AACA;AACC;AACA;AACA;AACA;AACA;AAAwB;AAEzB;AACA;AAl/CA;AACI;AAAa;AAk/CjB;;;;;ACn/CA;AAAA;AACI;AAAmB;AACnB;AADJ;AAOA;AAAC;AAMD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAc;AAGhB;AACA;AACA;AAIA;AAMA;AAIA;AAKA;AAOA;AAaA;AAMA;AACE;AACA;AACA;AAA+C;AAGjD;AAUA;AACE;AACA;AAAiE;AAOnE;AACE;AACA;AACA;AACA;AAEA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AACF;AAYA;AACE;AACA;IACF;AAMA;AACE;AAMA;IACF;AAMA;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEJ;AAEE;AACE;AACA;AACE;UAGF;AAAA;AACF;AAIE;AACA;AACA;AACE;AACA;AAEM;AAER;QACF;AAAA;AAIE;AACA;AACE;AACA;AACA;AAAiB;AAEnB;QACF;AAAA;AAIE;AACA;AACE;AACA;AACA;AAAW;AAEb;QACF;AAAA;AAIE;AAEA;AACE;AACA;AACA;AACA;AAA2C;AAG7C;AACE;AACE;YACF;AACE;YACF;AACE;YACF;AACE;YACF;AAAA;AACF;AAGE;UACF;AAAA;AAIA;QACF;AAAA;AAIE;AACA;AACE;AACA;AACA;AAAW;AAEb;QACF;AAAA;AAIE;AACA;AAGA;QACF;AAAA;AAIE;AAEA;AAIA;AAKA;AAEA;AAIA;QACF;AAAA;AAIE;AACA;AAEA;AACE;AACA;AAAuB;AAIzB;AAEA;AACA;AACA;AAEA;AACE;AAIA;AACA;AAIA;AACE;AACA;YAGF;AAAA;AAKE;AACA;AACE;AACA;cACF;AAAA;AACF;AAMA;AACE;AACA;AAAY;AAAY;AAC1B;AASA;AAEA;UAGF;AAAA;AAMA;QACF;AAAA;AAIE;AACA;AACE;AAGA;AAEA;AAAW;AAEb;QACF;AAAA;AAIE;AACA;AACE;AACA;AAAY;AAEd;QACF;AAAA;AAIE;AAEA;AACE;AACA;AACA;AACA;AAAsD;AAGxD;AACE;AACE;YACF;AACE;YACF;AACE;YACF;AACE;YACF;AAAA;AACF;AAGE;UAGF;AAAA;AAIA;QACF;AAAA;AAIE;AACA;AACE;AACA;AAES;AAEX;QACF;AAAA;AAKE;AACA;AACE;AACA;AAAW;AAEb;QACF;AAAA;AAGE;QAEF;AAAA;AACF;IAGF;AAMA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAyC;AAG3C;AACA;AAEA;AAKA;AAQA;AAMA;AACE;AACA;AAA6D;AAO/D;AACE;AACA;AACA;AACA;AAGG;AAOL;AACE;AACA;AAA4C;AAO9C;AACE;AACA;AACA;AACA;AACA;AAEA;AACE;MAEF;AAAA;AAGE;AACE;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAYA;AACE;AACA;IACF;AAMA;AACE;AACI;AACA;AACA;AACA;AAEJ;AAEE;AACE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACE;AAGA;UACF;AACE;AACA;UACF;AAAA;AAEA;QACF;AAAA;AAIE;AACA;AACA;AACA;AACA;QACF;AAAA;AAIE;AACE;UACF;AACE;UACF;AAAA;AAEA;AAKA;QACF;AAAA;AAIE;AACA;AACA;AACE;AACA;AAAY;AAEd;AACA;QACF;AAAA;AAKE;AACA;AACA;AACA;AACE;AACA;AACA;UACF;AAAA;AAEA;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAGE;QAEF;AAAA;AACF;IAGF;AAMA;AACE;AACI;AAEJ;IAGF;AAMA;AACE;AAA+B;AAAW;IAgB5C;AAMA;AACE;AAA0B;AAAW;AAEjC;AACA;AACA;AAEJ;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;IAGF;AAMA;AACE;IACF;AAAA;AAGE;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;AAGE;MAGF;AAAA;IAQF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IAUF;AAEA;AACE;IACF;AAEA;AACE;AACA;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IAQF;AAEA;AACE;IACF;AAEA;AACE;AACA;AAGA;IACF;AAGA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;AACE;AACE;QAGF;AACE;QACF;AAAA;AAEE;QACF;AAAA;AACF;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAEA;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AAEA;AACE;IACF;AAMA;AACE;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAOE;AACA;IACF;AAMA;AACE;AACA;AAEA;AACA;AACE;MACF;AAAA;IAGF;AAMA;AACE;IACF;AAMA;AACE;IACF;AAMA;AACE;AAEA;AACE;MACF;AAAA;IAGF;AAMA;AACE;AACE;AAAc;AACZ;UACF;AAAA;AACW;AACT;UACF;AAAA;AACgB;AACd;UAIF;AAAA;AACa;AACX;UAGF;AAAA;AACc;AACZ;AACI;AACA;AACA;AACA;AACA;AACA;AAGJ;AACA;AACE;AAAU;AAAc;AAAyB;AACjD;AAEI;AAAc;AAAyB;YAE7C;AAAA;AAGA;AACE;AAEA;AACA;AACE;AAEI;AAAe;AAAyB;cAE9C;AAAA;YAGF;AAAA;UAEF;AAAA;AACyB;AACvB;AAEA;AACE;YACF;AAAA;UAGF;AAAA;AACmB;AACjB;AACI;AAEJ;AACE;YACF;AAAA;UAGF;AAAA;AACwB;AACtB;AAEA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;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACI;AAA2C;AAEnD;AACA;AAAiB;AAGrB;AACI;IACJ;AACA;AACI;AACI;AACA;MACJ;AAAA;AAEJ;AAKA;AAKA;AAMA;EACJ;AACA;AA1JA;AACI;AAAa;AA0JokV;AC3JrlV;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAiBA;AAlEA;AACI;AAAa;AAoFgvL;ACrFjwL;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AAUA;AASA;AAaA;AACI;AACA;AAKI;IAGJ;AAIA;AACI;AACI;AACI;AAAW;AAEf;AACqB;AAA6B;AAAuB;MAE7E;IACJ;AAIA;AACI;AACI;AACI;AAAW;AAEf;AACqB;AAA6B;AAAuB;MAE7E;IACJ;AAIA;AACI;AACI;AACI;AAAW;AAEf;AACA;AACmB;AAAwC;AAAe;MAC9E;IACJ;AAIA;AAA0C;IAAa;AAKvD;AACI;AACI;AAAW;AAEf;AACI;AAAW;AAEX;MACJ;IACJ;AACA;AACI;AACI;AAAW;AAEf;AACI;AAAW;AAEX;AACA;MACJ;IACJ;AACA;EACJ;AACA;AACA;AACI;EACJ;AAAA;AAEI;AAAqC;IAAmB;EAC5D;AAAA;AAEI;AAAqC;IAAmB;EAC5D;AAAA;AAEI;AACI;IACJ;AACA;EACJ;AAAA;AAtII;AAAa;AAuI4mX;ACxI7nX;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AAMA;AAlFA;AACI;AAAa;AAkFw/J;ACnFzgK;AACA;AACE;AADF;AACA;AACA;GADoB;AAClB;AACF;AAAy0B;ACJz0B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AA4DA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACI;QACJ;AAAA;AAEA;AACA;AACA;AACI;AACI;UACJ;AAEI;UACJ;AAAA;AACJ;AAEJ;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACI;QACJ;AAAA;AACJ;AAEI;AACA;AACI;QACJ;AAAA;AACJ;AAEJ;AAA8C;IAAsC;AACpF;AACI;AACA;IACJ;AACA;AACI;AACA;AAA6C;MAAqD;AAClG;AAA+C;MAAqD;AACpG;AACI;AACI;QACJ;AAAA;IAER;AACA;AACI;AACA;AAA6C;MAAuC;AACpF;AAA+C;MAAwC;IAC3F;AACA;AACI;AACA;AAAoD;MAAkD;IAC1G;AACA;AACI;AACA;AACI;AACI;AAA2C;UAAkD;QACjG;AAEI;AAA2C;UAAkD;QACjG;AAEI;AACI;AACI;AAAyC;QAErD;AAAA;AACJ;AAEJ;AACI;AACA;AACI;AACI;AACA;AAAgB;AACZ;UACJ;AAAA;AAGA;QACJ;AAAA;AACJ;AAEJ;AACuB;AAAuB;AAAqD;AAGnG;EACJ;AACA;AA5LA;AACI;AAAa;AA4Lozd;AC7Lr0d;;AAAA;AAC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I;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAKI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACA;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AAsDA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AAAmB;MAAmB;AACtC;AACA;AAAiB;AAErB;AAII;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AACI;AAAmB;MAAiC;AACpD;AACA;AAAiB;AAErB;AAA+D;IAA0C;AACzG;AAAwD;IAA0C;AAClG;AACI;AAAmB;MAA6B;AAChD;AACA;AAAiB;AAErB;AAAgD;IAAwC;AACxF;AAA0C;IAAkE;AAC5G;AAAiD;IAAiC;AAClF;AAAkD;IAAgC;AAClF;AACI;AACA;IACJ;AACA;AAAqD;IAAuC;AAC5F;AAA2C;IAAsB;AACjE;EACJ;AACA;AA9IA;AACI;AAAa;AA8I4sP;AC/I7tP;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvBA;AACI;AAAa;AAuBgjD;ACxBjkD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;IAEJ;AAAA;AAEI;AAAmB;MAA4E;AAC/F;AACA;AAAiB;AAErB;AACI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AAAmB;MAA0E;AAC7F;AACA;AAAiB;AAErB;AAAgD;IAAiC;AACjF;AAAiD;IAA0B;AAC3E;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;AAEA;AACI;AACA;AACI;UACJ;AAAA;QAEJ;AAAA;AACJ;AAEJ;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACI;AACA;AACI;AACI;UACJ;AAAA;AAEJ;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;AACI;QACJ;AAAA;IAER;AACA;EACJ;AACA;AACA;AACI;AAAoC;IAAyB;EACjE;AAAA;AAEA;AACI;AACI;AACI;AACI;QACJ;AAAA;MAEJ;AAAA;EAER;AAAA;AAEI;AACI;AACI;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;IAER;AAAA;AACJ;AAGA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAxLA;AACI;AAAa;AAyLwzc;AC1Lz0c;;AAAA;AACI;AAAmB;AACnB;AADJ;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA;AACI;AAAa;AAgBgkC;ACjBjlC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AAyBA;AAwBA;AArDA;AACI;AAAa;AAqDgtF;ACtDjuF;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;EACJ;AAAA;AAMgD;AAAwB;AAAO;AAlB/E;AACI;AAAa;AAsBgrE;ACvBjsE;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAIb;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AAAsB;AAAsB;AAAsB;AAAgC;AAAgC;AAClI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;AAEI;AACA;AACA;AACI;AACI;AACA;YACJ;AAEI;YACJ;AAAA;AAEJ;AACI;AACI;AACA;YACJ;AAEI;YACJ;AAAA;AAEJ;AACI;AACA;AAGI;AACI;cACJ;AAEI;cACJ;AAAA;AACJ;AAEJ;AACI;AACA;AACA;UACJ;AAAA;MAER;AAEI;MACJ;AAAA;AACJ;AAC2C;IAAmD;AAC9F;AAAgD;IAA2B;AAC3E;AACA;AAAuD;IAAkC;AACzF;AACA;AAAgD;IAA2B;AAC3E;AACA;EACJ;AACA;AArFA;AACI;AAAa;AAqF4wR;ACtF7xR;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AAwEA;AAKI;AACI;AACA;AAAkC;AAClC;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACI;AACA;AAEI;AACA;AACI;AACA;UACJ;AAAA;AAEJ;AACI;AAEA;QACJ;AACA;AACI;AACA;QACJ;AACA;AAAyC;QAA6C;AACtF;AAA4B;QAAyC;AAAA;IAE7E;AAAA;AACuC;IAAoD;AAC3F;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACI;AAEI;AACA;UACJ;AAEI;AACA;AACI;AAEI;AAAqC;gBAAmC;cAC5E;AAEI;cACJ;AAAA;AACJ;AACJ;AACJ;AACJ;AAEJ;AACA;AAII;AAAmB;MAAyB;AAC5C;AACA;AAAiB;AAErB;AAMI;AAAmB;MAA+B;AAClD;AACA;AAAiB;AAErB;AAMI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AAII;AAAmB;MAA4B;AAC/C;AACA;AAAiB;AAErB;AAII;AAAmB;MAAmC;AACtD;AACA;AAAiB;AAErB;AAII;AAAmB;MAAmC;AACtD;AACA;AAAiB;AAcrB;AAAuC;IAAoC;AAK3E;AAA8C;IAA2C;AAazF;AAAqD;IAAoC;AACzF;EACJ;AACA;AArPA;AACI;AAAa;AAqPwse;ACtPzte;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AAMA;AACI;AACI;AAEA;AAEA;AAOA;AAEA;AACA;IACJ;AAAA;AAGI;AACA;AACI;AACA;MACJ;AACA;AACI;AACI;AACA;AACI;AACA;UACJ;QACJ;MACJ;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;IACJ;AAEA;AACI;AACA;AAEI;AACI;AACI;UACJ;AAAA;QAEJ;MACJ;AAGI;MACJ;AAAA;AAEJ;AACI;AACA;IACJ;AACA;AAA6D;IAA2B;AACxF;AAEI;IACJ;AACA;AAEI;IACJ;AACA;AAIA;EACJ;AACA;AAIA;AACI;AAEI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AAAiE;IAAqC;AACtG;AAAkE;IAA2D;AAC7H;AAAiE;IAAyD;AAC1H;AACI;AAAkC;MAAwB;AAAA;IAE9D;AACA;AAIA;EACJ;AACA;AACA;AACI;AACA;AAEA;AACI;IACJ;AACA;AAIA;EACJ;AAIA;AACI;EACJ;AAAA;AAEA;AA7JA;AACI;AAAa;AA6JgjW;AC9JjkW;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AAGA;AACA;AACI;AACA;AAC6C;IAAuB;AAEpE;AAA8C;IAAoB;AAClE;AAIA;EACJ;AACA;AA7BA;AACI;AAAa;AA6Bw2C;AC9Bz3C;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACI;EACJ;AAAA;AAEA;AACA;AAKA;AACI;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AAEA;AACA;AACI;IACJ;AAEI;IACJ;AAAA;EAEJ;AAAA;AAMA;AACI;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;EAEJ;AAAA;AAKA;AACI;AACI;IACJ;AAAA;AACJ;AAKA;AACI;EACJ;AAAA;AAMA;AACI;AACA;EACJ;AAAA;AAOA;AACI;AACA;AACI;AACA;AAE2B;MAAiC;IAChE;EACJ;AAAA;AAUA;AACI;AACA;AAMI;AAAmB;MAAoC;AACvD;AACA;AAAiB;AAErB;AACA;AACI;AAAmB;MAAoC;AACvD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AAEA;AAEA;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACI;AAAgC;QAAe;AAAE;AACzD;AACsE;IAAsC;AAC5G;AACI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AACI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AAA4D;IAAiC;AAC7F;AACI;AAA4E;MAAsB;AAClG;AAAoD;MAAkB;AACtE;IACJ;AAEA;AAA+D;IAA0D;AACzH;AAIA;EACJ;AACA;AAMA;AACI;AACA;AAKI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACA;AAII;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACA;AAII;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAuB;MAAwE;AAC/F;AACI;AACA;AACA;AACA;AACI;AACI;AACA;AACI;YACJ;AAAA;AACJ;AACJ;AAEI;AACqE;UAAoC;AACzG;QACJ;AAEI;AACA;QACJ;AAAA;MAEJ;AACA;AACI;MACJ;AACA;AAAgF;AAA8B;QAAc;MAAI;IACpI;AAAA;AAEI;IACJ;AACA;AAAyE;IAAsC;AAC/G;AACI;IACJ;AACA;AACI;IACJ;AACA;AAAmE;IAAmC;AACtG;AACI;AACA;AACA;AAMA;AACA;AACI;AACI;AACA;AACI;AAAqD;YAAwB;AACzE;AACA;YACJ;UACJ;AAAA;AAGA;AACA;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEI;AACA;AACA;AAAgC;QAAiC;AACjE;AACA;AACI;QAEJ;AAAA;AAEA;AACA;AACI;QACJ;AAAA;MAEJ;IACJ;AAEA;AACI;AACA;AACA;AACA;AAAuD;MAA+B;IAC1F;AAEA;AACI;AACI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AACI;AAAmB;MAAmB;AACtC;AACA;AAAiB;AAErB;AACI;AACI;MACJ;AAAA;AAEA;AACI;AACA;AAAuD;QAAiC;AACxF;AACI;AAAuD;UAAkC;QAC7F;AAAA;AAGA;AACA;MACJ;AAAA;AAEJ;AAEI;AAA8E;MAAsB;AACpG;AAAoD;MAAkB;AACtE;IACJ;AACA;AACI;AAAmB;MAAiC;AACpD;AACA;AAAiB;AAGrB;AACA;AAIA;EACJ;AACA;AAIA;AAIA;AAC4D;AAA0B;AAA0B;AAvZhH;AACI;AAAa;AA0ZohlC;AC3ZrilC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AACI;AACA;AACI;AACA;MACJ;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AAC0C;IAA6B;AACvE;AAA4C;IAA4B;AAGxE;AACI;IACJ;AACA;AACI;AACI;AAA0B;IAElC;AACA;AACI;IACJ;AACA;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;IAER;AACA;AACI;IACJ;AACA;AAA4C;IAA+B;AAC3E;AAAyC;IAA+B;AACxE;EACJ;AACA;AAjDA;AACI;AAAa;AAiDg5I;AClDj6I;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEF;EACF;AACA;AAtCA;AACI;AAAa;AAsCjB;ACvCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AAAyB;EAAS;AAAA;AAFlC;AACI;AAAa;AAGoB;ACJrC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AAUA;AACI;AACA;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AAxBA;AACI;AAAa;AAwBiC;ACzBlD;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;AACE;MACF;AACE;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AAEA;AACA;AACA;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEA;IACF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;IACF;AACA;EACF;AACA;AACA;AACE;AACA;AACE;AACA;IACF;AAAA;EAEF;AA9LA;AACI;AAAa;AA8LjB;AC/LA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACE;AACA;AACE;AACE;MACF;AAAA;AAEA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACA;AACE;AACE;AACE;AACA;UACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACA;YACF;AAAA;AAEA;AACE;YACF;AAAA;AAEA;AACE;YACF;UACF;QACF;AAAA;AAEA;AACE;AACE;AACE;AACA;AAAqB;UAEzB;AAAA;AAEA;AACE;AACA;AACA;AACE;AACE;AACA;AAAqB;YAEzB;AAAA;AAEA;AACE;AACE;AACA;AAAqB;YAEzB;AAAA;AAEA;AACE;YACF;UACF;QACF;AAAA;AACF;AAEF;EACF;AACA;AACA;AACE;AACI;AACJ;AACE;AACA;IACF;AAAA;AACF;AAEE;AACI;AACJ;AACE;IACF;AAAA;AACF;AA1GI;AAAa;AA2GjB;AC5GA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;AACA;AACE;MACF;AACE;MACF;AACE;MACF;IACF;EACF;AAAA;AAzBA;AACI;AAAa;AA0BjB;AC3BA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AAAmD;EAA0C;AAF7F;AACI;AAAa;AAEiB;ACHlC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;EACJ;AAAA;AAJA;AACI;AAAa;AAKkB;ACNnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;EACJ;AAAA;AAJA;AACI;AAAa;AAKoB;ACNrC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AACE;AACA;IACF;AAAA;AACF;AAEE;AACA;EACF;AAAA;AAEA;AAjBA;AACI;AAAa;AAiBjB;AClBA;;AAAA;AACI;AAAmB;AACnB;AACJ;AAHA;AACI;AAAa;AAGqB;ACJtC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AAKA;AACI;AACA;AACI;AACA;AACA;AACA;AAAqH;MAA0C;IACnK;AAAA;EAEJ;AACA;AArBA;AACI;AAAa;AAqB6B;ACtB9C;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AAEA;AACI;AACA;AACI;IACJ;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AACJ;AAGI;AACI;IACJ;AAAA;AAEA;AAEA;AACA;AACI;AACA;AACA;AACI;AACI;QACJ;AAAA;AACJ;AAEA;IACJ;AAAA;AAEA;AACA;EACJ;AAAA;AAGI;AACA;AACI;AACI;MACJ;AAAA;AACJ;AAEA;AACI;IACJ;AAAA;AAIJ;AACI;AACA;EACJ;AAAA;AAEI;EACJ;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAiB;AAGjB;AACA;AACA;AACA;AACA;AACA;AAEA;AACI;EACJ;AAEA;AAA4B;EAAW;AACvC;AACI;EACJ;AACA;AAA6B;EAAU;AA1FvC;AACI;AAAa;AA0FjB;AC3FA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADwC;ACAzD;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADmD;ACApE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;AACA;AACA;AACE;QACF;AAAA;AAEA;AACI;AACA;AACJ;AACA;AACE;AACA;AACE;AACA;UACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACE;gBACF;AACE;gBACF;AAAA;AACF;AACF;AACF;AACF;AAEE;QACF;AAAA;AAEF;AACE;AACE;QACF;AAAA;AAEA;AACE;AACE;AAAgC;AAEhC;AACE;YACF;AACE;YACF;AACE;YACF;AAAA;AACK;AAEL;AADK;AAGT;MACF;AACA;AACE;AACE;QACF;AAAA;AAEA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEF;AACE;AACA;MACF;AACA;IACF;AACA;EACF;AAnGA;AACI;AAAa;AAmGjB;ACpGA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AAAwB;IAAW;AACnC;AAAwB;AAN5B;AACI;AAAa;AAOkB;ACRnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AAAK;AAEL;AACE;AACA;UACF;AAAA;AAEE;AACE;AACA;YACF;AACE;AACA;YACF;AAAA;UAEF;AAAA;AAEA;AACA;AACA;AAHK;IAKX;AAAA;AAEE;AACA;AACA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;IACF;AACA;EACF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACE;MACF;AACE;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACA;IACF;AAAA;AAEE;AACE;AACA;AACE;QACF;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;AACA;AACE;AACE;AACA;UACF;AACE;AACA;UACF;AAAA;AAEA;AACA;QACF;AACE;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;AACA;AACE;AACE;AACA;UACF;AACE;AACA;UACF;AAAA;AAEA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACA;IACF;AACA;EACF;AA9LA;AACI;AAAa;AA8LjB;AC/LA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AAAiB;AAErB;AAEA;AACA;AACA;AACA;AACI;EACJ;AAAA;AAhBI;AAAa;AAiBc;AClB/B;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AAJA;AACI;AAAa;AAIjB;ACLA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;AACE;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AACJ;AACC;AACA;AAEA;AACC;AACC;MACD;AACC;AACA;MACD;AAAA;AAEA;IACD;AAAA;EAGD;AAnBA;AACI;AAAa;AAmBjB;ACpBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD4C;ACA7D;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;AACA;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACE;AACE;AACE;YACF;AACE;AACA;YACF;AAAA;AAEA;UACF;AAAA;MAEJ;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;EACF;AACA;AApEA;AACI;AAAa;AAoEjB;ACrEA;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AAEI;IACJ;AACA;AAA4C;IAAgC;AAC5E;AACI;IACJ;AACA;AAA6C;IAAiC;AAC9E;EACJ;AACA;AACA;AAC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AACA;AACA;AACA;AACI;AAAsB;MAE9B;AAAA;AACJ;AAEA;EACJ;AAAA;AAEA;AACI;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;MACJ;AAEI;AACA;MACJ;AAAA;AAEI;AACA;AAGA;AACI;QACJ;AAAA;AAEA;AACA;AACA;AACA;MACJ;AAAA;AACJ;AAEA;EACJ;AAAA;AAEA;AACI;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;MACJ;AAEI;AACI;AACA;AACA;AACA;AACA;QACJ;MACJ;AAAA;AACJ;AAEA;EACJ;AAAA;AA9PA;AACI;AAAa;AA+P4prB;AChQ7qrB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;AA5BA;AACI;AAAa;AA4Bg7G;AC7Bj8G;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACI;AACA;AAyB2D;IAAqC;AAChG;AACA;EACJ;AACA;AAtCA;AACI;AAAa;AAsCw6E;ACvCz7E;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AACJ;AAEI;AACI;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;IAE7B;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACI;MACJ;AAAA;AACJ;AAEI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;IAGJ;AAAA;AAEI;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AACoF;IAAwC;AAC5H;AACI;IACJ;AACA;AACI;AACA;AACA;AACI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;IAEJ;AACA;AACI;AACI;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;AAEhB;AAAgB;IAExB;AACA;AAAiF;IAAkC;AACnH;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AACqF;IAAwC;AAC7H;AACI;IACJ;AACA;AACI;AACA;AACI;AACI;AACI;UACJ;AAAA;QAEJ;AAAA;AACJ;IAEJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AAAkF;IAAyB;AAC3G;EACJ;AACA;AAkCA;AACI;AACA;AAmCI;IACJ;AA2BA;AACI;AAAyB;MAAe;AAAA;AAExC;IACJ;AAuBA;AACI;AAAyB;MAAe;AAAA;IAE5C;AAIA;AACI;IACJ;AACA;AAeI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAKrB;AAA0D;IAAa;AA4BvE;AACI;IACJ;AA0BA;AACI;IACJ;AAyBA;AAA2E;IAAqC;AAyBhH;AAAyE;IAAqC;AAC9G;EACJ;AACA;AACA;AAII;AACI;AAA0B;MAAgB;AAAA;AACV;MAAsB;AAAA;AAGtD;AACA;AACA;AACA;IACJ;AAAA;AAI2D;IAA6B;AACxF;AACI;AAAgC;MAA+C;AAAA;IAEnF;AACA;AAAyD;IAA4C;AACrG;AACI;AAAmB;MAAqB;AACxC;AACA;AAAiB;AAErB;AAMI;AAAmB;MAAuB;AAC1C;AACA;AAAiB;AAErB;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AAEA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACI;AACA;AACI;QACJ;AAAA;MAEJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACJ;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AAEA;AACI;AACI;AACI;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AADG;MAGf;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;MACJ;AAEI;MACJ;AAAA;AAGJ;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAGJ;AACI;AACA;IACJ;AAEA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEI;AACA;AACA;AACI;AAAU;MAElB;AAAA;AAEI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACI;AAA8E;QAA4C;MAC9H;AACA;AACA;AAAiB;AAErB;AAAuD;IAAyB;AAChF;EACJ;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AAAA;AA1zBI;AAAa;AA2zB4lqE;AC5zB7mqE;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AAyCA;AACI;AACI;IACJ;AAAA;AACkD;IAAwD;AAC1G;AAIA;EACJ;AACA;AAsBA;AACI;AACA;AACoD;IAAsB;AAC1E;AAIA;EACJ;AACA;AAKA;AACI;AACA;AAEI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AAIA;EACJ;AACA;AAgCA;AACI;AACA;AAKA;EACJ;AACA;AA4BA;AACI;AACA;AACgD;IAAkB;AAClE;AAIA;EACJ;AACA;AA0BA;AACI;AACA;AACoD;IAAsB;AAC1E;AAIA;EACJ;AACA;AAuDA;AACI;AACA;AACgD;IAAkB;AAClE;AAIA;EACJ;AACA;AAvSA;AACI;AAAa;AAuSg2U;ACxSj3U;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AAgBA;AACI;AACI;AAA4B;AAAwB;AAA8B;AAA4B;AAAgB;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAgCI;AAAmB;MAA0C;AAC7D;AACA;AAAiB;AAErB;AAIA;EACJ;AACA;AAMA;AACI;AACA;AACI;AAA0B;AAAsB;AAAsB;AAA0B;AAAgB;AAChH;AACI;AACA;AACA;AACA;AACA;AACA;AAAW;IAEnB;AAAA;AAKI;AAAmB;MAAsB;AACzC;AACA;AAAiB;AAErB;AAII;AAAmB;MAAyB;AAC5C;AACA;AAAiB;AAErB;AAII;AAAmB;MAAwB;AAC3C;AACA;AAAiB;AAErB;AAII;AAAmB;MAAsB;AACzC;AACA;AAAiB;AAErB;AAIA;EACJ;AACA;AAaA;AACI;EACJ;AAAA;AAKA;AACI;AACI;IACJ;AAAA;AA+BI;AACI;MACJ;AAAA;IAEJ;AAcA;AAAuD;IAAsD;AAiC7G;AACI;AACI;MACJ;AAAA;IAEJ;AAgBA;AACI;AACI;MACJ;AAAA;AACkC;AAAqB;AAAiB;IAC5E;AACA;EACJ;AACA;AAQA;AACI;AAA4B;AAAwB;AAA8B;AAA4B;AAAgB;AAC9H;AACI;AACA;AACA;AACA;AACA;AACA;AAAW;EAEnB;AAAA;AAvSA;AACI;AAAa;AAwS48nB;ACzS79nB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAkC;AACrD;AACA;AAAiB;AAErB;EACJ;AACA;AAIA;AACI;AASI;AACA;IACJ;AAAA;EAEJ;AACA;AAIA;AACI;AACA;AACA;AACI;AACA;AACA;IACJ;AAEI;AAAuC;MAAsB;AAC7D;IACJ;AAEI;AACA;IACJ;AAEI;AAA0B;MAA0B;AACpD;IACJ;AAAA;EAEJ;AAAA;AAQA;AACI;EACJ;AAAA;AAKA;AACI;AACA;AACA;EACJ;AAAA;AAOA;AACI;AACI;AACA;AACA;AACI;AACI;QACJ;AAAA;AAEI;AACI;UACJ;AAAA;AAGA;QACJ;AAAA;AAGA;AACA;AACI;QACJ;AAEI;QACJ;AAAA;MAEJ;AAAA;AACJ;EAEJ;AAAA;AAEA;AACI;AACI;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAEI;AACI;IACJ;AAEI;AAA6C;MAAY;AACzD;AAAuC;MAA6C;IACxF;AAAA;AACJ;AAEA;AACI;AACA;AACI;AAAS;AAET;IACJ;AAAA;AACiC;IAA6C;EAClF;AAAA;AAEI;AACA;AACA;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AACJ;AAEA;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;AACI;QACJ;AAAA;MAEJ;AAAA;AACJ;AAEA;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEI;EACJ;AAAA;AAzOI;AAAa;AA0Og+sB;AC3Oj/sB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AAYA;AACI;AACA;AAAsC;IAAiC;AACvE;EACJ;AAAA;AAiBA;AACI;AAEI;IACJ;AAEI;IACJ;AAAA;AACJ;AA5CA;AACI;AAAa;AA6CorG;AC9CrsG;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AAgBA;AAII;AACI;AACA;AACA;AACI;MACJ;AAAA;AACJ;AAKI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAKrB;AACI;IACJ;AACA;AAII;AAAmB;MAAwC;AAC3D;AACA;AAAiB;AAErB;EACJ;AACA;AAIA;AACI;AACI;IACJ;AAAA;AAEI;AACI;AAAY;AAEZ;MACJ;AAAA;AAEA;AACA;IACJ;AACA;AACI;AAAmB;MAA2B;AAC9C;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AAlFA;AACI;AAAa;AAkFwgJ;ACnFzhJ;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACI;AACA;MACJ;AAEI;MACJ;AAAA;AACJ;EAEJ;AAAA;AAEI;AACI;AACA;AAA4C;MAAkC;AAC9E;IACJ;AAEI;IACJ;AAAA;AACJ;AAKI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;AACI;AAAmB;MAAiE;AACpF;AACA;AAAiB;AAErB;EACJ;AACA;AAeA;AACI;AACA;AACI;AACI;AACA;MACJ;IACJ;AAAA;EAEJ;AACA;AAiBA;AACI;AACA;AACI;AACI;MACJ;IACJ;AAAA;EAEJ;AACA;AA2BA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AACI;AACI;AACA;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqB;AACxC;AACA;AAAiB;AAErB;AACI;AAAmB;MAAiE;AACpF;AACA;AAAiB;AAErB;EACJ;AACA;AAWA;AACI;AACA;AACI;IAEJ;AAAA;EAEJ;AACA;AA6BA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;AAAgB;AACZ;AACA;AACI;QACJ;AAEI;QACJ;AAAA;AACJ;IAKJ;AACA;EACJ;AACA;AAcA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AACA;AAcA;AACI;AACA;AACI;IAEJ;AAAA;EAEJ;AACA;AAzRA;AACI;AAAa;AAyR45iB;AC1R76iB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AAsBA;AACI;AACI;IACJ;AAAA;AAC+C;IAA8B;AAC7E;AAIA;EACJ;AACA;AA7CA;AACI;AAAa;AA6CozD;AC9Cr0D;;AAAA;AACI;AAAmB;AACnB;AADJ;AAMA;AACA;AACI;AAAiB;AAAgC;AAAiB;AACtE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhDA;AACI;AAAa;AAgDokF;ACjDrlF;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AAUA;AACA;AACI;EACJ;AAAA;AAIuF;AAAyC;AAAO;AACvI;AACI;EACJ;AAAA;AAQA;AAIA;AApCA;AACI;AAAa;AAoCg6G;ACrCj7G;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2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J;AACuB;AAAwB;AAAmB;AAGlE;EACJ;AACA;AASA;AACI;AAGI;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;MACJ;AACA;AACA;AAAiB;AAErB;AACuB;AAA4B;AAAuB;AAI1E;EACJ;AACA;AAOA;AACI;AACI;IACJ;AAAA;AAMA;EACJ;AACA;AAlOA;AACI;AAAa;AAkO43d;ACnO74d;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;EAEJ;AACA;AAwDA;AACI;AACI;AACA;IACJ;AAAA;AAMA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACA;AACI;MACJ;AACA;IACJ;AAEA;AACI;AACA;AACA;AACI;AAA+C;IAEvD;AAEA;AACI;AACI;AAA0B;AAGlC;AACI;AACI;AAAM;AAEV;IACJ;AAEA;AACI;AACA;AACA;IACJ;AAEA;AAA0D;IAAoC;AAE9F;AACI;IACJ;AAEA;AAAoD;IAA8D;AAClH;AAIA;AAKA;AAIA;EACJ;AACA;AApKA;AACI;AAAa;AAoKwyT;ACrKzzT;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAyCA;AAnDA;AACI;AAAa;AA8DosG;AC/DrtG;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAgC;AAAiB;AACtE;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/BA;AACI;AAAa;AA+B4lD;AChC7mD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AA4CA;AAjDA;AACI;AAAa;AAiDgjF;AClDjkF;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AAAiB;AAAgC;AAAiB;AACtE;AAEA;AACA;AACA;AATA;AACI;AAAa;AASooB;ACVrpB;AACA;AACE;AADF;AAQA;AACE;AAEA;AAIE;AACE;QACF;AAAe;MAGjB;AAEE;MACF;AAAA;AAKF;AAIE;AACA;AAgCA;AACE;AAAO;AAGP;AACE;YACF;AAAA;AAGE;YACF;AAAA;AAIE;AAEA;AACE;AACA;cACF;AAAA;AACF;AAGE;AACA;YACF;AAAA;AAGE;YACF;AAAA;AAGF;AACA;AAGA;AAUE;AAUA;AASA;AASA;AAgBA;AAKA;AAAW;AAIb;AAEE;AACE;AACA;YACF;AAEA;AACE;AACE;cACF;AAAA;AAGF;AACE;AACA;YACF;AAEA;AACE;AACA;YACF;AAGA;AACE;AACE;AAAgB;AAA2B;AAA4B;AAAE;AAG3E;YACF;AAGA;AACE;AAA4C;AAAQ;AAAM;AACxD;AACA;AACA;AAEA;AACE;AACA;AAA+C;YAErD;AAGA;AACE;AAAY;AAAQ;AAAM;AAE1B;AACE;AACA;AACA;cACF;AAAA;YAGF;AAGA;AACE;AACE;AAA4B;gBAAc;AAAA;cAE5C;AAAA;YAEF;AAGA;AACE;AAAO;AAEP;AAAgB;cAAY;AAAA;AAG1B;AACE;AACE;kBACF;AACE;kBACF;AAAA;AACF;AACF;YAGF;AAEA;AACE;AACE;AACE;AAEF;AACE;gBACF;cACF;YACF;AAAA;AAMJ;AACA;AAIA;AAkBE;AACE;AAAU;AAAQ;AAElB;AACE;AACA;AACA;UACF;AAAA;AAGE;AACE;AACA;AACA;AACA;AACA;AACA;AAAmF;AAGrF;AACA;AAEA;AACE;AACA;YACF;AAAA;AAIA;AACE;YACF;AAAA;AAGE;YACF;AACE;YACF;AAAA;AAIA;AACA;AAEA;AACE;YACF;AAAA;AACF;AAgBF;AACE;AACA;QACF;AAcA;AACE;AACA;AACA;AACA;AACA;AACA;QACF;AAWA;AACE;AACE;AAGF;AACA;AACA;AACA;AAeA;AAaA;AAaA;AAaA;AAaA;AAaA;AAaA;AAaA;AAGA;AACA;AAGA;AAGA;AAGA;AACE;AACA;UACF;AAAA;AAME;AACA;AAGA;AACA;AACA;AAEA;AACE;YACF;AAAA;AAGE;AACE;cACF;AAAA;AACF;AAGE;AAEA;AACE;cACF;AAAA;YAGF;AAAA;AACF;QAGF;AAaA;AACE;AACE;AAEF;AACE;UACF;AAAA;AAGE;UACF;AAAA;AAGA;AACA;AACA;AAEA;QACF;AAaA;AACE;AAAgB;AAAO;AAAO;AAAW;AAAO;AAC9C;AACA;AAEF;AACE;UACF;AACE;UACF;AAAA;AAIA;AAAsC;UAAc;AAAA;AAGpD;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;QACF;AA0BA;AACE;AAEA;AACE;AACA;AACA;AACA;UACF;AAAA;AAGE;UACF;AAAA;AAGE;UACF;AAAA;QAGF;AAoBA;AACE;AAAO;AAAO;AAAQ;AACpB;AAEF;AACE;UACF;AAAA;AAGE;AACE;AACE;cACF;AAAA;AACF;AACF;AAKE;UACF;AAAA;AAGE;AACA;AAEA;AACE;AACA;AAEA;AACE;AACA;cACF;AACE;AACA;AACA;cACF;AAAA;AAEA;AAEA;AACE;AACA;cACF;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;YACF;AAAA;AAGA;AAEA;AACE;YACF;AAAA;UAGF;AAAA;AAmBF;AACE;AACA;AACA;QACF;AAmBA;AACE;AAAO;AAAQ;AAAK;AAAQ;AAAQ;AAAQ;AAAQ;AAClD;AACA;AAEF;AAAkB;UAAqB;AAAA;AAIvC;AAEA;AAEA;AACE;AAGA;AACE;AACA;AAEA;AACE;AACE;AACA;gBACF;AACE;gBACF;AAAA;AAGA;cACF;AAAA;AAGE;AAAe;AAAsB;AAAW;AAAG;cACrD;AAAA;AAIA;YACF;AAAA;AACF;AAIE;AACE;YACF;AACE;AACA;YACF;UACF;AAAA;QAGF;AAeA;AACE;AACE;UACF;AAAA;AAoBF;AACE;AACE;AAEF;AAEA;AACE;AACA;AACA;AACA;AACE;YACF;AAAA;AACF;AAGE;UACF;AAAA;AAiBF;AACE;QACF;AAaA;AACE;AACA;AACA;AACA;QACF;AAQA;AACE;AAAuB;UAAQ;AAAA;AAG/B;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;QAET;AAOA;AACE;AAAe;AAAO;AAAY;AAChC;AAEF;AACE;UACF;AAAA;AAGE;AACA;AAA2C;YAAuB;AAAA;AAElE;AACE;AACA;AAAkC;AAA2B;AAG3D;AACA;AACA;AAEA;AAA+C;AAAkB;AACd;AAAsB;AAIzE;AACE;AAAkC;kBAAwB;AAAA;AAE1D;AAAkC;kBAAwB;AAAA;AAC5D;AAEA;cACF;AACE;AACA;cACF;AAAA;AACF;AACF;AAOF;AACE;AAAO;AAEP;AACE;AACE;YACF;AAAA;AAGA;UACF;AAAA;AAOF;AACE;AAAkB;AAChB;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAAO;AAGX;AACA;AACE;AAAM;AAGN;AACA;AAEA;AACE;AACA;AACE;AACE;AACA;kBACF;AAAA;AACF;AACF;AAIA;AACE;cACF;AACE;cACF;AAAA;AAGE;AACA;AACA;cACF;AAAA;AACK;AAEL;AACE;AACA;AACA;cACF;AAAA;AAGF;AACE;AACE;AACE;gBACF;AAAA;AACF;AAGA;AACE;AACA;cACF;AAAA;AACK;QAET;AAMA;AACE;AACE;AACA;AAEA;AACE;AACE;gBACF;AAAA;AAGE;gBACF;cACF;AAEF;AACE;UACF;AAAA;AAIA;AACA;AAEA;AACE;AACE;YACF;AAAA;AACF;AAOF;AACE;AAAY;AAAQ;AAClB;AAEF;AAEE;UACF;AAAA;AAGE;UACF;AAAA;AAGA;AACA;AAEA;AACE;AACA;UACF;AACE;UACF;AAAA;AACF;AAaF;AACE;AAAY;AAAS;AACnB;AAEA;AACE;AACA;AACA;AAAW;AAGb;AACE;AAAY;AAAU;AAAc;AAClC;AAEF;AACA;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AAAgE;AAGlE;AAEA;AACE;AACA;kBACF;AAAA;AAGE;AACA;AACA;kBACF;AAAA;AAGA;AAAK;AAEL;AAEA;AACE;AACE;AACA;AAAsB;kBAE1B;AAAA;AAMA;AAA6E;AAAA;AAG7E;AACA;AAAK;YAET;AAEF;AAIA;AACE;AACA;AACA;AAAgB;AAGlB;AACA;AACA;AAEA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;AAEnB;QACF;AACE;AACA;QACF;AAAA;AAE0E;AAAA;AAG1E;MACF;AASA;AACE;AAAS;AAET;AACE;QACF;AAAA;AAGE;QACF;AAAA;AAGE;AACE;UACF;AAAA;AACF;AAKF;AACE;AACE;AACA;AACE;AACE;YACF;AACE;YACF;AAAA;QAEJ;MACF;AAAA;IAIA;GAjzCoB;AAClB;AACF;AAgzCA;ACpzCA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyD;;;;qGCqB7D,QAAQ;;;;;;qBAnBb,SAAS;wBAAE,YAAY;sBAAE,UAAU;;2BACnC,eAAe;;;;;;;AAHvB,kBAAY,CAAC;;AAqBA,cAAQ;AACR,iBADA,QAAQ,CACP,IAAI,EAAE;;;AAChB,cAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,cAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;SAChC;;qBAJU,QAAQ;;iBAMD,8BAAG;AACnB,gBAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;WAC1E;;;iBAEO,kBAAC,KAAK,EAAE;AACd,gBAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;WACzB;;;iBAEM,mBAAG;AACR,gBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;WACrB;;;wBAhBU,QAAQ;AAAR,gBAAQ,GADpB,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAClC,QAAQ,KAAR,QAAQ;AAAR,gBAAQ,GAdpB,SAAS,CAAC;AACT,kBAAQ,EAAE,UAAU;AACpB,gBAAM,EAAE,CAAC,QAAQ,CAAC;AAClB,kBAAQ,6GAIP;AACD,oBAAU,EAAE,CAAC,eAAe,CAAC;AAC7B,gBAAM,EAAE,wuCAEN;SACH,CAAC,CAEW,QAAQ,KAAR,QAAQ;eAAR,QAAQ;;;;;;;ACrBrB;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACI;AACJ;AACA;AACE;IACF;EACF;AAXA;AACI;AAAa;AAWjB;ACZA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;IACF;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACE;EACF;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAA6E;AAAe;AAD/G;AACI;AAAa;AAAiG;ACDlH;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;AACI;AACA;AACJ;AACA;AACE;AAA2B;AAE7B;AACE;AACA;AACE;QACF;AACE;AACA;AACA;AACA;AACA;AACA;QACF;AAAA;AAEA;MACF;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAEF;AApCA;AACI;AAAa;AAoCjB;ACrCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;EACF;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAwD;AAAe;AAD1F;AACI;AAAa;AAA4E;ACD7F;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAHA;AACI;AAAa;AAEhB;ACHD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;AAA0C;EAE9C;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACA;AACE;AAAoD;AAExD;AACE;AACE;AACE;AACA;AACA;MACF;AACE;MACF;AAAA;AAEE;AACA;AACE;;AAEA;AAAa;MAEjB;IACF;AACA;AAAW;AA3Bb;AACI;AAAa;AA4BjB;AC7BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAkE;AAAe;AADpG;AACI;AAAa;AAAsF;ACDvG;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AAAiB;AAErB;AACE;AAAuG;AAE3G;AAjBA;AACI;AAAa;AAiBjB;AClBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;EACF;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAiE;AAAe;AADnG;AACI;AAAa;AAAqF;ACDtG;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AACE;AACA;AACA;AACA;AACE;AAA0B;MAE9B;AAAA;AACF;AAEE;AACE;AAAmD;AAEnD;AAA0C;IAE9C;EACF;AACA;AAtBA;AACI;AAAa;AAsBjB;ACvBA;;AAAA;AACI;AAAmB;AACnB;AACJ;AACE;AACE;IACF;AAAA;AAGF;AATA;AACI;AAAa;AAQQ;ACTzB;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AAA0B;AAAY;AAFlC;AAAa;AAEqD;ACHtE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AAA2B;AAA2C;EAExE;AAJA;AACI;AAAa;AAGhB;ACJD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACA;AACE;AAAS;AAET;AACE;AACE;QACF;AAAC;AAED;AACE;QACF;AAAC;AAED;AACE;QACF;AAAC;AAEL;AACE;IACF;EACF;AAvBA;AACI;AAAa;AAuBjB;ACxBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AAAa;AAEb;AACA;AACE;AAAQ;AAEV;AACE;AACE;QACF;AACA;AACA;MACF;AACA;AACE;AAA4D;AAChE;AAEF;AACA;AACA;AACA;AACA;AACA;AA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","file":"dist/redoc.min.js","sourcesContent":["/*eslint no-unused-vars: 0*/\n/*eslint strict: 0*/\nvar $buoop = { vs: {i:9, f:25, o:12.1, s:7}, c:2 };\nfunction $buo_f(){\n var e = document.createElement('script');\n e.src = '//browser-update.org/update.min.js';\n document.body.appendChild(e);\n}\ntry {document.addEventListener('DOMContentLoaded', $buo_f, false);}\ncatch(e){window.attachEvent('onload', $buo_f);}\n","!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p=\"\",t(0)}([function(e,exports,t){(function(e){\"use strict\";function n(e){function t(e){var t=e[v];return t}function n(e){var t=e.data;t.target.addEventListener(\"readystatechange\",function(){t.target.readyState===XMLHttpRequest.DONE&&(t.aborted||e.invoke())});var n=t.target[v];return n||(t.target[v]=e),a.apply(t.target,t.args),e}function r(){}function o(e){var t=e.data;return t.aborted=!0,i.apply(t.target,t.args)}var a=c.patchMethod(e.XMLHttpRequest.prototype,\"send\",function(){return function(e,t){var a=Zone.current,i={target:e,isPeriodic:!1,delay:null,args:t,aborted:!1};return a.scheduleMacroTask(\"XMLHttpRequest.send\",r,i,n,o)}}),i=c.patchMethod(e.XMLHttpRequest.prototype,\"abort\",function(e){return function(e,n){var r=t(e);if(r&&\"string\"==typeof r.type){if(null==r.cancelFn)return;r.zone.cancelTask(r)}}})}t(1);var r=t(2),o=t(4),a=t(5),i=t(6),s=t(8),c=t(3),u=\"set\",l=\"clear\",p=[\"alert\",\"prompt\",\"confirm\"],h=\"undefined\"==typeof window?e:window;s.patchTimer(h,u,l,\"Timeout\"),s.patchTimer(h,u,l,\"Interval\"),s.patchTimer(h,u,l,\"Immediate\"),s.patchTimer(h,\"request\",\"cancelMacroTask\",\"AnimationFrame\"),s.patchTimer(h,\"mozRequest\",\"mozCancel\",\"AnimationFrame\"),s.patchTimer(h,\"webkitRequest\",\"webkitCancel\",\"AnimationFrame\");for(var f=0;f<p.length;f++){var d=p[f];c.patchMethod(h,d,function(e,t,n){return function(t,r){return Zone.current.run(e,h,r,n)}})}r.eventTargetPatch(h),i.propertyDescriptorPatch(h),c.patchClass(\"MutationObserver\"),c.patchClass(\"WebKitMutationObserver\"),c.patchClass(\"FileReader\"),o.propertyPatch(),a.registerElementPatch(h),n(h);var v=c.zoneSymbol(\"xhrTask\");h.navigator&&h.navigator.geolocation&&c.patchPrototype(h.navigator.geolocation,[\"getCurrentPosition\",\"watchPosition\"])}).call(exports,function(){return this}())},function(e,exports){(function(e){(function(e){function t(e){return\"__zone_symbol__\"+e}function n(){D||T||0!=b.length||(e[y]?e[y].resolve(0)[g](a):e[k](a,0))}function r(e){n(),b.push(e)}function o(e){var t=e&&e.rejection;t&&console.error(\"Unhandled Promise rejection:\",t instanceof Error?t.message:t,\"; Zone:\",e.zone.name,\"; Task:\",e.task&&e.task.source,\"; Value:\",t),console.error(e)}function a(){if(!_){for(_=!0;b.length;){var e=b;b=[];for(var t=0;t<e.length;t++){var n=e[t];try{n.zone.runTask(n,null,null)}catch(r){o(r)}}}for(;w.length;){var a=w;w=[];for(var i=function(e){var t=a[e];try{t.zone.runGuarded(function(){throw t})}catch(n){o(n)}},t=0;t<a.length;t++)i(t)}_=!1,D=!1}}function i(e){return e&&e.then}function s(e){return e}function c(e){return M.reject(e)}function u(e,t){return function(n){l(e,t,n)}}function l(e,t,r){if(e[S]===O)if(r instanceof M&&r[S]!==O)p(r),l(e,r[S],r[E]);else if(i(r))r.then(u(e,t),u(e,!1));else{e[S]=t;var o=e[E];e[E]=r;for(var a=0;a<o.length;)h(e,o[a++],o[a++],o[a++],o[a++]);if(0==o.length&&t==Z){e[S]=C;try{throw new Error(\"Uncaught (in promise): \"+r)}catch(s){var c=s;c.rejection=r,c.promise=e,c.zone=f.current,c.task=f.currentTask,w.push(c),n()}}}return e}function p(e){if(e[S]===C){e[S]=Z;for(var t=0;t<w.length;t++)if(e===w[t].promise){w.splice(t,1);break}}}function h(e,t,n,r,o){p(e);var a=e[S]?r||s:o||c;t.scheduleMicroTask(P,function(){try{l(n,!0,t.run(a,null,[e[E]]))}catch(r){l(n,!1,r)}})}var f=function(){function e(e,t){this._properties=null,this._parent=e,this._name=t?t.name||\"unnamed\":\"<root>\",this._properties=t&&t.properties||{},this._zoneDelegate=new d(this,this._parent&&this._parent._zoneDelegate,t)}return Object.defineProperty(e,\"current\",{get:function(){return m},enumerable:!0,configurable:!0}),Object.defineProperty(e,\"currentTask\",{get:function(){return T},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"parent\",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"name\",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.get=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t._properties[e];t=t._parent}},e.prototype.fork=function(e){if(!e)throw new Error(\"ZoneSpec required!\");return this._zoneDelegate.fork(this,e)},e.prototype.wrap=function(e,t){if(\"function\"!=typeof e)throw new Error(\"Expecting function got: \"+e);var n=this._zoneDelegate.intercept(this,e,t),r=this;return function(){return r.runGuarded(n,this,arguments,t)}},e.prototype.run=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null);var o=m;m=this;try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{m=o}},e.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null);var o=m;m=this;try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{m=o}},e.prototype.runTask=function(e,t,n){if(e.runCount++,e.zone!=this)throw new Error(\"A task can only be run in the zone which created it! (Creation: \"+e.zone.name+\"; Execution: \"+this.name+\")\");var r=T;T=e;var o=m;m=this;try{\"macroTask\"==e.type&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null);try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{m=o,T=r}},e.prototype.scheduleMicroTask=function(e,t,n,r){return this._zoneDelegate.scheduleTask(this,new v(\"microTask\",this,e,t,n,r,null))},e.prototype.scheduleMacroTask=function(e,t,n,r,o){return this._zoneDelegate.scheduleTask(this,new v(\"macroTask\",this,e,t,n,r,o))},e.prototype.scheduleEventTask=function(e,t,n,r,o){return this._zoneDelegate.scheduleTask(this,new v(\"eventTask\",this,e,t,n,r,o))},e.prototype.cancelTask=function(e){var t=this._zoneDelegate.cancelTask(this,e);return e.runCount=-1,e.cancelFn=null,t},e.__symbol__=t,e}(),d=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._hasTaskZS=n&&(n.onHasTask?n:t._hasTaskZS),this._hasTaskDlgt=n&&(n.onHasTask?t:t._hasTaskDlgt)}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new f(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this.zone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this.zone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this.zone,e,t):!0},e.prototype.scheduleTask=function(e,t){try{if(this._scheduleTaskZS)return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this.zone,e,t);if(t.scheduleFn)t.scheduleFn(t);else{if(\"microTask\"!=t.type)throw new Error(\"Task is missing scheduleFn.\");r(t)}return t}finally{e==this.zone&&this._updateTaskCount(t.type,1)}},e.prototype.invokeTask=function(e,t,n,r){try{return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this.zone,e,t,n,r):t.callback.apply(n,r)}finally{e!=this.zone||\"eventTask\"==t.type||t.data&&t.data.isPeriodic||this._updateTaskCount(t.type,-1)}},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this.zone,e,t);else{if(!t.cancelFn)throw new Error(\"Task does not support cancellation, or is already canceled.\");n=t.cancelFn(t)}return e==this.zone&&this._updateTaskCount(t.type,-1),n},e.prototype.hasTask=function(e,t){return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this.zone,e,t)},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(0>o)throw new Error(\"More tasks executed then were scheduled.\");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};try{this.hasTask(this.zone,a)}finally{this._parentDelegate&&this._parentDelegate._updateTaskCount(e,t)}}},e}(),v=function(){function e(e,t,n,r,o,i,s){this.runCount=0,this.type=e,this.zone=t,this.source=n,this.data=o,this.scheduleFn=i,this.cancelFn=s,this.callback=r;var c=this;this.invoke=function(){try{return t.runTask(c,this,arguments)}finally{a()}}}return e}(),k=t(\"setTimeout\"),y=t(\"Promise\"),g=t(\"then\"),m=new f(null,null),T=null,b=[],_=!1,w=[],D=!1,S=t(\"state\"),E=t(\"value\"),P=\"Promise.then\",O=null,z=!0,Z=!1,C=0,M=function(){function e(e){var t=this;t[S]=O,t[E]=[];try{e&&e(u(t,z),u(t,Z))}catch(n){l(t,!1,n)}}return e.resolve=function(e){return l(new this(null),z,e)},e.reject=function(e){return l(new this(null),Z,e)},e.race=function(e){function t(e){a&&(a=r(e))}function n(e){a&&(a=o(e))}for(var r,o,a=new this(function(e,t){r=e,o=t}),s=0,c=e;s<c.length;s++){var u=c[s];i(u)||(u=this.resolve(u)),u.then(t,n)}return a},e.all=function(e){function t(e){o&&r(e),o=null}for(var n,r,o=new this(function(e,t){n=e,r=t}),a=0,s=[],c=0,u=e;c<u.length;c++){var l=u[c];i(l)||(l=this.resolve(l)),l.then(function(e){return function(t){s[e]=t,a--,o&&!a&&n(s)}}(a),t),a++}return a||n(s),o},e.prototype.then=function(t,n){var r=new e(null),o=f.current;return this[S]==O?this[E].push(o,r,t,n):h(this,o,r,t,n),r},e.prototype[\"catch\"]=function(e){return this.then(null,e)},e}(),I=e[t(\"Promise\")]=e.Promise;if(e.Promise=M,I){var j=I.prototype,L=j[t(\"then\")]=j.then;j.then=function(e,t){var n=this;return new M(function(e,t){L.call(n,e,t)}).then(e,t)}}return e.Zone=f})(\"undefined\"==typeof window?e:window)}).call(exports,function(){return this}())},function(e,exports,t){\"use strict\";function n(e){var t=[],n=e.wtf;n?t=o.split(\",\").map(function(e){return\"HTML\"+e+\"Element\"}).concat(a):e[i]?t.push(i):t=a;for(var s=0;s<t.length;s++){var c=e[t[s]];r.patchEventTargetMethods(c&&c.prototype)}}var r=t(3),o=\"Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video\",a=\"ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex\".split(\",\"),i=\"EventTarget\";exports.eventTargetPatch=n},function(e,exports){(function(e){\"use strict\";function t(e,t){for(var n=e.length-1;n>=0;n--)\"function\"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+\"_\"+n));return e}function n(e,n){for(var r=e.constructor.name,o=function(o){var a=n[o],i=e[a];i&&(e[a]=function(e){return function(){return e.apply(this,t(arguments,r+\".\"+a))}}(i))},a=0;a<n.length;a++)o(a)}function r(e,t){var n=Object.getOwnPropertyDescriptor(e,t)||{enumerable:!0,configurable:!0};delete n.writable,delete n.value;var r=t.substr(2),o=\"_\"+t;n.set=function(e){if(this[o]&&this.removeEventListener(r,this[o]),\"function\"==typeof e){var t=function(t){var n;n=e.apply(this,arguments),void 0==n||n||t.preventDefault()};this[o]=t,this.addEventListener(r,t,!1)}else this[o]=null},n.get=function(){return this[o]},Object.defineProperty(e,t,n)}function o(e,t){var n=[];for(var o in e)\"on\"==o.substr(0,2)&&n.push(o);for(var a=0;a<n.length;a++)r(e,n[a]);if(t)for(var i=0;i<t.length;i++)r(e,\"on\"+t[i])}function a(e,t,n,r,o){var a=e[k];if(a)for(var i=0;i<a.length;i++){var s=a[i],c=s.data;if(c.handler===t&&c.useCapturing===r&&c.eventName===n)return o&&a.splice(i,1),s}return null}function i(e,t){var n=e[k];n||(n=e[k]=[]),n.push(t)}function s(e){var t=e.data;return i(t.target,e),t.target[m](t.eventName,e.invoke,t.useCapturing)}function c(e){var t=e.data;a(t.target,e.invoke,t.eventName,t.useCapturing,!0),t.target[T](t.eventName,e.invoke,t.useCapturing)}function u(e,t){var n=t[0],r=t[1],o=t[2]||!1,i=e||v,u=null;\"function\"==typeof r?u=r:r&&r.handleEvent&&(u=function(e){return r.handleEvent(e)});var l=!1;try{l=r&&\"[object FunctionWrapper]\"===r.toString()}catch(p){return}if(!u||l)return i[m](n,r,o);var h=a(i,r,n,o,!1);if(h)return i[m](n,h.invoke,o);var f=Zone.current,d=i.constructor.name+\".addEventListener:\"+n,k={target:i,eventName:n,name:n,useCapturing:o,handler:r};f.scheduleEventTask(d,u,k,s,c)}function l(e,t){var n=t[0],r=t[1],o=t[2]||!1,i=e||v,s=a(i,r,n,o,!0);s?s.zone.cancelTask(s):i[T](n,r,o)}function p(e){return e&&e.addEventListener?(d(e,y,function(){return u}),d(e,g,function(){return l}),!0):!1}function h(e){var n=v[e];if(n){v[e]=function(){var r=t(arguments,e);switch(r.length){case 0:this[b]=new n;break;case 1:this[b]=new n(r[0]);break;case 2:this[b]=new n(r[0],r[1]);break;case 3:this[b]=new n(r[0],r[1],r[2]);break;case 4:this[b]=new n(r[0],r[1],r[2],r[3]);break;default:throw new Error(\"Arg list too long.\")}};var r,o=new n(function(){});for(r in o)!function(t){\"function\"==typeof o[t]?v[e].prototype[t]=function(){return this[b][t].apply(this[b],arguments)}:Object.defineProperty(v[e].prototype,t,{set:function(n){\"function\"==typeof n?this[b][t]=Zone.current.wrap(n,e+\".\"+t):this[b][t]=n},get:function(){return this[b][t]}})}(r);for(r in n)\"prototype\"!==r&&n.hasOwnProperty(r)&&(v[e][r]=n[r])}}function f(e,t){try{return Function(\"f\",\"return function \"+e+\"(){return f(this, arguments)}\")(t)}catch(n){return function(){return t(this,arguments)}}}function d(e,t,n){for(var r=e;r&&!r.hasOwnProperty(t);)r=Object.getPrototypeOf(r);!r&&e[t]&&(r=e);var o,a=exports.zoneSymbol(t);return r&&!(o=r[a])&&(o=r[a]=r[t],r[t]=f(t,n(o,a,t))),o}exports.zoneSymbol=Zone.__symbol__;var v=\"undefined\"==typeof window?e:window;exports.bindArguments=t,exports.patchPrototype=n,exports.isWebWorker=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,exports.isNode=\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),exports.isBrowser=!exports.isNode&&!exports.isWebWorker&&!(\"undefined\"==typeof window||!window.HTMLElement),exports.patchProperty=r,exports.patchOnProperties=o;var k=exports.zoneSymbol(\"eventTasks\"),y=\"addEventListener\",g=\"removeEventListener\",m=exports.zoneSymbol(y),T=exports.zoneSymbol(g);exports.patchEventTargetMethods=p;var b=exports.zoneSymbol(\"originalInstance\");exports.patchClass=h,exports.createNamedFn=f,exports.patchMethod=d}).call(exports,function(){return this}())},function(e,exports,t){\"use strict\";function n(){Object.defineProperty=function(e,t,n){if(o(e,t))throw new TypeError(\"Cannot assign to read only property '\"+t+\"' of \"+e);return\"prototype\"!==t&&(n=a(e,t,n)),s(e,t,n)},Object.defineProperties=function(e,t){return Object.keys(t).forEach(function(n){Object.defineProperty(e,n,t[n])}),e},Object.create=function(e,t){return\"object\"==typeof t&&Object.keys(t).forEach(function(n){t[n]=a(e,n,t[n])}),u(e,t)},Object.getOwnPropertyDescriptor=function(e,t){var n=c(e,t);return o(e,t)&&(n.configurable=!1),n}}function r(e,t,n){return n=a(e,t,n),s(e,t,n)}function o(e,t){return e&&e[l]&&e[l][t]}function a(e,t,n){return n.configurable=!0,n.configurable||(e[l]||s(e,l,{writable:!0,value:{}}),e[l][t]=!0),n}var i=t(3),s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,u=Object.create,l=i.zoneSymbol(\"unconfigurables\");exports.propertyPatch=n,exports._redefineProperty=r},function(e,exports,t){\"use strict\";function n(e){if(o.isBrowser&&\"registerElement\"in e.document){var t=document.registerElement,n=[\"createdCallback\",\"attachedCallback\",\"detachedCallback\",\"attributeChangedCallback\"];document.registerElement=function(e,o){return o&&o.prototype&&n.forEach(function(e){var t=\"Document.registerElement::\"+e;if(o.prototype.hasOwnProperty(e)){var n=Object.getOwnPropertyDescriptor(o.prototype,e);n&&n.value?(n.value=Zone.current.wrap(n.value,t),r._redefineProperty(o.prototype,e,n)):o.prototype[e]=Zone.current.wrap(o.prototype[e],t)}else o.prototype[e]&&(o.prototype[e]=Zone.current.wrap(o.prototype[e],t))}),t.apply(document,[e,o])}}}var r=t(4),o=t(3);exports.registerElementPatch=n},function(e,exports,t){\"use strict\";function n(e){if(!i.isNode){var t=\"undefined\"!=typeof WebSocket;r()?(i.isBrowser&&i.patchOnProperties(HTMLElement.prototype,s),i.patchOnProperties(XMLHttpRequest.prototype,null),\"undefined\"!=typeof IDBIndex&&(i.patchOnProperties(IDBIndex.prototype,null),i.patchOnProperties(IDBRequest.prototype,null),i.patchOnProperties(IDBOpenDBRequest.prototype,null),i.patchOnProperties(IDBDatabase.prototype,null),i.patchOnProperties(IDBTransaction.prototype,null),i.patchOnProperties(IDBCursor.prototype,null)),t&&i.patchOnProperties(WebSocket.prototype,null)):(o(),i.patchClass(\"XMLHttpRequest\"),t&&a.apply(e))}}function r(){if(i.isBrowser&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,\"onclick\")&&\"undefined\"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,\"onclick\");if(e&&!e.configurable)return!1}Object.defineProperty(XMLHttpRequest.prototype,\"onreadystatechange\",{get:function(){return!0}});var t=new XMLHttpRequest,n=!!t.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,\"onreadystatechange\",{}),n}function o(){for(var e=function(e){var t=s[e],n=\"on\"+t;document.addEventListener(t,function(e){var t,r,o=e.target;for(r=o?o.constructor.name+\".\"+n:\"unknown.\"+n;o;)o[n]&&!o[n][c]&&(t=Zone.current.wrap(o[n],r),t[c]=o[n],o[n]=t),o=o.parentElement},!0)},t=0;t<s.length;t++)e(t)}var a=t(7),i=t(3),s=\"copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror\".split(\" \");exports.propertyDescriptorPatch=n;var c=i.zoneSymbol(\"unbound\")},function(e,exports,t){\"use strict\";function n(e){var t=e.WebSocket;e.EventTarget||r.patchEventTargetMethods(t.prototype),e.WebSocket=function(e,n){var o,a=arguments.length>1?new t(e,n):new t(e),i=Object.getOwnPropertyDescriptor(a,\"onmessage\");return i&&i.configurable===!1?(o=Object.create(a),[\"addEventListener\",\"removeEventListener\",\"send\",\"close\"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r.patchOnProperties(o,[\"close\",\"error\",\"message\",\"open\"]),o};for(var n in t)e.WebSocket[n]=t[n]}var r=t(3);exports.apply=n},function(e,exports,t){\"use strict\";function n(e,t,n,o){function a(t){var n=t.data;return n.args[0]=t.invoke,n.handleId=s.apply(e,n.args),t}function i(e){return c(e.data.handleId)}var s=null,c=null;t+=o,n+=o,s=r.patchMethod(e,t,function(n){return function(r,s){if(\"function\"==typeof s[0]){var c=Zone.current,u={handleId:null,isPeriodic:\"Interval\"===o,delay:\"Timeout\"===o||\"Interval\"===o?s[1]||0:null,args:s};return c.scheduleMacroTask(t,s[0],u,a,i)}return n.apply(e,s)}}),c=r.patchMethod(e,n,function(t){return function(n,r){var o=r[0];o&&\"string\"==typeof o.type?(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&o.zone.cancelTask(o):t.apply(e,r)}})}var r=t(3);exports.patchTimer=n}]);","/*! *****************************************************************************\r\nCopyright (C) Microsoft. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use \r\nthis file except in compliance with the License. You may obtain a copy of the \r\nLicense at http://www.apache.org/licenses/LICENSE-2.0 \r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, \r\nMERCHANTABLITY OR NON-INFRINGEMENT. \r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\nnamespace Reflect {\r\n \"use strict\";\r\n\r\n interface Map<K, V> {\r\n clear(): void;\r\n delete(key:K): boolean;\r\n forEach(callbackfn:(value:V, index:K, map:Map<K, V>) => void, thisArg?:any): void;\r\n get(key:K): V;\r\n has(key:K): boolean;\r\n set(key:K, value?:V): Map<K, V>;\r\n size: number;\r\n }\r\n interface MapConstructor {\r\n new (): Map<any, any>;\r\n new <K, V>(): Map<K, V>;\r\n prototype: Map<any, any>;\r\n }\r\n\r\n interface WeakMap<K, V> {\r\n clear(): void;\r\n delete(key: K): boolean;\r\n get(key: K): V;\r\n has(key: K): boolean;\r\n set(key: K, value?: V): WeakMap<K, V>;\r\n }\r\n\r\n interface WeakMapConstructor {\r\n new (): WeakMap<any, any>;\r\n new <K, V>(): WeakMap<K, V>;\r\n prototype: WeakMap<any, any>;\r\n }\r\n\r\n interface Set<T> {\r\n add(value: T): Set<T>;\r\n clear(): void;\r\n delete(value: T): boolean;\r\n forEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void;\r\n has(value: T): boolean;\r\n size: number;\r\n }\r\n\r\n interface SetConstructor {\r\n new (): Set<any>;\r\n new <T>(): Set<T>;\r\n prototype: Set<any>;\r\n }\r\n\r\n\r\n declare var Set: SetConstructor;\r\n declare var WeakMap: WeakMapConstructor;\r\n declare var Map:MapConstructor;\r\n declare var global: any;\r\n declare var WorkerGlobalScope: any;\r\n declare var module: any;\r\n declare var crypto: Crypto;\r\n declare var msCrypto: Crypto;\r\n declare var require: Function;\r\n\r\n // Load global or shim versions of Map, Set, and WeakMap\r\n const functionPrototype = Object.getPrototypeOf(Function);\r\n const _Map: typeof Map = typeof Map === \"function\" ? Map : CreateMapPolyfill();\r\n const _Set: typeof Set = typeof Set === \"function\" ? Set : CreateSetPolyfill();\r\n const _WeakMap: typeof WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\r\n \r\n // [[Metadata]] internal slot\r\n const __Metadata__ = new _WeakMap<Object, Map<string | symbol, Map<any, any>>>();\r\n\r\n /**\r\n * Applies a set of decorators to a target object.\r\n * @param decorators An array of decorators.\r\n * @param target The target object.\r\n * @returns The result of applying the provided decorators.\r\n * @remarks Decorators are applied in reverse order of their positions in the array.\r\n * @example\r\n *\r\n * class C { }\r\n *\r\n * // constructor\r\n * C = Reflect.decorate(decoratorsArray, C);\r\n *\r\n */\r\n export function decorate(decorators: ClassDecorator[], target: Function): Function;\r\n\r\n /**\r\n * Applies a set of decorators to a property of a target object.\r\n * @param decorators An array of decorators.\r\n * @param target The target object.\r\n * @param targetKey The property key to decorate.\r\n * @param descriptor A property descriptor \r\n * @remarks Decorators are applied in reverse order.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n * \r\n * static staticMethod() { }\r\n * method() { }\r\n * }\r\n *\r\n * // property (on constructor)\r\n * Reflect.decorate(decoratorsArray, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.decorate(decoratorsArray, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Object.defineProperty(C, \"staticMethod\", \r\n * Reflect.decorate(decoratorsArray, C, \"staticMethod\", \r\n * Object.getOwnPropertyDescriptor(C, \"staticMethod\")));\r\n *\r\n * // method (on prototype)\r\n * Object.defineProperty(C.prototype, \"method\", \r\n * Reflect.decorate(decoratorsArray, C.prototype, \"method\", \r\n * Object.getOwnPropertyDescriptor(C.prototype, \"method\")));\r\n *\r\n */\r\n export function decorate(decorators: (PropertyDecorator | MethodDecorator)[], target: Object, targetKey: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor;\r\n\r\n /**\r\n * Applies a set of decorators to a property of a target object.\r\n * @param decorators An array of decorators.\r\n * @param target The target object.\r\n * @param targetKey (Optional) The property key to decorate.\r\n * @param targetDescriptor (Optional) The property descriptor for the target key\r\n * @remarks Decorators are applied in reverse order.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * C = Reflect.decorate(decoratorsArray, C);\r\n *\r\n * // property (on constructor)\r\n * Reflect.decorate(decoratorsArray, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.decorate(decoratorsArray, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Object.defineProperty(C, \"staticMethod\", \r\n * Reflect.decorate(decoratorsArray, C, \"staticMethod\", \r\n * Object.getOwnPropertyDescriptor(C, \"staticMethod\")));\r\n *\r\n * // method (on prototype)\r\n * Object.defineProperty(C.prototype, \"method\", \r\n * Reflect.decorate(decoratorsArray, C.prototype, \"method\", \r\n * Object.getOwnPropertyDescriptor(C.prototype, \"method\")));\r\n *\r\n */\r\n export function decorate(decorators: (ClassDecorator | MethodDecorator | PropertyDecorator)[], target: Object, targetKey?: string | symbol, targetDescriptor?: PropertyDescriptor): any {\r\n if (!IsUndefined(targetDescriptor)) {\r\n if (!IsArray(decorators)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (IsUndefined(targetKey)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsObject(targetDescriptor)) {\r\n throw new TypeError();\r\n }\r\n\r\n targetKey = ToPropertyKey(targetKey);\r\n return DecoratePropertyWithDescriptor(<MethodDecorator[]>decorators, target, targetKey, targetDescriptor);\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n if (!IsArray(decorators)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n targetKey = ToPropertyKey(targetKey);\r\n return DecoratePropertyWithoutDescriptor(<PropertyDecorator[]>decorators, target, targetKey);\r\n }\r\n else {\r\n if (!IsArray(decorators)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsConstructor(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n return DecorateConstructor(<ClassDecorator[]>decorators, <Function>target);\r\n }\r\n }\r\n\r\n /**\r\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\r\n * @param metadataKey The key for the metadata entry.\r\n * @param metadataValue The value for the metadata entry.\r\n * @returns A decorator function.\r\n * @remarks \r\n * If `metadataKey` is already defined for the target and target key, the \r\n * metadataValue for that key will be overwritten.\r\n * @example\r\n *\r\n * // constructor\r\n * @Reflect.metadata(key, value)\r\n * class C {\r\n * }\r\n *\r\n * // property (on constructor, TypeScript only)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * static staticProperty;\r\n * }\r\n *\r\n * // property (on prototype, TypeScript only)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * property;\r\n * }\r\n *\r\n * // method (on constructor)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * static staticMethod() { }\r\n * }\r\n *\r\n * // method (on prototype)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * method() { }\r\n * }\r\n *\r\n */\r\n export function metadata(metadataKey: any, metadataValue: any) {\r\n function decorator(target: Function): void;\r\n function decorator(target: Object, targetKey: string | symbol): void;\r\n function decorator(target: Object, targetKey?: string | symbol): void {\r\n if (!IsUndefined(targetKey)) {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n targetKey = ToPropertyKey(targetKey);\r\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, targetKey);\r\n }\r\n else {\r\n if (!IsConstructor(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, /*targetKey*/ undefined);\r\n }\r\n }\r\n\r\n return decorator;\r\n }\r\n \r\n /**\r\n * Define a unique metadata entry on the target.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param metadataValue A value that contains attached metadata.\r\n * @param target The target object on which to define metadata.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C);\r\n *\r\n * // decorator factory as metadata-producing annotation.\r\n * function MyAnnotation(options): ClassDecorator {\r\n * return target => Reflect.defineMetadata(\"custom:annotation\", options, target);\r\n * }\r\n *\r\n */\r\n export function defineMetadata(metadataKey: any, metadataValue: any, target: Object): void;\r\n\r\n /**\r\n * Define a unique metadata entry on the target.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param metadataValue A value that contains attached metadata.\r\n * @param target The target object on which to define metadata.\r\n * @param targetKey The property key for the target.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C.prototype, \"method\");\r\n *\r\n * // decorator factory as metadata-producing annotation.\r\n * function MyAnnotation(options): PropertyDecorator {\r\n * return (target, key) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\r\n * }\r\n *\r\n */\r\n export function defineMetadata(metadataKey: any, metadataValue: any, target: Object, targetKey: string | symbol): void;\r\n\r\n /**\r\n * Define a unique metadata entry on the target.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param metadataValue A value that contains attached metadata.\r\n * @param target The target object on which to define metadata.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C);\r\n *\r\n * // property (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C.prototype, \"method\");\r\n *\r\n * // decorator factory as metadata-producing annotation.\r\n * function MyAnnotation(options): Decorator {\r\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\r\n * }\r\n *\r\n */\r\n export function defineMetadata(metadataKey: any, metadataValue: any, target: Object, targetKey?: string | symbol): void {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, targetKey);\r\n }\r\n \r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function hasMetadata(metadataKey: any, target: Object): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasMetadata(metadataKey: any, target: Object, targetKey: string | symbol): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): boolean {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryHasMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function hasOwnMetadata(metadataKey: any, target: Object): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasOwnMetadata(metadataKey: any, target: Object, targetKey: string | symbol): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasOwnMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): boolean {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryHasOwnMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function getMetadata(metadataKey: any, target: Object): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadata(metadataKey: any, target: Object, targetKey: string | symbol): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): any {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryGetMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function getOwnMetadata(metadataKey: any, target: Object): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadata(metadataKey: any, target: Object, targetKey: string | symbol): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): any {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryGetOwnMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadataKeys(C);\r\n *\r\n */\r\n export function getMetadataKeys(target: Object): any[];\r\n\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadataKeys(target: Object, targetKey: string | symbol): any[];\r\n\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadataKeys(C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadataKeys(target: Object, targetKey?: string | symbol): any[] {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryMetadataKeys(target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadataKeys(C);\r\n *\r\n */\r\n export function getOwnMetadataKeys(target: Object): any[];\r\n\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadataKeys(target: Object, targetKey: string | symbol): any[];\r\n\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadataKeys(C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadataKeys(target: Object, targetKey?: string | symbol): any[] {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryOwnMetadataKeys(target, targetKey);\r\n }\r\n\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function deleteMetadata(metadataKey: any, target: Object): boolean;\r\n\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function deleteMetadata(metadataKey: any, target: Object, targetKey: string | symbol): boolean;\r\n\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function deleteMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): boolean {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#deletemetadata-metadatakey-p-\r\n let metadataMap = GetOrCreateMetadataMap(target, targetKey, /*create*/ false);\r\n if (IsUndefined(metadataMap)) {\r\n return false;\r\n }\r\n\r\n if (!metadataMap.delete(metadataKey)) {\r\n return false;\r\n }\r\n\r\n if (metadataMap.size > 0) {\r\n return true;\r\n }\r\n\r\n let targetMetadata = __Metadata__.get(target);\r\n targetMetadata.delete(targetKey);\r\n if (targetMetadata.size > 0) {\r\n return true;\r\n }\r\n\r\n __Metadata__.delete(target);\r\n return true;\r\n }\r\n\r\n function DecorateConstructor(decorators: ClassDecorator[], target: Function): Function {\r\n for (let i = decorators.length - 1; i >= 0; --i) {\r\n let decorator = decorators[i];\r\n let decorated = decorator(target);\r\n if (!IsUndefined(decorated)) {\r\n if (!IsConstructor(decorated)) {\r\n throw new TypeError();\r\n }\r\n target = <Function>decorated;\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n function DecoratePropertyWithDescriptor(decorators: MethodDecorator[], target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor {\r\n for (let i = decorators.length - 1; i >= 0; --i) {\r\n let decorator = decorators[i];\r\n let decorated = decorator(target, propertyKey, descriptor);\r\n if (!IsUndefined(decorated)) {\r\n if (!IsObject(decorated)) {\r\n throw new TypeError();\r\n }\r\n descriptor = <PropertyDescriptor>decorated;\r\n }\r\n }\r\n return descriptor;\r\n }\r\n\r\n function DecoratePropertyWithoutDescriptor(decorators: PropertyDecorator[], target: Object, propertyKey: string | symbol): void {\r\n for (let i = decorators.length - 1; i >= 0; --i) {\r\n let decorator = decorators[i];\r\n decorator(target, propertyKey);\r\n }\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#getorcreatemetadatamap--o-p-create-\r\n function GetOrCreateMetadataMap(target: Object, targetKey: string | symbol, create: boolean): Map<any, any> {\r\n let targetMetadata = __Metadata__.get(target);\r\n if (!targetMetadata) {\r\n if (!create) {\r\n return undefined;\r\n }\r\n targetMetadata = new _Map<string | symbol, Map<any, any>>();\r\n __Metadata__.set(target, targetMetadata);\r\n }\r\n\r\n let keyMetadata = targetMetadata.get(targetKey);\r\n if (!keyMetadata) {\r\n if (!create) {\r\n return undefined;\r\n }\r\n keyMetadata = new _Map<any, any>();\r\n targetMetadata.set(targetKey, keyMetadata);\r\n }\r\n\r\n return keyMetadata;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryhasmetadata--metadatakey-o-p-\r\n function OrdinaryHasMetadata(MetadataKey: any, O: Object, P: string | symbol): boolean {\r\n let hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\r\n if (hasOwn) {\r\n return true;\r\n }\r\n\r\n let parent = GetPrototypeOf(O);\r\n if (parent !== null) {\r\n return OrdinaryHasMetadata(MetadataKey, parent, P);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryhasownmetadata--metadatakey-o-p-\r\n function OrdinaryHasOwnMetadata(MetadataKey: any, O: Object, P: string | symbol): boolean {\r\n let metadataMap = GetOrCreateMetadataMap(O, P, /*create*/ false);\r\n if (metadataMap === undefined) {\r\n return false;\r\n }\r\n\r\n return Boolean(metadataMap.has(MetadataKey));\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarygetmetadata--metadatakey-o-p-\r\n function OrdinaryGetMetadata(MetadataKey: any, O: Object, P: string | symbol): any {\r\n let hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\r\n if (hasOwn) {\r\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\r\n }\r\n\r\n let parent = GetPrototypeOf(O);\r\n if (parent !== null) {\r\n return OrdinaryGetMetadata(MetadataKey, parent, P);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarygetownmetadata--metadatakey-o-p-\r\n function OrdinaryGetOwnMetadata(MetadataKey: any, O: Object, P: string | symbol): any {\r\n let metadataMap = GetOrCreateMetadataMap(O, P, /*create*/ false);\r\n if (metadataMap === undefined) {\r\n return undefined;\r\n }\r\n\r\n return metadataMap.get(MetadataKey);\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarydefineownmetadata--metadatakey-metadatavalue-o-p-\r\n function OrdinaryDefineOwnMetadata(MetadataKey: any, MetadataValue: any, O: Object, P: string | symbol): void {\r\n let metadataMap = GetOrCreateMetadataMap(O, P, /*create*/ true);\r\n metadataMap.set(MetadataKey, MetadataValue);\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarymetadatakeys--o-p-\r\n function OrdinaryMetadataKeys(O: Object, P: string | symbol): any[] {\r\n let ownKeys = OrdinaryOwnMetadataKeys(O, P);\r\n let parent = GetPrototypeOf(O);\r\n if (parent === null) {\r\n return ownKeys;\r\n }\r\n\r\n let parentKeys = OrdinaryMetadataKeys(parent, P);\r\n if (parentKeys.length <= 0) {\r\n return ownKeys;\r\n }\r\n if (ownKeys.length <= 0) {\r\n return parentKeys;\r\n }\r\n\r\n let set = new _Set<any>();\r\n let keys: any[] = [];\r\n\r\n for (let key of ownKeys) {\r\n let hasKey = set.has(key);\r\n if (!hasKey) {\r\n set.add(key);\r\n keys.push(key);\r\n }\r\n }\r\n\r\n for (let key of parentKeys) {\r\n let hasKey = set.has(key);\r\n if (!hasKey) {\r\n set.add(key);\r\n keys.push(key);\r\n }\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryownmetadatakeys--o-p-\r\n function OrdinaryOwnMetadataKeys(target: Object, targetKey: string | symbol): any[] {\r\n let metadataMap = GetOrCreateMetadataMap(target, targetKey, /*create*/ false);\r\n let keys: any[] = [];\r\n if (metadataMap) {\r\n metadataMap.forEach((_, key) => keys.push(key));\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-language-types-undefined-type\r\n function IsUndefined(x: any): boolean {\r\n return x === undefined;\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isarray\r\n function IsArray(x: any): boolean {\r\n return Array.isArray(x);\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object-type\r\n function IsObject(x: any): boolean {\r\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isconstructor\r\n function IsConstructor(x: any): boolean {\r\n return typeof x === \"function\";\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-language-types-symbol-type\r\n function IsSymbol(x: any): boolean {\r\n return typeof x === \"symbol\";\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertykey\r\n function ToPropertyKey(value: any): string | symbol {\r\n if (IsSymbol(value)) {\r\n return <symbol>value;\r\n }\r\n return String(value);\r\n }\r\n\r\n function GetPrototypeOf(O: any): Object {\r\n let proto = Object.getPrototypeOf(O);\r\n if (typeof O !== \"function\" || O === functionPrototype) {\r\n return proto;\r\n }\r\n\r\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard. \r\n // Try to determine the superclass constructor. Compatible implementations\r\n // must either set __proto__ on a subclass constructor to the superclass constructor,\r\n // or ensure each class has a valid `constructor` property on its prototype that\r\n // points back to the constructor.\r\n\r\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\r\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\r\n if (proto !== functionPrototype) {\r\n return proto;\r\n }\r\n\r\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\r\n let prototype = O.prototype;\r\n let prototypeProto = Object.getPrototypeOf(prototype);\r\n if (prototypeProto == null || prototypeProto === Object.prototype) {\r\n return proto;\r\n }\r\n\r\n // if the constructor was not a function, then we cannot determine the heritage.\r\n let constructor = prototypeProto.constructor;\r\n if (typeof constructor !== \"function\") {\r\n return proto;\r\n }\r\n\r\n // if we have some kind of self-reference, then we cannot determine the heritage.\r\n if (constructor === O) {\r\n return proto;\r\n }\r\n\r\n // we have a pretty good guess at the heritage.\r\n return constructor;\r\n }\r\n\r\n // naive Map shim\r\n function CreateMapPolyfill() {\r\n const cacheSentinel = {};\r\n function Map() {\r\n this._keys = [];\r\n this._values = [];\r\n this._cache = cacheSentinel;\r\n }\r\n Map.prototype = {\r\n get size() {\r\n return this._keys.length;\r\n },\r\n has(key: any): boolean {\r\n if (key === this._cache) {\r\n return true;\r\n }\r\n if (this._find(key) >= 0) {\r\n this._cache = key;\r\n return true;\r\n }\r\n return false;\r\n },\r\n get(key: any): any {\r\n let index = this._find(key);\r\n if (index >= 0) {\r\n this._cache = key;\r\n return this._values[index];\r\n }\r\n return undefined;\r\n },\r\n set(key: any, value: any): Map<any, any> {\r\n this.delete(key);\r\n this._keys.push(key);\r\n this._values.push(value);\r\n this._cache = key;\r\n return this;\r\n },\r\n delete(key: any): boolean {\r\n let index = this._find(key);\r\n if (index >= 0) {\r\n this._keys.splice(index, 1);\r\n this._values.splice(index, 1);\r\n this._cache = cacheSentinel;\r\n return true;\r\n }\r\n return false;\r\n },\r\n clear(): void {\r\n this._keys.length = 0;\r\n this._values.length = 0;\r\n this._cache = cacheSentinel;\r\n },\r\n forEach(callback: (value: any, key: any, map: Map<any, any>) => void, thisArg?: any): void {\r\n let size = this.size;\r\n for (let i = 0; i < size; ++i) {\r\n let key = this._keys[i];\r\n let value = this._values[i];\r\n this._cache = key;\r\n callback.call(this, value, key, this);\r\n }\r\n },\r\n _find(key: any): number {\r\n const keys = this._keys;\r\n const size = keys.length;\r\n for (let i = 0; i < size; ++i) {\r\n if (keys[i] === key) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n };\r\n return <any>Map;\r\n }\r\n\r\n // naive Set shim\r\n function CreateSetPolyfill() {\r\n const cacheSentinel = {};\r\n function Set() {\r\n this._map = new _Map<any, any>();\r\n }\r\n Set.prototype = {\r\n get size() {\r\n return this._map.length;\r\n },\r\n has(value: any): boolean {\r\n return this._map.has(value);\r\n },\r\n add(value: any): Set<any> {\r\n this._map.set(value, value);\r\n return this;\r\n },\r\n delete(value: any): boolean {\r\n return this._map.delete(value);\r\n },\r\n clear(): void {\r\n this._map.clear();\r\n },\r\n forEach(callback: (value: any, key: any, set: Set<any>) => void, thisArg?: any): void {\r\n this._map.forEach(callback, thisArg);\r\n }\r\n };\r\n return <any>Set;\r\n }\r\n\r\n // naive WeakMap shim\r\n function CreateWeakMapPolyfill() {\r\n const UUID_SIZE = 16;\r\n const isNode = typeof global !== \"undefined\" && Object.prototype.toString.call(global.process) === '[object process]';\r\n const nodeCrypto = isNode && require(\"crypto\");\r\n const hasOwn = Object.prototype.hasOwnProperty;\r\n const keys: { [key: string]: boolean; } = {};\r\n const rootKey = CreateUniqueKey();\r\n\r\n function WeakMap() {\r\n this._key = CreateUniqueKey();\r\n }\r\n WeakMap.prototype = {\r\n has(target: Object): boolean {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n if (table) {\r\n return this._key in table;\r\n }\r\n return false;\r\n },\r\n get(target: Object): any {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n if (table) {\r\n return table[this._key];\r\n }\r\n return undefined;\r\n },\r\n set(target: Object, value: any): WeakMap<any, any> {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ true);\r\n table[this._key] = value;\r\n return this;\r\n },\r\n delete(target: Object): boolean {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n if (table && this._key in table) {\r\n return delete table[this._key];\r\n }\r\n return false;\r\n },\r\n clear(): void {\r\n // NOTE: not a real clear, just makes the previous data unreachable\r\n this._key = CreateUniqueKey();\r\n }\r\n }\r\n\r\n function FillRandomBytes(buffer: BufferLike, size: number): void {\r\n for (var i = 0; i < size; ++i) {\r\n buffer[i] = Math.random() * 255 | 0;\r\n }\r\n }\r\n\r\n function GenRandomBytes(size: number): BufferLike {\r\n if (nodeCrypto) {\r\n let data = nodeCrypto.randomBytes(size);\r\n return data;\r\n }\r\n else if (typeof Uint8Array === \"function\") {\r\n let data = new Uint8Array(size);\r\n if (typeof crypto !== \"undefined\") {\r\n crypto.getRandomValues(<Uint8Array>data);\r\n }\r\n else if (typeof msCrypto !== \"undefined\") {\r\n msCrypto.getRandomValues(<Uint8Array>data);\r\n }\r\n else {\r\n FillRandomBytes(data, size);\r\n }\r\n return data;\r\n }\r\n else {\r\n let data = new Array(size);\r\n FillRandomBytes(data, size);\r\n return data;\r\n }\r\n }\r\n\r\n function CreateUUID() {\r\n let data = GenRandomBytes(UUID_SIZE);\r\n\r\n // mark as random - RFC 4122 § 4.4\r\n data[6] = data[6] & 0x4f | 0x40;\r\n data[8] = data[8] & 0xbf | 0x80;\r\n\r\n let result = \"\";\r\n for (let offset = 0; offset < UUID_SIZE; ++offset) {\r\n let byte = data[offset];\r\n if (offset === 4 || offset === 6 || offset === 8) {\r\n result += \"-\";\r\n }\r\n if (byte < 16) {\r\n result += \"0\";\r\n }\r\n result += byte.toString(16).toLowerCase();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function CreateUniqueKey(): string {\r\n let key: string;\r\n do {\r\n key = \"@@WeakMap@@\" + CreateUUID();\r\n }\r\n while (hasOwn.call(keys, key));\r\n keys[key] = true;\r\n return key;\r\n }\r\n\r\n function GetOrCreateWeakMapTable(target: Object, create: boolean): { [key: string]: any; } {\r\n if (!hasOwn.call(target, rootKey)) {\r\n if (!create) {\r\n return undefined;\r\n }\r\n Object.defineProperty(target, rootKey, { value: Object.create(null) });\r\n }\r\n return (<any>target)[rootKey];\r\n }\r\n\r\n return <any>WeakMap;\r\n }\r\n\r\n interface BufferLike {\r\n [offset: number]: number;\r\n length: number;\r\n }\r\n\r\n\r\n // hook global Reflect\r\n (function(__global: any) {\r\n if (typeof __global.Reflect !== \"undefined\") {\r\n if (__global.Reflect !== Reflect) {\r\n for (var p in Reflect) {\r\n __global.Reflect[p] = (<any>Reflect)[p];\r\n }\r\n }\r\n }\r\n else {\r\n __global.Reflect = Reflect;\r\n }\r\n })(\r\n typeof window !== \"undefined\" ? window :\r\n typeof WorkerGlobalScope !== \"undefined\" ? self :\r\n typeof global !== \"undefined\" ? global :\r\n Function(\"return this;\")());\r\n}","!function e(t,n,r){function s(i,u){if(!n[i]){if(!t[i]){var c=\"function\"==typeof require&&require;if(!u&&c)return c(i,!0);if(o)return o(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var f=n[i]={exports:{}};t[i][0].call(f.exports,function(n){var e=t[i][1][n];return s(e?e:n)},f,f.exports,e,t,n,r)}return n[i].exports}for(var o=\"function\"==typeof require&&require,i=0;i<r.length;i++)s(r[i]);return s}({1:[function(t,n,e){(function(n){\"use strict\";if(t(189),t(2),n._babelPolyfill)throw new Error(\"only one instance of babel-polyfill is allowed\");n._babelPolyfill=!0}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{189:189,2:2}],2:[function(t,n,e){n.exports=t(190)},{190:190}],3:[function(t,n,e){n.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},{}],4:[function(t,n,e){var r=t(84)(\"unscopables\"),o=Array.prototype;void 0==o[r]&&t(32)(o,r,{}),n.exports=function(t){o[r][t]=!0}},{32:32,84:84}],5:[function(t,n,e){var r=t(39);n.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},{39:39}],6:[function(t,n,e){\"use strict\";var r=t(81),o=t(77),i=t(80);n.exports=[].copyWithin||function copyWithin(t,n){var e=r(this),u=i(e.length),c=o(t,u),a=o(n,u),s=arguments,f=s.length>2?s[2]:void 0,l=Math.min((void 0===f?u:o(f,u))-a,u-c),h=1;for(c>a&&a+l>c&&(h=-1,a+=l-1,c+=l-1);l-- >0;)a in e?e[c]=e[a]:delete e[c],c+=h,a+=h;return e}},{77:77,80:80,81:81}],7:[function(t,n,e){\"use strict\";var r=t(81),o=t(77),i=t(80);n.exports=[].fill||function fill(t){for(var n=r(this),e=i(n.length),u=arguments,c=u.length,a=o(c>1?u[1]:void 0,e),s=c>2?u[2]:void 0,f=void 0===s?e:o(s,e);f>a;)n[a++]=t;return n}},{77:77,80:80,81:81}],8:[function(t,n,e){var r=t(79),o=t(80),i=t(77);n.exports=function(t){return function(n,e,u){var c,a=r(n),s=o(a.length),f=i(u,s);if(t&&e!=e){for(;s>f;)if(c=a[f++],c!=c)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===e)return t||f;return!t&&-1}}},{77:77,79:79,80:80}],9:[function(t,n,e){var r=t(18),o=t(35),i=t(81),u=t(80),c=t(10);n.exports=function(t){var n=1==t,e=2==t,a=3==t,s=4==t,f=6==t,l=5==t||f;return function(h,p,v){for(var g,y,d=i(h),m=o(d),x=r(p,v,3),S=u(m.length),w=0,b=n?c(h,S):e?c(h,0):void 0;S>w;w++)if((l||w in m)&&(g=m[w],y=x(g,w,d),t))if(n)b[w]=y;else if(y)switch(t){case 3:return!0;case 5:return g;case 6:return w;case 2:b.push(g)}else if(s)return!1;return f?-1:a||s?s:b}}},{10:10,18:18,35:35,80:80,81:81}],10:[function(t,n,e){var r=t(39),o=t(37),i=t(84)(\"species\");n.exports=function(t,n){var e;return o(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&(e=e[i],null===e&&(e=void 0))),new(void 0===e?Array:e)(n)}},{37:37,39:39,84:84}],11:[function(t,n,e){var r=t(12),o=t(84)(\"toStringTag\"),i=\"Arguments\"==r(function(){return arguments}());n.exports=function(t){var n,e,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(e=(n=Object(t))[o])?e:i?r(n):\"Object\"==(u=r(n))&&\"function\"==typeof n.callee?\"Arguments\":u}},{12:12,84:84}],12:[function(t,n,e){var r={}.toString;n.exports=function(t){return r.call(t).slice(8,-1)}},{}],13:[function(t,n,e){\"use strict\";var r=t(47),o=t(32),i=t(61),u=t(18),c=t(70),a=t(19),s=t(28),f=t(43),l=t(45),h=t(83)(\"id\"),p=t(31),v=t(39),g=t(66),y=t(20),d=Object.isExtensible||v,m=y?\"_s\":\"size\",x=0,S=function(t,n){if(!v(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!p(t,h)){if(!d(t))return\"F\";if(!n)return\"E\";o(t,h,++x)}return\"O\"+t[h]},w=function(t,n){var e,r=S(n);if(\"F\"!==r)return t._i[r];for(e=t._f;e;e=e.n)if(e.k==n)return e};n.exports={getConstructor:function(t,n,e,o){var f=t(function(t,i){c(t,f,n),t._i=r.create(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=i&&s(i,e,t[o],t)});return i(f.prototype,{clear:function clear(){for(var t=this,n=t._i,e=t._f;e;e=e.n)e.r=!0,e.p&&(e.p=e.p.n=void 0),delete n[e.i];t._f=t._l=void 0,t[m]=0},\"delete\":function(t){var n=this,e=w(n,t);if(e){var r=e.n,o=e.p;delete n._i[e.i],e.r=!0,o&&(o.n=r),r&&(r.p=o),n._f==e&&(n._f=r),n._l==e&&(n._l=o),n[m]--}return!!e},forEach:function forEach(t){for(var n,e=u(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(e(n.v,n.k,this);n&&n.r;)n=n.p},has:function has(t){return!!w(this,t)}}),y&&r.setDesc(f.prototype,\"size\",{get:function(){return a(this[m])}}),f},def:function(t,n,e){var r,o,i=w(t,n);return i?i.v=e:(t._l=i={i:o=S(n,!0),k:n,v:e,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[m]++,\"F\"!==o&&(t._i[o]=i)),t},getEntry:w,setStrong:function(t,n,e){f(t,n,function(t,n){this._t=t,this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,e=t._l;e&&e.r;)e=e.p;return t._t&&(t._l=e=e?e.n:t._t._f)?\"keys\"==n?l(0,e.k):\"values\"==n?l(0,e.v):l(0,[e.k,e.v]):(t._t=void 0,l(1))},e?\"entries\":\"values\",!e,!0),g(n)}}},{18:18,19:19,20:20,28:28,31:31,32:32,39:39,43:43,45:45,47:47,61:61,66:66,70:70,83:83}],14:[function(t,n,e){var r=t(28),o=t(11);n.exports=function(t){return function toJSON(){if(o(this)!=t)throw TypeError(t+\"#toJSON isn't generic\");var n=[];return r(this,!1,n.push,n),n}}},{11:11,28:28}],15:[function(t,n,e){\"use strict\";var r=t(32),o=t(61),i=t(5),u=t(39),c=t(70),a=t(28),s=t(9),f=t(31),l=t(83)(\"weak\"),h=Object.isExtensible||u,p=s(5),v=s(6),g=0,y=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},m=function(t,n){return p(t.a,function(t){return t[0]===n})};d.prototype={get:function(t){var n=m(this,t);return n?n[1]:void 0},has:function(t){return!!m(this,t)},set:function(t,n){var e=m(this,t);e?e[1]=n:this.a.push([t,n])},\"delete\":function(t){var n=v(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},n.exports={getConstructor:function(t,n,e,r){var i=t(function(t,o){c(t,i,n),t._i=g++,t._l=void 0,void 0!=o&&a(o,e,t[r],t)});return o(i.prototype,{\"delete\":function(t){return u(t)?h(t)?f(t,l)&&f(t[l],this._i)&&delete t[l][this._i]:y(this)[\"delete\"](t):!1},has:function has(t){return u(t)?h(t)?f(t,l)&&f(t[l],this._i):y(this).has(t):!1}}),i},def:function(t,n,e){return h(i(n))?(f(n,l)||r(n,l,{}),n[l][t._i]=e):y(t).set(n,e),t},frozenStore:y,WEAK:l}},{28:28,31:31,32:32,39:39,5:5,61:61,70:70,83:83,9:9}],16:[function(t,n,e){\"use strict\";var r=t(30),o=t(23),i=t(62),u=t(61),c=t(28),a=t(70),s=t(39),f=t(25),l=t(44),h=t(67);n.exports=function(t,n,e,p,v,g){var y=r[t],d=y,m=v?\"set\":\"add\",x=d&&d.prototype,S={},w=function(t){var n=x[t];i(x,t,\"delete\"==t?function(t){return g&&!s(t)?!1:n.call(this,0===t?0:t)}:\"has\"==t?function has(t){return g&&!s(t)?!1:n.call(this,0===t?0:t)}:\"get\"==t?function get(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:\"add\"==t?function add(t){return n.call(this,0===t?0:t),this}:function set(t,e){return n.call(this,0===t?0:t,e),this})};if(\"function\"==typeof d&&(g||x.forEach&&!f(function(){(new d).entries().next()}))){var b,E=new d,O=E[m](g?{}:-0,1)!=E,P=f(function(){E.has(1)}),_=l(function(t){new d(t)});_||(d=n(function(n,e){a(n,d,t);var r=new y;return void 0!=e&&c(e,v,r[m],r),r}),d.prototype=x,x.constructor=d),g||E.forEach(function(t,n){b=1/n===-(1/0)}),(P||b)&&(w(\"delete\"),w(\"has\"),v&&w(\"get\")),(b||O)&&w(m),g&&x.clear&&delete x.clear}else d=p.getConstructor(n,t,v,m),u(d.prototype,e);return h(d,t),S[t]=d,o(o.G+o.W+o.F*(d!=y),S),g||p.setStrong(d,t,v),d}},{23:23,25:25,28:28,30:30,39:39,44:44,61:61,62:62,67:67,70:70}],17:[function(t,n,e){var r=n.exports={version:\"1.2.6\"};\"number\"==typeof __e&&(__e=r)},{}],18:[function(t,n,e){var r=t(3);n.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,o){return t.call(n,e,r,o)}}return function(){return t.apply(n,arguments)}}},{3:3}],19:[function(t,n,e){n.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},{}],20:[function(t,n,e){n.exports=!t(25)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},{25:25}],21:[function(t,n,e){var r=t(39),o=t(30).document,i=r(o)&&r(o.createElement);n.exports=function(t){return i?o.createElement(t):{}}},{30:30,39:39}],22:[function(t,n,e){var r=t(47);n.exports=function(t){var n=r.getKeys(t),e=r.getSymbols;if(e)for(var o,i=e(t),u=r.isEnum,c=0;i.length>c;)u.call(t,o=i[c++])&&n.push(o);return n}},{47:47}],23:[function(t,n,e){var r=t(30),o=t(17),i=t(32),u=t(62),c=t(18),a=\"prototype\",s=function(t,n,e){var f,l,h,p,v=t&s.F,g=t&s.G,y=t&s.S,d=t&s.P,m=t&s.B,x=g?r:y?r[n]||(r[n]={}):(r[n]||{})[a],S=g?o:o[n]||(o[n]={}),w=S[a]||(S[a]={});g&&(e=n);for(f in e)l=!v&&x&&f in x,h=(l?x:e)[f],p=m&&l?c(h,r):d&&\"function\"==typeof h?c(Function.call,h):h,x&&!l&&u(x,f,h),S[f]!=h&&i(S,f,p),d&&w[f]!=h&&(w[f]=h)};r.core=o,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,n.exports=s},{17:17,18:18,30:30,32:32,62:62}],24:[function(t,n,e){var r=t(84)(\"match\");n.exports=function(t){var n=/./;try{\"/./\"[t](n)}catch(e){try{return n[r]=!1,!\"/./\"[t](n)}catch(o){}}return!0}},{84:84}],25:[function(t,n,e){n.exports=function(t){try{return!!t()}catch(n){return!0}}},{}],26:[function(t,n,e){\"use strict\";var r=t(32),o=t(62),i=t(25),u=t(19),c=t(84);n.exports=function(t,n,e){var a=c(t),s=\"\"[t];i(function(){var n={};return n[a]=function(){return 7},7!=\"\"[t](n)})&&(o(String.prototype,t,e(u,a,s)),r(RegExp.prototype,a,2==n?function(t,n){return s.call(t,this,n)}:function(t){return s.call(t,this)}))}},{19:19,25:25,32:32,62:62,84:84}],27:[function(t,n,e){\"use strict\";var r=t(5);n.exports=function(){var t=r(this),n=\"\";return t.global&&(n+=\"g\"),t.ignoreCase&&(n+=\"i\"),t.multiline&&(n+=\"m\"),t.unicode&&(n+=\"u\"),t.sticky&&(n+=\"y\"),n}},{5:5}],28:[function(t,n,e){var r=t(18),o=t(41),i=t(36),u=t(5),c=t(80),a=t(85);n.exports=function(t,n,e,s){var f,l,h,p=a(t),v=r(e,s,n?2:1),g=0;if(\"function\"!=typeof p)throw TypeError(t+\" is not iterable!\");if(i(p))for(f=c(t.length);f>g;g++)n?v(u(l=t[g])[0],l[1]):v(t[g]);else for(h=p.call(t);!(l=h.next()).done;)o(h,v,l.value,n)}},{18:18,36:36,41:41,5:5,80:80,85:85}],29:[function(t,n,e){var r=t(79),o=t(47).getNames,i={}.toString,u=\"object\"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(n){return u.slice()}};n.exports.get=function getOwnPropertyNames(t){return u&&\"[object Window]\"==i.call(t)?c(t):o(r(t))}},{47:47,79:79}],30:[function(t,n,e){var r=n.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},{}],31:[function(t,n,e){var r={}.hasOwnProperty;n.exports=function(t,n){return r.call(t,n)}},{}],32:[function(t,n,e){var r=t(47),o=t(60);n.exports=t(20)?function(t,n,e){return r.setDesc(t,n,o(1,e))}:function(t,n,e){return t[n]=e,t}},{20:20,47:47,60:60}],33:[function(t,n,e){n.exports=t(30).document&&document.documentElement},{30:30}],34:[function(t,n,e){n.exports=function(t,n,e){var r=void 0===e;switch(n.length){case 0:return r?t():t.call(e);case 1:return r?t(n[0]):t.call(e,n[0]);case 2:return r?t(n[0],n[1]):t.call(e,n[0],n[1]);case 3:return r?t(n[0],n[1],n[2]):t.call(e,n[0],n[1],n[2]);case 4:return r?t(n[0],n[1],n[2],n[3]):t.call(e,n[0],n[1],n[2],n[3])}return t.apply(e,n)}},{}],35:[function(t,n,e){var r=t(12);n.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},{12:12}],36:[function(t,n,e){var r=t(46),o=t(84)(\"iterator\"),i=Array.prototype;n.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},{46:46,84:84}],37:[function(t,n,e){var r=t(12);n.exports=Array.isArray||function(t){return\"Array\"==r(t)}},{12:12}],38:[function(t,n,e){var r=t(39),o=Math.floor;n.exports=function isInteger(t){return!r(t)&&isFinite(t)&&o(t)===t}},{39:39}],39:[function(t,n,e){n.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},{}],40:[function(t,n,e){var r=t(39),o=t(12),i=t(84)(\"match\");n.exports=function(t){var n;return r(t)&&(void 0!==(n=t[i])?!!n:\"RegExp\"==o(t))}},{12:12,39:39,84:84}],41:[function(t,n,e){var r=t(5);n.exports=function(t,n,e,o){try{return o?n(r(e)[0],e[1]):n(e)}catch(i){var u=t[\"return\"];throw void 0!==u&&r(u.call(t)),i}}},{5:5}],42:[function(t,n,e){\"use strict\";var r=t(47),o=t(60),i=t(67),u={};t(32)(u,t(84)(\"iterator\"),function(){return this}),n.exports=function(t,n,e){t.prototype=r.create(u,{next:o(1,e)}),i(t,n+\" Iterator\")}},{32:32,47:47,60:60,67:67,84:84}],43:[function(t,n,e){\"use strict\";var r=t(49),o=t(23),i=t(62),u=t(32),c=t(31),a=t(46),s=t(42),f=t(67),l=t(47).getProto,h=t(84)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),v=\"@@iterator\",g=\"keys\",y=\"values\",d=function(){return this};n.exports=function(t,n,e,m,x,S,w){s(e,n,m);var b,E,O=function(t){if(!p&&t in F)return F[t];switch(t){case g:return function keys(){return new e(this,t)};case y:return function values(){return new e(this,t)}}return function entries(){return new e(this,t)}},P=n+\" Iterator\",_=x==y,M=!1,F=t.prototype,A=F[h]||F[v]||x&&F[x],j=A||O(x);if(A){var N=l(j.call(new t));f(N,P,!0),!r&&c(F,v)&&u(N,h,d),_&&A.name!==y&&(M=!0,j=function values(){return A.call(this)})}if(r&&!w||!p&&!M&&F[h]||u(F,h,j),a[n]=j,a[P]=d,x)if(b={values:_?j:O(y),keys:S?j:O(g),entries:_?O(\"entries\"):j},w)for(E in b)E in F||i(F,E,b[E]);else o(o.P+o.F*(p||M),n,b);return b}},{23:23,31:31,32:32,42:42,46:46,47:47,49:49,62:62,67:67,84:84}],44:[function(t,n,e){var r=t(84)(\"iterator\"),o=!1;try{var i=[7][r]();i[\"return\"]=function(){o=!0},Array.from(i,function(){throw 2})}catch(u){}n.exports=function(t,n){if(!n&&!o)return!1;var e=!1;try{var i=[7],u=i[r]();u.next=function(){e=!0},i[r]=function(){return u},t(i)}catch(c){}return e}},{84:84}],45:[function(t,n,e){n.exports=function(t,n){return{value:n,done:!!t}}},{}],46:[function(t,n,e){n.exports={}},{}],47:[function(t,n,e){var r=Object;n.exports={create:r.create,getProto:r.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:r.getOwnPropertyDescriptor,setDesc:r.defineProperty,setDescs:r.defineProperties,getKeys:r.keys,getNames:r.getOwnPropertyNames,getSymbols:r.getOwnPropertySymbols,each:[].forEach}},{}],48:[function(t,n,e){var r=t(47),o=t(79);n.exports=function(t,n){for(var e,i=o(t),u=r.getKeys(i),c=u.length,a=0;c>a;)if(i[e=u[a++]]===n)return e}},{47:47,79:79}],49:[function(t,n,e){n.exports=!1},{}],50:[function(t,n,e){n.exports=Math.expm1||function expm1(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],51:[function(t,n,e){n.exports=Math.log1p||function log1p(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],52:[function(t,n,e){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],53:[function(t,n,e){var r,o,i,u=t(30),c=t(76).set,a=u.MutationObserver||u.WebKitMutationObserver,s=u.process,f=u.Promise,l=\"process\"==t(12)(s),h=function(){var t,n,e;for(l&&(t=s.domain)&&(s.domain=null,t.exit());r;)n=r.domain,e=r.fn,n&&n.enter(),e(),n&&n.exit(),r=r.next;o=void 0,t&&t.enter()};if(l)i=function(){s.nextTick(h)};else if(a){var p=1,v=document.createTextNode(\"\");new a(h).observe(v,{characterData:!0}),i=function(){v.data=p=-p}}else i=f&&f.resolve?function(){f.resolve().then(h)}:function(){c.call(u,h)};n.exports=function asap(t){var n={fn:t,next:void 0,domain:l&&s.domain};o&&(o.next=n),r||(r=n,i()),o=n}},{12:12,30:30,76:76}],54:[function(t,n,e){var r=t(47),o=t(81),i=t(35);n.exports=t(25)(function(){var t=Object.assign,n={},e={},r=Symbol(),o=\"abcdefghijklmnopqrst\";return n[r]=7,o.split(\"\").forEach(function(t){e[t]=t}),7!=t({},n)[r]||Object.keys(t({},e)).join(\"\")!=o})?function assign(t,n){for(var e=o(t),u=arguments,c=u.length,a=1,s=r.getKeys,f=r.getSymbols,l=r.isEnum;c>a;)for(var h,p=i(u[a++]),v=f?s(p).concat(f(p)):s(p),g=v.length,y=0;g>y;)l.call(p,h=v[y++])&&(e[h]=p[h]);return e}:Object.assign},{25:25,35:35,47:47,81:81}],55:[function(t,n,e){var r=t(23),o=t(17),i=t(25);n.exports=function(t,n){var e=(o.Object||{})[t]||Object[t],u={};u[t]=n(e),r(r.S+r.F*i(function(){e(1)}),\"Object\",u)}},{17:17,23:23,25:25}],56:[function(t,n,e){var r=t(47),o=t(79),i=r.isEnum;n.exports=function(t){return function(n){for(var e,u=o(n),c=r.getKeys(u),a=c.length,s=0,f=[];a>s;)i.call(u,e=c[s++])&&f.push(t?[e,u[e]]:u[e]);return f}}},{47:47,79:79}],57:[function(t,n,e){var r=t(47),o=t(5),i=t(30).Reflect;n.exports=i&&i.ownKeys||function ownKeys(t){var n=r.getNames(o(t)),e=r.getSymbols;return e?n.concat(e(t)):n}},{30:30,47:47,5:5}],58:[function(t,n,e){\"use strict\";var r=t(59),o=t(34),i=t(3);n.exports=function(){for(var t=i(this),n=arguments.length,e=Array(n),u=0,c=r._,a=!1;n>u;)(e[u]=arguments[u++])===c&&(a=!0);return function(){var r,i=this,u=arguments,s=u.length,f=0,l=0;if(!a&&!s)return o(t,e,i);if(r=e.slice(),a)for(;n>f;f++)r[f]===c&&(r[f]=u[l++]);for(;s>l;)r.push(u[l++]);return o(t,r,i)}}},{3:3,34:34,59:59}],59:[function(t,n,e){n.exports=t(30)},{30:30}],60:[function(t,n,e){n.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},{}],61:[function(t,n,e){var r=t(62);n.exports=function(t,n){for(var e in n)r(t,e,n[e]);return t}},{62:62}],62:[function(t,n,e){var r=t(30),o=t(32),i=t(83)(\"src\"),u=\"toString\",c=Function[u],a=(\"\"+c).split(u);t(17).inspectSource=function(t){return c.call(t)},(n.exports=function(t,n,e,u){\"function\"==typeof e&&(e.hasOwnProperty(i)||o(e,i,t[n]?\"\"+t[n]:a.join(String(n))),e.hasOwnProperty(\"name\")||o(e,\"name\",n)),t===r?t[n]=e:(u||delete t[n],o(t,n,e))})(Function.prototype,u,function toString(){return\"function\"==typeof this&&this[i]||c.call(this)})},{17:17,30:30,32:32,83:83}],63:[function(t,n,e){n.exports=function(t,n){var e=n===Object(n)?function(t){return n[t]}:n;return function(n){return String(n).replace(t,e)}}},{}],64:[function(t,n,e){n.exports=Object.is||function is(t,n){return t===n?0!==t||1/t===1/n:t!=t&&n!=n}},{}],65:[function(t,n,e){var r=t(47).getDesc,o=t(39),i=t(5),u=function(t,n){if(i(t),!o(n)&&null!==n)throw TypeError(n+\": can't set as prototype!\")};n.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(n,e,o){try{o=t(18)(Function.call,r(Object.prototype,\"__proto__\").set,2),o(n,[]),e=!(n instanceof Array)}catch(i){e=!0}return function setPrototypeOf(t,n){return u(t,n),e?t.__proto__=n:o(t,n),t}}({},!1):void 0),check:u}},{18:18,39:39,47:47,5:5}],66:[function(t,n,e){\"use strict\";var r=t(30),o=t(47),i=t(20),u=t(84)(\"species\");n.exports=function(t){var n=r[t];i&&n&&!n[u]&&o.setDesc(n,u,{configurable:!0,get:function(){return this}})}},{20:20,30:30,47:47,84:84}],67:[function(t,n,e){var r=t(47).setDesc,o=t(31),i=t(84)(\"toStringTag\");n.exports=function(t,n,e){t&&!o(t=e?t:t.prototype,i)&&r(t,i,{configurable:!0,value:n})}},{31:31,47:47,84:84}],68:[function(t,n,e){var r=t(30),o=\"__core-js_shared__\",i=r[o]||(r[o]={});n.exports=function(t){return i[t]||(i[t]={})}},{30:30}],69:[function(t,n,e){var r=t(5),o=t(3),i=t(84)(\"species\");n.exports=function(t,n){var e,u=r(t).constructor;return void 0===u||void 0==(e=r(u)[i])?n:o(e)}},{3:3,5:5,84:84}],70:[function(t,n,e){n.exports=function(t,n,e){if(!(t instanceof n))throw TypeError(e+\": use the 'new' operator!\");return t}},{}],71:[function(t,n,e){var r=t(78),o=t(19);n.exports=function(t){return function(n,e){var i,u,c=String(o(n)),a=r(e),s=c.length;return 0>a||a>=s?t?\"\":void 0:(i=c.charCodeAt(a),55296>i||i>56319||a+1===s||(u=c.charCodeAt(a+1))<56320||u>57343?t?c.charAt(a):i:t?c.slice(a,a+2):(i-55296<<10)+(u-56320)+65536)}}},{19:19,78:78}],72:[function(t,n,e){var r=t(40),o=t(19);n.exports=function(t,n,e){if(r(n))throw TypeError(\"String#\"+e+\" doesn't accept regex!\");return String(o(t))}},{19:19,40:40}],73:[function(t,n,e){var r=t(80),o=t(74),i=t(19);n.exports=function(t,n,e,u){var c=String(i(t)),a=c.length,s=void 0===e?\" \":String(e),f=r(n);if(a>=f)return c;\"\"==s&&(s=\" \");var l=f-a,h=o.call(s,Math.ceil(l/s.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},{19:19,74:74,80:80}],74:[function(t,n,e){\"use strict\";var r=t(78),o=t(19);n.exports=function repeat(t){var n=String(o(this)),e=\"\",i=r(t);if(0>i||i==1/0)throw RangeError(\"Count can't be negative\");for(;i>0;(i>>>=1)&&(n+=n))1&i&&(e+=n);return e}},{19:19,78:78}],75:[function(t,n,e){var r=t(23),o=t(19),i=t(25),u=\"\t\\n\\x0B\\f\\r \\u2028\\u2029\\ufeff\",c=\"[\"+u+\"]\",a=\"
\",s=RegExp(\"^\"+c+c+\"*\"),f=RegExp(c+c+\"*$\"),l=function(t,n){var e={};e[t]=n(h),r(r.P+r.F*i(function(){return!!u[t]()||a[t]()!=a}),\"String\",e)},h=l.trim=function(t,n){return t=String(o(t)),1&n&&(t=t.replace(s,\"\")),2&n&&(t=t.replace(f,\"\")),t};n.exports=l},{19:19,23:23,25:25}],76:[function(t,n,e){var r,o,i,u=t(18),c=t(34),a=t(33),s=t(21),f=t(30),l=f.process,h=f.setImmediate,p=f.clearImmediate,v=f.MessageChannel,g=0,y={},d=\"onreadystatechange\",m=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},x=function(t){m.call(t.data)};h&&p||(h=function setImmediate(t){for(var n=[],e=1;arguments.length>e;)n.push(arguments[e++]);return y[++g]=function(){c(\"function\"==typeof t?t:Function(t),n)},r(g),g},p=function clearImmediate(t){delete y[t]},\"process\"==t(12)(l)?r=function(t){l.nextTick(u(m,t,1))}:v?(o=new v,i=o.port2,o.port1.onmessage=x,r=u(i.postMessage,i,1)):f.addEventListener&&\"function\"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+\"\",\"*\")},f.addEventListener(\"message\",x,!1)):r=d in s(\"script\")?function(t){a.appendChild(s(\"script\"))[d]=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(u(m,t,1),0)}),n.exports={set:h,clear:p}},{12:12,18:18,21:21,30:30,33:33,34:34}],77:[function(t,n,e){var r=t(78),o=Math.max,i=Math.min;n.exports=function(t,n){return t=r(t),0>t?o(t+n,0):i(t,n)}},{78:78}],78:[function(t,n,e){var r=Math.ceil,o=Math.floor;n.exports=function(t){return isNaN(t=+t)?0:(t>0?o:r)(t)}},{}],79:[function(t,n,e){var r=t(35),o=t(19);n.exports=function(t){return r(o(t))}},{19:19,35:35}],80:[function(t,n,e){var r=t(78),o=Math.min;n.exports=function(t){return t>0?o(r(t),9007199254740991):0}},{78:78}],81:[function(t,n,e){var r=t(19);n.exports=function(t){return Object(r(t))}},{19:19}],82:[function(t,n,e){var r=t(39);n.exports=function(t,n){if(!r(t))return t;var e,o;if(n&&\"function\"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;if(\"function\"==typeof(e=t.valueOf)&&!r(o=e.call(t)))return o;if(!n&&\"function\"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},{39:39}],83:[function(t,n,e){var r=0,o=Math.random();n.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+o).toString(36))}},{}],84:[function(t,n,e){var r=t(68)(\"wks\"),o=t(83),i=t(30).Symbol;n.exports=function(t){return r[t]||(r[t]=i&&i[t]||(i||o)(\"Symbol.\"+t))}},{30:30,68:68,83:83}],85:[function(t,n,e){var r=t(11),o=t(84)(\"iterator\"),i=t(46);n.exports=t(17).getIteratorMethod=function(t){return void 0!=t?t[o]||t[\"@@iterator\"]||i[r(t)]:void 0}},{11:11,17:17,46:46,84:84}],86:[function(t,n,e){\"use strict\";var r,o=t(47),i=t(23),u=t(20),c=t(60),a=t(33),s=t(21),f=t(31),l=t(12),h=t(34),p=t(25),v=t(5),g=t(3),y=t(39),d=t(81),m=t(79),x=t(78),S=t(77),w=t(80),b=t(35),E=t(83)(\"__proto__\"),O=t(9),P=t(8)(!1),_=Object.prototype,M=Array.prototype,F=M.slice,A=M.join,j=o.setDesc,N=o.getDesc,I=o.setDescs,k={};u||(r=!p(function(){return 7!=j(s(\"div\"),\"a\",{get:function(){return 7}}).a}),o.setDesc=function(t,n,e){if(r)try{return j(t,n,e)}catch(o){}if(\"get\"in e||\"set\"in e)throw TypeError(\"Accessors not supported!\");return\"value\"in e&&(v(t)[n]=e.value),t},o.getDesc=function(t,n){if(r)try{return N(t,n)}catch(e){}return f(t,n)?c(!_.propertyIsEnumerable.call(t,n),t[n]):void 0},o.setDescs=I=function(t,n){v(t);for(var e,r=o.getKeys(n),i=r.length,u=0;i>u;)o.setDesc(t,e=r[u++],n[e]);return t}),i(i.S+i.F*!u,\"Object\",{getOwnPropertyDescriptor:o.getDesc,defineProperty:o.setDesc,defineProperties:I});var D=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\"),T=D.concat(\"length\",\"prototype\"),L=D.length,R=function(){var t,n=s(\"iframe\"),e=L,r=\">\";for(n.style.display=\"none\",a.appendChild(n),n.src=\"javascript:\",t=n.contentWindow.document,t.open(),t.write(\"<script>document.F=Object</script\"+r),t.close(),R=t.F;e--;)delete R.prototype[D[e]];return R()},C=function(t,n){return function(e){var r,o=m(e),i=0,u=[];for(r in o)r!=E&&f(o,r)&&u.push(r);for(;n>i;)f(o,r=t[i++])&&(~P(u,r)||u.push(r));return u}},G=function(){};i(i.S,\"Object\",{getPrototypeOf:o.getProto=o.getProto||function(t){return t=d(t),f(t,E)?t[E]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?_:null},getOwnPropertyNames:o.getNames=o.getNames||C(T,T.length,!0),create:o.create=o.create||function(t,n){var e;return null!==t?(G.prototype=v(t),e=new G,G.prototype=null,e[E]=t):e=R(),void 0===n?e:I(e,n)},keys:o.getKeys=o.getKeys||C(D,L,!1)});var W=function(t,n,e){if(!(n in k)){for(var r=[],o=0;n>o;o++)r[o]=\"a[\"+o+\"]\";k[n]=Function(\"F,a\",\"return new F(\"+r.join(\",\")+\")\")}return k[n](t,e)};i(i.P,\"Function\",{bind:function bind(t){var n=g(this),e=F.call(arguments,1),r=function(){var o=e.concat(F.call(arguments));return this instanceof r?W(n,o.length,o):h(n,o,t)};return y(n.prototype)&&(r.prototype=n.prototype),r}}),i(i.P+i.F*p(function(){a&&F.call(a)}),\"Array\",{slice:function(t,n){var e=w(this.length),r=l(this);if(n=void 0===n?e:n,\"Array\"==r)return F.call(this,t,n);for(var o=S(t,e),i=S(n,e),u=w(i-o),c=Array(u),a=0;u>a;a++)c[a]=\"String\"==r?this.charAt(o+a):this[o+a];return c}}),i(i.P+i.F*(b!=Object),\"Array\",{join:function join(t){return A.call(b(this),void 0===t?\",\":t)}}),i(i.S,\"Array\",{isArray:t(37)});var z=function(t){return function(n,e){g(n);var r=b(this),o=w(r.length),i=t?o-1:0,u=t?-1:1;if(arguments.length<2)for(;;){if(i in r){e=r[i],i+=u;break}if(i+=u,t?0>i:i>=o)throw TypeError(\"Reduce of empty array with no initial value\")}for(;t?i>=0:o>i;i+=u)i in r&&(e=n(e,r[i],i,this));return e}},K=function(t){return function(n){return t(this,n,arguments[1])}};i(i.P,\"Array\",{forEach:o.each=o.each||K(O(0)),map:K(O(1)),filter:K(O(2)),some:K(O(3)),every:K(O(4)),reduce:z(!1),reduceRight:z(!0),indexOf:K(P),lastIndexOf:function(t,n){var e=m(this),r=w(e.length),o=r-1;for(arguments.length>1&&(o=Math.min(o,x(n))),0>o&&(o=w(r+o));o>=0;o--)if(o in e&&e[o]===t)return o;return-1}}),i(i.S,\"Date\",{now:function(){return+new Date}});var U=function(t){return t>9?t:\"0\"+t};i(i.P+i.F*(p(function(){return\"0385-07-25T07:06:39.999Z\"!=new Date(-5e13-1).toISOString()})||!p(function(){new Date(NaN).toISOString()})),\"Date\",{toISOString:function toISOString(){if(!isFinite(this))throw RangeError(\"Invalid time value\");var t=this,n=t.getUTCFullYear(),e=t.getUTCMilliseconds(),r=0>n?\"-\":n>9999?\"+\":\"\";return r+(\"00000\"+Math.abs(n)).slice(r?-6:-4)+\"-\"+U(t.getUTCMonth()+1)+\"-\"+U(t.getUTCDate())+\"T\"+U(t.getUTCHours())+\":\"+U(t.getUTCMinutes())+\":\"+U(t.getUTCSeconds())+\".\"+(e>99?e:\"0\"+U(e))+\"Z\"}})},{12:12,20:20,21:21,23:23,25:25,3:3,31:31,33:33,34:34,35:35,37:37,39:39,47:47,5:5,60:60,77:77,78:78,79:79,8:8,80:80,81:81,83:83,9:9}],87:[function(t,n,e){var r=t(23);r(r.P,\"Array\",{copyWithin:t(6)}),t(4)(\"copyWithin\")},{23:23,4:4,6:6}],88:[function(t,n,e){var r=t(23);r(r.P,\"Array\",{fill:t(7)}),t(4)(\"fill\")},{23:23,4:4,7:7}],89:[function(t,n,e){\"use strict\";var r=t(23),o=t(9)(6),i=\"findIndex\",u=!0;i in[]&&Array(1)[i](function(){u=!1}),r(r.P+r.F*u,\"Array\",{findIndex:function findIndex(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(4)(i)},{23:23,4:4,9:9}],90:[function(t,n,e){\"use strict\";var r=t(23),o=t(9)(5),i=\"find\",u=!0;i in[]&&Array(1)[i](function(){u=!1}),r(r.P+r.F*u,\"Array\",{find:function find(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(4)(i)},{23:23,4:4,9:9}],91:[function(t,n,e){\"use strict\";var r=t(18),o=t(23),i=t(81),u=t(41),c=t(36),a=t(80),s=t(85);o(o.S+o.F*!t(44)(function(t){Array.from(t)}),\"Array\",{from:function from(t){var n,e,o,f,l=i(t),h=\"function\"==typeof this?this:Array,p=arguments,v=p.length,g=v>1?p[1]:void 0,y=void 0!==g,d=0,m=s(l);if(y&&(g=r(g,v>2?p[2]:void 0,2)),void 0==m||h==Array&&c(m))for(n=a(l.length),e=new h(n);n>d;d++)e[d]=y?g(l[d],d):l[d];else for(f=m.call(l),e=new h;!(o=f.next()).done;d++)e[d]=y?u(f,g,[o.value,d],!0):o.value;return e.length=d,e}})},{18:18,23:23,36:36,41:41,44:44,80:80,81:81,85:85}],92:[function(t,n,e){\"use strict\";var r=t(4),o=t(45),i=t(46),u=t(79);n.exports=t(43)(Array,\"Array\",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,e=this._i++;return!t||e>=t.length?(this._t=void 0,o(1)):\"keys\"==n?o(0,e):\"values\"==n?o(0,t[e]):o(0,[e,t[e]])},\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},{4:4,43:43,45:45,46:46,79:79}],93:[function(t,n,e){\"use strict\";var r=t(23);r(r.S+r.F*t(25)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),\"Array\",{of:function of(){for(var t=0,n=arguments,e=n.length,r=new(\"function\"==typeof this?this:Array)(e);e>t;)r[t]=n[t++];return r.length=e,r}})},{23:23,25:25}],94:[function(t,n,e){t(66)(\"Array\")},{66:66}],95:[function(t,n,e){\"use strict\";var r=t(47),o=t(39),i=t(84)(\"hasInstance\"),u=Function.prototype;i in u||r.setDesc(u,i,{value:function(t){if(\"function\"!=typeof this||!o(t))return!1;if(!o(this.prototype))return t instanceof this;for(;t=r.getProto(t);)if(this.prototype===t)return!0;return!1}})},{39:39,47:47,84:84}],96:[function(t,n,e){var r=t(47).setDesc,o=t(60),i=t(31),u=Function.prototype,c=/^\\s*function ([^ (]*)/,a=\"name\";a in u||t(20)&&r(u,a,{configurable:!0,get:function(){var t=(\"\"+this).match(c),n=t?t[1]:\"\";return i(this,a)||r(this,a,o(5,n)),n}})},{20:20,31:31,47:47,60:60}],97:[function(t,n,e){\"use strict\";var r=t(13);t(16)(\"Map\",function(t){return function Map(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function get(t){var n=r.getEntry(this,t);return n&&n.v},set:function set(t,n){return r.def(this,0===t?0:t,n)}},r,!0)},{13:13,16:16}],98:[function(t,n,e){var r=t(23),o=t(51),i=Math.sqrt,u=Math.acosh;r(r.S+r.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))),\"Math\",{acosh:function acosh(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:o(t-1+i(t-1)*i(t+1))}})},{23:23,51:51}],99:[function(t,n,e){function asinh(t){return isFinite(t=+t)&&0!=t?0>t?-asinh(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(23);r(r.S,\"Math\",{asinh:asinh})},{23:23}],100:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{atanh:function atanh(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{23:23}],101:[function(t,n,e){var r=t(23),o=t(52);r(r.S,\"Math\",{cbrt:function cbrt(t){return o(t=+t)*Math.pow(Math.abs(t),1/3)}})},{23:23,52:52}],102:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{clz32:function clz32(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{23:23}],103:[function(t,n,e){var r=t(23),o=Math.exp;r(r.S,\"Math\",{cosh:function cosh(t){return(o(t=+t)+o(-t))/2}})},{23:23}],104:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{expm1:t(50)})},{23:23,50:50}],105:[function(t,n,e){var r=t(23),o=t(52),i=Math.pow,u=i(2,-52),c=i(2,-23),a=i(2,127)*(2-c),s=i(2,-126),f=function(t){return t+1/u-1/u};r(r.S,\"Math\",{fround:function fround(t){var n,e,r=Math.abs(t),i=o(t);return s>r?i*f(r/s/c)*s*c:(n=(1+c/u)*r,e=n-(n-r),e>a||e!=e?i*(1/0):i*e)}})},{23:23,52:52}],106:[function(t,n,e){var r=t(23),o=Math.abs;r(r.S,\"Math\",{hypot:function hypot(t,n){for(var e,r,i=0,u=0,c=arguments,a=c.length,s=0;a>u;)e=o(c[u++]),e>s?(r=s/e,i=i*r*r+1,s=e):e>0?(r=e/s,i+=r*r):i+=e;return s===1/0?1/0:s*Math.sqrt(i)}})},{23:23}],107:[function(t,n,e){var r=t(23),o=Math.imul;r(r.S+r.F*t(25)(function(){return-5!=o(4294967295,5)||2!=o.length}),\"Math\",{imul:function imul(t,n){var e=65535,r=+t,o=+n,i=e&r,u=e&o;return 0|i*u+((e&r>>>16)*u+i*(e&o>>>16)<<16>>>0)}})},{23:23,25:25}],108:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{log10:function log10(t){return Math.log(t)/Math.LN10}})},{23:23}],109:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{log1p:t(51)})},{23:23,51:51}],110:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{log2:function log2(t){return Math.log(t)/Math.LN2}})},{23:23}],111:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{sign:t(52)})},{23:23,52:52}],112:[function(t,n,e){var r=t(23),o=t(50),i=Math.exp;r(r.S+r.F*t(25)(function(){return-2e-17!=!Math.sinh(-2e-17)}),\"Math\",{sinh:function sinh(t){return Math.abs(t=+t)<1?(o(t)-o(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{23:23,25:25,50:50}],113:[function(t,n,e){var r=t(23),o=t(50),i=Math.exp;r(r.S,\"Math\",{\ntanh:function tanh(t){var n=o(t=+t),e=o(-t);return n==1/0?1:e==1/0?-1:(n-e)/(i(t)+i(-t))}})},{23:23,50:50}],114:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{trunc:function trunc(t){return(t>0?Math.floor:Math.ceil)(t)}})},{23:23}],115:[function(t,n,e){\"use strict\";var r=t(47),o=t(30),i=t(31),u=t(12),c=t(82),a=t(25),s=t(75).trim,f=\"Number\",l=o[f],h=l,p=l.prototype,v=u(r.create(p))==f,g=\"trim\"in String.prototype,y=function(t){var n=c(t,!1);if(\"string\"==typeof n&&n.length>2){n=g?n.trim():s(n,3);var e,r,o,i=n.charCodeAt(0);if(43===i||45===i){if(e=n.charCodeAt(2),88===e||120===e)return NaN}else if(48===i){switch(n.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+n}for(var u,a=n.slice(2),f=0,l=a.length;l>f;f++)if(u=a.charCodeAt(f),48>u||u>o)return NaN;return parseInt(a,r)}}return+n};l(\" 0o1\")&&l(\"0b1\")&&!l(\"+0x1\")||(l=function Number(t){var n=arguments.length<1?0:t,e=this;return e instanceof l&&(v?a(function(){p.valueOf.call(e)}):u(e)!=f)?new h(y(n)):y(n)},r.each.call(t(20)?r.getNames(h):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),function(t){i(h,t)&&!i(l,t)&&r.setDesc(l,t,r.getDesc(h,t))}),l.prototype=p,p.constructor=l,t(62)(o,f,l))},{12:12,20:20,25:25,30:30,31:31,47:47,62:62,75:75,82:82}],116:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{EPSILON:Math.pow(2,-52)})},{23:23}],117:[function(t,n,e){var r=t(23),o=t(30).isFinite;r(r.S,\"Number\",{isFinite:function isFinite(t){return\"number\"==typeof t&&o(t)}})},{23:23,30:30}],118:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{isInteger:t(38)})},{23:23,38:38}],119:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{isNaN:function isNaN(t){return t!=t}})},{23:23}],120:[function(t,n,e){var r=t(23),o=t(38),i=Math.abs;r(r.S,\"Number\",{isSafeInteger:function isSafeInteger(t){return o(t)&&i(t)<=9007199254740991}})},{23:23,38:38}],121:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},{23:23}],122:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},{23:23}],123:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{parseFloat:parseFloat})},{23:23}],124:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{parseInt:parseInt})},{23:23}],125:[function(t,n,e){var r=t(23);r(r.S+r.F,\"Object\",{assign:t(54)})},{23:23,54:54}],126:[function(t,n,e){var r=t(39);t(55)(\"freeze\",function(t){return function freeze(n){return t&&r(n)?t(n):n}})},{39:39,55:55}],127:[function(t,n,e){var r=t(79);t(55)(\"getOwnPropertyDescriptor\",function(t){return function getOwnPropertyDescriptor(n,e){return t(r(n),e)}})},{55:55,79:79}],128:[function(t,n,e){t(55)(\"getOwnPropertyNames\",function(){return t(29).get})},{29:29,55:55}],129:[function(t,n,e){var r=t(81);t(55)(\"getPrototypeOf\",function(t){return function getPrototypeOf(n){return t(r(n))}})},{55:55,81:81}],130:[function(t,n,e){var r=t(39);t(55)(\"isExtensible\",function(t){return function isExtensible(n){return r(n)?t?t(n):!0:!1}})},{39:39,55:55}],131:[function(t,n,e){var r=t(39);t(55)(\"isFrozen\",function(t){return function isFrozen(n){return r(n)?t?t(n):!1:!0}})},{39:39,55:55}],132:[function(t,n,e){var r=t(39);t(55)(\"isSealed\",function(t){return function isSealed(n){return r(n)?t?t(n):!1:!0}})},{39:39,55:55}],133:[function(t,n,e){var r=t(23);r(r.S,\"Object\",{is:t(64)})},{23:23,64:64}],134:[function(t,n,e){var r=t(81);t(55)(\"keys\",function(t){return function keys(n){return t(r(n))}})},{55:55,81:81}],135:[function(t,n,e){var r=t(39);t(55)(\"preventExtensions\",function(t){return function preventExtensions(n){return t&&r(n)?t(n):n}})},{39:39,55:55}],136:[function(t,n,e){var r=t(39);t(55)(\"seal\",function(t){return function seal(n){return t&&r(n)?t(n):n}})},{39:39,55:55}],137:[function(t,n,e){var r=t(23);r(r.S,\"Object\",{setPrototypeOf:t(65).set})},{23:23,65:65}],138:[function(t,n,e){\"use strict\";var r=t(11),o={};o[t(84)(\"toStringTag\")]=\"z\",o+\"\"!=\"[object z]\"&&t(62)(Object.prototype,\"toString\",function toString(){return\"[object \"+r(this)+\"]\"},!0)},{11:11,62:62,84:84}],139:[function(t,n,e){\"use strict\";var r,o=t(47),i=t(49),u=t(30),c=t(18),a=t(11),s=t(23),f=t(39),l=t(5),h=t(3),p=t(70),v=t(28),g=t(65).set,y=t(64),d=t(84)(\"species\"),m=t(69),x=t(53),S=\"Promise\",w=u.process,b=\"process\"==a(w),E=u[S],O=function(t){var n=new E(function(){});return t&&(n.constructor=Object),E.resolve(n)===n},P=function(){function P2(t){var n=new E(t);return g(n,P2.prototype),n}var n=!1;try{if(n=E&&E.resolve&&O(),g(P2,E),P2.prototype=o.create(E.prototype,{constructor:{value:P2}}),P2.resolve(5).then(function(){})instanceof P2||(n=!1),n&&t(20)){var e=!1;E.resolve(o.setDesc({},\"then\",{get:function(){e=!0}})),n=e}}catch(r){n=!1}return n}(),_=function(t,n){return i&&t===E&&n===r?!0:y(t,n)},M=function(t){var n=l(t)[d];return void 0!=n?n:t},F=function(t){var n;return f(t)&&\"function\"==typeof(n=t.then)?n:!1},A=function(t){var n,e;this.promise=new t(function(t,r){if(void 0!==n||void 0!==e)throw TypeError(\"Bad Promise constructor\");n=t,e=r}),this.resolve=h(n),this.reject=h(e)},j=function(t){try{t()}catch(n){return{error:n}}},N=function(t,n){if(!t.n){t.n=!0;var e=t.c;x(function(){for(var r=t.v,o=1==t.s,i=0,c=function(n){var e,i,u=o?n.ok:n.fail,c=n.resolve,a=n.reject;try{u?(o||(t.h=!0),e=u===!0?r:u(r),e===n.promise?a(TypeError(\"Promise-chain cycle\")):(i=F(e))?i.call(e,c,a):c(e)):a(r)}catch(s){a(s)}};e.length>i;)c(e[i++]);e.length=0,t.n=!1,n&&setTimeout(function(){var n,e,o=t.p;I(o)&&(b?w.emit(\"unhandledRejection\",r,o):(n=u.onunhandledrejection)?n({promise:o,reason:r}):(e=u.console)&&e.error&&e.error(\"Unhandled promise rejection\",r)),t.a=void 0},1)})}},I=function(t){var n,e=t._d,r=e.a||e.c,o=0;if(e.h)return!1;for(;r.length>o;)if(n=r[o++],n.fail||!I(n.promise))return!1;return!0},k=function(t){var n=this;n.d||(n.d=!0,n=n.r||n,n.v=t,n.s=2,n.a=n.c.slice(),N(n,!0))},D=function(t){var n,e=this;if(!e.d){e.d=!0,e=e.r||e;try{if(e.p===t)throw TypeError(\"Promise can't be resolved itself\");(n=F(t))?x(function(){var r={r:e,d:!1};try{n.call(t,c(D,r,1),c(k,r,1))}catch(o){k.call(r,o)}}):(e.v=t,e.s=1,N(e,!1))}catch(r){k.call({r:e,d:!1},r)}}};P||(E=function Promise(t){h(t);var n=this._d={p:p(this,E,S),c:[],a:void 0,s:0,d:!1,v:void 0,h:!1,n:!1};try{t(c(D,n,1),c(k,n,1))}catch(e){k.call(n,e)}},t(61)(E.prototype,{then:function then(t,n){var e=new A(m(this,E)),r=e.promise,o=this._d;return e.ok=\"function\"==typeof t?t:!0,e.fail=\"function\"==typeof n&&n,o.c.push(e),o.a&&o.a.push(e),o.s&&N(o,!1),r},\"catch\":function(t){return this.then(void 0,t)}})),s(s.G+s.W+s.F*!P,{Promise:E}),t(67)(E,S),t(66)(S),r=t(17)[S],s(s.S+s.F*!P,S,{reject:function reject(t){var n=new A(this),e=n.reject;return e(t),n.promise}}),s(s.S+s.F*(!P||O(!0)),S,{resolve:function resolve(t){if(t instanceof E&&_(t.constructor,this))return t;var n=new A(this),e=n.resolve;return e(t),n.promise}}),s(s.S+s.F*!(P&&t(44)(function(t){E.all(t)[\"catch\"](function(){})})),S,{all:function all(t){var n=M(this),e=new A(n),r=e.resolve,i=e.reject,u=[],c=j(function(){v(t,!1,u.push,u);var e=u.length,c=Array(e);e?o.each.call(u,function(t,o){var u=!1;n.resolve(t).then(function(t){u||(u=!0,c[o]=t,--e||r(c))},i)}):r(c)});return c&&i(c.error),e.promise},race:function race(t){var n=M(this),e=new A(n),r=e.reject,o=j(function(){v(t,!1,function(t){n.resolve(t).then(e.resolve,r)})});return o&&r(o.error),e.promise}})},{11:11,17:17,18:18,20:20,23:23,28:28,3:3,30:30,39:39,44:44,47:47,49:49,5:5,53:53,61:61,64:64,65:65,66:66,67:67,69:69,70:70,84:84}],140:[function(t,n,e){var r=t(23),o=Function.apply;r(r.S,\"Reflect\",{apply:function apply(t,n,e){return o.call(t,n,e)}})},{23:23}],141:[function(t,n,e){var r=t(47),o=t(23),i=t(3),u=t(5),c=t(39),a=Function.bind||t(17).Function.prototype.bind;o(o.S+o.F*t(25)(function(){function F(){}return!(Reflect.construct(function(){},[],F)instanceof F)}),\"Reflect\",{construct:function construct(t,n){i(t);var e=arguments.length<3?t:i(arguments[2]);if(t==e){if(void 0!=n)switch(u(n).length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3])}var o=[null];return o.push.apply(o,n),new(a.apply(t,o))}var s=e.prototype,f=r.create(c(s)?s:Object.prototype),l=Function.apply.call(t,f,n);return c(l)?l:f}})},{17:17,23:23,25:25,3:3,39:39,47:47,5:5}],142:[function(t,n,e){var r=t(47),o=t(23),i=t(5);o(o.S+o.F*t(25)(function(){Reflect.defineProperty(r.setDesc({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function defineProperty(t,n,e){i(t);try{return r.setDesc(t,n,e),!0}catch(o){return!1}}})},{23:23,25:25,47:47,5:5}],143:[function(t,n,e){var r=t(23),o=t(47).getDesc,i=t(5);r(r.S,\"Reflect\",{deleteProperty:function deleteProperty(t,n){var e=o(i(t),n);return e&&!e.configurable?!1:delete t[n]}})},{23:23,47:47,5:5}],144:[function(t,n,e){\"use strict\";var r=t(23),o=t(5),i=function(t){this._t=o(t),this._i=0;var n,e=this._k=[];for(n in t)e.push(n)};t(42)(i,\"Object\",function(){var t,n=this,e=n._k;do if(n._i>=e.length)return{value:void 0,done:!0};while(!((t=e[n._i++])in n._t));return{value:t,done:!1}}),r(r.S,\"Reflect\",{enumerate:function enumerate(t){return new i(t)}})},{23:23,42:42,5:5}],145:[function(t,n,e){var r=t(47),o=t(23),i=t(5);o(o.S,\"Reflect\",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(t,n){return r.getDesc(i(t),n)}})},{23:23,47:47,5:5}],146:[function(t,n,e){var r=t(23),o=t(47).getProto,i=t(5);r(r.S,\"Reflect\",{getPrototypeOf:function getPrototypeOf(t){return o(i(t))}})},{23:23,47:47,5:5}],147:[function(t,n,e){function get(t,n){var e,i,a=arguments.length<3?t:arguments[2];return c(t)===a?t[n]:(e=r.getDesc(t,n))?o(e,\"value\")?e.value:void 0!==e.get?e.get.call(a):void 0:u(i=r.getProto(t))?get(i,n,a):void 0}var r=t(47),o=t(31),i=t(23),u=t(39),c=t(5);i(i.S,\"Reflect\",{get:get})},{23:23,31:31,39:39,47:47,5:5}],148:[function(t,n,e){var r=t(23);r(r.S,\"Reflect\",{has:function has(t,n){return n in t}})},{23:23}],149:[function(t,n,e){var r=t(23),o=t(5),i=Object.isExtensible;r(r.S,\"Reflect\",{isExtensible:function isExtensible(t){return o(t),i?i(t):!0}})},{23:23,5:5}],150:[function(t,n,e){var r=t(23);r(r.S,\"Reflect\",{ownKeys:t(57)})},{23:23,57:57}],151:[function(t,n,e){var r=t(23),o=t(5),i=Object.preventExtensions;r(r.S,\"Reflect\",{preventExtensions:function preventExtensions(t){o(t);try{return i&&i(t),!0}catch(n){return!1}}})},{23:23,5:5}],152:[function(t,n,e){var r=t(23),o=t(65);o&&r(r.S,\"Reflect\",{setPrototypeOf:function setPrototypeOf(t,n){o.check(t,n);try{return o.set(t,n),!0}catch(e){return!1}}})},{23:23,65:65}],153:[function(t,n,e){function set(t,n,e){var i,s,f=arguments.length<4?t:arguments[3],l=r.getDesc(c(t),n);if(!l){if(a(s=r.getProto(t)))return set(s,n,e,f);l=u(0)}return o(l,\"value\")?l.writable!==!1&&a(f)?(i=r.getDesc(f,n)||u(0),i.value=e,r.setDesc(f,n,i),!0):!1:void 0===l.set?!1:(l.set.call(f,e),!0)}var r=t(47),o=t(31),i=t(23),u=t(60),c=t(5),a=t(39);i(i.S,\"Reflect\",{set:set})},{23:23,31:31,39:39,47:47,5:5,60:60}],154:[function(t,n,e){var r=t(47),o=t(30),i=t(40),u=t(27),c=o.RegExp,a=c,s=c.prototype,f=/a/g,l=/a/g,h=new c(f)!==f;!t(20)||h&&!t(25)(function(){return l[t(84)(\"match\")]=!1,c(f)!=f||c(l)==l||\"/a/i\"!=c(f,\"i\")})||(c=function RegExp(t,n){var e=i(t),r=void 0===n;return this instanceof c||!e||t.constructor!==c||!r?h?new a(e&&!r?t.source:t,n):a((e=t instanceof c)?t.source:t,e&&r?u.call(t):n):t},r.each.call(r.getNames(a),function(t){t in c||r.setDesc(c,t,{configurable:!0,get:function(){return a[t]},set:function(n){a[t]=n}})}),s.constructor=c,c.prototype=s,t(62)(o,\"RegExp\",c)),t(66)(\"RegExp\")},{20:20,25:25,27:27,30:30,40:40,47:47,62:62,66:66,84:84}],155:[function(t,n,e){var r=t(47);t(20)&&\"g\"!=/./g.flags&&r.setDesc(RegExp.prototype,\"flags\",{configurable:!0,get:t(27)})},{20:20,27:27,47:47}],156:[function(t,n,e){t(26)(\"match\",1,function(t,n){return function match(e){\"use strict\";var r=t(this),o=void 0==e?void 0:e[n];return void 0!==o?o.call(e,r):new RegExp(e)[n](String(r))}})},{26:26}],157:[function(t,n,e){t(26)(\"replace\",2,function(t,n,e){return function replace(r,o){\"use strict\";var i=t(this),u=void 0==r?void 0:r[n];return void 0!==u?u.call(r,i,o):e.call(String(i),r,o)}})},{26:26}],158:[function(t,n,e){t(26)(\"search\",1,function(t,n){return function search(e){\"use strict\";var r=t(this),o=void 0==e?void 0:e[n];return void 0!==o?o.call(e,r):new RegExp(e)[n](String(r))}})},{26:26}],159:[function(t,n,e){t(26)(\"split\",2,function(t,n,e){return function split(r,o){\"use strict\";var i=t(this),u=void 0==r?void 0:r[n];return void 0!==u?u.call(r,i,o):e.call(String(i),r,o)}})},{26:26}],160:[function(t,n,e){\"use strict\";var r=t(13);t(16)(\"Set\",function(t){return function Set(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function add(t){return r.def(this,t=0===t?0:t,t)}},r)},{13:13,16:16}],161:[function(t,n,e){\"use strict\";var r=t(23),o=t(71)(!1);r(r.P,\"String\",{codePointAt:function codePointAt(t){return o(this,t)}})},{23:23,71:71}],162:[function(t,n,e){\"use strict\";var r=t(23),o=t(80),i=t(72),u=\"endsWith\",c=\"\"[u];r(r.P+r.F*t(24)(u),\"String\",{endsWith:function endsWith(t){var n=i(this,t,u),e=arguments,r=e.length>1?e[1]:void 0,a=o(n.length),s=void 0===r?a:Math.min(o(r),a),f=String(t);return c?c.call(n,f,s):n.slice(s-f.length,s)===f}})},{23:23,24:24,72:72,80:80}],163:[function(t,n,e){var r=t(23),o=t(77),i=String.fromCharCode,u=String.fromCodePoint;r(r.S+r.F*(!!u&&1!=u.length),\"String\",{fromCodePoint:function fromCodePoint(t){for(var n,e=[],r=arguments,u=r.length,c=0;u>c;){if(n=+r[c++],o(n,1114111)!==n)throw RangeError(n+\" is not a valid code point\");e.push(65536>n?i(n):i(((n-=65536)>>10)+55296,n%1024+56320))}return e.join(\"\")}})},{23:23,77:77}],164:[function(t,n,e){\"use strict\";var r=t(23),o=t(72),i=\"includes\";r(r.P+r.F*t(24)(i),\"String\",{includes:function includes(t){return!!~o(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{23:23,24:24,72:72}],165:[function(t,n,e){\"use strict\";var r=t(71)(!0);t(43)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,e=this._i;return e>=n.length?{value:void 0,done:!0}:(t=r(n,e),this._i+=t.length,{value:t,done:!1})})},{43:43,71:71}],166:[function(t,n,e){var r=t(23),o=t(79),i=t(80);r(r.S,\"String\",{raw:function raw(t){for(var n=o(t.raw),e=i(n.length),r=arguments,u=r.length,c=[],a=0;e>a;)c.push(String(n[a++])),u>a&&c.push(String(r[a]));return c.join(\"\")}})},{23:23,79:79,80:80}],167:[function(t,n,e){var r=t(23);r(r.P,\"String\",{repeat:t(74)})},{23:23,74:74}],168:[function(t,n,e){\"use strict\";var r=t(23),o=t(80),i=t(72),u=\"startsWith\",c=\"\"[u];r(r.P+r.F*t(24)(u),\"String\",{startsWith:function startsWith(t){var n=i(this,t,u),e=arguments,r=o(Math.min(e.length>1?e[1]:void 0,n.length)),a=String(t);return c?c.call(n,a,r):n.slice(r,r+a.length)===a}})},{23:23,24:24,72:72,80:80}],169:[function(t,n,e){\"use strict\";t(75)(\"trim\",function(t){return function trim(){return t(this,3)}})},{75:75}],170:[function(t,n,e){\"use strict\";var r=t(47),o=t(30),i=t(31),u=t(20),c=t(23),a=t(62),s=t(25),f=t(68),l=t(67),h=t(83),p=t(84),v=t(48),g=t(29),y=t(22),d=t(37),m=t(5),x=t(79),S=t(60),w=r.getDesc,b=r.setDesc,E=r.create,O=g.get,P=o.Symbol,_=o.JSON,M=_&&_.stringify,F=!1,A=p(\"_hidden\"),j=r.isEnum,N=f(\"symbol-registry\"),I=f(\"symbols\"),k=\"function\"==typeof P,D=Object.prototype,T=u&&s(function(){return 7!=E(b({},\"a\",{get:function(){return b(this,\"a\",{value:7}).a}})).a})?function(t,n,e){var r=w(D,n);r&&delete D[n],b(t,n,e),r&&t!==D&&b(D,n,r)}:b,L=function(t){var n=I[t]=E(P.prototype);return n._k=t,u&&F&&T(D,t,{configurable:!0,set:function(n){i(this,A)&&i(this[A],t)&&(this[A][t]=!1),T(this,t,S(1,n))}}),n},R=function(t){return\"symbol\"==typeof t},C=function defineProperty(t,n,e){return e&&i(I,n)?(e.enumerable?(i(t,A)&&t[A][n]&&(t[A][n]=!1),e=E(e,{enumerable:S(0,!1)})):(i(t,A)||b(t,A,S(1,{})),t[A][n]=!0),T(t,n,e)):b(t,n,e)},G=function defineProperties(t,n){m(t);for(var e,r=y(n=x(n)),o=0,i=r.length;i>o;)C(t,e=r[o++],n[e]);return t},W=function create(t,n){return void 0===n?E(t):G(E(t),n)},z=function propertyIsEnumerable(t){var n=j.call(this,t);return n||!i(this,t)||!i(I,t)||i(this,A)&&this[A][t]?n:!0},K=function getOwnPropertyDescriptor(t,n){var e=w(t=x(t),n);return!e||!i(I,n)||i(t,A)&&t[A][n]||(e.enumerable=!0),e},U=function getOwnPropertyNames(t){for(var n,e=O(x(t)),r=[],o=0;e.length>o;)i(I,n=e[o++])||n==A||r.push(n);return r},q=function getOwnPropertySymbols(t){for(var n,e=O(x(t)),r=[],o=0;e.length>o;)i(I,n=e[o++])&&r.push(I[n]);return r},J=function stringify(t){if(void 0!==t&&!R(t)){for(var n,e,r=[t],o=1,i=arguments;i.length>o;)r.push(i[o++]);return n=r[1],\"function\"==typeof n&&(e=n),(e||!d(n))&&(n=function(t,n){return e&&(n=e.call(this,t,n)),R(n)?void 0:n}),r[1]=n,M.apply(_,r)}},B=s(function(){var t=P();return\"[null]\"!=M([t])||\"{}\"!=M({a:t})||\"{}\"!=M(Object(t))});k||(P=function Symbol(){if(R(this))throw TypeError(\"Symbol is not a constructor\");return L(h(arguments.length>0?arguments[0]:void 0))},a(P.prototype,\"toString\",function toString(){return this._k}),R=function(t){return t instanceof P},r.create=W,r.isEnum=z,r.getDesc=K,r.setDesc=C,r.setDescs=G,r.getNames=g.get=U,r.getSymbols=q,u&&!t(49)&&a(D,\"propertyIsEnumerable\",z,!0));var V={\"for\":function(t){return i(N,t+=\"\")?N[t]:N[t]=P(t)},keyFor:function keyFor(t){return v(N,t)},useSetter:function(){F=!0},useSimple:function(){F=!1}};r.each.call(\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),function(t){var n=p(t);V[t]=k?n:L(n)}),F=!0,c(c.G+c.W,{Symbol:P}),c(c.S,\"Symbol\",V),c(c.S+c.F*!k,\"Object\",{create:W,defineProperty:C,defineProperties:G,getOwnPropertyDescriptor:K,getOwnPropertyNames:U,getOwnPropertySymbols:q}),_&&c(c.S+c.F*(!k||B),\"JSON\",{stringify:J}),l(P,\"Symbol\"),l(Math,\"Math\",!0),l(o.JSON,\"JSON\",!0)},{20:20,22:22,23:23,25:25,29:29,30:30,31:31,37:37,47:47,48:48,49:49,5:5,60:60,62:62,67:67,68:68,79:79,83:83,84:84}],171:[function(t,n,e){\"use strict\";var r=t(47),o=t(62),i=t(15),u=t(39),c=t(31),a=i.frozenStore,s=i.WEAK,f=Object.isExtensible||u,l={},h=t(16)(\"WeakMap\",function(t){return function WeakMap(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function get(t){if(u(t)){if(!f(t))return a(this).get(t);if(c(t,s))return t[s][this._i]}},set:function set(t,n){return i.def(this,t,n)}},i,!0,!0);7!=(new h).set((Object.freeze||Object)(l),7).get(l)&&r.each.call([\"delete\",\"has\",\"get\",\"set\"],function(t){var n=h.prototype,e=n[t];o(n,t,function(n,r){if(u(n)&&!f(n)){var o=a(this)[t](n,r);return\"set\"==t?this:o}return e.call(this,n,r)})})},{15:15,16:16,31:31,39:39,47:47,62:62}],172:[function(t,n,e){\"use strict\";var r=t(15);t(16)(\"WeakSet\",function(t){return function WeakSet(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function add(t){return r.def(this,t,!0)}},r,!1,!0)},{15:15,16:16}],173:[function(t,n,e){\"use strict\";var r=t(23),o=t(8)(!0);r(r.P,\"Array\",{includes:function includes(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(4)(\"includes\")},{23:23,4:4,8:8}],174:[function(t,n,e){var r=t(23);r(r.P,\"Map\",{toJSON:t(14)(\"Map\")})},{14:14,23:23}],175:[function(t,n,e){var r=t(23),o=t(56)(!0);r(r.S,\"Object\",{entries:function entries(t){return o(t)}})},{23:23,56:56}],176:[function(t,n,e){var r=t(47),o=t(23),i=t(57),u=t(79),c=t(60);o(o.S,\"Object\",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var n,e,o=u(t),a=r.setDesc,s=r.getDesc,f=i(o),l={},h=0;f.length>h;)e=s(o,n=f[h++]),n in l?a(l,n,c(0,e)):l[n]=e;return l}})},{23:23,47:47,57:57,60:60,79:79}],177:[function(t,n,e){var r=t(23),o=t(56)(!1);r(r.S,\"Object\",{values:function values(t){return o(t)}})},{23:23,56:56}],178:[function(t,n,e){var r=t(23),o=t(63)(/[\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\");r(r.S,\"RegExp\",{escape:function escape(t){return o(t)}})},{23:23,63:63}],179:[function(t,n,e){var r=t(23);r(r.P,\"Set\",{toJSON:t(14)(\"Set\")})},{14:14,23:23}],180:[function(t,n,e){\"use strict\";var r=t(23),o=t(71)(!0);r(r.P,\"String\",{at:function at(t){return o(this,t)}})},{23:23,71:71}],181:[function(t,n,e){\"use strict\";var r=t(23),o=t(73);r(r.P,\"String\",{padLeft:function padLeft(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{23:23,73:73}],182:[function(t,n,e){\"use strict\";var r=t(23),o=t(73);r(r.P,\"String\",{padRight:function padRight(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},{23:23,73:73}],183:[function(t,n,e){\"use strict\";t(75)(\"trimLeft\",function(t){return function trimLeft(){return t(this,1)}})},{75:75}],184:[function(t,n,e){\"use strict\";t(75)(\"trimRight\",function(t){return function trimRight(){return t(this,2)}})},{75:75}],185:[function(t,n,e){var r=t(47),o=t(23),i=t(18),u=t(17).Array||Array,c={},a=function(t,n){r.each.call(t.split(\",\"),function(t){void 0==n&&t in u?c[t]=u[t]:t in[]&&(c[t]=i(Function.call,[][t],n))})};a(\"pop,reverse,shift,keys,values,entries\",1),a(\"indexOf,every,some,forEach,map,filter,find,findIndex,includes\",3),a(\"join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\"),o(o.S,\"Array\",c)},{17:17,18:18,23:23,47:47}],186:[function(t,n,e){t(92);var r=t(30),o=t(32),i=t(46),u=t(84)(\"iterator\"),c=r.NodeList,a=r.HTMLCollection,s=c&&c.prototype,f=a&&a.prototype,l=i.NodeList=i.HTMLCollection=i.Array;s&&!s[u]&&o(s,u,l),f&&!f[u]&&o(f,u,l)},{30:30,32:32,46:46,84:84,92:92}],187:[function(t,n,e){var r=t(23),o=t(76);r(r.G+r.B,{setImmediate:o.set,clearImmediate:o.clear})},{23:23,76:76}],188:[function(t,n,e){var r=t(30),o=t(23),i=t(34),u=t(58),c=r.navigator,a=!!c&&/MSIE .\\./.test(c.userAgent),s=function(t){return a?function(n,e){return t(i(u,[].slice.call(arguments,2),\"function\"==typeof n?n:Function(n)),e)}:t};o(o.G+o.B+o.F*a,{setTimeout:s(r.setTimeout),setInterval:s(r.setInterval)})},{23:23,30:30,34:34,58:58}],189:[function(t,n,e){t(86),t(170),t(125),t(133),t(137),t(138),t(126),t(136),t(135),t(131),t(132),t(130),t(127),t(129),t(134),t(128),t(96),t(95),t(115),t(116),t(117),t(118),t(119),t(120),t(121),t(122),t(123),t(124),t(98),t(99),t(100),t(101),t(102),t(103),t(104),t(105),t(106),t(107),t(108),t(109),t(110),t(111),t(112),t(113),t(114),t(163),t(166),t(169),t(165),t(161),t(162),t(164),t(167),t(168),t(91),t(93),t(92),t(94),t(87),t(88),t(90),t(89),t(154),t(155),t(156),t(157),t(158),t(159),t(139),t(97),t(160),t(171),t(172),t(140),t(141),t(142),t(143),t(144),t(147),t(145),t(146),t(148),t(149),t(150),t(151),t(153),t(152),t(173),t(180),t(181),t(182),t(183),t(184),t(178),t(176),t(177),t(175),t(174),t(179),t(185),t(188),t(187),t(186),n.exports=t(17)},{100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,128:128,129:129,130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,17:17,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99}],190:[function(t,n,e){(function(t){!function(t){\"use strict\";function wrap(t,n,e,r){var o=Object.create((n||Generator).prototype),i=new Context(r||[]);return o._invoke=makeInvokeMethod(t,e,i),o}function tryCatch(t,n,e){try{return{type:\"normal\",arg:t.call(n,e)}}catch(r){return{type:\"throw\",arg:r}}}function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}function defineIteratorMethods(t){[\"next\",\"throw\",\"return\"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function AwaitArgument(t){this.arg=t}function AsyncIterator(t){function invoke(n,o){var i=t[n](o),u=i.value;return u instanceof AwaitArgument?Promise.resolve(u.arg).then(e,r):Promise.resolve(u).then(function(t){return i.value=t,i})}function enqueue(t,e){function callInvokeWithMethodAndArg(){return invoke(t,e)}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):new Promise(function(t){t(callInvokeWithMethodAndArg())})}\"object\"==typeof process&&process.domain&&(invoke=process.domain.bind(invoke));var n,e=invoke.bind(t,\"next\"),r=invoke.bind(t,\"throw\");invoke.bind(t,\"return\");this._invoke=enqueue}function makeInvokeMethod(t,n,r){var o=c;return function invoke(i,u){if(o===s)throw new Error(\"Generator is already running\");if(o===f){if(\"throw\"===i)throw u;return doneResult()}for(;;){var h=r.delegate;if(h){if(\"return\"===i||\"throw\"===i&&h.iterator[i]===e){r.delegate=null;var p=h.iterator[\"return\"];if(p){var v=tryCatch(p,h.iterator,u);if(\"throw\"===v.type){i=\"throw\",u=v.arg;continue}}if(\"return\"===i)continue}var v=tryCatch(h.iterator[i],h.iterator,u);if(\"throw\"===v.type){r.delegate=null,i=\"throw\",u=v.arg;continue}i=\"next\",u=e;var g=v.arg;if(!g.done)return o=a,g;r[h.resultName]=g.value,r.next=h.nextLoc,r.delegate=null}if(\"next\"===i)r._sent=u,o===a?r.sent=u:r.sent=e;else if(\"throw\"===i){if(o===c)throw o=f,u;r.dispatchException(u)&&(i=\"next\",u=e)}else\"return\"===i&&r.abrupt(\"return\",u);o=s;var v=tryCatch(t,n,r);if(\"normal\"===v.type){o=r.done?f:a;var g={value:v.arg,done:r.done};if(v.arg!==l)return g;r.delegate&&\"next\"===i&&(u=e)}else\"throw\"===v.type&&(o=f,i=\"throw\",u=v.arg)}}}function pushTryEntry(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function resetTryEntry(t){var n=t.completion||{};n.type=\"normal\",delete n.arg,t.completion=n}function Context(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t){var n=t[o];if(n)return n.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,u=function next(){for(;++i<t.length;)if(r.call(t,i))return next.value=t[i],next.done=!1,next;return next.value=e,next.done=!0,next};return u.next=u}}return{next:doneResult}}function doneResult(){return{value:e,done:!0}}var e,r=Object.prototype.hasOwnProperty,o=\"function\"==typeof Symbol&&Symbol.iterator||\"@@iterator\",i=\"object\"==typeof n,u=t.regeneratorRuntime;if(u)return void(i&&(n.exports=u));u=t.regeneratorRuntime=i?n.exports:{},u.wrap=wrap;var c=\"suspendedStart\",a=\"suspendedYield\",s=\"executing\",f=\"completed\",l={},h=GeneratorFunctionPrototype.prototype=Generator.prototype;GeneratorFunction.prototype=h.constructor=GeneratorFunctionPrototype,GeneratorFunctionPrototype.constructor=GeneratorFunction,GeneratorFunction.displayName=\"GeneratorFunction\",u.isGeneratorFunction=function(t){var n=\"function\"==typeof t&&t.constructor;return n?n===GeneratorFunction||\"GeneratorFunction\"===(n.displayName||n.name):!1},u.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):t.__proto__=GeneratorFunctionPrototype,t.prototype=Object.create(h),t},u.awrap=function(t){return new AwaitArgument(t)},defineIteratorMethods(AsyncIterator.prototype),u.async=function(t,n,e,r){var o=new AsyncIterator(wrap(t,n,e,r));return u.isGeneratorFunction(n)?o:o.next().then(function(t){return t.done?t.value:o.next()})},defineIteratorMethods(h),h[o]=function(){return this},h.toString=function(){return\"[object Generator]\"},u.keys=function(t){var n=[];for(var e in t)n.push(e);return n.reverse(),function next(){for(;n.length;){var e=n.pop();if(e in t)return next.value=e,next.done=!1,next}return next.done=!0,next}},u.values=values,Context.prototype={constructor:Context,reset:function(t){if(this.prev=0,this.next=0,this.sent=e,this.done=!1,this.delegate=null,this.tryEntries.forEach(resetTryEntry),!t)for(var n in this)\"t\"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0],n=t.completion;if(\"throw\"===n.type)throw n.arg;return this.rval},dispatchException:function(t){function handle(e,r){return i.type=\"throw\",i.arg=t,n.next=e,!!r}if(this.done)throw t;for(var n=this,e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e],i=o.completion;if(\"root\"===o.tryLoc)return handle(\"end\");if(o.tryLoc<=this.prev){var u=r.call(o,\"catchLoc\"),c=r.call(o,\"finallyLoc\");if(u&&c){if(this.prev<o.catchLoc)return handle(o.catchLoc,!0);if(this.prev<o.finallyLoc)return handle(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return handle(o.catchLoc,!0)}else{if(!c)throw new Error(\"try statement without catch or finally\");if(this.prev<o.finallyLoc)return handle(o.finallyLoc)}}}},abrupt:function(t,n){for(var e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&r.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===t||\"continue\"===t)&&i.tryLoc<=n&&n<=i.finallyLoc&&(i=null);var u=i?i.completion:{};return u.type=t,u.arg=n,i?this.next=i.finallyLoc:this.complete(u),l},complete:function(t,n){if(\"throw\"===t.type)throw t.arg;\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=t.arg,this.next=\"end\"):\"normal\"===t.type&&n&&(this.next=n)},finish:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),resetTryEntry(e),l}},\"catch\":function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e.tryLoc===t){var r=e.completion;if(\"throw\"===r.type){var o=r.arg;resetTryEntry(e)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,n,e){return this.delegate={iterator:values(t),resultName:n,nextLoc:e},l}}}(\"object\"==typeof t?t:\"object\"==typeof window?window:\"object\"==typeof self?self:this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1]);\n","/* */ \n;(function () {\n var parents = function (node, ps) {\n if (node.parentNode === null) { return ps; }\n\n return parents(node.parentNode, ps.concat([node]));\n };\n\n var style = function (node, prop) {\n return getComputedStyle(node, null).getPropertyValue(prop);\n };\n\n var overflow = function (node) {\n return style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\");\n };\n\n var scroll = function (node) {\n return (/(auto|scroll)/).test(overflow(node));\n };\n\n var scrollParent = function (node) {\n if (!(node instanceof HTMLElement)) {\n return ;\n }\n\n var ps = parents(node.parentNode, []);\n\n for (var i = 0; i < ps.length; i += 1) {\n if (scroll(ps[i])) {\n return ps[i];\n }\n }\n\n return window;\n };\n\n // If common js is defined use it.\n if (typeof module === \"object\" && module !== null) {\n module.exports = scrollParent;\n } else {\n window.Scrollparent = scrollParent;\n }\n})();\n","module.exports = require(\"npm:scrollparent@0.1.0/scrollparent.js\");","'use strict';\n\nimport {SchemaManager, RedocComponent, BaseComponent} from '../base';\nimport OptionsManager from '../../options';\n\n@RedocComponent({\n selector: 'api-info',\n styles: [`\n .api-info-header{font-weight:normal}:host>div{width:60%}a.openapi-button{padding:3px 8px 4px 8px;color:#0033a0;border:1px solid #0033a0;margin-left:0.5em;font-weight:normal}\n `],\n template: `\n <div>\n <h1 class=\"api-info-header\">{{data.title}} ({{data.version}})</h1>\n <p *ngIf=\"data.description\" innerHtml=\"{{data.description | marked}}\"> </p>\n <p>\n <!-- TODO: create separate components for contact and license ? -->\n <span *ngIf=\"data.contact\"> Contact:\n <a *ngIf=\"data.contact.url\" href=\"{{data.contact.url}}\">\n {{data.contact.name || data.contact.url}}</a>\n <a *ngIf=\"data.contact.email\" href=\"mailto:{{data.contact.email}}\">\n {{data.contact.email}}</a>\n </span>\n <span *ngIf=\"data.license\"> License:\n <a *ngIf=\"data.license.url\" href=\"{{data.license.url}}\"> {{data.license.name}} </a>\n <span *ngIf=\"!data.license.url\"> {{data.license.name}} </span>\n </span>\n </p>\n <p>\n Download OpenAPI (fka Swagger) specification:\n <a class=\"openapi-button\" target=\"_blank\" attr.href='{{specUrl}}'> Download </a>\n </p>\n </div>\n `\n})\n@Reflect.metadata('parameters', [[SchemaManager], [OptionsManager]])\nexport default class ApiInfo extends BaseComponent {\n constructor(schemaMgr, optionsMgr) {\n super(schemaMgr);\n this.optionsMgr = optionsMgr;\n }\n\n prepareModel() {\n this.data = this.componentSchema.info;\n this.specUrl = this.optionsMgr.options.specUrl;\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\n\n@RedocComponent({\n selector: 'api-logo',\n styles: [`\n img{max-height:150px;width:auto;display:inline-block;max-width:100%;box-sizing:border-box}\n `],\n template: `\n <img *ngIf=\"data.imgUrl\" [attr.src]=\"data.imgUrl\" [ngStyle]=\"{'background-color': data.bgColor}\">\n `\n})\nexport default class ApiLogo extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n let logoInfo = this.componentSchema.info['x-logo'];\n if (!logoInfo) return;\n this.data.imgUrl = logoInfo.url;\n this.data.bgColor = logoInfo.backgroundColor || 'transparent';\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\nimport JsonSchema from '../JsonSchema/json-schema';\nimport JsonSchemaLazy from '../JsonSchema/json-schema-lazy';\n\nfunction safePush(obj, prop, item) {\n if (!obj[prop]) obj[prop] = [];\n obj[prop].push(item);\n}\n\n@RedocComponent({\n selector: 'params-list',\n template: `\n <h5 class=\"param-list-header\" *ngIf=\"data.params.length\"> Parameters </h5>\n <template ngFor [ngForOf]=\"data.params\" let-paramType=\"$implicit\">\n <header class=\"paramType\">\n {{paramType.place}} Parameters\n <span class=\"hint--top-right hint--large\" [attr.data-hint]=\"paramType.placeHint\">?</span>\n </header>\n <br>\n <div class=\"params-wrap\">\n <div *ngFor=\"let param of paramType.params\" class=\"param\">\n <div class=\"param-name\">\n <span class=\"param-name-content\"> {{param.name}} </span>\n </div>\n <div class=\"param-info\">\n <div>\n <span class=\"param-type {{param.type}}\" [ngClass]=\"{'with-hint': param._displayTypeHint}\"\n title=\"{{param._displayTypeHint}}\"> {{param._displayType}} {{param._displayFormat}}</span>\n <span *ngIf=\"param.required\" class=\"param-required\">Required</span>\n <div *ngIf=\"param.enum\" class=\"param-enum\">\n <span *ngFor=\"let enumItem of param.enum\" class=\"enum-value {{enumItem.type}}\"> {{enumItem.val | json}} </span>\n </div>\n </div>\n <div class=\"param-description\" innerHtml=\"{{param.description | marked}}\"></div>\n </div>\n </div>\n </div>\n </template>\n\n <div *ngIf=\"data.bodyParam\">\n <h5 class=\"param-list-header\" *ngIf=\"data.bodyParam\"> Request Body </h5>\n\n <div class=\"body-param-description\" innerHtml=\"{{data.bodyParam.description | marked}}\"></div>\n <div>\n <br>\n <json-schema-lazy [skipReadOnly]=\"true\" [auto]=\"true\" pointer=\"{{data.bodyParam.pointer}}/schema\">\n </json-schema-lazy>\n </div>\n </div>\n `,\n styles: [`\n .param-list-header{border-bottom:1px solid rgba(38,50,56,0.3);padding:0.2em 0;margin:3.5em 0 .8em 0;color:rgba(38,50,56,0.5);font-weight:normal;text-transform:uppercase}.param-name{font-size:0.929em;padding:10px 0 10px 0;font-weight:400;box-sizing:border-box;line-height:20px;border-left:1px solid rgba(0,51,160,0.5);white-space:nowrap;position:relative;vertical-align:top}.param-name-content{padding-right:25px;display:inline-block;font-family:Montserrat,sans-serif}.param-info{padding:10px 0;box-sizing:border-box;border-bottom:1px solid #ccc;width:75%}.param-range{color:rgba(0,51,160,0.7);position:relative;top:1px;padding:0 4px;border-radius:2px;background-color:rgba(0,51,160,0.1);margin-left:6px}.param-description{font-size:13px}.param-required{color:red;font-weight:bold;font-size:12px;line-height:20px;vertical-align:middle}.param-type{color:rgba(38,50,56,0.4);font-size:0.929em;line-height:20px;vertical-align:middle;font-weight:normal}.param-type.array:before{content:\"Array of \";color:#263238;font-weight:300}.param-type.with-hint{display:inline-block;margin-bottom:0.4em;border-bottom:1px dotted rgba(38,50,56,0.4);padding:0;cursor:help}.param-type-trivial{margin:10px 10px 0;display:inline-block}.param-name>span:before{content:\"\";display:inline-block;width:1px;height:7px;background-color:#0033a0;margin:0 10px;vertical-align:middle}.param-name>span:after{content:\"\";position:absolute;border-top:1px solid rgba(0,51,160,0.5);width:10px;left:0;top:21px}.param:first-of-type>.param-name:before{content:\"\";display:block;position:absolute;left:-1px;top:0;border-left:2px solid #fff;height:21px}.param:last-of-type>.param-name,.param.last>.param-name{position:relative}.param:last-of-type>.param-name:after,.param.last>.param-name:after{content:\"\";display:block;position:absolute;left:-2px;border-left:2px solid #fff;top:22px;background-color:white;bottom:0}.param-wrap:last-of-type>.param-schema{border-left-color:transparent}.param-schema .param-wrap:first-of-type .param-name:before{display:none !important}.param-schema.last>td{border-left:0}.param-enum{color:#263238;font-size:13px}.param-enum:before{content:\"Values: {\"}.param-enum:after{content:\"}\"}.param-enum>.enum-value:after{content:\", \"}.param-enum>.enum-value:last-of-type:after{content:none}header.paramType{margin:10px 0;text-transform:capitalize}.params-wrap{display:table;width:100%}.param-name{display:table-cell;vertical-align:top}.param-info{display:table-cell;width:100%}.param{display:table-row}.param:last-of-type>.param-name{border-left:0}.param:last-of-type>.param-name:after{content:\"\";display:block;position:absolute;left:0;border-left:1px solid rgba(0,51,160,0.5);height:21px;background-color:white;top:0}.param:first-of-type .param-name:after{content:\"\";display:block;position:absolute;left:-1px;border-left:2px solid #fff;height:20px;background-color:white;top:0}[data-hint]{width:1.2em;text-align:center;border-radius:50%;vertical-align:middle;color:#999;line-height:1.2;text-transform:none;cursor:help;border:1px solid #999;margin-left:0.5em}@media (max-width: 520px){[data-hint]{float:right}[data-hint]:after{margin-left:12px;transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);-webkit-transform:translateX(-100%) translateY(-8px)}}\n `],\n directives: [JsonSchema, JsonSchemaLazy]\n})\nexport default class ParamsList extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n let paramsList = this.schemaMgr.getMethodParams(this.pointer, true);\n\n paramsList = paramsList.map((paramData) => {\n let propPointer = paramData._pointer;\n if (paramData.in === 'body') return paramData;\n return JsonSchema.injectPropertyData(paramData, paramData.name, propPointer);\n });\n\n let paramsMap = this.orderParams(paramsList);\n\n if (paramsMap.body && paramsMap.body.length) {\n let bodyParam = paramsMap.body[0];\n bodyParam.pointer = bodyParam._pointer;\n this.data.bodyParam = bodyParam;\n paramsMap.body = undefined;\n }\n\n this.data.noParams = !(Object.keys(paramsMap).length || this.data.bodyParam);\n\n let paramsPlaces = ['path', 'query', 'formData', 'header', 'body'];\n let placeHint = {\n path: `Used together with Path Templating, where the parameter value is actually part\n of the operation's URL. This does not include the host or base path of the API.\n For example, in /items/{itemId}, the path parameter is itemId`,\n query: `Parameters that are appended to the URL.\n For example, in /items?id=###, the query parameter is id`,\n formData: `Parameters that are submitted through a form.\n application/x-www-form-urlencoded, multipart/form-data or both are usually\n used as the content type of the request`,\n header: 'Custom headers that are expected as part of the request'\n };\n let params = [];\n paramsPlaces.forEach(place => {\n if (paramsMap[place] && paramsMap[place].length) {\n params.push({place: place, placeHint: placeHint[place], params: paramsMap[place]});\n }\n });\n this.data.params = params;\n }\n\n orderParams(params) {\n let res = {};\n params.forEach((param) => safePush(res, param.in, param));\n return res;\n }\n}\n","'use strict';\n\nimport {ViewChildren, QueryList, ChangeDetectorRef, ChangeDetectionStrategy} from 'angular2/core';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport JsonPointer from '../../utils/JsonPointer';\nimport {Tabs, Tab} from '../../common/components/Tabs/tabs';\nimport SchemaSample from '../SchemaSample/schema-sample';\nimport {PrismPipe} from '../../utils/pipes';\nimport {redocEvents} from '../../events';\n\n@RedocComponent({\n selector: 'request-samples',\n template: `\n <header *ngIf=\"data.bodySchemaPtr || data.samples.length\"> Request samples </header>\n <schema-sample *ngIf=\"!data.samples.length\" [pointer]=\"data.bodySchemaPtr\"> </schema-sample>\n <tabs *ngIf=\"data.samples.length\" (change)=changeLangNotify($event)>\n <tab tabTitle=\"JSON\">\n <schema-sample [pointer]=\"data.bodySchemaPtr\"> </schema-sample>\n </tab>\n <tab *ngFor=\"let sample of data.samples\" [tabTitle]=\"sample.lang\">\n <pre innerHtml=\"{{sample.source | prism:sample.lang}}\"></pre>\n </tab>\n </tabs>\n `,\n styles: [`\n header{font-family:Montserrat;font-size:0.929em;text-transform:uppercase;margin:0;color:#9fb4be;text-transform:uppercase;font-weight:normal}:host>tabs>ul li{font-family:Montserrat;font-size:.9em;border-radius:2px;margin:2px 0;padding:3px 10px 2px 10px;line-height:1.25;color:#9fb4be}:host>tabs>ul li:hover{background-color:rgba(255,255,255,0.1);color:#ffffff}:host>tabs>ul li.active{background-color:#ffffff;color:#263238}:host tabs ul{padding-top:10px}pre{overflow-x:auto;word-break:break-all;word-wrap:break-word;white-space:pre-wrap}\n `],\n directives: [SchemaSample, Tabs, Tab],\n inputs: ['bodySchemaPtr'],\n pipes: [PrismPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@Reflect.metadata('parameters', [[SchemaManager], [new ViewChildren(Tabs), QueryList], [ChangeDetectorRef]])\nexport default class RequestSamples extends BaseComponent {\n constructor(schemaMgr, tabs, changeDetector) {\n super(schemaMgr);\n tabs.changes.subscribe(_ => {\n this.tabs = tabs.first;\n this.subscribeForEvents(_);\n });\n this.changeDetector = changeDetector;\n }\n\n changeLangNotify(lang) {\n redocEvents.samplesLanguageChanged.next(lang);\n }\n\n subscribeForEvents() {\n if (!this.tabs) return;\n redocEvents.samplesLanguageChanged.subscribe((sampleLang) => {\n this.tabs.selectyByTitle(sampleLang);\n this.changeDetector.markForCheck();\n });\n }\n\n prepareModel() {\n this.data = {};\n this.data.bodySchemaPtr = JsonPointer.join(this.bodySchemaPtr, 'schema');\n this.data.samples = this.componentSchema['x-code-samples'] || [];\n }\n}\n","'use strict';\n\nimport {JsonPointer} from '../../utils/JsonPointer';\nimport {RedocComponent, BaseComponent} from '../base';\n\nimport ParamsList from '../ParamsList/params-list';\nimport ResponsesList from '../ResponsesList/responses-list';\nimport ResponsesSamples from '../ResponsesSamples/responses-samples';\nimport SchemaSample from '../SchemaSample/schema-sample';\nimport RequestSamples from '../RequestSamples/request-samples';\n\n@RedocComponent({\n selector: 'method',\n template: `\n <div class=\"method\">\n <div class=\"method-content\">\n <h2 class=\"method-header sharable-header\">\n <a class=\"share-link\" href=\"#{{data.methodAnchor}}\"></a>{{data.methodInfo.summary}}\n </h2>\n <div class=\"method-tags\" *ngIf=\"data.methodInfo.tags.length\">\n <a *ngFor=\"let tag of data.methodInfo.tags\" attr.href=\"#{{tag}}\"> {{tag}} </a>\n </div>\n <p *ngIf=\"data.methodInfo.description\" class=\"method-description\"\n innerHtml=\"{{data.methodInfo.description | marked}}\">\n </p>\n <params-list pointer=\"{{pointer}}/parameters\"> </params-list>\n <responses-list pointer=\"{{pointer}}/responses\"> </responses-list>\n </div>\n <div class=\"method-samples\">\n <h5>Definition</h5>\n <span class=\"method-endpoint\">\n <h5 class=\"http-method\" [ngClass]=\"data.httpMethod\">{{data.httpMethod}}</h5>\n <span class=\"api-url\">{{data.apiUrl}}</span> <span class=\"path\">{{data.path}}</span>\n </span>\n <div *ngIf=\"data.bodyParam\">\n <br>\n <request-samples [pointer]=\"pointer\" [bodySchemaPtr]=\"data.bodyParam._pointer\">\n </request-samples>\n </div>\n <div>\n <br>\n <responses-samples pointer=\"{{pointer}}/responses\"> </responses-samples>\n </div>\n </div>\n <div>\n `,\n styles: [`\n .share-link{cursor:pointer;margin-left:-15px;padding:0;line-height:1;width:15px;display:inline-block}.share-link:before{content:\"\";width:15px;height:15px;background-size:contain;background-image:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==\");opacity:0.5;visibility:hidden;display:inline-block;vertical-align:middle}.sharable-header{color:#263238}.sharable-header:hover .share-link:before,.share-link:hover:before{visibility:visible}:host{padding-bottom:100px;display:block;border-bottom:1px solid rgba(127,127,127,0.25)}responses-list,params-list{display:block}.method-header{margin-bottom:.9em}.method-endpoint{margin:0 0 2em 0;padding:10px 20px;border-radius:4px;background-color:#222d32;display:block;font-weight:300}.method-endpoint>h5{padding-top:1px;padding-bottom:0;margin:0;font-size:.8em;color:#263238;vertical-align:middle;display:inline-block;border-radius:2px}.api-url{color:rgba(255,255,255,0.8);margin-left:10px;margin-top:2px;position:relative;top:1px;font-family:Montserrat,sans-serif;font-size:0.929em !important}.path{font-family:Montserrat,sans-serif;position:relative;top:1px;color:#ffffff;font-size:0.929em !important}.method-tags{margin-top:20px}.method-tags a{font-size:16px;color:#999;display:inline-block;padding:0 0.5em;text-decoration:none}.method-tags a:before{content:'#';margin-right:-0.4em}.method-tags a:first-of-type{padding:0}.method-content,.method-samples{display:block;box-sizing:border-box;float:left}.method-content{width:60%;padding:40px}.method-samples{color:#fafbfc;width:40%;padding:40px;background:#263238}responses-samples{display:block}.method-samples header,.method-samples>h5{color:#9fb4be;text-transform:uppercase}.method-samples>h5{margin-bottom:8px}.method-samples schema-sample{display:block}.method:after{content:\"\";display:table;clear:both}.method-description{padding:6px 0 10px 0;margin:0}.http-method{color:#263238;background:#ffffff;padding:3px 10px;text-transform:uppercase}@media (max-width: 1100px){.methods:before{display:none}.method-samples,.method-content{width:100%}.method-samples{margin-top:2em}:host{padding-bottom:0}}\n `],\n directives: [ParamsList, ResponsesList, ResponsesSamples, SchemaSample, RequestSamples],\n inputs: ['tag']\n})\nexport default class Method extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n this.data.apiUrl = this.schemaMgr.apiUrl;\n this.data.httpMethod = JsonPointer.baseName(this.pointer);\n this.data.path = JsonPointer.baseName(this.pointer, 2);\n this.data.methodInfo = this.componentSchema;\n this.data.methodInfo.tags = this.filterMainTags(this.data.methodInfo.tags);\n this.data.bodyParam = this.findBodyParam();\n if (this.componentSchema.operationId) {\n this.data.methodAnchor = 'operation/' + encodeURIComponent(this.componentSchema.operationId);\n } else {\n this.data.methodAnchor = 'tag/' + encodeURIComponent(this.tag + this.pointer);\n }\n }\n\n filterMainTags(tags) {\n var tagsMap = this.schemaMgr.getTagsMap();\n if (!tags) return [];\n return tags.filter(tag => tagsMap[tag] && tagsMap[tag]['x-traitTag']);\n }\n\n findBodyParam() {\n let pathParams = this.schemaMgr.getMethodParams(this.pointer, true);\n let bodyParam = pathParams.find(param => param.in === 'body');\n return bodyParam;\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\nimport Method from '../Method/method';\nimport {EncodeURIComponentPipe} from '../../utils/pipes';\n\n@RedocComponent({\n selector: 'methods-list',\n template: `\n <div class=\"methods\">\n <div class=\"tag\" *ngFor=\"let tag of data.tags\">\n <div class=\"tag-info\" [attr.tag]=\"tag.name\">\n <h1 class=\"sharable-header\"> <a class=\"share-link\" href=\"#tag/{{tag.name | encodeURIComponent}}\"></a>{{tag.name}} </h1>\n <p *ngIf=\"tag.description\" innerHtml=\"{{ tag.description | marked }}\"> </p>\n </div>\n <method *ngFor=\"let method of tag.methods\" [pointer]=\"method.pointer\" [attr.pointer]=\"method.pointer\"\n [attr.tag]=\"method.tag\" [tag]=\"method.tag\" [attr.operation-id]=\"method.operationId\"></method>\n </div>\n </div>\n `,\n styles: [`\n .share-link{cursor:pointer;margin-left:-15px;padding:0;line-height:1;width:15px;display:inline-block}.share-link:before{content:\"\";width:15px;height:15px;background-size:contain;background-image:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==\");opacity:0.5;visibility:hidden;display:inline-block;vertical-align:middle}.sharable-header{color:#263238}.sharable-header:hover .share-link:before,.share-link:hover:before{visibility:visible}.tag-info{padding:40px;box-sizing:border-box;background-color:white;width:60%}@media (max-width: 1100px){.tag-info{width:100%}}.tag-info:after,.tag-info:before{content:\"\";display:table}.tag-info h1{color:#0033a0;text-transform:capitalize;font-weight:normal}.methods{display:block;position:relative}\n `],\n directives: [Method],\n pipes: [EncodeURIComponentPipe]\n})\nexport default class MethodsList extends BaseComponent {\n\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n // follow SwaggerUI behavior for cases when one method has more than one tag:\n // duplicate methods\n\n let menuStructure = this.schemaMgr.buildMenuTree();\n let tags = Array.from(menuStructure.entries())\n .map((entry) => {\n let [tag, {description, methods}] = entry;\n // inject tag name into method info\n methods = methods || [];\n methods.forEach(method => {\n method.tag = tag;\n });\n return {\n name: tag,\n description: description,\n methods: methods\n };\n });\n this.data.tags = tags;\n // TODO: check $ref field\n }\n}\n","'use strict';\n\nimport {Directive, ElementRef} from 'angular2/core';\nimport {BrowserDomAdapter} from 'angular2/platform/browser';\n\n@Directive({\n selector: '[sticky-sidebar]',\n inputs: ['scrollParent', 'scrollYOffset']\n})\n@Reflect.metadata('parameters', [[ElementRef], [BrowserDomAdapter]])\nexport default class StickySidebar {\n constructor(elementRef, dom) {\n this.$element = elementRef.nativeElement;\n this.dom = dom;\n\n // initial styling\n this.dom.setStyle(this.$element, 'position', 'absolute');\n this.dom.setStyle(this.$element, 'top', '0');\n this.dom.setStyle(this.$element, 'bottom', '0');\n this.dom.setStyle(this.$element, 'max-height', '100%');\n }\n\n bind() {\n this.cancelScrollBinding = this.dom.onAndCancel(this.scrollParent, 'scroll', () => { this.updatePosition(); });\n this.updatePosition();\n }\n\n unbind() {\n this.cancelScrollBinding && this.cancelScrollBinding();\n }\n\n updatePosition() {\n if ( this.scrollY + this.scrollYOffset() >= this.$redocEl.offsetTop) {\n this.stick();\n } else {\n this.unstick();\n }\n }\n\n stick() {\n this.dom.setStyle(this.$element, 'position', 'fixed');\n this.dom.setStyle(this.$element, 'top', this.scrollYOffset() + 'px');\n }\n\n unstick() {\n this.dom.setStyle(this.$element, 'position', 'absolute');\n this.dom.setStyle(this.$element, 'top', 0);\n }\n\n get scrollY() {\n return (this.scrollParent.pageYOffset != null) ? this.scrollParent.pageYOffset : this.scrollParent.scrollTop;\n }\n\n ngOnInit() {\n // FIXME use more reliable code\n this.$redocEl = this.$element.offsetParent;\n this.bind();\n }\n\n ngOnDestroy() {\n this.unbind();\n }\n}\n","'use strict';\n\nimport {ChangeDetectionStrategy, provide, enableProdMode} from 'angular2/core';\nimport {ElementRef} from 'angular2/core';\nimport {BrowserDomAdapter, bootstrap} from 'angular2/platform/browser';\nimport detectScollParent from 'scrollparent';\nimport {RedocComponent, BaseComponent} from '../base';\nimport SchemaManager from '../../utils/SchemaManager';\n\nimport ApiInfo from '../ApiInfo/api-info';\nimport ApiLogo from '../ApiLogo/api-logo';\nimport MethodsList from '../MethodsList/methods-list';\nimport SideMenu from '../SideMenu/side-menu';\nimport StickySidebar from '../../common/components/StickySidebar/sticky-sidebar';\nimport OptionsManager from '../../options';\nimport {redocEvents} from '../../events';\n\nimport './redoc-loading-styles.css!css';\n\nvar dom = new BrowserDomAdapter();\nvar _modeLocked = false;\n\n@RedocComponent({\n selector: 'redoc',\n providers: [\n SchemaManager,\n BrowserDomAdapter\n ],\n template: `\n <div class=\"redoc-wrap\">\n <div class=\"menu-content\" sticky-sidebar [scrollParent]=\"options.$scrollParent\" [scrollYOffset]=\"options.scrollYOffset\">\n <api-logo> </api-logo>\n <side-menu> </side-menu>\n </div>\n <div id=\"api-content\">\n <api-info> </api-info>\n <methods-list> </methods-list>\n <footer>\n <div class=\"powered-by-badge\">\n <a href=\"https://github.com/Rebilly/ReDoc\" title=\"Swagger-generated API Reference Documentation\" target=\"_blank\">\n Powered by <strong>ReDoc</strong>\n </a>\n </div>\n </footer>\n </div>\n </div>\n `,\n styles: [`\n :host{display:block;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-o-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;-webkit-osx-font-smoothing:grayscale;-moz-osx-font-smoothing:grayscale;osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-text-shadow:1px 1px 1px rgba(0,0,0,0.004);-ms-text-shadow:1px 1px 1px rgba(0,0,0,0.004);text-shadow:1px 1px 1px rgba(0,0,0,0.004);text-rendering:optimizeSpeed !important;font-smooth:always;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}.redoc-wrap{position:relative;font-family:Roboto,sans-serif;font-size:14px;line-height:1.55em;color:#263238}side-menu{display:block;box-sizing:border-box}methods-list{display:block;overflow:hidden}api-info,.side-bar{display:block;padding:10px 0}api-info{padding:40px}api-logo{display:block;text-align:center}@media (max-width: 1000px){api-logo{display:none}}[sticky-sidebar]{width:260px;background-color:#FAFAFA;overflow-y:auto;overflow-x:hidden}@media (max-width: 1000px){[sticky-sidebar]{z-index:1;width:100%;bottom:auto !important}}#api-content{margin-left:260px;position:relative}@media (max-width: 1000px){#api-content{padding-top:3em;margin-left:0}}#api-content:before{content:\"\";background:#263238;height:100%;width:40%;top:0;right:0;position:absolute;z-index:-1}@media (max-width: 1100px){#api-content:before{display:none}}:host h1{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h2{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h3{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h4{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h5{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h1{font-size:1.85714em}:host h2{font-size:1.57143em}:host h3{font-size:1.28571em}:host h4{font-size:1.14286em}:host h5{font-size:0.929em}:host p{font-family:Roboto,sans-serif;font-weight:300;margin:0;margin-bottom:1em;line-height:1.55em}:host a{text-decoration:none;color:#0033a0}:host p>code{color:#e53935;border:1px solid rgba(38,50,56,0.1)}footer{text-align:right;padding:10px;font-size:15px;background-color:white}footer strong{font-size:18px;color:#0033a0}:host .redoc-markdown-block pre{font-family:Courier, monospace;white-space:pre-wrap;background-color:rgba(38,50,56,0.04);padding:12px 14px 15px 14px;overflow-x:auto;line-height:normal;border-radius:2px;border:1px solid rgba(38,50,56,0.1)}:host .redoc-markdown-block pre code{background-color:transparent}:host .redoc-markdown-block pre code:before,:host .redoc-markdown-block pre code:after{content:none}:host .redoc-markdown-block code{font-family:Courier, monospace;background-color:rgba(38,50,56,0.04);padding:0.1em 0 0.2em 0;font-size:1em;border-radius:2px}:host .redoc-markdown-block code:before,:host .redoc-markdown-block code:after{letter-spacing:-0.2em;content:\"\\\\00a0\"}:host .redoc-markdown-block p:last-of-type{margin-bottom:0}:host .redoc-markdown-block blockquote{margin:0;margin-bottom:1em;padding:0 15px;color:#777;border-left:4px solid #ddd}:host .redoc-markdown-block img{max-width:100%;box-sizing:content-box}:host .redoc-markdown-block ul,:host .redoc-markdown-block ol{padding-left:2em;margin:0;margin-bottom:1em}:host .redoc-markdown-block table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all;border-collapse:collapse;border-spacing:0;margin-top:0.5em;margin-bottom:0.5em}:host .redoc-markdown-block table tr{background-color:#fff;border-top:1px solid #ccc}:host .redoc-markdown-block table tr:nth-child(2n){background-color:#f8f8f8}:host .redoc-markdown-block table th,:host .redoc-markdown-block table td{padding:6px 13px;border:1px solid #ddd}:host .redoc-markdown-block table th{text-align:left;font-weight:bold}\n `],\n directives: [ApiInfo, ApiLogo, MethodsList, SideMenu, StickySidebar],\n changeDetection: ChangeDetectionStrategy.Default\n})\n@Reflect.metadata('parameters', [\n [SchemaManager], [OptionsManager], [ElementRef]])\nexport default class Redoc extends BaseComponent {\n constructor(schemaMgr, optionsMgr, elementRef) {\n super(schemaMgr);\n this.element = elementRef.nativeElement;\n //parse options (top level component doesn't support inputs)\n optionsMgr.parseOptions( this.element );\n optionsMgr.options.$scrollParent = detectScollParent( this.element );\n this.options = optionsMgr.options;\n }\n\n static showLoadingAnimation() {\n let elem = dom.query('redoc');\n dom.addClass(elem, 'loading');\n }\n\n static hideLoadingAnimation() {\n let redocEl = dom.query('redoc');\n dom.addClass(redocEl, 'loading-remove');\n setTimeout(() => {\n dom.removeClass(redocEl, 'loading-remove');\n dom.removeClass(redocEl, 'loading');\n }, 400);\n }\n\n static init(specUrl, options) {\n var optionsMgr = new OptionsManager();\n optionsMgr.options = options;\n optionsMgr.options.specUrl = optionsMgr.options.specUrl || specUrl;\n var providers = [\n provide(OptionsManager, {useValue: optionsMgr})\n ];\n\n if (Redoc.appRef) {\n Redoc.destroy();\n }\n Redoc.showLoadingAnimation();\n return SchemaManager.instance().load(specUrl)\n .then(() => {\n if (!_modeLocked && !optionsMgr.options.debugMode) {\n enableProdMode();\n _modeLocked = true;\n }\n return bootstrap(Redoc, providers);\n })\n .then(\n (appRef) => {\n Redoc.hideLoadingAnimation();\n Redoc.appRef = appRef;\n // setTimeout to allow cached elements to init\n setTimeout(() => redocEvents.bootstrapped.next());\n console.log('ReDoc bootstrapped!');\n },\n error => {\n console.log(error);\n throw error;\n }\n );\n }\n\n static autoInit() {\n const specUrlAttributeName = 'spec-url';\n let redocEl = dom.query('redoc');\n if (!redocEl) return;\n if (dom.hasAttribute(redocEl, specUrlAttributeName)) {\n let url = dom.getAttribute(redocEl, specUrlAttributeName);\n Redoc.init(url);\n }\n }\n\n static destroy() {\n let el = dom.query('redoc');\n let elClone;\n let parent;\n let nextSibling;\n if (el) {\n parent = el.parentElement;\n nextSibling = el.nextElementSibling;\n }\n\n elClone = el.cloneNode(false);\n\n if (Redoc.appRef) {\n Redoc.appRef.destroy();\n Redoc.appRef = null;\n\n // Redoc destroy removes host element, so need to restore it\n elClone.innerHTML = 'Loading...';\n parent && parent.insertBefore(elClone, nextSibling);\n }\n }\n}\n","'use strict';\n\nimport {Component, ElementRef, ViewContainerRef} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\nimport {DynamicComponentLoader} from 'angular2/src/core/linker/dynamic_component_loader';\n\nimport JsonSchema from './json-schema';\nimport OptionsManager from '../../options';\nimport SchemaManager from '../../utils/SchemaManager';\n\n\nvar cache = {};\n\n\n@Component({\n selector: 'json-schema-lazy',\n inputs: ['pointer', 'auto', 'skipReadOnly'],\n template: '',\n directives: [CORE_DIRECTIVES]\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ViewContainerRef], [ElementRef], [DynamicComponentLoader], [OptionsManager]])\nexport default class JsonSchemaLazy {\n\n constructor(schemaMgr, viewRef, elementRef, dcl, optionsMgr) {\n this.viewRef = viewRef;\n this.elementRef = elementRef;\n this.dcl = dcl;\n this.optionsMgr = optionsMgr;\n this.schemaMgr = schemaMgr;\n }\n\n normalizePointer() {\n let schema = this.schemaMgr.byPointer(this.pointer);\n return schema && schema.$ref || this.pointer;\n }\n\n load() {\n if (this.optionsMgr.options.disableLazySchemas) return;\n if (this.loaded) return;\n if (this.pointer) {\n this.dcl.loadNextToLocation(JsonSchema, this.viewRef).then((compRef) => {\n this.initComponent(compRef);\n // trigger change detection\n compRef.hostView.changeDetectorRef.detectChanges();\n });\n }\n this.loaded = true;\n }\n\n // cache JsonSchema view\n loadCached() {\n this.pointer = this.normalizePointer(this.pointer);\n if (cache[this.pointer]) {\n cache[this.pointer].then((compRef) => {\n setTimeout( ()=> {\n let $element = compRef.location.nativeElement;\n\n // skip caching view with tabs inside (discriminator) as it needs attached controller\n // FIXME: get rid of dependency on selector\n if ($element.querySelector('.discriminator-wrap')) {\n this.dcl.loadNextToLocation(JsonSchema, this.viewRef).then((compRef) => {\n this.initComponent(compRef);\n compRef.hostView.changeDetectorRef.detectChanges();\n });\n return;\n }\n insertAfter($element.cloneNode(true), this.elementRef.nativeElement);\n } );\n });\n } else {\n cache[this.pointer] = this.dcl.loadNextToLocation(JsonSchema, this.viewRef).then((compRef) => {\n this.initComponent(compRef);\n compRef.hostView.changeDetectorRef.detectChanges();\n return compRef;\n });\n }\n }\n\n initComponent(compRef) {\n compRef.instance.pointer = this.pointer;\n compRef.instance.skipReadOnly = this.skipReadOnly;\n }\n\n ngAfterViewInit() {\n if (!this.auto) return;\n this.loadCached();\n }\n\n ngOnDestroy() {\n // clear cache\n cache = {};\n }\n}\n\nfunction insertAfter(newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n}\n","'use strict';\n\nimport {Component, EventEmitter} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\n\n@Component({\n selector: 'zippy',\n events: ['open', 'close'],\n inputs: ['title', 'visible', 'type', 'empty'],\n template: `\n <div class=\"zippy zippy-{{type}}\" [ngClass]=\"{'zippy-empty': empty}\">\n <div class=\"zippy-title\" (click)=\"toggle()\">\n <span class=\"zippy-indicator\">{{ visible ? '▾' : '▸' }}</span>\n {{title}}\n </div>\n <div class=\"zippy-content\" [ngClass]=\"{'zippy-hidden': !visible}\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n styles: [`\n .zippy-title{padding:10px;border-radius:2px;margin:2px 0;line-height:1.5em;background-color:#f2f2f2;cursor:pointer}.zippy-success>.zippy-title{color:#00aa13;background-color:rgba(0,170,19,0.08)}.zippy-error>.zippy-title{color:#e53935;background-color:rgba(229,57,53,0.06)}.zippy-redirect>.zippy-title{color:#263238;background-color:rgba(38,50,56,0.08)}.zippy-info>.zippy-title{color:#0033a0;background-color:rgba(0,51,160,0.08)}span.zippy-indicator{font-size:1.2em;margin-right:0.2em;position:relative;top:0}.zippy-content{padding:15px 0}.zippy-empty .zippy-title{cursor:default}.zippy-empty .zippy-indicator{display:none}.zippy-empty .zippy-content{display:none}.zippy-hidden{overflow:hidden;visibility:hidden;height:0;padding:0}\n `],\n directives: [CORE_DIRECTIVES]\n})\nexport default class Zippy {\n\n constructor() {\n this.type = 'general';\n this.visible = false;\n this.empty = false;\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n }\n\n toggle() {\n this.visible = !this.visible;\n if (this.empty) return;\n (this.visible) ? this.open.next() : this.close.next();\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport JsonPointer from '../../utils/JsonPointer';\nimport JsonSchema from '../JsonSchema/json-schema';\nimport JsonSchemaLazy from '../JsonSchema/json-schema-lazy';\nimport Zippy from '../../common/components/Zippy/zippy';\nimport {statusCodeType} from '../../utils/helpers';\nimport OptionsManager from '../../options';\n\nfunction isNumeric(n) {\n return (!isNaN(parseFloat(n)) && isFinite(n));\n}\n\n@RedocComponent({\n selector: 'responses-list',\n template: `\n <h2 class=\"responses-list-header\" *ngIf=\"data.responses.length\"> Responses </h2>\n <zippy *ngFor=\"let response of data.responses\" title=\"{{response.code}} {{response.description}}\"\n [type]=\"response.type\" [empty]=\"response.empty\" (open)=\"lazySchema.load()\">\n <div *ngIf=\"response.headers\" class=\"response-headers\">\n <header>\n Headers\n </header>\n <div class=\"header\" *ngFor=\"let header of response.headers\">\n <div class=\"header-name\"> {{header.name}} </div>\n <div class=\"header-type\"> {{header.type}} </div>\n <div class=\"header-description\" innerHtml=\"{{header.description | marked}}\"> </div>\n </div>\n </div>\n <json-schema *ngIf=\"response.schema && options.disableLazySchemas\" class=\"schema type\" pointer=\"{{response.pointer}}/schema\">\n </json-schema>\n <json-schema-lazy #lazySchema pointer=\"{{response.schema ? response.pointer + '/schema' : null}}\">\n </json-schema-lazy>\n </zippy>\n `,\n styles: [`\n .responses-list-header{font-size:18px;padding:0.2em 0;margin:3em 0 1.1em 0;color:#253137;font-weight:normal}:host .zippy-title{font-family:Montserrat,sans-serif}.header-name{font-weight:bold;display:inline-block}.header-type{display:inline-block;font-weight:bold;color:#999}header{font-size:14px;font-weight:bold;text-transform:uppercase;margin-bottom:15px}.header{margin-bottom:10px}\n `],\n directives: [JsonSchema, Zippy, JsonSchemaLazy]\n})\n@Reflect.metadata('parameters', [[SchemaManager], [OptionsManager]])\nexport default class ResponsesList extends BaseComponent {\n constructor(schemaMgr, optionsMgr) {\n super(schemaMgr);\n this.options = optionsMgr.options;\n }\n\n prepareModel() {\n this.data = {};\n this.data.responses = [];\n\n let responses = this.componentSchema;\n if (!responses) return;\n\n responses = Object.keys(responses).filter(respCode => {\n // only response-codes and \"default\"\n return ( isNumeric(respCode) || (respCode === 'default'));\n }).map(respCode => {\n let resp = responses[respCode];\n resp.pointer = JsonPointer.join(this.pointer, respCode);\n if (resp.$ref) {\n let ref = resp.$ref;\n resp = this.schemaMgr.byPointer(resp.$ref);\n resp.pointer = ref;\n }\n\n resp.empty = !resp.schema;\n resp.code = respCode;\n resp.type = statusCodeType(resp.code);\n if (resp.headers) {\n resp.headers = Object.keys(resp.headers).map((k) => {\n let respInfo = resp.headers[k];\n respInfo.name = k;\n return respInfo;\n });\n resp.empty = false;\n }\n resp.extendable = resp.headers || resp.length;\n return resp;\n });\n this.data.responses = responses;\n }\n}\n","'use strict';\n\nimport {Component, EventEmitter} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\n\n@Component({\n selector: 'tabs',\n events: ['change'],\n template: `\n <ul>\n <li *ngFor=\"let tab of tabs\" [ngClass]=\"{active: tab.active}\" (click)=\"selectTab(tab)\"\n class=\"tab-{{tab.tabStatus}}\">{{tab.tabTitle}}</li>\n </ul>\n <ng-content></ng-content>\n `,\n directives: [CORE_DIRECTIVES],\n styles: [`\n ul{display:block;margin:0;padding:0}li{list-style:none;display:inline-block;cursor:pointer}.tab-success:before,.tab-error:before,.tab-redirect:before,.tab-info:before{content:\"\";display:inline-block;position:relative;top:-2px;height:4px;width:4px;border-radius:50%;margin-right:0.5em}.tab-success:before{box-shadow:0 0 3px 0 #00aa13;background-color:#00aa13}.tab-error:before{box-shadow:0 0 3px 0 #e53935;background-color:#e53935}.tab-redirect:before{box-shadow:0 0 3px 0 #f1c400;background-color:#f1c400}.tab-info:before{box-shadow:0 0 3px 0 #0033a0;background-color:#0033a0}\n `]\n})\nexport class Tabs {\n constructor() {\n this.tabs = [];\n this.change = new EventEmitter();\n }\n\n selectTab(tab, notify = true) {\n if (tab.active) return;\n this.tabs.forEach((tab) => {\n tab.active = false;\n });\n tab.active = true;\n notify && this.change.next(tab.tabTitle);\n }\n\n selectyByTitle(tabTitle, notify = false) {\n let prevActive;\n let newActive;\n this.tabs.forEach((tab) => {\n if (tab.active) prevActive = tab;\n tab.active = false;\n if (tab.tabTitle === tabTitle) {\n newActive = tab;\n }\n });\n if (newActive) {\n newActive.active = true;\n } else {\n prevActive.active = true;\n }\n notify && this.change.next(tabTitle);\n }\n\n addTab(tab) {\n if (this.tabs.length === 0) {\n tab.active = true;\n }\n this.tabs.push(tab);\n }\n}\n\n@Component({\n selector: 'tab',\n inputs: ['tabTitle', 'tabStatus'],\n template: `\n <div class=\"tab-wrap\" [ngClass]=\"{'active': active}\">\n <ng-content></ng-content>\n </div>\n `,\n directives: [CORE_DIRECTIVES],\n styles: [`\n .tab-wrap {\n display: none;\n }\n\n .tab-wrap.active {\n display: block;\n }`\n ]\n})\n@Reflect.metadata('parameters', [ [Tabs] ])\nexport class Tab {\n constructor(tabs) {\n this.active = false;\n tabs.addTab(this);\n }\n}\n","'use strict';\n\nexport function statusCodeType(statusCode) {\n if (statusCode < 100 || statusCode > 599) {\n throw new Error('invalid HTTP code');\n }\n let res = 'success';\n if (statusCode >= 300 && statusCode < 400) {\n res = 'redirect';\n } else if (statusCode >= 400) {\n res = 'error';\n } else if (statusCode < 200) {\n res = 'info';\n }\n return res;\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\nimport JsonPointer from '../../utils/JsonPointer';\nimport {Tabs, Tab} from '../../common/components/Tabs/tabs';\nimport SchemaSample from '../SchemaSample/schema-sample';\nimport {statusCodeType} from '../../utils/helpers';\n\n\nfunction isNumeric(n) {\n return (!isNaN(parseFloat(n)) && isFinite(n));\n}\n\nfunction hasExample(response) {\n return ((response.examples && response.examples['application/json']) ||\n response.schema);\n}\n\n@RedocComponent({\n selector: 'responses-samples',\n template: `\n <header *ngIf=\"data.responses.length\"> Response samples </header>\n <tabs *ngIf=\"data.responses.length\">\n <tab *ngFor=\"let response of data.responses\" tabTitle=\"{{response.code}} {{response.description}}\"\n [tabStatus]=\"response.type\">\n <schema-sample [pointer]=\"response.pointer\"></schema-sample>\n </tab>\n </tabs>\n `,\n styles: [`\n tab,tabs{display:block}schema-sample{display:block}header{font-family:Montserrat;font-size:0.929em;text-transform:uppercase;margin:0;color:#9fb4be;text-transform:uppercase;font-weight:normal}:host>tabs>ul li{font-family:Montserrat;font-size:0.929em;border-radius:2px;margin:2px 0;padding:2px 8px 3px 8px;color:#9fb4be;line-height:1.25}:host>tabs>ul li:hover{color:#ffffff;background-color:rgba(255,255,255,0.1)}:host>tabs>ul li.active{background-color:white;color:#263238}:host tabs ul{padding-top:10px}\n `],\n directives: [SchemaSample, Tabs, Tab]\n})\nexport default class ResponsesSamples extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n this.data.responses = [];\n\n let responses = this.componentSchema;\n if (!responses) return;\n\n responses = Object.keys(responses).filter(respCode => {\n // only response-codes and \"default\"\n return ( isNumeric(respCode) || (respCode === 'default'));\n }).map(respCode => {\n let resp = responses[respCode];\n resp.pointer = JsonPointer.join(this.pointer, respCode);\n if (resp.$ref) {\n let ref = resp.$ref;\n resp = this.schemaMgr.byPointer(resp.$ref);\n resp.pointer = ref;\n }\n\n resp.code = respCode;\n resp.type = statusCodeType(resp.code);\n return resp;\n })\n .filter(response => hasExample(response));\n this.data.responses = responses;\n }\n}\n","/* */ \n'use strict';\n\n// The JSON Object that defines the default values of certain types.\nvar typesInstantiator = {\n 'string': '',\n 'number': 0,\n 'integer': 0,\n 'null': null,\n 'boolean': false, // Always stay positive?\n 'object': { }\n};\n\n/**\n * Checks whether a variable is a primitive.\n * @param obj - an object.\n * @returns {boolean}\n */\nfunction isPrimitive(obj) {\n var type = obj.type;\n\n return typesInstantiator[type] !== undefined;\n}\n\n/**\n * Instantiate a primitive.\n * @param val - The object that represents the primitive.\n * @returns {*}\n */\nfunction instantiatePrimitive(val) {\n var type = val.type;\n\n // Support for default values in the JSON Schema.\n if (val.default) {\n return val.default;\n }\n\n return typesInstantiator[type];\n}\n\n/**\n * The main function.\n * Calls sub-objects recursively, depth first, using the sub-function 'visit'.\n * @param schema - The schema to instantiate.\n * @returns {*}\n */\nfunction instantiate(schema) {\n\n /**\n * Visits each sub-object using recursion.\n * If it reaches a primitive, instantiate it.\n * @param obj - The object that represents the schema.\n * @param name - The name of the current object.\n * @param data - The instance data that represents the current object.\n */\n function visit(obj, name, data) {\n if (!obj) {\n return;\n }\n var i;\n var type = obj.type;\n // We want non-primitives objects (primitive === object w/o properties).\n if (type === 'object' && obj.properties) {\n data[name] = data[name] || { };\n\n // Visit each property.\n for (var property in obj.properties) {\n if (obj.properties.hasOwnProperty(property)) {\n visit(obj.properties[property], property, data[name]);\n }\n }\n } else if (obj.allOf) {\n for (i = 0; i < obj.allOf.length; i++) {\n visit(obj.allOf[i], name, data);\n }\n } else if (type === 'array') {\n data[name] = [];\n var len = 1;\n if (obj.minItems || obj.minItems === 0) {\n len = obj.minItems;\n }\n\n // Instantiate 'len' items.\n for (i = 0; i < len; i++) {\n visit(obj.items, i, data[name]);\n }\n\n } else if (isPrimitive(obj)) {\n data[name] = instantiatePrimitive(obj);\n }\n }\n\n var data = {};\n visit(schema, 'kek', data);\n return data['kek'];\n}\n\n// If we're using Node.js, export the module.\nif (typeof module !== 'undefined') {\n module.exports = {\n instantiate: instantiate\n };\n}\n","/* */ \nmodule.exports = require('./src/instantiator');\n","module.exports = require(\"npm:json-schema-instantiator@0.3.0/index.js\");","'use strict';\nimport {Pipe} from 'angular2/core';\nimport {isBlank} from 'angular2/src/facade/lang';\n\nvar level = 1;\nconst COLLAPSE_LEVEL = 2;\n\n@Pipe({ name: 'jsonFormatter' })\nexport class JsonFormatter {\n transform(value) {\n if (isBlank(value)) return value;\n return jsonToHTML(value);\n }\n}\n\nfunction htmlEncode(t) {\n return t != null ? t.toString().replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>') : '';\n}\n\nfunction decorateWithSpan(value, className) {\n return '<span class=\"' + className + '\">' + htmlEncode(value) + '</span>';\n}\n\nfunction valueToHTML(value) {\n var valueType = typeof value, output = '';\n if (value == null) {\n output += decorateWithSpan('null', 'type-null');\n }\n else if (value && value.constructor === Array) {\n level++;\n output += arrayToHTML(value);\n level--;\n }\n else if (valueType === 'object') {\n level++;\n output += objectToHTML(value);\n level--;\n }\n else if (valueType === 'number') {\n output += decorateWithSpan(value, 'type-number');\n }\n else if (valueType === 'string') {\n if (/^(http|https):\\/\\/[^\\\\s]+$/.test(value)) {\n output += decorateWithSpan('\"', 'type-string') + '<a href=\"' + value + '\">' + htmlEncode(value) + '</a>' + decorateWithSpan('\"', 'type-string');\n } else {\n output += decorateWithSpan('\"' + value + '\"', 'type-string');\n }\n } else if (valueType === 'boolean') {\n output += decorateWithSpan(value, 'type-boolean');\n }\n\n return output;\n}\n\nfunction arrayToHTML(json) {\n var collapsed = level > COLLAPSE_LEVEL ? 'collapsed' : '';\n var i, length;\n var output = '<div class=\"collapser\"></div>[<span class=\"ellipsis\"></span><ul class=\"array collapsible\">';\n var hasContents = false;\n for (i = 0, length = json.length; i < length; i++) {\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += valueToHTML(json[i]);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += '</ul>]';\n if (!hasContents) {\n output = '[ ]';\n }\n return output;\n}\n\nfunction objectToHTML(json) {\n var collapsed = level > COLLAPSE_LEVEL ? 'collapsed' : '';\n var i, key, length, keys = Object.keys(json);\n var output = '<div class=\"collapser\"></div>{<span class=\"ellipsis\"></span><ul class=\"obj collapsible\">';\n var hasContents = false;\n for (i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += '<span class=\"property\">' + htmlEncode(key) + '</span>: ';\n output += valueToHTML(json[key]);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += '</ul>}';\n if (!hasContents) {\n output = '{ }';\n }\n return output;\n}\n\nfunction jsonToHTML(json) {\n level = 1;\n var output = '';\n output += '<div class=\"redoc-json\">';\n output += valueToHTML(json);\n output += '</div>';\n return output;\n}\n","'use strict';\n\nimport {ElementRef} from 'angular2/core';\n\nimport SchemaSampler from 'json-schema-instantiator';\n\nimport {JsonFormatter} from '../../utils/JsonFormatterPipe';\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\n\n@RedocComponent({\n selector: 'schema-sample',\n template: `\n <div class=\"snippet\">\n <!-- in case sample is not available for some reason -->\n <pre *ngIf=\"data.sample == null\"> Sample unavailable </pre>\n <pre innerHtml=\"{{data.sample | jsonFormatter}}\"></pre>\n </div>\n `,\n pipes: [JsonFormatter],\n styles: [`\n pre{background-color:transparent;padding:0}:host .type-null{color:gray}:host .type-boolean{color:firebrick}:host .type-number{color:#4A8BB3}:host .type-string{color:#66B16E}:host .callback-function{color:gray}:host .collapser:after{content:\"-\";cursor:pointer}:host .collapsed>.collapser:after{content:\"+\";cursor:pointer}:host .ellipsis:after{content:\" … \"}:host .collapsible{margin-left:2em}:host .hoverable{padding-top:1px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-radius:2px}:host .hovered{background-color:#ebeef9}:host .collapser{padding-right:6px;padding-left:6px}:host .redoc-json{padding:20px;border-radius:4px;background-color:#222d32;margin-bottom:36px}:host ul,:host .redoc-json ul{list-style-type:none;padding:0px;margin:0px 0px 0px 26px}:host li{position:relative}:host .hoverable{transition:background-color .2s ease-out 0s;-webkit-transition:background-color .2s ease-out 0s;display:inline-block}:host .hovered{transition-delay:.2s;-webkit-transition-delay:.2s}:host .selected{outline-style:solid;outline-width:1px;outline-style:dotted}:host .collapsed>.collapsible{display:none}:host .ellipsis{display:none}:host .collapsed>.ellipsis{display:inherit}:host .collapser{position:absolute;top:1px;left:-1.5em;cursor:default;user-select:none;-webkit-user-select:none}\n `]\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef]])\nexport default class SchemaSample extends BaseComponent {\n constructor(schemaMgr, elementRef) {\n super(schemaMgr);\n this.element = elementRef.nativeElement;\n }\n\n init() {\n this.data = {};\n\n let base = {};\n let sample;\n\n // got pointer not directly to the schema but e.g. to response obj\n if (this.componentSchema.schema) {\n base = this.componentSchema;\n this.componentSchema = this.componentSchema.schema;\n }\n\n if (base.examples && base.examples['application/json']) {\n sample = base.examples['application/json'];\n } else {\n this.dereference(this.componentSchema);\n sample = SchemaSampler.instantiate(this.componentSchema);\n }\n\n this.data.sample = sample;\n\n\n this.element.addEventListener('click', (event) => {\n var collapsed, target = event.target;\n if (event.target.className === 'collapser') {\n collapsed = target.parentNode.getElementsByClassName('collapsible')[0];\n if (collapsed.parentNode.classList.contains('collapsed')) {\n collapsed.parentNode.classList.remove('collapsed');\n } else {\n collapsed.parentNode.classList.add('collapsed');\n }\n }\n });\n }\n}\n","/* */ \nvar classof = require('./$.classof'),\n ITERATOR = require('./$.wks')('iterator'),\n Iterators = require('./$.iterators');\nmodule.exports = require('./$.core').isIterable = function(it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined || '@@iterator' in O || Iterators.hasOwnProperty(classof(O));\n};\n","/* */ \nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","/* */ \n\"use strict\";\nvar _getIterator = require('../core-js/get-iterator')[\"default\"];\nvar _isIterable = require('../core-js/is-iterable')[\"default\"];\nexports[\"default\"] = (function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = _getIterator(arr),\n _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"])\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n }\n return function(arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (_isIterable(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n})();\nexports.__esModule = true;\n","'use strict';\n\nimport {EventEmitter} from 'angular2/core';\n\nvar bootsrEmmiter = new EventEmitter();\nvar langChanged = new EventEmitter();\nexport var redocEvents = {\n bootstrapped: bootsrEmmiter,\n samplesLanguageChanged: langChanged\n};\n","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar event_manager_1 = require('./event_manager');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar modifierKeys = ['alt', 'control', 'meta', 'shift'];\r\nvar modifierKeyGetters = {\r\n 'alt': function (event) { return event.altKey; },\r\n 'control': function (event) { return event.ctrlKey; },\r\n 'meta': function (event) { return event.metaKey; },\r\n 'shift': function (event) { return event.shiftKey; }\r\n};\r\nvar KeyEventsPlugin = (function (_super) {\r\n __extends(KeyEventsPlugin, _super);\r\n function KeyEventsPlugin() {\r\n _super.call(this);\r\n }\r\n KeyEventsPlugin.prototype.supports = function (eventName) {\r\n return lang_1.isPresent(KeyEventsPlugin.parseEventName(eventName));\r\n };\r\n KeyEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n var parsedEvent = KeyEventsPlugin.parseEventName(eventName);\r\n var outsideHandler = KeyEventsPlugin.eventCallback(element, collection_1.StringMapWrapper.get(parsedEvent, 'fullKey'), handler, this.manager.getZone());\r\n return this.manager.getZone().runOutsideAngular(function () {\r\n return dom_adapter_1.DOM.onAndCancel(element, collection_1.StringMapWrapper.get(parsedEvent, 'domEventName'), outsideHandler);\r\n });\r\n };\r\n KeyEventsPlugin.parseEventName = function (eventName) {\r\n var parts = eventName.toLowerCase().split('.');\r\n var domEventName = parts.shift();\r\n if ((parts.length === 0) ||\r\n !(lang_1.StringWrapper.equals(domEventName, 'keydown') ||\r\n lang_1.StringWrapper.equals(domEventName, 'keyup'))) {\r\n return null;\r\n }\r\n var key = KeyEventsPlugin._normalizeKey(parts.pop());\r\n var fullKey = '';\r\n modifierKeys.forEach(function (modifierName) {\r\n if (collection_1.ListWrapper.contains(parts, modifierName)) {\r\n collection_1.ListWrapper.remove(parts, modifierName);\r\n fullKey += modifierName + '.';\r\n }\r\n });\r\n fullKey += key;\r\n if (parts.length != 0 || key.length === 0) {\r\n // returning null instead of throwing to let another plugin process the event\r\n return null;\r\n }\r\n var result = collection_1.StringMapWrapper.create();\r\n collection_1.StringMapWrapper.set(result, 'domEventName', domEventName);\r\n collection_1.StringMapWrapper.set(result, 'fullKey', fullKey);\r\n return result;\r\n };\r\n KeyEventsPlugin.getEventFullKey = function (event) {\r\n var fullKey = '';\r\n var key = dom_adapter_1.DOM.getEventKey(event);\r\n key = key.toLowerCase();\r\n if (lang_1.StringWrapper.equals(key, ' ')) {\r\n key = 'space'; // for readability\r\n }\r\n else if (lang_1.StringWrapper.equals(key, '.')) {\r\n key = 'dot'; // because '.' is used as a separator in event names\r\n }\r\n modifierKeys.forEach(function (modifierName) {\r\n if (modifierName != key) {\r\n var modifierGetter = collection_1.StringMapWrapper.get(modifierKeyGetters, modifierName);\r\n if (modifierGetter(event)) {\r\n fullKey += modifierName + '.';\r\n }\r\n }\r\n });\r\n fullKey += key;\r\n return fullKey;\r\n };\r\n KeyEventsPlugin.eventCallback = function (element, fullKey, handler, zone) {\r\n return function (event) {\r\n if (lang_1.StringWrapper.equals(KeyEventsPlugin.getEventFullKey(event), fullKey)) {\r\n zone.runGuarded(function () { return handler(event); });\r\n }\r\n };\r\n };\r\n /** @internal */\r\n KeyEventsPlugin._normalizeKey = function (keyName) {\r\n // TODO: switch to a StringMap if the mapping grows too much\r\n switch (keyName) {\r\n case 'esc':\r\n return 'escape';\r\n default:\r\n return keyName;\r\n }\r\n };\r\n KeyEventsPlugin = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], KeyEventsPlugin);\r\n return KeyEventsPlugin;\r\n}(event_manager_1.EventManagerPlugin));\r\nexports.KeyEventsPlugin = KeyEventsPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X2V2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2tleV9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQscUJBTU8sMEJBQTBCLENBQUMsQ0FBQTtBQUNsQywyQkFBNEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RSw4QkFBaUMsaUJBQWlCLENBQUMsQ0FBQTtBQUVuRCxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUVoRCxJQUFJLFlBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZELElBQUksa0JBQWtCLEdBQXVEO0lBQzNFLEtBQUssRUFBRSxVQUFDLEtBQW9CLElBQUssT0FBQSxLQUFLLENBQUMsTUFBTSxFQUFaLENBQVk7SUFDN0MsU0FBUyxFQUFFLFVBQUMsS0FBb0IsSUFBSyxPQUFBLEtBQUssQ0FBQyxPQUFPLEVBQWIsQ0FBYTtJQUNsRCxNQUFNLEVBQUUsVUFBQyxLQUFvQixJQUFLLE9BQUEsS0FBSyxDQUFDLE9BQU8sRUFBYixDQUFhO0lBQy9DLE9BQU8sRUFBRSxVQUFDLEtBQW9CLElBQUssT0FBQSxLQUFLLENBQUMsUUFBUSxFQUFkLENBQWM7Q0FDbEQsQ0FBQztBQUdGO0lBQXFDLG1DQUFrQjtJQUNyRDtRQUFnQixpQkFBTyxDQUFDO0lBQUMsQ0FBQztJQUUxQixrQ0FBUSxHQUFSLFVBQVMsU0FBaUI7UUFDeEIsTUFBTSxDQUFDLGdCQUFTLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCwwQ0FBZ0IsR0FBaEIsVUFBaUIsT0FBb0IsRUFBRSxTQUFpQixF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O1lBQ2xCO2dCQUNFLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUExRkg7UUFBQyxlQUFVLEVBQUU7O3VCQUFBO0lBMkZiLHNCQUFDO0FBQUQsQ0FBQyxBQTFGRCxDQUFxQyxrQ0FBa0IsR0EwRnREO0FBMUZZLHVCQUFlLGtCQTBGM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgU3RyaW5nV3JhcHBlcixcbiAgUmVnRXhwV3JhcHBlcixcbiAgTnVtYmVyV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7RXZlbnRNYW5hZ2VyUGx1Z2lufSBmcm9tICcuL2V2ZW50X21hbmFnZXInO1xuaW1wb3J0IHtOZ1pvbmV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3pvbmUvbmdfem9uZSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxudmFyIG1vZGlmaWVyS2V5cyA9IFsnYWx0JywgJ2NvbnRyb2wnLCAnbWV0YScsICdzaGlmdCddO1xudmFyIG1vZGlmaWVyS2V5R2V0dGVyczoge1trZXk6IHN0cmluZ106IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gYm9vbGVhbn0gPSB7XG4gICdhbHQnOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmFsdEtleSxcbiAgJ2NvbnRyb2wnOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LmN0cmxLZXksXG4gICdtZXRhJzogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBldmVudC5tZXRhS2V5LFxuICAnc2hpZnQnOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50LnNoaWZ0S2V5XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgS2V5RXZlbnRzUGx1Z2luIGV4dGVuZHMgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcbiAgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH1cblxuICBzdXBwb3J0cyhldmVudE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ByZXNlbnQoS2V5RXZlbnRzUGx1Z2luLnBhcnNlRXZlbnROYW1lKGV2ZW50TmFtZSkpO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHZhciBwYXJzZWRFdmVudCA9IEtleUV2ZW50c1BsdWdpbi5wYXJzZUV2ZW50TmFtZShldmVudE5hbWUpO1xuXG4gICAgdmFyIG91dHNpZGVIYW5kbGVyID0gS2V5RXZlbnRzUGx1Z2luLmV2ZW50Q2FsbGJhY2soXG4gICAgICAgIGVsZW1lbnQsIFN0cmluZ01hcFdyYXBwZXIuZ2V0KHBhcnNlZEV2ZW50LCAnZnVsbEtleScpLCBoYW5kbGVyLCB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtcblxuICAgIHJldHVybiB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHJldHVybiBET00ub25BbmRDYW5jZWwoZWxlbWVudCwgU3RyaW5nTWFwV3JhcHBlci5nZXQocGFyc2VkRXZlbnQsICdkb21FdmVudE5hbWUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2lkZUhhbmRsZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRXZlbnROYW1lKGV2ZW50TmFtZTogc3RyaW5nKToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIHZhciBwYXJ0czogc3RyaW5nW10gPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5zcGxpdCgnLicpO1xuXG4gICAgdmFyIGRvbUV2ZW50TmFtZSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgaWYgKChwYXJ0cy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICEoU3RyaW5nV3JhcHBlci5lcXVhbHMoZG9tRXZlbnROYW1lLCAna2V5ZG93bicpIHx8XG4gICAgICAgICAgU3RyaW5nV3JhcHBlci5lcXVhbHMoZG9tRXZlbnROYW1lLCAna2V5dXAnKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSBLZXlFdmVudHNQbHVnaW4uX25vcm1hbGl6ZUtleShwYXJ0cy5wb3AoKSk7XG5cbiAgICB2YXIgZnVsbEtleSA9ICcnO1xuICAgIG1vZGlmaWVyS2V5cy5mb3JFYWNoKG1vZGlmaWVyTmFtZSA9PiB7XG4gICAgICBpZiAoTGlzdFdyYXBwZXIuY29udGFpbnMocGFydHMsIG1vZGlmaWVyTmFtZSkpIHtcbiAgICAgICAgTGlzdFdyYXBwZXIucmVtb3ZlKHBhcnRzLCBtb2RpZmllck5hbWUpO1xuICAgICAgICBmdWxsS2V5ICs9IG1vZGlmaWVyTmFtZSArICcuJztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmdWxsS2V5ICs9IGtleTtcblxuICAgIGlmIChwYXJ0cy5sZW5ndGggIT0gMCB8fCBrZXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyByZXR1cm5pbmcgbnVsbCBpbnN0ZWFkIG9mIHRocm93aW5nIHRvIGxldCBhbm90aGVyIHBsdWdpbiBwcm9jZXNzIHRoZSBldmVudFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBTdHJpbmdNYXBXcmFwcGVyLmNyZWF0ZSgpO1xuICAgIFN0cmluZ01hcFdyYXBwZXIuc2V0KHJlc3VsdCwgJ2RvbUV2ZW50TmFtZScsIGRvbUV2ZW50TmFtZSk7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5zZXQocmVzdWx0LCAnZnVsbEtleScsIGZ1bGxLZXkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0RXZlbnRGdWxsS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogc3RyaW5nIHtcbiAgICB2YXIgZnVsbEtleSA9ICcnO1xuICAgIHZhciBrZXkgPSBET00uZ2V0RXZlbnRLZXkoZXZlbnQpO1xuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChTdHJpbmdXcmFwcGVyLmVxdWFscyhrZXksICcgJykpIHtcbiAgICAgIGtleSA9ICdzcGFjZSc7ICAvLyBmb3IgcmVhZGFiaWxpdHlcbiAgICB9IGVsc2UgaWYgKFN0cmluZ1dyYXBwZXIuZXF1YWxzKGtleSwgJy4nKSkge1xuICAgICAga2V5ID0gJ2RvdCc7ICAvLyBiZWNhdXNlICcuJyBpcyB1c2VkIGFzIGEgc2VwYXJhdG9yIGluIGV2ZW50IG5hbWVzXG4gICAgfVxuICAgIG1vZGlmaWVyS2V5cy5mb3JFYWNoKG1vZGlmaWVyTmFtZSA9PiB7XG4gICAgICBpZiAobW9kaWZpZXJOYW1lICE9IGtleSkge1xuICAgICAgICB2YXIgbW9kaWZpZXJHZXR0ZXIgPSBTdHJpbmdNYXBXcmFwcGVyLmdldChtb2RpZmllcktleUdldHRlcnMsIG1vZGlmaWVyTmFtZSk7XG4gICAgICAgIGlmIChtb2RpZmllckdldHRlcihldmVudCkpIHtcbiAgICAgICAgICBmdWxsS2V5ICs9IG1vZGlmaWVyTmFtZSArICcuJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bGxLZXkgKz0ga2V5O1xuICAgIHJldHVybiBmdWxsS2V5O1xuICB9XG5cbiAgc3RhdGljIGV2ZW50Q2FsbGJhY2soZWxlbWVudDogSFRNTEVsZW1lbnQsIGZ1bGxLZXk6IGFueSwgaGFuZGxlcjogRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgIHpvbmU6IE5nWm9uZSk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoU3RyaW5nV3JhcHBlci5lcXVhbHMoS2V5RXZlbnRzUGx1Z2luLmdldEV2ZW50RnVsbEtleShldmVudCksIGZ1bGxLZXkpKSB7XG4gICAgICAgIHpvbmUucnVuR3VhcmRlZCgoKSA9PiBoYW5kbGVyKGV2ZW50KSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF9ub3JtYWxpemVLZXkoa2V5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUT0RPOiBzd2l0Y2ggdG8gYSBTdHJpbmdNYXAgaWYgdGhlIG1hcHBpbmcgZ3Jvd3MgdG9vIG11Y2hcbiAgICBzd2l0Y2ggKGtleU5hbWUpIHtcbiAgICAgIGNhc2UgJ2VzYyc6XG4gICAgICAgIHJldHVybiAnZXNjYXBlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBrZXlOYW1lO1xuICAgIH1cbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar xhr_impl_1 = require('angular2/src/platform/browser/xhr_impl');\r\n/**\r\n * Provides DOM operations in any browser environment.\r\n */\r\nvar GenericBrowserDomAdapter = (function (_super) {\r\n __extends(GenericBrowserDomAdapter, _super);\r\n function GenericBrowserDomAdapter() {\r\n var _this = this;\r\n _super.call(this);\r\n this._animationPrefix = null;\r\n this._transitionEnd = null;\r\n try {\r\n var element = this.createElement('div', this.defaultDoc());\r\n if (lang_1.isPresent(this.getStyle(element, 'animationName'))) {\r\n this._animationPrefix = '';\r\n }\r\n else {\r\n var domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];\r\n for (var i = 0; i < domPrefixes.length; i++) {\r\n if (lang_1.isPresent(this.getStyle(element, domPrefixes[i] + 'AnimationName'))) {\r\n this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';\r\n break;\r\n }\r\n }\r\n }\r\n var transEndEventNames = {\r\n WebkitTransition: 'webkitTransitionEnd',\r\n MozTransition: 'transitionend',\r\n OTransition: 'oTransitionEnd otransitionend',\r\n transition: 'transitionend'\r\n };\r\n collection_1.StringMapWrapper.forEach(transEndEventNames, function (value, key) {\r\n if (lang_1.isPresent(_this.getStyle(element, key))) {\r\n _this._transitionEnd = value;\r\n }\r\n });\r\n }\r\n catch (e) {\r\n this._animationPrefix = null;\r\n this._transitionEnd = null;\r\n }\r\n }\r\n GenericBrowserDomAdapter.prototype.getXHR = function () { return xhr_impl_1.XHRImpl; };\r\n GenericBrowserDomAdapter.prototype.getDistributedNodes = function (el) { return el.getDistributedNodes(); };\r\n GenericBrowserDomAdapter.prototype.resolveAndSetHref = function (el, baseUrl, href) {\r\n el.href = href == null ? baseUrl : baseUrl + '/../' + href;\r\n };\r\n GenericBrowserDomAdapter.prototype.supportsDOMEvents = function () { return true; };\r\n GenericBrowserDomAdapter.prototype.supportsNativeShadowDOM = function () {\r\n return lang_1.isFunction(this.defaultDoc().body.createShadowRoot);\r\n };\r\n GenericBrowserDomAdapter.prototype.getAnimationPrefix = function () {\r\n return lang_1.isPresent(this._animationPrefix) ? this._animationPrefix : \"\";\r\n };\r\n GenericBrowserDomAdapter.prototype.getTransitionEnd = function () { return lang_1.isPresent(this._transitionEnd) ? this._transitionEnd : \"\"; };\r\n GenericBrowserDomAdapter.prototype.supportsAnimation = function () {\r\n return lang_1.isPresent(this._animationPrefix) && lang_1.isPresent(this._transitionEnd);\r\n };\r\n return GenericBrowserDomAdapter;\r\n}(dom_adapter_1.DomAdapter));\r\nexports.GenericBrowserDomAdapter = GenericBrowserDomAdapter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpY19icm93c2VyX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci9nZW5lcmljX2Jyb3dzZXJfYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBNEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RSxxQkFBMEMsMEJBQTBCLENBQUMsQ0FBQTtBQUNyRSw0QkFBeUIsdUNBQXVDLENBQUMsQ0FBQTtBQUNqRSx5QkFBc0Isd0NBQXdDLENBQUMsQ0FBQTtBQUcvRDs7R0FFRztBQUNIO0lBQXVELDRDQUFVO0lBRy9EO1FBSEYsaUJBbURDO1FBL0NHLGlCQUFPLENBQUM7UUFIRixxQkFBZ0IsR0FBVyxJQUFJLENBQUM7UUFDaEMsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFHcEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDM0QsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUM3QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sSUFBSSxXQUFXLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0MsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzVDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN4RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7d0JBQ2pFLEtBQUssQ0FBQztvQkFDUixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxrQkFBa0IsR0FBNEI7Z0JBQ2hELGdCQUFnQixFQUFFLHFCQUFxQjtnQkFDdkMsYUFBYSxFQUFFLGVBQWU7Z0JBQzlCLFdBQVcsRUFBRSwrQkFBK0I7Z0JBQzVDLFVBQVUsRUFBRSxlQUFlO2FBQzVCLENBQUM7WUFDRiw2QkFBZ0IsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsVUFBQyxLQUFhLEVBQUUsR0FBVztnQkFDdEUsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsS0FBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUU7UUFBQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELHlDQUFNLEdBQU4sY0FBaUIsTUFBTSxDQUFDLGtCQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLHNEQUFtQixHQUFuQixVQUFvQixFQUFlLElBQVksTUFBTSxDQUFPLEVBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixvREFBaUIsR0FBakIsVUFBa0IsRUFBcUIsRUFBRSxPQUFlLEVBQUUsSUFBWTtRQUNwRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFDRCxvREFBaUIsR0FBakIsY0FBK0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0MsMERBQXVCLEdBQXZCO1FBQ0UsTUFBTSxDQUFDLGlCQUFVLENBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxxREFBa0IsR0FBbEI7UUFDRSxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxtREFBZ0IsR0FBaEIsY0FBNkIsTUFBTSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRyxvREFBaUIsR0FBakI7UUFDRSxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxnQkFBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBbkRELENBQXVELHdCQUFVLEdBbURoRTtBQW5EcUIsZ0NBQXdCLDJCQW1EN0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge2lzUHJlc2VudCwgaXNGdW5jdGlvbiwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7RG9tQWRhcHRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge1hIUkltcGx9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9icm93c2VyL3hocl9pbXBsJztcblxuXG4vKipcbiAqIFByb3ZpZGVzIERPTSBvcGVyYXRpb25zIGluIGFueSBicm93c2VyIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJpY0Jyb3dzZXJEb21BZGFwdGVyIGV4dGVuZHMgRG9tQWRhcHRlciB7XG4gIHByaXZhdGUgX2FuaW1hdGlvblByZWZpeDogc3RyaW5nID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJhbnNpdGlvbkVuZDogc3RyaW5nID0gbnVsbDtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0cnkge1xuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHRoaXMuZGVmYXVsdERvYygpKTtcbiAgICAgIGlmIChpc1ByZXNlbnQodGhpcy5nZXRTdHlsZShlbGVtZW50LCAnYW5pbWF0aW9uTmFtZScpKSkge1xuICAgICAgICB0aGlzLl9hbmltYXRpb25QcmVmaXggPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBkb21QcmVmaXhlcyA9IFsnV2Via2l0JywgJ01veicsICdPJywgJ21zJ107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZG9tUHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaXNQcmVzZW50KHRoaXMuZ2V0U3R5bGUoZWxlbWVudCwgZG9tUHJlZml4ZXNbaV0gKyAnQW5pbWF0aW9uTmFtZScpKSkge1xuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uUHJlZml4ID0gJy0nICsgZG9tUHJlZml4ZXNbaV0udG9Mb3dlckNhc2UoKSArICctJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIHRyYW5zRW5kRXZlbnROYW1lczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XG4gICAgICAgIFdlYmtpdFRyYW5zaXRpb246ICd3ZWJraXRUcmFuc2l0aW9uRW5kJyxcbiAgICAgICAgTW96VHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnLFxuICAgICAgICBPVHJhbnNpdGlvbjogJ29UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnXG4gICAgICB9O1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKHRyYW5zRW5kRXZlbnROYW1lcywgKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChpc1ByZXNlbnQodGhpcy5nZXRTdHlsZShlbGVtZW50LCBrZXkpKSkge1xuICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25FbmQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fYW5pbWF0aW9uUHJlZml4ID0gbnVsbDtcbiAgICAgIHRoaXMuX3RyYW5zaXRpb25FbmQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldFhIUigpOiBUeXBlIHsgcmV0dXJuIFhIUkltcGw7IH1cbiAgZ2V0RGlzdHJpYnV0ZWROb2RlcyhlbDogSFRNTEVsZW1lbnQpOiBOb2RlW10geyByZXR1cm4gKDxhbnk+ZWwpLmdldERpc3RyaWJ1dGVkTm9kZXMoKTsgfVxuICByZXNvbHZlQW5kU2V0SHJlZihlbDogSFRNTEFuY2hvckVsZW1lbnQsIGJhc2VVcmw6IHN0cmluZywgaHJlZjogc3RyaW5nKSB7XG4gICAgZWwuaHJlZiA9IGhyZWYgPT0gbnVsbCA/IGJhc2VVcmwgOiBiYXNlVXJsICsgJy8uLi8nICsgaHJlZjtcbiAgfVxuICBzdXBwb3J0c0RPTUV2ZW50cygpOiBib29sZWFuIHsgcmV0dXJuIHRydWU7IH1cbiAgc3VwcG9ydHNOYXRpdmVTaGFkb3dET00oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oKDxhbnk+dGhpcy5kZWZhdWx0RG9jKCkuYm9keSkuY3JlYXRlU2hhZG93Um9vdCk7XG4gIH1cbiAgZ2V0QW5pbWF0aW9uUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9hbmltYXRpb25QcmVmaXgpID8gdGhpcy5fYW5pbWF0aW9uUHJlZml4IDogXCJcIjtcbiAgfVxuICBnZXRUcmFuc2l0aW9uRW5kKCk6IHN0cmluZyB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5fdHJhbnNpdGlvbkVuZCkgPyB0aGlzLl90cmFuc2l0aW9uRW5kIDogXCJcIjsgfVxuICBzdXBwb3J0c0FuaW1hdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX2FuaW1hdGlvblByZWZpeCkgJiYgaXNQcmVzZW50KHRoaXMuX3RyYW5zaXRpb25FbmQpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar generic_browser_adapter_1 = require('./generic_browser_adapter');\r\nvar _attrToPropMap = {\r\n 'class': 'className',\r\n 'innerHtml': 'innerHTML',\r\n 'readonly': 'readOnly',\r\n 'tabindex': 'tabIndex'\r\n};\r\nvar DOM_KEY_LOCATION_NUMPAD = 3;\r\n// Map to convert some key or keyIdentifier values to what will be returned by getEventKey\r\nvar _keyMap = {\r\n // The following values are here for cross-browser compatibility and to match the W3C standard\r\n // cf http://www.w3.org/TR/DOM-Level-3-Events-key/\r\n '\\b': 'Backspace',\r\n '\\t': 'Tab',\r\n '\\x7F': 'Delete',\r\n '\\x1B': 'Escape',\r\n 'Del': 'Delete',\r\n 'Esc': 'Escape',\r\n 'Left': 'ArrowLeft',\r\n 'Right': 'ArrowRight',\r\n 'Up': 'ArrowUp',\r\n 'Down': 'ArrowDown',\r\n 'Menu': 'ContextMenu',\r\n 'Scroll': 'ScrollLock',\r\n 'Win': 'OS'\r\n};\r\n// There is a bug in Chrome for numeric keypad keys:\r\n// https://code.google.com/p/chromium/issues/detail?id=155654\r\n// 1, 2, 3 ... are reported as A, B, C ...\r\nvar _chromeNumKeyPadMap = {\r\n 'A': '1',\r\n 'B': '2',\r\n 'C': '3',\r\n 'D': '4',\r\n 'E': '5',\r\n 'F': '6',\r\n 'G': '7',\r\n 'H': '8',\r\n 'I': '9',\r\n 'J': '*',\r\n 'K': '+',\r\n 'M': '-',\r\n 'N': '.',\r\n 'O': '/',\r\n '\\x60': '0',\r\n '\\x90': 'NumLock'\r\n};\r\n/**\r\n * A `DomAdapter` powered by full browser DOM APIs.\r\n */\r\n/* tslint:disable:requireParameterType */\r\nvar BrowserDomAdapter = (function (_super) {\r\n __extends(BrowserDomAdapter, _super);\r\n function BrowserDomAdapter() {\r\n _super.apply(this, arguments);\r\n }\r\n BrowserDomAdapter.prototype.parse = function (templateHtml) { throw new Error(\"parse not implemented\"); };\r\n BrowserDomAdapter.makeCurrent = function () { dom_adapter_1.setRootDomAdapter(new BrowserDomAdapter()); };\r\n BrowserDomAdapter.prototype.hasProperty = function (element, name) { return name in element; };\r\n BrowserDomAdapter.prototype.setProperty = function (el, name, value) { el[name] = value; };\r\n BrowserDomAdapter.prototype.getProperty = function (el, name) { return el[name]; };\r\n BrowserDomAdapter.prototype.invoke = function (el, methodName, args) {\r\n el[methodName].apply(el, args);\r\n };\r\n // TODO(tbosch): move this into a separate environment class once we have it\r\n BrowserDomAdapter.prototype.logError = function (error) {\r\n if (window.console.error) {\r\n window.console.error(error);\r\n }\r\n else {\r\n window.console.log(error);\r\n }\r\n };\r\n BrowserDomAdapter.prototype.log = function (error) { window.console.log(error); };\r\n BrowserDomAdapter.prototype.logGroup = function (error) {\r\n if (window.console.group) {\r\n window.console.group(error);\r\n this.logError(error);\r\n }\r\n else {\r\n window.console.log(error);\r\n }\r\n };\r\n BrowserDomAdapter.prototype.logGroupEnd = function () {\r\n if (window.console.groupEnd) {\r\n window.console.groupEnd();\r\n }\r\n };\r\n Object.defineProperty(BrowserDomAdapter.prototype, \"attrToPropMap\", {\r\n get: function () { return _attrToPropMap; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BrowserDomAdapter.prototype.query = function (selector) { return document.querySelector(selector); };\r\n BrowserDomAdapter.prototype.querySelector = function (el, selector) { return el.querySelector(selector); };\r\n BrowserDomAdapter.prototype.querySelectorAll = function (el, selector) { return el.querySelectorAll(selector); };\r\n BrowserDomAdapter.prototype.on = function (el, evt, listener) { el.addEventListener(evt, listener, false); };\r\n BrowserDomAdapter.prototype.onAndCancel = function (el, evt, listener) {\r\n el.addEventListener(evt, listener, false);\r\n // Needed to follow Dart's subscription semantic, until fix of\r\n // https://code.google.com/p/dart/issues/detail?id=17406\r\n return function () { el.removeEventListener(evt, listener, false); };\r\n };\r\n BrowserDomAdapter.prototype.dispatchEvent = function (el, evt) { el.dispatchEvent(evt); };\r\n BrowserDomAdapter.prototype.createMouseEvent = function (eventType) {\r\n var evt = document.createEvent('MouseEvent');\r\n evt.initEvent(eventType, true, true);\r\n return evt;\r\n };\r\n BrowserDomAdapter.prototype.createEvent = function (eventType) {\r\n var evt = document.createEvent('Event');\r\n evt.initEvent(eventType, true, true);\r\n return evt;\r\n };\r\n BrowserDomAdapter.prototype.preventDefault = function (evt) {\r\n evt.preventDefault();\r\n evt.returnValue = false;\r\n };\r\n BrowserDomAdapter.prototype.isPrevented = function (evt) {\r\n return evt.defaultPrevented || lang_1.isPresent(evt.returnValue) && !evt.returnValue;\r\n };\r\n BrowserDomAdapter.prototype.getInnerHTML = function (el) { return el.innerHTML; };\r\n BrowserDomAdapter.prototype.getOuterHTML = function (el) { return el.outerHTML; };\r\n BrowserDomAdapter.prototype.nodeName = function (node) { return node.nodeName; };\r\n BrowserDomAdapter.prototype.nodeValue = function (node) { return node.nodeValue; };\r\n BrowserDomAdapter.prototype.type = function (node) { return node.type; };\r\n BrowserDomAdapter.prototype.content = function (node) {\r\n if (this.hasProperty(node, \"content\")) {\r\n return node.content;\r\n }\r\n else {\r\n return node;\r\n }\r\n };\r\n BrowserDomAdapter.prototype.firstChild = function (el) { return el.firstChild; };\r\n BrowserDomAdapter.prototype.nextSibling = function (el) { return el.nextSibling; };\r\n BrowserDomAdapter.prototype.parentElement = function (el) { return el.parentNode; };\r\n BrowserDomAdapter.prototype.childNodes = function (el) { return el.childNodes; };\r\n BrowserDomAdapter.prototype.childNodesAsList = function (el) {\r\n var childNodes = el.childNodes;\r\n var res = collection_1.ListWrapper.createFixedSize(childNodes.length);\r\n for (var i = 0; i < childNodes.length; i++) {\r\n res[i] = childNodes[i];\r\n }\r\n return res;\r\n };\r\n BrowserDomAdapter.prototype.clearNodes = function (el) {\r\n while (el.firstChild) {\r\n el.removeChild(el.firstChild);\r\n }\r\n };\r\n BrowserDomAdapter.prototype.appendChild = function (el, node) { el.appendChild(node); };\r\n BrowserDomAdapter.prototype.removeChild = function (el, node) { el.removeChild(node); };\r\n BrowserDomAdapter.prototype.replaceChild = function (el, newChild, oldChild) { el.replaceChild(newChild, oldChild); };\r\n BrowserDomAdapter.prototype.remove = function (node) {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n return node;\r\n };\r\n BrowserDomAdapter.prototype.insertBefore = function (el, node) { el.parentNode.insertBefore(node, el); };\r\n BrowserDomAdapter.prototype.insertAllBefore = function (el, nodes) { nodes.forEach(function (n) { return el.parentNode.insertBefore(n, el); }); };\r\n BrowserDomAdapter.prototype.insertAfter = function (el, node) { el.parentNode.insertBefore(node, el.nextSibling); };\r\n BrowserDomAdapter.prototype.setInnerHTML = function (el, value) { el.innerHTML = value; };\r\n BrowserDomAdapter.prototype.getText = function (el) { return el.textContent; };\r\n // TODO(vicb): removed Element type because it does not support StyleElement\r\n BrowserDomAdapter.prototype.setText = function (el, value) { el.textContent = value; };\r\n BrowserDomAdapter.prototype.getValue = function (el) { return el.value; };\r\n BrowserDomAdapter.prototype.setValue = function (el, value) { el.value = value; };\r\n BrowserDomAdapter.prototype.getChecked = function (el) { return el.checked; };\r\n BrowserDomAdapter.prototype.setChecked = function (el, value) { el.checked = value; };\r\n BrowserDomAdapter.prototype.createComment = function (text) { return document.createComment(text); };\r\n BrowserDomAdapter.prototype.createTemplate = function (html) {\r\n var t = document.createElement('template');\r\n t.innerHTML = html;\r\n return t;\r\n };\r\n BrowserDomAdapter.prototype.createElement = function (tagName, doc) {\r\n if (doc === void 0) { doc = document; }\r\n return doc.createElement(tagName);\r\n };\r\n BrowserDomAdapter.prototype.createElementNS = function (ns, tagName, doc) {\r\n if (doc === void 0) { doc = document; }\r\n return doc.createElementNS(ns, tagName);\r\n };\r\n BrowserDomAdapter.prototype.createTextNode = function (text, doc) {\r\n if (doc === void 0) { doc = document; }\r\n return doc.createTextNode(text);\r\n };\r\n BrowserDomAdapter.prototype.createScriptTag = function (attrName, attrValue, doc) {\r\n if (doc === void 0) { doc = document; }\r\n var el = doc.createElement('SCRIPT');\r\n el.setAttribute(attrName, attrValue);\r\n return el;\r\n };\r\n BrowserDomAdapter.prototype.createStyleElement = function (css, doc) {\r\n if (doc === void 0) { doc = document; }\r\n var style = doc.createElement('style');\r\n this.appendChild(style, this.createTextNode(css));\r\n return style;\r\n };\r\n BrowserDomAdapter.prototype.createShadowRoot = function (el) { return el.createShadowRoot(); };\r\n BrowserDomAdapter.prototype.getShadowRoot = function (el) { return el.shadowRoot; };\r\n BrowserDomAdapter.prototype.getHost = function (el) { return el.host; };\r\n BrowserDomAdapter.prototype.clone = function (node) { return node.cloneNode(true); };\r\n BrowserDomAdapter.prototype.getElementsByClassName = function (element, name) {\r\n return element.getElementsByClassName(name);\r\n };\r\n BrowserDomAdapter.prototype.getElementsByTagName = function (element, name) {\r\n return element.getElementsByTagName(name);\r\n };\r\n BrowserDomAdapter.prototype.classList = function (element) { return Array.prototype.slice.call(element.classList, 0); };\r\n BrowserDomAdapter.prototype.addClass = function (element, className) { element.classList.add(className); };\r\n BrowserDomAdapter.prototype.removeClass = function (element, className) { element.classList.remove(className); };\r\n BrowserDomAdapter.prototype.hasClass = function (element, className) { return element.classList.contains(className); };\r\n BrowserDomAdapter.prototype.setStyle = function (element, styleName, styleValue) {\r\n element.style[styleName] = styleValue;\r\n };\r\n BrowserDomAdapter.prototype.removeStyle = function (element, stylename) { element.style[stylename] = null; };\r\n BrowserDomAdapter.prototype.getStyle = function (element, stylename) { return element.style[stylename]; };\r\n BrowserDomAdapter.prototype.hasStyle = function (element, styleName, styleValue) {\r\n if (styleValue === void 0) { styleValue = null; }\r\n var value = this.getStyle(element, styleName) || '';\r\n return styleValue ? value == styleValue : value.length > 0;\r\n };\r\n BrowserDomAdapter.prototype.tagName = function (element) { return element.tagName; };\r\n BrowserDomAdapter.prototype.attributeMap = function (element) {\r\n var res = new Map();\r\n var elAttrs = element.attributes;\r\n for (var i = 0; i < elAttrs.length; i++) {\r\n var attrib = elAttrs[i];\r\n res.set(attrib.name, attrib.value);\r\n }\r\n return res;\r\n };\r\n BrowserDomAdapter.prototype.hasAttribute = function (element, attribute) { return element.hasAttribute(attribute); };\r\n BrowserDomAdapter.prototype.hasAttributeNS = function (element, ns, attribute) {\r\n return element.hasAttributeNS(ns, attribute);\r\n };\r\n BrowserDomAdapter.prototype.getAttribute = function (element, attribute) { return element.getAttribute(attribute); };\r\n BrowserDomAdapter.prototype.getAttributeNS = function (element, ns, name) {\r\n return element.getAttributeNS(ns, name);\r\n };\r\n BrowserDomAdapter.prototype.setAttribute = function (element, name, value) { element.setAttribute(name, value); };\r\n BrowserDomAdapter.prototype.setAttributeNS = function (element, ns, name, value) {\r\n element.setAttributeNS(ns, name, value);\r\n };\r\n BrowserDomAdapter.prototype.removeAttribute = function (element, attribute) { element.removeAttribute(attribute); };\r\n BrowserDomAdapter.prototype.removeAttributeNS = function (element, ns, name) { element.removeAttributeNS(ns, name); };\r\n BrowserDomAdapter.prototype.templateAwareRoot = function (el) { return this.isTemplateElement(el) ? this.content(el) : el; };\r\n BrowserDomAdapter.prototype.createHtmlDocument = function () {\r\n return document.implementation.createHTMLDocument('fakeTitle');\r\n };\r\n BrowserDomAdapter.prototype.defaultDoc = function () { return document; };\r\n BrowserDomAdapter.prototype.getBoundingClientRect = function (el) {\r\n try {\r\n return el.getBoundingClientRect();\r\n }\r\n catch (e) {\r\n return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 };\r\n }\r\n };\r\n BrowserDomAdapter.prototype.getTitle = function () { return document.title; };\r\n BrowserDomAdapter.prototype.setTitle = function (newTitle) { document.title = newTitle || ''; };\r\n BrowserDomAdapter.prototype.elementMatches = function (n, selector) {\r\n var matches = false;\r\n if (n instanceof HTMLElement) {\r\n if (n.matches) {\r\n matches = n.matches(selector);\r\n }\r\n else if (n.msMatchesSelector) {\r\n matches = n.msMatchesSelector(selector);\r\n }\r\n else if (n.webkitMatchesSelector) {\r\n matches = n.webkitMatchesSelector(selector);\r\n }\r\n }\r\n return matches;\r\n };\r\n BrowserDomAdapter.prototype.isTemplateElement = function (el) {\r\n return el instanceof HTMLElement && el.nodeName == \"TEMPLATE\";\r\n };\r\n BrowserDomAdapter.prototype.isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\r\n BrowserDomAdapter.prototype.isCommentNode = function (node) { return node.nodeType === Node.COMMENT_NODE; };\r\n BrowserDomAdapter.prototype.isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\r\n BrowserDomAdapter.prototype.hasShadowRoot = function (node) { return node instanceof HTMLElement && lang_1.isPresent(node.shadowRoot); };\r\n BrowserDomAdapter.prototype.isShadowRoot = function (node) { return node instanceof DocumentFragment; };\r\n BrowserDomAdapter.prototype.importIntoDoc = function (node) {\r\n var toImport = node;\r\n if (this.isTemplateElement(node)) {\r\n toImport = this.content(node);\r\n }\r\n return document.importNode(toImport, true);\r\n };\r\n BrowserDomAdapter.prototype.adoptNode = function (node) { return document.adoptNode(node); };\r\n BrowserDomAdapter.prototype.getHref = function (el) { return el.href; };\r\n BrowserDomAdapter.prototype.getEventKey = function (event) {\r\n var key = event.key;\r\n if (lang_1.isBlank(key)) {\r\n key = event.keyIdentifier;\r\n // keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and\r\n // Safari\r\n // cf\r\n // http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces\r\n if (lang_1.isBlank(key)) {\r\n return 'Unidentified';\r\n }\r\n if (key.startsWith('U+')) {\r\n key = String.fromCharCode(parseInt(key.substring(2), 16));\r\n if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {\r\n // There is a bug in Chrome for numeric keypad keys:\r\n // https://code.google.com/p/chromium/issues/detail?id=155654\r\n // 1, 2, 3 ... are reported as A, B, C ...\r\n key = _chromeNumKeyPadMap[key];\r\n }\r\n }\r\n }\r\n if (_keyMap.hasOwnProperty(key)) {\r\n key = _keyMap[key];\r\n }\r\n return key;\r\n };\r\n BrowserDomAdapter.prototype.getGlobalEventTarget = function (target) {\r\n if (target == \"window\") {\r\n return window;\r\n }\r\n else if (target == \"document\") {\r\n return document;\r\n }\r\n else if (target == \"body\") {\r\n return document.body;\r\n }\r\n };\r\n BrowserDomAdapter.prototype.getHistory = function () { return window.history; };\r\n BrowserDomAdapter.prototype.getLocation = function () { return window.location; };\r\n BrowserDomAdapter.prototype.getBaseHref = function () {\r\n var href = getBaseElementHref();\r\n if (lang_1.isBlank(href)) {\r\n return null;\r\n }\r\n return relativePath(href);\r\n };\r\n BrowserDomAdapter.prototype.resetBaseElement = function () { baseElement = null; };\r\n BrowserDomAdapter.prototype.getUserAgent = function () { return window.navigator.userAgent; };\r\n BrowserDomAdapter.prototype.setData = function (element, name, value) {\r\n this.setAttribute(element, 'data-' + name, value);\r\n };\r\n BrowserDomAdapter.prototype.getData = function (element, name) { return this.getAttribute(element, 'data-' + name); };\r\n BrowserDomAdapter.prototype.getComputedStyle = function (element) { return getComputedStyle(element); };\r\n // TODO(tbosch): move this into a separate environment class once we have it\r\n BrowserDomAdapter.prototype.setGlobalVar = function (path, value) { lang_1.setValueOnPath(lang_1.global, path, value); };\r\n BrowserDomAdapter.prototype.requestAnimationFrame = function (callback) { return window.requestAnimationFrame(callback); };\r\n BrowserDomAdapter.prototype.cancelAnimationFrame = function (id) { window.cancelAnimationFrame(id); };\r\n BrowserDomAdapter.prototype.performanceNow = function () {\r\n // performance.now() is not available in all browsers, see\r\n // http://caniuse.com/#search=performance.now\r\n if (lang_1.isPresent(window.performance) && lang_1.isPresent(window.performance.now)) {\r\n return window.performance.now();\r\n }\r\n else {\r\n return lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());\r\n }\r\n };\r\n return BrowserDomAdapter;\r\n}(generic_browser_adapter_1.GenericBrowserDomAdapter));\r\nexports.BrowserDomAdapter = BrowserDomAdapter;\r\nvar baseElement = null;\r\nfunction getBaseElementHref() {\r\n if (lang_1.isBlank(baseElement)) {\r\n baseElement = document.querySelector('base');\r\n if (lang_1.isBlank(baseElement)) {\r\n return null;\r\n }\r\n }\r\n return baseElement.getAttribute('href');\r\n}\r\n// based on urlUtils.js in AngularJS 1\r\nvar urlParsingNode = null;\r\nfunction relativePath(url) {\r\n if (lang_1.isBlank(urlParsingNode)) {\r\n urlParsingNode = document.createElement(\"a\");\r\n }\r\n urlParsingNode.setAttribute('href', url);\r\n return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :\r\n '/' + urlParsingNode.pathname;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl9hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvYnJvd3Nlcl9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJCQUFzQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3ZFLHFCQUFzRSwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pHLDRCQUFnQyx1Q0FBdUMsQ0FBQyxDQUFBO0FBQ3hFLHdDQUF1QywyQkFBMkIsQ0FBQyxDQUFBO0FBRW5FLElBQUksY0FBYyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLFVBQVUsRUFBRSxVQUFVO0lBQ3RCLFVBQVUsRUFBRSxVQUFVO0NBQ3ZCLENBQUM7QUFFRixJQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQztBQUVsQywwRkFBMEY7QUFDMUYsSUFBSSxPQUFPLEdBQUc7SUFDWiw4RkFBOEY7SUFDOUYsa0RBQWtEO0lBQ2xELElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxLQUFLO0lBQ1gsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxXQUFXO0lBQ25CLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLElBQUksRUFBRSxTQUFTO0lBQ2YsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLGFBQWE7SUFDckIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCwwQ0FBMEM7QUFDMUMsSUFBSSxtQkFBbUIsR0FBRztJQUN4QixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxH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VyxDQUFDLFFBQVEsQ0FBQyxrQkFBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFqU0QsQ0FBdUMsa0RBQXdCLEdBaVM5RDtBQWpTWSx5QkFBaUIsb0JBaVM3QixDQUFBO0FBR0QsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCO0lBQ0UsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQzFCLHNCQUFzQixHQUFHO0lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELGNBQWMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxRQUFRO1FBQ3ZCLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIGdsb2JhbCwgc2V0VmFsdWVPblBhdGgsIERhdGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtzZXRSb290RG9tQWRhcHRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge0dlbmVyaWNCcm93c2VyRG9tQWRhcHRlcn0gZnJvbSAnLi9nZW5lcmljX2Jyb3dzZXJfYWRhcHRlcic7XG5cbnZhciBfYXR0clRvUHJvcE1hcCA9IHtcbiAgJ2NsYXNzJzogJ2NsYXNzTmFtZScsXG4gICdpbm5lckh0bWwnOiAnaW5uZXJIVE1MJyxcbiAgJ3JlYWRvbmx5JzogJ3JlYWRPbmx5JyxcbiAgJ3RhYmluZGV4JzogJ3RhYkluZGV4J1xufTtcblxuY29uc3QgRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQgPSAzO1xuXG4vLyBNYXAgdG8gY29udmVydCBzb21lIGtleSBvciBrZXlJZGVudGlmaWVyIHZhbHVlcyB0byB3aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgZ2V0RXZlbnRLZXlcbnZhciBfa2V5TWFwID0ge1xuICAvLyBUaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaGVyZSBmb3IgY3Jvc3MtYnJvd3NlciBjb21wYXRpYmlsaXR5IGFuZCB0byBtYXRjaCB0aGUgVzNDIHN0YW5kYXJkXG4gIC8vIGNmIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy1rZXkvXG4gICdcXGInOiAnQmFja3NwYWNlJyxcbiAgJ1xcdCc6ICdUYWInLFxuICAnXFx4N0YnOiAnRGVsZXRlJyxcbiAgJ1xceDFCJzogJ0VzY2FwZScsXG4gICdEZWwnOiAnRGVsZXRlJyxcbiAgJ0VzYyc6ICdFc2NhcGUnLFxuICAnTGVmdCc6ICdBcnJvd0xlZnQnLFxuICAnUmlnaHQnOiAnQXJyb3dSaWdodCcsXG4gICdVcCc6ICdBcnJvd1VwJyxcbiAgJ0Rvd24nOiAnQXJyb3dEb3duJyxcbiAgJ01lbnUnOiAnQ29udGV4dE1lbnUnLFxuICAnU2Nyb2xsJzogJ1Njcm9sbExvY2snLFxuICAnV2luJzogJ09TJ1xufTtcblxuLy8gVGhlcmUgaXMgYSBidWcgaW4gQ2hyb21lIGZvciBudW1lcmljIGtleXBhZCBrZXlzOlxuLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE1NTY1NFxuLy8gMSwgMiwgMyAuLi4gYXJlIHJlcG9ydGVkIGFzIEEsIEIsIEMgLi4uXG52YXIgX2Nocm9tZU51bUtleVBhZE1hcCA9IHtcbiAgJ0EnOiAnMScsXG4gICdCJzogJzInLFxuICAnQyc6ICczJyxcbiAgJ0QnOiAnNCcsXG4gICdFJzogJzUnLFxuICAnRic6ICc2JyxcbiAgJ0cnOiAnNycsXG4gICdIJzogJzgnLFxuICAnSSc6ICc5JyxcbiAgJ0onOiAnKicsXG4gICdLJzogJysnLFxuICAnTSc6ICctJyxcbiAgJ04nOiAnLicsXG4gICdPJzogJy8nLFxuICAnXFx4NjAnOiAnMCcsXG4gICdcXHg5MCc6ICdOdW1Mb2NrJ1xufTtcblxuLyoqXG4gKiBBIGBEb21BZGFwdGVyYCBwb3dlcmVkIGJ5IGZ1bGwgYnJvd3NlciBET00gQVBJcy5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6cmVxdWlyZVBhcmFtZXRlclR5cGUgKi9cbmV4cG9ydCBjbGFzcyBCcm93c2VyRG9tQWRhcHRlciBleHRlbmRzIEdlbmVyaWNCcm93c2VyRG9tQWRhcHRlciB7XG4gIHBhcnNlKHRlbXBsYXRlSHRtbDogc3RyaW5nKSB7IHRocm93IG5ldyBFcnJvcihcInBhcnNlIG5vdCBpbXBsZW1lbnRlZFwiKTsgfVxuICBzdGF0aWMgbWFrZUN1cnJlbnQoKSB7IHNldFJvb3REb21BZGFwdGVyKG5ldyBCcm93c2VyRG9tQWRhcHRlcigpKTsgfVxuICBoYXNQcm9wZXJ0eShlbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIG5hbWUgaW4gZWxlbWVudDsgfVxuICBzZXRQcm9wZXJ0eShlbDogLyplbGVtZW50Ki8gYW55LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHsgZWxbbmFtZV0gPSB2YWx1ZTsgfVxuICBnZXRQcm9wZXJ0eShlbDogLyplbGVtZW50Ki8gYW55LCBuYW1lOiBzdHJpbmcpOiBhbnkgeyByZXR1cm4gZWxbbmFtZV07IH1cbiAgaW52b2tlKGVsOiAvKmVsZW1lbnQqLyBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pOiBhbnkge1xuICAgIGVsW21ldGhvZE5hbWVdLmFwcGx5KGVsLCBhcmdzKTtcbiAgfVxuXG4gIC8vIFRPRE8odGJvc2NoKTogbW92ZSB0aGlzIGludG8gYSBzZXBhcmF0ZSBlbnZpcm9ubWVudCBjbGFzcyBvbmNlIHdlIGhhdmUgaXRcbiAgbG9nRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAod2luZG93LmNvbnNvbGUuZXJyb3IpIHtcbiAgICAgIHdpbmRvdy5jb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBsb2coZXJyb3IpIHsgd2luZG93LmNvbnNvbGUubG9nKGVycm9yKTsgfVxuXG4gIGxvZ0dyb3VwKGVycm9yKSB7XG4gICAgaWYgKHdpbmRvdy5jb25zb2xlLmdyb3VwKSB7XG4gICAgICB3aW5kb3cuY29uc29sZS5ncm91cChlcnJvcik7XG4gICAgICB0aGlzLmxvZ0Vycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBsb2dHcm91cEVuZCgpIHtcbiAgICBpZiAod2luZG93LmNvbnNvbGUuZ3JvdXBFbmQpIHtcbiAgICAgIHdpbmRvdy5jb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGF0dHJUb1Byb3BNYXAoKTogYW55IHsgcmV0dXJuIF9hdHRyVG9Qcm9wTWFwOyB9XG5cbiAgcXVlcnkoc2VsZWN0b3I6IHN0cmluZyk6IGFueSB7IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsgfVxuICBxdWVyeVNlbGVjdG9yKGVsLCBzZWxlY3Rvcjogc3RyaW5nKTogSFRNTEVsZW1lbnQgeyByZXR1cm4gZWwucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7IH1cbiAgcXVlcnlTZWxlY3RvckFsbChlbCwgc2VsZWN0b3I6IHN0cmluZyk6IGFueVtdIHsgcmV0dXJuIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOyB9XG4gIG9uKGVsLCBldnQsIGxpc3RlbmVyKSB7IGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZ0LCBsaXN0ZW5lciwgZmFsc2UpOyB9XG4gIG9uQW5kQ2FuY2VsKGVsLCBldnQsIGxpc3RlbmVyKTogRnVuY3Rpb24ge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZ0LCBsaXN0ZW5lciwgZmFsc2UpO1xuICAgIC8vIE5lZWRlZCB0byBmb2xsb3cgRGFydCdzIHN1YnNjcmlwdGlvbiBzZW1hbnRpYywgdW50aWwgZml4IG9mXG4gICAgLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9kYXJ0L2lzc3Vlcy9kZXRhaWw/aWQ9MTc0MDZcbiAgICByZXR1cm4gKCkgPT4geyBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2dCwgbGlzdGVuZXIsIGZhbHNlKTsgfTtcbiAgfVxuICBkaXNwYXRjaEV2ZW50KGVsLCBldnQpIHsgZWwuZGlzcGF0Y2hFdmVudChldnQpOyB9XG4gIGNyZWF0ZU1vdXNlRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcpOiBNb3VzZUV2ZW50IHtcbiAgICB2YXIgZXZ0OiBNb3VzZUV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcbiAgICBldnQuaW5pdEV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGV2dDtcbiAgfVxuICBjcmVhdGVFdmVudChldmVudFR5cGUpOiBFdmVudCB7XG4gICAgdmFyIGV2dDogRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldnQuaW5pdEV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGV2dDtcbiAgfVxuICBwcmV2ZW50RGVmYXVsdChldnQ6IEV2ZW50KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnJldHVyblZhbHVlID0gZmFsc2U7XG4gIH1cbiAgaXNQcmV2ZW50ZWQoZXZ0OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldnQuZGVmYXVsdFByZXZlbnRlZCB8fCBpc1ByZXNlbnQoZXZ0LnJldHVyblZhbHVlKSAmJiAhZXZ0LnJldHVyblZhbHVlO1xuICB9XG4gIGdldElubmVySFRNTChlbCk6IHN0cmluZyB7IHJldHVybiBlbC5pbm5lckhUTUw7IH1cbiAgZ2V0T3V0ZXJIVE1MKGVsKTogc3RyaW5nIHsgcmV0dXJuIGVsLm91dGVySFRNTDsgfVxuICBub2RlTmFtZShub2RlOiBOb2RlKTogc3RyaW5nIHsgcmV0dXJuIG5vZGUubm9kZU5hbWU7IH1cbiAgbm9kZVZhbHVlKG5vZGU6IE5vZGUpOiBzdHJpbmcgeyByZXR1cm4gbm9kZS5ub2RlVmFsdWU7IH1cbiAgdHlwZShub2RlOiBIVE1MSW5wdXRFbGVtZW50KTogc3RyaW5nIHsgcmV0dXJuIG5vZGUudHlwZTsgfVxuICBjb250ZW50KG5vZGU6IE5vZGUpOiBOb2RlIHtcbiAgICBpZiAodGhpcy5oYXNQcm9wZXJ0eShub2RlLCBcImNvbnRlbnRcIikpIHtcbiAgICAgIHJldHVybiAoPGFueT5ub2RlKS5jb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH1cbiAgZmlyc3RDaGlsZChlbCk6IE5vZGUgeyByZXR1cm4gZWwuZmlyc3RDaGlsZDsgfVxuICBuZXh0U2libGluZyhlbCk6IE5vZGUgeyByZXR1cm4gZWwubmV4dFNpYmxpbmc7IH1cbiAgcGFyZW50RWxlbWVudChlbCk6IE5vZGUgeyByZXR1cm4gZWwucGFyZW50Tm9kZTsgfVxuICBjaGlsZE5vZGVzKGVsKTogTm9kZVtdIHsgcmV0dXJuIGVsLmNoaWxkTm9kZXM7IH1cbiAgY2hpbGROb2Rlc0FzTGlzdChlbCk6IGFueVtdIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGVsLmNoaWxkTm9kZXM7XG4gICAgdmFyIHJlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShjaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXNbaV0gPSBjaGlsZE5vZGVzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGNsZWFyTm9kZXMoZWwpIHtcbiAgICB3aGlsZSAoZWwuZmlyc3RDaGlsZCkge1xuICAgICAgZWwucmVtb3ZlQ2hpbGQoZWwuZmlyc3RDaGlsZCk7XG4gICAgfVxuICB9XG4gIGFwcGVuZENoaWxkKGVsLCBub2RlKSB7IGVsLmFwcGVuZENoaWxkKG5vZGUpOyB9XG4gIHJlbW92ZUNoaWxkKGVsLCBub2RlKSB7IGVsLnJlbW92ZUNoaWxkKG5vZGUpOyB9XG4gIHJlcGxhY2VDaGlsZChlbDogTm9kZSwgbmV3Q2hpbGQsIG9sZENoaWxkKSB7IGVsLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQpOyB9XG4gIHJlbW92ZShub2RlKTogTm9kZSB7XG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBpbnNlcnRCZWZvcmUoZWwsIG5vZGUpIHsgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWwpOyB9XG4gIGluc2VydEFsbEJlZm9yZShlbCwgbm9kZXMpIHsgbm9kZXMuZm9yRWFjaChuID0+IGVsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4sIGVsKSk7IH1cbiAgaW5zZXJ0QWZ0ZXIoZWwsIG5vZGUpIHsgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWwubmV4dFNpYmxpbmcpOyB9XG4gIHNldElubmVySFRNTChlbCwgdmFsdWUpIHsgZWwuaW5uZXJIVE1MID0gdmFsdWU7IH1cbiAgZ2V0VGV4dChlbCk6IHN0cmluZyB7IHJldHVybiBlbC50ZXh0Q29udGVudDsgfVxuICAvLyBUT0RPKHZpY2IpOiByZW1vdmVkIEVsZW1lbnQgdHlwZSBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQgU3R5bGVFbGVtZW50XG4gIHNldFRleHQoZWwsIHZhbHVlOiBzdHJpbmcpIHsgZWwudGV4dENvbnRlbnQgPSB2YWx1ZTsgfVxuICBnZXRWYWx1ZShlbCk6IHN0cmluZyB7IHJldHVybiBlbC52YWx1ZTsgfVxuICBzZXRWYWx1ZShlbCwgdmFsdWU6IHN0cmluZykgeyBlbC52YWx1ZSA9IHZhbHVlOyB9XG4gIGdldENoZWNrZWQoZWwpOiBib29sZWFuIHsgcmV0dXJuIGVsLmNoZWNrZWQ7IH1cbiAgc2V0Q2hlY2tlZChlbCwgdmFsdWU6IGJvb2xlYW4pIHsgZWwuY2hlY2tlZCA9IHZhbHVlOyB9XG4gIGNyZWF0ZUNvbW1lbnQodGV4dDogc3RyaW5nKTogQ29tbWVudCB7IHJldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHRleHQpOyB9XG4gIGNyZWF0ZVRlbXBsYXRlKGh0bWwpOiBIVE1MRWxlbWVudCB7XG4gICAgdmFyIHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgIHQuaW5uZXJIVE1MID0gaHRtbDtcbiAgICByZXR1cm4gdDtcbiAgfVxuICBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIGRvYyA9IGRvY3VtZW50KTogSFRNTEVsZW1lbnQgeyByZXR1cm4gZG9jLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7IH1cbiAgY3JlYXRlRWxlbWVudE5TKG5zLCB0YWdOYW1lLCBkb2MgPSBkb2N1bWVudCk6IEVsZW1lbnQgeyByZXR1cm4gZG9jLmNyZWF0ZUVsZW1lbnROUyhucywgdGFnTmFtZSk7IH1cbiAgY3JlYXRlVGV4dE5vZGUodGV4dDogc3RyaW5nLCBkb2MgPSBkb2N1bWVudCk6IFRleHQgeyByZXR1cm4gZG9jLmNyZWF0ZVRleHROb2RlKHRleHQpOyB9XG4gIGNyZWF0ZVNjcmlwdFRhZyhhdHRyTmFtZTogc3RyaW5nLCBhdHRyVmFsdWU6IHN0cmluZywgZG9jID0gZG9jdW1lbnQpOiBIVE1MU2NyaXB0RWxlbWVudCB7XG4gICAgdmFyIGVsID0gPEhUTUxTY3JpcHRFbGVtZW50PmRvYy5jcmVhdGVFbGVtZW50KCdTQ1JJUFQnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgcmV0dXJuIGVsO1xuICB9XG4gIGNyZWF0ZVN0eWxlRWxlbWVudChjc3M6IHN0cmluZywgZG9jID0gZG9jdW1lbnQpOiBIVE1MU3R5bGVFbGVtZW50IHtcbiAgICB2YXIgc3R5bGUgPSA8SFRNTFN0eWxlRWxlbWVudD5kb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0aGlzLmFwcGVuZENoaWxkKHN0eWxlLCB0aGlzLmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfVxuICBjcmVhdGVTaGFkb3dSb290KGVsOiBIVE1MRWxlbWVudCk6IERvY3VtZW50RnJhZ21lbnQgeyByZXR1cm4gKDxhbnk+ZWwpLmNyZWF0ZVNoYWRvd1Jvb3QoKTsgfVxuICBnZXRTaGFkb3dSb290KGVsOiBIVE1MRWxlbWVudCk6IERvY3VtZW50RnJhZ21lbnQgeyByZXR1cm4gKDxhbnk+ZWwpLnNoYWRvd1Jvb3Q7IH1cbiAgZ2V0SG9zdChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7IHJldHVybiAoPGFueT5lbCkuaG9zdDsgfVxuICBjbG9uZShub2RlOiBOb2RlKTogTm9kZSB7IHJldHVybiBub2RlLmNsb25lTm9kZSh0cnVlKTsgfVxuICBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobmFtZSk7XG4gIH1cbiAgZ2V0RWxlbWVudHNCeVRhZ05hbWUoZWxlbWVudCwgbmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSk7XG4gIH1cbiAgY2xhc3NMaXN0KGVsZW1lbnQpOiBhbnlbXSB7IHJldHVybiA8YW55W10+QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZWxlbWVudC5jbGFzc0xpc3QsIDApOyB9XG4gIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKSB7IGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOyB9XG4gIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKSB7IGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOyB9XG4gIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpOyB9XG4gIHNldFN0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZTogc3RyaW5nLCBzdHlsZVZhbHVlOiBzdHJpbmcpIHtcbiAgICBlbGVtZW50LnN0eWxlW3N0eWxlTmFtZV0gPSBzdHlsZVZhbHVlO1xuICB9XG4gIHJlbW92ZVN0eWxlKGVsZW1lbnQsIHN0eWxlbmFtZTogc3RyaW5nKSB7IGVsZW1lbnQuc3R5bGVbc3R5bGVuYW1lXSA9IG51bGw7IH1cbiAgZ2V0U3R5bGUoZWxlbWVudCwgc3R5bGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gZWxlbWVudC5zdHlsZVtzdHlsZW5hbWVdOyB9XG4gIGhhc1N0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZTogc3RyaW5nLCBzdHlsZVZhbHVlOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXRTdHlsZShlbGVtZW50LCBzdHlsZU5hbWUpIHx8ICcnO1xuICAgIHJldHVybiBzdHlsZVZhbHVlID8gdmFsdWUgPT0gc3R5bGVWYWx1ZSA6IHZhbHVlLmxlbmd0aCA+IDA7XG4gIH1cbiAgdGFnTmFtZShlbGVtZW50KTogc3RyaW5nIHsgcmV0dXJuIGVsZW1lbnQudGFnTmFtZTsgfVxuICBhdHRyaWJ1dGVNYXAoZWxlbWVudCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHZhciByZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHZhciBlbEF0dHJzID0gZWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxBdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGF0dHJpYiA9IGVsQXR0cnNbaV07XG4gICAgICByZXMuc2V0KGF0dHJpYi5uYW1lLCBhdHRyaWIudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGhhc0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKTsgfVxuICBoYXNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZU5TKG5zLCBhdHRyaWJ1dGUpO1xuICB9XG4gIGdldEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9XG4gIGdldEF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5zOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnMsIG5hbWUpO1xuICB9XG4gIHNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHsgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOyB9XG4gIHNldEF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5zOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnMsIG5hbWUsIHZhbHVlKTtcbiAgfVxuICByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcpIHsgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTsgfVxuICByZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHsgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOUyhucywgbmFtZSk7IH1cbiAgdGVtcGxhdGVBd2FyZVJvb3QoZWwpOiBhbnkgeyByZXR1cm4gdGhpcy5pc1RlbXBsYXRlRWxlbWVudChlbCkgPyB0aGlzLmNvbnRlbnQoZWwpIDogZWw7IH1cbiAgY3JlYXRlSHRtbERvY3VtZW50KCk6IEhUTUxEb2N1bWVudCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgnZmFrZVRpdGxlJyk7XG4gIH1cbiAgZGVmYXVsdERvYygpOiBIVE1MRG9jdW1lbnQgeyByZXR1cm4gZG9jdW1lbnQ7IH1cbiAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7dG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwfTtcbiAgICB9XG4gIH1cbiAgZ2V0VGl0bGUoKTogc3RyaW5nIHsgcmV0dXJuIGRvY3VtZW50LnRpdGxlOyB9XG4gIHNldFRpdGxlKG5ld1RpdGxlOiBzdHJpbmcpIHsgZG9jdW1lbnQudGl0bGUgPSBuZXdUaXRsZSB8fCAnJzsgfVxuICBlbGVtZW50TWF0Y2hlcyhuLCBzZWxlY3Rvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdmFyIG1hdGNoZXMgPSBmYWxzZTtcbiAgICBpZiAobiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICBpZiAobi5tYXRjaGVzKSB7XG4gICAgICAgIG1hdGNoZXMgPSBuLm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgICAgfSBlbHNlIGlmIChuLm1zTWF0Y2hlc1NlbGVjdG9yKSB7XG4gICAgICAgIG1hdGNoZXMgPSBuLm1zTWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgIH0gZWxzZSBpZiAobi53ZWJraXRNYXRjaGVzU2VsZWN0b3IpIHtcbiAgICAgICAgbWF0Y2hlcyA9IG4ud2Via2l0TWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cbiAgaXNUZW1wbGF0ZUVsZW1lbnQoZWw6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGVsLm5vZGVOYW1lID09IFwiVEVNUExBVEVcIjtcbiAgfVxuICBpc1RleHROb2RlKG5vZGU6IE5vZGUpOiBib29sZWFuIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFOyB9XG4gIGlzQ29tbWVudE5vZGUobm9kZTogTm9kZSk6IGJvb2xlYW4geyByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5DT01NRU5UX05PREU7IH1cbiAgaXNFbGVtZW50Tm9kZShub2RlOiBOb2RlKTogYm9vbGVhbiB7IHJldHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERTsgfVxuICBoYXNTaGFkb3dSb290KG5vZGUpOiBib29sZWFuIHsgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBpc1ByZXNlbnQobm9kZS5zaGFkb3dSb290KTsgfVxuICBpc1NoYWRvd1Jvb3Qobm9kZSk6IGJvb2xlYW4geyByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQ7IH1cbiAgaW1wb3J0SW50b0RvYyhub2RlOiBOb2RlKTogYW55IHtcbiAgICB2YXIgdG9JbXBvcnQgPSBub2RlO1xuICAgIGlmICh0aGlzLmlzVGVtcGxhdGVFbGVtZW50KG5vZGUpKSB7XG4gICAgICB0b0ltcG9ydCA9IHRoaXMuY29udGVudChub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGRvY3VtZW50LmltcG9ydE5vZGUodG9JbXBvcnQsIHRydWUpO1xuICB9XG4gIGFkb3B0Tm9kZShub2RlOiBOb2RlKTogYW55IHsgcmV0dXJuIGRvY3VtZW50LmFkb3B0Tm9kZShub2RlKTsgfVxuICBnZXRIcmVmKGVsOiBFbGVtZW50KTogc3RyaW5nIHsgcmV0dXJuICg8YW55PmVsKS5ocmVmOyB9XG4gIGdldEV2ZW50S2V5KGV2ZW50KTogc3RyaW5nIHtcbiAgICB2YXIga2V5ID0gZXZlbnQua2V5O1xuICAgIGlmIChpc0JsYW5rKGtleSkpIHtcbiAgICAgIGtleSA9IGV2ZW50LmtleUlkZW50aWZpZXI7XG4gICAgICAvLyBrZXlJZGVudGlmaWVyIGlzIGRlZmluZWQgaW4gdGhlIG9sZCBkcmFmdCBvZiBET00gTGV2ZWwgMyBFdmVudHMgaW1wbGVtZW50ZWQgYnkgQ2hyb21lIGFuZFxuICAgICAgLy8gU2FmYXJpXG4gICAgICAvLyBjZlxuICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwNzEyMjEvZXZlbnRzLmh0bWwjRXZlbnRzLUtleWJvYXJkRXZlbnRzLUludGVyZmFjZXNcbiAgICAgIGlmIChpc0JsYW5rKGtleSkpIHtcbiAgICAgICAgcmV0dXJuICdVbmlkZW50aWZpZWQnO1xuICAgICAgfVxuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdVKycpKSB7XG4gICAgICAgIGtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoa2V5LnN1YnN0cmluZygyKSwgMTYpKTtcbiAgICAgICAgaWYgKGV2ZW50LmxvY2F0aW9uID09PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCAmJiBfY2hyb21lTnVtS2V5UGFkTWFwLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDaHJvbWUgZm9yIG51bWVyaWMga2V5cGFkIGtleXM6XG4gICAgICAgICAgLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE1NTY1NFxuICAgICAgICAgIC8vIDEsIDIsIDMgLi4uIGFyZSByZXBvcnRlZCBhcyBBLCBCLCBDIC4uLlxuICAgICAgICAgIGtleSA9IF9jaHJvbWVOdW1LZXlQYWRNYXBba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoX2tleU1hcC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBrZXkgPSBfa2V5TWFwW2tleV07XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cbiAgZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGFyZ2V0OiBzdHJpbmcpOiBFdmVudFRhcmdldCB7XG4gICAgaWYgKHRhcmdldCA9PSBcIndpbmRvd1wiKSB7XG4gICAgICByZXR1cm4gd2luZG93O1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IFwiZG9jdW1lbnRcIikge1xuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IFwiYm9keVwiKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9XG4gIH1cbiAgZ2V0SGlzdG9yeSgpOiBIaXN0b3J5IHsgcmV0dXJuIHdpbmRvdy5oaXN0b3J5OyB9XG4gIGdldExvY2F0aW9uKCk6IExvY2F0aW9uIHsgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbjsgfVxuICBnZXRCYXNlSHJlZigpOiBzdHJpbmcge1xuICAgIHZhciBocmVmID0gZ2V0QmFzZUVsZW1lbnRIcmVmKCk7XG4gICAgaWYgKGlzQmxhbmsoaHJlZikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcmVsYXRpdmVQYXRoKGhyZWYpO1xuICB9XG4gIHJlc2V0QmFzZUVsZW1lbnQoKTogdm9pZCB7IGJhc2VFbGVtZW50ID0gbnVsbDsgfVxuICBnZXRVc2VyQWdlbnQoKTogc3RyaW5nIHsgcmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50OyB9XG4gIHNldERhdGEoZWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2RhdGEtJyArIG5hbWUsIHZhbHVlKTtcbiAgfVxuICBnZXREYXRhKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZShlbGVtZW50LCAnZGF0YS0nICsgbmFtZSk7IH1cbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTogYW55IHsgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7IH1cbiAgLy8gVE9ETyh0Ym9zY2gpOiBtb3ZlIHRoaXMgaW50byBhIHNlcGFyYXRlIGVudmlyb25tZW50IGNsYXNzIG9uY2Ugd2UgaGF2ZSBpdFxuICBzZXRHbG9iYWxWYXIocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7IHNldFZhbHVlT25QYXRoKGdsb2JhbCwgcGF0aCwgdmFsdWUpOyB9XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk6IG51bWJlciB7IHJldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTsgfVxuICBjYW5jZWxBbmltYXRpb25GcmFtZShpZDogbnVtYmVyKSB7IHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShpZCk7IH1cbiAgcGVyZm9ybWFuY2VOb3coKTogbnVtYmVyIHtcbiAgICAvLyBwZXJmb3JtYW5jZS5ub3coKSBpcyBub3QgYXZhaWxhYmxlIGluIGFsbCBicm93c2Vycywgc2VlXG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9cGVyZm9ybWFuY2Uubm93XG4gICAgaWYgKGlzUHJlc2VudCh3aW5kb3cucGVyZm9ybWFuY2UpICYmIGlzUHJlc2VudCh3aW5kb3cucGVyZm9ybWFuY2Uubm93KSkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIERhdGVXcmFwcGVyLnRvTWlsbGlzKERhdGVXcmFwcGVyLm5vdygpKTtcbiAgICB9XG4gIH1cbn1cblxuXG52YXIgYmFzZUVsZW1lbnQgPSBudWxsO1xuZnVuY3Rpb24gZ2V0QmFzZUVsZW1lbnRIcmVmKCk6IHN0cmluZyB7XG4gIGlmIChpc0JsYW5rKGJhc2VFbGVtZW50KSkge1xuICAgIGJhc2VFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYmFzZScpO1xuICAgIGlmIChpc0JsYW5rKGJhc2VFbGVtZW50KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIHJldHVybiBiYXNlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbn1cblxuLy8gYmFzZWQgb24gdXJsVXRpbHMuanMgaW4gQW5ndWxhckpTIDFcbnZhciB1cmxQYXJzaW5nTm9kZSA9IG51bGw7XG5mdW5jdGlvbiByZWxhdGl2ZVBhdGgodXJsKTogc3RyaW5nIHtcbiAgaWYgKGlzQmxhbmsodXJsUGFyc2luZ05vZGUpKSB7XG4gICAgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgfVxuICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICByZXR1cm4gKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/IHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar core_1 = require('angular2/core');\r\nvar PublicTestability = (function () {\r\n function PublicTestability(testability) {\r\n this._testability = testability;\r\n }\r\n PublicTestability.prototype.isStable = function () { return this._testability.isStable(); };\r\n PublicTestability.prototype.whenStable = function (callback) { this._testability.whenStable(callback); };\r\n PublicTestability.prototype.findBindings = function (using, provider, exactMatch) {\r\n return this.findProviders(using, provider, exactMatch);\r\n };\r\n PublicTestability.prototype.findProviders = function (using, provider, exactMatch) {\r\n return this._testability.findBindings(using, provider, exactMatch);\r\n };\r\n return PublicTestability;\r\n}());\r\nvar BrowserGetTestability = (function () {\r\n function BrowserGetTestability() {\r\n }\r\n BrowserGetTestability.init = function () { core_1.setTestabilityGetter(new BrowserGetTestability()); };\r\n BrowserGetTestability.prototype.addToWindow = function (registry) {\r\n lang_1.global.getAngularTestability = function (elem, findInAncestors) {\r\n if (findInAncestors === void 0) { findInAncestors = true; }\r\n var testability = registry.findTestabilityInTree(elem, findInAncestors);\r\n if (testability == null) {\r\n throw new Error('Could not find testability for element.');\r\n }\r\n return new PublicTestability(testability);\r\n };\r\n lang_1.global.getAllAngularTestabilities = function () {\r\n var testabilities = registry.getAllTestabilities();\r\n return testabilities.map(function (testability) { return new PublicTestability(testability); });\r\n };\r\n lang_1.global.getAllAngularRootElements = function () { return registry.getAllRootElements(); };\r\n var whenAllStable = function (callback) {\r\n var testabilities = lang_1.global.getAllAngularTestabilities();\r\n var count = testabilities.length;\r\n var didWork = false;\r\n var decrement = function (didWork_) {\r\n didWork = didWork || didWork_;\r\n count--;\r\n if (count == 0) {\r\n callback(didWork);\r\n }\r\n };\r\n testabilities.forEach(function (testability) { testability.whenStable(decrement); });\r\n };\r\n if (!lang_1.global.frameworkStabilizers) {\r\n lang_1.global.frameworkStabilizers = collection_1.ListWrapper.createGrowableSize(0);\r\n }\r\n lang_1.global.frameworkStabilizers.push(whenAllStable);\r\n };\r\n BrowserGetTestability.prototype.findTestabilityInTree = function (registry, elem, findInAncestors) {\r\n if (elem == null) {\r\n return null;\r\n }\r\n var t = registry.getTestability(elem);\r\n if (lang_1.isPresent(t)) {\r\n return t;\r\n }\r\n else if (!findInAncestors) {\r\n return null;\r\n }\r\n if (dom_adapter_1.DOM.isShadowRoot(elem)) {\r\n return this.findTestabilityInTree(registry, dom_adapter_1.DOM.getHost(elem), true);\r\n }\r\n return this.findTestabilityInTree(registry, dom_adapter_1.DOM.parentElement(elem), true);\r\n };\r\n return BrowserGetTestability;\r\n}());\r\nexports.BrowserGetTestability = BrowserGetTestability;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90ZXN0YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFDNUUscUJBQW1ELDBCQUEwQixDQUFDLENBQUE7QUFJOUUsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFFMUQscUJBTU8sZUFBZSxDQUFDLENBQUE7QUFFdkI7SUFJRSwyQkFBWSxXQUF3QjtRQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQUMsQ0FBQztJQUUxRSxvQ0FBUSxHQUFSLGNBQXNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1RCxzQ0FBVSxHQUFWLFVBQVcsUUFBa0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUUsd0NBQVksR0FBWixVQUFhLEtBQVUsRUFBRSxRQUFnQixFQUFFLFVBQW1CO1FBQzVELE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHlDQUFhLEdBQWIsVUFBYyxLQUFVLEVBQUUsUUFBZ0IsRUFBRSxVQUFtQjtRQUM3RCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0gsd0JBQUM7QUFBRCxDQUFDLEFBakJELElBaUJDO0FBRUQ7SUFBQTtJQXVEQSxDQUFDO0lBdERRLDBCQUFJLEdBQVgsY0FBZ0IsMkJBQW9CLENBQUMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBFLDJDQUFXLEdBQVgsVUFBWSxRQUE2QjtRQUN2QyxhQUFNLENBQUMscUJBQXFCLEdBQUcsVUFBQyxJQUFTLEVBQUUsZUFBK0I7WUFBL0IsK0JBQStCLEdBQS9CLHNCQUErQjtZQUN4RSxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3hFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztRQUVGLGFBQU0sQ0FBQywwQkFBMEIsR0FBRztZQUNsQyxJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFdBQVcsSUFBTyxNQUFNLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLENBQUMsQ0FBQztRQUVGLGFBQU0sQ0FBQyx5QkFBeUIsR0FBRyxjQUFNLE9BQUEsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEVBQTdCLENBQTZCLENBQUM7UUFFdkUsSUFBSSxhQUFhLEdBQUcsVUFBQyxRQUFRO1lBQzNCLElBQUksYUFBYSxHQUFHLGFBQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3hELElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDakMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksU0FBUyxHQUFHLFVBQVMsUUFBUTtnQkFDL0IsT0FBTyxHQUFHLE9BQU8sSUFBSSxRQUFRLENBQUM7Z0JBQzlCLEtBQUssRUFBRSxDQUFDO2dCQUNSLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNmLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztZQUNILENBQUMsQ0FBQztZQUNGLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBUyxXQUFXLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUNqQyxhQUFNLENBQUMsb0JBQW9CLEdBQUcsd0JBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsYUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQscURBQXFCLEdBQXJCLFVBQXNCLFFBQTZCLEVBQUUsSUFBUyxFQUN4QyxlQUF3QjtRQUM1QyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsaUJBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLGlCQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxpQkFBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBQ0gsNEJBQUM7QUFBRCxDQUFDLEFBdkRELElBdURDO0FBdkRZLDZCQUFxQix3QkF1RGpDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcCwgTWFwV3JhcHBlciwgTGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0NPTlNULCBDT05TVF9FWFBSLCBnbG9iYWwsIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbiwgV3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7UHJvbWlzZVdyYXBwZXIsIE9ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcblxuaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuXG5pbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBUZXN0YWJpbGl0eVJlZ2lzdHJ5LFxuICBUZXN0YWJpbGl0eSxcbiAgR2V0VGVzdGFiaWxpdHksXG4gIHNldFRlc3RhYmlsaXR5R2V0dGVyXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5jbGFzcyBQdWJsaWNUZXN0YWJpbGl0eSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Rlc3RhYmlsaXR5OiBUZXN0YWJpbGl0eTtcblxuICBjb25zdHJ1Y3Rvcih0ZXN0YWJpbGl0eTogVGVzdGFiaWxpdHkpIHsgdGhpcy5fdGVzdGFiaWxpdHkgPSB0ZXN0YWJpbGl0eTsgfVxuXG4gIGlzU3RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdGVzdGFiaWxpdHkuaXNTdGFibGUoKTsgfVxuXG4gIHdoZW5TdGFibGUoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7IHRoaXMuX3Rlc3RhYmlsaXR5LndoZW5TdGFibGUoY2FsbGJhY2spOyB9XG5cbiAgZmluZEJpbmRpbmdzKHVzaW5nOiBhbnksIHByb3ZpZGVyOiBzdHJpbmcsIGV4YWN0TWF0Y2g6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFByb3ZpZGVycyh1c2luZywgcHJvdmlkZXIsIGV4YWN0TWF0Y2gpO1xuICB9XG5cbiAgZmluZFByb3ZpZGVycyh1c2luZzogYW55LCBwcm92aWRlcjogc3RyaW5nLCBleGFjdE1hdGNoOiBib29sZWFuKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl90ZXN0YWJpbGl0eS5maW5kQmluZGluZ3ModXNpbmcsIHByb3ZpZGVyLCBleGFjdE1hdGNoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnJvd3NlckdldFRlc3RhYmlsaXR5IGltcGxlbWVudHMgR2V0VGVzdGFiaWxpdHkge1xuICBzdGF0aWMgaW5pdCgpIHsgc2V0VGVzdGFiaWxpdHlHZXR0ZXIobmV3IEJyb3dzZXJHZXRUZXN0YWJpbGl0eSgpKTsgfVxuXG4gIGFkZFRvV2luZG93KHJlZ2lzdHJ5OiBUZXN0YWJpbGl0eVJlZ2lzdHJ5KTogdm9pZCB7XG4gICAgZ2xvYmFsLmdldEFuZ3VsYXJUZXN0YWJpbGl0eSA9IChlbGVtOiBhbnksIGZpbmRJbkFuY2VzdG9yczogYm9vbGVhbiA9IHRydWUpID0+IHtcbiAgICAgIHZhciB0ZXN0YWJpbGl0eSA9IHJlZ2lzdHJ5LmZpbmRUZXN0YWJpbGl0eUluVHJlZShlbGVtLCBmaW5kSW5BbmNlc3RvcnMpO1xuICAgICAgaWYgKHRlc3RhYmlsaXR5ID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCB0ZXN0YWJpbGl0eSBmb3IgZWxlbWVudC4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHVibGljVGVzdGFiaWxpdHkodGVzdGFiaWxpdHkpO1xuICAgIH07XG5cbiAgICBnbG9iYWwuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMgPSAoKSA9PiB7XG4gICAgICB2YXIgdGVzdGFiaWxpdGllcyA9IHJlZ2lzdHJ5LmdldEFsbFRlc3RhYmlsaXRpZXMoKTtcbiAgICAgIHJldHVybiB0ZXN0YWJpbGl0aWVzLm1hcCgodGVzdGFiaWxpdHkpID0+IHsgcmV0dXJuIG5ldyBQdWJsaWNUZXN0YWJpbGl0eSh0ZXN0YWJpbGl0eSk7IH0pO1xuICAgIH07XG5cbiAgICBnbG9iYWwuZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cyA9ICgpID0+IHJlZ2lzdHJ5LmdldEFsbFJvb3RFbGVtZW50cygpO1xuXG4gICAgdmFyIHdoZW5BbGxTdGFibGUgPSAoY2FsbGJhY2spID0+IHtcbiAgICAgIHZhciB0ZXN0YWJpbGl0aWVzID0gZ2xvYmFsLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCk7XG4gICAgICB2YXIgY291bnQgPSB0ZXN0YWJpbGl0aWVzLmxlbmd0aDtcbiAgICAgIHZhciBkaWRXb3JrID0gZmFsc2U7XG4gICAgICB2YXIgZGVjcmVtZW50ID0gZnVuY3Rpb24oZGlkV29ya18pIHtcbiAgICAgICAgZGlkV29yayA9IGRpZFdvcmsgfHwgZGlkV29ya187XG4gICAgICAgIGNvdW50LS07XG4gICAgICAgIGlmIChjb3VudCA9PSAwKSB7XG4gICAgICAgICAgY2FsbGJhY2soZGlkV29yayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0ZXN0YWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24odGVzdGFiaWxpdHkpIHsgdGVzdGFiaWxpdHkud2hlblN0YWJsZShkZWNyZW1lbnQpOyB9KTtcbiAgICB9O1xuXG4gICAgaWYgKCFnbG9iYWwuZnJhbWV3b3JrU3RhYmlsaXplcnMpIHtcbiAgICAgIGdsb2JhbC5mcmFtZXdvcmtTdGFiaWxpemVycyA9IExpc3RXcmFwcGVyLmNyZWF0ZUdyb3dhYmxlU2l6ZSgwKTtcbiAgICB9XG4gICAgZ2xvYmFsLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2god2hlbkFsbFN0YWJsZSk7XG4gIH1cblxuICBmaW5kVGVzdGFiaWxpdHlJblRyZWUocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnksIGVsZW06IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRJbkFuY2VzdG9yczogYm9vbGVhbik6IFRlc3RhYmlsaXR5IHtcbiAgICBpZiAoZWxlbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHQgPSByZWdpc3RyeS5nZXRUZXN0YWJpbGl0eShlbGVtKTtcbiAgICBpZiAoaXNQcmVzZW50KHQpKSB7XG4gICAgICByZXR1cm4gdDtcbiAgICB9IGVsc2UgaWYgKCFmaW5kSW5BbmNlc3RvcnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoRE9NLmlzU2hhZG93Um9vdChlbGVtKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHJlZ2lzdHJ5LCBET00uZ2V0SG9zdChlbGVtKSwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZShyZWdpc3RyeSwgRE9NLnBhcmVudEVsZW1lbnQoZWxlbSksIHRydWUpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\n/**\r\n * An implementation of XHR that uses a template cache to avoid doing an actual\r\n * XHR.\r\n *\r\n * The template cache needs to be built and loaded into window.$templateCache\r\n * via a separate mechanism.\r\n */\r\nvar CachedXHR = (function (_super) {\r\n __extends(CachedXHR, _super);\r\n function CachedXHR() {\r\n _super.call(this);\r\n this._cache = lang_1.global.$templateCache;\r\n if (this._cache == null) {\r\n throw new exceptions_1.BaseException('CachedXHR: Template cache was not found in $templateCache.');\r\n }\r\n }\r\n CachedXHR.prototype.get = function (url) {\r\n if (this._cache.hasOwnProperty(url)) {\r\n return promise_1.PromiseWrapper.resolve(this._cache[url]);\r\n }\r\n else {\r\n return promise_1.PromiseWrapper.reject('CachedXHR: Did not find cached template for ' + url, null);\r\n }\r\n };\r\n return CachedXHR;\r\n}(xhr_1.XHR));\r\nexports.CachedXHR = CachedXHR;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyX2NhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIveGhyX2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9CQUFrQiwyQkFBMkIsQ0FBQyxDQUFBO0FBQzlDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELHFCQUFxQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2hELHdCQUE2Qiw2QkFBNkIsQ0FBQyxDQUFBO0FBRTNEOzs7Ozs7R0FNRztBQUNIO0lBQStCLDZCQUFHO0lBR2hDO1FBQ0UsaUJBQU8sQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQVMsYUFBTyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEIsTUFBTSxJQUFJLDBCQUFhLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUN4RixDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUFHLEdBQUgsVUFBSSxHQUFXO1FBQ2IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyx3QkFBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLHdCQUFjLENBQUMsTUFBTSxDQUFDLDhDQUE4QyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRixDQUFDO0lBQ0gsQ0FBQztJQUNILGdCQUFDO0FBQUQsQ0FBQyxBQWxCRCxDQUErQixTQUFHLEdBa0JqQztBQWxCWSxpQkFBUyxZQWtCckIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7WEhSfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIveGhyJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7Z2xvYmFsfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtQcm9taXNlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9wcm9taXNlJztcblxuLyoqXG4gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiBYSFIgdGhhdCB1c2VzIGEgdGVtcGxhdGUgY2FjaGUgdG8gYXZvaWQgZG9pbmcgYW4gYWN0dWFsXG4gKiBYSFIuXG4gKlxuICogVGhlIHRlbXBsYXRlIGNhY2hlIG5lZWRzIHRvIGJlIGJ1aWx0IGFuZCBsb2FkZWQgaW50byB3aW5kb3cuJHRlbXBsYXRlQ2FjaGVcbiAqIHZpYSBhIHNlcGFyYXRlIG1lY2hhbmlzbS5cbiAqL1xuZXhwb3J0IGNsYXNzIENhY2hlZFhIUiBleHRlbmRzIFhIUiB7XG4gIHByaXZhdGUgX2NhY2hlOiB7W3VybDogc3RyaW5nXTogc3RyaW5nfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NhY2hlID0gKDxhbnk+Z2xvYmFsKS4kdGVtcGxhdGVDYWNoZTtcbiAgICBpZiAodGhpcy5fY2FjaGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ0NhY2hlZFhIUjogVGVtcGxhdGUgY2FjaGUgd2FzIG5vdCBmb3VuZCBpbiAkdGVtcGxhdGVDYWNoZS4nKTtcbiAgICB9XG4gIH1cblxuICBnZXQodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLl9jYWNoZS5oYXNPd25Qcm9wZXJ0eSh1cmwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZVdyYXBwZXIucmVzb2x2ZSh0aGlzLl9jYWNoZVt1cmxdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLnJlamVjdCgnQ2FjaGVkWEhSOiBEaWQgbm90IGZpbmQgY2FjaGVkIHRlbXBsYXRlIGZvciAnICsgdXJsLCBudWxsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * This is here because DART requires it. It is noop in JS.\r\n */\r\nfunction wtfInit() { }\r\nexports.wtfInit = wtfInit;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3RmX2luaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9wcm9maWxlL3d0Zl9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRztBQUNILHFCQUEyQixDQUFDO0FBQVosZUFBTyxVQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgaXMgaGVyZSBiZWNhdXNlIERBUlQgcmVxdWlyZXMgaXQuIEl0IGlzIG5vb3AgaW4gSlMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3dGZJbml0KCkge31cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar core_1 = require('angular2/core');\r\nvar event_manager_1 = require('./event_manager');\r\nvar DomEventsPlugin = (function (_super) {\r\n __extends(DomEventsPlugin, _super);\r\n function DomEventsPlugin() {\r\n _super.apply(this, arguments);\r\n }\r\n // This plugin should come last in the list of plugins, because it accepts all\r\n // events.\r\n DomEventsPlugin.prototype.supports = function (eventName) { return true; };\r\n DomEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n var zone = this.manager.getZone();\r\n var outsideHandler = function (event) { return zone.runGuarded(function () { return handler(event); }); };\r\n return this.manager.getZone().runOutsideAngular(function () { return dom_adapter_1.DOM.onAndCancel(element, eventName, outsideHandler); });\r\n };\r\n DomEventsPlugin.prototype.addGlobalEventListener = function (target, eventName, handler) {\r\n var element = dom_adapter_1.DOM.getGlobalEventTarget(target);\r\n var zone = this.manager.getZone();\r\n var outsideHandler = function (event) { return zone.runGuarded(function () { return handler(event); }); };\r\n return this.manager.getZone().runOutsideAngular(function () { return dom_adapter_1.DOM.onAndCancel(element, eventName, outsideHandler); });\r\n };\r\n DomEventsPlugin = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DomEventsPlugin);\r\n return DomEventsPlugin;\r\n}(event_manager_1.EventManagerPlugin));\r\nexports.DomEventsPlugin = DomEventsPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX2V2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2RvbV9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQscUJBQXlCLGVBQWUsQ0FBQyxDQUFBO0FBQ3pDLDhCQUErQyxpQkFBaUIsQ0FBQyxDQUFBO0FBR2pFO0lBQXFDLG1DQUFrQjtJQUF2RDtRQUFxQyw4QkFBa0I7SUFtQnZELENBQUM7SUFsQkMsOEVBQThFO0lBQzlFLFVBQVU7SUFDVixrQ0FBUSxHQUFSLFVBQVMsU0FBaUIsSUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVyRCwwQ0FBZ0IsR0FBaEIsVUFBaUIsT0FBb0IsRUFBRSxTQUFpQixFQUFFLE9BQWlCO1FBQ3pFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsSUFBSSxjQUFjLEdBQUcsVUFBQyxLQUFLLElBQUssT0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQU0sT0FBQSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQWQsQ0FBYyxDQUFDLEVBQXJDLENBQXFDLENBQUM7UUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQzNDLGNBQU0sT0FBQSxpQkFBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFuRCxDQUFtRCxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELGdEQUFzQixHQUF0QixVQUF1QixNQUFjLEVBQUUsU0FBaUIsRUFBRSxPQUFpQjtRQUN6RSxJQUFJLE9BQU8sR0FBRyxpQkFBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsSUFBSSxjQUFjLEdBQUcsVUFBQyxLQUFLLElBQUssT0FBQSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQU0sT0FBQSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQWQsQ0FBYyxDQUFDLEVBQXJDLENBQXFDLENBQUM7UUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQzNDLGNBQU0sT0FBQSxpQkFBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFuRCxDQUFtRCxDQUFDLENBQUM7SUFDakUsQ0FBQztJQW5CSDtRQUFDLGlCQUFVLEVBQUU7O3VCQUFBO0lBb0JiLHNCQUFDO0FBQUQsQ0FBQyxBQW5CRCxDQUFxQyxrQ0FBa0IsR0FtQnREO0FBbkJZLHVCQUFlLGtCQW1CM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0V2ZW50TWFuYWdlclBsdWdpbiwgRXZlbnRNYW5hZ2VyfSBmcm9tICcuL2V2ZW50X21hbmFnZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG9tRXZlbnRzUGx1Z2luIGV4dGVuZHMgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcbiAgLy8gVGhpcyBwbHVnaW4gc2hvdWxkIGNvbWUgbGFzdCBpbiB0aGUgbGlzdCBvZiBwbHVnaW5zLCBiZWNhdXNlIGl0IGFjY2VwdHMgYWxsXG4gIC8vIGV2ZW50cy5cbiAgc3VwcG9ydHMoZXZlbnROYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRydWU7IH1cblxuICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgaGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgdmFyIHpvbmUgPSB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO1xuICAgIHZhciBvdXRzaWRlSGFuZGxlciA9IChldmVudCkgPT4gem9uZS5ydW5HdWFyZGVkKCgpID0+IGhhbmRsZXIoZXZlbnQpKTtcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcihcbiAgICAgICAgKCkgPT4gRE9NLm9uQW5kQ2FuY2VsKGVsZW1lbnQsIGV2ZW50TmFtZSwgb3V0c2lkZUhhbmRsZXIpKTtcbiAgfVxuXG4gIGFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodGFyZ2V0OiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB2YXIgZWxlbWVudCA9IERPTS5nZXRHbG9iYWxFdmVudFRhcmdldCh0YXJnZXQpO1xuICAgIHZhciB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcbiAgICB2YXIgb3V0c2lkZUhhbmRsZXIgPSAoZXZlbnQpID0+IHpvbmUucnVuR3VhcmRlZCgoKSA9PiBoYW5kbGVyKGV2ZW50KSk7XG4gICAgcmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoXG4gICAgICAgICgpID0+IERPTS5vbkFuZENhbmNlbChlbGVtZW50LCBldmVudE5hbWUsIG91dHNpZGVIYW5kbGVyKSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\n/**\r\n * Predicates for use with {@link DebugElement}'s query functions.\r\n */\r\nvar By = (function () {\r\n function By() {\r\n }\r\n /**\r\n * Match all elements.\r\n *\r\n * ## Example\r\n *\r\n * {@example platform/dom/debug/ts/by/by.ts region='by_all'}\r\n */\r\n By.all = function () { return function (debugElement) { return true; }; };\r\n /**\r\n * Match elements by the given CSS selector.\r\n *\r\n * ## Example\r\n *\r\n * {@example platform/dom/debug/ts/by/by.ts region='by_css'}\r\n */\r\n By.css = function (selector) {\r\n return function (debugElement) {\r\n return lang_1.isPresent(debugElement.nativeElement) ?\r\n dom_adapter_1.DOM.elementMatches(debugElement.nativeElement, selector) :\r\n false;\r\n };\r\n };\r\n /**\r\n * Match elements that have the given directive present.\r\n *\r\n * ## Example\r\n *\r\n * {@example platform/dom/debug/ts/by/by.ts region='by_directive'}\r\n */\r\n By.directive = function (type) {\r\n return function (debugElement) { return debugElement.providerTokens.indexOf(type) !== -1; };\r\n };\r\n return By;\r\n}());\r\nexports.By = By;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RlYnVnL2J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUVsRSw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUcxRDs7R0FFRztBQUNIO0lBQUE7SUFtQ0EsQ0FBQztJQWxDQzs7Ozs7O09BTUc7SUFDSSxNQUFHLEdBQVYsY0FBd0MsTUFBTSxDQUFDLFVBQUMsWUFBWSxJQUFLLE9BQUEsSUFBSSxFQUFKLENBQUksQ0FBQyxDQUFDLENBQUM7SUFFeEU7Ozs7OztPQU1HO0lBQ0ksTUFBRyxHQUFWLFVBQVcsUUFBZ0I7UUFDekIsTUFBTSxDQUFDLFVBQUMsWUFBWTtZQUNsQixNQUFNLENBQUMsZ0JBQVMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO2dCQUNqQyxpQkFBRyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztnQkFDeEQsS0FBSyxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxZQUFTLEdBQWhCLFVBQWlCLElBQVU7UUFDekIsTUFBTSxDQUFDLFVBQUMsWUFBWSxJQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0gsU0FBQztBQUFELENBQUMsQUFuQ0QsSUFtQ0M7QUFuQ1ksVUFBRSxLQW1DZCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlLCBpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7RGVidWdFbGVtZW50fSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuLyoqXG4gKiBQcmVkaWNhdGVzIGZvciB1c2Ugd2l0aCB7QGxpbmsgRGVidWdFbGVtZW50fSdzIHF1ZXJ5IGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ5IHtcbiAgLyoqXG4gICAqIE1hdGNoIGFsbCBlbGVtZW50cy5cbiAgICpcbiAgICogIyMgRXhhbXBsZVxuICAgKlxuICAgKiB7QGV4YW1wbGUgcGxhdGZvcm0vZG9tL2RlYnVnL3RzL2J5L2J5LnRzIHJlZ2lvbj0nYnlfYWxsJ31cbiAgICovXG4gIHN0YXRpYyBhbGwoKTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4geyByZXR1cm4gKGRlYnVnRWxlbWVudCkgPT4gdHJ1ZTsgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBlbGVtZW50cyBieSB0aGUgZ2l2ZW4gQ1NTIHNlbGVjdG9yLlxuICAgKlxuICAgKiAjIyBFeGFtcGxlXG4gICAqXG4gICAqIHtAZXhhbXBsZSBwbGF0Zm9ybS9kb20vZGVidWcvdHMvYnkvYnkudHMgcmVnaW9uPSdieV9jc3MnfVxuICAgKi9cbiAgc3RhdGljIGNzcyhzZWxlY3Rvcjogc3RyaW5nKTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4ge1xuICAgIHJldHVybiAoZGVidWdFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KGRlYnVnRWxlbWVudC5uYXRpdmVFbGVtZW50KSA/XG4gICAgICAgICAgICAgICAgIERPTS5lbGVtZW50TWF0Y2hlcyhkZWJ1Z0VsZW1lbnQubmF0aXZlRWxlbWVudCwgc2VsZWN0b3IpIDpcbiAgICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBlbGVtZW50cyB0aGF0IGhhdmUgdGhlIGdpdmVuIGRpcmVjdGl2ZSBwcmVzZW50LlxuICAgKlxuICAgKiAjIyBFeGFtcGxlXG4gICAqXG4gICAqIHtAZXhhbXBsZSBwbGF0Zm9ybS9kb20vZGVidWcvdHMvYnkvYnkudHMgcmVnaW9uPSdieV9kaXJlY3RpdmUnfVxuICAgKi9cbiAgc3RhdGljIGRpcmVjdGl2ZSh0eXBlOiBUeXBlKTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4ge1xuICAgIHJldHVybiAoZGVidWdFbGVtZW50KSA9PiB7IHJldHVybiBkZWJ1Z0VsZW1lbnQucHJvdmlkZXJUb2tlbnMuaW5kZXhPZih0eXBlKSAhPT0gLTE7IH07XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar CssAnimationOptions = (function () {\r\n function CssAnimationOptions() {\r\n /** classes to be added to the element */\r\n this.classesToAdd = [];\r\n /** classes to be removed from the element */\r\n this.classesToRemove = [];\r\n /** classes to be added for the duration of the animation */\r\n this.animationClasses = [];\r\n }\r\n return CssAnimationOptions;\r\n}());\r\nexports.CssAnimationOptions = CssAnimationOptions;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzX2FuaW1hdGlvbl9vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2FuaW1hdGUvY3NzX2FuaW1hdGlvbl9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUFBO1FBT0UseUNBQXlDO1FBQ3pDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBRTVCLDZDQUE2QztRQUM3QyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQscUJBQWdCLEdBQWEsRUFBRSxDQUFDO0lBT2xDLENBQUM7SUFBRCwwQkFBQztBQUFELENBQUMsQUFyQkQsSUFxQkM7QUFyQlksMkJBQW1CLHNCQXFCL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDc3NBbmltYXRpb25PcHRpb25zIHtcbiAgLyoqIGluaXRpYWwgc3R5bGVzIGZvciB0aGUgZWxlbWVudCAqL1xuICBmcm9tU3R5bGVzOiB7W2tleTogc3RyaW5nXTogYW55fTtcblxuICAvKiogZGVzdGluYXRpb24gc3R5bGVzIGZvciB0aGUgZWxlbWVudCAqL1xuICB0b1N0eWxlczoge1trZXk6IHN0cmluZ106IGFueX07XG5cbiAgLyoqIGNsYXNzZXMgdG8gYmUgYWRkZWQgdG8gdGhlIGVsZW1lbnQgKi9cbiAgY2xhc3Nlc1RvQWRkOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBjbGFzc2VzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZWxlbWVudCAqL1xuICBjbGFzc2VzVG9SZW1vdmU6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIGNsYXNzZXMgdG8gYmUgYWRkZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uICovXG4gIGFuaW1hdGlvbkNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIG92ZXJyaWRlIHRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uIChpbiBtaWxsaXNlY29uZHMpICovXG4gIGR1cmF0aW9uOiBudW1iZXI7XG5cbiAgLyoqIG92ZXJyaWRlIHRoZSB0cmFuc2l0aW9uIGRlbGF5IChpbiBtaWxsaXNlY29uZHMpICovXG4gIGRlbGF5OiBudW1iZXI7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar math_1 = require('angular2/src/facade/math');\r\nvar util_1 = require('angular2/src/platform/dom/util');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar Animation = (function () {\r\n /**\r\n * Stores the start time and starts the animation\r\n * @param element\r\n * @param data\r\n * @param browserDetails\r\n */\r\n function Animation(element, data, browserDetails) {\r\n var _this = this;\r\n this.element = element;\r\n this.data = data;\r\n this.browserDetails = browserDetails;\r\n /** functions to be called upon completion */\r\n this.callbacks = [];\r\n /** functions for removing event listeners */\r\n this.eventClearFunctions = [];\r\n /** flag used to track whether or not the animation has finished */\r\n this.completed = false;\r\n this._stringPrefix = '';\r\n this.startTime = lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());\r\n this._stringPrefix = dom_adapter_1.DOM.getAnimationPrefix();\r\n this.setup();\r\n this.wait(function (timestamp) { return _this.start(); });\r\n }\r\n Object.defineProperty(Animation.prototype, \"totalTime\", {\r\n /** total amount of time that the animation should take including delay */\r\n get: function () {\r\n var delay = this.computedDelay != null ? this.computedDelay : 0;\r\n var duration = this.computedDuration != null ? this.computedDuration : 0;\r\n return delay + duration;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Animation.prototype.wait = function (callback) {\r\n // Firefox requires 2 frames for some reason\r\n this.browserDetails.raf(callback, 2);\r\n };\r\n /**\r\n * Sets up the initial styles before the animation is started\r\n */\r\n Animation.prototype.setup = function () {\r\n if (this.data.fromStyles != null)\r\n this.applyStyles(this.data.fromStyles);\r\n if (this.data.duration != null)\r\n this.applyStyles({ 'transitionDuration': this.data.duration.toString() + 'ms' });\r\n if (this.data.delay != null)\r\n this.applyStyles({ 'transitionDelay': this.data.delay.toString() + 'ms' });\r\n };\r\n /**\r\n * After the initial setup has occurred, this method adds the animation styles\r\n */\r\n Animation.prototype.start = function () {\r\n this.addClasses(this.data.classesToAdd);\r\n this.addClasses(this.data.animationClasses);\r\n this.removeClasses(this.data.classesToRemove);\r\n if (this.data.toStyles != null)\r\n this.applyStyles(this.data.toStyles);\r\n var computedStyles = dom_adapter_1.DOM.getComputedStyle(this.element);\r\n this.computedDelay =\r\n math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-delay')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-delay')));\r\n this.computedDuration = math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-duration')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-duration')));\r\n this.addEvents();\r\n };\r\n /**\r\n * Applies the provided styles to the element\r\n * @param styles\r\n */\r\n Animation.prototype.applyStyles = function (styles) {\r\n var _this = this;\r\n collection_1.StringMapWrapper.forEach(styles, function (value, key) {\r\n var dashCaseKey = util_1.camelCaseToDashCase(key);\r\n if (lang_1.isPresent(dom_adapter_1.DOM.getStyle(_this.element, dashCaseKey))) {\r\n dom_adapter_1.DOM.setStyle(_this.element, dashCaseKey, value.toString());\r\n }\r\n else {\r\n dom_adapter_1.DOM.setStyle(_this.element, _this._stringPrefix + dashCaseKey, value.toString());\r\n }\r\n });\r\n };\r\n /**\r\n * Adds the provided classes to the element\r\n * @param classes\r\n */\r\n Animation.prototype.addClasses = function (classes) {\r\n for (var i = 0, len = classes.length; i < len; i++)\r\n dom_adapter_1.DOM.addClass(this.element, classes[i]);\r\n };\r\n /**\r\n * Removes the provided classes from the element\r\n * @param classes\r\n */\r\n Animation.prototype.removeClasses = function (classes) {\r\n for (var i = 0, len = classes.length; i < len; i++)\r\n dom_adapter_1.DOM.removeClass(this.element, classes[i]);\r\n };\r\n /**\r\n * Adds events to track when animations have finished\r\n */\r\n Animation.prototype.addEvents = function () {\r\n var _this = this;\r\n if (this.totalTime > 0) {\r\n this.eventClearFunctions.push(dom_adapter_1.DOM.onAndCancel(this.element, dom_adapter_1.DOM.getTransitionEnd(), function (event) { return _this.handleAnimationEvent(event); }));\r\n }\r\n else {\r\n this.handleAnimationCompleted();\r\n }\r\n };\r\n Animation.prototype.handleAnimationEvent = function (event) {\r\n var elapsedTime = math_1.Math.round(event.elapsedTime * 1000);\r\n if (!this.browserDetails.elapsedTimeIncludesDelay)\r\n elapsedTime += this.computedDelay;\r\n event.stopPropagation();\r\n if (elapsedTime >= this.totalTime)\r\n this.handleAnimationCompleted();\r\n };\r\n /**\r\n * Runs all animation callbacks and removes temporary classes\r\n */\r\n Animation.prototype.handleAnimationCompleted = function () {\r\n this.removeClasses(this.data.animationClasses);\r\n this.callbacks.forEach(function (callback) { return callback(); });\r\n this.callbacks = [];\r\n this.eventClearFunctions.forEach(function (fn) { return fn(); });\r\n this.eventClearFunctions = [];\r\n this.completed = true;\r\n };\r\n /**\r\n * Adds animation callbacks to be called upon completion\r\n * @param callback\r\n * @returns {Animation}\r\n */\r\n Animation.prototype.onComplete = function (callback) {\r\n if (this.completed) {\r\n callback();\r\n }\r\n else {\r\n this.callbacks.push(callback);\r\n }\r\n return this;\r\n };\r\n /**\r\n * Converts the duration string to the number of milliseconds\r\n * @param duration\r\n * @returns {number}\r\n */\r\n Animation.prototype.parseDurationString = function (duration) {\r\n var maxValue = 0;\r\n // duration must have at least 2 characters to be valid. (number + type)\r\n if (duration == null || duration.length < 2) {\r\n return maxValue;\r\n }\r\n else if (duration.substring(duration.length - 2) == 'ms') {\r\n var value = lang_1.NumberWrapper.parseInt(this.stripLetters(duration), 10);\r\n if (value > maxValue)\r\n maxValue = value;\r\n }\r\n else if (duration.substring(duration.length - 1) == 's') {\r\n var ms = lang_1.NumberWrapper.parseFloat(this.stripLetters(duration)) * 1000;\r\n var value = math_1.Math.floor(ms);\r\n if (value > maxValue)\r\n maxValue = value;\r\n }\r\n return maxValue;\r\n };\r\n /**\r\n * Strips the letters from the duration string\r\n * @param str\r\n * @returns {string}\r\n */\r\n Animation.prototype.stripLetters = function (str) {\r\n return lang_1.StringWrapper.replaceAll(str, lang_1.RegExpWrapper.create('[^0-9]+$', ''), '');\r\n };\r\n return Animation;\r\n}());\r\nexports.Animation = Animation;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2FuaW1hdGUvYW5pbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFNTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLHFCQUFtQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQzlDLHFCQUFrQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ25FLDJCQUErQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ2hFLDRCQUFrQix1Q0FBdUMsQ0FBQyxDQUFBO0FBSzFEO0lBNEJFOzs7OztPQUtHO0lBQ0gsbUJBQW1CLE9BQW9CLEVBQVMsSUFBeUIsRUFDdEQsY0FBOEI7UUFuQ25ELGlCQXdMQztRQXRKb0IsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUFTLFNBQUksR0FBSixJQUFJLENBQXFCO1FBQ3RELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWxDakQsNkNBQTZDO1FBQzdDLGNBQVMsR0FBZSxFQUFFLENBQUM7UUFXM0IsNkNBQTZDO1FBQzdDLHdCQUFtQixHQUFlLEVBQUUsQ0FBQztRQUVyQyxtRUFBbUU7UUFDbkUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVuQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQWlCakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGFBQWEsR0FBRyxpQkFBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFDLFNBQWMsSUFBSyxPQUFBLEtBQUksQ0FBQyxLQUFLLEVBQUUsRUFBWixDQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBbEJELHNCQUFJLGdDQUFT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QUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN6QyxDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELElBQUksRUFBRSxHQUFHLG9CQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdEUsSUFBSSxLQUFLLEdBQUcsV0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDekMsQ0FBQztRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQ0FBWSxHQUFaLFVBQWEsR0FBVztRQUN0QixNQUFNLENBQUMsb0JBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBeExELElBd0xDO0FBeExZLGlCQUFTLFlBd0xyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGF0ZVdyYXBwZXIsXG4gIFN0cmluZ1dyYXBwZXIsXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIE51bWJlcldyYXBwZXIsXG4gIGlzUHJlc2VudFxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtNYXRofSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL21hdGgnO1xuaW1wb3J0IHtjYW1lbENhc2VUb0Rhc2hDYXNlfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL3V0aWwnO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuXG5pbXBvcnQge0Jyb3dzZXJEZXRhaWxzfSBmcm9tICcuL2Jyb3dzZXJfZGV0YWlscyc7XG5pbXBvcnQge0Nzc0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJy4vY3NzX2FuaW1hdGlvbl9vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbiB7XG4gIC8qKiBmdW5jdGlvbnMgdG8gYmUgY2FsbGVkIHVwb24gY29tcGxldGlvbiAqL1xuICBjYWxsYmFja3M6IEZ1bmN0aW9uW10gPSBbXTtcblxuICAvKiogdGhlIGR1cmF0aW9uIChtcykgb2YgdGhlIGFuaW1hdGlvbiAod2hldGhlciBmcm9tIENTUyBvciBtYW51YWxseSBzZXQpICovXG4gIGNvbXB1dGVkRHVyYXRpb246IG51bWJlcjtcblxuICAvKiogdGhlIGFuaW1hdGlvbiBkZWxheSAobXMpICh3aGV0aGVyIGZyb20gQ1NTIG9yIG1hbnVhbGx5IHNldCkgKi9cbiAgY29tcHV0ZWREZWxheTogbnVtYmVyO1xuXG4gIC8qKiB0aW1lc3RhbXAgb2Ygd2hlbiB0aGUgYW5pbWF0aW9uIHN0YXJ0ZWQgKi9cbiAgc3RhcnRUaW1lOiBudW1iZXI7XG5cbiAgLyoqIGZ1bmN0aW9ucyBmb3IgcmVtb3ZpbmcgZXZlbnQgbGlzdGVuZXJzICovXG4gIGV2ZW50Q2xlYXJGdW5jdGlvbnM6IEZ1bmN0aW9uW10gPSBbXTtcblxuICAvKiogZmxhZyB1c2VkIHRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gaGFzIGZpbmlzaGVkICovXG4gIGNvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3N0cmluZ1ByZWZpeDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIHRvdGFsIGFtb3VudCBvZiB0aW1lIHRoYXQgdGhlIGFuaW1hdGlvbiBzaG91bGQgdGFrZSBpbmNsdWRpbmcgZGVsYXkgKi9cbiAgZ2V0IHRvdGFsVGltZSgpOiBudW1iZXIge1xuICAgIGxldCBkZWxheSA9IHRoaXMuY29tcHV0ZWREZWxheSAhPSBudWxsID8gdGhpcy5jb21wdXRlZERlbGF5IDogMDtcbiAgICBsZXQgZHVyYXRpb24gPSB0aGlzLmNvbXB1dGVkRHVyYXRpb24gIT0gbnVsbCA/IHRoaXMuY29tcHV0ZWREdXJhdGlvbiA6IDA7XG4gICAgcmV0dXJuIGRlbGF5ICsgZHVyYXRpb247XG4gIH1cblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzdGFydCB0aW1lIGFuZCBzdGFydHMgdGhlIGFuaW1hdGlvblxuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gYnJvd3NlckRldGFpbHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBIVE1MRWxlbWVudCwgcHVibGljIGRhdGE6IENzc0FuaW1hdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICAgIHB1YmxpYyBicm93c2VyRGV0YWlsczogQnJvd3NlckRldGFpbHMpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGVXcmFwcGVyLnRvTWlsbGlzKERhdGVXcmFwcGVyLm5vdygpKTtcbiAgICB0aGlzLl9zdHJpbmdQcmVmaXggPSBET00uZ2V0QW5pbWF0aW9uUHJlZml4KCk7XG4gICAgdGhpcy5zZXR1cCgpO1xuICAgIHRoaXMud2FpdCgodGltZXN0YW1wOiBhbnkpID0+IHRoaXMuc3RhcnQoKSk7XG4gIH1cblxuICB3YWl0KGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgIC8vIEZpcmVmb3ggcmVxdWlyZXMgMiBmcmFtZXMgZm9yIHNvbWUgcmVhc29uXG4gICAgdGhpcy5icm93c2VyRGV0YWlscy5yYWYoY2FsbGJhY2ssIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIGluaXRpYWwgc3R5bGVzIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIHN0YXJ0ZWRcbiAgICovXG4gIHNldHVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuZnJvbVN0eWxlcyAhPSBudWxsKSB0aGlzLmFwcGx5U3R5bGVzKHRoaXMuZGF0YS5mcm9tU3R5bGVzKTtcbiAgICBpZiAodGhpcy5kYXRhLmR1cmF0aW9uICE9IG51bGwpXG4gICAgICB0aGlzLmFwcGx5U3R5bGVzKHsndHJhbnNpdGlvbkR1cmF0aW9uJzogdGhpcy5kYXRhLmR1cmF0aW9uLnRvU3RyaW5nKCkgKyAnbXMnfSk7XG4gICAgaWYgKHRoaXMuZGF0YS5kZWxheSAhPSBudWxsKVxuICAgICAgdGhpcy5hcHBseVN0eWxlcyh7J3RyYW5zaXRpb25EZWxheSc6IHRoaXMuZGF0YS5kZWxheS50b1N0cmluZygpICsgJ21zJ30pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBpbml0aWFsIHNldHVwIGhhcyBvY2N1cnJlZCwgdGhpcyBtZXRob2QgYWRkcyB0aGUgYW5pbWF0aW9uIHN0eWxlc1xuICAgKi9cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGFzc2VzKHRoaXMuZGF0YS5jbGFzc2VzVG9BZGQpO1xuICAgIHRoaXMuYWRkQ2xhc3Nlcyh0aGlzLmRhdGEuYW5pbWF0aW9uQ2xhc3Nlcyk7XG4gICAgdGhpcy5yZW1vdmVDbGFzc2VzKHRoaXMuZGF0YS5jbGFzc2VzVG9SZW1vdmUpO1xuICAgIGlmICh0aGlzLmRhdGEudG9TdHlsZXMgIT0gbnVsbCkgdGhpcy5hcHBseVN0eWxlcyh0aGlzLmRhdGEudG9TdHlsZXMpO1xuICAgIHZhciBjb21wdXRlZFN0eWxlcyA9IERPTS5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5jb21wdXRlZERlbGF5ID1cbiAgICAgICAgTWF0aC5tYXgodGhpcy5wYXJzZUR1cmF0aW9uU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSh0aGlzLl9zdHJpbmdQcmVmaXggKyAndHJhbnNpdGlvbi1kZWxheScpKSxcbiAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZUR1cmF0aW9uU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUodGhpcy5fc3RyaW5nUHJlZml4ICsgJ3RyYW5zaXRpb24tZGVsYXknKSkpO1xuICAgIHRoaXMuY29tcHV0ZWREdXJhdGlvbiA9IE1hdGgubWF4KHRoaXMucGFyc2VEdXJhdGlvblN0cmluZyhjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHJpbmdQcmVmaXggKyAndHJhbnNpdGlvbi1kdXJhdGlvbicpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRHVyYXRpb25TdHJpbmcodGhpcy5lbGVtZW50LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0cmluZ1ByZWZpeCArICd0cmFuc2l0aW9uLWR1cmF0aW9uJykpKTtcbiAgICB0aGlzLmFkZEV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHByb3ZpZGVkIHN0eWxlcyB0byB0aGUgZWxlbWVudFxuICAgKiBAcGFyYW0gc3R5bGVzXG4gICAqL1xuICBhcHBseVN0eWxlcyhzdHlsZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogdm9pZCB7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKHN0eWxlcywgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICB2YXIgZGFzaENhc2VLZXkgPSBjYW1lbENhc2VUb0Rhc2hDYXNlKGtleSk7XG4gICAgICBpZiAoaXNQcmVzZW50KERPTS5nZXRTdHlsZSh0aGlzLmVsZW1lbnQsIGRhc2hDYXNlS2V5KSkpIHtcbiAgICAgICAgRE9NLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgZGFzaENhc2VLZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRE9NLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgdGhpcy5fc3RyaW5nUHJlZml4ICsgZGFzaENhc2VLZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIHByb3ZpZGVkIGNsYXNzZXMgdG8gdGhlIGVsZW1lbnRcbiAgICogQHBhcmFtIGNsYXNzZXNcbiAgICovXG4gIGFkZENsYXNzZXMoY2xhc3Nlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2xhc3Nlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykgRE9NLmFkZENsYXNzKHRoaXMuZWxlbWVudCwgY2xhc3Nlc1tpXSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgcHJvdmlkZWQgY2xhc3NlcyBmcm9tIHRoZSBlbGVtZW50XG4gICAqIEBwYXJhbSBjbGFzc2VzXG4gICAqL1xuICByZW1vdmVDbGFzc2VzKGNsYXNzZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIERPTS5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnQsIGNsYXNzZXNbaV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXZlbnRzIHRvIHRyYWNrIHdoZW4gYW5pbWF0aW9ucyBoYXZlIGZpbmlzaGVkXG4gICAqL1xuICBhZGRFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG90YWxUaW1lID4gMCkge1xuICAgICAgdGhpcy5ldmVudENsZWFyRnVuY3Rpb25zLnB1c2goRE9NLm9uQW5kQ2FuY2VsKFxuICAgICAgICAgIHRoaXMuZWxlbWVudCwgRE9NLmdldFRyYW5zaXRpb25FbmQoKSwgKGV2ZW50OiBhbnkpID0+IHRoaXMuaGFuZGxlQW5pbWF0aW9uRXZlbnQoZXZlbnQpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlQW5pbWF0aW9uQ29tcGxldGVkKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQW5pbWF0aW9uRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGxldCBlbGFwc2VkVGltZSA9IE1hdGgucm91bmQoZXZlbnQuZWxhcHNlZFRpbWUgKiAxMDAwKTtcbiAgICBpZiAoIXRoaXMuYnJvd3NlckRldGFpbHMuZWxhcHNlZFRpbWVJbmNsdWRlc0RlbGF5KSBlbGFwc2VkVGltZSArPSB0aGlzLmNvbXB1dGVkRGVsYXk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKGVsYXBzZWRUaW1lID49IHRoaXMudG90YWxUaW1lKSB0aGlzLmhhbmRsZUFuaW1hdGlvbkNvbXBsZXRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWxsIGFuaW1hdGlvbiBjYWxsYmFja3MgYW5kIHJlbW92ZXMgdGVtcG9yYXJ5IGNsYXNzZXNcbiAgICovXG4gIGhhbmRsZUFuaW1hdGlvbkNvbXBsZXRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUNsYXNzZXModGhpcy5kYXRhLmFuaW1hdGlvbkNsYXNzZXMpO1xuICAgIHRoaXMuY2FsbGJhY2tzLmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soKSk7XG4gICAgdGhpcy5jYWxsYmFja3MgPSBbXTtcbiAgICB0aGlzLmV2ZW50Q2xlYXJGdW5jdGlvbnMuZm9yRWFjaChmbiA9PiBmbigpKTtcbiAgICB0aGlzLmV2ZW50Q2xlYXJGdW5jdGlvbnMgPSBbXTtcbiAgICB0aGlzLmNvbXBsZXRlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbmltYXRpb24gY2FsbGJhY2tzIHRvIGJlIGNhbGxlZCB1cG9uIGNvbXBsZXRpb25cbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHtBbmltYXRpb259XG4gICAqL1xuICBvbkNvbXBsZXRlKGNhbGxiYWNrOiBGdW5jdGlvbik6IEFuaW1hdGlvbiB7XG4gICAgaWYgKHRoaXMuY29tcGxldGVkKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGR1cmF0aW9uIHN0cmluZyB0byB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICAgKiBAcGFyYW0gZHVyYXRpb25cbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIHBhcnNlRHVyYXRpb25TdHJpbmcoZHVyYXRpb246IHN0cmluZyk6IG51bWJlciB7XG4gICAgdmFyIG1heFZhbHVlID0gMDtcbiAgICAvLyBkdXJhdGlvbiBtdXN0IGhhdmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIHRvIGJlIHZhbGlkLiAobnVtYmVyICsgdHlwZSlcbiAgICBpZiAoZHVyYXRpb24gPT0gbnVsbCB8fCBkdXJhdGlvbi5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfSBlbHNlIGlmIChkdXJhdGlvbi5zdWJzdHJpbmcoZHVyYXRpb24ubGVuZ3RoIC0gMikgPT0gJ21zJykge1xuICAgICAgbGV0IHZhbHVlID0gTnVtYmVyV3JhcHBlci5wYXJzZUludCh0aGlzLnN0cmlwTGV0dGVycyhkdXJhdGlvbiksIDEwKTtcbiAgICAgIGlmICh2YWx1ZSA+IG1heFZhbHVlKSBtYXhWYWx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZHVyYXRpb24uc3Vic3RyaW5nKGR1cmF0aW9uLmxlbmd0aCAtIDEpID09ICdzJykge1xuICAgICAgbGV0IG1zID0gTnVtYmVyV3JhcHBlci5wYXJzZUZsb2F0KHRoaXMuc3RyaXBMZXR0ZXJzKGR1cmF0aW9uKSkgKiAxMDAwO1xuICAgICAgbGV0IHZhbHVlID0gTWF0aC5mbG9vcihtcyk7XG4gICAgICBpZiAodmFsdWUgPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1heFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmlwcyB0aGUgbGV0dGVycyBmcm9tIHRoZSBkdXJhdGlvbiBzdHJpbmdcbiAgICogQHBhcmFtIHN0clxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgc3RyaXBMZXR0ZXJzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHN0ciwgUmVnRXhwV3JhcHBlci5jcmVhdGUoJ1teMC05XSskJywgJycpLCAnJyk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar css_animation_options_1 = require('./css_animation_options');\r\nvar animation_1 = require('./animation');\r\nvar CssAnimationBuilder = (function () {\r\n /**\r\n * Accepts public properties for CssAnimationBuilder\r\n */\r\n function CssAnimationBuilder(browserDetails) {\r\n this.browserDetails = browserDetails;\r\n /** @type {CssAnimationOptions} */\r\n this.data = new css_animation_options_1.CssAnimationOptions();\r\n }\r\n /**\r\n * Adds a temporary class that will be removed at the end of the animation\r\n * @param className\r\n */\r\n CssAnimationBuilder.prototype.addAnimationClass = function (className) {\r\n this.data.animationClasses.push(className);\r\n return this;\r\n };\r\n /**\r\n * Adds a class that will remain on the element after the animation has finished\r\n * @param className\r\n */\r\n CssAnimationBuilder.prototype.addClass = function (className) {\r\n this.data.classesToAdd.push(className);\r\n return this;\r\n };\r\n /**\r\n * Removes a class from the element\r\n * @param className\r\n */\r\n CssAnimationBuilder.prototype.removeClass = function (className) {\r\n this.data.classesToRemove.push(className);\r\n return this;\r\n };\r\n /**\r\n * Sets the animation duration (and overrides any defined through CSS)\r\n * @param duration\r\n */\r\n CssAnimationBuilder.prototype.setDuration = function (duration) {\r\n this.data.duration = duration;\r\n return this;\r\n };\r\n /**\r\n * Sets the animation delay (and overrides any defined through CSS)\r\n * @param delay\r\n */\r\n CssAnimationBuilder.prototype.setDelay = function (delay) {\r\n this.data.delay = delay;\r\n return this;\r\n };\r\n /**\r\n * Sets styles for both the initial state and the destination state\r\n * @param from\r\n * @param to\r\n */\r\n CssAnimationBuilder.prototype.setStyles = function (from, to) {\r\n return this.setFromStyles(from).setToStyles(to);\r\n };\r\n /**\r\n * Sets the initial styles for the animation\r\n * @param from\r\n */\r\n CssAnimationBuilder.prototype.setFromStyles = function (from) {\r\n this.data.fromStyles = from;\r\n return this;\r\n };\r\n /**\r\n * Sets the destination styles for the animation\r\n * @param to\r\n */\r\n CssAnimationBuilder.prototype.setToStyles = function (to) {\r\n this.data.toStyles = to;\r\n return this;\r\n };\r\n /**\r\n * Starts the animation and returns a promise\r\n * @param element\r\n */\r\n CssAnimationBuilder.prototype.start = function (element) {\r\n return new animation_1.Animation(element, this.data, this.browserDetails);\r\n };\r\n return CssAnimationBuilder;\r\n}());\r\nexports.CssAnimationBuilder = CssAnimationBuilder;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzX2FuaW1hdGlvbl9idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2FuaW1hdGUvY3NzX2FuaW1hdGlvbl9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzQ0FBa0MseUJBQXlCLENBQUMsQ0FBQTtBQUM1RCwwQkFBd0IsYUFBYSxDQUFDLENBQUE7QUFHdEM7SUFJRTs7T0FFRztJQUNILDZCQUFtQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFOakQsa0NBQWtDO1FBQ2xDLFNBQUksR0FBd0IsSUFBSSwyQ0FBbUIsRUFBRSxDQUFDO0lBS0YsQ0FBQztJQUVyRDs7O09BR0c7SUFDSCwrQ0FBaUIsR0FBakIsVUFBa0IsU0FBaUI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQ0FBUSxHQUFSLFVBQVMsU0FBaUI7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUNBQVcsR0FBWCxVQUFZLFNBQWlCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlDQUFXLEdBQVgsVUFBWSxRQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQ0FBUSxHQUFSLFVBQVMsS0FBYTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsdUNBQVMsR0FBVCxVQUFVLElBQTBCLEVBQUUsRUFBd0I7UUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCwyQ0FBYSxHQUFiLFVBQWMsSUFBMEI7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUNBQVcsR0FBWCxVQUFZLEVBQXdCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1DQUFLLEdBQUwsVUFBTSxPQUFvQjtRQUN4QixNQUFNLENBQUMsSUFBSSxxQkFBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0gsMEJBQUM7QUFBRCxDQUFDLEFBeEZELElBd0ZDO0FBeEZZLDJCQUFtQixzQkF3Ri9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Nzc0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJy4vY3NzX2FuaW1hdGlvbl9vcHRpb25zJztcbmltcG9ydCB7QW5pbWF0aW9ufSBmcm9tICcuL2FuaW1hdGlvbic7XG5pbXBvcnQge0Jyb3dzZXJEZXRhaWxzfSBmcm9tICcuL2Jyb3dzZXJfZGV0YWlscyc7XG5cbmV4cG9ydCBjbGFzcyBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgLyoqIEB0eXBlIHtDc3NBbmltYXRpb25PcHRpb25zfSAqL1xuICBkYXRhOiBDc3NBbmltYXRpb25PcHRpb25zID0gbmV3IENzc0FuaW1hdGlvbk9wdGlvbnMoKTtcblxuICAvKipcbiAgICogQWNjZXB0cyBwdWJsaWMgcHJvcGVydGllcyBmb3IgQ3NzQW5pbWF0aW9uQnVpbGRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIGJyb3dzZXJEZXRhaWxzOiBCcm93c2VyRGV0YWlscykge31cblxuICAvKipcbiAgICogQWRkcyBhIHRlbXBvcmFyeSBjbGFzcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBhdCB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb25cbiAgICogQHBhcmFtIGNsYXNzTmFtZVxuICAgKi9cbiAgYWRkQW5pbWF0aW9uQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLmRhdGEuYW5pbWF0aW9uQ2xhc3Nlcy5wdXNoKGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNsYXNzIHRoYXQgd2lsbCByZW1haW4gb24gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBoYXMgZmluaXNoZWRcbiAgICogQHBhcmFtIGNsYXNzTmFtZVxuICAgKi9cbiAgYWRkQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLmRhdGEuY2xhc3Nlc1RvQWRkLnB1c2goY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY2xhc3MgZnJvbSB0aGUgZWxlbWVudFxuICAgKiBAcGFyYW0gY2xhc3NOYW1lXG4gICAqL1xuICByZW1vdmVDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IENzc0FuaW1hdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuZGF0YS5jbGFzc2VzVG9SZW1vdmUucHVzaChjbGFzc05hbWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiAoYW5kIG92ZXJyaWRlcyBhbnkgZGVmaW5lZCB0aHJvdWdoIENTUylcbiAgICogQHBhcmFtIGR1cmF0aW9uXG4gICAqL1xuICBzZXREdXJhdGlvbihkdXJhdGlvbjogbnVtYmVyKTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5kYXRhLmR1cmF0aW9uID0gZHVyYXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYW5pbWF0aW9uIGRlbGF5IChhbmQgb3ZlcnJpZGVzIGFueSBkZWZpbmVkIHRocm91Z2ggQ1NTKVxuICAgKiBAcGFyYW0gZGVsYXlcbiAgICovXG4gIHNldERlbGF5KGRlbGF5OiBudW1iZXIpOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLmRhdGEuZGVsYXkgPSBkZWxheTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHN0eWxlcyBmb3IgYm90aCB0aGUgaW5pdGlhbCBzdGF0ZSBhbmQgdGhlIGRlc3RpbmF0aW9uIHN0YXRlXG4gICAqIEBwYXJhbSBmcm9tXG4gICAqIEBwYXJhbSB0b1xuICAgKi9cbiAgc2V0U3R5bGVzKGZyb206IHtba2V5OiBzdHJpbmddOiBhbnl9LCB0bzoge1trZXk6IHN0cmluZ106IGFueX0pOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRGcm9tU3R5bGVzKGZyb20pLnNldFRvU3R5bGVzKHRvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIHN0eWxlcyBmb3IgdGhlIGFuaW1hdGlvblxuICAgKiBAcGFyYW0gZnJvbVxuICAgKi9cbiAgc2V0RnJvbVN0eWxlcyhmcm9tOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENzc0FuaW1hdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuZGF0YS5mcm9tU3R5bGVzID0gZnJvbTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZXN0aW5hdGlvbiBzdHlsZXMgZm9yIHRoZSBhbmltYXRpb25cbiAgICogQHBhcmFtIHRvXG4gICAqL1xuICBzZXRUb1N0eWxlcyh0bzoge1trZXk6IHN0cmluZ106IGFueX0pOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLmRhdGEudG9TdHlsZXMgPSB0bztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIGFuaW1hdGlvbiBhbmQgcmV0dXJucyBhIHByb21pc2VcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHN0YXJ0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogQW5pbWF0aW9uIHtcbiAgICByZXR1cm4gbmV3IEFuaW1hdGlvbihlbGVtZW50LCB0aGlzLmRhdGEsIHRoaXMuYnJvd3NlckRldGFpbHMpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.Math = lang_1.global.Math;\r\nexports.NaN = typeof exports.NaN;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvbWF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQXFCLDBCQUEwQixDQUFDLENBQUE7QUFFckMsWUFBSSxHQUFHLGFBQU0sQ0FBQyxJQUFJLENBQUM7QUFDbkIsV0FBRyxHQUFHLE9BQU8sV0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnbG9iYWx9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmV4cG9ydCB2YXIgTWF0aCA9IGdsb2JhbC5NYXRoO1xuZXhwb3J0IHZhciBOYU4gPSB0eXBlb2YgTmFOO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar math_1 = require('angular2/src/facade/math');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar BrowserDetails = (function () {\r\n function BrowserDetails() {\r\n this.elapsedTimeIncludesDelay = false;\r\n this.doesElapsedTimeIncludesDelay();\r\n }\r\n /**\r\n * Determines if `event.elapsedTime` includes transition delay in the current browser. At this\r\n * time, Chrome and Opera seem to be the only browsers that include this.\r\n */\r\n BrowserDetails.prototype.doesElapsedTimeIncludesDelay = function () {\r\n var _this = this;\r\n var div = dom_adapter_1.DOM.createElement('div');\r\n dom_adapter_1.DOM.setAttribute(div, 'style', \"position: absolute; top: -9999px; left: -9999px; width: 1px;\\n height: 1px; transition: all 1ms linear 1ms;\");\r\n // Firefox requires that we wait for 2 frames for some reason\r\n this.raf(function (timestamp) {\r\n dom_adapter_1.DOM.on(div, 'transitionend', function (event) {\r\n var elapsed = math_1.Math.round(event.elapsedTime * 1000);\r\n _this.elapsedTimeIncludesDelay = elapsed == 2;\r\n dom_adapter_1.DOM.remove(div);\r\n });\r\n dom_adapter_1.DOM.setStyle(div, 'width', '2px');\r\n }, 2);\r\n };\r\n BrowserDetails.prototype.raf = function (callback, frames) {\r\n if (frames === void 0) { frames = 1; }\r\n var queue = new RafQueue(callback, frames);\r\n return function () { return queue.cancel(); };\r\n };\r\n BrowserDetails = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], BrowserDetails);\r\n return BrowserDetails;\r\n}());\r\nexports.BrowserDetails = BrowserDetails;\r\nvar RafQueue = (function () {\r\n function RafQueue(callback, frames) {\r\n this.callback = callback;\r\n this.frames = frames;\r\n this._raf();\r\n }\r\n RafQueue.prototype._raf = function () {\r\n var _this = this;\r\n this.currentFrameId =\r\n dom_adapter_1.DOM.requestAnimationFrame(function (timestamp) { return _this._nextFrame(timestamp); });\r\n };\r\n RafQueue.prototype._nextFrame = function (timestamp) {\r\n this.frames--;\r\n if (this.frames > 0) {\r\n this._raf();\r\n }\r\n else {\r\n this.callback(timestamp);\r\n }\r\n };\r\n RafQueue.prototype.cancel = function () {\r\n dom_adapter_1.DOM.cancelAnimationFrame(this.currentFrameId);\r\n this.currentFrameId = null;\r\n };\r\n return RafQueue;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl9kZXRhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2FuaW1hdGUvYnJvd3Nlcl9kZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxxQkFBbUIsMEJBQTBCLENBQUMsQ0FBQTtBQUM5Qyw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUcxRDtJQUdFO1FBRkEsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBRWpCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUV0RDs7O09BR0c7SUFDSCxxREFBNEIsR0FBNUI7UUFBQSxpQkFhQztRQVpDLElBQUksR0FBRyxHQUFHLGlCQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLGlCQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsa0hBQ2dCLENBQUMsQ0FBQztRQUNqRCw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLFNBQWM7WUFDdEIsaUJBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxVQUFDLEtBQVU7Z0JBQ3RDLElBQUksT0FBTyxHQUFHLFdBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDbkQsS0FBSSxDQUFDLHdCQUF3QixHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQzdDLGlCQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsaUJBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsNEJBQUcsR0FBSCxVQUFJLFFBQWtCLEVBQUUsTUFBa0I7UUFBbEIsc0JBQWtCLEdBQWxCLFVBQWtCO1FBQ3hDLElBQUksS0FBSyxHQUFhLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxNQUFNLENBQUMsY0FBTSxPQUFBLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBZCxDQUFjLENBQUM7SUFDOUIsQ0FBQztJQTVCSDtRQUFDLGVBQVUsRUFBRTs7c0JBQUE7SUE2QmIscUJBQUM7QUFBRCxDQUFDLEFBNUJELElBNEJDO0FBNUJZLHNCQUFjLGlCQTRCMUIsQ0FBQTtBQUVEO0lBRUUsa0JBQW1CLFFBQWtCLEVBQVMsTUFBYztRQUF6QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUFDLENBQUM7SUFDdEUsdUJBQUksR0FBWjtRQUFBLGlCQUdDO1FBRkMsSUFBSSxDQUFDLGNBQWM7WUFDZixpQkFBRyxDQUFDLHFCQUFxQixDQUFDLFVBQUMsU0FBaUIsSUFBSyxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQTFCLENBQTBCLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBQ08sNkJBQVUsR0FBbEIsVUFBbUIsU0FBaUI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFDRCx5QkFBTSxHQUFOO1FBQ0UsaUJBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUNILGVBQUM7QUFBRCxDQUFDLEFBbkJELElBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge01hdGh9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbWF0aCc7XG5pbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCcm93c2VyRGV0YWlscyB7XG4gIGVsYXBzZWRUaW1lSW5jbHVkZXNEZWxheSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB0aGlzLmRvZXNFbGFwc2VkVGltZUluY2x1ZGVzRGVsYXkoKTsgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGBldmVudC5lbGFwc2VkVGltZWAgaW5jbHVkZXMgdHJhbnNpdGlvbiBkZWxheSBpbiB0aGUgY3VycmVudCBicm93c2VyLiAgQXQgdGhpc1xuICAgKiB0aW1lLCBDaHJvbWUgYW5kIE9wZXJhIHNlZW0gdG8gYmUgdGhlIG9ubHkgYnJvd3NlcnMgdGhhdCBpbmNsdWRlIHRoaXMuXG4gICAqL1xuICBkb2VzRWxhcHNlZFRpbWVJbmNsdWRlc0RlbGF5KCk6IHZvaWQge1xuICAgIHZhciBkaXYgPSBET00uY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgRE9NLnNldEF0dHJpYnV0ZShkaXYsICdzdHlsZScsIGBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTk5OTlweDsgbGVmdDogLTk5OTlweDsgd2lkdGg6IDFweDtcbiAgICAgIGhlaWdodDogMXB4OyB0cmFuc2l0aW9uOiBhbGwgMW1zIGxpbmVhciAxbXM7YCk7XG4gICAgLy8gRmlyZWZveCByZXF1aXJlcyB0aGF0IHdlIHdhaXQgZm9yIDIgZnJhbWVzIGZvciBzb21lIHJlYXNvblxuICAgIHRoaXMucmFmKCh0aW1lc3RhbXA6IGFueSkgPT4ge1xuICAgICAgRE9NLm9uKGRpdiwgJ3RyYW5zaXRpb25lbmQnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICB2YXIgZWxhcHNlZCA9IE1hdGgucm91bmQoZXZlbnQuZWxhcHNlZFRpbWUgKiAxMDAwKTtcbiAgICAgICAgdGhpcy5lbGFwc2VkVGltZUluY2x1ZGVzRGVsYXkgPSBlbGFwc2VkID09IDI7XG4gICAgICAgIERPTS5yZW1vdmUoZGl2KTtcbiAgICAgIH0pO1xuICAgICAgRE9NLnNldFN0eWxlKGRpdiwgJ3dpZHRoJywgJzJweCcpO1xuICAgIH0sIDIpO1xuICB9XG5cbiAgcmFmKGNhbGxiYWNrOiBGdW5jdGlvbiwgZnJhbWVzOiBudW1iZXIgPSAxKTogRnVuY3Rpb24ge1xuICAgIHZhciBxdWV1ZTogUmFmUXVldWUgPSBuZXcgUmFmUXVldWUoY2FsbGJhY2ssIGZyYW1lcyk7XG4gICAgcmV0dXJuICgpID0+IHF1ZXVlLmNhbmNlbCgpO1xuICB9XG59XG5cbmNsYXNzIFJhZlF1ZXVlIHtcbiAgY3VycmVudEZyYW1lSWQ6IG51bWJlcjtcbiAgY29uc3RydWN0b3IocHVibGljIGNhbGxiYWNrOiBGdW5jdGlvbiwgcHVibGljIGZyYW1lczogbnVtYmVyKSB7IHRoaXMuX3JhZigpOyB9XG4gIHByaXZhdGUgX3JhZigpIHtcbiAgICB0aGlzLmN1cnJlbnRGcmFtZUlkID1cbiAgICAgICAgRE9NLnJlcXVlc3RBbmltYXRpb25GcmFtZSgodGltZXN0YW1wOiBudW1iZXIpID0+IHRoaXMuX25leHRGcmFtZSh0aW1lc3RhbXApKTtcbiAgfVxuICBwcml2YXRlIF9uZXh0RnJhbWUodGltZXN0YW1wOiBudW1iZXIpIHtcbiAgICB0aGlzLmZyYW1lcy0tO1xuICAgIGlmICh0aGlzLmZyYW1lcyA+IDApIHtcbiAgICAgIHRoaXMuX3JhZigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGxiYWNrKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9XG4gIGNhbmNlbCgpIHtcbiAgICBET00uY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5jdXJyZW50RnJhbWVJZCk7XG4gICAgdGhpcy5jdXJyZW50RnJhbWVJZCA9IG51bGw7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar css_animation_builder_1 = require('./css_animation_builder');\r\nvar browser_details_1 = require('./browser_details');\r\nvar AnimationBuilder = (function () {\r\n /**\r\n * Used for DI\r\n * @param browserDetails\r\n */\r\n function AnimationBuilder(browserDetails) {\r\n this.browserDetails = browserDetails;\r\n }\r\n /**\r\n * Creates a new CSS Animation\r\n * @returns {CssAnimationBuilder}\r\n */\r\n AnimationBuilder.prototype.css = function () { return new css_animation_builder_1.CssAnimationBuilder(this.browserDetails); };\r\n AnimationBuilder = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [browser_details_1.BrowserDetails])\r\n ], AnimationBuilder);\r\n return AnimationBuilder;\r\n}());\r\nexports.AnimationBuilder = AnimationBuilder;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvYW5pbWF0ZS9hbmltYXRpb25fYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFFaEQsc0NBQWtDLHlCQUF5QixDQUFDLENBQUE7QUFDNUQsZ0NBQTZCLG1CQUFtQixDQUFDLENBQUE7QUFHakQ7SUFDRTs7O09BR0c7SUFDSCwwQkFBbUIsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUVyRDs7O09BR0c7SUFDSCw4QkFBRyxHQUFILGNBQTZCLE1BQU0sQ0FBQyxJQUFJLDJDQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFackY7UUFBQyxlQUFVLEVBQUU7O3dCQUFBO0lBYWIsdUJBQUM7QUFBRCxDQUFDLEFBWkQsSUFZQztBQVpZLHdCQUFnQixtQkFZNUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG5pbXBvcnQge0Nzc0FuaW1hdGlvbkJ1aWxkZXJ9IGZyb20gJy4vY3NzX2FuaW1hdGlvbl9idWlsZGVyJztcbmltcG9ydCB7QnJvd3NlckRldGFpbHN9IGZyb20gJy4vYnJvd3Nlcl9kZXRhaWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogVXNlZCBmb3IgRElcbiAgICogQHBhcmFtIGJyb3dzZXJEZXRhaWxzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYnJvd3NlckRldGFpbHM6IEJyb3dzZXJEZXRhaWxzKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENTUyBBbmltYXRpb25cbiAgICogQHJldHVybnMge0Nzc0FuaW1hdGlvbkJ1aWxkZXJ9XG4gICAqL1xuICBjc3MoKTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7IHJldHVybiBuZXcgQ3NzQW5pbWF0aW9uQnVpbGRlcih0aGlzLmJyb3dzZXJEZXRhaWxzKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dom_tokens_1 = require('./dom_tokens');\r\nvar SharedStylesHost = (function () {\r\n function SharedStylesHost() {\r\n /** @internal */\r\n this._styles = [];\r\n /** @internal */\r\n this._stylesSet = new Set();\r\n }\r\n SharedStylesHost.prototype.addStyles = function (styles) {\r\n var _this = this;\r\n var additions = [];\r\n styles.forEach(function (style) {\r\n if (!collection_1.SetWrapper.has(_this._stylesSet, style)) {\r\n _this._stylesSet.add(style);\r\n _this._styles.push(style);\r\n additions.push(style);\r\n }\r\n });\r\n this.onStylesAdded(additions);\r\n };\r\n SharedStylesHost.prototype.onStylesAdded = function (additions) { };\r\n SharedStylesHost.prototype.getAllStyles = function () { return this._styles; };\r\n SharedStylesHost = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], SharedStylesHost);\r\n return SharedStylesHost;\r\n}());\r\nexports.SharedStylesHost = SharedStylesHost;\r\nvar DomSharedStylesHost = (function (_super) {\r\n __extends(DomSharedStylesHost, _super);\r\n function DomSharedStylesHost(doc) {\r\n _super.call(this);\r\n this._hostNodes = new Set();\r\n this._hostNodes.add(doc.head);\r\n }\r\n /** @internal */\r\n DomSharedStylesHost.prototype._addStylesToHost = function (styles, host) {\r\n for (var i = 0; i < styles.length; i++) {\r\n var style = styles[i];\r\n dom_adapter_1.DOM.appendChild(host, dom_adapter_1.DOM.createStyleElement(style));\r\n }\r\n };\r\n DomSharedStylesHost.prototype.addHost = function (hostNode) {\r\n this._addStylesToHost(this._styles, hostNode);\r\n this._hostNodes.add(hostNode);\r\n };\r\n DomSharedStylesHost.prototype.removeHost = function (hostNode) { collection_1.SetWrapper.delete(this._hostNodes, hostNode); };\r\n DomSharedStylesHost.prototype.onStylesAdded = function (additions) {\r\n var _this = this;\r\n this._hostNodes.forEach(function (hostNode) { _this._addStylesToHost(additions, hostNode); });\r\n };\r\n DomSharedStylesHost = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(dom_tokens_1.DOCUMENT)), \r\n __metadata('design:paramtypes', [Object])\r\n ], DomSharedStylesHost);\r\n return DomSharedStylesHost;\r\n}(SharedStylesHost));\r\nexports.DomSharedStylesHost = DomSharedStylesHost;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkX3N0eWxlc19ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9zaGFyZWRfc3R5bGVzX2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQsbUJBQWlDLHNCQUFzQixDQUFDLENBQUE7QUFDeEQsMkJBQXlCLGdDQUFnQyxDQUFDLENBQUE7QUFDMUQsMkJBQXVCLGNBQWMsQ0FBQyxDQUFBO0FBR3RDO0lBTUU7UUFMQSxnQkFBZ0I7UUFDaEIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixnQkFBZ0I7UUFDaEIsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFaEIsQ0FBQztJQUVoQixvQ0FBUyxHQUFULFVBQVUsTUFBZ0I7UUFBMUIsaUJBVUM7UUFUQyxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUs7WUFDbEIsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLEtBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHdDQUFhLEdBQWIsVUFBYyxTQUFtQixJQUFHLENBQUM7SUFFckMsdUNBQVksR0FBWixjQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUF2Qm5EO1FBQUMsZUFBVSxFQUFFOzt3QkFBQTtJQXdCYix1QkFBQztBQUFELENBQUMsQUF2QkQsSUF1QkM7QUF2Qlksd0JBQWdCLG1CQXVCNUIsQ0FBQTtBQUdEO0lBQXlDLHVDQUFnQjtJQUV2RCw2QkFBOEIsR0FBUTtRQUNwQyxpQkFBTyxDQUFDO1FBRkYsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFRLENBQUM7UUFHbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIsOENBQWdCLEdBQWhCLFVBQWlCLE1BQWdCLEVBQUUsSUFBVTtRQUMzQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsaUJBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGlCQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUNELHFDQUFPLEdBQVAsVUFBUSxRQUFjO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCx3Q0FBVSxHQUFWLFVBQVcsUUFBYyxJQUFJLHVCQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLDJDQUFhLEdBQWIsVUFBYyxTQUFtQjtRQUFqQyxpQkFFQztRQURDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUMsUUFBUSxJQUFPLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBdEJIO1FBQUMsZUFBVSxFQUFFO21CQUdFLFdBQU0sQ0FBQyxxQkFBUSxDQUFDOzsyQkFIbEI7SUF1QmIsMEJBQUM7QUFBRCxDQUFDLEFBdEJELENBQXlDLGdCQUFnQixHQXNCeEQ7QUF0QlksMkJBQW1CLHNCQXNCL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1NldFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICcuL2RvbV90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2hhcmVkU3R5bGVzSG9zdCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3N0eWxlczogc3RyaW5nW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc3R5bGVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGFkZFN0eWxlcyhzdHlsZXM6IHN0cmluZ1tdKSB7XG4gICAgdmFyIGFkZGl0aW9ucyA9IFtdO1xuICAgIHN0eWxlcy5mb3JFYWNoKHN0eWxlID0+IHtcbiAgICAgIGlmICghU2V0V3JhcHBlci5oYXModGhpcy5fc3R5bGVzU2V0LCBzdHlsZSkpIHtcbiAgICAgICAgdGhpcy5fc3R5bGVzU2V0LmFkZChzdHlsZSk7XG4gICAgICAgIHRoaXMuX3N0eWxlcy5wdXNoKHN0eWxlKTtcbiAgICAgICAgYWRkaXRpb25zLnB1c2goc3R5bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25TdHlsZXNBZGRlZChhZGRpdGlvbnMpO1xuICB9XG5cbiAgb25TdHlsZXNBZGRlZChhZGRpdGlvbnM6IHN0cmluZ1tdKSB7fVxuXG4gIGdldEFsbFN0eWxlcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9zdHlsZXM7IH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvbVNoYXJlZFN0eWxlc0hvc3QgZXh0ZW5kcyBTaGFyZWRTdHlsZXNIb3N0IHtcbiAgcHJpdmF0ZSBfaG9zdE5vZGVzID0gbmV3IFNldDxOb2RlPigpO1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBkb2M6IGFueSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5faG9zdE5vZGVzLmFkZChkb2MuaGVhZCk7XG4gIH1cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkU3R5bGVzVG9Ib3N0KHN0eWxlczogc3RyaW5nW10sIGhvc3Q6IE5vZGUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHN0eWxlID0gc3R5bGVzW2ldO1xuICAgICAgRE9NLmFwcGVuZENoaWxkKGhvc3QsIERPTS5jcmVhdGVTdHlsZUVsZW1lbnQoc3R5bGUpKTtcbiAgICB9XG4gIH1cbiAgYWRkSG9zdChob3N0Tm9kZTogTm9kZSkge1xuICAgIHRoaXMuX2FkZFN0eWxlc1RvSG9zdCh0aGlzLl9zdHlsZXMsIGhvc3ROb2RlKTtcbiAgICB0aGlzLl9ob3N0Tm9kZXMuYWRkKGhvc3ROb2RlKTtcbiAgfVxuICByZW1vdmVIb3N0KGhvc3ROb2RlOiBOb2RlKSB7IFNldFdyYXBwZXIuZGVsZXRlKHRoaXMuX2hvc3ROb2RlcywgaG9zdE5vZGUpOyB9XG5cbiAgb25TdHlsZXNBZGRlZChhZGRpdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faG9zdE5vZGVzLmZvckVhY2goKGhvc3ROb2RlKSA9PiB7IHRoaXMuX2FkZFN0eWxlc1RvSG9zdChhZGRpdGlvbnMsIGhvc3ROb2RlKTsgfSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\r\n *\r\n * Note: Document might not be available in the Application Context when Application and Rendering\r\n * Contexts are not the same (e.g. when running the application into a Web Worker).\r\n */\r\nexports.DOCUMENT = lang_1.CONST_EXPR(new di_1.OpaqueToken('DocumentToken'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX3Rva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQTBCLHNCQUFzQixDQUFDLENBQUE7QUFDakQscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFFcEQ7Ozs7O0dBS0c7QUFDVSxnQkFBUSxHQUFnQixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGFxdWVUb2tlbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIEEgREkgVG9rZW4gcmVwcmVzZW50aW5nIHRoZSBtYWluIHJlbmRlcmluZyBjb250ZXh0LiBJbiBhIGJyb3dzZXIgdGhpcyBpcyB0aGUgRE9NIERvY3VtZW50LlxuICpcbiAqIE5vdGU6IERvY3VtZW50IG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgaW4gdGhlIEFwcGxpY2F0aW9uIENvbnRleHQgd2hlbiBBcHBsaWNhdGlvbiBhbmQgUmVuZGVyaW5nXG4gKiBDb250ZXh0cyBhcmUgbm90IHRoZSBzYW1lIChlLmcuIHdoZW4gcnVubmluZyB0aGUgYXBwbGljYXRpb24gaW50byBhIFdlYiBXb3JrZXIpLlxuICovXG5leHBvcnQgY29uc3QgRE9DVU1FTlQ6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oJ0RvY3VtZW50VG9rZW4nKSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\r\nvar DASH_CASE_REGEXP = /-([a-z])/g;\r\nfunction camelCaseToDashCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });\r\n}\r\nexports.camelCaseToDashCase = camelCaseToDashCase;\r\nfunction dashCaseToCamelCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });\r\n}\r\nexports.dashCaseToCamelCase = dashCaseToCamelCase;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQTRCLDBCQUEwQixDQUFDLENBQUE7QUFFdkQsSUFBSSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7QUFDbkMsSUFBSSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFHbkMsNkJBQW9DLEtBQWE7SUFDL0MsTUFBTSxDQUFDLG9CQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUN4QixVQUFDLENBQUMsSUFBTyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFIZSwyQkFBbUIsc0JBR2xDLENBQUE7QUFFRCw2QkFBb0MsS0FBYTtJQUMvQyxNQUFNLENBQUMsb0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQ3ZCLFVBQUMsQ0FBQyxJQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBSGUsMkJBQW1CLHNCQUdsQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdHJpbmdXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG52YXIgQ0FNRUxfQ0FTRV9SRUdFWFAgPSAvKFtBLVpdKS9nO1xudmFyIERBU0hfQ0FTRV9SRUdFWFAgPSAvLShbYS16XSkvZztcblxuXG5leHBvcnQgZnVuY3Rpb24gY2FtZWxDYXNlVG9EYXNoQ2FzZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChpbnB1dCwgQ0FNRUxfQ0FTRV9SRUdFWFAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0pID0+IHsgcmV0dXJuICctJyArIG1bMV0udG9Mb3dlckNhc2UoKTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXNoQ2FzZVRvQ2FtZWxDYXNlKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCBEQVNIX0NBU0VfUkVHRVhQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiB7IHJldHVybiBtWzFdLnRvVXBwZXJDYXNlKCk7IH0pO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar animation_builder_1 = require('angular2/src/animate/animation_builder');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar shared_styles_host_1 = require('./shared_styles_host');\r\nvar event_manager_1 = require('./events/event_manager');\r\nvar dom_tokens_1 = require('./dom_tokens');\r\nvar metadata_1 = require('angular2/src/core/metadata');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar util_1 = require('./util');\r\nvar NAMESPACE_URIS = lang_1.CONST_EXPR({ 'xlink': 'http://www.w3.org/1999/xlink', 'svg': 'http://www.w3.org/2000/svg' });\r\nvar TEMPLATE_COMMENT_TEXT = 'template bindings={}';\r\nvar TEMPLATE_BINDINGS_EXP = /^template bindings=(.*)$/g;\r\nvar DomRootRenderer = (function () {\r\n function DomRootRenderer(document, eventManager, sharedStylesHost, animate) {\r\n this.document = document;\r\n this.eventManager = eventManager;\r\n this.sharedStylesHost = sharedStylesHost;\r\n this.animate = animate;\r\n this._registeredComponents = new Map();\r\n }\r\n DomRootRenderer.prototype.renderComponent = function (componentProto) {\r\n var renderer = this._registeredComponents.get(componentProto.id);\r\n if (lang_1.isBlank(renderer)) {\r\n renderer = new DomRenderer(this, componentProto);\r\n this._registeredComponents.set(componentProto.id, renderer);\r\n }\r\n return renderer;\r\n };\r\n return DomRootRenderer;\r\n}());\r\nexports.DomRootRenderer = DomRootRenderer;\r\nvar DomRootRenderer_ = (function (_super) {\r\n __extends(DomRootRenderer_, _super);\r\n function DomRootRenderer_(_document, _eventManager, sharedStylesHost, animate) {\r\n _super.call(this, _document, _eventManager, sharedStylesHost, animate);\r\n }\r\n DomRootRenderer_ = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(dom_tokens_1.DOCUMENT)), \r\n __metadata('design:paramtypes', [Object, event_manager_1.EventManager, shared_styles_host_1.DomSharedStylesHost, animation_builder_1.AnimationBuilder])\r\n ], DomRootRenderer_);\r\n return DomRootRenderer_;\r\n}(DomRootRenderer));\r\nexports.DomRootRenderer_ = DomRootRenderer_;\r\nvar DomRenderer = (function () {\r\n function DomRenderer(_rootRenderer, componentProto) {\r\n this._rootRenderer = _rootRenderer;\r\n this.componentProto = componentProto;\r\n this._styles = _flattenStyles(componentProto.id, componentProto.styles, []);\r\n if (componentProto.encapsulation !== metadata_1.ViewEncapsulation.Native) {\r\n this._rootRenderer.sharedStylesHost.addStyles(this._styles);\r\n }\r\n if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Emulated) {\r\n this._contentAttr = _shimContentAttribute(componentProto.id);\r\n this._hostAttr = _shimHostAttribute(componentProto.id);\r\n }\r\n else {\r\n this._contentAttr = null;\r\n this._hostAttr = null;\r\n }\r\n }\r\n DomRenderer.prototype.selectRootElement = function (selectorOrNode, debugInfo) {\r\n var el;\r\n if (lang_1.isString(selectorOrNode)) {\r\n el = dom_adapter_1.DOM.querySelector(this._rootRenderer.document, selectorOrNode);\r\n if (lang_1.isBlank(el)) {\r\n throw new exceptions_1.BaseException(\"The selector \\\"\" + selectorOrNode + \"\\\" did not match any elements\");\r\n }\r\n }\r\n else {\r\n el = selectorOrNode;\r\n }\r\n dom_adapter_1.DOM.clearNodes(el);\r\n return el;\r\n };\r\n DomRenderer.prototype.createElement = function (parent, name, debugInfo) {\r\n var nsAndName = splitNamespace(name);\r\n var el = lang_1.isPresent(nsAndName[0]) ?\r\n dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) :\r\n dom_adapter_1.DOM.createElement(nsAndName[1]);\r\n if (lang_1.isPresent(this._contentAttr)) {\r\n dom_adapter_1.DOM.setAttribute(el, this._contentAttr, '');\r\n }\r\n if (lang_1.isPresent(parent)) {\r\n dom_adapter_1.DOM.appendChild(parent, el);\r\n }\r\n return el;\r\n };\r\n DomRenderer.prototype.createViewRoot = function (hostElement) {\r\n var nodesParent;\r\n if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Native) {\r\n nodesParent = dom_adapter_1.DOM.createShadowRoot(hostElement);\r\n this._rootRenderer.sharedStylesHost.addHost(nodesParent);\r\n for (var i = 0; i < this._styles.length; i++) {\r\n dom_adapter_1.DOM.appendChild(nodesParent, dom_adapter_1.DOM.createStyleElement(this._styles[i]));\r\n }\r\n }\r\n else {\r\n if (lang_1.isPresent(this._hostAttr)) {\r\n dom_adapter_1.DOM.setAttribute(hostElement, this._hostAttr, '');\r\n }\r\n nodesParent = hostElement;\r\n }\r\n return nodesParent;\r\n };\r\n DomRenderer.prototype.createTemplateAnchor = function (parentElement, debugInfo) {\r\n var comment = dom_adapter_1.DOM.createComment(TEMPLATE_COMMENT_TEXT);\r\n if (lang_1.isPresent(parentElement)) {\r\n dom_adapter_1.DOM.appendChild(parentElement, comment);\r\n }\r\n return comment;\r\n };\r\n DomRenderer.prototype.createText = function (parentElement, value, debugInfo) {\r\n var node = dom_adapter_1.DOM.createTextNode(value);\r\n if (lang_1.isPresent(parentElement)) {\r\n dom_adapter_1.DOM.appendChild(parentElement, node);\r\n }\r\n return node;\r\n };\r\n DomRenderer.prototype.projectNodes = function (parentElement, nodes) {\r\n if (lang_1.isBlank(parentElement))\r\n return;\r\n appendNodes(parentElement, nodes);\r\n };\r\n DomRenderer.prototype.attachViewAfter = function (node, viewRootNodes) {\r\n moveNodesAfterSibling(node, viewRootNodes);\r\n for (var i = 0; i < viewRootNodes.length; i++)\r\n this.animateNodeEnter(viewRootNodes[i]);\r\n };\r\n DomRenderer.prototype.detachView = function (viewRootNodes) {\r\n for (var i = 0; i < viewRootNodes.length; i++) {\r\n var node = viewRootNodes[i];\r\n dom_adapter_1.DOM.remove(node);\r\n this.animateNodeLeave(node);\r\n }\r\n };\r\n DomRenderer.prototype.destroyView = function (hostElement, viewAllNodes) {\r\n if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Native && lang_1.isPresent(hostElement)) {\r\n this._rootRenderer.sharedStylesHost.removeHost(dom_adapter_1.DOM.getShadowRoot(hostElement));\r\n }\r\n };\r\n DomRenderer.prototype.listen = function (renderElement, name, callback) {\r\n return this._rootRenderer.eventManager.addEventListener(renderElement, name, decoratePreventDefault(callback));\r\n };\r\n DomRenderer.prototype.listenGlobal = function (target, name, callback) {\r\n return this._rootRenderer.eventManager.addGlobalEventListener(target, name, decoratePreventDefault(callback));\r\n };\r\n DomRenderer.prototype.setElementProperty = function (renderElement, propertyName, propertyValue) {\r\n dom_adapter_1.DOM.setProperty(renderElement, propertyName, propertyValue);\r\n };\r\n DomRenderer.prototype.setElementAttribute = function (renderElement, attributeName, attributeValue) {\r\n var attrNs;\r\n var nsAndName = splitNamespace(attributeName);\r\n if (lang_1.isPresent(nsAndName[0])) {\r\n attributeName = nsAndName[0] + ':' + nsAndName[1];\r\n attrNs = NAMESPACE_URIS[nsAndName[0]];\r\n }\r\n if (lang_1.isPresent(attributeValue)) {\r\n if (lang_1.isPresent(attrNs)) {\r\n dom_adapter_1.DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue);\r\n }\r\n else {\r\n dom_adapter_1.DOM.setAttribute(renderElement, attributeName, attributeValue);\r\n }\r\n }\r\n else {\r\n if (lang_1.isPresent(attrNs)) {\r\n dom_adapter_1.DOM.removeAttributeNS(renderElement, attrNs, nsAndName[1]);\r\n }\r\n else {\r\n dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);\r\n }\r\n }\r\n };\r\n DomRenderer.prototype.setBindingDebugInfo = function (renderElement, propertyName, propertyValue) {\r\n var dashCasedPropertyName = util_1.camelCaseToDashCase(propertyName);\r\n if (dom_adapter_1.DOM.isCommentNode(renderElement)) {\r\n var existingBindings = lang_1.RegExpWrapper.firstMatch(TEMPLATE_BINDINGS_EXP, lang_1.StringWrapper.replaceAll(dom_adapter_1.DOM.getText(renderElement), /\\n/g, ''));\r\n var parsedBindings = lang_1.Json.parse(existingBindings[1]);\r\n parsedBindings[dashCasedPropertyName] = propertyValue;\r\n dom_adapter_1.DOM.setText(renderElement, lang_1.StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}', lang_1.Json.stringify(parsedBindings)));\r\n }\r\n else {\r\n this.setElementAttribute(renderElement, propertyName, propertyValue);\r\n }\r\n };\r\n DomRenderer.prototype.setElementClass = function (renderElement, className, isAdd) {\r\n if (isAdd) {\r\n dom_adapter_1.DOM.addClass(renderElement, className);\r\n }\r\n else {\r\n dom_adapter_1.DOM.removeClass(renderElement, className);\r\n }\r\n };\r\n DomRenderer.prototype.setElementStyle = function (renderElement, styleName, styleValue) {\r\n if (lang_1.isPresent(styleValue)) {\r\n dom_adapter_1.DOM.setStyle(renderElement, styleName, lang_1.stringify(styleValue));\r\n }\r\n else {\r\n dom_adapter_1.DOM.removeStyle(renderElement, styleName);\r\n }\r\n };\r\n DomRenderer.prototype.invokeElementMethod = function (renderElement, methodName, args) {\r\n dom_adapter_1.DOM.invoke(renderElement, methodName, args);\r\n };\r\n DomRenderer.prototype.setText = function (renderNode, text) { dom_adapter_1.DOM.setText(renderNode, text); };\r\n /**\r\n * Performs animations if necessary\r\n * @param node\r\n */\r\n DomRenderer.prototype.animateNodeEnter = function (node) {\r\n if (dom_adapter_1.DOM.isElementNode(node) && dom_adapter_1.DOM.hasClass(node, 'ng-animate')) {\r\n dom_adapter_1.DOM.addClass(node, 'ng-enter');\r\n this._rootRenderer.animate.css()\r\n .addAnimationClass('ng-enter-active')\r\n .start(node)\r\n .onComplete(function () { dom_adapter_1.DOM.removeClass(node, 'ng-enter'); });\r\n }\r\n };\r\n /**\r\n * If animations are necessary, performs animations then removes the element; otherwise, it just\r\n * removes the element.\r\n * @param node\r\n */\r\n DomRenderer.prototype.animateNodeLeave = function (node) {\r\n if (dom_adapter_1.DOM.isElementNode(node) && dom_adapter_1.DOM.hasClass(node, 'ng-animate')) {\r\n dom_adapter_1.DOM.addClass(node, 'ng-leave');\r\n this._rootRenderer.animate.css()\r\n .addAnimationClass('ng-leave-active')\r\n .start(node)\r\n .onComplete(function () {\r\n dom_adapter_1.DOM.removeClass(node, 'ng-leave');\r\n dom_adapter_1.DOM.remove(node);\r\n });\r\n }\r\n else {\r\n dom_adapter_1.DOM.remove(node);\r\n }\r\n };\r\n return DomRenderer;\r\n}());\r\nexports.DomRenderer = DomRenderer;\r\nfunction moveNodesAfterSibling(sibling, nodes) {\r\n var parent = dom_adapter_1.DOM.parentElement(sibling);\r\n if (nodes.length > 0 && lang_1.isPresent(parent)) {\r\n var nextSibling = dom_adapter_1.DOM.nextSibling(sibling);\r\n if (lang_1.isPresent(nextSibling)) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n dom_adapter_1.DOM.insertBefore(nextSibling, nodes[i]);\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < nodes.length; i++) {\r\n dom_adapter_1.DOM.appendChild(parent, nodes[i]);\r\n }\r\n }\r\n }\r\n}\r\nfunction appendNodes(parent, nodes) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n dom_adapter_1.DOM.appendChild(parent, nodes[i]);\r\n }\r\n}\r\nfunction decoratePreventDefault(eventHandler) {\r\n return function (event) {\r\n var allowDefaultBehavior = eventHandler(event);\r\n if (allowDefaultBehavior === false) {\r\n // TODO(tbosch): move preventDefault into event plugins...\r\n dom_adapter_1.DOM.preventDefault(event);\r\n }\r\n };\r\n}\r\nvar COMPONENT_REGEX = /%COMP%/g;\r\nexports.COMPONENT_VARIABLE = '%COMP%';\r\nexports.HOST_ATTR = \"_nghost-\" + exports.COMPONENT_VARIABLE;\r\nexports.CONTENT_ATTR = \"_ngcontent-\" + exports.COMPONENT_VARIABLE;\r\nfunction _shimContentAttribute(componentShortId) {\r\n return lang_1.StringWrapper.replaceAll(exports.CONTENT_ATTR, COMPONENT_REGEX, componentShortId);\r\n}\r\nfunction _shimHostAttribute(componentShortId) {\r\n return lang_1.StringWrapper.replaceAll(exports.HOST_ATTR, COMPONENT_REGEX, componentShortId);\r\n}\r\nfunction _flattenStyles(compId, styles, target) {\r\n for (var i = 0; i < styles.length; i++) {\r\n var style = styles[i];\r\n if (lang_1.isArray(style)) {\r\n _flattenStyles(compId, style, target);\r\n }\r\n else {\r\n style = lang_1.StringWrapper.replaceAll(style, COMPONENT_REGEX, compId);\r\n target.push(style);\r\n }\r\n }\r\n return target;\r\n}\r\nvar NS_PREFIX_RE = /^@([^:]+):(.+)/g;\r\nfunction splitNamespace(name) {\r\n if (name[0] != '@') {\r\n return [null, name];\r\n }\r\n var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, name);\r\n return [match[1], match[2]];\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX3JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUJBQThDLHNCQUFzQixDQUFDLENBQUE7QUFDckUsa0NBQStCLHdDQUF3QyxDQUFDLENBQUE7QUFDeEUscUJBVU8sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQywyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUMvRSxtQ0FBa0Msc0JBQXNCLENBQUMsQ0FBQTtBQVN6RCw4QkFBMkIsd0JBQXdCLENBQUMsQ0FBQTtBQUVwRCwyQkFBdUIsY0FBYyxDQUFDLENBQUE7QUFDdEMseUJBQWdDLDRCQUE0QixDQUFDLENBQUE7QUFDN0QsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQscUJBQWtDLFFBQVEsQ0FBQyxDQUFBO0FBRTNDLElBQU0sY0FBYyxHQUNoQixpQkFBVSxDQUFDLEVBQUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBQyxDQUFDLENBQUM7QUFDL0YsSUFBTSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQztBQUNyRCxJQUFJLHFCQUFxQixHQUFHLDJCQUEyQixDQUFDO0FBRXhEO0lBR0UseUJBQW1CLFFBQWEsRUFBUyxZQUEwQixFQUNoRCxnQkFBcUMsRUFBUyxPQUF5QjtRQUR2RSxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBSGxGLDBCQUFxQixHQUE2QixJQUFJLEdBQUcsRUFBdUIsQ0FBQztJQUdJLENBQUM7SUFFOUYseUNBQWUsR0FBZixVQUFnQixjQUFt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LENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sS0FBSyxHQUFHLG9CQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELElBQUksWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBRXJDLHdCQUF3QixJQUFZO0lBQ2xDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxLQUFLLEdBQUcsb0JBQWEsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge0FuaW1hdGlvbkJ1aWxkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9hbmltYXRlL2FuaW1hdGlvbl9idWlsZGVyJztcbmltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgSnNvbixcbiAgUmVnRXhwV3JhcHBlcixcbiAgQ09OU1RfRVhQUixcbiAgc3RyaW5naWZ5LFxuICBTdHJpbmdXcmFwcGVyLFxuICBpc0FycmF5LFxuICBpc1N0cmluZ1xufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0RvbVNoYXJlZFN0eWxlc0hvc3R9IGZyb20gJy4vc2hhcmVkX3N0eWxlc19ob3N0JztcblxuaW1wb3J0IHtcbiAgUmVuZGVyZXIsXG4gIFJvb3RSZW5kZXJlcixcbiAgUmVuZGVyQ29tcG9uZW50VHlwZSxcbiAgUmVuZGVyRGVidWdJbmZvXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlbmRlci9hcGknO1xuXG5pbXBvcnQge0V2ZW50TWFuYWdlcn0gZnJvbSAnLi9ldmVudHMvZXZlbnRfbWFuYWdlcic7XG5cbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJy4vZG9tX3Rva2Vucyc7XG5pbXBvcnQge1ZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YSc7XG5pbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge2NhbWVsQ2FzZVRvRGFzaENhc2V9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IE5BTUVTUEFDRV9VUklTID1cbiAgICBDT05TVF9FWFBSKHsneGxpbmsnOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsICdzdmcnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnfSk7XG5jb25zdCBURU1QTEFURV9DT01NRU5UX1RFWFQgPSAndGVtcGxhdGUgYmluZGluZ3M9e30nO1xudmFyIFRFTVBMQVRFX0JJTkRJTkdTX0VYUCA9IC9edGVtcGxhdGUgYmluZGluZ3M9KC4qKSQvZztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERvbVJvb3RSZW5kZXJlciBpbXBsZW1lbnRzIFJvb3RSZW5kZXJlciB7XG4gIHByaXZhdGUgX3JlZ2lzdGVyZWRDb21wb25lbnRzOiBNYXA8c3RyaW5nLCBEb21SZW5kZXJlcj4gPSBuZXcgTWFwPHN0cmluZywgRG9tUmVuZGVyZXI+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRvY3VtZW50OiBhbnksIHB1YmxpYyBldmVudE1hbmFnZXI6IEV2ZW50TWFuYWdlcixcbiAgICAgICAgICAgICAgcHVibGljIHNoYXJlZFN0eWxlc0hvc3Q6IERvbVNoYXJlZFN0eWxlc0hvc3QsIHB1YmxpYyBhbmltYXRlOiBBbmltYXRpb25CdWlsZGVyKSB7fVxuXG4gIHJlbmRlckNvbXBvbmVudChjb21wb25lbnRQcm90bzogUmVuZGVyQ29tcG9uZW50VHlwZSk6IFJlbmRlcmVyIHtcbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLl9yZWdpc3RlcmVkQ29tcG9uZW50cy5nZXQoY29tcG9uZW50UHJvdG8uaWQpO1xuICAgIGlmIChpc0JsYW5rKHJlbmRlcmVyKSkge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgRG9tUmVuZGVyZXIodGhpcywgY29tcG9uZW50UHJvdG8pO1xuICAgICAgdGhpcy5fcmVnaXN0ZXJlZENvbXBvbmVudHMuc2V0KGNvbXBvbmVudFByb3RvLmlkLCByZW5kZXJlcik7XG4gICAgfVxuICAgIHJldHVybiByZW5kZXJlcjtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG9tUm9vdFJlbmRlcmVyXyBleHRlbmRzIERvbVJvb3RSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LCBfZXZlbnRNYW5hZ2VyOiBFdmVudE1hbmFnZXIsXG4gICAgICAgICAgICAgIHNoYXJlZFN0eWxlc0hvc3Q6IERvbVNoYXJlZFN0eWxlc0hvc3QsIGFuaW1hdGU6IEFuaW1hdGlvbkJ1aWxkZXIpIHtcbiAgICBzdXBlcihfZG9jdW1lbnQsIF9ldmVudE1hbmFnZXIsIHNoYXJlZFN0eWxlc0hvc3QsIGFuaW1hdGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEb21SZW5kZXJlciBpbXBsZW1lbnRzIFJlbmRlcmVyIHtcbiAgcHJpdmF0ZSBfY29udGVudEF0dHI6IHN0cmluZztcbiAgcHJpdmF0ZSBfaG9zdEF0dHI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc3R5bGVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb290UmVuZGVyZXI6IERvbVJvb3RSZW5kZXJlciwgcHJpdmF0ZSBjb21wb25lbnRQcm90bzogUmVuZGVyQ29tcG9uZW50VHlwZSkge1xuICAgIHRoaXMuX3N0eWxlcyA9IF9mbGF0dGVuU3R5bGVzKGNvbXBvbmVudFByb3RvLmlkLCBjb21wb25lbnRQcm90by5zdHlsZXMsIFtdKTtcbiAgICBpZiAoY29tcG9uZW50UHJvdG8uZW5jYXBzdWxhdGlvbiAhPT0gVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlKSB7XG4gICAgICB0aGlzLl9yb290UmVuZGVyZXIuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXModGhpcy5fc3R5bGVzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UHJvdG8uZW5jYXBzdWxhdGlvbiA9PT0gVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbnRlbnRBdHRyID0gX3NoaW1Db250ZW50QXR0cmlidXRlKGNvbXBvbmVudFByb3RvLmlkKTtcbiAgICAgIHRoaXMuX2hvc3RBdHRyID0gX3NoaW1Ib3N0QXR0cmlidXRlKGNvbXBvbmVudFByb3RvLmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29udGVudEF0dHIgPSBudWxsO1xuICAgICAgdGhpcy5faG9zdEF0dHIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJvb3RFbGVtZW50KHNlbGVjdG9yT3JOb2RlOiBzdHJpbmcgfCBhbnksIGRlYnVnSW5mbzogUmVuZGVyRGVidWdJbmZvKTogRWxlbWVudCB7XG4gICAgdmFyIGVsO1xuICAgIGlmIChpc1N0cmluZyhzZWxlY3Rvck9yTm9kZSkpIHtcbiAgICAgIGVsID0gRE9NLnF1ZXJ5U2VsZWN0b3IodGhpcy5fcm9vdFJlbmRlcmVyLmRvY3VtZW50LCBzZWxlY3Rvck9yTm9kZSk7XG4gICAgICBpZiAoaXNCbGFuayhlbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYFRoZSBzZWxlY3RvciBcIiR7c2VsZWN0b3JPck5vZGV9XCIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHNgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWwgPSBzZWxlY3Rvck9yTm9kZTtcbiAgICB9XG4gICAgRE9NLmNsZWFyTm9kZXMoZWwpO1xuICAgIHJldHVybiBlbDtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnQocGFyZW50OiBFbGVtZW50LCBuYW1lOiBzdHJpbmcsIGRlYnVnSW5mbzogUmVuZGVyRGVidWdJbmZvKTogTm9kZSB7XG4gICAgdmFyIG5zQW5kTmFtZSA9IHNwbGl0TmFtZXNwYWNlKG5hbWUpO1xuICAgIHZhciBlbCA9IGlzUHJlc2VudChuc0FuZE5hbWVbMF0pID9cbiAgICAgICAgICAgICAgICAgRE9NLmNyZWF0ZUVsZW1lbnROUyhOQU1FU1BBQ0VfVVJJU1tuc0FuZE5hbWVbMF1dLCBuc0FuZE5hbWVbMV0pIDpcbiAgICAgICAgICAgICAgICAgRE9NLmNyZWF0ZUVsZW1lbnQobnNBbmROYW1lWzFdKTtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2NvbnRlbnRBdHRyKSkge1xuICAgICAgRE9NLnNldEF0dHJpYnV0ZShlbCwgdGhpcy5fY29udGVudEF0dHIsICcnKTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnQpKSB7XG4gICAgICBET00uYXBwZW5kQ2hpbGQocGFyZW50LCBlbCk7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbiAgfVxuXG4gIGNyZWF0ZVZpZXdSb290KGhvc3RFbGVtZW50OiBhbnkpOiBhbnkge1xuICAgIHZhciBub2Rlc1BhcmVudDtcbiAgICBpZiAodGhpcy5jb21wb25lbnRQcm90by5lbmNhcHN1bGF0aW9uID09PSBWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmUpIHtcbiAgICAgIG5vZGVzUGFyZW50ID0gRE9NLmNyZWF0ZVNoYWRvd1Jvb3QoaG9zdEVsZW1lbnQpO1xuICAgICAgdGhpcy5fcm9vdFJlbmRlcmVyLnNoYXJlZFN0eWxlc0hvc3QuYWRkSG9zdChub2Rlc1BhcmVudCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3N0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBET00uYXBwZW5kQ2hpbGQobm9kZXNQYXJlbnQsIERPTS5jcmVhdGVTdHlsZUVsZW1lbnQodGhpcy5fc3R5bGVzW2ldKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1ByZXNlbnQodGhpcy5faG9zdEF0dHIpKSB7XG4gICAgICAgIERPTS5zZXRBdHRyaWJ1dGUoaG9zdEVsZW1lbnQsIHRoaXMuX2hvc3RBdHRyLCAnJyk7XG4gICAgICB9XG4gICAgICBub2Rlc1BhcmVudCA9IGhvc3RFbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZXNQYXJlbnQ7XG4gIH1cblxuICBjcmVhdGVUZW1wbGF0ZUFuY2hvcihwYXJlbnRFbGVtZW50OiBhbnksIGRlYnVnSW5mbzogUmVuZGVyRGVidWdJbmZvKTogYW55IHtcbiAgICB2YXIgY29tbWVudCA9IERPTS5jcmVhdGVDb21tZW50KFRFTVBMQVRFX0NPTU1FTlRfVEVYVCk7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnRFbGVtZW50KSkge1xuICAgICAgRE9NLmFwcGVuZENoaWxkKHBhcmVudEVsZW1lbnQsIGNvbW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIGNyZWF0ZVRleHQocGFyZW50RWxlbWVudDogYW55LCB2YWx1ZTogc3RyaW5nLCBkZWJ1Z0luZm86IFJlbmRlckRlYnVnSW5mbyk6IGFueSB7XG4gICAgdmFyIG5vZGUgPSBET00uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgIGlmIChpc1ByZXNlbnQocGFyZW50RWxlbWVudCkpIHtcbiAgICAgIERPTS5hcHBlbmRDaGlsZChwYXJlbnRFbGVtZW50LCBub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcm9qZWN0Tm9kZXMocGFyZW50RWxlbWVudDogYW55LCBub2RlczogYW55W10pIHtcbiAgICBpZiAoaXNCbGFuayhwYXJlbnRFbGVtZW50KSkgcmV0dXJuO1xuICAgIGFwcGVuZE5vZGVzKHBhcmVudEVsZW1lbnQsIG5vZGVzKTtcbiAgfVxuXG4gIGF0dGFjaFZpZXdBZnRlcihub2RlOiBhbnksIHZpZXdSb290Tm9kZXM6IGFueVtdKSB7XG4gICAgbW92ZU5vZGVzQWZ0ZXJTaWJsaW5nKG5vZGUsIHZpZXdSb290Tm9kZXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld1Jvb3ROb2Rlcy5sZW5ndGg7IGkrKykgdGhpcy5hbmltYXRlTm9kZUVudGVyKHZpZXdSb290Tm9kZXNbaV0pO1xuICB9XG5cbiAgZGV0YWNoVmlldyh2aWV3Um9vdE5vZGVzOiBhbnlbXSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlld1Jvb3ROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSB2aWV3Um9vdE5vZGVzW2ldO1xuICAgICAgRE9NLnJlbW92ZShub2RlKTtcbiAgICAgIHRoaXMuYW5pbWF0ZU5vZGVMZWF2ZShub2RlKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95Vmlldyhob3N0RWxlbWVudDogYW55LCB2aWV3QWxsTm9kZXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UHJvdG8uZW5jYXBzdWxhdGlvbiA9PT0gVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlICYmIGlzUHJlc2VudChob3N0RWxlbWVudCkpIHtcbiAgICAgIHRoaXMuX3Jvb3RSZW5kZXJlci5zaGFyZWRTdHlsZXNIb3N0LnJlbW92ZUhvc3QoRE9NLmdldFNoYWRvd1Jvb3QoaG9zdEVsZW1lbnQpKTtcbiAgICB9XG4gIH1cblxuICBsaXN0ZW4ocmVuZGVyRWxlbWVudDogYW55LCBuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdFJlbmRlcmVyLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHJlbmRlckVsZW1lbnQsIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVByZXZlbnREZWZhdWx0KGNhbGxiYWNrKSk7XG4gIH1cblxuICBsaXN0ZW5HbG9iYWwodGFyZ2V0OiBzdHJpbmcsIG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9yb290UmVuZGVyZXIuZXZlbnRNYW5hZ2VyLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVQcmV2ZW50RGVmYXVsdChjYWxsYmFjaykpO1xuICB9XG5cbiAgc2V0RWxlbWVudFByb3BlcnR5KHJlbmRlckVsZW1lbnQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIERPTS5zZXRQcm9wZXJ0eShyZW5kZXJFbGVtZW50LCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpO1xuICB9XG5cbiAgc2V0RWxlbWVudEF0dHJpYnV0ZShyZW5kZXJFbGVtZW50OiBhbnksIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgYXR0cmlidXRlVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHZhciBhdHRyTnM7XG4gICAgdmFyIG5zQW5kTmFtZSA9IHNwbGl0TmFtZXNwYWNlKGF0dHJpYnV0ZU5hbWUpO1xuICAgIGlmIChpc1ByZXNlbnQobnNBbmROYW1lWzBdKSkge1xuICAgICAgYXR0cmlidXRlTmFtZSA9IG5zQW5kTmFtZVswXSArICc6JyArIG5zQW5kTmFtZVsxXTtcbiAgICAgIGF0dHJOcyA9IE5BTUVTUEFDRV9VUklTW25zQW5kTmFtZVswXV07XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICBpZiAoaXNQcmVzZW50KGF0dHJOcykpIHtcbiAgICAgICAgRE9NLnNldEF0dHJpYnV0ZU5TKHJlbmRlckVsZW1lbnQsIGF0dHJOcywgYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRE9NLnNldEF0dHJpYnV0ZShyZW5kZXJFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1ByZXNlbnQoYXR0ck5zKSkge1xuICAgICAgICBET00ucmVtb3ZlQXR0cmlidXRlTlMocmVuZGVyRWxlbWVudCwgYXR0ck5zLCBuc0FuZE5hbWVbMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRE9NLnJlbW92ZUF0dHJpYnV0ZShyZW5kZXJFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRCaW5kaW5nRGVidWdJbmZvKHJlbmRlckVsZW1lbnQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHZhciBkYXNoQ2FzZWRQcm9wZXJ0eU5hbWUgPSBjYW1lbENhc2VUb0Rhc2hDYXNlKHByb3BlcnR5TmFtZSk7XG4gICAgaWYgKERPTS5pc0NvbW1lbnROb2RlKHJlbmRlckVsZW1lbnQpKSB7XG4gICAgICB2YXIgZXhpc3RpbmdCaW5kaW5ncyA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChcbiAgICAgICAgICBURU1QTEFURV9CSU5ESU5HU19FWFAsIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChET00uZ2V0VGV4dChyZW5kZXJFbGVtZW50KSwgL1xcbi9nLCAnJykpO1xuICAgICAgdmFyIHBhcnNlZEJpbmRpbmdzID0gSnNvbi5wYXJzZShleGlzdGluZ0JpbmRpbmdzWzFdKTtcbiAgICAgIHBhcnNlZEJpbmRpbmdzW2Rhc2hDYXNlZFByb3BlcnR5TmFtZV0gPSBwcm9wZXJ0eVZhbHVlO1xuICAgICAgRE9NLnNldFRleHQocmVuZGVyRWxlbWVudCwgU3RyaW5nV3JhcHBlci5yZXBsYWNlKFRFTVBMQVRFX0NPTU1FTlRfVEVYVCwgJ3t9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKc29uLnN0cmluZ2lmeShwYXJzZWRCaW5kaW5ncykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRFbGVtZW50QXR0cmlidXRlKHJlbmRlckVsZW1lbnQsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RWxlbWVudENsYXNzKHJlbmRlckVsZW1lbnQ6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcsIGlzQWRkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzQWRkKSB7XG4gICAgICBET00uYWRkQ2xhc3MocmVuZGVyRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgRE9NLnJlbW92ZUNsYXNzKHJlbmRlckVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RWxlbWVudFN0eWxlKHJlbmRlckVsZW1lbnQ6IGFueSwgc3R5bGVOYW1lOiBzdHJpbmcsIHN0eWxlVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc1ByZXNlbnQoc3R5bGVWYWx1ZSkpIHtcbiAgICAgIERPTS5zZXRTdHlsZShyZW5kZXJFbGVtZW50LCBzdHlsZU5hbWUsIHN0cmluZ2lmeShzdHlsZVZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTS5yZW1vdmVTdHlsZShyZW5kZXJFbGVtZW50LCBzdHlsZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZUVsZW1lbnRNZXRob2QocmVuZGVyRWxlbWVudDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgRE9NLmludm9rZShyZW5kZXJFbGVtZW50LCBtZXRob2ROYW1lLCBhcmdzKTtcbiAgfVxuXG4gIHNldFRleHQocmVuZGVyTm9kZTogYW55LCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHsgRE9NLnNldFRleHQocmVuZGVyTm9kZSwgdGV4dCk7IH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgYW5pbWF0aW9ucyBpZiBuZWNlc3NhcnlcbiAgICogQHBhcmFtIG5vZGVcbiAgICovXG4gIGFuaW1hdGVOb2RlRW50ZXIobm9kZTogTm9kZSkge1xuICAgIGlmIChET00uaXNFbGVtZW50Tm9kZShub2RlKSAmJiBET00uaGFzQ2xhc3Mobm9kZSwgJ25nLWFuaW1hdGUnKSkge1xuICAgICAgRE9NLmFkZENsYXNzKG5vZGUsICduZy1lbnRlcicpO1xuICAgICAgdGhpcy5fcm9vdFJlbmRlcmVyLmFuaW1hdGUuY3NzKClcbiAgICAgICAgICAuYWRkQW5pbWF0aW9uQ2xhc3MoJ25nLWVudGVyLWFjdGl2ZScpXG4gICAgICAgICAgLnN0YXJ0KDxIVE1MRWxlbWVudD5ub2RlKVxuICAgICAgICAgIC5vbkNvbXBsZXRlKCgpID0+IHsgRE9NLnJlbW92ZUNsYXNzKG5vZGUsICduZy1lbnRlcicpOyB9KTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBJZiBhbmltYXRpb25zIGFyZSBuZWNlc3NhcnksIHBlcmZvcm1zIGFuaW1hdGlvbnMgdGhlbiByZW1vdmVzIHRoZSBlbGVtZW50OyBvdGhlcndpc2UsIGl0IGp1c3RcbiAgICogcmVtb3ZlcyB0aGUgZWxlbWVudC5cbiAgICogQHBhcmFtIG5vZGVcbiAgICovXG4gIGFuaW1hdGVOb2RlTGVhdmUobm9kZTogTm9kZSkge1xuICAgIGlmIChET00uaXNFbGVtZW50Tm9kZShub2RlKSAmJiBET00uaGFzQ2xhc3Mobm9kZSwgJ25nLWFuaW1hdGUnKSkge1xuICAgICAgRE9NLmFkZENsYXNzKG5vZGUsICduZy1sZWF2ZScpO1xuICAgICAgdGhpcy5fcm9vdFJlbmRlcmVyLmFuaW1hdGUuY3NzKClcbiAgICAgICAgICAuYWRkQW5pbWF0aW9uQ2xhc3MoJ25nLWxlYXZlLWFjdGl2ZScpXG4gICAgICAgICAgLnN0YXJ0KDxIVE1MRWxlbWVudD5ub2RlKVxuICAgICAgICAgIC5vbkNvbXBsZXRlKCgpID0+IHtcbiAgICAgICAgICAgIERPTS5yZW1vdmVDbGFzcyhub2RlLCAnbmctbGVhdmUnKTtcbiAgICAgICAgICAgIERPTS5yZW1vdmUobm9kZSk7XG4gICAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTS5yZW1vdmUobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1vdmVOb2Rlc0FmdGVyU2libGluZyhzaWJsaW5nLCBub2Rlcykge1xuICB2YXIgcGFyZW50ID0gRE9NLnBhcmVudEVsZW1lbnQoc2libGluZyk7XG4gIGlmIChub2Rlcy5sZW5ndGggPiAwICYmIGlzUHJlc2VudChwYXJlbnQpKSB7XG4gICAgdmFyIG5leHRTaWJsaW5nID0gRE9NLm5leHRTaWJsaW5nKHNpYmxpbmcpO1xuICAgIGlmIChpc1ByZXNlbnQobmV4dFNpYmxpbmcpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIERPTS5pbnNlcnRCZWZvcmUobmV4dFNpYmxpbmcsIG5vZGVzW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBET00uYXBwZW5kQ2hpbGQocGFyZW50LCBub2Rlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGVuZE5vZGVzKHBhcmVudCwgbm9kZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIERPTS5hcHBlbmRDaGlsZChwYXJlbnQsIG5vZGVzW2ldKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWNvcmF0ZVByZXZlbnREZWZhdWx0KGV2ZW50SGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICB2YXIgYWxsb3dEZWZhdWx0QmVoYXZpb3IgPSBldmVudEhhbmRsZXIoZXZlbnQpO1xuICAgIGlmIChhbGxvd0RlZmF1bHRCZWhhdmlvciA9PT0gZmFsc2UpIHtcbiAgICAgIC8vIFRPRE8odGJvc2NoKTogbW92ZSBwcmV2ZW50RGVmYXVsdCBpbnRvIGV2ZW50IHBsdWdpbnMuLi5cbiAgICAgIERPTS5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgfVxuICB9O1xufVxuXG52YXIgQ09NUE9ORU5UX1JFR0VYID0gLyVDT01QJS9nO1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9WQVJJQUJMRSA9ICclQ09NUCUnO1xuZXhwb3J0IGNvbnN0IEhPU1RfQVRUUiA9IGBfbmdob3N0LSR7Q09NUE9ORU5UX1ZBUklBQkxFfWA7XG5leHBvcnQgY29uc3QgQ09OVEVOVF9BVFRSID0gYF9uZ2NvbnRlbnQtJHtDT01QT05FTlRfVkFSSUFCTEV9YDtcblxuZnVuY3Rpb24gX3NoaW1Db250ZW50QXR0cmlidXRlKGNvbXBvbmVudFNob3J0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoQ09OVEVOVF9BVFRSLCBDT01QT05FTlRfUkVHRVgsIGNvbXBvbmVudFNob3J0SWQpO1xufVxuXG5mdW5jdGlvbiBfc2hpbUhvc3RBdHRyaWJ1dGUoY29tcG9uZW50U2hvcnRJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChIT1NUX0FUVFIsIENPTVBPTkVOVF9SRUdFWCwgY29tcG9uZW50U2hvcnRJZCk7XG59XG5cbmZ1bmN0aW9uIF9mbGF0dGVuU3R5bGVzKGNvbXBJZDogc3RyaW5nLCBzdHlsZXM6IEFycmF5PGFueSB8IGFueVtdPiwgdGFyZ2V0OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3R5bGUgPSBzdHlsZXNbaV07XG4gICAgaWYgKGlzQXJyYXkoc3R5bGUpKSB7XG4gICAgICBfZmxhdHRlblN0eWxlcyhjb21wSWQsIHN0eWxlLCB0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZSA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChzdHlsZSwgQ09NUE9ORU5UX1JFR0VYLCBjb21wSWQpO1xuICAgICAgdGFyZ2V0LnB1c2goc3R5bGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG52YXIgTlNfUFJFRklYX1JFID0gL15AKFteOl0rKTooLispL2c7XG5cbmZ1bmN0aW9uIHNwbGl0TmFtZXNwYWNlKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKG5hbWVbMF0gIT0gJ0AnKSB7XG4gICAgcmV0dXJuIFtudWxsLCBuYW1lXTtcbiAgfVxuICBsZXQgbWF0Y2ggPSBSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2goTlNfUFJFRklYX1JFLCBuYW1lKTtcbiAgcmV0dXJuIFttYXRjaFsxXSwgbWF0Y2hbMl1dO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar debug_node_1 = require('angular2/src/core/debug/debug_node');\r\nvar DebugDomRootRenderer = (function () {\r\n function DebugDomRootRenderer(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n DebugDomRootRenderer.prototype.renderComponent = function (componentProto) {\r\n return new DebugDomRenderer(this._delegate.renderComponent(componentProto));\r\n };\r\n return DebugDomRootRenderer;\r\n}());\r\nexports.DebugDomRootRenderer = DebugDomRootRenderer;\r\nvar DebugDomRenderer = (function () {\r\n function DebugDomRenderer(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n DebugDomRenderer.prototype.selectRootElement = function (selectorOrNode, debugInfo) {\r\n var nativeEl = this._delegate.selectRootElement(selectorOrNode, debugInfo);\r\n var debugEl = new debug_node_1.DebugElement(nativeEl, null, debugInfo);\r\n debug_node_1.indexDebugNode(debugEl);\r\n return nativeEl;\r\n };\r\n DebugDomRenderer.prototype.createElement = function (parentElement, name, debugInfo) {\r\n var nativeEl = this._delegate.createElement(parentElement, name, debugInfo);\r\n var debugEl = new debug_node_1.DebugElement(nativeEl, debug_node_1.getDebugNode(parentElement), debugInfo);\r\n debugEl.name = name;\r\n debug_node_1.indexDebugNode(debugEl);\r\n return nativeEl;\r\n };\r\n DebugDomRenderer.prototype.createViewRoot = function (hostElement) { return this._delegate.createViewRoot(hostElement); };\r\n DebugDomRenderer.prototype.createTemplateAnchor = function (parentElement, debugInfo) {\r\n var comment = this._delegate.createTemplateAnchor(parentElement, debugInfo);\r\n var debugEl = new debug_node_1.DebugNode(comment, debug_node_1.getDebugNode(parentElement), debugInfo);\r\n debug_node_1.indexDebugNode(debugEl);\r\n return comment;\r\n };\r\n DebugDomRenderer.prototype.createText = function (parentElement, value, debugInfo) {\r\n var text = this._delegate.createText(parentElement, value, debugInfo);\r\n var debugEl = new debug_node_1.DebugNode(text, debug_node_1.getDebugNode(parentElement), debugInfo);\r\n debug_node_1.indexDebugNode(debugEl);\r\n return text;\r\n };\r\n DebugDomRenderer.prototype.projectNodes = function (parentElement, nodes) {\r\n var debugParent = debug_node_1.getDebugNode(parentElement);\r\n if (lang_1.isPresent(debugParent) && debugParent instanceof debug_node_1.DebugElement) {\r\n var debugElement_1 = debugParent;\r\n nodes.forEach(function (node) { debugElement_1.addChild(debug_node_1.getDebugNode(node)); });\r\n }\r\n this._delegate.projectNodes(parentElement, nodes);\r\n };\r\n DebugDomRenderer.prototype.attachViewAfter = function (node, viewRootNodes) {\r\n var debugNode = debug_node_1.getDebugNode(node);\r\n if (lang_1.isPresent(debugNode)) {\r\n var debugParent = debugNode.parent;\r\n if (viewRootNodes.length > 0 && lang_1.isPresent(debugParent)) {\r\n var debugViewRootNodes = [];\r\n viewRootNodes.forEach(function (rootNode) { return debugViewRootNodes.push(debug_node_1.getDebugNode(rootNode)); });\r\n debugParent.insertChildrenAfter(debugNode, debugViewRootNodes);\r\n }\r\n }\r\n this._delegate.attachViewAfter(node, viewRootNodes);\r\n };\r\n DebugDomRenderer.prototype.detachView = function (viewRootNodes) {\r\n viewRootNodes.forEach(function (node) {\r\n var debugNode = debug_node_1.getDebugNode(node);\r\n if (lang_1.isPresent(debugNode) && lang_1.isPresent(debugNode.parent)) {\r\n debugNode.parent.removeChild(debugNode);\r\n }\r\n });\r\n this._delegate.detachView(viewRootNodes);\r\n };\r\n DebugDomRenderer.prototype.destroyView = function (hostElement, viewAllNodes) {\r\n viewAllNodes.forEach(function (node) { debug_node_1.removeDebugNodeFromIndex(debug_node_1.getDebugNode(node)); });\r\n this._delegate.destroyView(hostElement, viewAllNodes);\r\n };\r\n DebugDomRenderer.prototype.listen = function (renderElement, name, callback) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n if (lang_1.isPresent(debugEl)) {\r\n debugEl.listeners.push(new debug_node_1.EventListener(name, callback));\r\n }\r\n return this._delegate.listen(renderElement, name, callback);\r\n };\r\n DebugDomRenderer.prototype.listenGlobal = function (target, name, callback) {\r\n return this._delegate.listenGlobal(target, name, callback);\r\n };\r\n DebugDomRenderer.prototype.setElementProperty = function (renderElement, propertyName, propertyValue) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n if (lang_1.isPresent(debugEl) && debugEl instanceof debug_node_1.DebugElement) {\r\n debugEl.properties[propertyName] = propertyValue;\r\n }\r\n this._delegate.setElementProperty(renderElement, propertyName, propertyValue);\r\n };\r\n DebugDomRenderer.prototype.setElementAttribute = function (renderElement, attributeName, attributeValue) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n if (lang_1.isPresent(debugEl) && debugEl instanceof debug_node_1.DebugElement) {\r\n debugEl.attributes[attributeName] = attributeValue;\r\n }\r\n this._delegate.setElementAttribute(renderElement, attributeName, attributeValue);\r\n };\r\n DebugDomRenderer.prototype.setBindingDebugInfo = function (renderElement, propertyName, propertyValue) {\r\n this._delegate.setBindingDebugInfo(renderElement, propertyName, propertyValue);\r\n };\r\n DebugDomRenderer.prototype.setElementClass = function (renderElement, className, isAdd) {\r\n this._delegate.setElementClass(renderElement, className, isAdd);\r\n };\r\n DebugDomRenderer.prototype.setElementStyle = function (renderElement, styleName, styleValue) {\r\n this._delegate.setElementStyle(renderElement, styleName, styleValue);\r\n };\r\n DebugDomRenderer.prototype.invokeElementMethod = function (renderElement, methodName, args) {\r\n this._delegate.invokeElementMethod(renderElement, methodName, args);\r\n };\r\n DebugDomRenderer.prototype.setText = function (renderNode, text) { this._delegate.setText(renderNode, text); };\r\n return DebugDomRenderer;\r\n}());\r\nexports.DebugDomRenderer = DebugDomRenderer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdfcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kZWJ1Zy9kZWJ1Z19yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQXdCLDBCQUEwQixDQUFDLENBQUE7QUFPbkQsMkJBT08sb0NBQW9DLENBQUMsQ0FBQTtBQUU1QztJQUNFLDhCQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUvQyw4Q0FBZSxHQUFmLFVBQWdCLGNBQW1DO1FBQ2pELE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNILDJCQUFDO0FBQUQsQ0FBQyxBQU5ELElBTUM7QUFOWSw0QkFBb0IsdUJBTWhDLENBQUE7QUFFRDtJQUNFLDBCQUFvQixTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO0lBQUcsQ0FBQztJQUUzQyw0Q0FBaUIsR0FBakIsVUFBa0IsY0FBNEIsRUFBRSxTQUEwQjtRQUN4RSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzRSxJQUFJLE9BQU8sR0FBRyxJQUFJLHlCQUFZLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxRCwyQkFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELHdDQUFhLEdBQWIsVUFBYyxhQUFrQixFQUFFLElBQVksRUFBRSxTQUEwQjtRQUN4RSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxh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LENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsMENBQWUsR0FBZixVQUFnQixhQUFrQixFQUFFLFNBQWlCLEVBQUUsS0FBYztRQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCwwQ0FBZSxHQUFmLFVBQWdCLGFBQWtCLEVBQUUsU0FBaUIsRUFBRSxVQUFrQjtRQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCw4Q0FBbUIsR0FBbkIsVUFBb0IsYUFBa0IsRUFBRSxVQUFrQixFQUFFLElBQVc7UUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQ0FBTyxHQUFQLFVBQVEsVUFBZSxFQUFFLElBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLHVCQUFDO0FBQUQsQ0FBQyxBQXBIRCxJQW9IQztBQXBIWSx3QkFBZ0IsbUJBb0g1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1xuICBSZW5kZXJlcixcbiAgUm9vdFJlbmRlcmVyLFxuICBSZW5kZXJDb21wb25lbnRUeXBlLFxuICBSZW5kZXJEZWJ1Z0luZm9cbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaSc7XG5pbXBvcnQge1xuICBEZWJ1Z05vZGUsXG4gIERlYnVnRWxlbWVudCxcbiAgRXZlbnRMaXN0ZW5lcixcbiAgZ2V0RGVidWdOb2RlLFxuICBpbmRleERlYnVnTm9kZSxcbiAgcmVtb3ZlRGVidWdOb2RlRnJvbUluZGV4XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RlYnVnL2RlYnVnX25vZGUnO1xuXG5leHBvcnQgY2xhc3MgRGVidWdEb21Sb290UmVuZGVyZXIgaW1wbGVtZW50cyBSb290UmVuZGVyZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZWxlZ2F0ZTogUm9vdFJlbmRlcmVyKSB7fVxuXG4gIHJlbmRlckNvbXBvbmVudChjb21wb25lbnRQcm90bzogUmVuZGVyQ29tcG9uZW50VHlwZSk6IFJlbmRlcmVyIHtcbiAgICByZXR1cm4gbmV3IERlYnVnRG9tUmVuZGVyZXIodGhpcy5fZGVsZWdhdGUucmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudFByb3RvKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlYnVnRG9tUmVuZGVyZXIgaW1wbGVtZW50cyBSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlbGVnYXRlOiBSZW5kZXJlcikge31cblxuICBzZWxlY3RSb290RWxlbWVudChzZWxlY3Rvck9yTm9kZTogc3RyaW5nIHwgYW55LCBkZWJ1Z0luZm86IFJlbmRlckRlYnVnSW5mbyk6IGFueSB7XG4gICAgdmFyIG5hdGl2ZUVsID0gdGhpcy5fZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQoc2VsZWN0b3JPck5vZGUsIGRlYnVnSW5mbyk7XG4gICAgdmFyIGRlYnVnRWwgPSBuZXcgRGVidWdFbGVtZW50KG5hdGl2ZUVsLCBudWxsLCBkZWJ1Z0luZm8pO1xuICAgIGluZGV4RGVidWdOb2RlKGRlYnVnRWwpO1xuICAgIHJldHVybiBuYXRpdmVFbDtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnQocGFyZW50RWxlbWVudDogYW55LCBuYW1lOiBzdHJpbmcsIGRlYnVnSW5mbzogUmVuZGVyRGVidWdJbmZvKTogYW55IHtcbiAgICB2YXIgbmF0aXZlRWwgPSB0aGlzLl9kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHBhcmVudEVsZW1lbnQsIG5hbWUsIGRlYnVnSW5mbyk7XG4gICAgdmFyIGRlYnVnRWwgPSBuZXcgRGVidWdFbGVtZW50KG5hdGl2ZUVsLCBnZXREZWJ1Z05vZGUocGFyZW50RWxlbWVudCksIGRlYnVnSW5mbyk7XG4gICAgZGVidWdFbC5uYW1lID0gbmFtZTtcbiAgICBpbmRleERlYnVnTm9kZShkZWJ1Z0VsKTtcbiAgICByZXR1cm4gbmF0aXZlRWw7XG4gIH1cblxuICBjcmVhdGVWaWV3Um9vdChob3N0RWxlbWVudDogYW55KTogYW55IHsgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmNyZWF0ZVZpZXdSb290KGhvc3RFbGVtZW50KTsgfVxuXG4gIGNyZWF0ZVRlbXBsYXRlQW5jaG9yKHBhcmVudEVsZW1lbnQ6IGFueSwgZGVidWdJbmZvOiBSZW5kZXJEZWJ1Z0luZm8pOiBhbnkge1xuICAgIHZhciBjb21tZW50ID0gdGhpcy5fZGVsZWdhdGUuY3JlYXRlVGVtcGxhdGVBbmNob3IocGFyZW50RWxlbWVudCwgZGVidWdJbmZvKTtcbiAgICB2YXIgZGVidWdFbCA9IG5ldyBEZWJ1Z05vZGUoY29tbWVudCwgZ2V0RGVidWdOb2RlKHBhcmVudEVsZW1lbnQpLCBkZWJ1Z0luZm8pO1xuICAgIGluZGV4RGVidWdOb2RlKGRlYnVnRWwpO1xuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgY3JlYXRlVGV4dChwYXJlbnRFbGVtZW50OiBhbnksIHZhbHVlOiBzdHJpbmcsIGRlYnVnSW5mbzogUmVuZGVyRGVidWdJbmZvKTogYW55IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuX2RlbGVnYXRlLmNyZWF0ZVRleHQocGFyZW50RWxlbWVudCwgdmFsdWUsIGRlYnVnSW5mbyk7XG4gICAgdmFyIGRlYnVnRWwgPSBuZXcgRGVidWdOb2RlKHRleHQsIGdldERlYnVnTm9kZShwYXJlbnRFbGVtZW50KSwgZGVidWdJbmZvKTtcbiAgICBpbmRleERlYnVnTm9kZShkZWJ1Z0VsKTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIHByb2plY3ROb2RlcyhwYXJlbnRFbGVtZW50OiBhbnksIG5vZGVzOiBhbnlbXSkge1xuICAgIHZhciBkZWJ1Z1BhcmVudCA9IGdldERlYnVnTm9kZShwYXJlbnRFbGVtZW50KTtcbiAgICBpZiAoaXNQcmVzZW50KGRlYnVnUGFyZW50KSAmJiBkZWJ1Z1BhcmVudCBpbnN0YW5jZW9mIERlYnVnRWxlbWVudCkge1xuICAgICAgbGV0IGRlYnVnRWxlbWVudCA9IGRlYnVnUGFyZW50O1xuICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4geyBkZWJ1Z0VsZW1lbnQuYWRkQ2hpbGQoZ2V0RGVidWdOb2RlKG5vZGUpKTsgfSk7XG4gICAgfVxuICAgIHRoaXMuX2RlbGVnYXRlLnByb2plY3ROb2RlcyhwYXJlbnRFbGVtZW50LCBub2Rlcyk7XG4gIH1cblxuICBhdHRhY2hWaWV3QWZ0ZXIobm9kZTogYW55LCB2aWV3Um9vdE5vZGVzOiBhbnlbXSkge1xuICAgIHZhciBkZWJ1Z05vZGUgPSBnZXREZWJ1Z05vZGUobm9kZSk7XG4gICAgaWYgKGlzUHJlc2VudChkZWJ1Z05vZGUpKSB7XG4gICAgICB2YXIgZGVidWdQYXJlbnQgPSBkZWJ1Z05vZGUucGFyZW50O1xuICAgICAgaWYgKHZpZXdSb290Tm9kZXMubGVuZ3RoID4gMCAmJiBpc1ByZXNlbnQoZGVidWdQYXJlbnQpKSB7XG4gICAgICAgIHZhciBkZWJ1Z1ZpZXdSb290Tm9kZXM6IERlYnVnTm9kZVtdID0gW107XG4gICAgICAgIHZpZXdSb290Tm9kZXMuZm9yRWFjaCgocm9vdE5vZGUpID0+IGRlYnVnVmlld1Jvb3ROb2Rlcy5wdXNoKGdldERlYnVnTm9kZShyb290Tm9kZSkpKTtcbiAgICAgICAgZGVidWdQYXJlbnQuaW5zZXJ0Q2hpbGRyZW5BZnRlcihkZWJ1Z05vZGUsIGRlYnVnVmlld1Jvb3ROb2Rlcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2RlbGVnYXRlLmF0dGFjaFZpZXdBZnRlcihub2RlLCB2aWV3Um9vdE5vZGVzKTtcbiAgfVxuXG4gIGRldGFjaFZpZXcodmlld1Jvb3ROb2RlczogYW55W10pIHtcbiAgICB2aWV3Um9vdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIHZhciBkZWJ1Z05vZGUgPSBnZXREZWJ1Z05vZGUobm9kZSk7XG4gICAgICBpZiAoaXNQcmVzZW50KGRlYnVnTm9kZSkgJiYgaXNQcmVzZW50KGRlYnVnTm9kZS5wYXJlbnQpKSB7XG4gICAgICAgIGRlYnVnTm9kZS5wYXJlbnQucmVtb3ZlQ2hpbGQoZGVidWdOb2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9kZWxlZ2F0ZS5kZXRhY2hWaWV3KHZpZXdSb290Tm9kZXMpO1xuICB9XG5cbiAgZGVzdHJveVZpZXcoaG9zdEVsZW1lbnQ6IGFueSwgdmlld0FsbE5vZGVzOiBhbnlbXSkge1xuICAgIHZpZXdBbGxOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7IHJlbW92ZURlYnVnTm9kZUZyb21JbmRleChnZXREZWJ1Z05vZGUobm9kZSkpOyB9KTtcbiAgICB0aGlzLl9kZWxlZ2F0ZS5kZXN0cm95Vmlldyhob3N0RWxlbWVudCwgdmlld0FsbE5vZGVzKTtcbiAgfVxuXG4gIGxpc3RlbihyZW5kZXJFbGVtZW50OiBhbnksIG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHZhciBkZWJ1Z0VsID0gZ2V0RGVidWdOb2RlKHJlbmRlckVsZW1lbnQpO1xuICAgIGlmIChpc1ByZXNlbnQoZGVidWdFbCkpIHtcbiAgICAgIGRlYnVnRWwubGlzdGVuZXJzLnB1c2gobmV3IEV2ZW50TGlzdGVuZXIobmFtZSwgY2FsbGJhY2spKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmxpc3RlbihyZW5kZXJFbGVtZW50LCBuYW1lLCBjYWxsYmFjayk7XG4gIH1cblxuICBsaXN0ZW5HbG9iYWwodGFyZ2V0OiBzdHJpbmcsIG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5saXN0ZW5HbG9iYWwodGFyZ2V0LCBuYW1lLCBjYWxsYmFjayk7XG4gIH1cblxuICBzZXRFbGVtZW50UHJvcGVydHkocmVuZGVyRWxlbWVudDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlWYWx1ZTogYW55KSB7XG4gICAgdmFyIGRlYnVnRWwgPSBnZXREZWJ1Z05vZGUocmVuZGVyRWxlbWVudCk7XG4gICAgaWYgKGlzUHJlc2VudChkZWJ1Z0VsKSAmJiBkZWJ1Z0VsIGluc3RhbmNlb2YgRGVidWdFbGVtZW50KSB7XG4gICAgICBkZWJ1Z0VsLnByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSA9IHByb3BlcnR5VmFsdWU7XG4gICAgfVxuICAgIHRoaXMuX2RlbGVnYXRlLnNldEVsZW1lbnRQcm9wZXJ0eShyZW5kZXJFbGVtZW50LCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpO1xuICB9XG5cbiAgc2V0RWxlbWVudEF0dHJpYnV0ZShyZW5kZXJFbGVtZW50OiBhbnksIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgYXR0cmlidXRlVmFsdWU6IHN0cmluZykge1xuICAgIHZhciBkZWJ1Z0VsID0gZ2V0RGVidWdOb2RlKHJlbmRlckVsZW1lbnQpO1xuICAgIGlmIChpc1ByZXNlbnQoZGVidWdFbCkgJiYgZGVidWdFbCBpbnN0YW5jZW9mIERlYnVnRWxlbWVudCkge1xuICAgICAgZGVidWdFbC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdID0gYXR0cmlidXRlVmFsdWU7XG4gICAgfVxuICAgIHRoaXMuX2RlbGVnYXRlLnNldEVsZW1lbnRBdHRyaWJ1dGUocmVuZGVyRWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICB9XG5cbiAgc2V0QmluZGluZ0RlYnVnSW5mbyhyZW5kZXJFbGVtZW50OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWxlZ2F0ZS5zZXRCaW5kaW5nRGVidWdJbmZvKHJlbmRlckVsZW1lbnQsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gIH1cblxuICBzZXRFbGVtZW50Q2xhc3MocmVuZGVyRWxlbWVudDogYW55LCBjbGFzc05hbWU6IHN0cmluZywgaXNBZGQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kZWxlZ2F0ZS5zZXRFbGVtZW50Q2xhc3MocmVuZGVyRWxlbWVudCwgY2xhc3NOYW1lLCBpc0FkZCk7XG4gIH1cblxuICBzZXRFbGVtZW50U3R5bGUocmVuZGVyRWxlbWVudDogYW55LCBzdHlsZU5hbWU6IHN0cmluZywgc3R5bGVWYWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGVsZWdhdGUuc2V0RWxlbWVudFN0eWxlKHJlbmRlckVsZW1lbnQsIHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSk7XG4gIH1cblxuICBpbnZva2VFbGVtZW50TWV0aG9kKHJlbmRlckVsZW1lbnQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuX2RlbGVnYXRlLmludm9rZUVsZW1lbnRNZXRob2QocmVuZGVyRWxlbWVudCwgbWV0aG9kTmFtZSwgYXJncyk7XG4gIH1cblxuICBzZXRUZXh0KHJlbmRlck5vZGU6IGFueSwgdGV4dDogc3RyaW5nKSB7IHRoaXMuX2RlbGVnYXRlLnNldFRleHQocmVuZGVyTm9kZSwgdGV4dCk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar debug_node_1 = require('angular2/src/core/debug/debug_node');\r\nvar dom_renderer_1 = require('angular2/src/platform/dom/dom_renderer');\r\nvar core_1 = require('angular2/core');\r\nvar debug_renderer_1 = require('angular2/src/core/debug/debug_renderer');\r\nvar CORE_TOKENS = lang_1.CONST_EXPR({ 'ApplicationRef': core_1.ApplicationRef, 'NgZone': core_1.NgZone });\r\nvar INSPECT_GLOBAL_NAME = 'ng.probe';\r\nvar CORE_TOKENS_GLOBAL_NAME = 'ng.coreTokens';\r\n/**\r\n * Returns a {@link DebugElement} for the given native DOM element, or\r\n * null if the given native element does not have an Angular view associated\r\n * with it.\r\n */\r\nfunction inspectNativeElement(element) {\r\n return debug_node_1.getDebugNode(element);\r\n}\r\nexports.inspectNativeElement = inspectNativeElement;\r\nfunction _createConditionalRootRenderer(rootRenderer) {\r\n if (lang_1.assertionsEnabled()) {\r\n return _createRootRenderer(rootRenderer);\r\n }\r\n return rootRenderer;\r\n}\r\nfunction _createRootRenderer(rootRenderer) {\r\n dom_adapter_1.DOM.setGlobalVar(INSPECT_GLOBAL_NAME, inspectNativeElement);\r\n dom_adapter_1.DOM.setGlobalVar(CORE_TOKENS_GLOBAL_NAME, CORE_TOKENS);\r\n return new debug_renderer_1.DebugDomRootRenderer(rootRenderer);\r\n}\r\n/**\r\n * Providers which support debugging Angular applications (e.g. via `ng.probe`).\r\n */\r\nexports.ELEMENT_PROBE_PROVIDERS = lang_1.CONST_EXPR([\r\n new di_1.Provider(core_1.RootRenderer, { useFactory: _createConditionalRootRenderer, deps: [dom_renderer_1.DomRootRenderer] })\r\n]);\r\nexports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = lang_1.CONST_EXPR([new di_1.Provider(core_1.RootRenderer, { useFactory: _createRootRenderer, deps: [dom_renderer_1.DomRootRenderer] })]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfcHJvYmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RlYnVnL25nX3Byb2JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBdUQsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRixtQkFBNEMsc0JBQXNCLENBQUMsQ0FBQTtBQUNuRSw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUMxRCwyQkFBc0Msb0NBQW9DLENBQUMsQ0FBQTtBQUMzRSw2QkFBOEIsd0NBQXdDLENBQUMsQ0FBQTtBQUN2RSxxQkFBbUQsZUFBZSxDQUFDLENBQUE7QUFDbkUsK0JBQW1DLHdDQUF3QyxDQUFDLENBQUE7QUFFNUUsSUFBTSxXQUFXLEdBQUcsaUJBQVUsQ0FBQyxFQUFDLGdCQUFnQixFQUFFLHFCQUFjLEVBQUUsUUFBUSxFQUFFLGFBQU0sRUFBQyxDQUFDLENBQUM7QUFFckYsSUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUFDdkMsSUFBTSx1QkFBdUIsR0FBRyxlQUFlLENBQUM7QUFFaEQ7Ozs7R0FJRztBQUNILDhCQUFxQyxPQUFPO0lBQzFDLE1BQU0sQ0FBQyx5QkFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFGZSw0QkFBb0IsdUJBRW5DLENBQUE7QUFFRCx3Q0FBd0MsWUFBWTtJQUNsRCxFQUFFLENBQUMsQ0FBQyx3QkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELDZCQUE2QixZQUFZO0lBQ3ZDLGlCQUFHLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDNUQsaUJBQUcsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkQsTUFBTSxDQUFDLElBQUkscUNBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVEOztHQUVHO0FBQ1UsK0JBQXVCLEdBQVUsaUJBQVUsQ0FBQztJQUN2RCxJQUFJLGFBQVEsQ0FBQyxtQkFBWSxFQUNaLEVBQUMsVUFBVSxFQUFFLDhCQUE4QixFQUFFLElBQUksRUFBRSxDQUFDLDhCQUFlLENBQUMsRUFBQyxDQUFDO0NBQ3BGLENBQUMsQ0FBQztBQUVVLHlDQUFpQyxHQUFVLGlCQUFVLENBQzlELENBQUMsSUFBSSxhQUFRLENBQUMsbUJBQVksRUFBRSxFQUFDLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyw4QkFBZSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUiwgYXNzZXJ0aW9uc0VuYWJsZWQsIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgcHJvdmlkZSwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7RGVidWdOb2RlLCBnZXREZWJ1Z05vZGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RlYnVnL2RlYnVnX25vZGUnO1xuaW1wb3J0IHtEb21Sb290UmVuZGVyZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX3JlbmRlcmVyJztcbmltcG9ydCB7Um9vdFJlbmRlcmVyLCBOZ1pvbmUsIEFwcGxpY2F0aW9uUmVmfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7RGVidWdEb21Sb290UmVuZGVyZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RlYnVnL2RlYnVnX3JlbmRlcmVyJztcblxuY29uc3QgQ09SRV9UT0tFTlMgPSBDT05TVF9FWFBSKHsnQXBwbGljYXRpb25SZWYnOiBBcHBsaWNhdGlvblJlZiwgJ05nWm9uZSc6IE5nWm9uZX0pO1xuXG5jb25zdCBJTlNQRUNUX0dMT0JBTF9OQU1FID0gJ25nLnByb2JlJztcbmNvbnN0IENPUkVfVE9LRU5TX0dMT0JBTF9OQU1FID0gJ25nLmNvcmVUb2tlbnMnO1xuXG4vKipcbiAqIFJldHVybnMgYSB7QGxpbmsgRGVidWdFbGVtZW50fSBmb3IgdGhlIGdpdmVuIG5hdGl2ZSBET00gZWxlbWVudCwgb3JcbiAqIG51bGwgaWYgdGhlIGdpdmVuIG5hdGl2ZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gQW5ndWxhciB2aWV3IGFzc29jaWF0ZWRcbiAqIHdpdGggaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0TmF0aXZlRWxlbWVudChlbGVtZW50KTogRGVidWdOb2RlIHtcbiAgcmV0dXJuIGdldERlYnVnTm9kZShlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUNvbmRpdGlvbmFsUm9vdFJlbmRlcmVyKHJvb3RSZW5kZXJlcikge1xuICBpZiAoYXNzZXJ0aW9uc0VuYWJsZWQoKSkge1xuICAgIHJldHVybiBfY3JlYXRlUm9vdFJlbmRlcmVyKHJvb3RSZW5kZXJlcik7XG4gIH1cbiAgcmV0dXJuIHJvb3RSZW5kZXJlcjtcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVJvb3RSZW5kZXJlcihyb290UmVuZGVyZXIpIHtcbiAgRE9NLnNldEdsb2JhbFZhcihJTlNQRUNUX0dMT0JBTF9OQU1FLCBpbnNwZWN0TmF0aXZlRWxlbWVudCk7XG4gIERPTS5zZXRHbG9iYWxWYXIoQ09SRV9UT0tFTlNfR0xPQkFMX05BTUUsIENPUkVfVE9LRU5TKTtcbiAgcmV0dXJuIG5ldyBEZWJ1Z0RvbVJvb3RSZW5kZXJlcihyb290UmVuZGVyZXIpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVycyB3aGljaCBzdXBwb3J0IGRlYnVnZ2luZyBBbmd1bGFyIGFwcGxpY2F0aW9ucyAoZS5nLiB2aWEgYG5nLnByb2JlYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1BST0JFX1BST1ZJREVSUzogYW55W10gPSBDT05TVF9FWFBSKFtcbiAgbmV3IFByb3ZpZGVyKFJvb3RSZW5kZXJlcixcbiAgICAgICAgICAgICAgIHt1c2VGYWN0b3J5OiBfY3JlYXRlQ29uZGl0aW9uYWxSb290UmVuZGVyZXIsIGRlcHM6IFtEb21Sb290UmVuZGVyZXJdfSlcbl0pO1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9QUk9CRV9QUk9WSURFUlNfUFJPRF9NT0RFOiBhbnlbXSA9IENPTlNUX0VYUFIoXG4gICAgW25ldyBQcm92aWRlcihSb290UmVuZGVyZXIsIHt1c2VGYWN0b3J5OiBfY3JlYXRlUm9vdFJlbmRlcmVyLCBkZXBzOiBbRG9tUm9vdFJlbmRlcmVyXX0pXSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * This is a set of DOM related classes and objects that can be used both in the browser and on the\r\n * server.\r\n */\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nexports.DOM = dom_adapter_1.DOM;\r\nexports.setRootDomAdapter = dom_adapter_1.setRootDomAdapter;\r\nexports.DomAdapter = dom_adapter_1.DomAdapter;\r\nvar dom_renderer_1 = require('angular2/src/platform/dom/dom_renderer');\r\nexports.DomRenderer = dom_renderer_1.DomRenderer;\r\nvar dom_tokens_1 = require('angular2/src/platform/dom/dom_tokens');\r\nexports.DOCUMENT = dom_tokens_1.DOCUMENT;\r\nvar shared_styles_host_1 = require('angular2/src/platform/dom/shared_styles_host');\r\nexports.SharedStylesHost = shared_styles_host_1.SharedStylesHost;\r\nexports.DomSharedStylesHost = shared_styles_host_1.DomSharedStylesHost;\r\nvar dom_events_1 = require('angular2/src/platform/dom/events/dom_events');\r\nexports.DomEventsPlugin = dom_events_1.DomEventsPlugin;\r\nvar event_manager_1 = require('angular2/src/platform/dom/events/event_manager');\r\nexports.EVENT_MANAGER_PLUGINS = event_manager_1.EVENT_MANAGER_PLUGINS;\r\nexports.EventManager = event_manager_1.EventManager;\r\nexports.EventManagerPlugin = event_manager_1.EventManagerPlugin;\r\n__export(require('angular2/src/platform/dom/debug/by'));\r\n__export(require('angular2/src/platform/dom/debug/ng_probe'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX2RvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3BsYXRmb3JtL2NvbW1vbl9kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7R0FHRztBQUNILDRCQUFpRCx1Q0FBdUMsQ0FBQztBQUFqRixnQ0FBRztBQUFFLDREQUFpQjtBQUFFLDhDQUF5RDtBQUN6Riw2QkFBMEIsd0NBQXdDLENBQUM7QUFBM0QsaURBQTJEO0FBQ25FLDJCQUF1QixzQ0FBc0MsQ0FBQztBQUF0RCx5Q0FBc0Q7QUFDOUQsbUNBQW9ELDhDQUE4QyxDQUFDO0FBQTNGLGlFQUFnQjtBQUFFLHVFQUF5RTtBQUNuRywyQkFBOEIsNkNBQTZDLENBQUM7QUFBcEUsdURBQW9FO0FBQzVFLDhCQUlPLGdEQUFnRCxDQUFDO0FBSHRELHNFQUFxQjtBQUNyQixvREFBWTtBQUNaLGdFQUNzRDtBQUN4RCxpQkFBYyxvQ0FBb0MsQ0FBQyxFQUFBO0FBQ25ELGlCQUFjLDBDQUEwQyxDQUFDLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgaXMgYSBzZXQgb2YgRE9NIHJlbGF0ZWQgY2xhc3NlcyBhbmQgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGJvdGggaW4gdGhlIGJyb3dzZXIgYW5kIG9uIHRoZVxuICogc2VydmVyLlxuICovXG5leHBvcnQge0RPTSwgc2V0Um9vdERvbUFkYXB0ZXIsIERvbUFkYXB0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuZXhwb3J0IHtEb21SZW5kZXJlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fcmVuZGVyZXInO1xuZXhwb3J0IHtET0NVTUVOVH0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fdG9rZW5zJztcbmV4cG9ydCB7U2hhcmVkU3R5bGVzSG9zdCwgRG9tU2hhcmVkU3R5bGVzSG9zdH0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9zaGFyZWRfc3R5bGVzX2hvc3QnO1xuZXhwb3J0IHtEb21FdmVudHNQbHVnaW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2RvbV9ldmVudHMnO1xuZXhwb3J0IHtcbiAgRVZFTlRfTUFOQUdFUl9QTFVHSU5TLFxuICBFdmVudE1hbmFnZXIsXG4gIEV2ZW50TWFuYWdlclBsdWdpblxufSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2V2ZW50cy9ldmVudF9tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZGVidWcvYnknO1xuZXhwb3J0ICogZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kZWJ1Zy9uZ19wcm9iZSc7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\n/**\r\n * A service that can be used to get and set the title of a current HTML document.\r\n *\r\n * Since an Angular 2 application can't be bootstrapped on the entire HTML document (`<html>` tag)\r\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\r\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\r\n * title value.\r\n */\r\nvar Title = (function () {\r\n function Title() {\r\n }\r\n /**\r\n * Get the title of the current HTML document.\r\n * @returns {string}\r\n */\r\n Title.prototype.getTitle = function () { return dom_adapter_1.DOM.getTitle(); };\r\n /**\r\n * Set the title of the current HTML document.\r\n * @param newTitle\r\n */\r\n Title.prototype.setTitle = function (newTitle) { dom_adapter_1.DOM.setTitle(newTitle); };\r\n return Title;\r\n}());\r\nexports.Title = Title;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90aXRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFFMUQ7Ozs7Ozs7R0FPRztBQUNIO0lBQUE7SUFZQSxDQUFDO0lBWEM7OztPQUdHO0lBQ0gsd0JBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsaUJBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFN0M7OztPQUdHO0lBQ0gsd0JBQVEsR0FBUixVQUFTLFFBQWdCLElBQUksaUJBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFlBQUM7QUFBRCxDQUFDLEFBWkQsSUFZQztBQVpZLGFBQUssUUFZakIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBnZXQgYW5kIHNldCB0aGUgdGl0bGUgb2YgYSBjdXJyZW50IEhUTUwgZG9jdW1lbnQuXG4gKlxuICogU2luY2UgYW4gQW5ndWxhciAyIGFwcGxpY2F0aW9uIGNhbid0IGJlIGJvb3RzdHJhcHBlZCBvbiB0aGUgZW50aXJlIEhUTUwgZG9jdW1lbnQgKGA8aHRtbD5gIHRhZylcbiAqIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBiaW5kIHRvIHRoZSBgdGV4dGAgcHJvcGVydHkgb2YgdGhlIGBIVE1MVGl0bGVFbGVtZW50YCBlbGVtZW50c1xuICogKHJlcHJlc2VudGluZyB0aGUgYDx0aXRsZT5gIHRhZykuIEluc3RlYWQsIHRoaXMgc2VydmljZSBjYW4gYmUgdXNlZCB0byBzZXQgYW5kIGdldCB0aGUgY3VycmVudFxuICogdGl0bGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUaXRsZSB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IEhUTUwgZG9jdW1lbnQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXRUaXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gRE9NLmdldFRpdGxlKCk7IH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBIVE1MIGRvY3VtZW50LlxuICAgKiBAcGFyYW0gbmV3VGl0bGVcbiAgICovXG4gIHNldFRpdGxlKG5ld1RpdGxlOiBzdHJpbmcpIHsgRE9NLnNldFRpdGxlKG5ld1RpdGxlKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * JS version of browser APIs. This library can only run in the browser.\r\n */\r\nvar win = window;\r\nexports.window = win;\r\nexports.document = window.document;\r\nexports.location = window.location;\r\nexports.gc = window['gc'] ? function () { return window['gc'](); } : function () { return null; };\r\nexports.performance = window['performance'] ? window['performance'] : null;\r\nexports.Event = window['Event'];\r\nexports.MouseEvent = window['MouseEvent'];\r\nexports.KeyboardEvent = window['KeyboardEvent'];\r\nexports.EventTarget = window['EventTarget'];\r\nexports.History = window['History'];\r\nexports.Location = window['Location'];\r\nexports.EventListener = window['EventListener'];\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7QUFDSCxJQUFJLEdBQUcsR0FBRyxNQUFNO0FBRUQsY0FBTSxPQUZKO0FBR04sZ0JBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQzNCLGdCQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUMzQixVQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGNBQU0sT0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBZCxDQUFjLEdBQUcsY0FBTSxPQUFBLElBQUksRUFBSixDQUFJLENBQUM7QUFDdEQsbUJBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNqRSxhQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hCLGtCQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2xDLHFCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLG1CQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3BDLGVBQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUIsZ0JBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUIscUJBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEpTIHZlcnNpb24gb2YgYnJvd3NlciBBUElzLiBUaGlzIGxpYnJhcnkgY2FuIG9ubHkgcnVuIGluIHRoZSBicm93c2VyLlxuICovXG52YXIgd2luID0gd2luZG93O1xuXG5leHBvcnQge3dpbiBhcyB3aW5kb3d9O1xuZXhwb3J0IHZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcbmV4cG9ydCB2YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5leHBvcnQgdmFyIGdjID0gd2luZG93WydnYyddID8gKCkgPT4gd2luZG93WydnYyddKCkgOiAoKSA9PiBudWxsO1xuZXhwb3J0IHZhciBwZXJmb3JtYW5jZSA9IHdpbmRvd1sncGVyZm9ybWFuY2UnXSA/IHdpbmRvd1sncGVyZm9ybWFuY2UnXSA6IG51bGw7XG5leHBvcnQgY29uc3QgRXZlbnQgPSB3aW5kb3dbJ0V2ZW50J107XG5leHBvcnQgY29uc3QgTW91c2VFdmVudCA9IHdpbmRvd1snTW91c2VFdmVudCddO1xuZXhwb3J0IGNvbnN0IEtleWJvYXJkRXZlbnQgPSB3aW5kb3dbJ0tleWJvYXJkRXZlbnQnXTtcbmV4cG9ydCBjb25zdCBFdmVudFRhcmdldCA9IHdpbmRvd1snRXZlbnRUYXJnZXQnXTtcbmV4cG9ydCBjb25zdCBIaXN0b3J5ID0gd2luZG93WydIaXN0b3J5J107XG5leHBvcnQgY29uc3QgTG9jYXRpb24gPSB3aW5kb3dbJ0xvY2F0aW9uJ107XG5leHBvcnQgY29uc3QgRXZlbnRMaXN0ZW5lciA9IHdpbmRvd1snRXZlbnRMaXN0ZW5lciddO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar application_ref_1 = require('angular2/src/core/application_ref');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar browser_1 = require('angular2/src/facade/browser');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar ChangeDetectionPerfRecord = (function () {\r\n function ChangeDetectionPerfRecord(msPerTick, numTicks) {\r\n this.msPerTick = msPerTick;\r\n this.numTicks = numTicks;\r\n }\r\n return ChangeDetectionPerfRecord;\r\n}());\r\nexports.ChangeDetectionPerfRecord = ChangeDetectionPerfRecord;\r\n/**\r\n * Entry point for all Angular debug tools. This object corresponds to the `ng`\r\n * global variable accessible in the dev console.\r\n */\r\nvar AngularTools = (function () {\r\n function AngularTools(ref) {\r\n this.profiler = new AngularProfiler(ref);\r\n }\r\n return AngularTools;\r\n}());\r\nexports.AngularTools = AngularTools;\r\n/**\r\n * Entry point for all Angular profiling-related debug tools. This object\r\n * corresponds to the `ng.profiler` in the dev console.\r\n */\r\nvar AngularProfiler = (function () {\r\n function AngularProfiler(ref) {\r\n this.appRef = ref.injector.get(application_ref_1.ApplicationRef);\r\n }\r\n /**\r\n * Exercises change detection in a loop and then prints the average amount of\r\n * time in milliseconds how long a single round of change detection takes for\r\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\r\n * of 500 milliseconds.\r\n *\r\n * Optionally, a user may pass a `config` parameter containing a map of\r\n * options. Supported options are:\r\n *\r\n * `record` (boolean) - causes the profiler to record a CPU profile while\r\n * it exercises the change detector. Example:\r\n *\r\n * ```\r\n * ng.profiler.timeChangeDetection({record: true})\r\n * ```\r\n */\r\n AngularProfiler.prototype.timeChangeDetection = function (config) {\r\n var record = lang_1.isPresent(config) && config['record'];\r\n var profileName = 'Change Detection';\r\n // Profiler is not available in Android browsers, nor in IE 9 without dev tools opened\r\n var isProfilerAvailable = lang_1.isPresent(browser_1.window.console.profile);\r\n if (record && isProfilerAvailable) {\r\n browser_1.window.console.profile(profileName);\r\n }\r\n var start = dom_adapter_1.DOM.performanceNow();\r\n var numTicks = 0;\r\n while (numTicks < 5 || (dom_adapter_1.DOM.performanceNow() - start) < 500) {\r\n this.appRef.tick();\r\n numTicks++;\r\n }\r\n var end = dom_adapter_1.DOM.performanceNow();\r\n if (record && isProfilerAvailable) {\r\n // need to cast to <any> because type checker thinks there's no argument\r\n // while in fact there is:\r\n //\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Console/profileEnd\r\n browser_1.window.console.profileEnd(profileName);\r\n }\r\n var msPerTick = (end - start) / numTicks;\r\n browser_1.window.console.log(\"ran \" + numTicks + \" change detection cycles\");\r\n browser_1.window.console.log(lang_1.NumberWrapper.toFixed(msPerTick, 2) + \" ms per check\");\r\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\r\n };\r\n return AngularProfiler;\r\n}());\r\nexports.AngularProfiler = AngularProfiler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX3Rvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvdG9vbHMvY29tbW9uX3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnQ0FBNkIsbUNBQW1DLENBQUMsQ0FBQTtBQUVqRSxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSx3QkFBcUIsNkJBQTZCLENBQUMsQ0FBQTtBQUNuRCw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUUxRDtJQUNFLG1DQUFtQixTQUFpQixFQUFTLFFBQWdCO1FBQTFDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQUcsQ0FBQztJQUNuRSxnQ0FBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksaUNBQXlCLDRCQUVyQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0g7SUFHRSxzQkFBWSxHQUFpQjtRQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQzlFLG1CQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxvQkFBWSxlQUl4QixDQUFBO0FBRUQ7OztHQUdHO0FBQ0g7SUFHRSx5QkFBWSxHQUFpQjtRQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0NBQWMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUVsRjs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCw2Q0FBbUIsR0FBbkIsVUFBb0IsTUFBVztRQUM3QixJQUFJLE1BQU0sR0FBRyxnQkFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztRQUNyQyxzRkFBc0Y7UUFDdEYsSUFBSSxtQkFBbUIsR0FBRyxnQkFBUyxDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLEtBQUssR0FBRyxpQkFBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixPQUFPLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxHQUFHLEdBQUcsaUJBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQixFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLHdFQUF3RTtZQUN4RSwwQkFBMEI7WUFDMUIsRUFBRTtZQUNGLHNFQUFzRTtZQUNoRSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksU0FBUyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUN6QyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBTyxRQUFRLDZCQUEwQixDQUFDLENBQUM7UUFDOUQsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFJLG9CQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsa0JBQWUsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sQ0FBQyxJQUFJLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBakRELElBaURDO0FBakRZLHVCQUFlLGtCQWlEM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwbGljYXRpb25SZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2FwcGxpY2F0aW9uX3JlZic7XG5pbXBvcnQge0NvbXBvbmVudFJlZn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5JztcbmltcG9ydCB7aXNQcmVzZW50LCBOdW1iZXJXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHt3aW5kb3d9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYnJvd3Nlcic7XG5pbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VEZXRlY3Rpb25QZXJmUmVjb3JkIHtcbiAgY29uc3RydWN0b3IocHVibGljIG1zUGVyVGljazogbnVtYmVyLCBwdWJsaWMgbnVtVGlja3M6IG51bWJlcikge31cbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIEFuZ3VsYXIgZGVidWcgdG9vbHMuIFRoaXMgb2JqZWN0IGNvcnJlc3BvbmRzIHRvIHRoZSBgbmdgXG4gKiBnbG9iYWwgdmFyaWFibGUgYWNjZXNzaWJsZSBpbiB0aGUgZGV2IGNvbnNvbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbmd1bGFyVG9vbHMge1xuICBwcm9maWxlcjogQW5ndWxhclByb2ZpbGVyO1xuXG4gIGNvbnN0cnVjdG9yKHJlZjogQ29tcG9uZW50UmVmKSB7IHRoaXMucHJvZmlsZXIgPSBuZXcgQW5ndWxhclByb2ZpbGVyKHJlZik7IH1cbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIEFuZ3VsYXIgcHJvZmlsaW5nLXJlbGF0ZWQgZGVidWcgdG9vbHMuIFRoaXMgb2JqZWN0XG4gKiBjb3JyZXNwb25kcyB0byB0aGUgYG5nLnByb2ZpbGVyYCBpbiB0aGUgZGV2IGNvbnNvbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbmd1bGFyUHJvZmlsZXIge1xuICBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmO1xuXG4gIGNvbnN0cnVjdG9yKHJlZjogQ29tcG9uZW50UmVmKSB7IHRoaXMuYXBwUmVmID0gcmVmLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7IH1cblxuICAvKipcbiAgICogRXhlcmNpc2VzIGNoYW5nZSBkZXRlY3Rpb24gaW4gYSBsb29wIGFuZCB0aGVuIHByaW50cyB0aGUgYXZlcmFnZSBhbW91bnQgb2ZcbiAgICogdGltZSBpbiBtaWxsaXNlY29uZHMgaG93IGxvbmcgYSBzaW5nbGUgcm91bmQgb2YgY2hhbmdlIGRldGVjdGlvbiB0YWtlcyBmb3JcbiAgICogdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFVJLiBJdCBydW5zIGEgbWluaW11bSBvZiA1IHJvdW5kcyBmb3IgYSBtaW5pbXVtXG4gICAqIG9mIDUwMCBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIE9wdGlvbmFsbHksIGEgdXNlciBtYXkgcGFzcyBhIGBjb25maWdgIHBhcmFtZXRlciBjb250YWluaW5nIGEgbWFwIG9mXG4gICAqIG9wdGlvbnMuIFN1cHBvcnRlZCBvcHRpb25zIGFyZTpcbiAgICpcbiAgICogYHJlY29yZGAgKGJvb2xlYW4pIC0gY2F1c2VzIHRoZSBwcm9maWxlciB0byByZWNvcmQgYSBDUFUgcHJvZmlsZSB3aGlsZVxuICAgKiBpdCBleGVyY2lzZXMgdGhlIGNoYW5nZSBkZXRlY3Rvci4gRXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIG5nLnByb2ZpbGVyLnRpbWVDaGFuZ2VEZXRlY3Rpb24oe3JlY29yZDogdHJ1ZX0pXG4gICAqIGBgYFxuICAgKi9cbiAgdGltZUNoYW5nZURldGVjdGlvbihjb25maWc6IGFueSk6IENoYW5nZURldGVjdGlvblBlcmZSZWNvcmQge1xuICAgIHZhciByZWNvcmQgPSBpc1ByZXNlbnQoY29uZmlnKSAmJiBjb25maWdbJ3JlY29yZCddO1xuICAgIHZhciBwcm9maWxlTmFtZSA9ICdDaGFuZ2UgRGV0ZWN0aW9uJztcbiAgICAvLyBQcm9maWxlciBpcyBub3QgYXZhaWxhYmxlIGluIEFuZHJvaWQgYnJvd3NlcnMsIG5vciBpbiBJRSA5IHdpdGhvdXQgZGV2IHRvb2xzIG9wZW5lZFxuICAgIHZhciBpc1Byb2ZpbGVyQXZhaWxhYmxlID0gaXNQcmVzZW50KHdpbmRvdy5jb25zb2xlLnByb2ZpbGUpO1xuICAgIGlmIChyZWNvcmQgJiYgaXNQcm9maWxlckF2YWlsYWJsZSkge1xuICAgICAgd2luZG93LmNvbnNvbGUucHJvZmlsZShwcm9maWxlTmFtZSk7XG4gICAgfVxuICAgIHZhciBzdGFydCA9IERPTS5wZXJmb3JtYW5jZU5vdygpO1xuICAgIHZhciBudW1UaWNrcyA9IDA7XG4gICAgd2hpbGUgKG51bVRpY2tzIDwgNSB8fCAoRE9NLnBlcmZvcm1hbmNlTm93KCkgLSBzdGFydCkgPCA1MDApIHtcbiAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgIG51bVRpY2tzKys7XG4gICAgfVxuICAgIHZhciBlbmQgPSBET00ucGVyZm9ybWFuY2VOb3coKTtcbiAgICBpZiAocmVjb3JkICYmIGlzUHJvZmlsZXJBdmFpbGFibGUpIHtcbiAgICAgIC8vIG5lZWQgdG8gY2FzdCB0byA8YW55PiBiZWNhdXNlIHR5cGUgY2hlY2tlciB0aGlua3MgdGhlcmUncyBubyBhcmd1bWVudFxuICAgICAgLy8gd2hpbGUgaW4gZmFjdCB0aGVyZSBpczpcbiAgICAgIC8vXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ29uc29sZS9wcm9maWxlRW5kXG4gICAgICAoPGFueT53aW5kb3cuY29uc29sZS5wcm9maWxlRW5kKShwcm9maWxlTmFtZSk7XG4gICAgfVxuICAgIHZhciBtc1BlclRpY2sgPSAoZW5kIC0gc3RhcnQpIC8gbnVtVGlja3M7XG4gICAgd2luZG93LmNvbnNvbGUubG9nKGByYW4gJHtudW1UaWNrc30gY2hhbmdlIGRldGVjdGlvbiBjeWNsZXNgKTtcbiAgICB3aW5kb3cuY29uc29sZS5sb2coYCR7TnVtYmVyV3JhcHBlci50b0ZpeGVkKG1zUGVyVGljaywgMil9IG1zIHBlciBjaGVja2ApO1xuXG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRlY3Rpb25QZXJmUmVjb3JkKG1zUGVyVGljaywgbnVtVGlja3MpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar common_tools_1 = require('./common_tools');\r\nvar context = lang_1.global;\r\n/**\r\n * Enabled Angular 2 debug tools that are accessible via your browser's\r\n * developer console.\r\n *\r\n * Usage:\r\n *\r\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\r\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\r\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\r\n * then hit Enter.\r\n */\r\nfunction enableDebugTools(ref) {\r\n context.ng = new common_tools_1.AngularTools(ref);\r\n}\r\nexports.enableDebugTools = enableDebugTools;\r\n/**\r\n * Disables Angular 2 tools.\r\n */\r\nfunction disableDebugTools() {\r\n delete context.ng;\r\n}\r\nexports.disableDebugTools = disableDebugTools;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90b29scy90b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQXFCLDBCQUEwQixDQUFDLENBQUE7QUFFaEQsNkJBQTJCLGdCQUFnQixDQUFDLENBQUE7QUFFNUMsSUFBSSxPQUFPLEdBQVEsYUFBTSxDQUFDO0FBRTFCOzs7Ozs7Ozs7O0dBVUc7QUFDSCwwQkFBaUMsR0FBaUI7SUFDaEQsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLDJCQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUZlLHdCQUFnQixtQkFFL0IsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFDRSxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEIsQ0FBQztBQUZlLHlCQUFpQixvQkFFaEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2xvYmFsfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtDb21wb25lbnRSZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9jb21wb25lbnRfZmFjdG9yeSc7XG5pbXBvcnQge0FuZ3VsYXJUb29sc30gZnJvbSAnLi9jb21tb25fdG9vbHMnO1xuXG52YXIgY29udGV4dCA9IDxhbnk+Z2xvYmFsO1xuXG4vKipcbiAqIEVuYWJsZWQgQW5ndWxhciAyIGRlYnVnIHRvb2xzIHRoYXQgYXJlIGFjY2Vzc2libGUgdmlhIHlvdXIgYnJvd3NlcidzXG4gKiBkZXZlbG9wZXIgY29uc29sZS5cbiAqXG4gKiBVc2FnZTpcbiAqXG4gKiAxLiBPcGVuIGRldmVsb3BlciBjb25zb2xlIChlLmcuIGluIENocm9tZSBDdHJsICsgU2hpZnQgKyBqKVxuICogMS4gVHlwZSBgbmcuYCAodXN1YWxseSB0aGUgY29uc29sZSB3aWxsIHNob3cgYXV0by1jb21wbGV0ZSBzdWdnZXN0aW9uKVxuICogMS4gVHJ5IHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHByb2ZpbGVyIGBuZy5wcm9maWxlci50aW1lQ2hhbmdlRGV0ZWN0aW9uKClgXG4gKiAgICB0aGVuIGhpdCBFbnRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZURlYnVnVG9vbHMocmVmOiBDb21wb25lbnRSZWYpOiB2b2lkIHtcbiAgY29udGV4dC5uZyA9IG5ldyBBbmd1bGFyVG9vbHMocmVmKTtcbn1cblxuLyoqXG4gKiBEaXNhYmxlcyBBbmd1bGFyIDIgdG9vbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlRGVidWdUb29scygpOiB2b2lkIHtcbiAgZGVsZXRlIGNvbnRleHQubmc7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar ng_zone_1 = require('angular2/src/core/zone/ng_zone');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nexports.EVENT_MANAGER_PLUGINS = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"EventManagerPlugins\"));\r\nvar EventManager = (function () {\r\n function EventManager(plugins, _zone) {\r\n var _this = this;\r\n this._zone = _zone;\r\n plugins.forEach(function (p) { return p.manager = _this; });\r\n this._plugins = collection_1.ListWrapper.reversed(plugins);\r\n }\r\n EventManager.prototype.addEventListener = function (element, eventName, handler) {\r\n var plugin = this._findPluginFor(eventName);\r\n return plugin.addEventListener(element, eventName, handler);\r\n };\r\n EventManager.prototype.addGlobalEventListener = function (target, eventName, handler) {\r\n var plugin = this._findPluginFor(eventName);\r\n return plugin.addGlobalEventListener(target, eventName, handler);\r\n };\r\n EventManager.prototype.getZone = function () { return this._zone; };\r\n /** @internal */\r\n EventManager.prototype._findPluginFor = function (eventName) {\r\n var plugins = this._plugins;\r\n for (var i = 0; i < plugins.length; i++) {\r\n var plugin = plugins[i];\r\n if (plugin.supports(eventName)) {\r\n return plugin;\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"No event manager plugin found for event \" + eventName);\r\n };\r\n EventManager = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(exports.EVENT_MANAGER_PLUGINS)), \r\n __metadata('design:paramtypes', [Array, ng_zone_1.NgZone])\r\n ], EventManager);\r\n return EventManager;\r\n}());\r\nexports.EventManager = EventManager;\r\nvar EventManagerPlugin = (function () {\r\n function EventManagerPlugin() {\r\n }\r\n // That is equivalent to having supporting $event.target\r\n EventManagerPlugin.prototype.supports = function (eventName) { return false; };\r\n EventManagerPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n throw \"not implemented\";\r\n };\r\n EventManagerPlugin.prototype.addGlobalEventListener = function (element, eventName, handler) {\r\n throw \"not implemented\";\r\n };\r\n return EventManagerPlugin;\r\n}());\r\nexports.EventManagerPlugin = EventManagerPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2V2ZW50X21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFCQUF5QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3BELDJCQUE4QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQy9FLG1CQUE4QyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3JFLHdCQUFxQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3RELDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTlDLDZCQUFxQixHQUM5QixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7QUFHdkQ7SUFHRSxzQkFBMkMsT0FBNkIsRUFBVSxLQUFhO1FBSGpHLGlCQStCQztRQTVCbUYsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUM3RixPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFJLEVBQWhCLENBQWdCLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLHdCQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCx1Q0FBZ0IsR0FBaEIsVUFBaUIsT0FBb0IsRUFBRSxTQUFpQixFQUFFLE9BQWlCO1FBQ3pFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCw2Q0FBc0IsR0FBdEIsVUFBdUIsTUFBYyxFQUFFLFNBQWlCLEVBQUUsT0FBaUI7UUFDekUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELDhCQUFPLEdBQVAsY0FBb0IsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXhDLGdCQUFnQjtJQUNoQixxQ0FBYyxHQUFkLFVBQWUsU0FBaUI7UUFDOUIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLElBQUksMEJBQWEsQ0FBQyw2Q0FBMkMsU0FBVyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQS9CSDtRQUFDLGVBQVUsRUFBRTttQkFJRSxXQUFNLENBQUMsNkJBQXFCLENBQUM7O29CQUovQjtJQWdDYixtQkFBQztBQUFELENBQUMsQUEvQkQsSUErQkM7QUEvQlksb0JBQVksZUErQnhCLENBQUE7QUFFRDtJQUFBO0lBYUEsQ0FBQztJQVZDLHdEQUF3RDtJQUN4RCxxQ0FBUSxHQUFSLFVBQVMsU0FBaUIsSUFBYSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV0RCw2Q0FBZ0IsR0FBaEIsVUFBaUIsT0FBb0IsRUFBRSxTQUFpQixFQUFFLE9BQWlCO1FBQ3pFLE1BQU0saUJBQWlCLENBQUM7SUFDMUIsQ0FBQztJQUVELG1EQUFzQixHQUF0QixVQUF1QixPQUFlLEVBQUUsU0FBaUIsRUFBRSxPQUFpQjtRQUMxRSxNQUFNLGlCQUFpQixDQUFDO0lBQzFCLENBQUM7SUFDSCx5QkFBQztBQUFELENBQUMsQUFiRCxJQWFDO0FBYlksMEJBQWtCLHFCQWE5QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIE9wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge05nWm9uZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvem9uZS9uZ196b25lJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBFVkVOVF9NQU5BR0VSX1BMVUdJTlM6IE9wYXF1ZVRva2VuID1cbiAgICBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbihcIkV2ZW50TWFuYWdlclBsdWdpbnNcIikpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBfcGx1Z2luczogRXZlbnRNYW5hZ2VyUGx1Z2luW107XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChFVkVOVF9NQU5BR0VSX1BMVUdJTlMpIHBsdWdpbnM6IEV2ZW50TWFuYWdlclBsdWdpbltdLCBwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcbiAgICBwbHVnaW5zLmZvckVhY2gocCA9PiBwLm1hbmFnZXIgPSB0aGlzKTtcbiAgICB0aGlzLl9wbHVnaW5zID0gTGlzdFdyYXBwZXIucmV2ZXJzZWQocGx1Z2lucyk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgaGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgdmFyIHBsdWdpbiA9IHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZXZlbnROYW1lKTtcbiAgICByZXR1cm4gcGx1Z2luLmFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIGFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodGFyZ2V0OiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB2YXIgcGx1Z2luID0gdGhpcy5fZmluZFBsdWdpbkZvcihldmVudE5hbWUpO1xuICAgIHJldHVybiBwbHVnaW4uYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlcik7XG4gIH1cblxuICBnZXRab25lKCk6IE5nWm9uZSB7IHJldHVybiB0aGlzLl96b25lOyB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZmluZFBsdWdpbkZvcihldmVudE5hbWU6IHN0cmluZyk6IEV2ZW50TWFuYWdlclBsdWdpbiB7XG4gICAgdmFyIHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5zO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBsdWdpbiA9IHBsdWdpbnNbaV07XG4gICAgICBpZiAocGx1Z2luLnN1cHBvcnRzKGV2ZW50TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYE5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAke2V2ZW50TmFtZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcbiAgbWFuYWdlcjogRXZlbnRNYW5hZ2VyO1xuXG4gIC8vIFRoYXQgaXMgZXF1aXZhbGVudCB0byBoYXZpbmcgc3VwcG9ydGluZyAkZXZlbnQudGFyZ2V0XG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB0aHJvdyBcIm5vdCBpbXBsZW1lbnRlZFwiO1xuICB9XG5cbiAgYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB0aHJvdyBcIm5vdCBpbXBsZW1lbnRlZFwiO1xuICB9XG59Il19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar event_manager_1 = require('./event_manager');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar _eventNames = {\r\n // pan\r\n 'pan': true,\r\n 'panstart': true,\r\n 'panmove': true,\r\n 'panend': true,\r\n 'pancancel': true,\r\n 'panleft': true,\r\n 'panright': true,\r\n 'panup': true,\r\n 'pandown': true,\r\n // pinch\r\n 'pinch': true,\r\n 'pinchstart': true,\r\n 'pinchmove': true,\r\n 'pinchend': true,\r\n 'pinchcancel': true,\r\n 'pinchin': true,\r\n 'pinchout': true,\r\n // press\r\n 'press': true,\r\n 'pressup': true,\r\n // rotate\r\n 'rotate': true,\r\n 'rotatestart': true,\r\n 'rotatemove': true,\r\n 'rotateend': true,\r\n 'rotatecancel': true,\r\n // swipe\r\n 'swipe': true,\r\n 'swipeleft': true,\r\n 'swiperight': true,\r\n 'swipeup': true,\r\n 'swipedown': true,\r\n // tap\r\n 'tap': true,\r\n};\r\nvar HammerGesturesPluginCommon = (function (_super) {\r\n __extends(HammerGesturesPluginCommon, _super);\r\n function HammerGesturesPluginCommon() {\r\n _super.call(this);\r\n }\r\n HammerGesturesPluginCommon.prototype.supports = function (eventName) {\r\n eventName = eventName.toLowerCase();\r\n return collection_1.StringMapWrapper.contains(_eventNames, eventName);\r\n };\r\n return HammerGesturesPluginCommon;\r\n}(event_manager_1.EventManagerPlugin));\r\nexports.HammerGesturesPluginCommon = HammerGesturesPluginCommon;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyX2NvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2hhbW1lcl9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOEJBQWlDLGlCQUFpQixDQUFDLENBQUE7QUFDbkQsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFFaEUsSUFBSSxXQUFXLEdBQUc7SUFDaEIsTUFBTTtJQUNOLEtBQUssRUFBRSxJQUFJO0lBQ1gsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsVUFBVSxFQUFFLElBQUk7SUFDaEIsT0FBTyxFQUFFLElBQUk7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVE7SUFDUixPQUFPLEVBQUUsSUFBSTtJQUNiLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFNBQVMsRUFBRSxJQUFJO0lBQ2YsVUFBVSxFQUFFLElBQUk7SUFDaEIsUUFBUTtJQUNSLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTO0lBQ1QsUUFBUSxFQUFFLElBQUk7SUFDZCxhQUFhLEVBQUUsSUFBSTtJQUNuQixZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsSUFBSTtJQUNqQixjQUFjLEVBQUUsSUFBSTtJQUNwQixRQUFRO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixTQUFTLEVBQUUsSUFBSTtJQUNmLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLE1BQU07SUFDTixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFHRjtJQUFnRCw4Q0FBa0I7SUFDaEU7UUFBZ0IsaUJBQU8sQ0FBQztJQUFDLENBQUM7SUFFMUIsNkNBQVEsR0FBUixVQUFTLFNBQWlCO1FBQ3hCLFNBQVMsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLDZCQUFnQixDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNILGlDQUFDO0FBQUQsQ0FBQyxBQVBELENBQWdELGtDQUFrQixHQU9qRTtBQVBZLGtDQUEwQiw2QkFPdEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRNYW5hZ2VyUGx1Z2lufSBmcm9tICcuL2V2ZW50X21hbmFnZXInO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG52YXIgX2V2ZW50TmFtZXMgPSB7XG4gIC8vIHBhblxuICAncGFuJzogdHJ1ZSxcbiAgJ3BhbnN0YXJ0JzogdHJ1ZSxcbiAgJ3Bhbm1vdmUnOiB0cnVlLFxuICAncGFuZW5kJzogdHJ1ZSxcbiAgJ3BhbmNhbmNlbCc6IHRydWUsXG4gICdwYW5sZWZ0JzogdHJ1ZSxcbiAgJ3BhbnJpZ2h0JzogdHJ1ZSxcbiAgJ3BhbnVwJzogdHJ1ZSxcbiAgJ3BhbmRvd24nOiB0cnVlLFxuICAvLyBwaW5jaFxuICAncGluY2gnOiB0cnVlLFxuICAncGluY2hzdGFydCc6IHRydWUsXG4gICdwaW5jaG1vdmUnOiB0cnVlLFxuICAncGluY2hlbmQnOiB0cnVlLFxuICAncGluY2hjYW5jZWwnOiB0cnVlLFxuICAncGluY2hpbic6IHRydWUsXG4gICdwaW5jaG91dCc6IHRydWUsXG4gIC8vIHByZXNzXG4gICdwcmVzcyc6IHRydWUsXG4gICdwcmVzc3VwJzogdHJ1ZSxcbiAgLy8gcm90YXRlXG4gICdyb3RhdGUnOiB0cnVlLFxuICAncm90YXRlc3RhcnQnOiB0cnVlLFxuICAncm90YXRlbW92ZSc6IHRydWUsXG4gICdyb3RhdGVlbmQnOiB0cnVlLFxuICAncm90YXRlY2FuY2VsJzogdHJ1ZSxcbiAgLy8gc3dpcGVcbiAgJ3N3aXBlJzogdHJ1ZSxcbiAgJ3N3aXBlbGVmdCc6IHRydWUsXG4gICdzd2lwZXJpZ2h0JzogdHJ1ZSxcbiAgJ3N3aXBldXAnOiB0cnVlLFxuICAnc3dpcGVkb3duJzogdHJ1ZSxcbiAgLy8gdGFwXG4gICd0YXAnOiB0cnVlLFxufTtcblxuXG5leHBvcnQgY2xhc3MgSGFtbWVyR2VzdHVyZXNQbHVnaW5Db21tb24gZXh0ZW5kcyBFdmVudE1hbmFnZXJQbHVnaW4ge1xuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxuXG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgZXZlbnROYW1lID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIFN0cmluZ01hcFdyYXBwZXIuY29udGFpbnMoX2V2ZW50TmFtZXMsIGV2ZW50TmFtZSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar hammer_common_1 = require('./hammer_common');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar core_1 = require('angular2/core');\r\nexports.HAMMER_GESTURE_CONFIG = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"HammerGestureConfig\"));\r\nvar HammerGestureConfig = (function () {\r\n function HammerGestureConfig() {\r\n this.events = [];\r\n this.overrides = {};\r\n }\r\n HammerGestureConfig.prototype.buildHammer = function (element) {\r\n var mc = new Hammer(element);\r\n mc.get('pinch').set({ enable: true });\r\n mc.get('rotate').set({ enable: true });\r\n for (var eventName in this.overrides) {\r\n mc.get(eventName).set(this.overrides[eventName]);\r\n }\r\n return mc;\r\n };\r\n HammerGestureConfig = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], HammerGestureConfig);\r\n return HammerGestureConfig;\r\n}());\r\nexports.HammerGestureConfig = HammerGestureConfig;\r\nvar HammerGesturesPlugin = (function (_super) {\r\n __extends(HammerGesturesPlugin, _super);\r\n function HammerGesturesPlugin(_config) {\r\n _super.call(this);\r\n this._config = _config;\r\n }\r\n HammerGesturesPlugin.prototype.supports = function (eventName) {\r\n if (!_super.prototype.supports.call(this, eventName) && !this.isCustomEvent(eventName))\r\n return false;\r\n if (!lang_1.isPresent(window['Hammer'])) {\r\n throw new exceptions_1.BaseException(\"Hammer.js is not loaded, can not bind \" + eventName + \" event\");\r\n }\r\n return true;\r\n };\r\n HammerGesturesPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n var _this = this;\r\n var zone = this.manager.getZone();\r\n eventName = eventName.toLowerCase();\r\n return zone.runOutsideAngular(function () {\r\n // Creating the manager bind events, must be done outside of angular\r\n var mc = _this._config.buildHammer(element);\r\n var callback = function (eventObj) { zone.runGuarded(function () { handler(eventObj); }); };\r\n mc.on(eventName, callback);\r\n return function () { mc.off(eventName, callback); };\r\n });\r\n };\r\n HammerGesturesPlugin.prototype.isCustomEvent = function (eventName) { return this._config.events.indexOf(eventName) > -1; };\r\n HammerGesturesPlugin = __decorate([\r\n core_1.Injectable(),\r\n __param(0, core_1.Inject(exports.HAMMER_GESTURE_CONFIG)), \r\n __metadata('design:paramtypes', [HammerGestureConfig])\r\n ], HammerGesturesPlugin);\r\n return HammerGesturesPlugin;\r\n}(hammer_common_1.HammerGesturesPluginCommon));\r\nexports.HammerGesturesPlugin = HammerGesturesPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyX2dlc3R1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9ldmVudHMvaGFtbWVyX2dlc3R1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhCQUF5QyxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNELHFCQUFvQywwQkFBMEIsQ0FBQyxDQUFBO0FBQy9ELDJCQUE4QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQy9FLHFCQUE4QyxlQUFlLENBQUMsQ0FBQTtBQUVqRCw2QkFBcUIsR0FDOUIsaUJBQVUsQ0FBQyxJQUFJLGtCQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0FBUXZEO0lBQUE7UUFDRSxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRXRCLGNBQVMsR0FBNEIsRUFBRSxDQUFDO0lBYzFDLENBQUM7SUFaQyx5Q0FBVyxHQUFYLFVBQVksT0FBb0I7UUFDOUIsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNwQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRXJDLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFqQkg7UUFBQyxpQkFBVSxFQUFFOzsyQkFBQTtJQWtCYiwwQkFBQztBQUFELENBQUMsQUFqQkQsSUFpQkM7QUFqQlksMkJBQW1CLHNCQWlCL0IsQ0FBQTtBQUdEO0lBQTBDLHdDQUEwQjtJQUNsRSw4QkFBbUQsT0FBNEI7UUFBSSxpQkFBTyxDQUFDO1FBQXhDLFlBQU8sR0FBUCxPQUFPLENBQXFCO0lBQWEsQ0FBQztJQUU3Rix1Q0FBUSxHQUFSLFVBQVMsU0FBaUI7UUFDeEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBSyxDQUFDLFFBQVEsWUFBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRS9FLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxJQUFJLDBCQUFhLENBQUMsMkNBQXlDLFNBQVMsV0FBUSxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsK0NBQWdCLEdBQWhCLFVBQWlCLE9BQW9CLEVBQUUsU0FBaUIsRUFBRSxPQUFpQjtRQUEzRSxpQkFXQztRQVZDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQzVCLG9FQUFvRTtZQUNwRSxJQUFJLEVBQUUsR0FBRyxLQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxJQUFJLFFBQVEsR0FBRyxVQUFTLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLGNBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNENBQWEsR0FBYixVQUFjLFNBQWlCLElBQWEsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUEzQm5HO1FBQUMsaUJBQVUsRUFBRTttQkFFRSxhQUFNLENBQUMsNkJBQXFCLENBQUM7OzRCQUYvQjtJQTRCYiwyQkFBQztBQUFELENBQUMsQUEzQkQsQ0FBMEMsMENBQTBCLEdBMkJuRTtBQTNCWSw0QkFBb0IsdUJBMkJoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIYW1tZXJHZXN0dXJlc1BsdWdpbkNvbW1vbn0gZnJvbSAnLi9oYW1tZXJfY29tbW9uJztcbmltcG9ydCB7aXNQcmVzZW50LCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIE9wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEhBTU1FUl9HRVNUVVJFX0NPTkZJRzogT3BhcXVlVG9rZW4gPVxuICAgIENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiSGFtbWVyR2VzdHVyZUNvbmZpZ1wiKSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFtbWVySW5zdGFuY2Uge1xuICBvbihldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZDtcbiAgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSGFtbWVyR2VzdHVyZUNvbmZpZyB7XG4gIGV2ZW50czogc3RyaW5nW10gPSBbXTtcblxuICBvdmVycmlkZXM6IHtba2V5OiBzdHJpbmddOiBPYmplY3R9ID0ge307XG5cbiAgYnVpbGRIYW1tZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIYW1tZXJJbnN0YW5jZSB7XG4gICAgdmFyIG1jID0gbmV3IEhhbW1lcihlbGVtZW50KTtcblxuICAgIG1jLmdldCgncGluY2gnKS5zZXQoe2VuYWJsZTogdHJ1ZX0pO1xuICAgIG1jLmdldCgncm90YXRlJykuc2V0KHtlbmFibGU6IHRydWV9KTtcblxuICAgIGZvciAobGV0IGV2ZW50TmFtZSBpbiB0aGlzLm92ZXJyaWRlcykge1xuICAgICAgbWMuZ2V0KGV2ZW50TmFtZSkuc2V0KHRoaXMub3ZlcnJpZGVzW2V2ZW50TmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSGFtbWVyR2VzdHVyZXNQbHVnaW4gZXh0ZW5kcyBIYW1tZXJHZXN0dXJlc1BsdWdpbkNvbW1vbiB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoSEFNTUVSX0dFU1RVUkVfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEhhbW1lckdlc3R1cmVDb25maWcpIHsgc3VwZXIoKTsgfVxuXG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5zdXBwb3J0cyhldmVudE5hbWUpICYmICF0aGlzLmlzQ3VzdG9tRXZlbnQoZXZlbnROYW1lKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKCFpc1ByZXNlbnQod2luZG93WydIYW1tZXInXSkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBIYW1tZXIuanMgaXMgbm90IGxvYWRlZCwgY2FuIG5vdCBiaW5kICR7ZXZlbnROYW1lfSBldmVudGApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHZhciB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcbiAgICBldmVudE5hbWUgPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIC8vIENyZWF0aW5nIHRoZSBtYW5hZ2VyIGJpbmQgZXZlbnRzLCBtdXN0IGJlIGRvbmUgb3V0c2lkZSBvZiBhbmd1bGFyXG4gICAgICB2YXIgbWMgPSB0aGlzLl9jb25maWcuYnVpbGRIYW1tZXIoZWxlbWVudCk7XG4gICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihldmVudE9iaikgeyB6b25lLnJ1bkd1YXJkZWQoZnVuY3Rpb24oKSB7IGhhbmRsZXIoZXZlbnRPYmopOyB9KTsgfTtcbiAgICAgIG1jLm9uKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuICgpID0+IHsgbWMub2ZmKGV2ZW50TmFtZSwgY2FsbGJhY2spOyB9O1xuICAgIH0pO1xuICB9XG5cbiAgaXNDdXN0b21FdmVudChldmVudE5hbWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fY29uZmlnLmV2ZW50cy5pbmRleE9mKGV2ZW50TmFtZSkgPiAtMTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar core_1 = require(\"angular2/core\");\r\nvar common_1 = require(\"angular2/common\");\r\nvar testability_1 = require('angular2/src/core/testability/testability');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar dom_events_1 = require('angular2/src/platform/dom/events/dom_events');\r\nvar key_events_1 = require('angular2/src/platform/dom/events/key_events');\r\nvar dom_tokens_1 = require('angular2/src/platform/dom/dom_tokens');\r\nvar dom_renderer_1 = require('angular2/src/platform/dom/dom_renderer');\r\nvar shared_styles_host_1 = require('angular2/src/platform/dom/shared_styles_host');\r\nvar browser_details_1 = require(\"angular2/src/animate/browser_details\");\r\nvar animation_builder_1 = require(\"angular2/src/animate/animation_builder\");\r\nvar browser_adapter_1 = require('./browser/browser_adapter');\r\nvar testability_2 = require('angular2/src/platform/browser/testability');\r\nvar xhr_cache_1 = require('angular2/src/platform/browser/xhr_cache');\r\nvar wtf_init_1 = require('angular2/src/core/profile/wtf_init');\r\nvar event_manager_1 = require(\"angular2/src/platform/dom/events/event_manager\");\r\nvar hammer_gestures_1 = require('angular2/src/platform/dom/events/hammer_gestures');\r\nvar common_dom_1 = require('angular2/platform/common_dom');\r\nvar dom_tokens_2 = require('angular2/src/platform/dom/dom_tokens');\r\nexports.DOCUMENT = dom_tokens_2.DOCUMENT;\r\nvar title_1 = require('angular2/src/platform/browser/title');\r\nexports.Title = title_1.Title;\r\nvar common_dom_2 = require('angular2/platform/common_dom');\r\nexports.ELEMENT_PROBE_PROVIDERS = common_dom_2.ELEMENT_PROBE_PROVIDERS;\r\nexports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = common_dom_2.ELEMENT_PROBE_PROVIDERS_PROD_MODE;\r\nexports.inspectNativeElement = common_dom_2.inspectNativeElement;\r\nexports.By = common_dom_2.By;\r\nvar browser_adapter_2 = require('./browser/browser_adapter');\r\nexports.BrowserDomAdapter = browser_adapter_2.BrowserDomAdapter;\r\nvar tools_1 = require('angular2/src/platform/browser/tools/tools');\r\nexports.enableDebugTools = tools_1.enableDebugTools;\r\nexports.disableDebugTools = tools_1.disableDebugTools;\r\nvar hammer_gestures_2 = require('./dom/events/hammer_gestures');\r\nexports.HAMMER_GESTURE_CONFIG = hammer_gestures_2.HAMMER_GESTURE_CONFIG;\r\nexports.HammerGestureConfig = hammer_gestures_2.HammerGestureConfig;\r\nexports.BROWSER_PLATFORM_MARKER = lang_1.CONST_EXPR(new di_1.OpaqueToken('BrowserPlatformMarker'));\r\n/**\r\n * A set of providers to initialize the Angular platform in a web browser.\r\n *\r\n * Used automatically by `bootstrap`, or can be passed to {@link platform}.\r\n */\r\nexports.BROWSER_PROVIDERS = lang_1.CONST_EXPR([\r\n new di_1.Provider(exports.BROWSER_PLATFORM_MARKER, { useValue: true }),\r\n core_1.PLATFORM_COMMON_PROVIDERS,\r\n new di_1.Provider(core_1.PLATFORM_INITIALIZER, { useValue: initDomAdapter, multi: true }),\r\n]);\r\nfunction _exceptionHandler() {\r\n // !IS_DART is required because we must rethrow exceptions in JS,\r\n // but must not rethrow exceptions in Dart\r\n return new core_1.ExceptionHandler(dom_adapter_1.DOM, !lang_1.IS_DART);\r\n}\r\nfunction _document() {\r\n return dom_adapter_1.DOM.defaultDoc();\r\n}\r\n/**\r\n * A set of providers to initialize an Angular application in a web browser.\r\n *\r\n * Used automatically by `bootstrap`, or can be passed to {@link PlatformRef.application}.\r\n */\r\nexports.BROWSER_APP_COMMON_PROVIDERS = lang_1.CONST_EXPR([\r\n core_1.APPLICATION_COMMON_PROVIDERS,\r\n common_1.FORM_PROVIDERS,\r\n new di_1.Provider(core_1.PLATFORM_PIPES, { useValue: common_1.COMMON_PIPES, multi: true }),\r\n new di_1.Provider(core_1.PLATFORM_DIRECTIVES, { useValue: common_1.COMMON_DIRECTIVES, multi: true }),\r\n new di_1.Provider(core_1.ExceptionHandler, { useFactory: _exceptionHandler, deps: [] }),\r\n new di_1.Provider(dom_tokens_1.DOCUMENT, { useFactory: _document, deps: [] }),\r\n new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, { useClass: dom_events_1.DomEventsPlugin, multi: true }),\r\n new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, { useClass: key_events_1.KeyEventsPlugin, multi: true }),\r\n new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, { useClass: hammer_gestures_1.HammerGesturesPlugin, multi: true }),\r\n new di_1.Provider(hammer_gestures_1.HAMMER_GESTURE_CONFIG, { useClass: hammer_gestures_1.HammerGestureConfig }),\r\n new di_1.Provider(dom_renderer_1.DomRootRenderer, { useClass: dom_renderer_1.DomRootRenderer_ }),\r\n new di_1.Provider(core_1.RootRenderer, { useExisting: dom_renderer_1.DomRootRenderer }),\r\n new di_1.Provider(shared_styles_host_1.SharedStylesHost, { useExisting: shared_styles_host_1.DomSharedStylesHost }),\r\n shared_styles_host_1.DomSharedStylesHost,\r\n testability_1.Testability,\r\n browser_details_1.BrowserDetails,\r\n animation_builder_1.AnimationBuilder,\r\n event_manager_1.EventManager,\r\n common_dom_1.ELEMENT_PROBE_PROVIDERS\r\n]);\r\nexports.CACHED_TEMPLATE_PROVIDER = lang_1.CONST_EXPR([new di_1.Provider(xhr_1.XHR, { useClass: xhr_cache_1.CachedXHR })]);\r\nfunction initDomAdapter() {\r\n browser_adapter_1.BrowserDomAdapter.makeCurrent();\r\n wtf_init_1.wtfInit();\r\n testability_2.BrowserGetTestability.init();\r\n}\r\nexports.initDomAdapter = initDomAdapter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl9jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlcl9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUFrQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzdELG1CQUF1RCxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlFLG9CQUFrQiwyQkFBMkIsQ0FBQyxDQUFBO0FBQzlDLHFCQVdPLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZCLHVCQUE4RCxpQkFBaUIsQ0FBQyxDQUFBO0FBQ2hGLDRCQUEwQiwyQ0FBMkMsQ0FBQyxDQUFBO0FBQ3RFLDRCQUFrQix1Q0FBdUMsQ0FBQyxDQUFBO0FBQzFELDJCQUE4Qiw2Q0FBNkMsQ0FBQyxDQUFBO0FBQzVFLDJCQUE4Qiw2Q0FBNkMsQ0FBQyxDQUFBO0FBQzVFLDJCQUF1QixzQ0FBc0MsQ0FBQyxDQUFBO0FBQzlELDZCQUFnRCx3Q0FBd0MsQ0FBQyxDQUFBO0FBQ3pGLG1DQUFvRCw4Q0FBOEMsQ0FBQyxDQUFBO0FBQ25HLGdDQUE2QixzQ0FBc0MsQ0FBQyxDQUFBO0FBQ3BFLGtDQUErQix3Q0FBd0MsQ0FBQyxDQUFBO0FBQ3hFLGdDQUFnQywyQkFBMkIsQ0FBQyxDQUFBO0FBQzVELDRCQUFvQywyQ0FBMkMsQ0FBQyxDQUFBO0FBQ2hGLDBCQUF3Qix5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2xFLHlCQUFzQixvQ0FBb0MsQ0FBQyxDQUFBO0FBQzNELDhCQUFrRCxnREFBZ0QsQ0FBQyxDQUFBO0FBQ25HLGdDQUlPLGtEQUFrRCxDQUFDLENBQUE7QUFDMUQsMkJBQXNDLDhCQUE4QixDQUFDLENBQUE7QUFDckUsMkJBQXVCLHNDQUFzQyxDQUFDO0FBQXRELHlDQUFzRDtBQUM5RCxzQkFBb0IscUNBQXFDLENBQUM7QUFBbEQsOEJBQWtEO0FBQzFELDJCQUtPLDhCQUE4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QUUsQ0FBQztJQUNWLG1DQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFKZSxzQkFBYyxpQkFJN0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUiwgSVNfREFSVH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7cHJvdmlkZSwgUHJvdmlkZXIsIEluamVjdG9yLCBPcGFxdWVUb2tlbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtYSFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci94aHInO1xuaW1wb3J0IHtcbiAgUExBVEZPUk1fSU5JVElBTElaRVIsXG4gIFBMQVRGT1JNX0RJUkVDVElWRVMsXG4gIFBMQVRGT1JNX1BJUEVTLFxuICBDb21wb25lbnRSZWYsXG4gIEV4Y2VwdGlvbkhhbmRsZXIsXG4gIFJlZmxlY3RvcixcbiAgUm9vdFJlbmRlcmVyLFxuICByZWZsZWN0b3IsXG4gIEFQUExJQ0FUSU9OX0NPTU1PTl9QUk9WSURFUlMsXG4gIFBMQVRGT1JNX0NPTU1PTl9QUk9WSURFUlNcbn0gZnJvbSBcImFuZ3VsYXIyL2NvcmVcIjtcbmltcG9ydCB7Q09NTU9OX0RJUkVDVElWRVMsIENPTU1PTl9QSVBFUywgRk9STV9QUk9WSURFUlN9IGZyb20gXCJhbmd1bGFyMi9jb21tb25cIjtcbmltcG9ydCB7VGVzdGFiaWxpdHl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3Rlc3RhYmlsaXR5L3Rlc3RhYmlsaXR5JztcbmltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7RG9tRXZlbnRzUGx1Z2lufSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2V2ZW50cy9kb21fZXZlbnRzJztcbmltcG9ydCB7S2V5RXZlbnRzUGx1Z2lufSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2V2ZW50cy9rZXlfZXZlbnRzJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX3Rva2Vucyc7XG5pbXBvcnQge0RvbVJvb3RSZW5kZXJlciwgRG9tUm9vdFJlbmRlcmVyX30gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fcmVuZGVyZXInO1xuaW1wb3J0IHtEb21TaGFyZWRTdHlsZXNIb3N0LCBTaGFyZWRTdHlsZXNIb3N0fSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL3NoYXJlZF9zdHlsZXNfaG9zdCc7XG5pbXBvcnQge0Jyb3dzZXJEZXRhaWxzfSBmcm9tIFwiYW5ndWxhcjIvc3JjL2FuaW1hdGUvYnJvd3Nlcl9kZXRhaWxzXCI7XG5pbXBvcnQge0FuaW1hdGlvbkJ1aWxkZXJ9IGZyb20gXCJhbmd1bGFyMi9zcmMvYW5pbWF0ZS9hbmltYXRpb25fYnVpbGRlclwiO1xuaW1wb3J0IHtCcm93c2VyRG9tQWRhcHRlcn0gZnJvbSAnLi9icm93c2VyL2Jyb3dzZXJfYWRhcHRlcic7XG5pbXBvcnQge0Jyb3dzZXJHZXRUZXN0YWJpbGl0eX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvdGVzdGFiaWxpdHknO1xuaW1wb3J0IHtDYWNoZWRYSFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9icm93c2VyL3hocl9jYWNoZSc7XG5pbXBvcnQge3d0ZkluaXR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3Byb2ZpbGUvd3RmX2luaXQnO1xuaW1wb3J0IHtFdmVudE1hbmFnZXIsIEVWRU5UX01BTkFHRVJfUExVR0lOU30gZnJvbSBcImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2V2ZW50X21hbmFnZXJcIjtcbmltcG9ydCB7XG4gIEhBTU1FUl9HRVNUVVJFX0NPTkZJRyxcbiAgSGFtbWVyR2VzdHVyZUNvbmZpZyxcbiAgSGFtbWVyR2VzdHVyZXNQbHVnaW5cbn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9ldmVudHMvaGFtbWVyX2dlc3R1cmVzJztcbmltcG9ydCB7RUxFTUVOVF9QUk9CRV9QUk9WSURFUlN9IGZyb20gJ2FuZ3VsYXIyL3BsYXRmb3JtL2NvbW1vbl9kb20nO1xuZXhwb3J0IHtET0NVTUVOVH0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fdG9rZW5zJztcbmV4cG9ydCB7VGl0bGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9icm93c2VyL3RpdGxlJztcbmV4cG9ydCB7XG4gIEVMRU1FTlRfUFJPQkVfUFJPVklERVJTLFxuICBFTEVNRU5UX1BST0JFX1BST1ZJREVSU19QUk9EX01PREUsXG4gIGluc3BlY3ROYXRpdmVFbGVtZW50LFxuICBCeVxufSBmcm9tICdhbmd1bGFyMi9wbGF0Zm9ybS9jb21tb25fZG9tJztcbmV4cG9ydCB7QnJvd3NlckRvbUFkYXB0ZXJ9IGZyb20gJy4vYnJvd3Nlci9icm93c2VyX2FkYXB0ZXInO1xuZXhwb3J0IHtlbmFibGVEZWJ1Z1Rvb2xzLCBkaXNhYmxlRGVidWdUb29sc30gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvdG9vbHMvdG9vbHMnO1xuZXhwb3J0IHtIQU1NRVJfR0VTVFVSRV9DT05GSUcsIEhhbW1lckdlc3R1cmVDb25maWd9IGZyb20gJy4vZG9tL2V2ZW50cy9oYW1tZXJfZ2VzdHVyZXMnO1xuXG5leHBvcnQgY29uc3QgQlJPV1NFUl9QTEFURk9STV9NQVJLRVIgPSBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbignQnJvd3NlclBsYXRmb3JtTWFya2VyJykpO1xuXG4vKipcbiAqIEEgc2V0IG9mIHByb3ZpZGVycyB0byBpbml0aWFsaXplIHRoZSBBbmd1bGFyIHBsYXRmb3JtIGluIGEgd2ViIGJyb3dzZXIuXG4gKlxuICogVXNlZCBhdXRvbWF0aWNhbGx5IGJ5IGBib290c3RyYXBgLCBvciBjYW4gYmUgcGFzc2VkIHRvIHtAbGluayBwbGF0Zm9ybX0uXG4gKi9cbmV4cG9ydCBjb25zdCBCUk9XU0VSX1BST1ZJREVSUzogQXJyYXk8YW55IC8qVHlwZSB8IFByb3ZpZGVyIHwgYW55W10qLz4gPSBDT05TVF9FWFBSKFtcbiAgbmV3IFByb3ZpZGVyKEJST1dTRVJfUExBVEZPUk1fTUFSS0VSLCB7dXNlVmFsdWU6IHRydWV9KSxcbiAgUExBVEZPUk1fQ09NTU9OX1BST1ZJREVSUyxcbiAgbmV3IFByb3ZpZGVyKFBMQVRGT1JNX0lOSVRJQUxJWkVSLCB7dXNlVmFsdWU6IGluaXREb21BZGFwdGVyLCBtdWx0aTogdHJ1ZX0pLFxuXSk7XG5cbmZ1bmN0aW9uIF9leGNlcHRpb25IYW5kbGVyKCk6IEV4Y2VwdGlvbkhhbmRsZXIge1xuICAvLyAhSVNfREFSVCBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIG11c3QgcmV0aHJvdyBleGNlcHRpb25zIGluIEpTLFxuICAvLyBidXQgbXVzdCBub3QgcmV0aHJvdyBleGNlcHRpb25zIGluIERhcnRcbiAgcmV0dXJuIG5ldyBFeGNlcHRpb25IYW5kbGVyKERPTSwgIUlTX0RBUlQpO1xufVxuXG5mdW5jdGlvbiBfZG9jdW1lbnQoKTogYW55IHtcbiAgcmV0dXJuIERPTS5kZWZhdWx0RG9jKCk7XG59XG5cbi8qKlxuICogQSBzZXQgb2YgcHJvdmlkZXJzIHRvIGluaXRpYWxpemUgYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBpbiBhIHdlYiBicm93c2VyLlxuICpcbiAqIFVzZWQgYXV0b21hdGljYWxseSBieSBgYm9vdHN0cmFwYCwgb3IgY2FuIGJlIHBhc3NlZCB0byB7QGxpbmsgUGxhdGZvcm1SZWYuYXBwbGljYXRpb259LlxuICovXG5leHBvcnQgY29uc3QgQlJPV1NFUl9BUFBfQ09NTU9OX1BST1ZJREVSUzogQXJyYXk8YW55IC8qVHlwZSB8IFByb3ZpZGVyIHwgYW55W10qLz4gPSBDT05TVF9FWFBSKFtcbiAgQVBQTElDQVRJT05fQ09NTU9OX1BST1ZJREVSUyxcbiAgRk9STV9QUk9WSURFUlMsXG4gIG5ldyBQcm92aWRlcihQTEFURk9STV9QSVBFUywge3VzZVZhbHVlOiBDT01NT05fUElQRVMsIG11bHRpOiB0cnVlfSksXG4gIG5ldyBQcm92aWRlcihQTEFURk9STV9ESVJFQ1RJVkVTLCB7dXNlVmFsdWU6IENPTU1PTl9ESVJFQ1RJVkVTLCBtdWx0aTogdHJ1ZX0pLFxuICBuZXcgUHJvdmlkZXIoRXhjZXB0aW9uSGFuZGxlciwge3VzZUZhY3Rvcnk6IF9leGNlcHRpb25IYW5kbGVyLCBkZXBzOiBbXX0pLFxuICBuZXcgUHJvdmlkZXIoRE9DVU1FTlQsIHt1c2VGYWN0b3J5OiBfZG9jdW1lbnQsIGRlcHM6IFtdfSksXG4gIG5ldyBQcm92aWRlcihFVkVOVF9NQU5BR0VSX1BMVUdJTlMsIHt1c2VDbGFzczogRG9tRXZlbnRzUGx1Z2luLCBtdWx0aTogdHJ1ZX0pLFxuICBuZXcgUHJvdmlkZXIoRVZFTlRfTUFOQUdFUl9QTFVHSU5TLCB7dXNlQ2xhc3M6IEtleUV2ZW50c1BsdWdpbiwgbXVsdGk6IHRydWV9KSxcbiAgbmV3IFByb3ZpZGVyKEVWRU5UX01BTkFHRVJfUExVR0lOUywge3VzZUNsYXNzOiBIYW1tZXJHZXN0dXJlc1BsdWdpbiwgbXVsdGk6IHRydWV9KSxcbiAgbmV3IFByb3ZpZGVyKEhBTU1FUl9HRVNUVVJFX0NPTkZJRywge3VzZUNsYXNzOiBIYW1tZXJHZXN0dXJlQ29uZmlnfSksXG4gIG5ldyBQcm92aWRlcihEb21Sb290UmVuZGVyZXIsIHt1c2VDbGFzczogRG9tUm9vdFJlbmRlcmVyX30pLFxuICBuZXcgUHJvdmlkZXIoUm9vdFJlbmRlcmVyLCB7dXNlRXhpc3Rpbmc6IERvbVJvb3RSZW5kZXJlcn0pLFxuICBuZXcgUHJvdmlkZXIoU2hhcmVkU3R5bGVzSG9zdCwge3VzZUV4aXN0aW5nOiBEb21TaGFyZWRTdHlsZXNIb3N0fSksXG4gIERvbVNoYXJlZFN0eWxlc0hvc3QsXG4gIFRlc3RhYmlsaXR5LFxuICBCcm93c2VyRGV0YWlscyxcbiAgQW5pbWF0aW9uQnVpbGRlcixcbiAgRXZlbnRNYW5hZ2VyLFxuICBFTEVNRU5UX1BST0JFX1BST1ZJREVSU1xuXSk7XG5cbmV4cG9ydCBjb25zdCBDQUNIRURfVEVNUExBVEVfUFJPVklERVI6IEFycmF5PGFueSAvKlR5cGUgfCBQcm92aWRlciB8IGFueVtdKi8+ID1cbiAgICBDT05TVF9FWFBSKFtuZXcgUHJvdmlkZXIoWEhSLCB7dXNlQ2xhc3M6IENhY2hlZFhIUn0pXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0RG9tQWRhcHRlcigpIHtcbiAgQnJvd3NlckRvbUFkYXB0ZXIubWFrZUN1cnJlbnQoKTtcbiAgd3RmSW5pdCgpO1xuICBCcm93c2VyR2V0VGVzdGFiaWxpdHkuaW5pdCgpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar compile_metadata_1 = require('./compile_metadata');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar o = require('./output/output_ast');\r\nvar component_factory_1 = require('angular2/src/core/linker/component_factory');\r\nvar util_1 = require('./util');\r\nvar _COMPONENT_FACTORY_IDENTIFIER = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ComponentFactory',\r\n runtime: component_factory_1.ComponentFactory,\r\n moduleUrl: \"asset:angular2/lib/src/core/linker/component_factory\" + util_1.MODULE_SUFFIX\r\n});\r\nvar SourceModule = (function () {\r\n function SourceModule(moduleUrl, source) {\r\n this.moduleUrl = moduleUrl;\r\n this.source = source;\r\n }\r\n return SourceModule;\r\n}());\r\nexports.SourceModule = SourceModule;\r\nvar NormalizedComponentWithViewDirectives = (function () {\r\n function NormalizedComponentWithViewDirectives(component, directives, pipes) {\r\n this.component = component;\r\n this.directives = directives;\r\n this.pipes = pipes;\r\n }\r\n return NormalizedComponentWithViewDirectives;\r\n}());\r\nexports.NormalizedComponentWithViewDirectives = NormalizedComponentWithViewDirectives;\r\nvar OfflineCompiler = (function () {\r\n function OfflineCompiler(_directiveNormalizer, _templateParser, _styleCompiler, _viewCompiler, _outputEmitter) {\r\n this._directiveNormalizer = _directiveNormalizer;\r\n this._templateParser = _templateParser;\r\n this._styleCompiler = _styleCompiler;\r\n this._viewCompiler = _viewCompiler;\r\n this._outputEmitter = _outputEmitter;\r\n }\r\n OfflineCompiler.prototype.normalizeDirectiveMetadata = function (directive) {\r\n return this._directiveNormalizer.normalizeDirective(directive);\r\n };\r\n OfflineCompiler.prototype.compileTemplates = function (components) {\r\n var _this = this;\r\n if (components.length === 0) {\r\n throw new exceptions_1.BaseException('No components given');\r\n }\r\n var statements = [];\r\n var exportedVars = [];\r\n var moduleUrl = _templateModuleUrl(components[0].component);\r\n components.forEach(function (componentWithDirs) {\r\n var compMeta = componentWithDirs.component;\r\n _assertComponent(compMeta);\r\n var compViewFactoryVar = _this._compileComponent(compMeta, componentWithDirs.directives, componentWithDirs.pipes, statements);\r\n exportedVars.push(compViewFactoryVar);\r\n var hostMeta = compile_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);\r\n var hostViewFactoryVar = _this._compileComponent(hostMeta, [compMeta], [], statements);\r\n var compFactoryVar = compMeta.type.name + \"NgFactory\";\r\n statements.push(o.variable(compFactoryVar)\r\n .set(o.importExpr(_COMPONENT_FACTORY_IDENTIFIER)\r\n .instantiate([\r\n o.literal(compMeta.selector),\r\n o.variable(hostViewFactoryVar),\r\n o.importExpr(compMeta.type)\r\n ], o.importType(_COMPONENT_FACTORY_IDENTIFIER, null, [o.TypeModifier.Const])))\r\n .toDeclStmt(null, [o.StmtModifier.Final]));\r\n exportedVars.push(compFactoryVar);\r\n });\r\n return this._codegenSourceModule(moduleUrl, statements, exportedVars);\r\n };\r\n OfflineCompiler.prototype.compileStylesheet = function (stylesheetUrl, cssText) {\r\n var plainStyles = this._styleCompiler.compileStylesheet(stylesheetUrl, cssText, false);\r\n var shimStyles = this._styleCompiler.compileStylesheet(stylesheetUrl, cssText, true);\r\n return [\r\n this._codegenSourceModule(_stylesModuleUrl(stylesheetUrl, false), _resolveStyleStatements(plainStyles), [plainStyles.stylesVar]),\r\n this._codegenSourceModule(_stylesModuleUrl(stylesheetUrl, true), _resolveStyleStatements(shimStyles), [shimStyles.stylesVar])\r\n ];\r\n };\r\n OfflineCompiler.prototype._compileComponent = function (compMeta, directives, pipes, targetStatements) {\r\n var styleResult = this._styleCompiler.compileComponent(compMeta);\r\n var parsedTemplate = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, compMeta.type.name);\r\n var viewResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, o.variable(styleResult.stylesVar), pipes);\r\n collection_1.ListWrapper.addAll(targetStatements, _resolveStyleStatements(styleResult));\r\n collection_1.ListWrapper.addAll(targetStatements, _resolveViewStatements(viewResult));\r\n return viewResult.viewFactoryVar;\r\n };\r\n OfflineCompiler.prototype._codegenSourceModule = function (moduleUrl, statements, exportedVars) {\r\n return new SourceModule(moduleUrl, this._outputEmitter.emitStatements(moduleUrl, statements, exportedVars));\r\n };\r\n return OfflineCompiler;\r\n}());\r\nexports.OfflineCompiler = OfflineCompiler;\r\nfunction _resolveViewStatements(compileResult) {\r\n compileResult.dependencies.forEach(function (dep) { dep.factoryPlaceholder.moduleUrl = _templateModuleUrl(dep.comp); });\r\n return compileResult.statements;\r\n}\r\nfunction _resolveStyleStatements(compileResult) {\r\n compileResult.dependencies.forEach(function (dep) {\r\n dep.valuePlaceholder.moduleUrl = _stylesModuleUrl(dep.sourceUrl, dep.isShimmed);\r\n });\r\n return compileResult.statements;\r\n}\r\nfunction _templateModuleUrl(comp) {\r\n var moduleUrl = comp.type.moduleUrl;\r\n var urlWithoutSuffix = moduleUrl.substring(0, moduleUrl.length - util_1.MODULE_SUFFIX.length);\r\n return urlWithoutSuffix + \".ngfactory\" + util_1.MODULE_SUFFIX;\r\n}\r\nfunction _stylesModuleUrl(stylesheetUrl, shim) {\r\n return shim ? stylesheetUrl + \".shim\" + util_1.MODULE_SUFFIX : \"\" + stylesheetUrl + util_1.MODULE_SUFFIX;\r\n}\r\nfunction _assertComponent(meta) {\r\n if (!meta.isComponent) {\r\n throw new exceptions_1.BaseException(\"Could not compile '\" + meta.type.name + \"' because it is not a component.\");\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZV9jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9vZmZsaW5lX2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpQ0FLTyxvQkFBb0IsQ0FBQyxDQUFBO0FBRTVCLDJCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzVFLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBTTNELElBQVksQ0FBQyxXQUFNLHFCQUFxQixDQUFDLENBQUE7QUFDekMsa0NBQStCLDRDQUE0QyxDQUFDLENBQUE7QUFFNUUscUJBRU8sUUFBUSxDQUFDLENBQUE7QUFFaEIsSUFBSSw2QkFBNkIsR0FBRyxJQUFJLDRDQUF5QixDQUFDO0lBQ2hFLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsT0FBTyxFQUFFLG9DQUFnQjtJQUN6QixTQUFTLEVBQUUseURBQXVELG9CQUFlO0NBQ2xGLENBQUMsQ0FBQztBQUVIO0lBQ0Usc0JBQW1CLFNBQWlCLEVBQVMsTUFBYztRQUF4QyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFDakUsbUJBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUZZLG9CQUFZLGVBRXhCLENBQUE7QUFFRDtJQUNFLCtDQUFtQixTQUFtQyxFQUNuQyxVQUFzQyxFQUFTLEtBQTRCO1FBRDNFLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQ25DLGVBQVUsR0FBVixVQUFVLENBQTRCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBdUI7SUFBRyxDQUFDO0lBQ3BHLDRDQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIWSw2Q0FBcUMsd0NBR2pELENBQUE7QUFFRDtJQUNFLHlCQUFvQixvQkFBeUMsRUFDekMsZUFBK0IsRUFBVSxjQUE2QixFQUN0RSxhQUEyQixF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QUFnQixrQkFBYSxvQkFBZSxDQUFDO0FBQ3pELENBQUM7QUFFRCwwQkFBMEIsYUFBcUIsRUFBRSxJQUFhO0lBQzVELE1BQU0sQ0FBQyxJQUFJLEdBQU0sYUFBYSxhQUFRLG9CQUFlLEdBQUcsS0FBRyxhQUFhLEdBQUcsb0JBQWUsQ0FBQztBQUM3RixDQUFDO0FBRUQsMEJBQTBCLElBQThCO0lBQ3RELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLDBCQUFhLENBQUMsd0JBQXNCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxxQ0FBa0MsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLFxuICBDb21waWxlUGlwZU1ldGFkYXRhLFxuICBjcmVhdGVIb3N0Q29tcG9uZW50TWV0YVxufSBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuXG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIHVuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtTdHlsZUNvbXBpbGVyLCBTdHlsZXNDb21waWxlRGVwZW5kZW5jeSwgU3R5bGVzQ29tcGlsZVJlc3VsdH0gZnJvbSAnLi9zdHlsZV9jb21waWxlcic7XG5pbXBvcnQge1ZpZXdDb21waWxlciwgVmlld0NvbXBpbGVSZXN1bHR9IGZyb20gJy4vdmlld19jb21waWxlci92aWV3X2NvbXBpbGVyJztcbmltcG9ydCB7VGVtcGxhdGVQYXJzZXJ9IGZyb20gJy4vdGVtcGxhdGVfcGFyc2VyJztcbmltcG9ydCB7RGlyZWN0aXZlTm9ybWFsaXplcn0gZnJvbSAnLi9kaXJlY3RpdmVfbm9ybWFsaXplcic7XG5pbXBvcnQge091dHB1dEVtaXR0ZXJ9IGZyb20gJy4vb3V0cHV0L2Fic3RyYWN0X2VtaXR0ZXInO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7Q29tcG9uZW50RmFjdG9yeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5JztcblxuaW1wb3J0IHtcbiAgTU9EVUxFX1NVRkZJWCxcbn0gZnJvbSAnLi91dGlsJztcblxudmFyIF9DT01QT05FTlRfRkFDVE9SWV9JREVOVElGSUVSID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoe1xuICBuYW1lOiAnQ29tcG9uZW50RmFjdG9yeScsXG4gIHJ1bnRpbWU6IENvbXBvbmVudEZhY3RvcnksXG4gIG1vZHVsZVVybDogYGFzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9saW5rZXIvY29tcG9uZW50X2ZhY3Rvcnkke01PRFVMRV9TVUZGSVh9YFxufSk7XG5cbmV4cG9ydCBjbGFzcyBTb3VyY2VNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kdWxlVXJsOiBzdHJpbmcsIHB1YmxpYyBzb3VyY2U6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIE5vcm1hbGl6ZWRDb21wb25lbnRXaXRoVmlld0RpcmVjdGl2ZXMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgIHB1YmxpYyBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSwgcHVibGljIHBpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBPZmZsaW5lQ29tcGlsZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaXJlY3RpdmVOb3JtYWxpemVyOiBEaXJlY3RpdmVOb3JtYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF90ZW1wbGF0ZVBhcnNlcjogVGVtcGxhdGVQYXJzZXIsIHByaXZhdGUgX3N0eWxlQ29tcGlsZXI6IFN0eWxlQ29tcGlsZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdDb21waWxlcjogVmlld0NvbXBpbGVyLCBwcml2YXRlIF9vdXRwdXRFbWl0dGVyOiBPdXRwdXRFbWl0dGVyKSB7fVxuXG4gIG5vcm1hbGl6ZURpcmVjdGl2ZU1ldGFkYXRhKGRpcmVjdGl2ZTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKTpcbiAgICAgIFByb21pc2U8Q29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGl2ZU5vcm1hbGl6ZXIubm9ybWFsaXplRGlyZWN0aXZlKGRpcmVjdGl2ZSk7XG4gIH1cblxuICBjb21waWxlVGVtcGxhdGVzKGNvbXBvbmVudHM6IE5vcm1hbGl6ZWRDb21wb25lbnRXaXRoVmlld0RpcmVjdGl2ZXNbXSk6IFNvdXJjZU1vZHVsZSB7XG4gICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignTm8gY29tcG9uZW50cyBnaXZlbicpO1xuICAgIH1cbiAgICB2YXIgc3RhdGVtZW50cyA9IFtdO1xuICAgIHZhciBleHBvcnRlZFZhcnMgPSBbXTtcbiAgICB2YXIgbW9kdWxlVXJsID0gX3RlbXBsYXRlTW9kdWxlVXJsKGNvbXBvbmVudHNbMF0uY29tcG9uZW50KTtcbiAgICBjb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50V2l0aERpcnMgPT4ge1xuICAgICAgdmFyIGNvbXBNZXRhID0gPENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YT5jb21wb25lbnRXaXRoRGlycy5jb21wb25lbnQ7XG4gICAgICBfYXNzZXJ0Q29tcG9uZW50KGNvbXBNZXRhKTtcbiAgICAgIHZhciBjb21wVmlld0ZhY3RvcnlWYXIgPSB0aGlzLl9jb21waWxlQ29tcG9uZW50KGNvbXBNZXRhLCBjb21wb25lbnRXaXRoRGlycy5kaXJlY3RpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50V2l0aERpcnMucGlwZXMsIHN0YXRlbWVudHMpO1xuICAgICAgZXhwb3J0ZWRWYXJzLnB1c2goY29tcFZpZXdGYWN0b3J5VmFyKTtcblxuICAgICAgdmFyIGhvc3RNZXRhID0gY3JlYXRlSG9zdENvbXBvbmVudE1ldGEoY29tcE1ldGEudHlwZSwgY29tcE1ldGEuc2VsZWN0b3IpO1xuICAgICAgdmFyIGhvc3RWaWV3RmFjdG9yeVZhciA9IHRoaXMuX2NvbXBpbGVDb21wb25lbnQoaG9zdE1ldGEsIFtjb21wTWV0YV0sIFtdLCBzdGF0ZW1lbnRzKTtcbiAgICAgIHZhciBjb21wRmFjdG9yeVZhciA9IGAke2NvbXBNZXRhLnR5cGUubmFtZX1OZ0ZhY3RvcnlgO1xuICAgICAgc3RhdGVtZW50cy5wdXNoKG8udmFyaWFibGUoY29tcEZhY3RvcnlWYXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXQoby5pbXBvcnRFeHByKF9DT01QT05FTlRfRkFDVE9SWV9JREVOVElGSUVSKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5zdGFudGlhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGl0ZXJhbChjb21wTWV0YS5zZWxlY3RvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8udmFyaWFibGUoaG9zdFZpZXdGYWN0b3J5VmFyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbXBvcnRFeHByKGNvbXBNZXRhLnR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbXBvcnRUeXBlKF9DT01QT05FTlRfRkFDVE9SWV9JREVOVElGSUVSLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvLlR5cGVNb2RpZmllci5Db25zdF0pKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvRGVjbFN0bXQobnVsbCwgW28uU3RtdE1vZGlmaWVyLkZpbmFsXSkpO1xuICAgICAgZXhwb3J0ZWRWYXJzLnB1c2goY29tcEZhY3RvcnlWYXIpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLl9jb2RlZ2VuU291cmNlTW9kdWxlKG1vZHVsZVVybCwgc3RhdGVtZW50cywgZXhwb3J0ZWRWYXJzKTtcbiAgfVxuXG4gIGNvbXBpbGVTdHlsZXNoZWV0KHN0eWxlc2hlZXRVcmw6IHN0cmluZywgY3NzVGV4dDogc3RyaW5nKTogU291cmNlTW9kdWxlW10ge1xuICAgIHZhciBwbGFpblN0eWxlcyA9IHRoaXMuX3N0eWxlQ29tcGlsZXIuY29tcGlsZVN0eWxlc2hlZXQoc3R5bGVzaGVldFVybCwgY3NzVGV4dCwgZmFsc2UpO1xuICAgIHZhciBzaGltU3R5bGVzID0gdGhpcy5fc3R5bGVDb21waWxlci5jb21waWxlU3R5bGVzaGVldChzdHlsZXNoZWV0VXJsLCBjc3NUZXh0LCB0cnVlKTtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5fY29kZWdlblNvdXJjZU1vZHVsZShfc3R5bGVzTW9kdWxlVXJsKHN0eWxlc2hlZXRVcmwsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jlc29sdmVTdHlsZVN0YXRlbWVudHMocGxhaW5TdHlsZXMpLCBbcGxhaW5TdHlsZXMuc3R5bGVzVmFyXSksXG4gICAgICB0aGlzLl9jb2RlZ2VuU291cmNlTW9kdWxlKF9zdHlsZXNNb2R1bGVVcmwoc3R5bGVzaGVldFVybCwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZXNvbHZlU3R5bGVTdGF0ZW1lbnRzKHNoaW1TdHlsZXMpLCBbc2hpbVN0eWxlcy5zdHlsZXNWYXJdKVxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIF9jb21waWxlQ29tcG9uZW50KGNvbXBNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sIHBpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSk6IHN0cmluZyB7XG4gICAgdmFyIHN0eWxlUmVzdWx0ID0gdGhpcy5fc3R5bGVDb21waWxlci5jb21waWxlQ29tcG9uZW50KGNvbXBNZXRhKTtcbiAgICB2YXIgcGFyc2VkVGVtcGxhdGUgPSB0aGlzLl90ZW1wbGF0ZVBhcnNlci5wYXJzZShjb21wTWV0YSwgY29tcE1ldGEudGVtcGxhdGUudGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcywgcGlwZXMsIGNvbXBNZXRhLnR5cGUubmFtZSk7XG4gICAgdmFyIHZpZXdSZXN1bHQgPSB0aGlzLl92aWV3Q29tcGlsZXIuY29tcGlsZUNvbXBvbmVudChjb21wTWV0YSwgcGFyc2VkVGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnZhcmlhYmxlKHN0eWxlUmVzdWx0LnN0eWxlc1ZhciksIHBpcGVzKTtcbiAgICBMaXN0V3JhcHBlci5hZGRBbGwodGFyZ2V0U3RhdGVtZW50cywgX3Jlc29sdmVTdHlsZVN0YXRlbWVudHMoc3R5bGVSZXN1bHQpKTtcbiAgICBMaXN0V3JhcHBlci5hZGRBbGwodGFyZ2V0U3RhdGVtZW50cywgX3Jlc29sdmVWaWV3U3RhdGVtZW50cyh2aWV3UmVzdWx0KSk7XG4gICAgcmV0dXJuIHZpZXdSZXN1bHQudmlld0ZhY3RvcnlWYXI7XG4gIH1cblxuXG4gIHByaXZhdGUgX2NvZGVnZW5Tb3VyY2VNb2R1bGUobW9kdWxlVXJsOiBzdHJpbmcsIHN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYXJzOiBzdHJpbmdbXSk6IFNvdXJjZU1vZHVsZSB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VNb2R1bGUoXG4gICAgICAgIG1vZHVsZVVybCwgdGhpcy5fb3V0cHV0RW1pdHRlci5lbWl0U3RhdGVtZW50cyhtb2R1bGVVcmwsIHN0YXRlbWVudHMsIGV4cG9ydGVkVmFycykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9yZXNvbHZlVmlld1N0YXRlbWVudHMoY29tcGlsZVJlc3VsdDogVmlld0NvbXBpbGVSZXN1bHQpOiBvLlN0YXRlbWVudFtdIHtcbiAgY29tcGlsZVJlc3VsdC5kZXBlbmRlbmNpZXMuZm9yRWFjaChcbiAgICAgIChkZXApID0+IHsgZGVwLmZhY3RvcnlQbGFjZWhvbGRlci5tb2R1bGVVcmwgPSBfdGVtcGxhdGVNb2R1bGVVcmwoZGVwLmNvbXApOyB9KTtcbiAgcmV0dXJuIGNvbXBpbGVSZXN1bHQuc3RhdGVtZW50cztcbn1cblxuXG5mdW5jdGlvbiBfcmVzb2x2ZVN0eWxlU3RhdGVtZW50cyhjb21waWxlUmVzdWx0OiBTdHlsZXNDb21waWxlUmVzdWx0KTogby5TdGF0ZW1lbnRbXSB7XG4gIGNvbXBpbGVSZXN1bHQuZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgIGRlcC52YWx1ZVBsYWNlaG9sZGVyLm1vZHVsZVVybCA9IF9zdHlsZXNNb2R1bGVVcmwoZGVwLnNvdXJjZVVybCwgZGVwLmlzU2hpbW1lZCk7XG4gIH0pO1xuICByZXR1cm4gY29tcGlsZVJlc3VsdC5zdGF0ZW1lbnRzO1xufVxuXG5mdW5jdGlvbiBfdGVtcGxhdGVNb2R1bGVVcmwoY29tcDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKTogc3RyaW5nIHtcbiAgdmFyIG1vZHVsZVVybCA9IGNvbXAudHlwZS5tb2R1bGVVcmw7XG4gIHZhciB1cmxXaXRob3V0U3VmZml4ID0gbW9kdWxlVXJsLnN1YnN0cmluZygwLCBtb2R1bGVVcmwubGVuZ3RoIC0gTU9EVUxFX1NVRkZJWC5sZW5ndGgpO1xuICByZXR1cm4gYCR7dXJsV2l0aG91dFN1ZmZpeH0ubmdmYWN0b3J5JHtNT0RVTEVfU1VGRklYfWA7XG59XG5cbmZ1bmN0aW9uIF9zdHlsZXNNb2R1bGVVcmwoc3R5bGVzaGVldFVybDogc3RyaW5nLCBzaGltOiBib29sZWFuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNoaW0gPyBgJHtzdHlsZXNoZWV0VXJsfS5zaGltJHtNT0RVTEVfU1VGRklYfWAgOiBgJHtzdHlsZXNoZWV0VXJsfSR7TU9EVUxFX1NVRkZJWH1gO1xufVxuXG5mdW5jdGlvbiBfYXNzZXJ0Q29tcG9uZW50KG1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSkge1xuICBpZiAoIW1ldGEuaXNDb21wb25lbnQpIHtcbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ291bGQgbm90IGNvbXBpbGUgJyR7bWV0YS50eXBlLm5hbWV9JyBiZWNhdXNlIGl0IGlzIG5vdCBhIGNvbXBvbmVudC5gKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * This file is a port of shadowCSS from webcomponents.js to TypeScript.\r\n *\r\n * Please make sure to keep to edits in sync with the source file.\r\n *\r\n * Source:\r\n * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js\r\n *\r\n * The original file level comment is reproduced below\r\n */\r\n/*\r\n This is a limited shim for ShadowDOM css styling.\r\n https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles\r\n\r\n The intention here is to support only the styling features which can be\r\n relatively simply implemented. The goal is to allow users to avoid the\r\n most obvious pitfalls and do so without compromising performance significantly.\r\n For ShadowDOM styling that's not covered here, a set of best practices\r\n can be provided that should allow users to accomplish more complex styling.\r\n\r\n The following is a list of specific ShadowDOM styling features and a brief\r\n discussion of the approach used to shim.\r\n\r\n Shimmed features:\r\n\r\n * :host, :host-context: ShadowDOM allows styling of the shadowRoot's host\r\n element using the :host rule. To shim this feature, the :host styles are\r\n reformatted and prefixed with a given scope name and promoted to a\r\n document level stylesheet.\r\n For example, given a scope name of .foo, a rule like this:\r\n\r\n :host {\r\n background: red;\r\n }\r\n }\r\n\r\n becomes:\r\n\r\n .foo {\r\n background: red;\r\n }\r\n\r\n * encapsultion: Styles defined within ShadowDOM, apply only to\r\n dom inside the ShadowDOM. Polymer uses one of two techniques to implement\r\n this feature.\r\n\r\n By default, rules are prefixed with the host element tag name\r\n as a descendant selector. This ensures styling does not leak out of the 'top'\r\n of the element's ShadowDOM. For example,\r\n\r\n div {\r\n font-weight: bold;\r\n }\r\n\r\n becomes:\r\n\r\n x-foo div {\r\n font-weight: bold;\r\n }\r\n\r\n becomes:\r\n\r\n\r\n Alternatively, if WebComponents.ShadowCSS.strictStyling is set to true then\r\n selectors are scoped by adding an attribute selector suffix to each\r\n simple selector that contains the host element tag name. Each element\r\n in the element's ShadowDOM template is also given the scope attribute.\r\n Thus, these rules match only elements that have the scope attribute.\r\n For example, given a scope name of x-foo, a rule like this:\r\n\r\n div {\r\n font-weight: bold;\r\n }\r\n\r\n becomes:\r\n\r\n div[x-foo] {\r\n font-weight: bold;\r\n }\r\n\r\n Note that elements that are dynamically added to a scope must have the scope\r\n selector added to them manually.\r\n\r\n * upper/lower bound encapsulation: Styles which are defined outside a\r\n shadowRoot should not cross the ShadowDOM boundary and should not apply\r\n inside a shadowRoot.\r\n\r\n This styling behavior is not emulated. Some possible ways to do this that\r\n were rejected due to complexity and/or performance concerns include: (1) reset\r\n every possible property for every possible selector for a given scope name;\r\n (2) re-implement css in javascript.\r\n\r\n As an alternative, users should make sure to use selectors\r\n specific to the scope in which they are working.\r\n\r\n * ::distributed: This behavior is not emulated. It's often not necessary\r\n to style the contents of a specific insertion point and instead, descendants\r\n of the host element can be styled selectively. Users can also create an\r\n extra node around an insertion point and style that node's contents\r\n via descendent selectors. For example, with a shadowRoot like this:\r\n\r\n <style>\r\n ::content(div) {\r\n background: red;\r\n }\r\n </style>\r\n <content></content>\r\n\r\n could become:\r\n\r\n <style>\r\n / *@polyfill .content-container div * /\r\n ::content(div) {\r\n background: red;\r\n }\r\n </style>\r\n <div class=\"content-container\">\r\n <content></content>\r\n </div>\r\n\r\n Note the use of @polyfill in the comment above a ShadowDOM specific style\r\n declaration. This is a directive to the styling shim to use the selector\r\n in comments in lieu of the next selector when running under polyfill.\r\n*/\r\nvar ShadowCss = (function () {\r\n function ShadowCss() {\r\n this.strictStyling = true;\r\n }\r\n /*\r\n * Shim some cssText with the given selector. Returns cssText that can\r\n * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css).\r\n *\r\n * When strictStyling is true:\r\n * - selector is the attribute added to all elements inside the host,\r\n * - hostSelector is the attribute added to the host itself.\r\n */\r\n ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) {\r\n if (hostSelector === void 0) { hostSelector = ''; }\r\n cssText = stripComments(cssText);\r\n cssText = this._insertDirectives(cssText);\r\n return this._scopeCssText(cssText, selector, hostSelector);\r\n };\r\n ShadowCss.prototype._insertDirectives = function (cssText) {\r\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\r\n return this._insertPolyfillRulesInCssText(cssText);\r\n };\r\n /*\r\n * Process styles to convert native ShadowDOM rules that will trip\r\n * up the css parser; we rely on decorating the stylesheet with inert rules.\r\n *\r\n * For example, we convert this rule:\r\n *\r\n * polyfill-next-selector { content: ':host menu-item'; }\r\n * ::content menu-item {\r\n *\r\n * to this:\r\n *\r\n * scopeName menu-item {\r\n *\r\n **/\r\n ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) {\r\n // Difference with webcomponents.js: does not handle comments\r\n return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentNextSelectorRe, function (m) { return m[1] + '{'; });\r\n };\r\n /*\r\n * Process styles to add rules which will only apply under the polyfill\r\n *\r\n * For example, we convert this rule:\r\n *\r\n * polyfill-rule {\r\n * content: ':host menu-item';\r\n * ...\r\n * }\r\n *\r\n * to this:\r\n *\r\n * scopeName menu-item {...}\r\n *\r\n **/\r\n ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) {\r\n // Difference with webcomponents.js: does not handle comments\r\n return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentRuleRe, function (m) {\r\n var rule = m[0];\r\n rule = lang_1.StringWrapper.replace(rule, m[1], '');\r\n rule = lang_1.StringWrapper.replace(rule, m[2], '');\r\n return m[3] + rule;\r\n });\r\n };\r\n /* Ensure styles are scoped. Pseudo-scoping takes a rule like:\r\n *\r\n * .foo {... }\r\n *\r\n * and converts this to\r\n *\r\n * scopeName .foo { ... }\r\n */\r\n ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) {\r\n var unscoped = this._extractUnscopedRulesFromCssText(cssText);\r\n cssText = this._insertPolyfillHostInCssText(cssText);\r\n cssText = this._convertColonHost(cssText);\r\n cssText = this._convertColonHostContext(cssText);\r\n cssText = this._convertShadowDOMSelectors(cssText);\r\n if (lang_1.isPresent(scopeSelector)) {\r\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\r\n }\r\n cssText = cssText + '\\n' + unscoped;\r\n return cssText.trim();\r\n };\r\n /*\r\n * Process styles to add rules which will only apply under the polyfill\r\n * and do not process via CSSOM. (CSSOM is destructive to rules on rare\r\n * occasions, e.g. -webkit-calc on Safari.)\r\n * For example, we convert this rule:\r\n *\r\n * @polyfill-unscoped-rule {\r\n * content: 'menu-item';\r\n * ... }\r\n *\r\n * to this:\r\n *\r\n * menu-item {...}\r\n *\r\n **/\r\n ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {\r\n // Difference with webcomponents.js: does not handle comments\r\n var r = '', m;\r\n var matcher = lang_1.RegExpWrapper.matcher(_cssContentUnscopedRuleRe, cssText);\r\n while (lang_1.isPresent(m = lang_1.RegExpMatcherWrapper.next(matcher))) {\r\n var rule = m[0];\r\n rule = lang_1.StringWrapper.replace(rule, m[2], '');\r\n rule = lang_1.StringWrapper.replace(rule, m[1], m[3]);\r\n r += rule + '\\n\\n';\r\n }\r\n return r;\r\n };\r\n /*\r\n * convert a rule like :host(.foo) > .bar { }\r\n *\r\n * to\r\n *\r\n * scopeName.foo > .bar\r\n */\r\n ShadowCss.prototype._convertColonHost = function (cssText) {\r\n return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\r\n };\r\n /*\r\n * convert a rule like :host-context(.foo) > .bar { }\r\n *\r\n * to\r\n *\r\n * scopeName.foo > .bar, .foo scopeName > .bar { }\r\n *\r\n * and\r\n *\r\n * :host-context(.foo:host) .bar { ... }\r\n *\r\n * to\r\n *\r\n * scopeName.foo .bar { ... }\r\n */\r\n ShadowCss.prototype._convertColonHostContext = function (cssText) {\r\n return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\r\n };\r\n ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) {\r\n // p1 = :host, p2 = contents of (), p3 rest of rule\r\n return lang_1.StringWrapper.replaceAllMapped(cssText, regExp, function (m) {\r\n if (lang_1.isPresent(m[2])) {\r\n var parts = m[2].split(','), r = [];\r\n for (var i = 0; i < parts.length; i++) {\r\n var p = parts[i];\r\n if (lang_1.isBlank(p))\r\n break;\r\n p = p.trim();\r\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\r\n }\r\n return r.join(',');\r\n }\r\n else {\r\n return _polyfillHostNoCombinator + m[3];\r\n }\r\n });\r\n };\r\n ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) {\r\n if (lang_1.StringWrapper.contains(part, _polyfillHost)) {\r\n return this._colonHostPartReplacer(host, part, suffix);\r\n }\r\n else {\r\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\r\n }\r\n };\r\n ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) {\r\n return host + lang_1.StringWrapper.replace(part, _polyfillHost, '') + suffix;\r\n };\r\n /*\r\n * Convert combinators like ::shadow and pseudo-elements like ::content\r\n * by replacing with space.\r\n */\r\n ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) {\r\n for (var i = 0; i < _shadowDOMSelectorsRe.length; i++) {\r\n cssText = lang_1.StringWrapper.replaceAll(cssText, _shadowDOMSelectorsRe[i], ' ');\r\n }\r\n return cssText;\r\n };\r\n // change a selector like 'div' to 'name div'\r\n ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) {\r\n var _this = this;\r\n return processRules(cssText, function (rule) {\r\n var selector = rule.selector;\r\n var content = rule.content;\r\n if (rule.selector[0] != '@' || rule.selector.startsWith('@page')) {\r\n selector =\r\n _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);\r\n }\r\n else if (rule.selector.startsWith('@media')) {\r\n content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);\r\n }\r\n return new CssRule(selector, content);\r\n });\r\n };\r\n ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) {\r\n var r = [], parts = selector.split(',');\r\n for (var i = 0; i < parts.length; i++) {\r\n var p = parts[i].trim();\r\n var deepParts = lang_1.StringWrapper.split(p, _shadowDeepSelectors);\r\n var shallowPart = deepParts[0];\r\n if (this._selectorNeedsScoping(shallowPart, scopeSelector)) {\r\n deepParts[0] = strict && !lang_1.StringWrapper.contains(shallowPart, _polyfillHostNoCombinator) ?\r\n this._applyStrictSelectorScope(shallowPart, scopeSelector) :\r\n this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\r\n }\r\n // replace /deep/ with a space for child selectors\r\n r.push(deepParts.join(' '));\r\n }\r\n return r.join(', ');\r\n };\r\n ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) {\r\n var re = this._makeScopeMatcher(scopeSelector);\r\n return !lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(re, selector));\r\n };\r\n ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) {\r\n var lre = /\\[/g;\r\n var rre = /\\]/g;\r\n scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, lre, '\\\\[');\r\n scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, rre, '\\\\]');\r\n return lang_1.RegExpWrapper.create('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\r\n };\r\n ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) {\r\n // Difference from webcomponentsjs: scopeSelector could not be an array\r\n return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\r\n };\r\n // scope via name and [is=name]\r\n ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) {\r\n if (lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(_polyfillHostRe, selector))) {\r\n var replaceBy = this.strictStyling ? \"[\" + hostSelector + \"]\" : scopeSelector;\r\n selector = lang_1.StringWrapper.replace(selector, _polyfillHostNoCombinator, replaceBy);\r\n return lang_1.StringWrapper.replaceAll(selector, _polyfillHostRe, replaceBy + ' ');\r\n }\r\n else {\r\n return scopeSelector + ' ' + selector;\r\n }\r\n };\r\n // return a selector with [name] suffix on each simple selector\r\n // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */\r\n ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector) {\r\n var isRe = /\\[is=([^\\]]*)\\]/g;\r\n scopeSelector = lang_1.StringWrapper.replaceAllMapped(scopeSelector, isRe, function (m) { return m[1]; });\r\n var splits = [' ', '>', '+', '~'], scoped = selector, attrName = '[' + scopeSelector + ']';\r\n for (var i = 0; i < splits.length; i++) {\r\n var sep = splits[i];\r\n var parts = scoped.split(sep);\r\n scoped = parts.map(function (p) {\r\n // remove :host since it should be unnecessary\r\n var t = lang_1.StringWrapper.replaceAll(p.trim(), _polyfillHostRe, '');\r\n if (t.length > 0 && !collection_1.ListWrapper.contains(splits, t) &&\r\n !lang_1.StringWrapper.contains(t, attrName)) {\r\n var re = /([^:]*)(:*)(.*)/g;\r\n var m = lang_1.RegExpWrapper.firstMatch(re, t);\r\n if (lang_1.isPresent(m)) {\r\n p = m[1] + attrName + m[2] + m[3];\r\n }\r\n }\r\n return p;\r\n })\r\n .join(sep);\r\n }\r\n return scoped;\r\n };\r\n ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {\r\n selector = lang_1.StringWrapper.replaceAll(selector, _colonHostContextRe, _polyfillHostContext);\r\n selector = lang_1.StringWrapper.replaceAll(selector, _colonHostRe, _polyfillHost);\r\n return selector;\r\n };\r\n return ShadowCss;\r\n}());\r\nexports.ShadowCss = ShadowCss;\r\nvar _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?['\"](.*?)['\"][;\\s]*}([^{]*?){/gim;\r\nvar _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*['\"](.*?)['\"])[;\\s]*[^}]*}/gim;\r\nvar _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*['\"](.*?)['\"])[;\\s]*[^}]*}/gim;\r\nvar _polyfillHost = '-shadowcsshost';\r\n// note: :host-context pre-processed to -shadowcsshostcontext.\r\nvar _polyfillHostContext = '-shadowcsscontext';\r\nvar _parenSuffix = ')(?:\\\\((' +\r\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\r\n ')\\\\))?([^,{]*)';\r\nvar _cssColonHostRe = lang_1.RegExpWrapper.create('(' + _polyfillHost + _parenSuffix, 'im');\r\nvar _cssColonHostContextRe = lang_1.RegExpWrapper.create('(' + _polyfillHostContext + _parenSuffix, 'im');\r\nvar _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\r\nvar _shadowDOMSelectorsRe = [\r\n /::shadow/g,\r\n /::content/g,\r\n // Deprecated selectors\r\n // TODO(vicb): see https://github.com/angular/clang-format/issues/16\r\n // clang-format off\r\n /\\/shadow-deep\\//g,\r\n /\\/shadow\\//g,\r\n];\r\nvar _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)/g;\r\nvar _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\r\nvar _polyfillHostRe = lang_1.RegExpWrapper.create(_polyfillHost, 'im');\r\nvar _colonHostRe = /:host/gim;\r\nvar _colonHostContextRe = /:host-context/gim;\r\nvar _commentRe = /\\/\\*[\\s\\S]*?\\*\\//g;\r\nfunction stripComments(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, _commentRe, function (_) { return ''; });\r\n}\r\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\r\nvar _curlyRe = /([{}])/g;\r\nvar OPEN_CURLY = '{';\r\nvar CLOSE_CURLY = '}';\r\nvar BLOCK_PLACEHOLDER = '%BLOCK%';\r\nvar CssRule = (function () {\r\n function CssRule(selector, content) {\r\n this.selector = selector;\r\n this.content = content;\r\n }\r\n return CssRule;\r\n}());\r\nexports.CssRule = CssRule;\r\nfunction processRules(input, ruleCallback) {\r\n var inputWithEscapedBlocks = escapeBlocks(input);\r\n var nextBlockIndex = 0;\r\n return lang_1.StringWrapper.replaceAllMapped(inputWithEscapedBlocks.escapedString, _ruleRe, function (m) {\r\n var selector = m[2];\r\n var content = '';\r\n var suffix = m[4];\r\n var contentPrefix = '';\r\n if (lang_1.isPresent(m[4]) && m[4].startsWith('{' + BLOCK_PLACEHOLDER)) {\r\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\r\n suffix = m[4].substring(BLOCK_PLACEHOLDER.length + 1);\r\n contentPrefix = '{';\r\n }\r\n var rule = ruleCallback(new CssRule(selector, content));\r\n return \"\" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;\r\n });\r\n}\r\nexports.processRules = processRules;\r\nvar StringWithEscapedBlocks = (function () {\r\n function StringWithEscapedBlocks(escapedString, blocks) {\r\n this.escapedString = escapedString;\r\n this.blocks = blocks;\r\n }\r\n return StringWithEscapedBlocks;\r\n}());\r\nfunction escapeBlocks(input) {\r\n var inputParts = lang_1.StringWrapper.split(input, _curlyRe);\r\n var resultParts = [];\r\n var escapedBlocks = [];\r\n var bracketCount = 0;\r\n var currentBlockParts = [];\r\n for (var partIndex = 0; partIndex < inputParts.length; partIndex++) {\r\n var part = inputParts[partIndex];\r\n if (part == CLOSE_CURLY) {\r\n bracketCount--;\r\n }\r\n if (bracketCount > 0) {\r\n currentBlockParts.push(part);\r\n }\r\n else {\r\n if (currentBlockParts.length > 0) {\r\n escapedBlocks.push(currentBlockParts.join(''));\r\n resultParts.push(BLOCK_PLACEHOLDER);\r\n currentBlockParts = [];\r\n }\r\n resultParts.push(part);\r\n }\r\n if (part == OPEN_CURLY) {\r\n bracketCount++;\r\n }\r\n }\r\n if (currentBlockParts.length > 0) {\r\n escapedBlocks.push(currentBlockParts.join(''));\r\n resultParts.push(BLOCK_PLACEHOLDER);\r\n }\r\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93X2Nzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9zaGFkb3dfY3NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMzRCxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxDOzs7Ozs7Ozs7R0FTRztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlIRTtBQUVGO0lBR0U7UUFGQSxrQkFBYSxHQUFZLElBQUksQ0FBQztJQUVmLENBQUM7SUFFaEI7Ozs7Ozs7TUFPRTtJQUNGLCtCQUFXLEdBQVgsVUFBWSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxZQUF5QjtRQUF6Qiw0QkFBeUIsR0FBekIsaUJBQXlCO1FBQ3RFLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxxQ0FBaUIsR0FBekIsVUFBMEIsT0FBZTtRQUN2QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSyxzREFBa0MsR0FBMUMsVUFBMkMsT0FBZTtRQUN4RCw2REFBNkQ7UUFD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QUFDO2dCQUNqQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3BDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsWUFBWSxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIFN0cmluZ1dyYXBwZXIsXG4gIFJlZ0V4cCxcbiAgUmVnRXhwV3JhcHBlcixcbiAgUmVnRXhwTWF0Y2hlcldyYXBwZXIsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFua1xufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIFRoaXMgZmlsZSBpcyBhIHBvcnQgb2Ygc2hhZG93Q1NTIGZyb20gd2ViY29tcG9uZW50cy5qcyB0byBUeXBlU2NyaXB0LlxuICpcbiAqIFBsZWFzZSBtYWtlIHN1cmUgdG8ga2VlcCB0byBlZGl0cyBpbiBzeW5jIHdpdGggdGhlIHNvdXJjZSBmaWxlLlxuICpcbiAqIFNvdXJjZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3dlYmNvbXBvbmVudHNqcy9ibG9iLzRlZmVjZDdlMGUvc3JjL1NoYWRvd0NTUy9TaGFkb3dDU1MuanNcbiAqXG4gKiBUaGUgb3JpZ2luYWwgZmlsZSBsZXZlbCBjb21tZW50IGlzIHJlcHJvZHVjZWQgYmVsb3dcbiAqL1xuXG4vKlxuICBUaGlzIGlzIGEgbGltaXRlZCBzaGltIGZvciBTaGFkb3dET00gY3NzIHN0eWxpbmcuXG4gIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbCNzdHlsZXNcblxuICBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gc3VwcG9ydCBvbmx5IHRoZSBzdHlsaW5nIGZlYXR1cmVzIHdoaWNoIGNhbiBiZVxuICByZWxhdGl2ZWx5IHNpbXBseSBpbXBsZW1lbnRlZC4gVGhlIGdvYWwgaXMgdG8gYWxsb3cgdXNlcnMgdG8gYXZvaWQgdGhlXG4gIG1vc3Qgb2J2aW91cyBwaXRmYWxscyBhbmQgZG8gc28gd2l0aG91dCBjb21wcm9taXNpbmcgcGVyZm9ybWFuY2Ugc2lnbmlmaWNhbnRseS5cbiAgRm9yIFNoYWRvd0RPTSBzdHlsaW5nIHRoYXQncyBub3QgY292ZXJlZCBoZXJlLCBhIHNldCBvZiBiZXN0IHByYWN0aWNlc1xuICBjYW4gYmUgcHJvdmlkZWQgdGhhdCBzaG91bGQgYWxsb3cgdXNlcnMgdG8gYWNjb21wbGlzaCBtb3JlIGNvbXBsZXggc3R5bGluZy5cblxuICBUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiBzcGVjaWZpYyBTaGFkb3dET00gc3R5bGluZyBmZWF0dXJlcyBhbmQgYSBicmllZlxuICBkaXNjdXNzaW9uIG9mIHRoZSBhcHByb2FjaCB1c2VkIHRvIHNoaW0uXG5cbiAgU2hpbW1lZCBmZWF0dXJlczpcblxuICAqIDpob3N0LCA6aG9zdC1jb250ZXh0OiBTaGFkb3dET00gYWxsb3dzIHN0eWxpbmcgb2YgdGhlIHNoYWRvd1Jvb3QncyBob3N0XG4gIGVsZW1lbnQgdXNpbmcgdGhlIDpob3N0IHJ1bGUuIFRvIHNoaW0gdGhpcyBmZWF0dXJlLCB0aGUgOmhvc3Qgc3R5bGVzIGFyZVxuICByZWZvcm1hdHRlZCBhbmQgcHJlZml4ZWQgd2l0aCBhIGdpdmVuIHNjb3BlIG5hbWUgYW5kIHByb21vdGVkIHRvIGFcbiAgZG9jdW1lbnQgbGV2ZWwgc3R5bGVzaGVldC5cbiAgRm9yIGV4YW1wbGUsIGdpdmVuIGEgc2NvcGUgbmFtZSBvZiAuZm9vLCBhIHJ1bGUgbGlrZSB0aGlzOlxuXG4gICAgOmhvc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gIGJlY29tZXM6XG5cbiAgICAuZm9vIHtcbiAgICAgIGJhY2tncm91bmQ6IHJlZDtcbiAgICB9XG5cbiAgKiBlbmNhcHN1bHRpb246IFN0eWxlcyBkZWZpbmVkIHdpdGhpbiBTaGFkb3dET00sIGFwcGx5IG9ubHkgdG9cbiAgZG9tIGluc2lkZSB0aGUgU2hhZG93RE9NLiBQb2x5bWVyIHVzZXMgb25lIG9mIHR3byB0ZWNobmlxdWVzIHRvIGltcGxlbWVudFxuICB0aGlzIGZlYXR1cmUuXG5cbiAgQnkgZGVmYXVsdCwgcnVsZXMgYXJlIHByZWZpeGVkIHdpdGggdGhlIGhvc3QgZWxlbWVudCB0YWcgbmFtZVxuICBhcyBhIGRlc2NlbmRhbnQgc2VsZWN0b3IuIFRoaXMgZW5zdXJlcyBzdHlsaW5nIGRvZXMgbm90IGxlYWsgb3V0IG9mIHRoZSAndG9wJ1xuICBvZiB0aGUgZWxlbWVudCdzIFNoYWRvd0RPTS4gRm9yIGV4YW1wbGUsXG5cbiAgZGl2IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICBiZWNvbWVzOlxuXG4gIHgtZm9vIGRpdiB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgYmVjb21lczpcblxuXG4gIEFsdGVybmF0aXZlbHksIGlmIFdlYkNvbXBvbmVudHMuU2hhZG93Q1NTLnN0cmljdFN0eWxpbmcgaXMgc2V0IHRvIHRydWUgdGhlblxuICBzZWxlY3RvcnMgYXJlIHNjb3BlZCBieSBhZGRpbmcgYW4gYXR0cmlidXRlIHNlbGVjdG9yIHN1ZmZpeCB0byBlYWNoXG4gIHNpbXBsZSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHRoZSBob3N0IGVsZW1lbnQgdGFnIG5hbWUuIEVhY2ggZWxlbWVudFxuICBpbiB0aGUgZWxlbWVudCdzIFNoYWRvd0RPTSB0ZW1wbGF0ZSBpcyBhbHNvIGdpdmVuIHRoZSBzY29wZSBhdHRyaWJ1dGUuXG4gIFRodXMsIHRoZXNlIHJ1bGVzIG1hdGNoIG9ubHkgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSBzY29wZSBhdHRyaWJ1dGUuXG4gIEZvciBleGFtcGxlLCBnaXZlbiBhIHNjb3BlIG5hbWUgb2YgeC1mb28sIGEgcnVsZSBsaWtlIHRoaXM6XG5cbiAgICBkaXYge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gIGJlY29tZXM6XG5cbiAgICBkaXZbeC1mb29dIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICBOb3RlIHRoYXQgZWxlbWVudHMgdGhhdCBhcmUgZHluYW1pY2FsbHkgYWRkZWQgdG8gYSBzY29wZSBtdXN0IGhhdmUgdGhlIHNjb3BlXG4gIHNlbGVjdG9yIGFkZGVkIHRvIHRoZW0gbWFudWFsbHkuXG5cbiAgKiB1cHBlci9sb3dlciBib3VuZCBlbmNhcHN1bGF0aW9uOiBTdHlsZXMgd2hpY2ggYXJlIGRlZmluZWQgb3V0c2lkZSBhXG4gIHNoYWRvd1Jvb3Qgc2hvdWxkIG5vdCBjcm9zcyB0aGUgU2hhZG93RE9NIGJvdW5kYXJ5IGFuZCBzaG91bGQgbm90IGFwcGx5XG4gIGluc2lkZSBhIHNoYWRvd1Jvb3QuXG5cbiAgVGhpcyBzdHlsaW5nIGJlaGF2aW9yIGlzIG5vdCBlbXVsYXRlZC4gU29tZSBwb3NzaWJsZSB3YXlzIHRvIGRvIHRoaXMgdGhhdFxuICB3ZXJlIHJlamVjdGVkIGR1ZSB0byBjb21wbGV4aXR5IGFuZC9vciBwZXJmb3JtYW5jZSBjb25jZXJucyBpbmNsdWRlOiAoMSkgcmVzZXRcbiAgZXZlcnkgcG9zc2libGUgcHJvcGVydHkgZm9yIGV2ZXJ5IHBvc3NpYmxlIHNlbGVjdG9yIGZvciBhIGdpdmVuIHNjb3BlIG5hbWU7XG4gICgyKSByZS1pbXBsZW1lbnQgY3NzIGluIGphdmFzY3JpcHQuXG5cbiAgQXMgYW4gYWx0ZXJuYXRpdmUsIHVzZXJzIHNob3VsZCBtYWtlIHN1cmUgdG8gdXNlIHNlbGVjdG9yc1xuICBzcGVjaWZpYyB0byB0aGUgc2NvcGUgaW4gd2hpY2ggdGhleSBhcmUgd29ya2luZy5cblxuICAqIDo6ZGlzdHJpYnV0ZWQ6IFRoaXMgYmVoYXZpb3IgaXMgbm90IGVtdWxhdGVkLiBJdCdzIG9mdGVuIG5vdCBuZWNlc3NhcnlcbiAgdG8gc3R5bGUgdGhlIGNvbnRlbnRzIG9mIGEgc3BlY2lmaWMgaW5zZXJ0aW9uIHBvaW50IGFuZCBpbnN0ZWFkLCBkZXNjZW5kYW50c1xuICBvZiB0aGUgaG9zdCBlbGVtZW50IGNhbiBiZSBzdHlsZWQgc2VsZWN0aXZlbHkuIFVzZXJzIGNhbiBhbHNvIGNyZWF0ZSBhblxuICBleHRyYSBub2RlIGFyb3VuZCBhbiBpbnNlcnRpb24gcG9pbnQgYW5kIHN0eWxlIHRoYXQgbm9kZSdzIGNvbnRlbnRzXG4gIHZpYSBkZXNjZW5kZW50IHNlbGVjdG9ycy4gRm9yIGV4YW1wbGUsIHdpdGggYSBzaGFkb3dSb290IGxpa2UgdGhpczpcblxuICAgIDxzdHlsZT5cbiAgICAgIDo6Y29udGVudChkaXYpIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmVkO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gICAgPGNvbnRlbnQ+PC9jb250ZW50PlxuXG4gIGNvdWxkIGJlY29tZTpcblxuICAgIDxzdHlsZT5cbiAgICAgIC8gKkBwb2x5ZmlsbCAuY29udGVudC1jb250YWluZXIgZGl2ICogL1xuICAgICAgOjpjb250ZW50KGRpdikge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7XG4gICAgICB9XG4gICAgPC9zdHlsZT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jb250YWluZXJcIj5cbiAgICAgIDxjb250ZW50PjwvY29udGVudD5cbiAgICA8L2Rpdj5cblxuICBOb3RlIHRoZSB1c2Ugb2YgQHBvbHlmaWxsIGluIHRoZSBjb21tZW50IGFib3ZlIGEgU2hhZG93RE9NIHNwZWNpZmljIHN0eWxlXG4gIGRlY2xhcmF0aW9uLiBUaGlzIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBzdHlsaW5nIHNoaW0gdG8gdXNlIHRoZSBzZWxlY3RvclxuICBpbiBjb21tZW50cyBpbiBsaWV1IG9mIHRoZSBuZXh0IHNlbGVjdG9yIHdoZW4gcnVubmluZyB1bmRlciBwb2x5ZmlsbC5cbiovXG5cbmV4cG9ydCBjbGFzcyBTaGFkb3dDc3Mge1xuICBzdHJpY3RTdHlsaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLypcbiAgKiBTaGltIHNvbWUgY3NzVGV4dCB3aXRoIHRoZSBnaXZlbiBzZWxlY3Rvci4gUmV0dXJucyBjc3NUZXh0IHRoYXQgY2FuXG4gICogYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50IHZpYSBXZWJDb21wb25lbnRzLlNoYWRvd0NTUy5hZGRDc3NUb0RvY3VtZW50KGNzcykuXG4gICpcbiAgKiBXaGVuIHN0cmljdFN0eWxpbmcgaXMgdHJ1ZTpcbiAgKiAtIHNlbGVjdG9yIGlzIHRoZSBhdHRyaWJ1dGUgYWRkZWQgdG8gYWxsIGVsZW1lbnRzIGluc2lkZSB0aGUgaG9zdCxcbiAgKiAtIGhvc3RTZWxlY3RvciBpcyB0aGUgYXR0cmlidXRlIGFkZGVkIHRvIHRoZSBob3N0IGl0c2VsZi5cbiAgKi9cbiAgc2hpbUNzc1RleHQoY3NzVGV4dDogc3RyaW5nLCBzZWxlY3Rvcjogc3RyaW5nLCBob3N0U2VsZWN0b3I6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBjc3NUZXh0ID0gc3RyaXBDb21tZW50cyhjc3NUZXh0KTtcbiAgICBjc3NUZXh0ID0gdGhpcy5faW5zZXJ0RGlyZWN0aXZlcyhjc3NUZXh0KTtcbiAgICByZXR1cm4gdGhpcy5fc2NvcGVDc3NUZXh0KGNzc1RleHQsIHNlbGVjdG9yLCBob3N0U2VsZWN0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5zZXJ0RGlyZWN0aXZlcyhjc3NUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNzc1RleHQgPSB0aGlzLl9pbnNlcnRQb2x5ZmlsbERpcmVjdGl2ZXNJbkNzc1RleHQoY3NzVGV4dCk7XG4gICAgcmV0dXJuIHRoaXMuX2luc2VydFBvbHlmaWxsUnVsZXNJbkNzc1RleHQoY3NzVGV4dCk7XG4gIH1cblxuICAvKlxuICAgKiBQcm9jZXNzIHN0eWxlcyB0byBjb252ZXJ0IG5hdGl2ZSBTaGFkb3dET00gcnVsZXMgdGhhdCB3aWxsIHRyaXBcbiAgICogdXAgdGhlIGNzcyBwYXJzZXI7IHdlIHJlbHkgb24gZGVjb3JhdGluZyB0aGUgc3R5bGVzaGVldCB3aXRoIGluZXJ0IHJ1bGVzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgd2UgY29udmVydCB0aGlzIHJ1bGU6XG4gICAqXG4gICAqIHBvbHlmaWxsLW5leHQtc2VsZWN0b3IgeyBjb250ZW50OiAnOmhvc3QgbWVudS1pdGVtJzsgfVxuICAgKiA6OmNvbnRlbnQgbWVudS1pdGVtIHtcbiAgICpcbiAgICogdG8gdGhpczpcbiAgICpcbiAgICogc2NvcGVOYW1lIG1lbnUtaXRlbSB7XG4gICAqXG4gICoqL1xuICBwcml2YXRlIF9pbnNlcnRQb2x5ZmlsbERpcmVjdGl2ZXNJbkNzc1RleHQoY3NzVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBEaWZmZXJlbmNlIHdpdGggd2ViY29tcG9uZW50cy5qczogZG9lcyBub3QgaGFuZGxlIGNvbW1lbnRzXG4gICAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChjc3NUZXh0LCBfY3NzQ29udGVudE5leHRTZWxlY3RvclJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24obSkgeyByZXR1cm4gbVsxXSArICd7JzsgfSk7XG4gIH1cblxuICAvKlxuICAgKiBQcm9jZXNzIHN0eWxlcyB0byBhZGQgcnVsZXMgd2hpY2ggd2lsbCBvbmx5IGFwcGx5IHVuZGVyIHRoZSBwb2x5ZmlsbFxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgd2UgY29udmVydCB0aGlzIHJ1bGU6XG4gICAqXG4gICAqIHBvbHlmaWxsLXJ1bGUge1xuICAgKiAgIGNvbnRlbnQ6ICc6aG9zdCBtZW51LWl0ZW0nO1xuICAgKiAuLi5cbiAgICogfVxuICAgKlxuICAgKiB0byB0aGlzOlxuICAgKlxuICAgKiBzY29wZU5hbWUgbWVudS1pdGVtIHsuLi59XG4gICAqXG4gICoqL1xuICBwcml2YXRlIF9pbnNlcnRQb2x5ZmlsbFJ1bGVzSW5Dc3NUZXh0KGNzc1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gRGlmZmVyZW5jZSB3aXRoIHdlYmNvbXBvbmVudHMuanM6IGRvZXMgbm90IGhhbmRsZSBjb21tZW50c1xuICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoY3NzVGV4dCwgX2Nzc0NvbnRlbnRSdWxlUmUsIGZ1bmN0aW9uKG0pIHtcbiAgICAgIHZhciBydWxlID0gbVswXTtcbiAgICAgIHJ1bGUgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2UocnVsZSwgbVsxXSwgJycpO1xuICAgICAgcnVsZSA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZShydWxlLCBtWzJdLCAnJyk7XG4gICAgICByZXR1cm4gbVszXSArIHJ1bGU7XG4gICAgfSk7XG4gIH1cblxuICAvKiBFbnN1cmUgc3R5bGVzIGFyZSBzY29wZWQuIFBzZXVkby1zY29waW5nIHRha2VzIGEgcnVsZSBsaWtlOlxuICAgKlxuICAgKiAgLmZvbyB7Li4uIH1cbiAgICpcbiAgICogIGFuZCBjb252ZXJ0cyB0aGlzIHRvXG4gICAqXG4gICAqICBzY29wZU5hbWUgLmZvbyB7IC4uLiB9XG4gICovXG4gIHByaXZhdGUgX3Njb3BlQ3NzVGV4dChjc3NUZXh0OiBzdHJpbmcsIHNjb3BlU2VsZWN0b3I6IHN0cmluZywgaG9zdFNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHZhciB1bnNjb3BlZCA9IHRoaXMuX2V4dHJhY3RVbnNjb3BlZFJ1bGVzRnJvbUNzc1RleHQoY3NzVGV4dCk7XG4gICAgY3NzVGV4dCA9IHRoaXMuX2luc2VydFBvbHlmaWxsSG9zdEluQ3NzVGV4dChjc3NUZXh0KTtcbiAgICBjc3NUZXh0ID0gdGhpcy5fY29udmVydENvbG9uSG9zdChjc3NUZXh0KTtcbiAgICBjc3NUZXh0ID0gdGhpcy5fY29udmVydENvbG9uSG9zdENvbnRleHQoY3NzVGV4dCk7XG4gICAgY3NzVGV4dCA9IHRoaXMuX2NvbnZlcnRTaGFkb3dET01TZWxlY3RvcnMoY3NzVGV4dCk7XG4gICAgaWYgKGlzUHJlc2VudChzY29wZVNlbGVjdG9yKSkge1xuICAgICAgY3NzVGV4dCA9IHRoaXMuX3Njb3BlU2VsZWN0b3JzKGNzc1RleHQsIHNjb3BlU2VsZWN0b3IsIGhvc3RTZWxlY3Rvcik7XG4gICAgfVxuICAgIGNzc1RleHQgPSBjc3NUZXh0ICsgJ1xcbicgKyB1bnNjb3BlZDtcbiAgICByZXR1cm4gY3NzVGV4dC50cmltKCk7XG4gIH1cblxuICAvKlxuICAgKiBQcm9jZXNzIHN0eWxlcyB0byBhZGQgcnVsZXMgd2hpY2ggd2lsbCBvbmx5IGFwcGx5IHVuZGVyIHRoZSBwb2x5ZmlsbFxuICAgKiBhbmQgZG8gbm90IHByb2Nlc3MgdmlhIENTU09NLiAoQ1NTT00gaXMgZGVzdHJ1Y3RpdmUgdG8gcnVsZXMgb24gcmFyZVxuICAgKiBvY2Nhc2lvbnMsIGUuZy4gLXdlYmtpdC1jYWxjIG9uIFNhZmFyaS4pXG4gICAqIEZvciBleGFtcGxlLCB3ZSBjb252ZXJ0IHRoaXMgcnVsZTpcbiAgICpcbiAgICogQHBvbHlmaWxsLXVuc2NvcGVkLXJ1bGUge1xuICAgKiAgIGNvbnRlbnQ6ICdtZW51LWl0ZW0nO1xuICAgKiAuLi4gfVxuICAgKlxuICAgKiB0byB0aGlzOlxuICAgKlxuICAgKiBtZW51LWl0ZW0gey4uLn1cbiAgICpcbiAgKiovXG4gIHByaXZhdGUgX2V4dHJhY3RVbnNjb3BlZFJ1bGVzRnJvbUNzc1RleHQoY3NzVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBEaWZmZXJlbmNlIHdpdGggd2ViY29tcG9uZW50cy5qczogZG9lcyBub3QgaGFuZGxlIGNvbW1lbnRzXG4gICAgdmFyIHIgPSAnJywgbTtcbiAgICB2YXIgbWF0Y2hlciA9IFJlZ0V4cFdyYXBwZXIubWF0Y2hlcihfY3NzQ29udGVudFVuc2NvcGVkUnVsZVJlLCBjc3NUZXh0KTtcbiAgICB3aGlsZSAoaXNQcmVzZW50KG0gPSBSZWdFeHBNYXRjaGVyV3JhcHBlci5uZXh0KG1hdGNoZXIpKSkge1xuICAgICAgdmFyIHJ1bGUgPSBtWzBdO1xuICAgICAgcnVsZSA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZShydWxlLCBtWzJdLCAnJyk7XG4gICAgICBydWxlID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlKHJ1bGUsIG1bMV0sIG1bM10pO1xuICAgICAgciArPSBydWxlICsgJ1xcblxcbic7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgLypcbiAgICogY29udmVydCBhIHJ1bGUgbGlrZSA6aG9zdCguZm9vKSA+IC5iYXIgeyB9XG4gICAqXG4gICAqIHRvXG4gICAqXG4gICAqIHNjb3BlTmFtZS5mb28gPiAuYmFyXG4gICovXG4gIHByaXZhdGUgX2NvbnZlcnRDb2xvbkhvc3QoY3NzVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udmVydENvbG9uUnVsZShjc3NUZXh0LCBfY3NzQ29sb25Ib3N0UmUsIHRoaXMuX2NvbG9uSG9zdFBhcnRSZXBsYWNlcik7XG4gIH1cblxuICAvKlxuICAgKiBjb252ZXJ0IGEgcnVsZSBsaWtlIDpob3N0LWNvbnRleHQoLmZvbykgPiAuYmFyIHsgfVxuICAgKlxuICAgKiB0b1xuICAgKlxuICAgKiBzY29wZU5hbWUuZm9vID4gLmJhciwgLmZvbyBzY29wZU5hbWUgPiAuYmFyIHsgfVxuICAgKlxuICAgKiBhbmRcbiAgICpcbiAgICogOmhvc3QtY29udGV4dCguZm9vOmhvc3QpIC5iYXIgeyAuLi4gfVxuICAgKlxuICAgKiB0b1xuICAgKlxuICAgKiBzY29wZU5hbWUuZm9vIC5iYXIgeyAuLi4gfVxuICAqL1xuICBwcml2YXRlIF9jb252ZXJ0Q29sb25Ib3N0Q29udGV4dChjc3NUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb252ZXJ0Q29sb25SdWxlKGNzc1RleHQsIF9jc3NDb2xvbkhvc3RDb250ZXh0UmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29sb25Ib3N0Q29udGV4dFBhcnRSZXBsYWNlcik7XG4gIH1cblxuICBwcml2YXRlIF9jb252ZXJ0Q29sb25SdWxlKGNzc1RleHQ6IHN0cmluZywgcmVnRXhwOiBSZWdFeHAsIHBhcnRSZXBsYWNlcjogRnVuY3Rpb24pOiBzdHJpbmcge1xuICAgIC8vIHAxID0gOmhvc3QsIHAyID0gY29udGVudHMgb2YgKCksIHAzIHJlc3Qgb2YgcnVsZVxuICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoY3NzVGV4dCwgcmVnRXhwLCBmdW5jdGlvbihtKSB7XG4gICAgICBpZiAoaXNQcmVzZW50KG1bMl0pKSB7XG4gICAgICAgIHZhciBwYXJ0cyA9IG1bMl0uc3BsaXQoJywnKSwgciA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHAgPSBwYXJ0c1tpXTtcbiAgICAgICAgICBpZiAoaXNCbGFuayhwKSkgYnJlYWs7XG4gICAgICAgICAgcCA9IHAudHJpbSgpO1xuICAgICAgICAgIHIucHVzaChwYXJ0UmVwbGFjZXIoX3BvbHlmaWxsSG9zdE5vQ29tYmluYXRvciwgcCwgbVszXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByLmpvaW4oJywnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBfcG9seWZpbGxIb3N0Tm9Db21iaW5hdG9yICsgbVszXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbG9uSG9zdENvbnRleHRQYXJ0UmVwbGFjZXIoaG9zdDogc3RyaW5nLCBwYXJ0OiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoU3RyaW5nV3JhcHBlci5jb250YWlucyhwYXJ0LCBfcG9seWZpbGxIb3N0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbG9uSG9zdFBhcnRSZXBsYWNlcihob3N0LCBwYXJ0LCBzdWZmaXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaG9zdCArIHBhcnQgKyBzdWZmaXggKyAnLCAnICsgcGFydCArICcgJyArIGhvc3QgKyBzdWZmaXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29sb25Ib3N0UGFydFJlcGxhY2VyKGhvc3Q6IHN0cmluZywgcGFydDogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhvc3QgKyBTdHJpbmdXcmFwcGVyLnJlcGxhY2UocGFydCwgX3BvbHlmaWxsSG9zdCwgJycpICsgc3VmZml4O1xuICB9XG5cbiAgLypcbiAgICogQ29udmVydCBjb21iaW5hdG9ycyBsaWtlIDo6c2hhZG93IGFuZCBwc2V1ZG8tZWxlbWVudHMgbGlrZSA6OmNvbnRlbnRcbiAgICogYnkgcmVwbGFjaW5nIHdpdGggc3BhY2UuXG4gICovXG4gIHByaXZhdGUgX2NvbnZlcnRTaGFkb3dET01TZWxlY3RvcnMoY3NzVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9zaGFkb3dET01TZWxlY3RvcnNSZS5sZW5ndGg7IGkrKykge1xuICAgICAgY3NzVGV4dCA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChjc3NUZXh0LCBfc2hhZG93RE9NU2VsZWN0b3JzUmVbaV0sICcgJyk7XG4gICAgfVxuICAgIHJldHVybiBjc3NUZXh0O1xuICB9XG5cbiAgLy8gY2hhbmdlIGEgc2VsZWN0b3IgbGlrZSAnZGl2JyB0byAnbmFtZSBkaXYnXG4gIHByaXZhdGUgX3Njb3BlU2VsZWN0b3JzKGNzc1RleHQ6IHN0cmluZywgc2NvcGVTZWxlY3Rvcjogc3RyaW5nLCBob3N0U2VsZWN0b3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHByb2Nlc3NSdWxlcyhjc3NUZXh0LCAocnVsZTogQ3NzUnVsZSkgPT4ge1xuICAgICAgdmFyIHNlbGVjdG9yID0gcnVsZS5zZWxlY3RvcjtcbiAgICAgIHZhciBjb250ZW50ID0gcnVsZS5jb250ZW50O1xuICAgICAgaWYgKHJ1bGUuc2VsZWN0b3JbMF0gIT0gJ0AnIHx8IHJ1bGUuc2VsZWN0b3Iuc3RhcnRzV2l0aCgnQHBhZ2UnKSkge1xuICAgICAgICBzZWxlY3RvciA9XG4gICAgICAgICAgICB0aGlzLl9zY29wZVNlbGVjdG9yKHJ1bGUuc2VsZWN0b3IsIHNjb3BlU2VsZWN0b3IsIGhvc3RTZWxlY3RvciwgdGhpcy5zdHJpY3RTdHlsaW5nKTtcbiAgICAgIH0gZWxzZSBpZiAocnVsZS5zZWxlY3Rvci5zdGFydHNXaXRoKCdAbWVkaWEnKSkge1xuICAgICAgICBjb250ZW50ID0gdGhpcy5fc2NvcGVTZWxlY3RvcnMocnVsZS5jb250ZW50LCBzY29wZVNlbGVjdG9yLCBob3N0U2VsZWN0b3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDc3NSdWxlKHNlbGVjdG9yLCBjb250ZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3Njb3BlU2VsZWN0b3Ioc2VsZWN0b3I6IHN0cmluZywgc2NvcGVTZWxlY3Rvcjogc3RyaW5nLCBob3N0U2VsZWN0b3I6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHZhciByID0gW10sIHBhcnRzID0gc2VsZWN0b3Iuc3BsaXQoJywnKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHBhcnRzW2ldLnRyaW0oKTtcbiAgICAgIHZhciBkZWVwUGFydHMgPSBTdHJpbmdXcmFwcGVyLnNwbGl0KHAsIF9zaGFkb3dEZWVwU2VsZWN0b3JzKTtcbiAgICAgIHZhciBzaGFsbG93UGFydCA9IGRlZXBQYXJ0c1swXTtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3Rvck5lZWRzU2NvcGluZyhzaGFsbG93UGFydCwgc2NvcGVTZWxlY3RvcikpIHtcbiAgICAgICAgZGVlcFBhcnRzWzBdID0gc3RyaWN0ICYmICFTdHJpbmdXcmFwcGVyLmNvbnRhaW5zKHNoYWxsb3dQYXJ0LCBfcG9seWZpbGxIb3N0Tm9Db21iaW5hdG9yKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVN0cmljdFNlbGVjdG9yU2NvcGUoc2hhbGxvd1BhcnQsIHNjb3BlU2VsZWN0b3IpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5U2VsZWN0b3JTY29wZShzaGFsbG93UGFydCwgc2NvcGVTZWxlY3RvciwgaG9zdFNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICAgIC8vIHJlcGxhY2UgL2RlZXAvIHdpdGggYSBzcGFjZSBmb3IgY2hpbGQgc2VsZWN0b3JzXG4gICAgICByLnB1c2goZGVlcFBhcnRzLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIHJldHVybiByLmpvaW4oJywgJyk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3Rvck5lZWRzU2NvcGluZyhzZWxlY3Rvcjogc3RyaW5nLCBzY29wZVNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB2YXIgcmUgPSB0aGlzLl9tYWtlU2NvcGVNYXRjaGVyKHNjb3BlU2VsZWN0b3IpO1xuICAgIHJldHVybiAhaXNQcmVzZW50KFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChyZSwgc2VsZWN0b3IpKTtcbiAgfVxuXG4gIHByaXZhdGUgX21ha2VTY29wZU1hdGNoZXIoc2NvcGVTZWxlY3Rvcjogc3RyaW5nKTogUmVnRXhwIHtcbiAgICB2YXIgbHJlID0gL1xcWy9nO1xuICAgIHZhciBycmUgPSAvXFxdL2c7XG4gICAgc2NvcGVTZWxlY3RvciA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChzY29wZVNlbGVjdG9yLCBscmUsICdcXFxcWycpO1xuICAgIHNjb3BlU2VsZWN0b3IgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoc2NvcGVTZWxlY3RvciwgcnJlLCAnXFxcXF0nKTtcbiAgICByZXR1cm4gUmVnRXhwV3JhcHBlci5jcmVhdGUoJ14oJyArIHNjb3BlU2VsZWN0b3IgKyAnKScgKyBfc2VsZWN0b3JSZVN1ZmZpeCwgJ20nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5U2VsZWN0b3JTY29wZShzZWxlY3Rvcjogc3RyaW5nLCBzY29wZVNlbGVjdG9yOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0U2VsZWN0b3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gRGlmZmVyZW5jZSBmcm9tIHdlYmNvbXBvbmVudHNqczogc2NvcGVTZWxlY3RvciBjb3VsZCBub3QgYmUgYW4gYXJyYXlcbiAgICByZXR1cm4gdGhpcy5fYXBwbHlTaW1wbGVTZWxlY3RvclNjb3BlKHNlbGVjdG9yLCBzY29wZVNlbGVjdG9yLCBob3N0U2VsZWN0b3IpO1xuICB9XG5cbiAgLy8gc2NvcGUgdmlhIG5hbWUgYW5kIFtpcz1uYW1lXVxuICBwcml2YXRlIF9hcHBseVNpbXBsZVNlbGVjdG9yU2NvcGUoc2VsZWN0b3I6IHN0cmluZywgc2NvcGVTZWxlY3Rvcjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc1ByZXNlbnQoUmVnRXhwV3JhcHBlci5maXJzdE1hdGNoKF9wb2x5ZmlsbEhvc3RSZSwgc2VsZWN0b3IpKSkge1xuICAgICAgdmFyIHJlcGxhY2VCeSA9IHRoaXMuc3RyaWN0U3R5bGluZyA/IGBbJHtob3N0U2VsZWN0b3J9XWAgOiBzY29wZVNlbGVjdG9yO1xuICAgICAgc2VsZWN0b3IgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2Uoc2VsZWN0b3IsIF9wb2x5ZmlsbEhvc3ROb0NvbWJpbmF0b3IsIHJlcGxhY2VCeSk7XG4gICAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHNlbGVjdG9yLCBfcG9seWZpbGxIb3N0UmUsIHJlcGxhY2VCeSArICcgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzY29wZVNlbGVjdG9yICsgJyAnICsgc2VsZWN0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIGEgc2VsZWN0b3Igd2l0aCBbbmFtZV0gc3VmZml4IG9uIGVhY2ggc2ltcGxlIHNlbGVjdG9yXG4gIC8vIGUuZy4gLmZvby5iYXIgPiAuem90IGJlY29tZXMgLmZvb1tuYW1lXS5iYXJbbmFtZV0gPiAuem90W25hbWVdICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX2FwcGx5U3RyaWN0U2VsZWN0b3JTY29wZShzZWxlY3Rvcjogc3RyaW5nLCBzY29wZVNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHZhciBpc1JlID0gL1xcW2lzPShbXlxcXV0qKVxcXS9nO1xuICAgIHNjb3BlU2VsZWN0b3IgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoc2NvcGVTZWxlY3RvciwgaXNSZSwgKG0pID0+IG1bMV0pO1xuICAgIHZhciBzcGxpdHMgPSBbJyAnLCAnPicsICcrJywgJ34nXSwgc2NvcGVkID0gc2VsZWN0b3IsIGF0dHJOYW1lID0gJ1snICsgc2NvcGVTZWxlY3RvciArICddJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwbGl0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlcCA9IHNwbGl0c1tpXTtcbiAgICAgIHZhciBwYXJ0cyA9IHNjb3BlZC5zcGxpdChzZXApO1xuICAgICAgc2NvcGVkID0gcGFydHMubWFwKHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSA6aG9zdCBzaW5jZSBpdCBzaG91bGQgYmUgdW5uZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChwLnRyaW0oKSwgX3BvbHlmaWxsSG9zdFJlLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHQubGVuZ3RoID4gMCAmJiAhTGlzdFdyYXBwZXIuY29udGFpbnMoc3BsaXRzLCB0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhU3RyaW5nV3JhcHBlci5jb250YWlucyh0LCBhdHRyTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZSA9IC8oW146XSopKDoqKSguKikvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gUmVnRXhwV3JhcHBlci5maXJzdE1hdGNoKHJlLCB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1ByZXNlbnQobSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG1bMV0gKyBhdHRyTmFtZSArIG1bMl0gKyBtWzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAuam9pbihzZXApO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5zZXJ0UG9seWZpbGxIb3N0SW5Dc3NUZXh0KHNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHNlbGVjdG9yID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHNlbGVjdG9yLCBfY29sb25Ib3N0Q29udGV4dFJlLCBfcG9seWZpbGxIb3N0Q29udGV4dCk7XG4gICAgc2VsZWN0b3IgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoc2VsZWN0b3IsIF9jb2xvbkhvc3RSZSwgX3BvbHlmaWxsSG9zdCk7XG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG59XG52YXIgX2Nzc0NvbnRlbnROZXh0U2VsZWN0b3JSZSA9XG4gICAgL3BvbHlmaWxsLW5leHQtc2VsZWN0b3JbXn1dKmNvbnRlbnQ6W1xcc10qP1snXCJdKC4qPylbJ1wiXVs7XFxzXSp9KFtee10qPyl7L2dpbTtcbnZhciBfY3NzQ29udGVudFJ1bGVSZSA9IC8ocG9seWZpbGwtcnVsZSlbXn1dKihjb250ZW50OltcXHNdKlsnXCJdKC4qPylbJ1wiXSlbO1xcc10qW159XSp9L2dpbTtcbnZhciBfY3NzQ29udGVudFVuc2NvcGVkUnVsZVJlID1cbiAgICAvKHBvbHlmaWxsLXVuc2NvcGVkLXJ1bGUpW159XSooY29udGVudDpbXFxzXSpbJ1wiXSguKj8pWydcIl0pWztcXHNdKltefV0qfS9naW07XG52YXIgX3BvbHlmaWxsSG9zdCA9ICctc2hhZG93Y3NzaG9zdCc7XG4vLyBub3RlOiA6aG9zdC1jb250ZXh0IHByZS1wcm9jZXNzZWQgdG8gLXNoYWRvd2Nzc2hvc3Rjb250ZXh0LlxudmFyIF9wb2x5ZmlsbEhvc3RDb250ZXh0ID0gJy1zaGFkb3djc3Njb250ZXh0JztcbnZhciBfcGFyZW5TdWZmaXggPSAnKSg/OlxcXFwoKCcgK1xuICAgICAgICAgICAgICAgICAgICcoPzpcXFxcKFteKShdKlxcXFwpfFteKShdKikrPycgK1xuICAgICAgICAgICAgICAgICAgICcpXFxcXCkpPyhbXix7XSopJztcbnZhciBfY3NzQ29sb25Ib3N0UmUgPSBSZWdFeHBXcmFwcGVyLmNyZWF0ZSgnKCcgKyBfcG9seWZpbGxIb3N0ICsgX3BhcmVuU3VmZml4LCAnaW0nKTtcbnZhciBfY3NzQ29sb25Ib3N0Q29udGV4dFJlID0gUmVnRXhwV3JhcHBlci5jcmVhdGUoJygnICsgX3BvbHlmaWxsSG9zdENvbnRleHQgKyBfcGFyZW5TdWZmaXgsICdpbScpO1xudmFyIF9wb2x5ZmlsbEhvc3ROb0NvbWJpbmF0b3IgPSBfcG9seWZpbGxIb3N0ICsgJy1uby1jb21iaW5hdG9yJztcbnZhciBfc2hhZG93RE9NU2VsZWN0b3JzUmUgPSBbXG4gIC86OnNoYWRvdy9nLFxuICAvOjpjb250ZW50L2csXG4gIC8vIERlcHJlY2F0ZWQgc2VsZWN0b3JzXG4gIC8vIFRPRE8odmljYik6IHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jbGFuZy1mb3JtYXQvaXNzdWVzLzE2XG4gIC8vIGNsYW5nLWZvcm1hdCBvZmZcbiAgL1xcL3NoYWRvdy1kZWVwXFwvL2csICAvLyBmb3JtZXIgL2RlZXAvXG4gIC9cXC9zaGFkb3dcXC8vZywgICAgICAgLy8gZm9ybWVyIDo6c2hhZG93XG4gIC8vIGNsYW5mLWZvcm1hdCBvblxuXTtcbnZhciBfc2hhZG93RGVlcFNlbGVjdG9ycyA9IC8oPzo+Pj4pfCg/OlxcL2RlZXBcXC8pL2c7XG52YXIgX3NlbGVjdG9yUmVTdWZmaXggPSAnKFs+XFxcXHN+K1xcWy4sezpdW1xcXFxzXFxcXFNdKik/JCc7XG52YXIgX3BvbHlmaWxsSG9zdFJlID0gUmVnRXhwV3JhcHBlci5jcmVhdGUoX3BvbHlmaWxsSG9zdCwgJ2ltJyk7XG52YXIgX2NvbG9uSG9zdFJlID0gLzpob3N0L2dpbTtcbnZhciBfY29sb25Ib3N0Q29udGV4dFJlID0gLzpob3N0LWNvbnRleHQvZ2ltO1xuXG52YXIgX2NvbW1lbnRSZSA9IC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2c7XG5cbmZ1bmN0aW9uIHN0cmlwQ29tbWVudHMoaW5wdXQ6c3RyaW5nKTpzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCBfY29tbWVudFJlLCAoXykgPT4gJycpO1xufVxuXG52YXIgX3J1bGVSZSA9IC8oXFxzKikoW147XFx7XFx9XSs/KShcXHMqKSgoPzp7JUJMT0NLJX0/XFxzKjs/KXwoPzpcXHMqOykpL2c7XG52YXIgX2N1cmx5UmUgPSAvKFt7fV0pL2c7XG5jb25zdCBPUEVOX0NVUkxZID0gJ3snO1xuY29uc3QgQ0xPU0VfQ1VSTFkgPSAnfSc7XG5jb25zdCBCTE9DS19QTEFDRUhPTERFUiA9ICclQkxPQ0slJztcblxuZXhwb3J0IGNsYXNzIENzc1J1bGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VsZWN0b3I6c3RyaW5nLCBwdWJsaWMgY29udGVudDpzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzUnVsZXMoaW5wdXQ6c3RyaW5nLCBydWxlQ2FsbGJhY2s6RnVuY3Rpb24pOnN0cmluZyB7XG4gIHZhciBpbnB1dFdpdGhFc2NhcGVkQmxvY2tzID0gZXNjYXBlQmxvY2tzKGlucHV0KTtcbiAgdmFyIG5leHRCbG9ja0luZGV4ID0gMDtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChpbnB1dFdpdGhFc2NhcGVkQmxvY2tzLmVzY2FwZWRTdHJpbmcsIF9ydWxlUmUsIGZ1bmN0aW9uKG0pIHtcbiAgICB2YXIgc2VsZWN0b3IgPSBtWzJdO1xuICAgIHZhciBjb250ZW50ID0gJyc7XG4gICAgdmFyIHN1ZmZpeCA9IG1bNF07XG4gICAgdmFyIGNvbnRlbnRQcmVmaXggPSAnJztcbiAgICBpZiAoaXNQcmVzZW50KG1bNF0pICYmIG1bNF0uc3RhcnRzV2l0aCgneycrQkxPQ0tfUExBQ0VIT0xERVIpKSB7XG4gICAgICBjb250ZW50ID0gaW5wdXRXaXRoRXNjYXBlZEJsb2Nrcy5ibG9ja3NbbmV4dEJsb2NrSW5kZXgrK107XG4gICAgICBzdWZmaXggPSBtWzRdLnN1YnN0cmluZyhCTE9DS19QTEFDRUhPTERFUi5sZW5ndGgrMSk7XG4gICAgICBjb250ZW50UHJlZml4ID0gJ3snO1xuICAgIH1cbiAgICB2YXIgcnVsZSA9IHJ1bGVDYWxsYmFjayhuZXcgQ3NzUnVsZShzZWxlY3RvciwgY29udGVudCkpO1xuICAgIHJldHVybiBgJHttWzFdfSR7cnVsZS5zZWxlY3Rvcn0ke21bM119JHtjb250ZW50UHJlZml4fSR7cnVsZS5jb250ZW50fSR7c3VmZml4fWA7XG4gIH0pO1xufVxuXG5jbGFzcyBTdHJpbmdXaXRoRXNjYXBlZEJsb2NrcyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlc2NhcGVkU3RyaW5nOnN0cmluZywgcHVibGljIGJsb2NrczpzdHJpbmdbXSkge31cbn1cblxuZnVuY3Rpb24gZXNjYXBlQmxvY2tzKGlucHV0OnN0cmluZyk6U3RyaW5nV2l0aEVzY2FwZWRCbG9ja3Mge1xuICB2YXIgaW5wdXRQYXJ0cyA9IFN0cmluZ1dyYXBwZXIuc3BsaXQoaW5wdXQsIF9jdXJseVJlKTtcbiAgdmFyIHJlc3VsdFBhcnRzID0gW107XG4gIHZhciBlc2NhcGVkQmxvY2tzID0gW107XG4gIHZhciBicmFja2V0Q291bnQgPSAwO1xuICB2YXIgY3VycmVudEJsb2NrUGFydHMgPSBbXTtcbiAgZm9yICh2YXIgcGFydEluZGV4ID0gMDsgcGFydEluZGV4PGlucHV0UGFydHMubGVuZ3RoOyBwYXJ0SW5kZXgrKykge1xuICAgIHZhciBwYXJ0ID0gaW5wdXRQYXJ0c1twYXJ0SW5kZXhdO1xuICAgIGlmIChwYXJ0ID09IENMT1NFX0NVUkxZKSB7XG4gICAgICBicmFja2V0Q291bnQtLTtcbiAgICB9XG4gICAgaWYgKGJyYWNrZXRDb3VudCA+IDApIHtcbiAgICAgIGN1cnJlbnRCbG9ja1BhcnRzLnB1c2gocGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyZW50QmxvY2tQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVzY2FwZWRCbG9ja3MucHVzaChjdXJyZW50QmxvY2tQYXJ0cy5qb2luKCcnKSk7XG4gICAgICAgIHJlc3VsdFBhcnRzLnB1c2goQkxPQ0tfUExBQ0VIT0xERVIpO1xuICAgICAgICBjdXJyZW50QmxvY2tQYXJ0cyA9IFtdO1xuICAgICAgfVxuICAgICAgcmVzdWx0UGFydHMucHVzaChwYXJ0KTtcbiAgICB9XG4gICAgaWYgKHBhcnQgPT0gT1BFTl9DVVJMWSkge1xuICAgICAgYnJhY2tldENvdW50Kys7XG4gICAgfVxuICB9XG4gIGlmIChjdXJyZW50QmxvY2tQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgZXNjYXBlZEJsb2Nrcy5wdXNoKGN1cnJlbnRCbG9ja1BhcnRzLmpvaW4oJycpKTtcbiAgICByZXN1bHRQYXJ0cy5wdXNoKEJMT0NLX1BMQUNFSE9MREVSKTtcbiAgfVxuICByZXR1cm4gbmV3IFN0cmluZ1dpdGhFc2NhcGVkQmxvY2tzKHJlc3VsdFBhcnRzLmpvaW4oJycpLCBlc2NhcGVkQmxvY2tzKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar compile_metadata_1 = require('./compile_metadata');\r\nvar o = require('./output/output_ast');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar shadow_css_1 = require('angular2/src/compiler/shadow_css');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar style_url_resolver_1 = require('./style_url_resolver');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar COMPONENT_VARIABLE = '%COMP%';\r\nvar HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\r\nvar CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\r\nvar StylesCompileDependency = (function () {\r\n function StylesCompileDependency(sourceUrl, isShimmed, valuePlaceholder) {\r\n this.sourceUrl = sourceUrl;\r\n this.isShimmed = isShimmed;\r\n this.valuePlaceholder = valuePlaceholder;\r\n }\r\n return StylesCompileDependency;\r\n}());\r\nexports.StylesCompileDependency = StylesCompileDependency;\r\nvar StylesCompileResult = (function () {\r\n function StylesCompileResult(statements, stylesVar, dependencies) {\r\n this.statements = statements;\r\n this.stylesVar = stylesVar;\r\n this.dependencies = dependencies;\r\n }\r\n return StylesCompileResult;\r\n}());\r\nexports.StylesCompileResult = StylesCompileResult;\r\nvar StyleCompiler = (function () {\r\n function StyleCompiler(_urlResolver) {\r\n this._urlResolver = _urlResolver;\r\n this._shadowCss = new shadow_css_1.ShadowCss();\r\n }\r\n StyleCompiler.prototype.compileComponent = function (comp) {\r\n var shim = comp.template.encapsulation === view_1.ViewEncapsulation.Emulated;\r\n return this._compileStyles(getStylesVarName(comp), comp.template.styles, comp.template.styleUrls, shim);\r\n };\r\n StyleCompiler.prototype.compileStylesheet = function (stylesheetUrl, cssText, isShimmed) {\r\n var styleWithImports = style_url_resolver_1.extractStyleUrls(this._urlResolver, stylesheetUrl, cssText);\r\n return this._compileStyles(getStylesVarName(null), [styleWithImports.style], styleWithImports.styleUrls, isShimmed);\r\n };\r\n StyleCompiler.prototype._compileStyles = function (stylesVar, plainStyles, absUrls, shim) {\r\n var _this = this;\r\n var styleExpressions = plainStyles.map(function (plainStyle) { return o.literal(_this._shimIfNeeded(plainStyle, shim)); });\r\n var dependencies = [];\r\n for (var i = 0; i < absUrls.length; i++) {\r\n var identifier = new compile_metadata_1.CompileIdentifierMetadata({ name: getStylesVarName(null) });\r\n dependencies.push(new StylesCompileDependency(absUrls[i], shim, identifier));\r\n styleExpressions.push(new o.ExternalExpr(identifier));\r\n }\r\n // styles variable contains plain strings and arrays of other styles arrays (recursive),\r\n // so we set its type to dynamic.\r\n var stmt = o.variable(stylesVar)\r\n .set(o.literalArr(styleExpressions, new o.ArrayType(o.DYNAMIC_TYPE, [o.TypeModifier.Const])))\r\n .toDeclStmt(null, [o.StmtModifier.Final]);\r\n return new StylesCompileResult([stmt], stylesVar, dependencies);\r\n };\r\n StyleCompiler.prototype._shimIfNeeded = function (style, shim) {\r\n return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;\r\n };\r\n StyleCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [url_resolver_1.UrlResolver])\r\n ], StyleCompiler);\r\n return StyleCompiler;\r\n}());\r\nexports.StyleCompiler = StyleCompiler;\r\nfunction getStylesVarName(component) {\r\n var result = \"styles\";\r\n if (lang_1.isPresent(component)) {\r\n result += \"_\" + component.type.name;\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVfY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvc3R5bGVfY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLGlDQUlPLG9CQUFvQixDQUFDLENBQUE7QUFDNUIsSUFBWSxDQUFDLFdBQU0scUJBQXFCLENBQUMsQ0FBQTtBQUN6QyxxQkFBZ0MsaUNBQWlDLENBQUMsQ0FBQTtBQUNsRSwyQkFBd0Isa0NBQWtDLENBQUMsQ0FBQTtBQUMzRCw2QkFBMEIsb0NBQW9DLENBQUMsQ0FBQTtBQUMvRCxtQ0FBK0Isc0JBQXNCLENBQUMsQ0FBQTtBQUN0RCxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxxQkFBd0IsMEJBQTBCLENBQUMsQ0FBQTtBQUVuRCxJQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQztBQUNwQyxJQUFNLFNBQVMsR0FBRyxhQUFXLGtCQUFvQixDQUFDO0FBQ2xELElBQU0sWUFBWSxHQUFHLGdCQUFjLGtCQUFvQixDQUFDO0FBRXhEO0lBQ0UsaUNBQW1CLFNBQWlCLEVBQVMsU0FBa0IsRUFDNUMsZ0JBQTJDO1FBRDNDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQzVDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkI7SUFBRyxDQUFDO0lBQ3BFLDhCQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIWSwrQkFBdUIsMEJBR25DLENBQUE7QUFFRDtJQUNFLDZCQUFtQixVQUF5QixFQUFTLFNBQWlCLEVBQ25ELFlBQXVDO1FBRHZDLGVBQVUsR0FBVixVQUFVLENBQWU7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ25ELGlCQUFZLEdBQVosWUFBWSxDQUEyQjtJQUFHLENBQUM7SUFDaEUsMEJBQUM7QUFBRCxDQUFD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Q0FBQztJQUNwRixDQUFDO0lBeENIO1FBQUMsZUFBVSxFQUFFOztxQkFBQTtJQXlDYixvQkFBQztBQUFELENBQUMsQUF4Q0QsSUF3Q0M7QUF4Q1kscUJBQWEsZ0JBd0N6QixDQUFBO0FBRUQsMEJBQTBCLFNBQW1DO0lBQzNELElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN0QixFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLElBQUksTUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQU0sQ0FBQztJQUN0QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEsXG4gIENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEsXG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVxufSBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtTaGFkb3dDc3N9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9zaGFkb3dfY3NzJztcbmltcG9ydCB7VXJsUmVzb2x2ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci91cmxfcmVzb2x2ZXInO1xuaW1wb3J0IHtleHRyYWN0U3R5bGVVcmxzfSBmcm9tICcuL3N0eWxlX3VybF9yZXNvbHZlcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7aXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5jb25zdCBDT01QT05FTlRfVkFSSUFCTEUgPSAnJUNPTVAlJztcbmNvbnN0IEhPU1RfQVRUUiA9IGBfbmdob3N0LSR7Q09NUE9ORU5UX1ZBUklBQkxFfWA7XG5jb25zdCBDT05URU5UX0FUVFIgPSBgX25nY29udGVudC0ke0NPTVBPTkVOVF9WQVJJQUJMRX1gO1xuXG5leHBvcnQgY2xhc3MgU3R5bGVzQ29tcGlsZURlcGVuZGVuY3kge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc291cmNlVXJsOiBzdHJpbmcsIHB1YmxpYyBpc1NoaW1tZWQ6IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHB1YmxpYyB2YWx1ZVBsYWNlaG9sZGVyOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgU3R5bGVzQ29tcGlsZVJlc3VsdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdLCBwdWJsaWMgc3R5bGVzVmFyOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBkZXBlbmRlbmNpZXM6IFN0eWxlc0NvbXBpbGVEZXBlbmRlbmN5W10pIHt9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdHlsZUNvbXBpbGVyIHtcbiAgcHJpdmF0ZSBfc2hhZG93Q3NzOiBTaGFkb3dDc3MgPSBuZXcgU2hhZG93Q3NzKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdXJsUmVzb2x2ZXI6IFVybFJlc29sdmVyKSB7fVxuXG4gIGNvbXBpbGVDb21wb25lbnQoY29tcDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKTogU3R5bGVzQ29tcGlsZVJlc3VsdCB7XG4gICAgdmFyIHNoaW0gPSBjb21wLnRlbXBsYXRlLmVuY2Fwc3VsYXRpb24gPT09IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkO1xuICAgIHJldHVybiB0aGlzLl9jb21waWxlU3R5bGVzKGdldFN0eWxlc1Zhck5hbWUoY29tcCksIGNvbXAudGVtcGxhdGUuc3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAudGVtcGxhdGUuc3R5bGVVcmxzLCBzaGltKTtcbiAgfVxuXG4gIGNvbXBpbGVTdHlsZXNoZWV0KHN0eWxlc2hlZXRVcmw6IHN0cmluZywgY3NzVGV4dDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICBpc1NoaW1tZWQ6IGJvb2xlYW4pOiBTdHlsZXNDb21waWxlUmVzdWx0IHtcbiAgICB2YXIgc3R5bGVXaXRoSW1wb3J0cyA9IGV4dHJhY3RTdHlsZVVybHModGhpcy5fdXJsUmVzb2x2ZXIsIHN0eWxlc2hlZXRVcmwsIGNzc1RleHQpO1xuICAgIHJldHVybiB0aGlzLl9jb21waWxlU3R5bGVzKGdldFN0eWxlc1Zhck5hbWUobnVsbCksIFtzdHlsZVdpdGhJbXBvcnRzLnN0eWxlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVdpdGhJbXBvcnRzLnN0eWxlVXJscywgaXNTaGltbWVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBpbGVTdHlsZXMoc3R5bGVzVmFyOiBzdHJpbmcsIHBsYWluU3R5bGVzOiBzdHJpbmdbXSwgYWJzVXJsczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2hpbTogYm9vbGVhbik6IFN0eWxlc0NvbXBpbGVSZXN1bHQge1xuICAgIHZhciBzdHlsZUV4cHJlc3Npb25zID1cbiAgICAgICAgcGxhaW5TdHlsZXMubWFwKHBsYWluU3R5bGUgPT4gby5saXRlcmFsKHRoaXMuX3NoaW1JZk5lZWRlZChwbGFpblN0eWxlLCBzaGltKSkpO1xuICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFic1VybHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoe25hbWU6IGdldFN0eWxlc1Zhck5hbWUobnVsbCl9KTtcbiAgICAgIGRlcGVuZGVuY2llcy5wdXNoKG5ldyBTdHlsZXNDb21waWxlRGVwZW5kZW5jeShhYnNVcmxzW2ldLCBzaGltLCBpZGVudGlmaWVyKSk7XG4gICAgICBzdHlsZUV4cHJlc3Npb25zLnB1c2gobmV3IG8uRXh0ZXJuYWxFeHByKGlkZW50aWZpZXIpKTtcbiAgICB9XG4gICAgLy8gc3R5bGVzIHZhcmlhYmxlIGNvbnRhaW5zIHBsYWluIHN0cmluZ3MgYW5kIGFycmF5cyBvZiBvdGhlciBzdHlsZXMgYXJyYXlzIChyZWN1cnNpdmUpLFxuICAgIC8vIHNvIHdlIHNldCBpdHMgdHlwZSB0byBkeW5hbWljLlxuICAgIHZhciBzdG10ID0gby52YXJpYWJsZShzdHlsZXNWYXIpXG4gICAgICAgICAgICAgICAgICAgLnNldChvLmxpdGVyYWxBcnIoc3R5bGVFeHByZXNzaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgby5BcnJheVR5cGUoby5EWU5BTUlDX1RZUEUsIFtvLlR5cGVNb2RpZmllci5Db25zdF0pKSlcbiAgICAgICAgICAgICAgICAgICAudG9EZWNsU3RtdChudWxsLCBbby5TdG10TW9kaWZpZXIuRmluYWxdKTtcbiAgICByZXR1cm4gbmV3IFN0eWxlc0NvbXBpbGVSZXN1bHQoW3N0bXRdLCBzdHlsZXNWYXIsIGRlcGVuZGVuY2llcyk7XG4gIH1cblxuICBwcml2YXRlIF9zaGltSWZOZWVkZWQoc3R5bGU6IHN0cmluZywgc2hpbTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNoaW0gPyB0aGlzLl9zaGFkb3dDc3Muc2hpbUNzc1RleHQoc3R5bGUsIENPTlRFTlRfQVRUUiwgSE9TVF9BVFRSKSA6IHN0eWxlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxlc1Zhck5hbWUoY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEpOiBzdHJpbmcge1xuICB2YXIgcmVzdWx0ID0gYHN0eWxlc2A7XG4gIGlmIChpc1ByZXNlbnQoY29tcG9uZW50KSkge1xuICAgIHJlc3VsdCArPSBgXyR7Y29tcG9uZW50LnR5cGUubmFtZX1gO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59Il19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nvar util_1 = require('./util');\r\nvar _PurePipeProxy = (function () {\r\n function _PurePipeProxy(instance, argCount) {\r\n this.instance = instance;\r\n this.argCount = argCount;\r\n }\r\n return _PurePipeProxy;\r\n}());\r\nvar CompilePipe = (function () {\r\n function CompilePipe(view, name) {\r\n this.view = view;\r\n this._purePipeProxies = [];\r\n this.meta = _findPipeMeta(view, name);\r\n this.instance = o.THIS_EXPR.prop(\"_pipe_\" + name + \"_\" + view.pipeCount++);\r\n }\r\n Object.defineProperty(CompilePipe.prototype, \"pure\", {\r\n get: function () { return this.meta.pure; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompilePipe.prototype.create = function () {\r\n var _this = this;\r\n var deps = this.meta.type.diDeps.map(function (diDep) {\r\n if (diDep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ChangeDetectorRef))) {\r\n return o.THIS_EXPR.prop('ref');\r\n }\r\n return util_1.injectFromViewParentInjector(diDep.token, false);\r\n });\r\n this.view.fields.push(new o.ClassField(this.instance.name, o.importType(this.meta.type), [o.StmtModifier.Private]));\r\n this.view.createMethod.resetDebugInfo(null, null);\r\n this.view.createMethod.addStmt(o.THIS_EXPR.prop(this.instance.name)\r\n .set(o.importExpr(this.meta.type).instantiate(deps))\r\n .toStmt());\r\n this._purePipeProxies.forEach(function (purePipeProxy) {\r\n util_1.createPureProxy(_this.instance.prop('transform').callMethod(o.BuiltinMethod.bind, [_this.instance]), purePipeProxy.argCount, purePipeProxy.instance, _this.view);\r\n });\r\n };\r\n CompilePipe.prototype.call = function (callingView, args) {\r\n if (this.meta.pure) {\r\n var purePipeProxy = new _PurePipeProxy(o.THIS_EXPR.prop(this.instance.name + \"_\" + this._purePipeProxies.length), args.length);\r\n this._purePipeProxies.push(purePipeProxy);\r\n return util_1.getPropertyInView(o.importExpr(identifiers_1.Identifiers.castByValue)\r\n .callFn([purePipeProxy.instance, this.instance.prop('transform')]), callingView, this.view)\r\n .callFn(args);\r\n }\r\n else {\r\n return util_1.getPropertyInView(this.instance, callingView, this.view).callMethod('transform', args);\r\n }\r\n };\r\n return CompilePipe;\r\n}());\r\nexports.CompilePipe = CompilePipe;\r\nfunction _findPipeMeta(view, name) {\r\n var pipeMeta = null;\r\n for (var i = view.pipeMetas.length - 1; i >= 0; i--) {\r\n var localPipeMeta = view.pipeMetas[i];\r\n if (localPipeMeta.name == name) {\r\n pipeMeta = localPipeMeta;\r\n break;\r\n }\r\n }\r\n if (lang_1.isBlank(pipeMeta)) {\r\n throw new exceptions_1.BaseException(\"Illegal state: Could not find pipe \" + name + \" although the parser should have detected this error!\");\r\n }\r\n return pipeMeta;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvY29tcGlsZV9waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBaUMsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RCwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCxJQUFZLENBQUMsV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBRzFDLDRCQUEyQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQzVELHFCQUErRSxRQUFRLENBQUMsQ0FBQTtBQUV4RjtJQUNFLHdCQUFtQixRQUF3QixFQUFTLFFBQWdCO1FBQWpELGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUFHLENBQUM7SUFDMUUscUJBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUVEO0lBS0UscUJBQW1CLElBQWlCLEVBQUUsSUFBWTtRQUEvQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBRjVCLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFHOUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBUyxJQUFJLFNBQUksSUFBSSxDQUFDLFNBQVMsRUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELHNCQUFJLDZCQUFJO2FBQVIsY0FBc0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFOUMsNEJBQU0sR0FBTjtRQUFBLGlCQWtCQztRQWpCQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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QUFBRCxDQUFDLEFBOUNELElBOENDO0FBOUNZLG1CQUFXLGNBOEN2QixDQUFBO0FBR0QsdUJBQXVCLElBQWlCLEVBQUUsSUFBWTtJQUNwRCxJQUFJLFFBQVEsR0FBd0IsSUFBSSxDQUFDO0lBQ3pDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDcEQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0IsUUFBUSxHQUFHLGFBQWEsQ0FBQztZQUN6QixLQUFLLENBQUM7UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUNELEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLDBCQUFhLENBQ25CLHdDQUFzQyxJQUFJLDBEQUF1RCxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUNELE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNCbGFuaywgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0NvbXBpbGVWaWV3fSBmcm9tICcuL2NvbXBpbGVfdmlldyc7XG5pbXBvcnQge0NvbXBpbGVQaXBlTWV0YWRhdGF9IGZyb20gJy4uL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0IHtJZGVudGlmaWVycywgaWRlbnRpZmllclRva2VufSBmcm9tICcuLi9pZGVudGlmaWVycyc7XG5pbXBvcnQge2luamVjdEZyb21WaWV3UGFyZW50SW5qZWN0b3IsIGNyZWF0ZVB1cmVQcm94eSwgZ2V0UHJvcGVydHlJblZpZXd9IGZyb20gJy4vdXRpbCc7XG5cbmNsYXNzIF9QdXJlUGlwZVByb3h5IHtcbiAgY29uc3RydWN0b3IocHVibGljIGluc3RhbmNlOiBvLlJlYWRQcm9wRXhwciwgcHVibGljIGFyZ0NvdW50OiBudW1iZXIpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlUGlwZSB7XG4gIG1ldGE6IENvbXBpbGVQaXBlTWV0YWRhdGE7XG4gIGluc3RhbmNlOiBvLlJlYWRQcm9wRXhwcjtcbiAgcHJpdmF0ZSBfcHVyZVBpcGVQcm94aWVzOiBfUHVyZVBpcGVQcm94eVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHZpZXc6IENvbXBpbGVWaWV3LCBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1ldGEgPSBfZmluZFBpcGVNZXRhKHZpZXcsIG5hbWUpO1xuICAgIHRoaXMuaW5zdGFuY2UgPSBvLlRISVNfRVhQUi5wcm9wKGBfcGlwZV8ke25hbWV9XyR7dmlldy5waXBlQ291bnQrK31gKTtcbiAgfVxuXG4gIGdldCBwdXJlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5tZXRhLnB1cmU7IH1cblxuICBjcmVhdGUoKTogdm9pZCB7XG4gICAgdmFyIGRlcHMgPSB0aGlzLm1ldGEudHlwZS5kaURlcHMubWFwKChkaURlcCkgPT4ge1xuICAgICAgaWYgKGRpRGVwLnRva2VuLmVxdWFsc1RvKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5DaGFuZ2VEZXRlY3RvclJlZikpKSB7XG4gICAgICAgIHJldHVybiBvLlRISVNfRVhQUi5wcm9wKCdyZWYnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmplY3RGcm9tVmlld1BhcmVudEluamVjdG9yKGRpRGVwLnRva2VuLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgdGhpcy52aWV3LmZpZWxkcy5wdXNoKG5ldyBvLkNsYXNzRmllbGQodGhpcy5pbnN0YW5jZS5uYW1lLCBvLmltcG9ydFR5cGUodGhpcy5tZXRhLnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvLlN0bXRNb2RpZmllci5Qcml2YXRlXSkpO1xuICAgIHRoaXMudmlldy5jcmVhdGVNZXRob2QucmVzZXREZWJ1Z0luZm8obnVsbCwgbnVsbCk7XG4gICAgdGhpcy52aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KG8uVEhJU19FWFBSLnByb3AodGhpcy5pbnN0YW5jZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldChvLmltcG9ydEV4cHIodGhpcy5tZXRhLnR5cGUpLmluc3RhbnRpYXRlKGRlcHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvU3RtdCgpKTtcbiAgICB0aGlzLl9wdXJlUGlwZVByb3hpZXMuZm9yRWFjaCgocHVyZVBpcGVQcm94eSkgPT4ge1xuICAgICAgY3JlYXRlUHVyZVByb3h5KFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2UucHJvcCgndHJhbnNmb3JtJykuY2FsbE1ldGhvZChvLkJ1aWx0aW5NZXRob2QuYmluZCwgW3RoaXMuaW5zdGFuY2VdKSxcbiAgICAgICAgICBwdXJlUGlwZVByb3h5LmFyZ0NvdW50LCBwdXJlUGlwZVByb3h5Lmluc3RhbmNlLCB0aGlzLnZpZXcpO1xuICAgIH0pO1xuICB9XG5cbiAgY2FsbChjYWxsaW5nVmlldzogQ29tcGlsZVZpZXcsIGFyZ3M6IG8uRXhwcmVzc2lvbltdKTogby5FeHByZXNzaW9uIHtcbiAgICBpZiAodGhpcy5tZXRhLnB1cmUpIHtcbiAgICAgIHZhciBwdXJlUGlwZVByb3h5ID0gbmV3IF9QdXJlUGlwZVByb3h5KFxuICAgICAgICAgIG8uVEhJU19FWFBSLnByb3AoYCR7dGhpcy5pbnN0YW5jZS5uYW1lfV8ke3RoaXMuX3B1cmVQaXBlUHJveGllcy5sZW5ndGh9YCksIGFyZ3MubGVuZ3RoKTtcbiAgICAgIHRoaXMuX3B1cmVQaXBlUHJveGllcy5wdXNoKHB1cmVQaXBlUHJveHkpO1xuICAgICAgcmV0dXJuIGdldFByb3BlcnR5SW5WaWV3KFxuICAgICAgICAgICAgICAgICBvLmltcG9ydEV4cHIoSWRlbnRpZmllcnMuY2FzdEJ5VmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAuY2FsbEZuKFtwdXJlUGlwZVByb3h5Lmluc3RhbmNlLCB0aGlzLmluc3RhbmNlLnByb3AoJ3RyYW5zZm9ybScpXSksXG4gICAgICAgICAgICAgICAgIGNhbGxpbmdWaWV3LCB0aGlzLnZpZXcpXG4gICAgICAgICAgLmNhbGxGbihhcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldFByb3BlcnR5SW5WaWV3KHRoaXMuaW5zdGFuY2UsIGNhbGxpbmdWaWV3LCB0aGlzLnZpZXcpLmNhbGxNZXRob2QoJ3RyYW5zZm9ybScsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5cbmZ1bmN0aW9uIF9maW5kUGlwZU1ldGEodmlldzogQ29tcGlsZVZpZXcsIG5hbWU6IHN0cmluZyk6IENvbXBpbGVQaXBlTWV0YWRhdGEge1xuICB2YXIgcGlwZU1ldGE6IENvbXBpbGVQaXBlTWV0YWRhdGEgPSBudWxsO1xuICBmb3IgKHZhciBpID0gdmlldy5waXBlTWV0YXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbG9jYWxQaXBlTWV0YSA9IHZpZXcucGlwZU1ldGFzW2ldO1xuICAgIGlmIChsb2NhbFBpcGVNZXRhLm5hbWUgPT0gbmFtZSkge1xuICAgICAgcGlwZU1ldGEgPSBsb2NhbFBpcGVNZXRhO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpc0JsYW5rKHBpcGVNZXRhKSkge1xuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICBgSWxsZWdhbCBzdGF0ZTogQ291bGQgbm90IGZpbmQgcGlwZSAke25hbWV9IGFsdGhvdWdoIHRoZSBwYXJzZXIgc2hvdWxkIGhhdmUgZGV0ZWN0ZWQgdGhpcyBlcnJvciFgKTtcbiAgfVxuICByZXR1cm4gcGlwZU1ldGE7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar o = require('../output/output_ast');\r\nvar constants_1 = require('./constants');\r\nvar compile_query_1 = require('./compile_query');\r\nvar compile_method_1 = require('./compile_method');\r\nvar compile_pipe_1 = require('./compile_pipe');\r\nvar view_type_1 = require('angular2/src/core/linker/view_type');\r\nvar compile_metadata_1 = require('../compile_metadata');\r\nvar util_1 = require('./util');\r\nvar CompileView = (function () {\r\n function CompileView(component, genConfig, pipeMetas, styles, viewIndex, declarationElement, templateVariableBindings) {\r\n var _this = this;\r\n this.component = component;\r\n this.genConfig = genConfig;\r\n this.pipeMetas = pipeMetas;\r\n this.styles = styles;\r\n this.viewIndex = viewIndex;\r\n this.declarationElement = declarationElement;\r\n this.templateVariableBindings = templateVariableBindings;\r\n this.nodes = [];\r\n // root nodes or AppElements for ViewContainers\r\n this.rootNodesOrAppElements = [];\r\n this.bindings = [];\r\n this.classStatements = [];\r\n this.eventHandlerMethods = [];\r\n this.fields = [];\r\n this.getters = [];\r\n this.disposables = [];\r\n this.subscriptions = [];\r\n this.purePipes = new Map();\r\n this.pipes = [];\r\n this.locals = new Map();\r\n this.literalArrayCount = 0;\r\n this.literalMapCount = 0;\r\n this.pipeCount = 0;\r\n this.createMethod = new compile_method_1.CompileMethod(this);\r\n this.injectorGetMethod = new compile_method_1.CompileMethod(this);\r\n this.updateContentQueriesMethod = new compile_method_1.CompileMethod(this);\r\n this.dirtyParentQueriesMethod = new compile_method_1.CompileMethod(this);\r\n this.updateViewQueriesMethod = new compile_method_1.CompileMethod(this);\r\n this.detectChangesInInputsMethod = new compile_method_1.CompileMethod(this);\r\n this.detectChangesRenderPropertiesMethod = new compile_method_1.CompileMethod(this);\r\n this.afterContentLifecycleCallbacksMethod = new compile_method_1.CompileMethod(this);\r\n this.afterViewLifecycleCallbacksMethod = new compile_method_1.CompileMethod(this);\r\n this.destroyMethod = new compile_method_1.CompileMethod(this);\r\n this.viewType = getViewType(component, viewIndex);\r\n this.className = \"_View_\" + component.type.name + viewIndex;\r\n this.classType = o.importType(new compile_metadata_1.CompileIdentifierMetadata({ name: this.className }));\r\n this.viewFactory = o.variable(util_1.getViewFactoryName(component, viewIndex));\r\n if (this.viewType === view_type_1.ViewType.COMPONENT || this.viewType === view_type_1.ViewType.HOST) {\r\n this.componentView = this;\r\n }\r\n else {\r\n this.componentView = this.declarationElement.view.componentView;\r\n }\r\n var viewQueries = new compile_metadata_1.CompileTokenMap();\r\n if (this.viewType === view_type_1.ViewType.COMPONENT) {\r\n var directiveInstance = o.THIS_EXPR.prop('context');\r\n collection_1.ListWrapper.forEachWithIndex(this.component.viewQueries, function (queryMeta, queryIndex) {\r\n var propName = \"_viewQuery_\" + queryMeta.selectors[0].name + \"_\" + queryIndex;\r\n var queryList = compile_query_1.createQueryList(queryMeta, directiveInstance, propName, _this);\r\n var query = new compile_query_1.CompileQuery(queryMeta, queryList, directiveInstance, _this);\r\n compile_query_1.addQueryToTokenMap(viewQueries, query);\r\n });\r\n var constructorViewQueryCount = 0;\r\n this.component.type.diDeps.forEach(function (dep) {\r\n if (lang_1.isPresent(dep.viewQuery)) {\r\n var queryList = o.THIS_EXPR.prop('declarationAppElement')\r\n .prop('componentConstructorViewQueries')\r\n .key(o.literal(constructorViewQueryCount++));\r\n var query = new compile_query_1.CompileQuery(dep.viewQuery, queryList, null, _this);\r\n compile_query_1.addQueryToTokenMap(viewQueries, query);\r\n }\r\n });\r\n }\r\n this.viewQueries = viewQueries;\r\n templateVariableBindings.forEach(function (entry) {\r\n _this.locals.set(entry[1], o.THIS_EXPR.prop('locals').key(o.literal(entry[0])));\r\n });\r\n if (!this.declarationElement.isNull()) {\r\n this.declarationElement.setEmbeddedView(this);\r\n }\r\n }\r\n CompileView.prototype.callPipe = function (name, input, args) {\r\n var compView = this.componentView;\r\n var pipe = compView.purePipes.get(name);\r\n if (lang_1.isBlank(pipe)) {\r\n pipe = new compile_pipe_1.CompilePipe(compView, name);\r\n if (pipe.pure) {\r\n compView.purePipes.set(name, pipe);\r\n }\r\n compView.pipes.push(pipe);\r\n }\r\n return pipe.call(this, [input].concat(args));\r\n };\r\n CompileView.prototype.getLocal = function (name) {\r\n if (name == constants_1.EventHandlerVars.event.name) {\r\n return constants_1.EventHandlerVars.event;\r\n }\r\n var currView = this;\r\n var result = currView.locals.get(name);\r\n while (lang_1.isBlank(result) && lang_1.isPresent(currView.declarationElement.view)) {\r\n currView = currView.declarationElement.view;\r\n result = currView.locals.get(name);\r\n }\r\n if (lang_1.isPresent(result)) {\r\n return util_1.getPropertyInView(result, this, currView);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n CompileView.prototype.createLiteralArray = function (values) {\r\n var proxyExpr = o.THIS_EXPR.prop(\"_arr_\" + this.literalArrayCount++);\r\n var proxyParams = [];\r\n var proxyReturnEntries = [];\r\n for (var i = 0; i < values.length; i++) {\r\n var paramName = \"p\" + i;\r\n proxyParams.push(new o.FnParam(paramName));\r\n proxyReturnEntries.push(o.variable(paramName));\r\n }\r\n util_1.createPureProxy(o.fn(proxyParams, [new o.ReturnStatement(o.literalArr(proxyReturnEntries))]), values.length, proxyExpr, this);\r\n return proxyExpr.callFn(values);\r\n };\r\n CompileView.prototype.createLiteralMap = function (entries) {\r\n var proxyExpr = o.THIS_EXPR.prop(\"_map_\" + this.literalMapCount++);\r\n var proxyParams = [];\r\n var proxyReturnEntries = [];\r\n var values = [];\r\n for (var i = 0; i < entries.length; i++) {\r\n var paramName = \"p\" + i;\r\n proxyParams.push(new o.FnParam(paramName));\r\n proxyReturnEntries.push([entries[i][0], o.variable(paramName)]);\r\n values.push(entries[i][1]);\r\n }\r\n util_1.createPureProxy(o.fn(proxyParams, [new o.ReturnStatement(o.literalMap(proxyReturnEntries))]), entries.length, proxyExpr, this);\r\n return proxyExpr.callFn(values);\r\n };\r\n CompileView.prototype.afterNodes = function () {\r\n var _this = this;\r\n this.pipes.forEach(function (pipe) { return pipe.create(); });\r\n this.viewQueries.values().forEach(function (queries) { return queries.forEach(function (query) { return query.afterChildren(_this.updateViewQueriesMethod); }); });\r\n };\r\n return CompileView;\r\n}());\r\nexports.CompileView = CompileView;\r\nfunction getViewType(component, embeddedTemplateIndex) {\r\n if (embeddedTemplateIndex > 0) {\r\n return view_type_1.ViewType.EMBEDDED;\r\n }\r\n else if (component.type.isHost) {\r\n return view_type_1.ViewType.HOST;\r\n }\r\n else {\r\n return view_type_1.ViewType.COMPONENT;\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV92aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvY29tcGlsZV92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBaUMsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RCwyQkFBd0QsZ0NBQWdDLENBQUMsQ0FBQTtBQUV6RixJQUFZLENBQUMsV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBQzFDLDBCQUErQixhQUFhLENBQUMsQ0FBQTtBQUM3Qyw4QkFBZ0UsaUJBQWlCLENBQUMsQ0FBQTtBQUdsRiwrQkFBNEIsa0JBQWtCLENBQUMsQ0FBQTtBQUMvQyw2QkFBMEIsZ0JBQWdCLENBQUMsQ0FBQTtBQUMzQywwQkFBdUIsb0NBQW9DLENBQUMsQ0FBQTtBQUM1RCxpQ0FLTyxxQkFBcUIsQ0FBQyxDQUFBO0FBQzdCLHFCQU1PLFFBQVEsQ0FBQyxDQUFBO0FBSWhCO0lBd0NFLHFCQUFtQixTQUFtQyxFQUFTLFNBQXlCLEVBQ3JFLFNBQWdDLEVBQVMsTUFBb0IsRUFDN0QsU0FBaUIsRUFBUyxrQkFBa0MsRUFDNUQsd0JBQW9DO1FBM0N6RCxpQkFnS0M7UUF4SG9CLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQVMsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDckUsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQzdELGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWdCO1FBQzVELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBWTtRQXZDaEQsVUFBSyxHQUFrQixFQUFFLENBQUM7UUFDakMsK0NBQStDO1FBQ3hDLDJCQUFzQixHQUFtQixFQUFFLENBQUM7UUFFNUMsYUFBUSxHQUFxQixFQUFFLENBQUM7UUFFaEMs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QUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxvQkFBUSxDQUFDLElBQUksQ0FBQztJQUN2QixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMsb0JBQVEsQ0FBQyxTQUFTLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXIsIE1hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtFdmVudEhhbmRsZXJWYXJzfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge0NvbXBpbGVRdWVyeSwgY3JlYXRlUXVlcnlMaXN0LCBhZGRRdWVyeVRvVG9rZW5NYXB9IGZyb20gJy4vY29tcGlsZV9xdWVyeSc7XG5pbXBvcnQge05hbWVSZXNvbHZlcn0gZnJvbSAnLi9leHByZXNzaW9uX2NvbnZlcnRlcic7XG5pbXBvcnQge0NvbXBpbGVFbGVtZW50LCBDb21waWxlTm9kZX0gZnJvbSAnLi9jb21waWxlX2VsZW1lbnQnO1xuaW1wb3J0IHtDb21waWxlTWV0aG9kfSBmcm9tICcuL2NvbXBpbGVfbWV0aG9kJztcbmltcG9ydCB7Q29tcGlsZVBpcGV9IGZyb20gJy4vY29tcGlsZV9waXBlJztcbmltcG9ydCB7Vmlld1R5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3R5cGUnO1xuaW1wb3J0IHtcbiAgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICBDb21waWxlUGlwZU1ldGFkYXRhLFxuICBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NYXBcbn0gZnJvbSAnLi4vY29tcGlsZV9tZXRhZGF0YSc7XG5pbXBvcnQge1xuICBnZXRWaWV3RmFjdG9yeU5hbWUsXG4gIGluamVjdEZyb21WaWV3UGFyZW50SW5qZWN0b3IsXG4gIGNyZWF0ZURpVG9rZW5FeHByZXNzaW9uLFxuICBnZXRQcm9wZXJ0eUluVmlldyxcbiAgY3JlYXRlUHVyZVByb3h5XG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge0NvbXBpbGVyQ29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtDb21waWxlQmluZGluZ30gZnJvbSAnLi9jb21waWxlX2JpbmRpbmcnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVZpZXcgaW1wbGVtZW50cyBOYW1lUmVzb2x2ZXIge1xuICBwdWJsaWMgdmlld1R5cGU6IFZpZXdUeXBlO1xuICBwdWJsaWMgdmlld1F1ZXJpZXM6IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlbXT47XG5cbiAgcHVibGljIG5vZGVzOiBDb21waWxlTm9kZVtdID0gW107XG4gIC8vIHJvb3Qgbm9kZXMgb3IgQXBwRWxlbWVudHMgZm9yIFZpZXdDb250YWluZXJzXG4gIHB1YmxpYyByb290Tm9kZXNPckFwcEVsZW1lbnRzOiBvLkV4cHJlc3Npb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBiaW5kaW5nczogQ29tcGlsZUJpbmRpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBjbGFzc1N0YXRlbWVudHM6IG8uU3RhdGVtZW50W10gPSBbXTtcbiAgcHVibGljIGNyZWF0ZU1ldGhvZDogQ29tcGlsZU1ldGhvZDtcbiAgcHVibGljIGluamVjdG9yR2V0TWV0aG9kOiBDb21waWxlTWV0aG9kO1xuICBwdWJsaWMgdXBkYXRlQ29udGVudFF1ZXJpZXNNZXRob2Q6IENvbXBpbGVNZXRob2Q7XG4gIHB1YmxpYyBkaXJ0eVBhcmVudFF1ZXJpZXNNZXRob2Q6IENvbXBpbGVNZXRob2Q7XG4gIHB1YmxpYyB1cGRhdGVWaWV3UXVlcmllc01ldGhvZDogQ29tcGlsZU1ldGhvZDtcbiAgcHVibGljIGRldGVjdENoYW5nZXNJbklucHV0c01ldGhvZDogQ29tcGlsZU1ldGhvZDtcbiAgcHVibGljIGRldGVjdENoYW5nZXNSZW5kZXJQcm9wZXJ0aWVzTWV0aG9kOiBDb21waWxlTWV0aG9kO1xuICBwdWJsaWMgYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kOiBDb21waWxlTWV0aG9kO1xuICBwdWJsaWMgYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kOiBDb21waWxlTWV0aG9kO1xuICBwdWJsaWMgZGVzdHJveU1ldGhvZDogQ29tcGlsZU1ldGhvZDtcbiAgcHVibGljIGV2ZW50SGFuZGxlck1ldGhvZHM6IG8uQ2xhc3NNZXRob2RbXSA9IFtdO1xuXG4gIHB1YmxpYyBmaWVsZHM6IG8uQ2xhc3NGaWVsZFtdID0gW107XG4gIHB1YmxpYyBnZXR0ZXJzOiBvLkNsYXNzR2V0dGVyW10gPSBbXTtcbiAgcHVibGljIGRpc3Bvc2FibGVzOiBvLkV4cHJlc3Npb25bXSA9IFtdO1xuICBwdWJsaWMgc3Vic2NyaXB0aW9uczogby5FeHByZXNzaW9uW10gPSBbXTtcblxuICBwdWJsaWMgY29tcG9uZW50VmlldzogQ29tcGlsZVZpZXc7XG4gIHB1YmxpYyBwdXJlUGlwZXMgPSBuZXcgTWFwPHN0cmluZywgQ29tcGlsZVBpcGU+KCk7XG4gIHB1YmxpYyBwaXBlczogQ29tcGlsZVBpcGVbXSA9IFtdO1xuICBwdWJsaWMgbG9jYWxzID0gbmV3IE1hcDxzdHJpbmcsIG8uRXhwcmVzc2lvbj4oKTtcbiAgcHVibGljIGNsYXNzTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgY2xhc3NUeXBlOiBvLlR5cGU7XG4gIHB1YmxpYyB2aWV3RmFjdG9yeTogby5SZWFkVmFyRXhwcjtcblxuICBwdWJsaWMgbGl0ZXJhbEFycmF5Q291bnQgPSAwO1xuICBwdWJsaWMgbGl0ZXJhbE1hcENvdW50ID0gMDtcbiAgcHVibGljIHBpcGVDb3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCBwdWJsaWMgZ2VuQ29uZmlnOiBDb21waWxlckNvbmZpZyxcbiAgICAgICAgICAgICAgcHVibGljIHBpcGVNZXRhczogQ29tcGlsZVBpcGVNZXRhZGF0YVtdLCBwdWJsaWMgc3R5bGVzOiBvLkV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIHB1YmxpYyB2aWV3SW5kZXg6IG51bWJlciwgcHVibGljIGRlY2xhcmF0aW9uRWxlbWVudDogQ29tcGlsZUVsZW1lbnQsXG4gICAgICAgICAgICAgIHB1YmxpYyB0ZW1wbGF0ZVZhcmlhYmxlQmluZGluZ3M6IHN0cmluZ1tdW10pIHtcbiAgICB0aGlzLmNyZWF0ZU1ldGhvZCA9IG5ldyBDb21waWxlTWV0aG9kKHRoaXMpO1xuICAgIHRoaXMuaW5qZWN0b3JHZXRNZXRob2QgPSBuZXcgQ29tcGlsZU1ldGhvZCh0aGlzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnRRdWVyaWVzTWV0aG9kID0gbmV3IENvbXBpbGVNZXRob2QodGhpcyk7XG4gICAgdGhpcy5kaXJ0eVBhcmVudFF1ZXJpZXNNZXRob2QgPSBuZXcgQ29tcGlsZU1ldGhvZCh0aGlzKTtcbiAgICB0aGlzLnVwZGF0ZVZpZXdRdWVyaWVzTWV0aG9kID0gbmV3IENvbXBpbGVNZXRob2QodGhpcyk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzSW5JbnB1dHNNZXRob2QgPSBuZXcgQ29tcGlsZU1ldGhvZCh0aGlzKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXNSZW5kZXJQcm9wZXJ0aWVzTWV0aG9kID0gbmV3IENvbXBpbGVNZXRob2QodGhpcyk7XG5cbiAgICB0aGlzLmFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrc01ldGhvZCA9IG5ldyBDb21waWxlTWV0aG9kKHRoaXMpO1xuICAgIHRoaXMuYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kID0gbmV3IENvbXBpbGVNZXRob2QodGhpcyk7XG4gICAgdGhpcy5kZXN0cm95TWV0aG9kID0gbmV3IENvbXBpbGVNZXRob2QodGhpcyk7XG5cbiAgICB0aGlzLnZpZXdUeXBlID0gZ2V0Vmlld1R5cGUoY29tcG9uZW50LCB2aWV3SW5kZXgpO1xuICAgIHRoaXMuY2xhc3NOYW1lID0gYF9WaWV3XyR7Y29tcG9uZW50LnR5cGUubmFtZX0ke3ZpZXdJbmRleH1gO1xuICAgIHRoaXMuY2xhc3NUeXBlID0gby5pbXBvcnRUeXBlKG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtuYW1lOiB0aGlzLmNsYXNzTmFtZX0pKTtcbiAgICB0aGlzLnZpZXdGYWN0b3J5ID0gby52YXJpYWJsZShnZXRWaWV3RmFjdG9yeU5hbWUoY29tcG9uZW50LCB2aWV3SW5kZXgpKTtcbiAgICBpZiAodGhpcy52aWV3VHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UIHx8IHRoaXMudmlld1R5cGUgPT09IFZpZXdUeXBlLkhPU1QpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50VmlldyA9IHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tcG9uZW50VmlldyA9IHRoaXMuZGVjbGFyYXRpb25FbGVtZW50LnZpZXcuY29tcG9uZW50VmlldztcbiAgICB9XG4gICAgdmFyIHZpZXdRdWVyaWVzID0gbmV3IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlbXT4oKTtcbiAgICBpZiAodGhpcy52aWV3VHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgICB2YXIgZGlyZWN0aXZlSW5zdGFuY2UgPSBvLlRISVNfRVhQUi5wcm9wKCdjb250ZXh0Jyk7XG4gICAgICBMaXN0V3JhcHBlci5mb3JFYWNoV2l0aEluZGV4KHRoaXMuY29tcG9uZW50LnZpZXdRdWVyaWVzLCAocXVlcnlNZXRhLCBxdWVyeUluZGV4KSA9PiB7XG4gICAgICAgIHZhciBwcm9wTmFtZSA9IGBfdmlld1F1ZXJ5XyR7cXVlcnlNZXRhLnNlbGVjdG9yc1swXS5uYW1lfV8ke3F1ZXJ5SW5kZXh9YDtcbiAgICAgICAgdmFyIHF1ZXJ5TGlzdCA9IGNyZWF0ZVF1ZXJ5TGlzdChxdWVyeU1ldGEsIGRpcmVjdGl2ZUluc3RhbmNlLCBwcm9wTmFtZSwgdGhpcyk7XG4gICAgICAgIHZhciBxdWVyeSA9IG5ldyBDb21waWxlUXVlcnkocXVlcnlNZXRhLCBxdWVyeUxpc3QsIGRpcmVjdGl2ZUluc3RhbmNlLCB0aGlzKTtcbiAgICAgICAgYWRkUXVlcnlUb1Rva2VuTWFwKHZpZXdRdWVyaWVzLCBxdWVyeSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBjb25zdHJ1Y3RvclZpZXdRdWVyeUNvdW50ID0gMDtcbiAgICAgIHRoaXMuY29tcG9uZW50LnR5cGUuZGlEZXBzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgICBpZiAoaXNQcmVzZW50KGRlcC52aWV3UXVlcnkpKSB7XG4gICAgICAgICAgdmFyIHF1ZXJ5TGlzdCA9IG8uVEhJU19FWFBSLnByb3AoJ2RlY2xhcmF0aW9uQXBwRWxlbWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnY29tcG9uZW50Q29uc3RydWN0b3JWaWV3UXVlcmllcycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAua2V5KG8ubGl0ZXJhbChjb25zdHJ1Y3RvclZpZXdRdWVyeUNvdW50KyspKTtcbiAgICAgICAgICB2YXIgcXVlcnkgPSBuZXcgQ29tcGlsZVF1ZXJ5KGRlcC52aWV3UXVlcnksIHF1ZXJ5TGlzdCwgbnVsbCwgdGhpcyk7XG4gICAgICAgICAgYWRkUXVlcnlUb1Rva2VuTWFwKHZpZXdRdWVyaWVzLCBxdWVyeSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnZpZXdRdWVyaWVzID0gdmlld1F1ZXJpZXM7XG4gICAgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICB0aGlzLmxvY2Fscy5zZXQoZW50cnlbMV0sIG8uVEhJU19FWFBSLnByb3AoJ2xvY2FscycpLmtleShvLmxpdGVyYWwoZW50cnlbMF0pKSk7XG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuZGVjbGFyYXRpb25FbGVtZW50LmlzTnVsbCgpKSB7XG4gICAgICB0aGlzLmRlY2xhcmF0aW9uRWxlbWVudC5zZXRFbWJlZGRlZFZpZXcodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbFBpcGUobmFtZTogc3RyaW5nLCBpbnB1dDogby5FeHByZXNzaW9uLCBhcmdzOiBvLkV4cHJlc3Npb25bXSk6IG8uRXhwcmVzc2lvbiB7XG4gICAgdmFyIGNvbXBWaWV3ID0gdGhpcy5jb21wb25lbnRWaWV3O1xuICAgIHZhciBwaXBlID0gY29tcFZpZXcucHVyZVBpcGVzLmdldChuYW1lKTtcbiAgICBpZiAoaXNCbGFuayhwaXBlKSkge1xuICAgICAgcGlwZSA9IG5ldyBDb21waWxlUGlwZShjb21wVmlldywgbmFtZSk7XG4gICAgICBpZiAocGlwZS5wdXJlKSB7XG4gICAgICAgIGNvbXBWaWV3LnB1cmVQaXBlcy5zZXQobmFtZSwgcGlwZSk7XG4gICAgICB9XG4gICAgICBjb21wVmlldy5waXBlcy5wdXNoKHBpcGUpO1xuICAgIH1cbiAgICByZXR1cm4gcGlwZS5jYWxsKHRoaXMsIFtpbnB1dF0uY29uY2F0KGFyZ3MpKTtcbiAgfVxuXG4gIGdldExvY2FsKG5hbWU6IHN0cmluZyk6IG8uRXhwcmVzc2lvbiB7XG4gICAgaWYgKG5hbWUgPT0gRXZlbnRIYW5kbGVyVmFycy5ldmVudC5uYW1lKSB7XG4gICAgICByZXR1cm4gRXZlbnRIYW5kbGVyVmFycy5ldmVudDtcbiAgICB9XG4gICAgdmFyIGN1cnJWaWV3OiBDb21waWxlVmlldyA9IHRoaXM7XG4gICAgdmFyIHJlc3VsdCA9IGN1cnJWaWV3LmxvY2Fscy5nZXQobmFtZSk7XG4gICAgd2hpbGUgKGlzQmxhbmsocmVzdWx0KSAmJiBpc1ByZXNlbnQoY3VyclZpZXcuZGVjbGFyYXRpb25FbGVtZW50LnZpZXcpKSB7XG4gICAgICBjdXJyVmlldyA9IGN1cnJWaWV3LmRlY2xhcmF0aW9uRWxlbWVudC52aWV3O1xuICAgICAgcmVzdWx0ID0gY3VyclZpZXcubG9jYWxzLmdldChuYW1lKTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gZ2V0UHJvcGVydHlJblZpZXcocmVzdWx0LCB0aGlzLCBjdXJyVmlldyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUxpdGVyYWxBcnJheSh2YWx1ZXM6IG8uRXhwcmVzc2lvbltdKTogby5FeHByZXNzaW9uIHtcbiAgICB2YXIgcHJveHlFeHByID0gby5USElTX0VYUFIucHJvcChgX2Fycl8ke3RoaXMubGl0ZXJhbEFycmF5Q291bnQrK31gKTtcbiAgICB2YXIgcHJveHlQYXJhbXM6IG8uRm5QYXJhbVtdID0gW107XG4gICAgdmFyIHByb3h5UmV0dXJuRW50cmllczogby5FeHByZXNzaW9uW10gPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcmFtTmFtZSA9IGBwJHtpfWA7XG4gICAgICBwcm94eVBhcmFtcy5wdXNoKG5ldyBvLkZuUGFyYW0ocGFyYW1OYW1lKSk7XG4gICAgICBwcm94eVJldHVybkVudHJpZXMucHVzaChvLnZhcmlhYmxlKHBhcmFtTmFtZSkpO1xuICAgIH1cbiAgICBjcmVhdGVQdXJlUHJveHkoby5mbihwcm94eVBhcmFtcywgW25ldyBvLlJldHVyblN0YXRlbWVudChvLmxpdGVyYWxBcnIocHJveHlSZXR1cm5FbnRyaWVzKSldKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmxlbmd0aCwgcHJveHlFeHByLCB0aGlzKTtcbiAgICByZXR1cm4gcHJveHlFeHByLmNhbGxGbih2YWx1ZXMpO1xuICB9XG5cbiAgY3JlYXRlTGl0ZXJhbE1hcChlbnRyaWVzOiBBcnJheTxBcnJheTxzdHJpbmcgfCBvLkV4cHJlc3Npb24+Pik6IG8uRXhwcmVzc2lvbiB7XG4gICAgdmFyIHByb3h5RXhwciA9IG8uVEhJU19FWFBSLnByb3AoYF9tYXBfJHt0aGlzLmxpdGVyYWxNYXBDb3VudCsrfWApO1xuICAgIHZhciBwcm94eVBhcmFtczogby5GblBhcmFtW10gPSBbXTtcbiAgICB2YXIgcHJveHlSZXR1cm5FbnRyaWVzOiBBcnJheTxBcnJheTxzdHJpbmcgfCBvLkV4cHJlc3Npb24+PiA9IFtdO1xuICAgIHZhciB2YWx1ZXM6IG8uRXhwcmVzc2lvbltdID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGFyYW1OYW1lID0gYHAke2l9YDtcbiAgICAgIHByb3h5UGFyYW1zLnB1c2gobmV3IG8uRm5QYXJhbShwYXJhbU5hbWUpKTtcbiAgICAgIHByb3h5UmV0dXJuRW50cmllcy5wdXNoKFtlbnRyaWVzW2ldWzBdLCBvLnZhcmlhYmxlKHBhcmFtTmFtZSldKTtcbiAgICAgIHZhbHVlcy5wdXNoKDxvLkV4cHJlc3Npb24+ZW50cmllc1tpXVsxXSk7XG4gICAgfVxuICAgIGNyZWF0ZVB1cmVQcm94eShvLmZuKHByb3h5UGFyYW1zLCBbbmV3IG8uUmV0dXJuU3RhdGVtZW50KG8ubGl0ZXJhbE1hcChwcm94eVJldHVybkVudHJpZXMpKV0pLFxuICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLmxlbmd0aCwgcHJveHlFeHByLCB0aGlzKTtcbiAgICByZXR1cm4gcHJveHlFeHByLmNhbGxGbih2YWx1ZXMpO1xuICB9XG5cbiAgYWZ0ZXJOb2RlcygpIHtcbiAgICB0aGlzLnBpcGVzLmZvckVhY2goKHBpcGUpID0+IHBpcGUuY3JlYXRlKCkpO1xuICAgIHRoaXMudmlld1F1ZXJpZXMudmFsdWVzKCkuZm9yRWFjaChcbiAgICAgICAgKHF1ZXJpZXMpID0+IHF1ZXJpZXMuZm9yRWFjaCgocXVlcnkpID0+IHF1ZXJ5LmFmdGVyQ2hpbGRyZW4odGhpcy51cGRhdGVWaWV3UXVlcmllc01ldGhvZCkpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRWaWV3VHlwZShjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgZW1iZWRkZWRUZW1wbGF0ZUluZGV4OiBudW1iZXIpOiBWaWV3VHlwZSB7XG4gIGlmIChlbWJlZGRlZFRlbXBsYXRlSW5kZXggPiAwKSB7XG4gICAgcmV0dXJuIFZpZXdUeXBlLkVNQkVEREVEO1xuICB9IGVsc2UgaWYgKGNvbXBvbmVudC50eXBlLmlzSG9zdCkge1xuICAgIHJldHVybiBWaWV3VHlwZS5IT1NUO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBWaWV3VHlwZS5DT01QT05FTlQ7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nvar util_1 = require('./util');\r\nvar ViewQueryValues = (function () {\r\n function ViewQueryValues(view, values) {\r\n this.view = view;\r\n this.values = values;\r\n }\r\n return ViewQueryValues;\r\n}());\r\nvar CompileQuery = (function () {\r\n function CompileQuery(meta, queryList, ownerDirectiveExpression, view) {\r\n this.meta = meta;\r\n this.queryList = queryList;\r\n this.ownerDirectiveExpression = ownerDirectiveExpression;\r\n this.view = view;\r\n this._values = new ViewQueryValues(view, []);\r\n }\r\n CompileQuery.prototype.addValue = function (value, view) {\r\n var currentView = view;\r\n var elPath = [];\r\n while (lang_1.isPresent(currentView) && currentView !== this.view) {\r\n var parentEl = currentView.declarationElement;\r\n elPath.unshift(parentEl);\r\n currentView = parentEl.view;\r\n }\r\n var queryListForDirtyExpr = util_1.getPropertyInView(this.queryList, view, this.view);\r\n var viewValues = this._values;\r\n elPath.forEach(function (el) {\r\n var last = viewValues.values.length > 0 ? viewValues.values[viewValues.values.length - 1] : null;\r\n if (last instanceof ViewQueryValues && last.view === el.embeddedView) {\r\n viewValues = last;\r\n }\r\n else {\r\n var newViewValues = new ViewQueryValues(el.embeddedView, []);\r\n viewValues.values.push(newViewValues);\r\n viewValues = newViewValues;\r\n }\r\n });\r\n viewValues.values.push(value);\r\n if (elPath.length > 0) {\r\n view.dirtyParentQueriesMethod.addStmt(queryListForDirtyExpr.callMethod('setDirty', []).toStmt());\r\n }\r\n };\r\n CompileQuery.prototype.afterChildren = function (targetMethod) {\r\n var values = createQueryValues(this._values);\r\n var updateStmts = [this.queryList.callMethod('reset', [o.literalArr(values)]).toStmt()];\r\n if (lang_1.isPresent(this.ownerDirectiveExpression)) {\r\n var valueExpr = this.meta.first ? this.queryList.prop('first') : this.queryList;\r\n updateStmts.push(this.ownerDirectiveExpression.prop(this.meta.propertyName).set(valueExpr).toStmt());\r\n }\r\n if (!this.meta.first) {\r\n updateStmts.push(this.queryList.callMethod('notifyOnChanges', []).toStmt());\r\n }\r\n targetMethod.addStmt(new o.IfStmt(this.queryList.prop('dirty'), updateStmts));\r\n };\r\n return CompileQuery;\r\n}());\r\nexports.CompileQuery = CompileQuery;\r\nfunction createQueryValues(viewValues) {\r\n return collection_1.ListWrapper.flatten(viewValues.values.map(function (entry) {\r\n if (entry instanceof ViewQueryValues) {\r\n return mapNestedViews(entry.view.declarationElement.appElement, entry.view, createQueryValues(entry));\r\n }\r\n else {\r\n return entry;\r\n }\r\n }));\r\n}\r\nfunction mapNestedViews(declarationAppElement, view, expressions) {\r\n var adjustedExpressions = expressions.map(function (expr) {\r\n return o.replaceVarInExpression(o.THIS_EXPR.name, o.variable('nestedView'), expr);\r\n });\r\n return declarationAppElement.callMethod('mapNestedViews', [\r\n o.variable(view.className),\r\n o.fn([new o.FnParam('nestedView', view.classType)], [new o.ReturnStatement(o.literalArr(adjustedExpressions))])\r\n ]);\r\n}\r\nfunction createQueryList(query, directiveInstance, propertyName, compileView) {\r\n compileView.fields.push(new o.ClassField(propertyName, o.importType(identifiers_1.Identifiers.QueryList), [o.StmtModifier.Private]));\r\n var expr = o.THIS_EXPR.prop(propertyName);\r\n compileView.createMethod.addStmt(o.THIS_EXPR.prop(propertyName)\r\n .set(o.importExpr(identifiers_1.Identifiers.QueryList).instantiate([]))\r\n .toStmt());\r\n return expr;\r\n}\r\nexports.createQueryList = createQueryList;\r\nfunction addQueryToTokenMap(map, query) {\r\n query.meta.selectors.forEach(function (selector) {\r\n var entry = map.get(selector);\r\n if (lang_1.isBlank(entry)) {\r\n entry = [];\r\n map.add(selector, entry);\r\n }\r\n entry.push(query);\r\n });\r\n}\r\nexports.addQueryToTokenMap = addQueryToTokenMap;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV9xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X2NvbXBpbGVyL2NvbXBpbGVfcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUFpQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzVELDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTNELElBQVksQ0FBQyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDMUMsNEJBQTBCLGdCQUFnQixDQUFDLENBQUE7QUFXM0MscUJBQWdDLFFBQVEsQ0FBQyxDQUFBO0FBRXpDO0lBQ0UseUJBQW1CLElBQWlCLEVBQVMsTUFBNkM7UUFBdkUsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQXVDO0lBQUcsQ0FBQztJQUNoRyxzQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRUQ7SUFHRSxzQkFBbUIsSUFBMEIsRUFBUyxTQUF1QixFQUMxRCx3QkFBc0MsRUFBUyxJQUFpQjtRQURoRSxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDMUQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFjO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsK0JBQVEsR0FBUixVQUFTLEtBQW1CLEVBQUUsSUFBaUI7UUFDN0MsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksTUFBTSxHQUFxQixFQUFFLENBQUM7UUFDbEMsT0FBTyxnQkFBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0Qs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QUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVRlLDBCQUFrQixxQkFTakMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0lkZW50aWZpZXJzfSBmcm9tICcuLi9pZGVudGlmaWVycyc7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVRdWVyeU1ldGFkYXRhLFxuICBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NYXBcbn0gZnJvbSAnLi4vY29tcGlsZV9tZXRhZGF0YSc7XG5cbmltcG9ydCB7Q29tcGlsZVZpZXd9IGZyb20gJy4vY29tcGlsZV92aWV3JztcbmltcG9ydCB7Q29tcGlsZUVsZW1lbnR9IGZyb20gJy4vY29tcGlsZV9lbGVtZW50JztcbmltcG9ydCB7Q29tcGlsZU1ldGhvZH0gZnJvbSAnLi9jb21waWxlX21ldGhvZCc7XG5pbXBvcnQge2dldFByb3BlcnR5SW5WaWV3fSBmcm9tICcuL3V0aWwnO1xuXG5jbGFzcyBWaWV3UXVlcnlWYWx1ZXMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlldzogQ29tcGlsZVZpZXcsIHB1YmxpYyB2YWx1ZXM6IEFycmF5PG8uRXhwcmVzc2lvbiB8IFZpZXdRdWVyeVZhbHVlcz4pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlUXVlcnkge1xuICBwcml2YXRlIF92YWx1ZXM6IFZpZXdRdWVyeVZhbHVlcztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWV0YTogQ29tcGlsZVF1ZXJ5TWV0YWRhdGEsIHB1YmxpYyBxdWVyeUxpc3Q6IG8uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgcHVibGljIG93bmVyRGlyZWN0aXZlRXhwcmVzc2lvbjogby5FeHByZXNzaW9uLCBwdWJsaWMgdmlldzogQ29tcGlsZVZpZXcpIHtcbiAgICB0aGlzLl92YWx1ZXMgPSBuZXcgVmlld1F1ZXJ5VmFsdWVzKHZpZXcsIFtdKTtcbiAgfVxuXG4gIGFkZFZhbHVlKHZhbHVlOiBvLkV4cHJlc3Npb24sIHZpZXc6IENvbXBpbGVWaWV3KSB7XG4gICAgdmFyIGN1cnJlbnRWaWV3ID0gdmlldztcbiAgICB2YXIgZWxQYXRoOiBDb21waWxlRWxlbWVudFtdID0gW107XG4gICAgd2hpbGUgKGlzUHJlc2VudChjdXJyZW50VmlldykgJiYgY3VycmVudFZpZXcgIT09IHRoaXMudmlldykge1xuICAgICAgdmFyIHBhcmVudEVsID0gY3VycmVudFZpZXcuZGVjbGFyYXRpb25FbGVtZW50O1xuICAgICAgZWxQYXRoLnVuc2hpZnQocGFyZW50RWwpO1xuICAgICAgY3VycmVudFZpZXcgPSBwYXJlbnRFbC52aWV3O1xuICAgIH1cbiAgICB2YXIgcXVlcnlMaXN0Rm9yRGlydHlFeHByID0gZ2V0UHJvcGVydHlJblZpZXcodGhpcy5xdWVyeUxpc3QsIHZpZXcsIHRoaXMudmlldyk7XG5cbiAgICB2YXIgdmlld1ZhbHVlcyA9IHRoaXMuX3ZhbHVlcztcbiAgICBlbFBhdGguZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIHZhciBsYXN0ID1cbiAgICAgICAgICB2aWV3VmFsdWVzLnZhbHVlcy5sZW5ndGggPiAwID8gdmlld1ZhbHVlcy52YWx1ZXNbdmlld1ZhbHVlcy52YWx1ZXMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICAgICAgaWYgKGxhc3QgaW5zdGFuY2VvZiBWaWV3UXVlcnlWYWx1ZXMgJiYgbGFzdC52aWV3ID09PSBlbC5lbWJlZGRlZFZpZXcpIHtcbiAgICAgICAgdmlld1ZhbHVlcyA9IGxhc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbmV3Vmlld1ZhbHVlcyA9IG5ldyBWaWV3UXVlcnlWYWx1ZXMoZWwuZW1iZWRkZWRWaWV3LCBbXSk7XG4gICAgICAgIHZpZXdWYWx1ZXMudmFsdWVzLnB1c2gobmV3Vmlld1ZhbHVlcyk7XG4gICAgICAgIHZpZXdWYWx1ZXMgPSBuZXdWaWV3VmFsdWVzO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZpZXdWYWx1ZXMudmFsdWVzLnB1c2godmFsdWUpO1xuXG4gICAgaWYgKGVsUGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICB2aWV3LmRpcnR5UGFyZW50UXVlcmllc01ldGhvZC5hZGRTdG10KFxuICAgICAgICAgIHF1ZXJ5TGlzdEZvckRpcnR5RXhwci5jYWxsTWV0aG9kKCdzZXREaXJ0eScsIFtdKS50b1N0bXQoKSk7XG4gICAgfVxuICB9XG5cbiAgYWZ0ZXJDaGlsZHJlbih0YXJnZXRNZXRob2Q6IENvbXBpbGVNZXRob2QpIHtcbiAgICB2YXIgdmFsdWVzID0gY3JlYXRlUXVlcnlWYWx1ZXModGhpcy5fdmFsdWVzKTtcbiAgICB2YXIgdXBkYXRlU3RtdHMgPSBbdGhpcy5xdWVyeUxpc3QuY2FsbE1ldGhvZCgncmVzZXQnLCBbby5saXRlcmFsQXJyKHZhbHVlcyldKS50b1N0bXQoKV07XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLm93bmVyRGlyZWN0aXZlRXhwcmVzc2lvbikpIHtcbiAgICAgIHZhciB2YWx1ZUV4cHIgPSB0aGlzLm1ldGEuZmlyc3QgPyB0aGlzLnF1ZXJ5TGlzdC5wcm9wKCdmaXJzdCcpIDogdGhpcy5xdWVyeUxpc3Q7XG4gICAgICB1cGRhdGVTdG10cy5wdXNoKFxuICAgICAgICAgIHRoaXMub3duZXJEaXJlY3RpdmVFeHByZXNzaW9uLnByb3AodGhpcy5tZXRhLnByb3BlcnR5TmFtZSkuc2V0KHZhbHVlRXhwcikudG9TdG10KCkpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubWV0YS5maXJzdCkge1xuICAgICAgdXBkYXRlU3RtdHMucHVzaCh0aGlzLnF1ZXJ5TGlzdC5jYWxsTWV0aG9kKCdub3RpZnlPbkNoYW5nZXMnLCBbXSkudG9TdG10KCkpO1xuICAgIH1cbiAgICB0YXJnZXRNZXRob2QuYWRkU3RtdChuZXcgby5JZlN0bXQodGhpcy5xdWVyeUxpc3QucHJvcCgnZGlydHknKSwgdXBkYXRlU3RtdHMpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVRdWVyeVZhbHVlcyh2aWV3VmFsdWVzOiBWaWV3UXVlcnlWYWx1ZXMpOiBvLkV4cHJlc3Npb25bXSB7XG4gIHJldHVybiBMaXN0V3JhcHBlci5mbGF0dGVuKHZpZXdWYWx1ZXMudmFsdWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICBpZiAoZW50cnkgaW5zdGFuY2VvZiBWaWV3UXVlcnlWYWx1ZXMpIHtcbiAgICAgIHJldHVybiBtYXBOZXN0ZWRWaWV3cyhlbnRyeS52aWV3LmRlY2xhcmF0aW9uRWxlbWVudC5hcHBFbGVtZW50LCBlbnRyeS52aWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVF1ZXJ5VmFsdWVzKGVudHJ5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8by5FeHByZXNzaW9uPmVudHJ5O1xuICAgIH1cbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBtYXBOZXN0ZWRWaWV3cyhkZWNsYXJhdGlvbkFwcEVsZW1lbnQ6IG8uRXhwcmVzc2lvbiwgdmlldzogQ29tcGlsZVZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uczogby5FeHByZXNzaW9uW10pOiBvLkV4cHJlc3Npb24ge1xuICB2YXIgYWRqdXN0ZWRFeHByZXNzaW9uczogby5FeHByZXNzaW9uW10gPSBleHByZXNzaW9ucy5tYXAoKGV4cHIpID0+IHtcbiAgICByZXR1cm4gby5yZXBsYWNlVmFySW5FeHByZXNzaW9uKG8uVEhJU19FWFBSLm5hbWUsIG8udmFyaWFibGUoJ25lc3RlZFZpZXcnKSwgZXhwcik7XG4gIH0pO1xuICByZXR1cm4gZGVjbGFyYXRpb25BcHBFbGVtZW50LmNhbGxNZXRob2QoJ21hcE5lc3RlZFZpZXdzJywgW1xuICAgIG8udmFyaWFibGUodmlldy5jbGFzc05hbWUpLFxuICAgIG8uZm4oW25ldyBvLkZuUGFyYW0oJ25lc3RlZFZpZXcnLCB2aWV3LmNsYXNzVHlwZSldLFxuICAgICAgICAgW25ldyBvLlJldHVyblN0YXRlbWVudChvLmxpdGVyYWxBcnIoYWRqdXN0ZWRFeHByZXNzaW9ucykpXSlcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVRdWVyeUxpc3QocXVlcnk6IENvbXBpbGVRdWVyeU1ldGFkYXRhLCBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZywgY29tcGlsZVZpZXc6IENvbXBpbGVWaWV3KTogby5FeHByZXNzaW9uIHtcbiAgY29tcGlsZVZpZXcuZmllbGRzLnB1c2gobmV3IG8uQ2xhc3NGaWVsZChwcm9wZXJ0eU5hbWUsIG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5RdWVyeUxpc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvLlN0bXRNb2RpZmllci5Qcml2YXRlXSkpO1xuICB2YXIgZXhwciA9IG8uVEhJU19FWFBSLnByb3AocHJvcGVydHlOYW1lKTtcbiAgY29tcGlsZVZpZXcuY3JlYXRlTWV0aG9kLmFkZFN0bXQoby5USElTX0VYUFIucHJvcChwcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0KG8uaW1wb3J0RXhwcihJZGVudGlmaWVycy5RdWVyeUxpc3QpLmluc3RhbnRpYXRlKFtdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b1N0bXQoKSk7XG4gIHJldHVybiBleHByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkUXVlcnlUb1Rva2VuTWFwKG1hcDogQ29tcGlsZVRva2VuTWFwPENvbXBpbGVRdWVyeVtdPiwgcXVlcnk6IENvbXBpbGVRdWVyeSkge1xuICBxdWVyeS5tZXRhLnNlbGVjdG9ycy5mb3JFYWNoKChzZWxlY3RvcikgPT4ge1xuICAgIHZhciBlbnRyeSA9IG1hcC5nZXQoc2VsZWN0b3IpO1xuICAgIGlmIChpc0JsYW5rKGVudHJ5KSkge1xuICAgICAgZW50cnkgPSBbXTtcbiAgICAgIG1hcC5hZGQoc2VsZWN0b3IsIGVudHJ5KTtcbiAgICB9XG4gICAgZW50cnkucHVzaChxdWVyeSk7XG4gIH0pO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nvar constants_1 = require('./constants');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar template_ast_1 = require('../template_ast');\r\nvar compile_metadata_1 = require('../compile_metadata');\r\nvar util_1 = require('./util');\r\nvar compile_query_1 = require('./compile_query');\r\nvar compile_method_1 = require('./compile_method');\r\nvar CompileNode = (function () {\r\n function CompileNode(parent, view, nodeIndex, renderNode, sourceAst) {\r\n this.parent = parent;\r\n this.view = view;\r\n this.nodeIndex = nodeIndex;\r\n this.renderNode = renderNode;\r\n this.sourceAst = sourceAst;\r\n }\r\n CompileNode.prototype.isNull = function () { return lang_1.isBlank(this.renderNode); };\r\n CompileNode.prototype.isRootElement = function () { return this.view != this.parent.view; };\r\n return CompileNode;\r\n}());\r\nexports.CompileNode = CompileNode;\r\nvar CompileElement = (function (_super) {\r\n __extends(CompileElement, _super);\r\n function CompileElement(parent, view, nodeIndex, renderNode, sourceAst, component, _directives, _resolvedProvidersArray, hasViewContainer, hasEmbeddedView, references) {\r\n var _this = this;\r\n _super.call(this, parent, view, nodeIndex, renderNode, sourceAst);\r\n this.component = component;\r\n this._directives = _directives;\r\n this._resolvedProvidersArray = _resolvedProvidersArray;\r\n this.hasViewContainer = hasViewContainer;\r\n this.hasEmbeddedView = hasEmbeddedView;\r\n this._compViewExpr = null;\r\n this._instances = new compile_metadata_1.CompileTokenMap();\r\n this._queryCount = 0;\r\n this._queries = new compile_metadata_1.CompileTokenMap();\r\n this._componentConstructorViewQueryLists = [];\r\n this.contentNodesByNgContentIndex = null;\r\n this.referenceTokens = {};\r\n references.forEach(function (ref) { return _this.referenceTokens[ref.name] = ref.value; });\r\n this.elementRef = o.importExpr(identifiers_1.Identifiers.ElementRef).instantiate([this.renderNode]);\r\n this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.ElementRef), this.elementRef);\r\n this.injector = o.THIS_EXPR.callMethod('injector', [o.literal(this.nodeIndex)]);\r\n this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.Injector), this.injector);\r\n this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.Renderer), o.THIS_EXPR.prop('renderer'));\r\n if (this.hasViewContainer || this.hasEmbeddedView || lang_1.isPresent(this.component)) {\r\n this._createAppElement();\r\n }\r\n }\r\n CompileElement.createNull = function () {\r\n return new CompileElement(null, null, null, null, null, null, [], [], false, false, []);\r\n };\r\n CompileElement.prototype._createAppElement = function () {\r\n var fieldName = \"_appEl_\" + this.nodeIndex;\r\n var parentNodeIndex = this.isRootElement() ? null : this.parent.nodeIndex;\r\n this.view.fields.push(new o.ClassField(fieldName, o.importType(identifiers_1.Identifiers.AppElement), [o.StmtModifier.Private]));\r\n var statement = o.THIS_EXPR.prop(fieldName)\r\n .set(o.importExpr(identifiers_1.Identifiers.AppElement)\r\n .instantiate([\r\n o.literal(this.nodeIndex),\r\n o.literal(parentNodeIndex),\r\n o.THIS_EXPR,\r\n this.renderNode\r\n ]))\r\n .toStmt();\r\n this.view.createMethod.addStmt(statement);\r\n this.appElement = o.THIS_EXPR.prop(fieldName);\r\n this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.AppElement), this.appElement);\r\n };\r\n CompileElement.prototype.setComponentView = function (compViewExpr) {\r\n this._compViewExpr = compViewExpr;\r\n this.contentNodesByNgContentIndex =\r\n collection_1.ListWrapper.createFixedSize(this.component.template.ngContentSelectors.length);\r\n for (var i = 0; i < this.contentNodesByNgContentIndex.length; i++) {\r\n this.contentNodesByNgContentIndex[i] = [];\r\n }\r\n };\r\n CompileElement.prototype.setEmbeddedView = function (embeddedView) {\r\n this.embeddedView = embeddedView;\r\n if (lang_1.isPresent(embeddedView)) {\r\n var createTemplateRefExpr = o.importExpr(identifiers_1.Identifiers.TemplateRef_)\r\n .instantiate([this.appElement, this.embeddedView.viewFactory]);\r\n var provider = new compile_metadata_1.CompileProviderMetadata({ token: identifiers_1.identifierToken(identifiers_1.Identifiers.TemplateRef), useValue: createTemplateRefExpr });\r\n // Add TemplateRef as first provider as it does not have deps on other providers\r\n this._resolvedProvidersArray.unshift(new template_ast_1.ProviderAst(provider.token, false, true, [provider], template_ast_1.ProviderAstType.Builtin, this.sourceAst.sourceSpan));\r\n }\r\n };\r\n CompileElement.prototype.beforeChildren = function () {\r\n var _this = this;\r\n if (this.hasViewContainer) {\r\n this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.ViewContainerRef), this.appElement.prop('vcRef'));\r\n }\r\n this._resolvedProviders = new compile_metadata_1.CompileTokenMap();\r\n this._resolvedProvidersArray.forEach(function (provider) {\r\n return _this._resolvedProviders.add(provider.token, provider);\r\n });\r\n // create all the provider instances, some in the view constructor,\r\n // some as getters. We rely on the fact that they are already sorted topologically.\r\n this._resolvedProviders.values().forEach(function (resolvedProvider) {\r\n var providerValueExpressions = resolvedProvider.providers.map(function (provider) {\r\n if (lang_1.isPresent(provider.useExisting)) {\r\n return _this._getDependency(resolvedProvider.providerType, new compile_metadata_1.CompileDiDependencyMetadata({ token: provider.useExisting }));\r\n }\r\n else if (lang_1.isPresent(provider.useFactory)) {\r\n var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useFactory.diDeps;\r\n var depsExpr = deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep); });\r\n return o.importExpr(provider.useFactory).callFn(depsExpr);\r\n }\r\n else if (lang_1.isPresent(provider.useClass)) {\r\n var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useClass.diDeps;\r\n var depsExpr = deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep); });\r\n return o.importExpr(provider.useClass)\r\n .instantiate(depsExpr, o.importType(provider.useClass));\r\n }\r\n else {\r\n if (provider.useValue instanceof compile_metadata_1.CompileIdentifierMetadata) {\r\n return o.importExpr(provider.useValue);\r\n }\r\n else if (provider.useValue instanceof o.Expression) {\r\n return provider.useValue;\r\n }\r\n else {\r\n return o.literal(provider.useValue);\r\n }\r\n }\r\n });\r\n var propName = \"_\" + resolvedProvider.token.name + \"_\" + _this.nodeIndex + \"_\" + _this._instances.size;\r\n var instance = createProviderProperty(propName, resolvedProvider, providerValueExpressions, resolvedProvider.multiProvider, resolvedProvider.eager, _this);\r\n _this._instances.add(resolvedProvider.token, instance);\r\n });\r\n this.directiveInstances =\r\n this._directives.map(function (directive) { return _this._instances.get(identifiers_1.identifierToken(directive.type)); });\r\n for (var i = 0; i < this.directiveInstances.length; i++) {\r\n var directiveInstance = this.directiveInstances[i];\r\n var directive = this._directives[i];\r\n directive.queries.forEach(function (queryMeta) { _this._addQuery(queryMeta, directiveInstance); });\r\n }\r\n var queriesWithReads = [];\r\n this._resolvedProviders.values().forEach(function (resolvedProvider) {\r\n var queriesForProvider = _this._getQueriesFor(resolvedProvider.token);\r\n collection_1.ListWrapper.addAll(queriesWithReads, queriesForProvider.map(function (query) { return new _QueryWithRead(query, resolvedProvider.token); }));\r\n });\r\n collection_1.StringMapWrapper.forEach(this.referenceTokens, function (_, varName) {\r\n var token = _this.referenceTokens[varName];\r\n var varValue;\r\n if (lang_1.isPresent(token)) {\r\n varValue = _this._instances.get(token);\r\n }\r\n else {\r\n varValue = _this.renderNode;\r\n }\r\n _this.view.locals.set(varName, varValue);\r\n var varToken = new compile_metadata_1.CompileTokenMetadata({ value: varName });\r\n collection_1.ListWrapper.addAll(queriesWithReads, _this._getQueriesFor(varToken)\r\n .map(function (query) { return new _QueryWithRead(query, varToken); }));\r\n });\r\n queriesWithReads.forEach(function (queryWithRead) {\r\n var value;\r\n if (lang_1.isPresent(queryWithRead.read.identifier)) {\r\n // query for an identifier\r\n value = _this._instances.get(queryWithRead.read);\r\n }\r\n else {\r\n // query for a reference\r\n var token = _this.referenceTokens[queryWithRead.read.value];\r\n if (lang_1.isPresent(token)) {\r\n value = _this._instances.get(token);\r\n }\r\n else {\r\n value = _this.elementRef;\r\n }\r\n }\r\n if (lang_1.isPresent(value)) {\r\n queryWithRead.query.addValue(value, _this.view);\r\n }\r\n });\r\n if (lang_1.isPresent(this.component)) {\r\n var componentConstructorViewQueryList = lang_1.isPresent(this.component) ? o.literalArr(this._componentConstructorViewQueryLists) :\r\n o.NULL_EXPR;\r\n var compExpr = lang_1.isPresent(this.getComponent()) ? this.getComponent() : o.NULL_EXPR;\r\n this.view.createMethod.addStmt(this.appElement.callMethod('initComponent', [compExpr, componentConstructorViewQueryList, this._compViewExpr])\r\n .toStmt());\r\n }\r\n };\r\n CompileElement.prototype.afterChildren = function (childNodeCount) {\r\n var _this = this;\r\n this._resolvedProviders.values().forEach(function (resolvedProvider) {\r\n // Note: afterChildren is called after recursing into children.\r\n // This is good so that an injector match in an element that is closer to a requesting element\r\n // matches first.\r\n var providerExpr = _this._instances.get(resolvedProvider.token);\r\n // Note: view providers are only visible on the injector of that element.\r\n // This is not fully correct as the rules during codegen don't allow a directive\r\n // to get hold of a view provdier on the same element. We still do this semantic\r\n // as it simplifies our model to having only one runtime injector per element.\r\n var providerChildNodeCount = resolvedProvider.providerType === template_ast_1.ProviderAstType.PrivateService ? 0 : childNodeCount;\r\n _this.view.injectorGetMethod.addStmt(createInjectInternalCondition(_this.nodeIndex, providerChildNodeCount, resolvedProvider, providerExpr));\r\n });\r\n this._queries.values().forEach(function (queries) {\r\n return queries.forEach(function (query) { return query.afterChildren(_this.view.updateContentQueriesMethod); });\r\n });\r\n };\r\n CompileElement.prototype.addContentNode = function (ngContentIndex, nodeExpr) {\r\n this.contentNodesByNgContentIndex[ngContentIndex].push(nodeExpr);\r\n };\r\n CompileElement.prototype.getComponent = function () {\r\n return lang_1.isPresent(this.component) ? this._instances.get(identifiers_1.identifierToken(this.component.type)) :\r\n null;\r\n };\r\n CompileElement.prototype.getProviderTokens = function () {\r\n return this._resolvedProviders.values().map(function (resolvedProvider) { return util_1.createDiTokenExpression(resolvedProvider.token); });\r\n };\r\n CompileElement.prototype._getQueriesFor = function (token) {\r\n var result = [];\r\n var currentEl = this;\r\n var distance = 0;\r\n var queries;\r\n while (!currentEl.isNull()) {\r\n queries = currentEl._queries.get(token);\r\n if (lang_1.isPresent(queries)) {\r\n collection_1.ListWrapper.addAll(result, queries.filter(function (query) { return query.meta.descendants || distance <= 1; }));\r\n }\r\n if (currentEl._directives.length > 0) {\r\n distance++;\r\n }\r\n currentEl = currentEl.parent;\r\n }\r\n queries = this.view.componentView.viewQueries.get(token);\r\n if (lang_1.isPresent(queries)) {\r\n collection_1.ListWrapper.addAll(result, queries);\r\n }\r\n return result;\r\n };\r\n CompileElement.prototype._addQuery = function (queryMeta, directiveInstance) {\r\n var propName = \"_query_\" + queryMeta.selectors[0].name + \"_\" + this.nodeIndex + \"_\" + this._queryCount++;\r\n var queryList = compile_query_1.createQueryList(queryMeta, directiveInstance, propName, this.view);\r\n var query = new compile_query_1.CompileQuery(queryMeta, queryList, directiveInstance, this.view);\r\n compile_query_1.addQueryToTokenMap(this._queries, query);\r\n return query;\r\n };\r\n CompileElement.prototype._getLocalDependency = function (requestingProviderType, dep) {\r\n var result = null;\r\n // constructor content query\r\n if (lang_1.isBlank(result) && lang_1.isPresent(dep.query)) {\r\n result = this._addQuery(dep.query, null).queryList;\r\n }\r\n // constructor view query\r\n if (lang_1.isBlank(result) && lang_1.isPresent(dep.viewQuery)) {\r\n result = compile_query_1.createQueryList(dep.viewQuery, null, \"_viewQuery_\" + dep.viewQuery.selectors[0].name + \"_\" + this.nodeIndex + \"_\" + this._componentConstructorViewQueryLists.length, this.view);\r\n this._componentConstructorViewQueryLists.push(result);\r\n }\r\n if (lang_1.isPresent(dep.token)) {\r\n // access builtins with special visibility\r\n if (lang_1.isBlank(result)) {\r\n if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ChangeDetectorRef))) {\r\n if (requestingProviderType === template_ast_1.ProviderAstType.Component) {\r\n return this._compViewExpr.prop('ref');\r\n }\r\n else {\r\n return o.THIS_EXPR.prop('ref');\r\n }\r\n }\r\n }\r\n // access regular providers on the element\r\n if (lang_1.isBlank(result)) {\r\n result = this._instances.get(dep.token);\r\n }\r\n }\r\n return result;\r\n };\r\n CompileElement.prototype._getDependency = function (requestingProviderType, dep) {\r\n var currElement = this;\r\n var result = null;\r\n if (dep.isValue) {\r\n result = o.literal(dep.value);\r\n }\r\n if (lang_1.isBlank(result) && !dep.isSkipSelf) {\r\n result = this._getLocalDependency(requestingProviderType, dep);\r\n }\r\n // check parent elements\r\n while (lang_1.isBlank(result) && !currElement.parent.isNull()) {\r\n currElement = currElement.parent;\r\n result = currElement._getLocalDependency(template_ast_1.ProviderAstType.PublicService, new compile_metadata_1.CompileDiDependencyMetadata({ token: dep.token }));\r\n }\r\n if (lang_1.isBlank(result)) {\r\n result = util_1.injectFromViewParentInjector(dep.token, dep.isOptional);\r\n }\r\n if (lang_1.isBlank(result)) {\r\n result = o.NULL_EXPR;\r\n }\r\n return util_1.getPropertyInView(result, this.view, currElement.view);\r\n };\r\n return CompileElement;\r\n}(CompileNode));\r\nexports.CompileElement = CompileElement;\r\nfunction createInjectInternalCondition(nodeIndex, childNodeCount, provider, providerExpr) {\r\n var indexCondition;\r\n if (childNodeCount > 0) {\r\n indexCondition = o.literal(nodeIndex)\r\n .lowerEquals(constants_1.InjectMethodVars.requestNodeIndex)\r\n .and(constants_1.InjectMethodVars.requestNodeIndex.lowerEquals(o.literal(nodeIndex + childNodeCount)));\r\n }\r\n else {\r\n indexCondition = o.literal(nodeIndex).identical(constants_1.InjectMethodVars.requestNodeIndex);\r\n }\r\n return new o.IfStmt(constants_1.InjectMethodVars.token.identical(util_1.createDiTokenExpression(provider.token)).and(indexCondition), [new o.ReturnStatement(providerExpr)]);\r\n}\r\nfunction createProviderProperty(propName, provider, providerValueExpressions, isMulti, isEager, compileElement) {\r\n var view = compileElement.view;\r\n var resolvedProviderValueExpr;\r\n var type;\r\n if (isMulti) {\r\n resolvedProviderValueExpr = o.literalArr(providerValueExpressions);\r\n type = new o.ArrayType(o.DYNAMIC_TYPE);\r\n }\r\n else {\r\n resolvedProviderValueExpr = providerValueExpressions[0];\r\n type = providerValueExpressions[0].type;\r\n }\r\n if (lang_1.isBlank(type)) {\r\n type = o.DYNAMIC_TYPE;\r\n }\r\n if (isEager) {\r\n view.fields.push(new o.ClassField(propName, type, [o.StmtModifier.Private]));\r\n view.createMethod.addStmt(o.THIS_EXPR.prop(propName).set(resolvedProviderValueExpr).toStmt());\r\n }\r\n else {\r\n var internalField = \"_\" + propName;\r\n view.fields.push(new o.ClassField(internalField, type, [o.StmtModifier.Private]));\r\n var getter = new compile_method_1.CompileMethod(view);\r\n getter.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);\r\n // Note: Equals is important for JS so that it also checks the undefined case!\r\n getter.addStmt(new o.IfStmt(o.THIS_EXPR.prop(internalField).isBlank(), [o.THIS_EXPR.prop(internalField).set(resolvedProviderValueExpr).toStmt()]));\r\n getter.addStmt(new o.ReturnStatement(o.THIS_EXPR.prop(internalField)));\r\n view.getters.push(new o.ClassGetter(propName, getter.finish(), type));\r\n }\r\n return o.THIS_EXPR.prop(propName);\r\n}\r\nvar _QueryWithRead = (function () {\r\n function _QueryWithRead(query, match) {\r\n this.query = query;\r\n this.read = lang_1.isPresent(query.meta.read) ? query.meta.read : match;\r\n }\r\n return _QueryWithRead;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV9lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvY29tcGlsZV9lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQVksQ0FBQyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDMUMsNEJBQTJDLGdCQUFnQixDQUFDLENBQUE7QUFDNUQsMEJBQStCLGFBQWEsQ0FBQyxDQUFBO0FBRTdDLHFCQUFpQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzVELDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdFLDZCQUFzRSxpQkFBaUIsQ0FBQyxDQUFBO0FBQ3hGLGlDQVNPLHFCQUFxQixDQUFDLENBQUE7QUFDN0IscUJBQXVGLFFBQVEsQ0FBQyxDQUFBO0FBQ2hHLDhCQUFnRSxpQkFBaUIsQ0FBQyxDQUFBO0FBQ2xGLCtCQUE0QixrQkFBa0IsQ0FBQyxDQUFBO0FBRS9DO0lBQ0UscUJBQW1CLE1BQXNCLEVBQVMsSUFBaUIsRUFBUyxTQUFpQixFQUMxRSxVQUF3QixFQUFTLFNBQXNCO1FBRHZELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDMUUsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUFTLGNBQVMsR0FBVCxTQUFTLENBQWE7SUFBRyxDQUFDO0lBRTlFLDRCQUFNLEdBQU4sY0FBb0IsTUFBTSxDQUFDLGNBQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRELG1DQUFhLEdBQWIsY0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLGtCQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFQWSxtQkFBVyxjQU92QixDQUFBO0FBRUQ7SUFBb0Msa0NBQVc7SUFxQjdDLHdCQUFZLE1BQXNCLEVBQUUsSUFBaUIsRUFBRSxTQUFpQixFQUM1RCxVQUF3QixFQUFFLFNBQXNCLEVBQ3pDLFNBQW1DLEVBQ2xDLFdBQXVDLEVBQ3ZDLHVCQUFzQyxFQUFTLGdCQUF5QixFQUN6RSxlQUF3QixFQUFFLFVBQTBCO1FBMUJ6RSxpQkEyVEM7UUFoU0csa0JBQU0sTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSnJDLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUE0QjtRQUN2Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWU7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVM7UUFDekUsb0JBQWUsR0FBZixlQUFlLENBQVM7UUFyQm5DLGtCQUFhLEdBQWlCLElBQUksQ0FBQztRQUluQyxlQUFVLEdBQUcsSUFBSSxrQ0FBZSxFQUFnQixDQUFDO1FBR2pELGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLGtDQUFlLEVBQWtCLENBQUM7UUFDakQsd0NBQW1DLEdBQW1CLEVBQUUsQ0FBQztRQUUxRCxpQ0FBNEIsR0FBMEIsSUFBSSxDQUFDO1FBWWhFLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUExQyxDQUEwQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLHlCQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsNkJBQWUsQ0FBQyx5QkFBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyw2QkFBZSxDQUFDLHlCQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLDZCQUFlLENBQUMseUJBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLGdCQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQXRDTSx5QkFBVSxHQUFqQjtRQUNFLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQXNDTywwQ0FBaUIsR0FBekI7UUFDRSxJQUFJLFNBQVMsR0FBRyxZQUFVLElBQUksQ0FBQyxTQUFXLENBQUM7UUFDM0MsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLHlCQUFXLENBQUMsVUFBVSxDQUFDLEVBQy9DLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLHlCQUFXLENBQUMsVUFBVSxDQUFDO2FBQy9CLFdBQVcsQ0FBQztZQUNYLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQixDQUFDLENBQUMsU0FBUztZQUNYLElBQUksQ0FBQyxVQUFVO1NBQ2hCLENBQUMsQ0FBQzthQUNYLE1BQU0sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLDZCQUFlLENBQUMseUJBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELHlDQUFnQixHQUFoQixVQUFpQixZQUEwQjtRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsNEJBQTRCO1lBQzdCLHdCQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25GLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCx3Q0FBZSxHQUFmLFVBQWdCLFlBQXlCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUkscUJBQXFCLEdBQ3JCLENBQUMsQ0FBQyxVQUFVLENBQUMseUJBQVcsQ0FBQyxZQUFZLENBQUM7aUJBQ2pDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksUUFBUSxHQUFHLElBQUksMENBQXVCLENBQ3RDLEVBQUMsS0FBSyxFQUFFLDZCQUFlLENBQUMseUJBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUMsQ0FBQyxDQUFDO1lBQ3hGLGdGQUFnRjtZQUNoRixJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLElBQUksMEJBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFDdkMsOEJBQWUsQ0FBQyxPQUFPLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDO0lBQ0gsQ0FBQztJQUVELHVDQUFjLEdBQWQ7UUFBQSxpQkFxR0M7UUFwR0MsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyw2QkFBZSxDQUFDLHlCQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0NBQWUsRUFBZSxDQUFDO1FBQzdELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsVUFBQSxRQUFRO1lBQ0osT0FBQSxLQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQXJELENBQXFELENBQUMsQ0FBQztRQUVoRyxtRUFBbUU7UUFDbkUsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBQyxnQkFBZ0I7WUFDeEQsSUFBSSx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQUMsUUFBUTtnQkFDckUsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsS0FBSSxDQUFDLGNBQWMsQ0FDdEIsZ0JBQWdCLENBQUMsWUFBWSxFQUM3QixJQUFJLDhDQUEyQixDQUFDLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLENBQUM7Z0JBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxJQUFJLEdBQUcsZ0JBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDakYsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLEdBQUcsSUFBSyxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxFQUF2RCxDQUF1RCxDQUFDLENBQUM7b0JBQzFGLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELENBQUM7Z0JBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxJQUFJLEdBQUcsZ0JBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDL0UsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFDLEdBQUcsSUFBSyxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxFQUF2RCxDQUF1RCxDQUFDLENBQUM7b0JBQzFGLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7eUJBQ2pDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxZQUFZLDRDQUF5QixDQUFDLENBQUMsQ0FBQzt3QkFDM0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN6QyxDQUFDO29CQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUNyRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztvQkFDM0IsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDTixNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxRQUFRLEdBQUcsTUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFJLEtBQUksQ0FBQyxTQUFTLFNBQUksS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFNLENBQUM7WUFDM0YsSUFBSSxRQUFRLEdBQ1Isc0JBQXNCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUNwRCxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUksQ0FBQyxDQUFDO1lBQ3pGLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0I7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQyxTQUFTLElBQUssT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyw2QkFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFwRCxDQUFvRCxDQUFDLENBQUM7UUFDOUYsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLFNBQVMsSUFBTyxLQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELElBQUksZ0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUMsZ0JBQWdCO1lBQ3hELElBQUksa0JBQWtCLEdBQUcsS0FBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRSx3QkFBVyxDQUFDLE1BQU0sQ0FDZCxnQkFBZ0IsRUFDaEIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFqRCxDQUFpRCxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQztRQUNILDZCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQUMsQ0FBQyxFQUFFLE9BQU87WUFDeEQsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxJQUFJLFFBQVEsQ0FBQztZQUNiLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixRQUFRLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLFFBQVEsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDO1lBQzdCLENBQUM7WUFDRCxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksUUFBUSxHQUFHLElBQUksdUNBQW9CLENBQUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztZQUMxRCx3QkFBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztpQkFDeEIsR0FBRyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFuQyxDQUFtQyxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FBQztRQUNILGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFDLGFBQWE7WUFDckMsSUFBSSxLQUFtQixDQUFDO1lBQ3hCLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLDBCQUEwQjtnQkFDMUIsS0FBSyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sd0JBQXdCO2dCQUN4QixJQUFJLEtBQUssR0FBRyxLQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNELEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixLQUFLLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ04sS0FBSyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1lBQ0QsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksaUNBQWlDLEdBQ2pDLGdCQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDO2dCQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVDLElBQUksUUFBUSxHQUFHLGdCQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbEYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FDUCxlQUFlLEVBQ2YsQ0FBQyxRQUFRLEVBQUUsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUNoRixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsc0NBQWEsR0FBYixVQUFjLGNBQXNCO1FBQXBDLGlCQW1CQztRQWxCQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUMsZ0JBQWdCO1lBQ3hELCtEQUErRDtZQUMvRCw4RkFBOEY7WUFDOUYsaUJBQWlCO1lBQ2pCLElBQUksWUFBWSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELHlFQUF5RTtZQUN6RSxnRkFBZ0Y7WUFDaEYsZ0ZBQWdGO1lBQ2hGLDhFQUE4RTtZQUM5RSxJQUFJLHNCQUFzQixHQUN0QixnQkFBZ0IsQ0FBQyxZQUFZLEtBQUssOEJBQWUsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUMxRixLQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FDN0QsS0FBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQzFCLFVBQUMsT0FBTztZQUNKLE9BQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxFQUF6RCxDQUF5RCxDQUFDO1FBQXJGLENBQXFGLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsdUNBQWMsR0FBZCxVQUFlLGNBQXNCLEVBQUUsUUFBc0I7UUFDM0QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQscUNBQVksR0FBWjtRQUNFLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyw2QkFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDO0lBQzFDLENBQUM7SUFFRCwwQ0FBaUIsR0FBakI7UUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FDdkMsVUFBQyxnQkFBZ0IsSUFBSyxPQUFBLDhCQUF1QixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUEvQyxDQUErQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLHVDQUFjLEdBQXRCLFVBQXVCLEtBQTJCO1FBQ2hELElBQUksTUFBTSxHQUFtQixFQUFFLENBQUM7UUFDaEMsSUFBSSxTQUFTLEdBQW1CLElBQUksQ0FBQztRQUNyQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxPQUF1QixDQUFDO1FBQzVCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMzQixPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLHdCQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDTixPQUFPLENBQUMsTUFBTSxDQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksUUFBUSxJQUFJLENBQUMsRUFBdkMsQ0FBdUMsQ0FBQyxDQUFDLENBQUM7WUFDekYsQ0FBQztZQUNELEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLFFBQVEsRUFBRSxDQUFDO1lBQ2IsQ0FBQztZQUNELFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2Qix3QkFBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGtDQUFTLEdBQWpCLFVBQWtCLFNBQStCLEVBQy9CLGlCQUErQjtRQUMvQyxJQUFJLFFBQVEsR0FBRyxZQUFVLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFJLElBQUksQ0FBQyxTQUFTLFNBQUksSUFBSSxDQUFDLFdBQVcsRUFBSSxDQUFDO1FBQy9GLElBQUksU0FBUyxHQUFHLCtCQUFlLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkYsSUFBSSxLQUFLLEdBQUcsSUFBSSw0QkFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLGtDQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyw0Q0FBbUIsR0FBM0IsVUFBNEIsc0JBQXVDLEVBQ3ZDLEdBQWdDO1FBQzFELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQiw0QkFBNEI7UUFDNUIsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGdCQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNyRCxDQUFDO1FBRUQseUJBQXlCO1FBQ3pCLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxnQkFBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsTUFBTSxHQUFHLCtCQUFlLENBQ3BCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUNuQixnQkFBYyxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQUksSUFBSSxDQUFDLFNBQVMsU0FBSSxJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBUSxFQUNwSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsMENBQTBDO1lBQzFDLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDZCQUFlLENBQUMseUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2RSxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsS0FBSyw4QkFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7d0JBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEMsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDTixNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCwwQ0FBMEM7WUFDMUMsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLHVDQUFjLEdBQXRCLFVBQXVCLHNCQUF1QyxFQUN2QyxHQUFnQztRQUNyRCxJQUFJLFdBQVcsR0FBbUIsSUFBSSxDQUFDO1FBQ3ZDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNoQixNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELHdCQUF3QjtRQUN4QixPQUFPLGNBQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUN2RCxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNqQyxNQUFNLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLDhCQUFlLENBQUMsYUFBYSxFQUM3QixJQUFJLDhDQUEyQixDQUFDLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsTUFBTSxHQUFHLG1DQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLENBQUMsd0JBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUEzVEQsQ0FBb0MsV0FBVyxHQTJUOUM7QUEzVFksc0JBQWMsaUJBMlQxQixDQUFBO0FBRUQsdUNBQXVDLFNBQWlCLEVBQUUsY0FBc0IsRUFDekMsUUFBcUIsRUFDckIsWUFBMEI7SUFDL0QsSUFBSSxjQUFjLENBQUM7SUFDbkIsRUFBRSxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsY0FBYyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO2FBQ2YsV0FBVyxDQUFDLDRCQUFnQixDQUFDLGdCQUFnQixDQUFDO2FBQzlDLEdBQUcsQ0FBQyw0QkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQzlDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixjQUFjLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsNEJBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FDZiw0QkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLDhCQUF1QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFDN0YsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxnQ0FBZ0MsUUFBZ0IsRUFBRSxRQUFxQixFQUN2Qyx3QkFBd0MsRUFBRSxPQUFnQixFQUMxRCxPQUFnQixFQUFFLGNBQThCO0lBQzlFLElBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDL0IsSUFBSSx5QkFBeUIsQ0FBQztJQUM5QixJQUFJLElBQUksQ0FBQztJQUNULEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWix5QkFBeUIsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbkUsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04seUJBQXlCLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLGFBQWEsR0FBRyxNQUFJLFFBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksTUFBTSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFFLDhFQUE4RTtRQUM5RSxNQUFNLENBQUMsT0FBTyxDQUNWLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFDekMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDtJQUVFLHdCQUFtQixLQUFtQixFQUFFLEtBQTJCO1FBQWhELFVBQUssR0FBTCxLQUFLLENBQWM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ25FLENBQUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUFMRCxJQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0lkZW50aWZpZXJzLCBpZGVudGlmaWVyVG9rZW59IGZyb20gJy4uL2lkZW50aWZpZXJzJztcbmltcG9ydCB7SW5qZWN0TWV0aG9kVmFyc30gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtDb21waWxlVmlld30gZnJvbSAnLi9jb21waWxlX3ZpZXcnO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtUZW1wbGF0ZUFzdCwgUHJvdmlkZXJBc3QsIFByb3ZpZGVyQXN0VHlwZSwgUmVmZXJlbmNlQXN0fSBmcm9tICcuLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtcbiAgQ29tcGlsZVRva2VuTWFwLFxuICBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gIENvbXBpbGVUb2tlbk1ldGFkYXRhLFxuICBDb21waWxlUXVlcnlNZXRhZGF0YSxcbiAgQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEsXG4gIENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSxcbiAgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSxcbiAgQ29tcGlsZVR5cGVNZXRhZGF0YSxcbn0gZnJvbSAnLi4vY29tcGlsZV9tZXRhZGF0YSc7XG5pbXBvcnQge2dldFByb3BlcnR5SW5WaWV3LCBjcmVhdGVEaVRva2VuRXhwcmVzc2lvbiwgaW5qZWN0RnJvbVZpZXdQYXJlbnRJbmplY3Rvcn0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7Q29tcGlsZVF1ZXJ5LCBjcmVhdGVRdWVyeUxpc3QsIGFkZFF1ZXJ5VG9Ub2tlbk1hcH0gZnJvbSAnLi9jb21waWxlX3F1ZXJ5JztcbmltcG9ydCB7Q29tcGlsZU1ldGhvZH0gZnJvbSAnLi9jb21waWxlX21ldGhvZCc7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJlbnQ6IENvbXBpbGVFbGVtZW50LCBwdWJsaWMgdmlldzogQ29tcGlsZVZpZXcsIHB1YmxpYyBub2RlSW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIHJlbmRlck5vZGU6IG8uRXhwcmVzc2lvbiwgcHVibGljIHNvdXJjZUFzdDogVGVtcGxhdGVBc3QpIHt9XG5cbiAgaXNOdWxsKCk6IGJvb2xlYW4geyByZXR1cm4gaXNCbGFuayh0aGlzLnJlbmRlck5vZGUpOyB9XG5cbiAgaXNSb290RWxlbWVudCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMudmlldyAhPSB0aGlzLnBhcmVudC52aWV3OyB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlRWxlbWVudCBleHRlbmRzIENvbXBpbGVOb2RlIHtcbiAgc3RhdGljIGNyZWF0ZU51bGwoKTogQ29tcGlsZUVsZW1lbnQge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZUVsZW1lbnQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgW10sIFtdLCBmYWxzZSwgZmFsc2UsIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBWaWV3RXhwcjogby5FeHByZXNzaW9uID0gbnVsbDtcbiAgcHVibGljIGFwcEVsZW1lbnQ6IG8uUmVhZFByb3BFeHByO1xuICBwdWJsaWMgZWxlbWVudFJlZjogby5FeHByZXNzaW9uO1xuICBwdWJsaWMgaW5qZWN0b3I6IG8uRXhwcmVzc2lvbjtcbiAgcHJpdmF0ZSBfaW5zdGFuY2VzID0gbmV3IENvbXBpbGVUb2tlbk1hcDxvLkV4cHJlc3Npb24+KCk7XG4gIHByaXZhdGUgX3Jlc29sdmVkUHJvdmlkZXJzOiBDb21waWxlVG9rZW5NYXA8UHJvdmlkZXJBc3Q+O1xuXG4gIHByaXZhdGUgX3F1ZXJ5Q291bnQgPSAwO1xuICBwcml2YXRlIF9xdWVyaWVzID0gbmV3IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlbXT4oKTtcbiAgcHJpdmF0ZSBfY29tcG9uZW50Q29uc3RydWN0b3JWaWV3UXVlcnlMaXN0czogby5FeHByZXNzaW9uW10gPSBbXTtcblxuICBwdWJsaWMgY29udGVudE5vZGVzQnlOZ0NvbnRlbnRJbmRleDogQXJyYXk8by5FeHByZXNzaW9uPltdID0gbnVsbDtcbiAgcHVibGljIGVtYmVkZGVkVmlldzogQ29tcGlsZVZpZXc7XG4gIHB1YmxpYyBkaXJlY3RpdmVJbnN0YW5jZXM6IG8uRXhwcmVzc2lvbltdO1xuICBwdWJsaWMgcmVmZXJlbmNlVG9rZW5zOiB7W2tleTogc3RyaW5nXTogQ29tcGlsZVRva2VuTWV0YWRhdGF9O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29tcGlsZUVsZW1lbnQsIHZpZXc6IENvbXBpbGVWaWV3LCBub2RlSW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcmVuZGVyTm9kZTogby5FeHByZXNzaW9uLCBzb3VyY2VBc3Q6IFRlbXBsYXRlQXN0LFxuICAgICAgICAgICAgICBwdWJsaWMgY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICBwcml2YXRlIF9yZXNvbHZlZFByb3ZpZGVyc0FycmF5OiBQcm92aWRlckFzdFtdLCBwdWJsaWMgaGFzVmlld0NvbnRhaW5lcjogYm9vbGVhbixcbiAgICAgICAgICAgICAgcHVibGljIGhhc0VtYmVkZGVkVmlldzogYm9vbGVhbiwgcmVmZXJlbmNlczogUmVmZXJlbmNlQXN0W10pIHtcbiAgICBzdXBlcihwYXJlbnQsIHZpZXcsIG5vZGVJbmRleCwgcmVuZGVyTm9kZSwgc291cmNlQXN0KTtcbiAgICB0aGlzLnJlZmVyZW5jZVRva2VucyA9IHt9O1xuICAgIHJlZmVyZW5jZXMuZm9yRWFjaChyZWYgPT4gdGhpcy5yZWZlcmVuY2VUb2tlbnNbcmVmLm5hbWVdID0gcmVmLnZhbHVlKTtcblxuICAgIHRoaXMuZWxlbWVudFJlZiA9IG8uaW1wb3J0RXhwcihJZGVudGlmaWVycy5FbGVtZW50UmVmKS5pbnN0YW50aWF0ZShbdGhpcy5yZW5kZXJOb2RlXSk7XG4gICAgdGhpcy5faW5zdGFuY2VzLmFkZChpZGVudGlmaWVyVG9rZW4oSWRlbnRpZmllcnMuRWxlbWVudFJlZiksIHRoaXMuZWxlbWVudFJlZik7XG4gICAgdGhpcy5pbmplY3RvciA9IG8uVEhJU19FWFBSLmNhbGxNZXRob2QoJ2luamVjdG9yJywgW28ubGl0ZXJhbCh0aGlzLm5vZGVJbmRleCldKTtcbiAgICB0aGlzLl9pbnN0YW5jZXMuYWRkKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5JbmplY3RvciksIHRoaXMuaW5qZWN0b3IpO1xuICAgIHRoaXMuX2luc3RhbmNlcy5hZGQoaWRlbnRpZmllclRva2VuKElkZW50aWZpZXJzLlJlbmRlcmVyKSwgby5USElTX0VYUFIucHJvcCgncmVuZGVyZXInKSk7XG4gICAgaWYgKHRoaXMuaGFzVmlld0NvbnRhaW5lciB8fCB0aGlzLmhhc0VtYmVkZGVkVmlldyB8fCBpc1ByZXNlbnQodGhpcy5jb21wb25lbnQpKSB7XG4gICAgICB0aGlzLl9jcmVhdGVBcHBFbGVtZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQXBwRWxlbWVudCgpIHtcbiAgICB2YXIgZmllbGROYW1lID0gYF9hcHBFbF8ke3RoaXMubm9kZUluZGV4fWA7XG4gICAgdmFyIHBhcmVudE5vZGVJbmRleCA9IHRoaXMuaXNSb290RWxlbWVudCgpID8gbnVsbCA6IHRoaXMucGFyZW50Lm5vZGVJbmRleDtcbiAgICB0aGlzLnZpZXcuZmllbGRzLnB1c2gobmV3IG8uQ2xhc3NGaWVsZChmaWVsZE5hbWUsIG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5BcHBFbGVtZW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbby5TdG10TW9kaWZpZXIuUHJpdmF0ZV0pKTtcbiAgICB2YXIgc3RhdGVtZW50ID0gby5USElTX0VYUFIucHJvcChmaWVsZE5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0KG8uaW1wb3J0RXhwcihJZGVudGlmaWVycy5BcHBFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluc3RhbnRpYXRlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5saXRlcmFsKHRoaXMubm9kZUluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5saXRlcmFsKHBhcmVudE5vZGVJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uVEhJU19FWFBSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlck5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvU3RtdCgpO1xuICAgIHRoaXMudmlldy5jcmVhdGVNZXRob2QuYWRkU3RtdChzdGF0ZW1lbnQpO1xuICAgIHRoaXMuYXBwRWxlbWVudCA9IG8uVEhJU19FWFBSLnByb3AoZmllbGROYW1lKTtcbiAgICB0aGlzLl9pbnN0YW5jZXMuYWRkKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5BcHBFbGVtZW50KSwgdGhpcy5hcHBFbGVtZW50KTtcbiAgfVxuXG4gIHNldENvbXBvbmVudFZpZXcoY29tcFZpZXdFeHByOiBvLkV4cHJlc3Npb24pIHtcbiAgICB0aGlzLl9jb21wVmlld0V4cHIgPSBjb21wVmlld0V4cHI7XG4gICAgdGhpcy5jb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4ID1cbiAgICAgICAgTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKHRoaXMuY29tcG9uZW50LnRlbXBsYXRlLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmNvbnRlbnROb2Rlc0J5TmdDb250ZW50SW5kZXhbaV0gPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZXRFbWJlZGRlZFZpZXcoZW1iZWRkZWRWaWV3OiBDb21waWxlVmlldykge1xuICAgIHRoaXMuZW1iZWRkZWRWaWV3ID0gZW1iZWRkZWRWaWV3O1xuICAgIGlmIChpc1ByZXNlbnQoZW1iZWRkZWRWaWV3KSkge1xuICAgICAgdmFyIGNyZWF0ZVRlbXBsYXRlUmVmRXhwciA9XG4gICAgICAgICAgby5pbXBvcnRFeHByKElkZW50aWZpZXJzLlRlbXBsYXRlUmVmXylcbiAgICAgICAgICAgICAgLmluc3RhbnRpYXRlKFt0aGlzLmFwcEVsZW1lbnQsIHRoaXMuZW1iZWRkZWRWaWV3LnZpZXdGYWN0b3J5XSk7XG4gICAgICB2YXIgcHJvdmlkZXIgPSBuZXcgQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEoXG4gICAgICAgICAge3Rva2VuOiBpZGVudGlmaWVyVG9rZW4oSWRlbnRpZmllcnMuVGVtcGxhdGVSZWYpLCB1c2VWYWx1ZTogY3JlYXRlVGVtcGxhdGVSZWZFeHByfSk7XG4gICAgICAvLyBBZGQgVGVtcGxhdGVSZWYgYXMgZmlyc3QgcHJvdmlkZXIgYXMgaXQgZG9lcyBub3QgaGF2ZSBkZXBzIG9uIG90aGVyIHByb3ZpZGVyc1xuICAgICAgdGhpcy5fcmVzb2x2ZWRQcm92aWRlcnNBcnJheS51bnNoaWZ0KG5ldyBQcm92aWRlckFzdChwcm92aWRlci50b2tlbiwgZmFsc2UsIHRydWUsIFtwcm92aWRlcl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVyQXN0VHlwZS5CdWlsdGluLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUFzdC5zb3VyY2VTcGFuKSk7XG4gICAgfVxuICB9XG5cbiAgYmVmb3JlQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzVmlld0NvbnRhaW5lcikge1xuICAgICAgdGhpcy5faW5zdGFuY2VzLmFkZChpZGVudGlmaWVyVG9rZW4oSWRlbnRpZmllcnMuVmlld0NvbnRhaW5lclJlZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwRWxlbWVudC5wcm9wKCd2Y1JlZicpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXNvbHZlZFByb3ZpZGVycyA9IG5ldyBDb21waWxlVG9rZW5NYXA8UHJvdmlkZXJBc3Q+KCk7XG4gICAgdGhpcy5fcmVzb2x2ZWRQcm92aWRlcnNBcnJheS5mb3JFYWNoKHByb3ZpZGVyID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNvbHZlZFByb3ZpZGVycy5hZGQocHJvdmlkZXIudG9rZW4sIHByb3ZpZGVyKSk7XG5cbiAgICAvLyBjcmVhdGUgYWxsIHRoZSBwcm92aWRlciBpbnN0YW5jZXMsIHNvbWUgaW4gdGhlIHZpZXcgY29uc3RydWN0b3IsXG4gICAgLy8gc29tZSBhcyBnZXR0ZXJzLiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgYWxyZWFkeSBzb3J0ZWQgdG9wb2xvZ2ljYWxseS5cbiAgICB0aGlzLl9yZXNvbHZlZFByb3ZpZGVycy52YWx1ZXMoKS5mb3JFYWNoKChyZXNvbHZlZFByb3ZpZGVyKSA9PiB7XG4gICAgICB2YXIgcHJvdmlkZXJWYWx1ZUV4cHJlc3Npb25zID0gcmVzb2x2ZWRQcm92aWRlci5wcm92aWRlcnMubWFwKChwcm92aWRlcikgPT4ge1xuICAgICAgICBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUV4aXN0aW5nKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9nZXREZXBlbmRlbmN5KFxuICAgICAgICAgICAgICByZXNvbHZlZFByb3ZpZGVyLnByb3ZpZGVyVHlwZSxcbiAgICAgICAgICAgICAgbmV3IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSh7dG9rZW46IHByb3ZpZGVyLnVzZUV4aXN0aW5nfSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChwcm92aWRlci51c2VGYWN0b3J5KSkge1xuICAgICAgICAgIHZhciBkZXBzID0gaXNQcmVzZW50KHByb3ZpZGVyLmRlcHMpID8gcHJvdmlkZXIuZGVwcyA6IHByb3ZpZGVyLnVzZUZhY3RvcnkuZGlEZXBzO1xuICAgICAgICAgIHZhciBkZXBzRXhwciA9IGRlcHMubWFwKChkZXApID0+IHRoaXMuX2dldERlcGVuZGVuY3kocmVzb2x2ZWRQcm92aWRlci5wcm92aWRlclR5cGUsIGRlcCkpO1xuICAgICAgICAgIHJldHVybiBvLmltcG9ydEV4cHIocHJvdmlkZXIudXNlRmFjdG9yeSkuY2FsbEZuKGRlcHNFeHByKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQocHJvdmlkZXIudXNlQ2xhc3MpKSB7XG4gICAgICAgICAgdmFyIGRlcHMgPSBpc1ByZXNlbnQocHJvdmlkZXIuZGVwcykgPyBwcm92aWRlci5kZXBzIDogcHJvdmlkZXIudXNlQ2xhc3MuZGlEZXBzO1xuICAgICAgICAgIHZhciBkZXBzRXhwciA9IGRlcHMubWFwKChkZXApID0+IHRoaXMuX2dldERlcGVuZGVuY3kocmVzb2x2ZWRQcm92aWRlci5wcm92aWRlclR5cGUsIGRlcCkpO1xuICAgICAgICAgIHJldHVybiBvLmltcG9ydEV4cHIocHJvdmlkZXIudXNlQ2xhc3MpXG4gICAgICAgICAgICAgIC5pbnN0YW50aWF0ZShkZXBzRXhwciwgby5pbXBvcnRUeXBlKHByb3ZpZGVyLnVzZUNsYXNzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHByb3ZpZGVyLnVzZVZhbHVlIGluc3RhbmNlb2YgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG8uaW1wb3J0RXhwcihwcm92aWRlci51c2VWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChwcm92aWRlci51c2VWYWx1ZSBpbnN0YW5jZW9mIG8uRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLnVzZVZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gby5saXRlcmFsKHByb3ZpZGVyLnVzZVZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHByb3BOYW1lID0gYF8ke3Jlc29sdmVkUHJvdmlkZXIudG9rZW4ubmFtZX1fJHt0aGlzLm5vZGVJbmRleH1fJHt0aGlzLl9pbnN0YW5jZXMuc2l6ZX1gO1xuICAgICAgdmFyIGluc3RhbmNlID1cbiAgICAgICAgICBjcmVhdGVQcm92aWRlclByb3BlcnR5KHByb3BOYW1lLCByZXNvbHZlZFByb3ZpZGVyLCBwcm92aWRlclZhbHVlRXhwcmVzc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFByb3ZpZGVyLm11bHRpUHJvdmlkZXIsIHJlc29sdmVkUHJvdmlkZXIuZWFnZXIsIHRoaXMpO1xuICAgICAgdGhpcy5faW5zdGFuY2VzLmFkZChyZXNvbHZlZFByb3ZpZGVyLnRva2VuLCBpbnN0YW5jZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRpcmVjdGl2ZUluc3RhbmNlcyA9XG4gICAgICAgIHRoaXMuX2RpcmVjdGl2ZXMubWFwKChkaXJlY3RpdmUpID0+IHRoaXMuX2luc3RhbmNlcy5nZXQoaWRlbnRpZmllclRva2VuKGRpcmVjdGl2ZS50eXBlKSkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaXJlY3RpdmVJbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkaXJlY3RpdmVJbnN0YW5jZSA9IHRoaXMuZGlyZWN0aXZlSW5zdGFuY2VzW2ldO1xuICAgICAgdmFyIGRpcmVjdGl2ZSA9IHRoaXMuX2RpcmVjdGl2ZXNbaV07XG4gICAgICBkaXJlY3RpdmUucXVlcmllcy5mb3JFYWNoKChxdWVyeU1ldGEpID0+IHsgdGhpcy5fYWRkUXVlcnkocXVlcnlNZXRhLCBkaXJlY3RpdmVJbnN0YW5jZSk7IH0pO1xuICAgIH1cbiAgICB2YXIgcXVlcmllc1dpdGhSZWFkczogX1F1ZXJ5V2l0aFJlYWRbXSA9IFtdO1xuICAgIHRoaXMuX3Jlc29sdmVkUHJvdmlkZXJzLnZhbHVlcygpLmZvckVhY2goKHJlc29sdmVkUHJvdmlkZXIpID0+IHtcbiAgICAgIHZhciBxdWVyaWVzRm9yUHJvdmlkZXIgPSB0aGlzLl9nZXRRdWVyaWVzRm9yKHJlc29sdmVkUHJvdmlkZXIudG9rZW4pO1xuICAgICAgTGlzdFdyYXBwZXIuYWRkQWxsKFxuICAgICAgICAgIHF1ZXJpZXNXaXRoUmVhZHMsXG4gICAgICAgICAgcXVlcmllc0ZvclByb3ZpZGVyLm1hcChxdWVyeSA9PiBuZXcgX1F1ZXJ5V2l0aFJlYWQocXVlcnksIHJlc29sdmVkUHJvdmlkZXIudG9rZW4pKSk7XG4gICAgfSk7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKHRoaXMucmVmZXJlbmNlVG9rZW5zLCAoXywgdmFyTmFtZSkgPT4ge1xuICAgICAgdmFyIHRva2VuID0gdGhpcy5yZWZlcmVuY2VUb2tlbnNbdmFyTmFtZV07XG4gICAgICB2YXIgdmFyVmFsdWU7XG4gICAgICBpZiAoaXNQcmVzZW50KHRva2VuKSkge1xuICAgICAgICB2YXJWYWx1ZSA9IHRoaXMuX2luc3RhbmNlcy5nZXQodG9rZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyVmFsdWUgPSB0aGlzLnJlbmRlck5vZGU7XG4gICAgICB9XG4gICAgICB0aGlzLnZpZXcubG9jYWxzLnNldCh2YXJOYW1lLCB2YXJWYWx1ZSk7XG4gICAgICB2YXIgdmFyVG9rZW4gPSBuZXcgQ29tcGlsZVRva2VuTWV0YWRhdGEoe3ZhbHVlOiB2YXJOYW1lfSk7XG4gICAgICBMaXN0V3JhcHBlci5hZGRBbGwocXVlcmllc1dpdGhSZWFkcywgdGhpcy5fZ2V0UXVlcmllc0Zvcih2YXJUb2tlbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChxdWVyeSA9PiBuZXcgX1F1ZXJ5V2l0aFJlYWQocXVlcnksIHZhclRva2VuKSkpO1xuICAgIH0pO1xuICAgIHF1ZXJpZXNXaXRoUmVhZHMuZm9yRWFjaCgocXVlcnlXaXRoUmVhZCkgPT4ge1xuICAgICAgdmFyIHZhbHVlOiBvLkV4cHJlc3Npb247XG4gICAgICBpZiAoaXNQcmVzZW50KHF1ZXJ5V2l0aFJlYWQucmVhZC5pZGVudGlmaWVyKSkge1xuICAgICAgICAvLyBxdWVyeSBmb3IgYW4gaWRlbnRpZmllclxuICAgICAgICB2YWx1ZSA9IHRoaXMuX2luc3RhbmNlcy5nZXQocXVlcnlXaXRoUmVhZC5yZWFkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHF1ZXJ5IGZvciBhIHJlZmVyZW5jZVxuICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLnJlZmVyZW5jZVRva2Vuc1txdWVyeVdpdGhSZWFkLnJlYWQudmFsdWVdO1xuICAgICAgICBpZiAoaXNQcmVzZW50KHRva2VuKSkge1xuICAgICAgICAgIHZhbHVlID0gdGhpcy5faW5zdGFuY2VzLmdldCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLmVsZW1lbnRSZWY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICAgIHF1ZXJ5V2l0aFJlYWQucXVlcnkuYWRkVmFsdWUodmFsdWUsIHRoaXMudmlldyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuY29tcG9uZW50KSkge1xuICAgICAgdmFyIGNvbXBvbmVudENvbnN0cnVjdG9yVmlld1F1ZXJ5TGlzdCA9XG4gICAgICAgICAgaXNQcmVzZW50KHRoaXMuY29tcG9uZW50KSA/IG8ubGl0ZXJhbEFycih0aGlzLl9jb21wb25lbnRDb25zdHJ1Y3RvclZpZXdRdWVyeUxpc3RzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uTlVMTF9FWFBSO1xuICAgICAgdmFyIGNvbXBFeHByID0gaXNQcmVzZW50KHRoaXMuZ2V0Q29tcG9uZW50KCkpID8gdGhpcy5nZXRDb21wb25lbnQoKSA6IG8uTlVMTF9FWFBSO1xuICAgICAgdGhpcy52aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KFxuICAgICAgICAgIHRoaXMuYXBwRWxlbWVudC5jYWxsTWV0aG9kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5pdENvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wRXhwciwgY29tcG9uZW50Q29uc3RydWN0b3JWaWV3UXVlcnlMaXN0LCB0aGlzLl9jb21wVmlld0V4cHJdKVxuICAgICAgICAgICAgICAudG9TdG10KCkpO1xuICAgIH1cbiAgfVxuXG4gIGFmdGVyQ2hpbGRyZW4oY2hpbGROb2RlQ291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3Jlc29sdmVkUHJvdmlkZXJzLnZhbHVlcygpLmZvckVhY2goKHJlc29sdmVkUHJvdmlkZXIpID0+IHtcbiAgICAgIC8vIE5vdGU6IGFmdGVyQ2hpbGRyZW4gaXMgY2FsbGVkIGFmdGVyIHJlY3Vyc2luZyBpbnRvIGNoaWxkcmVuLlxuICAgICAgLy8gVGhpcyBpcyBnb29kIHNvIHRoYXQgYW4gaW5qZWN0b3IgbWF0Y2ggaW4gYW4gZWxlbWVudCB0aGF0IGlzIGNsb3NlciB0byBhIHJlcXVlc3RpbmcgZWxlbWVudFxuICAgICAgLy8gbWF0Y2hlcyBmaXJzdC5cbiAgICAgIHZhciBwcm92aWRlckV4cHIgPSB0aGlzLl9pbnN0YW5jZXMuZ2V0KHJlc29sdmVkUHJvdmlkZXIudG9rZW4pO1xuICAgICAgLy8gTm90ZTogdmlldyBwcm92aWRlcnMgYXJlIG9ubHkgdmlzaWJsZSBvbiB0aGUgaW5qZWN0b3Igb2YgdGhhdCBlbGVtZW50LlxuICAgICAgLy8gVGhpcyBpcyBub3QgZnVsbHkgY29ycmVjdCBhcyB0aGUgcnVsZXMgZHVyaW5nIGNvZGVnZW4gZG9uJ3QgYWxsb3cgYSBkaXJlY3RpdmVcbiAgICAgIC8vIHRvIGdldCBob2xkIG9mIGEgdmlldyBwcm92ZGllciBvbiB0aGUgc2FtZSBlbGVtZW50LiBXZSBzdGlsbCBkbyB0aGlzIHNlbWFudGljXG4gICAgICAvLyBhcyBpdCBzaW1wbGlmaWVzIG91ciBtb2RlbCB0byBoYXZpbmcgb25seSBvbmUgcnVudGltZSBpbmplY3RvciBwZXIgZWxlbWVudC5cbiAgICAgIHZhciBwcm92aWRlckNoaWxkTm9kZUNvdW50ID1cbiAgICAgICAgICByZXNvbHZlZFByb3ZpZGVyLnByb3ZpZGVyVHlwZSA9PT0gUHJvdmlkZXJBc3RUeXBlLlByaXZhdGVTZXJ2aWNlID8gMCA6IGNoaWxkTm9kZUNvdW50O1xuICAgICAgdGhpcy52aWV3LmluamVjdG9yR2V0TWV0aG9kLmFkZFN0bXQoY3JlYXRlSW5qZWN0SW50ZXJuYWxDb25kaXRpb24oXG4gICAgICAgICAgdGhpcy5ub2RlSW5kZXgsIHByb3ZpZGVyQ2hpbGROb2RlQ291bnQsIHJlc29sdmVkUHJvdmlkZXIsIHByb3ZpZGVyRXhwcikpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fcXVlcmllcy52YWx1ZXMoKS5mb3JFYWNoKFxuICAgICAgICAocXVlcmllcykgPT5cbiAgICAgICAgICAgIHF1ZXJpZXMuZm9yRWFjaCgocXVlcnkpID0+IHF1ZXJ5LmFmdGVyQ2hpbGRyZW4odGhpcy52aWV3LnVwZGF0ZUNvbnRlbnRRdWVyaWVzTWV0aG9kKSkpO1xuICB9XG5cbiAgYWRkQ29udGVudE5vZGUobmdDb250ZW50SW5kZXg6IG51bWJlciwgbm9kZUV4cHI6IG8uRXhwcmVzc2lvbikge1xuICAgIHRoaXMuY29udGVudE5vZGVzQnlOZ0NvbnRlbnRJbmRleFtuZ0NvbnRlbnRJbmRleF0ucHVzaChub2RlRXhwcik7XG4gIH1cblxuICBnZXRDb21wb25lbnQoKTogby5FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29tcG9uZW50KSA/IHRoaXMuX2luc3RhbmNlcy5nZXQoaWRlbnRpZmllclRva2VuKHRoaXMuY29tcG9uZW50LnR5cGUpKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuICB9XG5cbiAgZ2V0UHJvdmlkZXJUb2tlbnMoKTogby5FeHByZXNzaW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlZFByb3ZpZGVycy52YWx1ZXMoKS5tYXAoXG4gICAgICAgIChyZXNvbHZlZFByb3ZpZGVyKSA9PiBjcmVhdGVEaVRva2VuRXhwcmVzc2lvbihyZXNvbHZlZFByb3ZpZGVyLnRva2VuKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRRdWVyaWVzRm9yKHRva2VuOiBDb21waWxlVG9rZW5NZXRhZGF0YSk6IENvbXBpbGVRdWVyeVtdIHtcbiAgICB2YXIgcmVzdWx0OiBDb21waWxlUXVlcnlbXSA9IFtdO1xuICAgIHZhciBjdXJyZW50RWw6IENvbXBpbGVFbGVtZW50ID0gdGhpcztcbiAgICB2YXIgZGlzdGFuY2UgPSAwO1xuICAgIHZhciBxdWVyaWVzOiBDb21waWxlUXVlcnlbXTtcbiAgICB3aGlsZSAoIWN1cnJlbnRFbC5pc051bGwoKSkge1xuICAgICAgcXVlcmllcyA9IGN1cnJlbnRFbC5fcXVlcmllcy5nZXQodG9rZW4pO1xuICAgICAgaWYgKGlzUHJlc2VudChxdWVyaWVzKSkge1xuICAgICAgICBMaXN0V3JhcHBlci5hZGRBbGwocmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS5tZXRhLmRlc2NlbmRhbnRzIHx8IGRpc3RhbmNlIDw9IDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50RWwuX2RpcmVjdGl2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkaXN0YW5jZSsrO1xuICAgICAgfVxuICAgICAgY3VycmVudEVsID0gY3VycmVudEVsLnBhcmVudDtcbiAgICB9XG4gICAgcXVlcmllcyA9IHRoaXMudmlldy5jb21wb25lbnRWaWV3LnZpZXdRdWVyaWVzLmdldCh0b2tlbik7XG4gICAgaWYgKGlzUHJlc2VudChxdWVyaWVzKSkge1xuICAgICAgTGlzdFdyYXBwZXIuYWRkQWxsKHJlc3VsdCwgcXVlcmllcyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9hZGRRdWVyeShxdWVyeU1ldGE6IENvbXBpbGVRdWVyeU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uKTogQ29tcGlsZVF1ZXJ5IHtcbiAgICB2YXIgcHJvcE5hbWUgPSBgX3F1ZXJ5XyR7cXVlcnlNZXRhLnNlbGVjdG9yc1swXS5uYW1lfV8ke3RoaXMubm9kZUluZGV4fV8ke3RoaXMuX3F1ZXJ5Q291bnQrK31gO1xuICAgIHZhciBxdWVyeUxpc3QgPSBjcmVhdGVRdWVyeUxpc3QocXVlcnlNZXRhLCBkaXJlY3RpdmVJbnN0YW5jZSwgcHJvcE5hbWUsIHRoaXMudmlldyk7XG4gICAgdmFyIHF1ZXJ5ID0gbmV3IENvbXBpbGVRdWVyeShxdWVyeU1ldGEsIHF1ZXJ5TGlzdCwgZGlyZWN0aXZlSW5zdGFuY2UsIHRoaXMudmlldyk7XG4gICAgYWRkUXVlcnlUb1Rva2VuTWFwKHRoaXMuX3F1ZXJpZXMsIHF1ZXJ5KTtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRMb2NhbERlcGVuZGVuY3kocmVxdWVzdGluZ1Byb3ZpZGVyVHlwZTogUHJvdmlkZXJBc3RUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwOiBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEpOiBvLkV4cHJlc3Npb24ge1xuICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgIC8vIGNvbnN0cnVjdG9yIGNvbnRlbnQgcXVlcnlcbiAgICBpZiAoaXNCbGFuayhyZXN1bHQpICYmIGlzUHJlc2VudChkZXAucXVlcnkpKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9hZGRRdWVyeShkZXAucXVlcnksIG51bGwpLnF1ZXJ5TGlzdDtcbiAgICB9XG5cbiAgICAvLyBjb25zdHJ1Y3RvciB2aWV3IHF1ZXJ5XG4gICAgaWYgKGlzQmxhbmsocmVzdWx0KSAmJiBpc1ByZXNlbnQoZGVwLnZpZXdRdWVyeSkpIHtcbiAgICAgIHJlc3VsdCA9IGNyZWF0ZVF1ZXJ5TGlzdChcbiAgICAgICAgICBkZXAudmlld1F1ZXJ5LCBudWxsLFxuICAgICAgICAgIGBfdmlld1F1ZXJ5XyR7ZGVwLnZpZXdRdWVyeS5zZWxlY3RvcnNbMF0ubmFtZX1fJHt0aGlzLm5vZGVJbmRleH1fJHt0aGlzLl9jb21wb25lbnRDb25zdHJ1Y3RvclZpZXdRdWVyeUxpc3RzLmxlbmd0aH1gLFxuICAgICAgICAgIHRoaXMudmlldyk7XG4gICAgICB0aGlzLl9jb21wb25lbnRDb25zdHJ1Y3RvclZpZXdRdWVyeUxpc3RzLnB1c2gocmVzdWx0KTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KGRlcC50b2tlbikpIHtcbiAgICAgIC8vIGFjY2VzcyBidWlsdGlucyB3aXRoIHNwZWNpYWwgdmlzaWJpbGl0eVxuICAgICAgaWYgKGlzQmxhbmsocmVzdWx0KSkge1xuICAgICAgICBpZiAoZGVwLnRva2VuLmVxdWFsc1RvKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5DaGFuZ2VEZXRlY3RvclJlZikpKSB7XG4gICAgICAgICAgaWYgKHJlcXVlc3RpbmdQcm92aWRlclR5cGUgPT09IFByb3ZpZGVyQXN0VHlwZS5Db21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wVmlld0V4cHIucHJvcCgncmVmJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvLlRISVNfRVhQUi5wcm9wKCdyZWYnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGFjY2VzcyByZWd1bGFyIHByb3ZpZGVycyBvbiB0aGUgZWxlbWVudFxuICAgICAgaWYgKGlzQmxhbmsocmVzdWx0KSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLl9pbnN0YW5jZXMuZ2V0KGRlcC50b2tlbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXREZXBlbmRlbmN5KHJlcXVlc3RpbmdQcm92aWRlclR5cGU6IFByb3ZpZGVyQXN0VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZXA6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSk6IG8uRXhwcmVzc2lvbiB7XG4gICAgdmFyIGN1cnJFbGVtZW50OiBDb21waWxlRWxlbWVudCA9IHRoaXM7XG4gICAgdmFyIHJlc3VsdCA9IG51bGw7XG4gICAgaWYgKGRlcC5pc1ZhbHVlKSB7XG4gICAgICByZXN1bHQgPSBvLmxpdGVyYWwoZGVwLnZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzQmxhbmsocmVzdWx0KSAmJiAhZGVwLmlzU2tpcFNlbGYpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldExvY2FsRGVwZW5kZW5jeShyZXF1ZXN0aW5nUHJvdmlkZXJUeXBlLCBkZXApO1xuICAgIH1cbiAgICAvLyBjaGVjayBwYXJlbnQgZWxlbWVudHNcbiAgICB3aGlsZSAoaXNCbGFuayhyZXN1bHQpICYmICFjdXJyRWxlbWVudC5wYXJlbnQuaXNOdWxsKCkpIHtcbiAgICAgIGN1cnJFbGVtZW50ID0gY3VyckVsZW1lbnQucGFyZW50O1xuICAgICAgcmVzdWx0ID0gY3VyckVsZW1lbnQuX2dldExvY2FsRGVwZW5kZW5jeShQcm92aWRlckFzdFR5cGUuUHVibGljU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSh7dG9rZW46IGRlcC50b2tlbn0pKTtcbiAgICB9XG5cbiAgICBpZiAoaXNCbGFuayhyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSBpbmplY3RGcm9tVmlld1BhcmVudEluamVjdG9yKGRlcC50b2tlbiwgZGVwLmlzT3B0aW9uYWwpO1xuICAgIH1cbiAgICBpZiAoaXNCbGFuayhyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSBvLk5VTExfRVhQUjtcbiAgICB9XG4gICAgcmV0dXJuIGdldFByb3BlcnR5SW5WaWV3KHJlc3VsdCwgdGhpcy52aWV3LCBjdXJyRWxlbWVudC52aWV3KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVJbmplY3RJbnRlcm5hbENvbmRpdGlvbihub2RlSW5kZXg6IG51bWJlciwgY2hpbGROb2RlQ291bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBQcm92aWRlckFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyRXhwcjogby5FeHByZXNzaW9uKTogby5TdGF0ZW1lbnQge1xuICB2YXIgaW5kZXhDb25kaXRpb247XG4gIGlmIChjaGlsZE5vZGVDb3VudCA+IDApIHtcbiAgICBpbmRleENvbmRpdGlvbiA9IG8ubGl0ZXJhbChub2RlSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgLmxvd2VyRXF1YWxzKEluamVjdE1ldGhvZFZhcnMucmVxdWVzdE5vZGVJbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAuYW5kKEluamVjdE1ldGhvZFZhcnMucmVxdWVzdE5vZGVJbmRleC5sb3dlckVxdWFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5saXRlcmFsKG5vZGVJbmRleCArIGNoaWxkTm9kZUNvdW50KSkpO1xuICB9IGVsc2Uge1xuICAgIGluZGV4Q29uZGl0aW9uID0gby5saXRlcmFsKG5vZGVJbmRleCkuaWRlbnRpY2FsKEluamVjdE1ldGhvZFZhcnMucmVxdWVzdE5vZGVJbmRleCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBvLklmU3RtdChcbiAgICAgIEluamVjdE1ldGhvZFZhcnMudG9rZW4uaWRlbnRpY2FsKGNyZWF0ZURpVG9rZW5FeHByZXNzaW9uKHByb3ZpZGVyLnRva2VuKSkuYW5kKGluZGV4Q29uZGl0aW9uKSxcbiAgICAgIFtuZXcgby5SZXR1cm5TdGF0ZW1lbnQocHJvdmlkZXJFeHByKV0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQcm92aWRlclByb3BlcnR5KHByb3BOYW1lOiBzdHJpbmcsIHByb3ZpZGVyOiBQcm92aWRlckFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJWYWx1ZUV4cHJlc3Npb25zOiBvLkV4cHJlc3Npb25bXSwgaXNNdWx0aTogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFYWdlcjogYm9vbGVhbiwgY29tcGlsZUVsZW1lbnQ6IENvbXBpbGVFbGVtZW50KTogby5FeHByZXNzaW9uIHtcbiAgdmFyIHZpZXcgPSBjb21waWxlRWxlbWVudC52aWV3O1xuICB2YXIgcmVzb2x2ZWRQcm92aWRlclZhbHVlRXhwcjtcbiAgdmFyIHR5cGU7XG4gIGlmIChpc011bHRpKSB7XG4gICAgcmVzb2x2ZWRQcm92aWRlclZhbHVlRXhwciA9IG8ubGl0ZXJhbEFycihwcm92aWRlclZhbHVlRXhwcmVzc2lvbnMpO1xuICAgIHR5cGUgPSBuZXcgby5BcnJheVR5cGUoby5EWU5BTUlDX1RZUEUpO1xuICB9IGVsc2Uge1xuICAgIHJlc29sdmVkUHJvdmlkZXJWYWx1ZUV4cHIgPSBwcm92aWRlclZhbHVlRXhwcmVzc2lvbnNbMF07XG4gICAgdHlwZSA9IHByb3ZpZGVyVmFsdWVFeHByZXNzaW9uc1swXS50eXBlO1xuICB9XG4gIGlmIChpc0JsYW5rKHR5cGUpKSB7XG4gICAgdHlwZSA9IG8uRFlOQU1JQ19UWVBFO1xuICB9XG4gIGlmIChpc0VhZ2VyKSB7XG4gICAgdmlldy5maWVsZHMucHVzaChuZXcgby5DbGFzc0ZpZWxkKHByb3BOYW1lLCB0eXBlLCBbby5TdG10TW9kaWZpZXIuUHJpdmF0ZV0pKTtcbiAgICB2aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KG8uVEhJU19FWFBSLnByb3AocHJvcE5hbWUpLnNldChyZXNvbHZlZFByb3ZpZGVyVmFsdWVFeHByKS50b1N0bXQoKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGludGVybmFsRmllbGQgPSBgXyR7cHJvcE5hbWV9YDtcbiAgICB2aWV3LmZpZWxkcy5wdXNoKG5ldyBvLkNsYXNzRmllbGQoaW50ZXJuYWxGaWVsZCwgdHlwZSwgW28uU3RtdE1vZGlmaWVyLlByaXZhdGVdKSk7XG4gICAgdmFyIGdldHRlciA9IG5ldyBDb21waWxlTWV0aG9kKHZpZXcpO1xuICAgIGdldHRlci5yZXNldERlYnVnSW5mbyhjb21waWxlRWxlbWVudC5ub2RlSW5kZXgsIGNvbXBpbGVFbGVtZW50LnNvdXJjZUFzdCk7XG4gICAgLy8gTm90ZTogRXF1YWxzIGlzIGltcG9ydGFudCBmb3IgSlMgc28gdGhhdCBpdCBhbHNvIGNoZWNrcyB0aGUgdW5kZWZpbmVkIGNhc2UhXG4gICAgZ2V0dGVyLmFkZFN0bXQoXG4gICAgICAgIG5ldyBvLklmU3RtdChvLlRISVNfRVhQUi5wcm9wKGludGVybmFsRmllbGQpLmlzQmxhbmsoKSxcbiAgICAgICAgICAgICAgICAgICAgIFtvLlRISVNfRVhQUi5wcm9wKGludGVybmFsRmllbGQpLnNldChyZXNvbHZlZFByb3ZpZGVyVmFsdWVFeHByKS50b1N0bXQoKV0pKTtcbiAgICBnZXR0ZXIuYWRkU3RtdChuZXcgby5SZXR1cm5TdGF0ZW1lbnQoby5USElTX0VYUFIucHJvcChpbnRlcm5hbEZpZWxkKSkpO1xuICAgIHZpZXcuZ2V0dGVycy5wdXNoKG5ldyBvLkNsYXNzR2V0dGVyKHByb3BOYW1lLCBnZXR0ZXIuZmluaXNoKCksIHR5cGUpKTtcbiAgfVxuICByZXR1cm4gby5USElTX0VYUFIucHJvcChwcm9wTmFtZSk7XG59XG5cbmNsYXNzIF9RdWVyeVdpdGhSZWFkIHtcbiAgcHVibGljIHJlYWQ6IENvbXBpbGVUb2tlbk1ldGFkYXRhO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcXVlcnk6IENvbXBpbGVRdWVyeSwgbWF0Y2g6IENvbXBpbGVUb2tlbk1ldGFkYXRhKSB7XG4gICAgdGhpcy5yZWFkID0gaXNQcmVzZW50KHF1ZXJ5Lm1ldGEucmVhZCkgPyBxdWVyeS5tZXRhLnJlYWQgOiBtYXRjaDtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nfunction getPropertyInView(property, callingView, definedView) {\r\n if (callingView === definedView) {\r\n return property;\r\n }\r\n else {\r\n var viewProp = o.THIS_EXPR;\r\n var currView = callingView;\r\n while (currView !== definedView && lang_1.isPresent(currView.declarationElement.view)) {\r\n currView = currView.declarationElement.view;\r\n viewProp = viewProp.prop('parent');\r\n }\r\n if (currView !== definedView) {\r\n throw new exceptions_1.BaseException(\"Internal error: Could not calculate a property in a parent view: \" + property);\r\n }\r\n if (property instanceof o.ReadPropExpr) {\r\n var readPropExpr_1 = property;\r\n // Note: Don't cast for members of the AppView base class...\r\n if (definedView.fields.some(function (field) { return field.name == readPropExpr_1.name; }) ||\r\n definedView.getters.some(function (field) { return field.name == readPropExpr_1.name; })) {\r\n viewProp = viewProp.cast(definedView.classType);\r\n }\r\n }\r\n return o.replaceVarInExpression(o.THIS_EXPR.name, viewProp, property);\r\n }\r\n}\r\nexports.getPropertyInView = getPropertyInView;\r\nfunction injectFromViewParentInjector(token, optional) {\r\n var args = [createDiTokenExpression(token)];\r\n if (optional) {\r\n args.push(o.NULL_EXPR);\r\n }\r\n return o.THIS_EXPR.prop('parentInjector').callMethod('get', args);\r\n}\r\nexports.injectFromViewParentInjector = injectFromViewParentInjector;\r\nfunction getViewFactoryName(component, embeddedTemplateIndex) {\r\n return \"viewFactory_\" + component.type.name + embeddedTemplateIndex;\r\n}\r\nexports.getViewFactoryName = getViewFactoryName;\r\nfunction createDiTokenExpression(token) {\r\n if (lang_1.isPresent(token.value)) {\r\n return o.literal(token.value);\r\n }\r\n else if (token.identifierIsInstance) {\r\n return o.importExpr(token.identifier)\r\n .instantiate([], o.importType(token.identifier, [], [o.TypeModifier.Const]));\r\n }\r\n else {\r\n return o.importExpr(token.identifier);\r\n }\r\n}\r\nexports.createDiTokenExpression = createDiTokenExpression;\r\nfunction createFlatArray(expressions) {\r\n var lastNonArrayExpressions = [];\r\n var result = o.literalArr([]);\r\n for (var i = 0; i < expressions.length; i++) {\r\n var expr = expressions[i];\r\n if (expr.type instanceof o.ArrayType) {\r\n if (lastNonArrayExpressions.length > 0) {\r\n result =\r\n result.callMethod(o.BuiltinMethod.ConcatArray, [o.literalArr(lastNonArrayExpressions)]);\r\n lastNonArrayExpressions = [];\r\n }\r\n result = result.callMethod(o.BuiltinMethod.ConcatArray, [expr]);\r\n }\r\n else {\r\n lastNonArrayExpressions.push(expr);\r\n }\r\n }\r\n if (lastNonArrayExpressions.length > 0) {\r\n result =\r\n result.callMethod(o.BuiltinMethod.ConcatArray, [o.literalArr(lastNonArrayExpressions)]);\r\n }\r\n return result;\r\n}\r\nexports.createFlatArray = createFlatArray;\r\nfunction createPureProxy(fn, argCount, pureProxyProp, view) {\r\n view.fields.push(new o.ClassField(pureProxyProp.name, null, [o.StmtModifier.Private]));\r\n var pureProxyId = argCount < identifiers_1.Identifiers.pureProxies.length ? identifiers_1.Identifiers.pureProxies[argCount] : null;\r\n if (lang_1.isBlank(pureProxyId)) {\r\n throw new exceptions_1.BaseException(\"Unsupported number of argument for pure functions: \" + argCount);\r\n }\r\n view.createMethod.addStmt(o.THIS_EXPR.prop(pureProxyProp.name).set(o.importExpr(pureProxyId).callFn([fn])).toStmt());\r\n}\r\nexports.createPureProxy = createPureProxy;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X2NvbXBpbGVyL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUFpQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzVELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdELElBQVksQ0FBQyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFPMUMsNEJBQTBCLGdCQUFnQixDQUFDLENBQUE7QUFFM0MsMkJBQWtDLFFBQXNCLEVBQUUsV0FBd0IsRUFDaEQsV0FBd0I7SUFDeEQsRUFBRSxDQUFDLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLFFBQVEsR0FBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLFFBQVEsR0FBZ0IsV0FBVyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxnQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9FLFFBQVEsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQzVDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLElBQUksMEJBQWEsQ0FDbkIsc0VBQW9FLFFBQVUsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxRQUFRLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFB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QUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDekYsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLElBQUksMEJBQWEsQ0FBQyx3REFBc0QsUUFBVSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUNyQixDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakcsQ0FBQztBQVZlLHVCQUFlLGtCQVU5QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtcbiAgQ29tcGlsZVRva2VuTWV0YWRhdGEsXG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YVxufSBmcm9tICcuLi9jb21waWxlX21ldGFkYXRhJztcbmltcG9ydCB7Q29tcGlsZVZpZXd9IGZyb20gJy4vY29tcGlsZV92aWV3JztcbmltcG9ydCB7SWRlbnRpZmllcnN9IGZyb20gJy4uL2lkZW50aWZpZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5SW5WaWV3KHByb3BlcnR5OiBvLkV4cHJlc3Npb24sIGNhbGxpbmdWaWV3OiBDb21waWxlVmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkVmlldzogQ29tcGlsZVZpZXcpOiBvLkV4cHJlc3Npb24ge1xuICBpZiAoY2FsbGluZ1ZpZXcgPT09IGRlZmluZWRWaWV3KSB7XG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3UHJvcDogby5FeHByZXNzaW9uID0gby5USElTX0VYUFI7XG4gICAgdmFyIGN1cnJWaWV3OiBDb21waWxlVmlldyA9IGNhbGxpbmdWaWV3O1xuICAgIHdoaWxlIChjdXJyVmlldyAhPT0gZGVmaW5lZFZpZXcgJiYgaXNQcmVzZW50KGN1cnJWaWV3LmRlY2xhcmF0aW9uRWxlbWVudC52aWV3KSkge1xuICAgICAgY3VyclZpZXcgPSBjdXJyVmlldy5kZWNsYXJhdGlvbkVsZW1lbnQudmlldztcbiAgICAgIHZpZXdQcm9wID0gdmlld1Byb3AucHJvcCgncGFyZW50Jyk7XG4gICAgfVxuICAgIGlmIChjdXJyVmlldyAhPT0gZGVmaW5lZFZpZXcpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgIGBJbnRlcm5hbCBlcnJvcjogQ291bGQgbm90IGNhbGN1bGF0ZSBhIHByb3BlcnR5IGluIGEgcGFyZW50IHZpZXc6ICR7cHJvcGVydHl9YCk7XG4gICAgfVxuICAgIGlmIChwcm9wZXJ0eSBpbnN0YW5jZW9mIG8uUmVhZFByb3BFeHByKSB7XG4gICAgICBsZXQgcmVhZFByb3BFeHByOiBvLlJlYWRQcm9wRXhwciA9IHByb3BlcnR5O1xuICAgICAgLy8gTm90ZTogRG9uJ3QgY2FzdCBmb3IgbWVtYmVycyBvZiB0aGUgQXBwVmlldyBiYXNlIGNsYXNzLi4uXG4gICAgICBpZiAoZGVmaW5lZFZpZXcuZmllbGRzLnNvbWUoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09IHJlYWRQcm9wRXhwci5uYW1lKSB8fFxuICAgICAgICAgIGRlZmluZWRWaWV3LmdldHRlcnMuc29tZSgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT0gcmVhZFByb3BFeHByLm5hbWUpKSB7XG4gICAgICAgIHZpZXdQcm9wID0gdmlld1Byb3AuY2FzdChkZWZpbmVkVmlldy5jbGFzc1R5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gby5yZXBsYWNlVmFySW5FeHByZXNzaW9uKG8uVEhJU19FWFBSLm5hbWUsIHZpZXdQcm9wLCBwcm9wZXJ0eSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZyb21WaWV3UGFyZW50SW5qZWN0b3IodG9rZW46IENvbXBpbGVUb2tlbk1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IGJvb2xlYW4pOiBvLkV4cHJlc3Npb24ge1xuICB2YXIgYXJncyA9IFtjcmVhdGVEaVRva2VuRXhwcmVzc2lvbih0b2tlbildO1xuICBpZiAob3B0aW9uYWwpIHtcbiAgICBhcmdzLnB1c2goby5OVUxMX0VYUFIpO1xuICB9XG4gIHJldHVybiBvLlRISVNfRVhQUi5wcm9wKCdwYXJlbnRJbmplY3RvcicpLmNhbGxNZXRob2QoJ2dldCcsIGFyZ3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld0ZhY3RvcnlOYW1lKGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZFRlbXBsYXRlSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgdmlld0ZhY3RvcnlfJHtjb21wb25lbnQudHlwZS5uYW1lfSR7ZW1iZWRkZWRUZW1wbGF0ZUluZGV4fWA7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpVG9rZW5FeHByZXNzaW9uKHRva2VuOiBDb21waWxlVG9rZW5NZXRhZGF0YSk6IG8uRXhwcmVzc2lvbiB7XG4gIGlmIChpc1ByZXNlbnQodG9rZW4udmFsdWUpKSB7XG4gICAgcmV0dXJuIG8ubGl0ZXJhbCh0b2tlbi52YWx1ZSk7XG4gIH0gZWxzZSBpZiAodG9rZW4uaWRlbnRpZmllcklzSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gby5pbXBvcnRFeHByKHRva2VuLmlkZW50aWZpZXIpXG4gICAgICAgIC5pbnN0YW50aWF0ZShbXSwgby5pbXBvcnRUeXBlKHRva2VuLmlkZW50aWZpZXIsIFtdLCBbby5UeXBlTW9kaWZpZXIuQ29uc3RdKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG8uaW1wb3J0RXhwcih0b2tlbi5pZGVudGlmaWVyKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmxhdEFycmF5KGV4cHJlc3Npb25zOiBvLkV4cHJlc3Npb25bXSk6IG8uRXhwcmVzc2lvbiB7XG4gIHZhciBsYXN0Tm9uQXJyYXlFeHByZXNzaW9ucyA9IFtdO1xuICB2YXIgcmVzdWx0OiBvLkV4cHJlc3Npb24gPSBvLmxpdGVyYWxBcnIoW10pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGV4cHIgPSBleHByZXNzaW9uc1tpXTtcbiAgICBpZiAoZXhwci50eXBlIGluc3RhbmNlb2Ygby5BcnJheVR5cGUpIHtcbiAgICAgIGlmIChsYXN0Tm9uQXJyYXlFeHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICByZXN1bHQuY2FsbE1ldGhvZChvLkJ1aWx0aW5NZXRob2QuQ29uY2F0QXJyYXksIFtvLmxpdGVyYWxBcnIobGFzdE5vbkFycmF5RXhwcmVzc2lvbnMpXSk7XG4gICAgICAgIGxhc3ROb25BcnJheUV4cHJlc3Npb25zID0gW107XG4gICAgICB9XG4gICAgICByZXN1bHQgPSByZXN1bHQuY2FsbE1ldGhvZChvLkJ1aWx0aW5NZXRob2QuQ29uY2F0QXJyYXksIFtleHByXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3ROb25BcnJheUV4cHJlc3Npb25zLnB1c2goZXhwcik7XG4gICAgfVxuICB9XG4gIGlmIChsYXN0Tm9uQXJyYXlFeHByZXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgcmVzdWx0ID1cbiAgICAgICAgcmVzdWx0LmNhbGxNZXRob2Qoby5CdWlsdGluTWV0aG9kLkNvbmNhdEFycmF5LCBbby5saXRlcmFsQXJyKGxhc3ROb25BcnJheUV4cHJlc3Npb25zKV0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQdXJlUHJveHkoZm46IG8uRXhwcmVzc2lvbiwgYXJnQ291bnQ6IG51bWJlciwgcHVyZVByb3h5UHJvcDogby5SZWFkUHJvcEV4cHIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc6IENvbXBpbGVWaWV3KSB7XG4gIHZpZXcuZmllbGRzLnB1c2gobmV3IG8uQ2xhc3NGaWVsZChwdXJlUHJveHlQcm9wLm5hbWUsIG51bGwsIFtvLlN0bXRNb2RpZmllci5Qcml2YXRlXSkpO1xuICB2YXIgcHVyZVByb3h5SWQgPVxuICAgICAgYXJnQ291bnQgPCBJZGVudGlmaWVycy5wdXJlUHJveGllcy5sZW5ndGggPyBJZGVudGlmaWVycy5wdXJlUHJveGllc1thcmdDb3VudF0gOiBudWxsO1xuICBpZiAoaXNCbGFuayhwdXJlUHJveHlJZCkpIHtcbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50IGZvciBwdXJlIGZ1bmN0aW9uczogJHthcmdDb3VudH1gKTtcbiAgfVxuICB2aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KFxuICAgICAgby5USElTX0VYUFIucHJvcChwdXJlUHJveHlQcm9wLm5hbWUpLnNldChvLmltcG9ydEV4cHIocHVyZVByb3h5SWQpLmNhbGxGbihbZm5dKSkudG9TdG10KCkpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nvar constants_1 = require('./constants');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar compile_view_1 = require('./compile_view');\r\nvar compile_element_1 = require('./compile_element');\r\nvar template_ast_1 = require('../template_ast');\r\nvar util_1 = require('./util');\r\nvar view_type_1 = require('angular2/src/core/linker/view_type');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar compile_metadata_1 = require('../compile_metadata');\r\nvar IMPLICIT_TEMPLATE_VAR = '\\$implicit';\r\nvar CLASS_ATTR = 'class';\r\nvar STYLE_ATTR = 'style';\r\nvar parentRenderNodeVar = o.variable('parentRenderNode');\r\nvar rootSelectorVar = o.variable('rootSelector');\r\nvar ViewCompileDependency = (function () {\r\n function ViewCompileDependency(comp, factoryPlaceholder) {\r\n this.comp = comp;\r\n this.factoryPlaceholder = factoryPlaceholder;\r\n }\r\n return ViewCompileDependency;\r\n}());\r\nexports.ViewCompileDependency = ViewCompileDependency;\r\nfunction buildView(view, template, targetDependencies) {\r\n var builderVisitor = new ViewBuilderVisitor(view, targetDependencies);\r\n template_ast_1.templateVisitAll(builderVisitor, template, view.declarationElement.isNull() ?\r\n view.declarationElement :\r\n view.declarationElement.parent);\r\n return builderVisitor.nestedViewCount;\r\n}\r\nexports.buildView = buildView;\r\nfunction finishView(view, targetStatements) {\r\n view.afterNodes();\r\n createViewTopLevelStmts(view, targetStatements);\r\n view.nodes.forEach(function (node) {\r\n if (node instanceof compile_element_1.CompileElement && node.hasEmbeddedView) {\r\n finishView(node.embeddedView, targetStatements);\r\n }\r\n });\r\n}\r\nexports.finishView = finishView;\r\nvar ViewBuilderVisitor = (function () {\r\n function ViewBuilderVisitor(view, targetDependencies) {\r\n this.view = view;\r\n this.targetDependencies = targetDependencies;\r\n this.nestedViewCount = 0;\r\n }\r\n ViewBuilderVisitor.prototype._isRootNode = function (parent) { return parent.view !== this.view; };\r\n ViewBuilderVisitor.prototype._addRootNodeAndProject = function (node, ngContentIndex, parent) {\r\n var vcAppEl = (node instanceof compile_element_1.CompileElement && node.hasViewContainer) ? node.appElement : null;\r\n if (this._isRootNode(parent)) {\r\n // store appElement as root node only for ViewContainers\r\n if (this.view.viewType !== view_type_1.ViewType.COMPONENT) {\r\n this.view.rootNodesOrAppElements.push(lang_1.isPresent(vcAppEl) ? vcAppEl : node.renderNode);\r\n }\r\n }\r\n else if (lang_1.isPresent(parent.component) && lang_1.isPresent(ngContentIndex)) {\r\n parent.addContentNode(ngContentIndex, lang_1.isPresent(vcAppEl) ? vcAppEl : node.renderNode);\r\n }\r\n };\r\n ViewBuilderVisitor.prototype._getParentRenderNode = function (parent) {\r\n if (this._isRootNode(parent)) {\r\n if (this.view.viewType === view_type_1.ViewType.COMPONENT) {\r\n return parentRenderNodeVar;\r\n }\r\n else {\r\n // root node of an embedded/host view\r\n return o.NULL_EXPR;\r\n }\r\n }\r\n else {\r\n return lang_1.isPresent(parent.component) &&\r\n parent.component.template.encapsulation !== view_1.ViewEncapsulation.Native ?\r\n o.NULL_EXPR :\r\n parent.renderNode;\r\n }\r\n };\r\n ViewBuilderVisitor.prototype.visitBoundText = function (ast, parent) {\r\n return this._visitText(ast, '', ast.ngContentIndex, parent);\r\n };\r\n ViewBuilderVisitor.prototype.visitText = function (ast, parent) {\r\n return this._visitText(ast, ast.value, ast.ngContentIndex, parent);\r\n };\r\n ViewBuilderVisitor.prototype._visitText = function (ast, value, ngContentIndex, parent) {\r\n var fieldName = \"_text_\" + this.view.nodes.length;\r\n this.view.fields.push(new o.ClassField(fieldName, o.importType(this.view.genConfig.renderTypes.renderText), [o.StmtModifier.Private]));\r\n var renderNode = o.THIS_EXPR.prop(fieldName);\r\n var compileNode = new compile_element_1.CompileNode(parent, this.view, this.view.nodes.length, renderNode, ast);\r\n var createRenderNode = o.THIS_EXPR.prop(fieldName)\r\n .set(constants_1.ViewProperties.renderer.callMethod('createText', [\r\n this._getParentRenderNode(parent),\r\n o.literal(value),\r\n this.view.createMethod.resetDebugInfoExpr(this.view.nodes.length, ast)\r\n ]))\r\n .toStmt();\r\n this.view.nodes.push(compileNode);\r\n this.view.createMethod.addStmt(createRenderNode);\r\n this._addRootNodeAndProject(compileNode, ngContentIndex, parent);\r\n return renderNode;\r\n };\r\n ViewBuilderVisitor.prototype.visitNgContent = function (ast, parent) {\r\n // the projected nodes originate from a different view, so we don't\r\n // have debug information for them...\r\n this.view.createMethod.resetDebugInfo(null, ast);\r\n var parentRenderNode = this._getParentRenderNode(parent);\r\n var nodesExpression = constants_1.ViewProperties.projectableNodes.key(o.literal(ast.index), new o.ArrayType(o.importType(this.view.genConfig.renderTypes.renderNode)));\r\n if (parentRenderNode !== o.NULL_EXPR) {\r\n this.view.createMethod.addStmt(constants_1.ViewProperties.renderer.callMethod('projectNodes', [\r\n parentRenderNode,\r\n o.importExpr(identifiers_1.Identifiers.flattenNestedViewRenderNodes)\r\n .callFn([nodesExpression])\r\n ])\r\n .toStmt());\r\n }\r\n else if (this._isRootNode(parent)) {\r\n if (this.view.viewType !== view_type_1.ViewType.COMPONENT) {\r\n // store root nodes only for embedded/host views\r\n this.view.rootNodesOrAppElements.push(nodesExpression);\r\n }\r\n }\r\n else {\r\n if (lang_1.isPresent(parent.component) && lang_1.isPresent(ast.ngContentIndex)) {\r\n parent.addContentNode(ast.ngContentIndex, nodesExpression);\r\n }\r\n }\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitElement = function (ast, parent) {\r\n var nodeIndex = this.view.nodes.length;\r\n var createRenderNodeExpr;\r\n var debugContextExpr = this.view.createMethod.resetDebugInfoExpr(nodeIndex, ast);\r\n if (nodeIndex === 0 && this.view.viewType === view_type_1.ViewType.HOST) {\r\n createRenderNodeExpr = o.THIS_EXPR.callMethod('selectOrCreateHostElement', [o.literal(ast.name), rootSelectorVar, debugContextExpr]);\r\n }\r\n else {\r\n createRenderNodeExpr = constants_1.ViewProperties.renderer.callMethod('createElement', [this._getParentRenderNode(parent), o.literal(ast.name), debugContextExpr]);\r\n }\r\n var fieldName = \"_el_\" + nodeIndex;\r\n this.view.fields.push(new o.ClassField(fieldName, o.importType(this.view.genConfig.renderTypes.renderElement), [o.StmtModifier.Private]));\r\n this.view.createMethod.addStmt(o.THIS_EXPR.prop(fieldName).set(createRenderNodeExpr).toStmt());\r\n var renderNode = o.THIS_EXPR.prop(fieldName);\r\n var component = ast.getComponent();\r\n var directives = ast.directives.map(function (directiveAst) { return directiveAst.directive; });\r\n var htmlAttrs = _readHtmlAttrs(ast.attrs);\r\n var attrNameAndValues = _mergeHtmlAndDirectiveAttrs(htmlAttrs, directives);\r\n for (var i = 0; i < attrNameAndValues.length; i++) {\r\n var attrName = attrNameAndValues[i][0];\r\n var attrValue = attrNameAndValues[i][1];\r\n this.view.createMethod.addStmt(constants_1.ViewProperties.renderer.callMethod('setElementAttribute', [renderNode, o.literal(attrName), o.literal(attrValue)])\r\n .toStmt());\r\n }\r\n var compileElement = new compile_element_1.CompileElement(parent, this.view, nodeIndex, renderNode, ast, component, directives, ast.providers, ast.hasViewContainer, false, ast.references);\r\n this.view.nodes.push(compileElement);\r\n var compViewExpr = null;\r\n if (lang_1.isPresent(component)) {\r\n var nestedComponentIdentifier = new compile_metadata_1.CompileIdentifierMetadata({ name: util_1.getViewFactoryName(component, 0) });\r\n this.targetDependencies.push(new ViewCompileDependency(component, nestedComponentIdentifier));\r\n compViewExpr = o.variable(\"compView_\" + nodeIndex);\r\n compileElement.setComponentView(compViewExpr);\r\n this.view.createMethod.addStmt(compViewExpr.set(o.importExpr(nestedComponentIdentifier)\r\n .callFn([\r\n constants_1.ViewProperties.viewUtils,\r\n compileElement.injector,\r\n compileElement.appElement\r\n ]))\r\n .toDeclStmt());\r\n }\r\n compileElement.beforeChildren();\r\n this._addRootNodeAndProject(compileElement, ast.ngContentIndex, parent);\r\n template_ast_1.templateVisitAll(this, ast.children, compileElement);\r\n compileElement.afterChildren(this.view.nodes.length - nodeIndex - 1);\r\n if (lang_1.isPresent(compViewExpr)) {\r\n var codeGenContentNodes;\r\n if (this.view.component.type.isHost) {\r\n codeGenContentNodes = constants_1.ViewProperties.projectableNodes;\r\n }\r\n else {\r\n codeGenContentNodes = o.literalArr(compileElement.contentNodesByNgContentIndex.map(function (nodes) { return util_1.createFlatArray(nodes); }));\r\n }\r\n this.view.createMethod.addStmt(compViewExpr.callMethod('create', [codeGenContentNodes, o.NULL_EXPR]).toStmt());\r\n }\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitEmbeddedTemplate = function (ast, parent) {\r\n var nodeIndex = this.view.nodes.length;\r\n var fieldName = \"_anchor_\" + nodeIndex;\r\n this.view.fields.push(new o.ClassField(fieldName, o.importType(this.view.genConfig.renderTypes.renderComment), [o.StmtModifier.Private]));\r\n this.view.createMethod.addStmt(o.THIS_EXPR.prop(fieldName)\r\n .set(constants_1.ViewProperties.renderer.callMethod('createTemplateAnchor', [\r\n this._getParentRenderNode(parent),\r\n this.view.createMethod.resetDebugInfoExpr(nodeIndex, ast)\r\n ]))\r\n .toStmt());\r\n var renderNode = o.THIS_EXPR.prop(fieldName);\r\n var templateVariableBindings = ast.variables.map(function (varAst) { return [varAst.value.length > 0 ? varAst.value : IMPLICIT_TEMPLATE_VAR, varAst.name]; });\r\n var directives = ast.directives.map(function (directiveAst) { return directiveAst.directive; });\r\n var compileElement = new compile_element_1.CompileElement(parent, this.view, nodeIndex, renderNode, ast, null, directives, ast.providers, ast.hasViewContainer, true, ast.references);\r\n this.view.nodes.push(compileElement);\r\n this.nestedViewCount++;\r\n var embeddedView = new compile_view_1.CompileView(this.view.component, this.view.genConfig, this.view.pipeMetas, o.NULL_EXPR, this.view.viewIndex + this.nestedViewCount, compileElement, templateVariableBindings);\r\n this.nestedViewCount += buildView(embeddedView, ast.children, this.targetDependencies);\r\n compileElement.beforeChildren();\r\n this._addRootNodeAndProject(compileElement, ast.ngContentIndex, parent);\r\n compileElement.afterChildren(0);\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitAttr = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitDirective = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitEvent = function (ast, eventTargetAndNames) {\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitReference = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitVariable = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitDirectiveProperty = function (ast, context) { return null; };\r\n ViewBuilderVisitor.prototype.visitElementProperty = function (ast, context) { return null; };\r\n return ViewBuilderVisitor;\r\n}());\r\nfunction _mergeHtmlAndDirectiveAttrs(declaredHtmlAttrs, directives) {\r\n var result = {};\r\n collection_1.StringMapWrapper.forEach(declaredHtmlAttrs, function (value, key) { result[key] = value; });\r\n directives.forEach(function (directiveMeta) {\r\n collection_1.StringMapWrapper.forEach(directiveMeta.hostAttributes, function (value, name) {\r\n var prevValue = result[name];\r\n result[name] = lang_1.isPresent(prevValue) ? mergeAttributeValue(name, prevValue, value) : value;\r\n });\r\n });\r\n return mapToKeyValueArray(result);\r\n}\r\nfunction _readHtmlAttrs(attrs) {\r\n var htmlAttrs = {};\r\n attrs.forEach(function (ast) { htmlAttrs[ast.name] = ast.value; });\r\n return htmlAttrs;\r\n}\r\nfunction mergeAttributeValue(attrName, attrValue1, attrValue2) {\r\n if (attrName == CLASS_ATTR || attrName == STYLE_ATTR) {\r\n return attrValue1 + \" \" + attrValue2;\r\n }\r\n else {\r\n return attrValue2;\r\n }\r\n}\r\nfunction mapToKeyValueArray(data) {\r\n var entryArray = [];\r\n collection_1.StringMapWrapper.forEach(data, function (value, name) { entryArray.push([name, value]); });\r\n // We need to sort to get a defined output order\r\n // for tests and for caching generated artifacts...\r\n collection_1.ListWrapper.sort(entryArray, function (entry1, entry2) { return lang_1.StringWrapper.compare(entry1[0], entry2[0]); });\r\n var keyValueArray = [];\r\n entryArray.forEach(function (entry) { keyValueArray.push([entry[0], entry[1]]); });\r\n return keyValueArray;\r\n}\r\nfunction createViewTopLevelStmts(view, targetStatements) {\r\n var nodeDebugInfosVar = o.NULL_EXPR;\r\n if (view.genConfig.genDebugInfo) {\r\n nodeDebugInfosVar = o.variable(\"nodeDebugInfos_\" + view.component.type.name + view.viewIndex);\r\n targetStatements.push(nodeDebugInfosVar\r\n .set(o.literalArr(view.nodes.map(createStaticNodeDebugInfo), new o.ArrayType(new o.ExternalType(identifiers_1.Identifiers.StaticNodeDebugInfo), [o.TypeModifier.Const])))\r\n .toDeclStmt(null, [o.StmtModifier.Final]));\r\n }\r\n var renderCompTypeVar = o.variable(\"renderType_\" + view.component.type.name);\r\n if (view.viewIndex === 0) {\r\n targetStatements.push(renderCompTypeVar.set(o.NULL_EXPR)\r\n .toDeclStmt(o.importType(identifiers_1.Identifiers.RenderComponentType)));\r\n }\r\n var viewClass = createViewClass(view, renderCompTypeVar, nodeDebugInfosVar);\r\n targetStatements.push(viewClass);\r\n targetStatements.push(createViewFactory(view, viewClass, renderCompTypeVar));\r\n}\r\nfunction createStaticNodeDebugInfo(node) {\r\n var compileElement = node instanceof compile_element_1.CompileElement ? node : null;\r\n var providerTokens = [];\r\n var componentToken = o.NULL_EXPR;\r\n var varTokenEntries = [];\r\n if (lang_1.isPresent(compileElement)) {\r\n providerTokens = compileElement.getProviderTokens();\r\n if (lang_1.isPresent(compileElement.component)) {\r\n componentToken = util_1.createDiTokenExpression(identifiers_1.identifierToken(compileElement.component.type));\r\n }\r\n collection_1.StringMapWrapper.forEach(compileElement.referenceTokens, function (token, varName) {\r\n varTokenEntries.push([varName, lang_1.isPresent(token) ? util_1.createDiTokenExpression(token) : o.NULL_EXPR]);\r\n });\r\n }\r\n return o.importExpr(identifiers_1.Identifiers.StaticNodeDebugInfo)\r\n .instantiate([\r\n o.literalArr(providerTokens, new o.ArrayType(o.DYNAMIC_TYPE, [o.TypeModifier.Const])),\r\n componentToken,\r\n o.literalMap(varTokenEntries, new o.MapType(o.DYNAMIC_TYPE, [o.TypeModifier.Const]))\r\n ], o.importType(identifiers_1.Identifiers.StaticNodeDebugInfo, null, [o.TypeModifier.Const]));\r\n}\r\nfunction createViewClass(view, renderCompTypeVar, nodeDebugInfosVar) {\r\n var emptyTemplateVariableBindings = view.templateVariableBindings.map(function (entry) { return [entry[0], o.NULL_EXPR]; });\r\n var viewConstructorArgs = [\r\n new o.FnParam(constants_1.ViewConstructorVars.viewUtils.name, o.importType(identifiers_1.Identifiers.ViewUtils)),\r\n new o.FnParam(constants_1.ViewConstructorVars.parentInjector.name, o.importType(identifiers_1.Identifiers.Injector)),\r\n new o.FnParam(constants_1.ViewConstructorVars.declarationEl.name, o.importType(identifiers_1.Identifiers.AppElement))\r\n ];\r\n var viewConstructor = new o.ClassMethod(null, viewConstructorArgs, [\r\n o.SUPER_EXPR.callFn([\r\n o.variable(view.className),\r\n renderCompTypeVar,\r\n constants_1.ViewTypeEnum.fromValue(view.viewType),\r\n o.literalMap(emptyTemplateVariableBindings),\r\n constants_1.ViewConstructorVars.viewUtils,\r\n constants_1.ViewConstructorVars.parentInjector,\r\n constants_1.ViewConstructorVars.declarationEl,\r\n constants_1.ChangeDetectionStrategyEnum.fromValue(getChangeDetectionMode(view)),\r\n nodeDebugInfosVar\r\n ])\r\n .toStmt()\r\n ]);\r\n var viewMethods = [\r\n new o.ClassMethod('createInternal', [new o.FnParam(rootSelectorVar.name, o.STRING_TYPE)], generateCreateMethod(view), o.importType(identifiers_1.Identifiers.AppElement)),\r\n new o.ClassMethod('injectorGetInternal', [\r\n new o.FnParam(constants_1.InjectMethodVars.token.name, o.DYNAMIC_TYPE),\r\n // Note: Can't use o.INT_TYPE here as the method in AppView uses number\r\n new o.FnParam(constants_1.InjectMethodVars.requestNodeIndex.name, o.NUMBER_TYPE),\r\n new o.FnParam(constants_1.InjectMethodVars.notFoundResult.name, o.DYNAMIC_TYPE)\r\n ], addReturnValuefNotEmpty(view.injectorGetMethod.finish(), constants_1.InjectMethodVars.notFoundResult), o.DYNAMIC_TYPE),\r\n new o.ClassMethod('detectChangesInternal', [new o.FnParam(constants_1.DetectChangesVars.throwOnChange.name, o.BOOL_TYPE)], generateDetectChangesMethod(view)),\r\n new o.ClassMethod('dirtyParentQueriesInternal', [], view.dirtyParentQueriesMethod.finish()),\r\n new o.ClassMethod('destroyInternal', [], view.destroyMethod.finish())\r\n ].concat(view.eventHandlerMethods);\r\n var viewClass = new o.ClassStmt(view.className, o.importExpr(identifiers_1.Identifiers.AppView, [getContextType(view)]), view.fields, view.getters, viewConstructor, viewMethods.filter(function (method) { return method.body.length > 0; }));\r\n return viewClass;\r\n}\r\nfunction createViewFactory(view, viewClass, renderCompTypeVar) {\r\n var viewFactoryArgs = [\r\n new o.FnParam(constants_1.ViewConstructorVars.viewUtils.name, o.importType(identifiers_1.Identifiers.ViewUtils)),\r\n new o.FnParam(constants_1.ViewConstructorVars.parentInjector.name, o.importType(identifiers_1.Identifiers.Injector)),\r\n new o.FnParam(constants_1.ViewConstructorVars.declarationEl.name, o.importType(identifiers_1.Identifiers.AppElement))\r\n ];\r\n var initRenderCompTypeStmts = [];\r\n var templateUrlInfo;\r\n if (view.component.template.templateUrl == view.component.type.moduleUrl) {\r\n templateUrlInfo =\r\n view.component.type.moduleUrl + \" class \" + view.component.type.name + \" - inline template\";\r\n }\r\n else {\r\n templateUrlInfo = view.component.template.templateUrl;\r\n }\r\n if (view.viewIndex === 0) {\r\n initRenderCompTypeStmts = [\r\n new o.IfStmt(renderCompTypeVar.identical(o.NULL_EXPR), [\r\n renderCompTypeVar.set(constants_1.ViewConstructorVars\r\n .viewUtils.callMethod('createRenderComponentType', [\r\n o.literal(templateUrlInfo),\r\n o.literal(view.component\r\n .template.ngContentSelectors.length),\r\n constants_1.ViewEncapsulationEnum\r\n .fromValue(view.component.template.encapsulation),\r\n view.styles\r\n ]))\r\n .toStmt()\r\n ])\r\n ];\r\n }\r\n return o.fn(viewFactoryArgs, initRenderCompTypeStmts.concat([\r\n new o.ReturnStatement(o.variable(viewClass.name)\r\n .instantiate(viewClass.constructorMethod.params.map(function (param) { return o.variable(param.name); })))\r\n ]), o.importType(identifiers_1.Identifiers.AppView, [getContextType(view)]))\r\n .toDeclStmt(view.viewFactory.name, [o.StmtModifier.Final]);\r\n}\r\nfunction generateCreateMethod(view) {\r\n var parentRenderNodeExpr = o.NULL_EXPR;\r\n var parentRenderNodeStmts = [];\r\n if (view.viewType === view_type_1.ViewType.COMPONENT) {\r\n parentRenderNodeExpr = constants_1.ViewProperties.renderer.callMethod('createViewRoot', [o.THIS_EXPR.prop('declarationAppElement').prop('nativeElement')]);\r\n parentRenderNodeStmts = [\r\n parentRenderNodeVar.set(parentRenderNodeExpr)\r\n .toDeclStmt(o.importType(view.genConfig.renderTypes.renderNode), [o.StmtModifier.Final])\r\n ];\r\n }\r\n var resultExpr;\r\n if (view.viewType === view_type_1.ViewType.HOST) {\r\n resultExpr = view.nodes[0].appElement;\r\n }\r\n else {\r\n resultExpr = o.NULL_EXPR;\r\n }\r\n return parentRenderNodeStmts.concat(view.createMethod.finish())\r\n .concat([\r\n o.THIS_EXPR.callMethod('init', [\r\n util_1.createFlatArray(view.rootNodesOrAppElements),\r\n o.literalArr(view.nodes.map(function (node) { return node.renderNode; })),\r\n o.literalArr(view.disposables),\r\n o.literalArr(view.subscriptions)\r\n ])\r\n .toStmt(),\r\n new o.ReturnStatement(resultExpr)\r\n ]);\r\n}\r\nfunction generateDetectChangesMethod(view) {\r\n var stmts = [];\r\n if (view.detectChangesInInputsMethod.isEmpty() && view.updateContentQueriesMethod.isEmpty() &&\r\n view.afterContentLifecycleCallbacksMethod.isEmpty() &&\r\n view.detectChangesRenderPropertiesMethod.isEmpty() &&\r\n view.updateViewQueriesMethod.isEmpty() && view.afterViewLifecycleCallbacksMethod.isEmpty()) {\r\n return stmts;\r\n }\r\n collection_1.ListWrapper.addAll(stmts, view.detectChangesInInputsMethod.finish());\r\n stmts.push(o.THIS_EXPR.callMethod('detectContentChildrenChanges', [constants_1.DetectChangesVars.throwOnChange])\r\n .toStmt());\r\n var afterContentStmts = view.updateContentQueriesMethod.finish().concat(view.afterContentLifecycleCallbacksMethod.finish());\r\n if (afterContentStmts.length > 0) {\r\n stmts.push(new o.IfStmt(o.not(constants_1.DetectChangesVars.throwOnChange), afterContentStmts));\r\n }\r\n collection_1.ListWrapper.addAll(stmts, view.detectChangesRenderPropertiesMethod.finish());\r\n stmts.push(o.THIS_EXPR.callMethod('detectViewChildrenChanges', [constants_1.DetectChangesVars.throwOnChange])\r\n .toStmt());\r\n var afterViewStmts = view.updateViewQueriesMethod.finish().concat(view.afterViewLifecycleCallbacksMethod.finish());\r\n if (afterViewStmts.length > 0) {\r\n stmts.push(new o.IfStmt(o.not(constants_1.DetectChangesVars.throwOnChange), afterViewStmts));\r\n }\r\n var varStmts = [];\r\n var readVars = o.findReadVarNames(stmts);\r\n if (collection_1.SetWrapper.has(readVars, constants_1.DetectChangesVars.changed.name)) {\r\n varStmts.push(constants_1.DetectChangesVars.changed.set(o.literal(true)).toDeclStmt(o.BOOL_TYPE));\r\n }\r\n if (collection_1.SetWrapper.has(readVars, constants_1.DetectChangesVars.changes.name)) {\r\n varStmts.push(constants_1.DetectChangesVars.changes.set(o.NULL_EXPR)\r\n .toDeclStmt(new o.MapType(o.importType(identifiers_1.Identifiers.SimpleChange))));\r\n }\r\n if (collection_1.SetWrapper.has(readVars, constants_1.DetectChangesVars.valUnwrapper.name)) {\r\n varStmts.push(constants_1.DetectChangesVars.valUnwrapper.set(o.importExpr(identifiers_1.Identifiers.ValueUnwrapper).instantiate([]))\r\n .toDeclStmt(null, [o.StmtModifier.Final]));\r\n }\r\n return varStmts.concat(stmts);\r\n}\r\nfunction addReturnValuefNotEmpty(statements, value) {\r\n if (statements.length > 0) {\r\n return statements.concat([new o.ReturnStatement(value)]);\r\n }\r\n else {\r\n return statements;\r\n }\r\n}\r\nfunction getContextType(view) {\r\n var typeMeta = view.component.type;\r\n return typeMeta.isHost ? o.DYNAMIC_TYPE : o.importType(typeMeta);\r\n}\r\nfunction getChangeDetectionMode(view) {\r\n var mode;\r\n if (view.viewType === view_type_1.ViewType.COMPONENT) {\r\n mode = change_detection_1.isDefaultChangeDetectionStrategy(view.component.changeDetection) ?\r\n change_detection_1.ChangeDetectionStrategy.CheckAlways :\r\n change_detection_1.ChangeDetectionStrategy.CheckOnce;\r\n }\r\n else {\r\n mode = change_detection_1.ChangeDetectionStrategy.CheckAlways;\r\n }\r\n return mode;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvdmlld19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBZ0QsMEJBQTBCLENBQUMsQ0FBQTtBQUMzRSwyQkFBd0QsZ0NBQWdDLENBQUMsQ0FBQTtBQUV6RixJQUFZLENBQUMsV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBQzFDLDRCQUEyQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQzVELDBCQVFPLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLGlDQUdPLHFEQUFxRCxDQUFDLENBQUE7QUFFN0QsNkJBQTBCLGdCQUFnQixDQUFDLENBQUE7QUFDM0MsZ0NBQTBDLG1CQUFtQixDQUFDLENBQUE7QUFFOUQsNkJBa0JPLGlCQUFpQixDQUFDLENBQUE7QUFFekIscUJBQTJFLFFBQVEsQ0FBQyxDQUFBO0FBRXBGLDBCQUF1QixvQ0FBb0MsQ0FBQyxDQUFBO0FBQzVELHFCQUFnQyxpQ0FBaUMsQ0FBQyxDQUFBO0FBRWxFLGlDQUlPLHFCQUFxQixDQUFDLENBQUE7QUFFN0IsSUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUM7QUFDM0MsSUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQzNCLElBQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUUzQixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN6RCxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRWpEO0lBQ0UsK0JBQW1CLElBQThCLEVBQzlCLGtCQUE2QztRQUQ3QyxTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTJCO0lBQUcsQ0FBQztJ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b0JBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksR0FBRyxtREFBZ0MsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztZQUM1RCwwQ0FBdUIsQ0FBQyxXQUFXO1lBQ25DLDBDQUF1QixDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLEdBQUcsMENBQXVCLENBQUMsV0FBVyxDQUFDO0lBQzdDLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBTdHJpbmdXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlciwgU2V0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0lkZW50aWZpZXJzLCBpZGVudGlmaWVyVG9rZW59IGZyb20gJy4uL2lkZW50aWZpZXJzJztcbmltcG9ydCB7XG4gIFZpZXdDb25zdHJ1Y3RvclZhcnMsXG4gIEluamVjdE1ldGhvZFZhcnMsXG4gIERldGVjdENoYW5nZXNWYXJzLFxuICBWaWV3VHlwZUVudW0sXG4gIFZpZXdFbmNhcHN1bGF0aW9uRW51bSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lFbnVtLFxuICBWaWV3UHJvcGVydGllc1xufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcblxuaW1wb3J0IHtDb21waWxlVmlld30gZnJvbSAnLi9jb21waWxlX3ZpZXcnO1xuaW1wb3J0IHtDb21waWxlRWxlbWVudCwgQ29tcGlsZU5vZGV9IGZyb20gJy4vY29tcGlsZV9lbGVtZW50JztcblxuaW1wb3J0IHtcbiAgVGVtcGxhdGVBc3QsXG4gIFRlbXBsYXRlQXN0VmlzaXRvcixcbiAgTmdDb250ZW50QXN0LFxuICBFbWJlZGRlZFRlbXBsYXRlQXN0LFxuICBFbGVtZW50QXN0LFxuICBSZWZlcmVuY2VBc3QsXG4gIFZhcmlhYmxlQXN0LFxuICBCb3VuZEV2ZW50QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQXR0ckFzdCxcbiAgQm91bmRUZXh0QXN0LFxuICBUZXh0QXN0LFxuICBEaXJlY3RpdmVBc3QsXG4gIEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsXG4gIHRlbXBsYXRlVmlzaXRBbGwsXG4gIFByb3BlcnR5QmluZGluZ1R5cGUsXG4gIFByb3ZpZGVyQXN0XG59IGZyb20gJy4uL3RlbXBsYXRlX2FzdCc7XG5cbmltcG9ydCB7Z2V0Vmlld0ZhY3RvcnlOYW1lLCBjcmVhdGVGbGF0QXJyYXksIGNyZWF0ZURpVG9rZW5FeHByZXNzaW9ufSBmcm9tICcuL3V0aWwnO1xuXG5pbXBvcnQge1ZpZXdUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld190eXBlJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuXG5pbXBvcnQge1xuICBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLFxuICBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gIENvbXBpbGVUb2tlbk1ldGFkYXRhXG59IGZyb20gJy4uL2NvbXBpbGVfbWV0YWRhdGEnO1xuXG5jb25zdCBJTVBMSUNJVF9URU1QTEFURV9WQVIgPSAnXFwkaW1wbGljaXQnO1xuY29uc3QgQ0xBU1NfQVRUUiA9ICdjbGFzcyc7XG5jb25zdCBTVFlMRV9BVFRSID0gJ3N0eWxlJztcblxudmFyIHBhcmVudFJlbmRlck5vZGVWYXIgPSBvLnZhcmlhYmxlKCdwYXJlbnRSZW5kZXJOb2RlJyk7XG52YXIgcm9vdFNlbGVjdG9yVmFyID0gby52YXJpYWJsZSgncm9vdFNlbGVjdG9yJyk7XG5cbmV4cG9ydCBjbGFzcyBWaWV3Q29tcGlsZURlcGVuZGVuY3kge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICBwdWJsaWMgZmFjdG9yeVBsYWNlaG9sZGVyOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKSB7fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRWaWV3KHZpZXc6IENvbXBpbGVWaWV3LCB0ZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RGVwZW5kZW5jaWVzOiBWaWV3Q29tcGlsZURlcGVuZGVuY3lbXSk6IG51bWJlciB7XG4gIHZhciBidWlsZGVyVmlzaXRvciA9IG5ldyBWaWV3QnVpbGRlclZpc2l0b3IodmlldywgdGFyZ2V0RGVwZW5kZW5jaWVzKTtcbiAgdGVtcGxhdGVWaXNpdEFsbChidWlsZGVyVmlzaXRvciwgdGVtcGxhdGUsIHZpZXcuZGVjbGFyYXRpb25FbGVtZW50LmlzTnVsbCgpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmRlY2xhcmF0aW9uRWxlbWVudCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5kZWNsYXJhdGlvbkVsZW1lbnQucGFyZW50KTtcbiAgcmV0dXJuIGJ1aWxkZXJWaXNpdG9yLm5lc3RlZFZpZXdDb3VudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmlzaFZpZXcodmlldzogQ29tcGlsZVZpZXcsIHRhcmdldFN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10pIHtcbiAgdmlldy5hZnRlck5vZGVzKCk7XG4gIGNyZWF0ZVZpZXdUb3BMZXZlbFN0bXRzKHZpZXcsIHRhcmdldFN0YXRlbWVudHMpO1xuICB2aWV3Lm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENvbXBpbGVFbGVtZW50ICYmIG5vZGUuaGFzRW1iZWRkZWRWaWV3KSB7XG4gICAgICBmaW5pc2hWaWV3KG5vZGUuZW1iZWRkZWRWaWV3LCB0YXJnZXRTdGF0ZW1lbnRzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5jbGFzcyBWaWV3QnVpbGRlclZpc2l0b3IgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdFZpc2l0b3Ige1xuICBuZXN0ZWRWaWV3Q291bnQ6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHZpZXc6IENvbXBpbGVWaWV3LCBwdWJsaWMgdGFyZ2V0RGVwZW5kZW5jaWVzOiBWaWV3Q29tcGlsZURlcGVuZGVuY3lbXSkge31cblxuICBwcml2YXRlIF9pc1Jvb3ROb2RlKHBhcmVudDogQ29tcGlsZUVsZW1lbnQpOiBib29sZWFuIHsgcmV0dXJuIHBhcmVudC52aWV3ICE9PSB0aGlzLnZpZXc7IH1cblxuICBwcml2YXRlIF9hZGRSb290Tm9kZUFuZFByb2plY3Qobm9kZTogQ29tcGlsZU5vZGUsIG5nQ29udGVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IENvbXBpbGVFbGVtZW50KSB7XG4gICAgdmFyIHZjQXBwRWwgPVxuICAgICAgICAobm9kZSBpbnN0YW5jZW9mIENvbXBpbGVFbGVtZW50ICYmIG5vZGUuaGFzVmlld0NvbnRhaW5lcikgPyBub2RlLmFwcEVsZW1lbnQgOiBudWxsO1xuICAgIGlmICh0aGlzLl9pc1Jvb3ROb2RlKHBhcmVudCkpIHtcbiAgICAgIC8vIHN0b3JlIGFwcEVsZW1lbnQgYXMgcm9vdCBub2RlIG9ubHkgZm9yIFZpZXdDb250YWluZXJzXG4gICAgICBpZiAodGhpcy52aWV3LnZpZXdUeXBlICE9PSBWaWV3VHlwZS5DT01QT05FTlQpIHtcbiAgICAgICAgdGhpcy52aWV3LnJvb3ROb2Rlc09yQXBwRWxlbWVudHMucHVzaChpc1ByZXNlbnQodmNBcHBFbCkgPyB2Y0FwcEVsIDogbm9kZS5yZW5kZXJOb2RlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChwYXJlbnQuY29tcG9uZW50KSAmJiBpc1ByZXNlbnQobmdDb250ZW50SW5kZXgpKSB7XG4gICAgICBwYXJlbnQuYWRkQ29udGVudE5vZGUobmdDb250ZW50SW5kZXgsIGlzUHJlc2VudCh2Y0FwcEVsKSA/IHZjQXBwRWwgOiBub2RlLnJlbmRlck5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhcmVudFJlbmRlck5vZGUocGFyZW50OiBDb21waWxlRWxlbWVudCk6IG8uRXhwcmVzc2lvbiB7XG4gICAgaWYgKHRoaXMuX2lzUm9vdE5vZGUocGFyZW50KSkge1xuICAgICAgaWYgKHRoaXMudmlldy52aWV3VHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnRSZW5kZXJOb2RlVmFyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcm9vdCBub2RlIG9mIGFuIGVtYmVkZGVkL2hvc3Qgdmlld1xuICAgICAgICByZXR1cm4gby5OVUxMX0VYUFI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpc1ByZXNlbnQocGFyZW50LmNvbXBvbmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5jb21wb25lbnQudGVtcGxhdGUuZW5jYXBzdWxhdGlvbiAhPT0gVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlID9cbiAgICAgICAgICAgICAgICAgby5OVUxMX0VYUFIgOlxuICAgICAgICAgICAgICAgICBwYXJlbnQucmVuZGVyTm9kZTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEJvdW5kVGV4dChhc3Q6IEJvdW5kVGV4dEFzdCwgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2l0VGV4dChhc3QsICcnLCBhc3QubmdDb250ZW50SW5kZXgsIHBhcmVudCk7XG4gIH1cbiAgdmlzaXRUZXh0KGFzdDogVGV4dEFzdCwgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2l0VGV4dChhc3QsIGFzdC52YWx1ZSwgYXN0Lm5nQ29udGVudEluZGV4LCBwYXJlbnQpO1xuICB9XG4gIHByaXZhdGUgX3Zpc2l0VGV4dChhc3Q6IFRlbXBsYXRlQXN0LCB2YWx1ZTogc3RyaW5nLCBuZ0NvbnRlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IG8uRXhwcmVzc2lvbiB7XG4gICAgdmFyIGZpZWxkTmFtZSA9IGBfdGV4dF8ke3RoaXMudmlldy5ub2Rlcy5sZW5ndGh9YDtcbiAgICB0aGlzLnZpZXcuZmllbGRzLnB1c2gobmV3IG8uQ2xhc3NGaWVsZChmaWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbXBvcnRUeXBlKHRoaXMudmlldy5nZW5Db25maWcucmVuZGVyVHlwZXMucmVuZGVyVGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW28uU3RtdE1vZGlmaWVyLlByaXZhdGVdKSk7XG4gICAgdmFyIHJlbmRlck5vZGUgPSBvLlRISVNfRVhQUi5wcm9wKGZpZWxkTmFtZSk7XG4gICAgdmFyIGNvbXBpbGVOb2RlID0gbmV3IENvbXBpbGVOb2RlKHBhcmVudCwgdGhpcy52aWV3LCB0aGlzLnZpZXcubm9kZXMubGVuZ3RoLCByZW5kZXJOb2RlLCBhc3QpO1xuICAgIHZhciBjcmVhdGVSZW5kZXJOb2RlID1cbiAgICAgICAgby5USElTX0VYUFIucHJvcChmaWVsZE5hbWUpXG4gICAgICAgICAgICAuc2V0KFZpZXdQcm9wZXJ0aWVzLnJlbmRlcmVyLmNhbGxNZXRob2QoXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZVRleHQnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2dldFBhcmVudFJlbmRlck5vZGUocGFyZW50KSxcbiAgICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuY3JlYXRlTWV0aG9kLnJlc2V0RGVidWdJbmZvRXhwcih0aGlzLnZpZXcubm9kZXMubGVuZ3RoLCBhc3QpXG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAudG9TdG10KCk7XG4gICAgdGhpcy52aWV3Lm5vZGVzLnB1c2goY29tcGlsZU5vZGUpO1xuICAgIHRoaXMudmlldy5jcmVhdGVNZXRob2QuYWRkU3RtdChjcmVhdGVSZW5kZXJOb2RlKTtcbiAgICB0aGlzLl9hZGRSb290Tm9kZUFuZFByb2plY3QoY29tcGlsZU5vZGUsIG5nQ29udGVudEluZGV4LCBwYXJlbnQpO1xuICAgIHJldHVybiByZW5kZXJOb2RlO1xuICB9XG5cbiAgdmlzaXROZ0NvbnRlbnQoYXN0OiBOZ0NvbnRlbnRBc3QsIHBhcmVudDogQ29tcGlsZUVsZW1lbnQpOiBhbnkge1xuICAgIC8vIHRoZSBwcm9qZWN0ZWQgbm9kZXMgb3JpZ2luYXRlIGZyb20gYSBkaWZmZXJlbnQgdmlldywgc28gd2UgZG9uJ3RcbiAgICAvLyBoYXZlIGRlYnVnIGluZm9ybWF0aW9uIGZvciB0aGVtLi4uXG4gICAgdGhpcy52aWV3LmNyZWF0ZU1ldGhvZC5yZXNldERlYnVnSW5mbyhudWxsLCBhc3QpO1xuICAgIHZhciBwYXJlbnRSZW5kZXJOb2RlID0gdGhpcy5fZ2V0UGFyZW50UmVuZGVyTm9kZShwYXJlbnQpO1xuICAgIHZhciBub2Rlc0V4cHJlc3Npb24gPSBWaWV3UHJvcGVydGllcy5wcm9qZWN0YWJsZU5vZGVzLmtleShcbiAgICAgICAgby5saXRlcmFsKGFzdC5pbmRleCksXG4gICAgICAgIG5ldyBvLkFycmF5VHlwZShvLmltcG9ydFR5cGUodGhpcy52aWV3LmdlbkNvbmZpZy5yZW5kZXJUeXBlcy5yZW5kZXJOb2RlKSkpO1xuICAgIGlmIChwYXJlbnRSZW5kZXJOb2RlICE9PSBvLk5VTExfRVhQUikge1xuICAgICAgdGhpcy52aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KFxuICAgICAgICAgIFZpZXdQcm9wZXJ0aWVzLnJlbmRlcmVyLmNhbGxNZXRob2QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3ROb2RlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UmVuZGVyTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uaW1wb3J0RXhwcihJZGVudGlmaWVycy5mbGF0dGVuTmVzdGVkVmlld1JlbmRlck5vZGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsRm4oW25vZGVzRXhwcmVzc2lvbl0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgLnRvU3RtdCgpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lzUm9vdE5vZGUocGFyZW50KSkge1xuICAgICAgaWYgKHRoaXMudmlldy52aWV3VHlwZSAhPT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgICAgIC8vIHN0b3JlIHJvb3Qgbm9kZXMgb25seSBmb3IgZW1iZWRkZWQvaG9zdCB2aWV3c1xuICAgICAgICB0aGlzLnZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5wdXNoKG5vZGVzRXhwcmVzc2lvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1ByZXNlbnQocGFyZW50LmNvbXBvbmVudCkgJiYgaXNQcmVzZW50KGFzdC5uZ0NvbnRlbnRJbmRleCkpIHtcbiAgICAgICAgcGFyZW50LmFkZENvbnRlbnROb2RlKGFzdC5uZ0NvbnRlbnRJbmRleCwgbm9kZXNFeHByZXNzaW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdEVsZW1lbnQoYXN0OiBFbGVtZW50QXN0LCBwYXJlbnQ6IENvbXBpbGVFbGVtZW50KTogYW55IHtcbiAgICB2YXIgbm9kZUluZGV4ID0gdGhpcy52aWV3Lm5vZGVzLmxlbmd0aDtcbiAgICB2YXIgY3JlYXRlUmVuZGVyTm9kZUV4cHI7XG4gICAgdmFyIGRlYnVnQ29udGV4dEV4cHIgPSB0aGlzLnZpZXcuY3JlYXRlTWV0aG9kLnJlc2V0RGVidWdJbmZvRXhwcihub2RlSW5kZXgsIGFzdCk7XG4gICAgaWYgKG5vZGVJbmRleCA9PT0gMCAmJiB0aGlzLnZpZXcudmlld1R5cGUgPT09IFZpZXdUeXBlLkhPU1QpIHtcbiAgICAgIGNyZWF0ZVJlbmRlck5vZGVFeHByID0gby5USElTX0VYUFIuY2FsbE1ldGhvZChcbiAgICAgICAgICAnc2VsZWN0T3JDcmVhdGVIb3N0RWxlbWVudCcsIFtvLmxpdGVyYWwoYXN0Lm5hbWUpLCByb290U2VsZWN0b3JWYXIsIGRlYnVnQ29udGV4dEV4cHJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3JlYXRlUmVuZGVyTm9kZUV4cHIgPSBWaWV3UHJvcGVydGllcy5yZW5kZXJlci5jYWxsTWV0aG9kKFxuICAgICAgICAgICdjcmVhdGVFbGVtZW50JyxcbiAgICAgICAgICBbdGhpcy5fZ2V0UGFyZW50UmVuZGVyTm9kZShwYXJlbnQpLCBvLmxpdGVyYWwoYXN0Lm5hbWUpLCBkZWJ1Z0NvbnRleHRFeHByXSk7XG4gICAgfVxuICAgIHZhciBmaWVsZE5hbWUgPSBgX2VsXyR7bm9kZUluZGV4fWA7XG4gICAgdGhpcy52aWV3LmZpZWxkcy5wdXNoKFxuICAgICAgICBuZXcgby5DbGFzc0ZpZWxkKGZpZWxkTmFtZSwgby5pbXBvcnRUeXBlKHRoaXMudmlldy5nZW5Db25maWcucmVuZGVyVHlwZXMucmVuZGVyRWxlbWVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgW28uU3RtdE1vZGlmaWVyLlByaXZhdGVdKSk7XG4gICAgdGhpcy52aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KG8uVEhJU19FWFBSLnByb3AoZmllbGROYW1lKS5zZXQoY3JlYXRlUmVuZGVyTm9kZUV4cHIpLnRvU3RtdCgpKTtcblxuICAgIHZhciByZW5kZXJOb2RlID0gby5USElTX0VYUFIucHJvcChmaWVsZE5hbWUpO1xuXG4gICAgdmFyIGNvbXBvbmVudCA9IGFzdC5nZXRDb21wb25lbnQoKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IGFzdC5kaXJlY3RpdmVzLm1hcChkaXJlY3RpdmVBc3QgPT4gZGlyZWN0aXZlQXN0LmRpcmVjdGl2ZSk7XG4gICAgdmFyIGh0bWxBdHRycyA9IF9yZWFkSHRtbEF0dHJzKGFzdC5hdHRycyk7XG4gICAgdmFyIGF0dHJOYW1lQW5kVmFsdWVzID0gX21lcmdlSHRtbEFuZERpcmVjdGl2ZUF0dHJzKGh0bWxBdHRycywgZGlyZWN0aXZlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyTmFtZUFuZFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGF0dHJOYW1lID0gYXR0ck5hbWVBbmRWYWx1ZXNbaV1bMF07XG4gICAgICB2YXIgYXR0clZhbHVlID0gYXR0ck5hbWVBbmRWYWx1ZXNbaV1bMV07XG4gICAgICB0aGlzLnZpZXcuY3JlYXRlTWV0aG9kLmFkZFN0bXQoXG4gICAgICAgICAgVmlld1Byb3BlcnRpZXMucmVuZGVyZXIuY2FsbE1ldGhvZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2V0RWxlbWVudEF0dHJpYnV0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbmRlck5vZGUsIG8ubGl0ZXJhbChhdHRyTmFtZSksIG8ubGl0ZXJhbChhdHRyVmFsdWUpXSlcbiAgICAgICAgICAgICAgLnRvU3RtdCgpKTtcbiAgICB9XG4gICAgdmFyIGNvbXBpbGVFbGVtZW50ID1cbiAgICAgICAgbmV3IENvbXBpbGVFbGVtZW50KHBhcmVudCwgdGhpcy52aWV3LCBub2RlSW5kZXgsIHJlbmRlck5vZGUsIGFzdCwgY29tcG9uZW50LCBkaXJlY3RpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LnByb3ZpZGVycywgYXN0Lmhhc1ZpZXdDb250YWluZXIsIGZhbHNlLCBhc3QucmVmZXJlbmNlcyk7XG4gICAgdGhpcy52aWV3Lm5vZGVzLnB1c2goY29tcGlsZUVsZW1lbnQpO1xuICAgIHZhciBjb21wVmlld0V4cHI6IG8uUmVhZFZhckV4cHIgPSBudWxsO1xuICAgIGlmIChpc1ByZXNlbnQoY29tcG9uZW50KSkge1xuICAgICAgdmFyIG5lc3RlZENvbXBvbmVudElkZW50aWZpZXIgPVxuICAgICAgICAgIG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtuYW1lOiBnZXRWaWV3RmFjdG9yeU5hbWUoY29tcG9uZW50LCAwKX0pO1xuICAgICAgdGhpcy50YXJnZXREZXBlbmRlbmNpZXMucHVzaChuZXcgVmlld0NvbXBpbGVEZXBlbmRlbmN5KGNvbXBvbmVudCwgbmVzdGVkQ29tcG9uZW50SWRlbnRpZmllcikpO1xuICAgICAgY29tcFZpZXdFeHByID0gby52YXJpYWJsZShgY29tcFZpZXdfJHtub2RlSW5kZXh9YCk7XG4gICAgICBjb21waWxlRWxlbWVudC5zZXRDb21wb25lbnRWaWV3KGNvbXBWaWV3RXhwcik7XG4gICAgICB0aGlzLnZpZXcuY3JlYXRlTWV0aG9kLmFkZFN0bXQoY29tcFZpZXdFeHByLnNldChvLmltcG9ydEV4cHIobmVzdGVkQ29tcG9uZW50SWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsbEZuKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXdQcm9wZXJ0aWVzLnZpZXdVdGlscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50LmluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUVsZW1lbnQuYXBwRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9EZWNsU3RtdCgpKTtcbiAgICB9XG4gICAgY29tcGlsZUVsZW1lbnQuYmVmb3JlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLl9hZGRSb290Tm9kZUFuZFByb2plY3QoY29tcGlsZUVsZW1lbnQsIGFzdC5uZ0NvbnRlbnRJbmRleCwgcGFyZW50KTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5jaGlsZHJlbiwgY29tcGlsZUVsZW1lbnQpO1xuICAgIGNvbXBpbGVFbGVtZW50LmFmdGVyQ2hpbGRyZW4odGhpcy52aWV3Lm5vZGVzLmxlbmd0aCAtIG5vZGVJbmRleCAtIDEpO1xuXG4gICAgaWYgKGlzUHJlc2VudChjb21wVmlld0V4cHIpKSB7XG4gICAgICB2YXIgY29kZUdlbkNvbnRlbnROb2RlcztcbiAgICAgIGlmICh0aGlzLnZpZXcuY29tcG9uZW50LnR5cGUuaXNIb3N0KSB7XG4gICAgICAgIGNvZGVHZW5Db250ZW50Tm9kZXMgPSBWaWV3UHJvcGVydGllcy5wcm9qZWN0YWJsZU5vZGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29kZUdlbkNvbnRlbnROb2RlcyA9IG8ubGl0ZXJhbEFycihcbiAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50LmNvbnRlbnROb2Rlc0J5TmdDb250ZW50SW5kZXgubWFwKG5vZGVzID0+IGNyZWF0ZUZsYXRBcnJheShub2RlcykpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmlldy5jcmVhdGVNZXRob2QuYWRkU3RtdChcbiAgICAgICAgICBjb21wVmlld0V4cHIuY2FsbE1ldGhvZCgnY3JlYXRlJywgW2NvZGVHZW5Db250ZW50Tm9kZXMsIG8uTlVMTF9FWFBSXSkudG9TdG10KCkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZpc2l0RW1iZWRkZWRUZW1wbGF0ZShhc3Q6IEVtYmVkZGVkVGVtcGxhdGVBc3QsIHBhcmVudDogQ29tcGlsZUVsZW1lbnQpOiBhbnkge1xuICAgIHZhciBub2RlSW5kZXggPSB0aGlzLnZpZXcubm9kZXMubGVuZ3RoO1xuICAgIHZhciBmaWVsZE5hbWUgPSBgX2FuY2hvcl8ke25vZGVJbmRleH1gO1xuICAgIHRoaXMudmlldy5maWVsZHMucHVzaChcbiAgICAgICAgbmV3IG8uQ2xhc3NGaWVsZChmaWVsZE5hbWUsIG8uaW1wb3J0VHlwZSh0aGlzLnZpZXcuZ2VuQ29uZmlnLnJlbmRlclR5cGVzLnJlbmRlckNvbW1lbnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvLlN0bXRNb2RpZmllci5Qcml2YXRlXSkpO1xuICAgIHRoaXMudmlldy5jcmVhdGVNZXRob2QuYWRkU3RtdChcbiAgICAgICAgby5USElTX0VYUFIucHJvcChmaWVsZE5hbWUpXG4gICAgICAgICAgICAuc2V0KFZpZXdQcm9wZXJ0aWVzLnJlbmRlcmVyLmNhbGxNZXRob2QoXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZVRlbXBsYXRlQW5jaG9yJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICB0aGlzLl9nZXRQYXJlbnRSZW5kZXJOb2RlKHBhcmVudCksXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuY3JlYXRlTWV0aG9kLnJlc2V0RGVidWdJbmZvRXhwcihub2RlSW5kZXgsIGFzdClcbiAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgIC50b1N0bXQoKSk7XG4gICAgdmFyIHJlbmRlck5vZGUgPSBvLlRISVNfRVhQUi5wcm9wKGZpZWxkTmFtZSk7XG5cbiAgICB2YXIgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzID0gYXN0LnZhcmlhYmxlcy5tYXAoXG4gICAgICAgIHZhckFzdCA9PiBbdmFyQXN0LnZhbHVlLmxlbmd0aCA+IDAgPyB2YXJBc3QudmFsdWUgOiBJTVBMSUNJVF9URU1QTEFURV9WQVIsIHZhckFzdC5uYW1lXSk7XG5cbiAgICB2YXIgZGlyZWN0aXZlcyA9IGFzdC5kaXJlY3RpdmVzLm1hcChkaXJlY3RpdmVBc3QgPT4gZGlyZWN0aXZlQXN0LmRpcmVjdGl2ZSk7XG4gICAgdmFyIGNvbXBpbGVFbGVtZW50ID1cbiAgICAgICAgbmV3IENvbXBpbGVFbGVtZW50KHBhcmVudCwgdGhpcy52aWV3LCBub2RlSW5kZXgsIHJlbmRlck5vZGUsIGFzdCwgbnVsbCwgZGlyZWN0aXZlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5wcm92aWRlcnMsIGFzdC5oYXNWaWV3Q29udGFpbmVyLCB0cnVlLCBhc3QucmVmZXJlbmNlcyk7XG4gICAgdGhpcy52aWV3Lm5vZGVzLnB1c2goY29tcGlsZUVsZW1lbnQpO1xuXG4gICAgdGhpcy5uZXN0ZWRWaWV3Q291bnQrKztcbiAgICB2YXIgZW1iZWRkZWRWaWV3ID0gbmV3IENvbXBpbGVWaWV3KFxuICAgICAgICB0aGlzLnZpZXcuY29tcG9uZW50LCB0aGlzLnZpZXcuZ2VuQ29uZmlnLCB0aGlzLnZpZXcucGlwZU1ldGFzLCBvLk5VTExfRVhQUixcbiAgICAgICAgdGhpcy52aWV3LnZpZXdJbmRleCArIHRoaXMubmVzdGVkVmlld0NvdW50LCBjb21waWxlRWxlbWVudCwgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzKTtcbiAgICB0aGlzLm5lc3RlZFZpZXdDb3VudCArPSBidWlsZFZpZXcoZW1iZWRkZWRWaWV3LCBhc3QuY2hpbGRyZW4sIHRoaXMudGFyZ2V0RGVwZW5kZW5jaWVzKTtcblxuICAgIGNvbXBpbGVFbGVtZW50LmJlZm9yZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5fYWRkUm9vdE5vZGVBbmRQcm9qZWN0KGNvbXBpbGVFbGVtZW50LCBhc3QubmdDb250ZW50SW5kZXgsIHBhcmVudCk7XG4gICAgY29tcGlsZUVsZW1lbnQuYWZ0ZXJDaGlsZHJlbigwKTtcblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRBdHRyKGFzdDogQXR0ckFzdCwgY3R4OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdERpcmVjdGl2ZShhc3Q6IERpcmVjdGl2ZUFzdCwgY3R4OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEV2ZW50KGFzdDogQm91bmRFdmVudEFzdCwgZXZlbnRUYXJnZXRBbmROYW1lczogTWFwPHN0cmluZywgQm91bmRFdmVudEFzdD4pOiBhbnkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRSZWZlcmVuY2UoYXN0OiBSZWZlcmVuY2VBc3QsIGN0eDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXRWYXJpYWJsZShhc3Q6IFZhcmlhYmxlQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RGlyZWN0aXZlUHJvcGVydHkoYXN0OiBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEVsZW1lbnRQcm9wZXJ0eShhc3Q6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5mdW5jdGlvbiBfbWVyZ2VIdG1sQW5kRGlyZWN0aXZlQXR0cnMoZGVjbGFyZWRIdG1sQXR0cnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdKTogc3RyaW5nW11bXSB7XG4gIHZhciByZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG4gIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChkZWNsYXJlZEh0bWxBdHRycywgKHZhbHVlLCBrZXkpID0+IHsgcmVzdWx0W2tleV0gPSB2YWx1ZTsgfSk7XG4gIGRpcmVjdGl2ZXMuZm9yRWFjaChkaXJlY3RpdmVNZXRhID0+IHtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goZGlyZWN0aXZlTWV0YS5ob3N0QXR0cmlidXRlcywgKHZhbHVlLCBuYW1lKSA9PiB7XG4gICAgICB2YXIgcHJldlZhbHVlID0gcmVzdWx0W25hbWVdO1xuICAgICAgcmVzdWx0W25hbWVdID0gaXNQcmVzZW50KHByZXZWYWx1ZSkgPyBtZXJnZUF0dHJpYnV0ZVZhbHVlKG5hbWUsIHByZXZWYWx1ZSwgdmFsdWUpIDogdmFsdWU7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gbWFwVG9LZXlWYWx1ZUFycmF5KHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIF9yZWFkSHRtbEF0dHJzKGF0dHJzOiBBdHRyQXN0W10pOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XG4gIHZhciBodG1sQXR0cnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG4gIGF0dHJzLmZvckVhY2goKGFzdCkgPT4geyBodG1sQXR0cnNbYXN0Lm5hbWVdID0gYXN0LnZhbHVlOyB9KTtcbiAgcmV0dXJuIGh0bWxBdHRycztcbn1cblxuZnVuY3Rpb24gbWVyZ2VBdHRyaWJ1dGVWYWx1ZShhdHRyTmFtZTogc3RyaW5nLCBhdHRyVmFsdWUxOiBzdHJpbmcsIGF0dHJWYWx1ZTI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChhdHRyTmFtZSA9PSBDTEFTU19BVFRSIHx8IGF0dHJOYW1lID09IFNUWUxFX0FUVFIpIHtcbiAgICByZXR1cm4gYCR7YXR0clZhbHVlMX0gJHthdHRyVmFsdWUyfWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF0dHJWYWx1ZTI7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwVG9LZXlWYWx1ZUFycmF5KGRhdGE6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KTogc3RyaW5nW11bXSB7XG4gIHZhciBlbnRyeUFycmF5ID0gW107XG4gIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChkYXRhLCAodmFsdWUsIG5hbWUpID0+IHsgZW50cnlBcnJheS5wdXNoKFtuYW1lLCB2YWx1ZV0pOyB9KTtcbiAgLy8gV2UgbmVlZCB0byBzb3J0IHRvIGdldCBhIGRlZmluZWQgb3V0cHV0IG9yZGVyXG4gIC8vIGZvciB0ZXN0cyBhbmQgZm9yIGNhY2hpbmcgZ2VuZXJhdGVkIGFydGlmYWN0cy4uLlxuICBMaXN0V3JhcHBlci5zb3J0KGVudHJ5QXJyYXksIChlbnRyeTEsIGVudHJ5MikgPT4gU3RyaW5nV3JhcHBlci5jb21wYXJlKGVudHJ5MVswXSwgZW50cnkyWzBdKSk7XG4gIHZhciBrZXlWYWx1ZUFycmF5ID0gW107XG4gIGVudHJ5QXJyYXkuZm9yRWFjaCgoZW50cnkpID0+IHsga2V5VmFsdWVBcnJheS5wdXNoKFtlbnRyeVswXSwgZW50cnlbMV1dKTsgfSk7XG4gIHJldHVybiBrZXlWYWx1ZUFycmF5O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVWaWV3VG9wTGV2ZWxTdG10cyh2aWV3OiBDb21waWxlVmlldywgdGFyZ2V0U3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSkge1xuICB2YXIgbm9kZURlYnVnSW5mb3NWYXI6IG8uRXhwcmVzc2lvbiA9IG8uTlVMTF9FWFBSO1xuICBpZiAodmlldy5nZW5Db25maWcuZ2VuRGVidWdJbmZvKSB7XG4gICAgbm9kZURlYnVnSW5mb3NWYXIgPSBvLnZhcmlhYmxlKGBub2RlRGVidWdJbmZvc18ke3ZpZXcuY29tcG9uZW50LnR5cGUubmFtZX0ke3ZpZXcudmlld0luZGV4fWApO1xuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChcbiAgICAgICAgKDxvLlJlYWRWYXJFeHByPm5vZGVEZWJ1Z0luZm9zVmFyKVxuICAgICAgICAgICAgLnNldChvLmxpdGVyYWxBcnIodmlldy5ub2Rlcy5tYXAoY3JlYXRlU3RhdGljTm9kZURlYnVnSW5mbyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgby5BcnJheVR5cGUobmV3IG8uRXh0ZXJuYWxUeXBlKElkZW50aWZpZXJzLlN0YXRpY05vZGVEZWJ1Z0luZm8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvLlR5cGVNb2RpZmllci5Db25zdF0pKSlcbiAgICAgICAgICAgIC50b0RlY2xTdG10KG51bGwsIFtvLlN0bXRNb2RpZmllci5GaW5hbF0pKTtcbiAgfVxuXG5cbiAgdmFyIHJlbmRlckNvbXBUeXBlVmFyOiBvLlJlYWRWYXJFeHByID0gby52YXJpYWJsZShgcmVuZGVyVHlwZV8ke3ZpZXcuY29tcG9uZW50LnR5cGUubmFtZX1gKTtcbiAgaWYgKHZpZXcudmlld0luZGV4ID09PSAwKSB7XG4gICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKHJlbmRlckNvbXBUeXBlVmFyLnNldChvLk5VTExfRVhQUilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0RlY2xTdG10KG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5SZW5kZXJDb21wb25lbnRUeXBlKSkpO1xuICB9XG5cbiAgdmFyIHZpZXdDbGFzcyA9IGNyZWF0ZVZpZXdDbGFzcyh2aWV3LCByZW5kZXJDb21wVHlwZVZhciwgbm9kZURlYnVnSW5mb3NWYXIpO1xuICB0YXJnZXRTdGF0ZW1lbnRzLnB1c2godmlld0NsYXNzKTtcbiAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKGNyZWF0ZVZpZXdGYWN0b3J5KHZpZXcsIHZpZXdDbGFzcywgcmVuZGVyQ29tcFR5cGVWYXIpKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RhdGljTm9kZURlYnVnSW5mbyhub2RlOiBDb21waWxlTm9kZSk6IG8uRXhwcmVzc2lvbiB7XG4gIHZhciBjb21waWxlRWxlbWVudCA9IG5vZGUgaW5zdGFuY2VvZiBDb21waWxlRWxlbWVudCA/IG5vZGUgOiBudWxsO1xuICB2YXIgcHJvdmlkZXJUb2tlbnM6IG8uRXhwcmVzc2lvbltdID0gW107XG4gIHZhciBjb21wb25lbnRUb2tlbjogby5FeHByZXNzaW9uID0gby5OVUxMX0VYUFI7XG4gIHZhciB2YXJUb2tlbkVudHJpZXMgPSBbXTtcbiAgaWYgKGlzUHJlc2VudChjb21waWxlRWxlbWVudCkpIHtcbiAgICBwcm92aWRlclRva2VucyA9IGNvbXBpbGVFbGVtZW50LmdldFByb3ZpZGVyVG9rZW5zKCk7XG4gICAgaWYgKGlzUHJlc2VudChjb21waWxlRWxlbWVudC5jb21wb25lbnQpKSB7XG4gICAgICBjb21wb25lbnRUb2tlbiA9IGNyZWF0ZURpVG9rZW5FeHByZXNzaW9uKGlkZW50aWZpZXJUb2tlbihjb21waWxlRWxlbWVudC5jb21wb25lbnQudHlwZSkpO1xuICAgIH1cbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goY29tcGlsZUVsZW1lbnQucmVmZXJlbmNlVG9rZW5zLCAodG9rZW4sIHZhck5hbWUpID0+IHtcbiAgICAgIHZhclRva2VuRW50cmllcy5wdXNoKFxuICAgICAgICAgIFt2YXJOYW1lLCBpc1ByZXNlbnQodG9rZW4pID8gY3JlYXRlRGlUb2tlbkV4cHJlc3Npb24odG9rZW4pIDogby5OVUxMX0VYUFJdKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gby5pbXBvcnRFeHByKElkZW50aWZpZXJzLlN0YXRpY05vZGVEZWJ1Z0luZm8pXG4gICAgICAuaW5zdGFudGlhdGUoXG4gICAgICAgICAgW1xuICAgICAgICAgICAgby5saXRlcmFsQXJyKHByb3ZpZGVyVG9rZW5zLCBuZXcgby5BcnJheVR5cGUoby5EWU5BTUlDX1RZUEUsIFtvLlR5cGVNb2RpZmllci5Db25zdF0pKSxcbiAgICAgICAgICAgIGNvbXBvbmVudFRva2VuLFxuICAgICAgICAgICAgby5saXRlcmFsTWFwKHZhclRva2VuRW50cmllcywgbmV3IG8uTWFwVHlwZShvLkRZTkFNSUNfVFlQRSwgW28uVHlwZU1vZGlmaWVyLkNvbnN0XSkpXG4gICAgICAgICAgXSxcbiAgICAgICAgICBvLmltcG9ydFR5cGUoSWRlbnRpZmllcnMuU3RhdGljTm9kZURlYnVnSW5mbywgbnVsbCwgW28uVHlwZU1vZGlmaWVyLkNvbnN0XSkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVWaWV3Q2xhc3ModmlldzogQ29tcGlsZVZpZXcsIHJlbmRlckNvbXBUeXBlVmFyOiBvLlJlYWRWYXJFeHByLFxuICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVEZWJ1Z0luZm9zVmFyOiBvLkV4cHJlc3Npb24pOiBvLkNsYXNzU3RtdCB7XG4gIHZhciBlbXB0eVRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncyA9XG4gICAgICB2aWV3LnRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncy5tYXAoKGVudHJ5KSA9PiBbZW50cnlbMF0sIG8uTlVMTF9FWFBSXSk7XG4gIHZhciB2aWV3Q29uc3RydWN0b3JBcmdzID0gW1xuICAgIG5ldyBvLkZuUGFyYW0oVmlld0NvbnN0cnVjdG9yVmFycy52aWV3VXRpbHMubmFtZSwgby5pbXBvcnRUeXBlKElkZW50aWZpZXJzLlZpZXdVdGlscykpLFxuICAgIG5ldyBvLkZuUGFyYW0oVmlld0NvbnN0cnVjdG9yVmFycy5wYXJlbnRJbmplY3Rvci5uYW1lLCBvLmltcG9ydFR5cGUoSWRlbnRpZmllcnMuSW5qZWN0b3IpKSxcbiAgICBuZXcgby5GblBhcmFtKFZpZXdDb25zdHJ1Y3RvclZhcnMuZGVjbGFyYXRpb25FbC5uYW1lLCBvLmltcG9ydFR5cGUoSWRlbnRpZmllcnMuQXBwRWxlbWVudCkpXG4gIF07XG4gIHZhciB2aWV3Q29uc3RydWN0b3IgPSBuZXcgby5DbGFzc01ldGhvZChudWxsLCB2aWV3Q29uc3RydWN0b3JBcmdzLCBbXG4gICAgby5TVVBFUl9FWFBSLmNhbGxGbihbXG4gICAgICAgICAgICAgICAgICBvLnZhcmlhYmxlKHZpZXcuY2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgIHJlbmRlckNvbXBUeXBlVmFyLFxuICAgICAgICAgICAgICAgICAgVmlld1R5cGVFbnVtLmZyb21WYWx1ZSh2aWV3LnZpZXdUeXBlKSxcbiAgICAgICAgICAgICAgICAgIG8ubGl0ZXJhbE1hcChlbXB0eVRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncyksXG4gICAgICAgICAgICAgICAgICBWaWV3Q29uc3RydWN0b3JWYXJzLnZpZXdVdGlscyxcbiAgICAgICAgICAgICAgICAgIFZpZXdDb25zdHJ1Y3RvclZhcnMucGFyZW50SW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgICBWaWV3Q29uc3RydWN0b3JWYXJzLmRlY2xhcmF0aW9uRWwsXG4gICAgICAgICAgICAgICAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneUVudW0uZnJvbVZhbHVlKGdldENoYW5nZURldGVjdGlvbk1vZGUodmlldykpLFxuICAgICAgICAgICAgICAgICAgbm9kZURlYnVnSW5mb3NWYXJcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAudG9TdG10KClcbiAgXSk7XG5cbiAgdmFyIHZpZXdNZXRob2RzID0gW1xuICAgIG5ldyBvLkNsYXNzTWV0aG9kKCdjcmVhdGVJbnRlcm5hbCcsIFtuZXcgby5GblBhcmFtKHJvb3RTZWxlY3RvclZhci5uYW1lLCBvLlNUUklOR19UWVBFKV0sXG4gICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDcmVhdGVNZXRob2QodmlldyksIG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5BcHBFbGVtZW50KSksXG4gICAgbmV3IG8uQ2xhc3NNZXRob2QoXG4gICAgICAgICdpbmplY3RvckdldEludGVybmFsJyxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBvLkZuUGFyYW0oSW5qZWN0TWV0aG9kVmFycy50b2tlbi5uYW1lLCBvLkRZTkFNSUNfVFlQRSksXG4gICAgICAgICAgLy8gTm90ZTogQ2FuJ3QgdXNlIG8uSU5UX1RZUEUgaGVyZSBhcyB0aGUgbWV0aG9kIGluIEFwcFZpZXcgdXNlcyBudW1iZXJcbiAgICAgICAgICBuZXcgby5GblBhcmFtKEluamVjdE1ldGhvZFZhcnMucmVxdWVzdE5vZGVJbmRleC5uYW1lLCBvLk5VTUJFUl9UWVBFKSxcbiAgICAgICAgICBuZXcgby5GblBhcmFtKEluamVjdE1ldGhvZFZhcnMubm90Rm91bmRSZXN1bHQubmFtZSwgby5EWU5BTUlDX1RZUEUpXG4gICAgICAgIF0sXG4gICAgICAgIGFkZFJldHVyblZhbHVlZk5vdEVtcHR5KHZpZXcuaW5qZWN0b3JHZXRNZXRob2QuZmluaXNoKCksIEluamVjdE1ldGhvZFZhcnMubm90Rm91bmRSZXN1bHQpLFxuICAgICAgICBvLkRZTkFNSUNfVFlQRSksXG4gICAgbmV3IG8uQ2xhc3NNZXRob2QoJ2RldGVjdENoYW5nZXNJbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgW25ldyBvLkZuUGFyYW0oRGV0ZWN0Q2hhbmdlc1ZhcnMudGhyb3dPbkNoYW5nZS5uYW1lLCBvLkJPT0xfVFlQRSldLFxuICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRGV0ZWN0Q2hhbmdlc01ldGhvZCh2aWV3KSksXG4gICAgbmV3IG8uQ2xhc3NNZXRob2QoJ2RpcnR5UGFyZW50UXVlcmllc0ludGVybmFsJywgW10sIHZpZXcuZGlydHlQYXJlbnRRdWVyaWVzTWV0aG9kLmZpbmlzaCgpKSxcbiAgICBuZXcgby5DbGFzc01ldGhvZCgnZGVzdHJveUludGVybmFsJywgW10sIHZpZXcuZGVzdHJveU1ldGhvZC5maW5pc2goKSlcbiAgXS5jb25jYXQodmlldy5ldmVudEhhbmRsZXJNZXRob2RzKTtcbiAgdmFyIHZpZXdDbGFzcyA9IG5ldyBvLkNsYXNzU3RtdChcbiAgICAgIHZpZXcuY2xhc3NOYW1lLCBvLmltcG9ydEV4cHIoSWRlbnRpZmllcnMuQXBwVmlldywgW2dldENvbnRleHRUeXBlKHZpZXcpXSksIHZpZXcuZmllbGRzLFxuICAgICAgdmlldy5nZXR0ZXJzLCB2aWV3Q29uc3RydWN0b3IsIHZpZXdNZXRob2RzLmZpbHRlcigobWV0aG9kKSA9PiBtZXRob2QuYm9keS5sZW5ndGggPiAwKSk7XG4gIHJldHVybiB2aWV3Q2xhc3M7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZpZXdGYWN0b3J5KHZpZXc6IENvbXBpbGVWaWV3LCB2aWV3Q2xhc3M6IG8uQ2xhc3NTdG10LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29tcFR5cGVWYXI6IG8uUmVhZFZhckV4cHIpOiBvLlN0YXRlbWVudCB7XG4gIHZhciB2aWV3RmFjdG9yeUFyZ3MgPSBbXG4gICAgbmV3IG8uRm5QYXJhbShWaWV3Q29uc3RydWN0b3JWYXJzLnZpZXdVdGlscy5uYW1lLCBvLmltcG9ydFR5cGUoSWRlbnRpZmllcnMuVmlld1V0aWxzKSksXG4gICAgbmV3IG8uRm5QYXJhbShWaWV3Q29uc3RydWN0b3JWYXJzLnBhcmVudEluamVjdG9yLm5hbWUsIG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5JbmplY3RvcikpLFxuICAgIG5ldyBvLkZuUGFyYW0oVmlld0NvbnN0cnVjdG9yVmFycy5kZWNsYXJhdGlvbkVsLm5hbWUsIG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5BcHBFbGVtZW50KSlcbiAgXTtcbiAgdmFyIGluaXRSZW5kZXJDb21wVHlwZVN0bXRzID0gW107XG4gIHZhciB0ZW1wbGF0ZVVybEluZm87XG4gIGlmICh2aWV3LmNvbXBvbmVudC50ZW1wbGF0ZS50ZW1wbGF0ZVVybCA9PSB2aWV3LmNvbXBvbmVudC50eXBlLm1vZHVsZVVybCkge1xuICAgIHRlbXBsYXRlVXJsSW5mbyA9XG4gICAgICAgIGAke3ZpZXcuY29tcG9uZW50LnR5cGUubW9kdWxlVXJsfSBjbGFzcyAke3ZpZXcuY29tcG9uZW50LnR5cGUubmFtZX0gLSBpbmxpbmUgdGVtcGxhdGVgO1xuICB9IGVsc2Uge1xuICAgIHRlbXBsYXRlVXJsSW5mbyA9IHZpZXcuY29tcG9uZW50LnRlbXBsYXRlLnRlbXBsYXRlVXJsO1xuICB9XG4gIGlmICh2aWV3LnZpZXdJbmRleCA9PT0gMCkge1xuICAgIGluaXRSZW5kZXJDb21wVHlwZVN0bXRzID0gW1xuICAgICAgbmV3IG8uSWZTdG10KHJlbmRlckNvbXBUeXBlVmFyLmlkZW50aWNhbChvLk5VTExfRVhQUiksXG4gICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29tcFR5cGVWYXIuc2V0KFZpZXdDb25zdHJ1Y3RvclZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZpZXdVdGlscy5jYWxsTWV0aG9kKCdjcmVhdGVSZW5kZXJDb21wb25lbnRUeXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5saXRlcmFsKHRlbXBsYXRlVXJsSW5mbyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCh2aWV3LmNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZW1wbGF0ZS5uZ0NvbnRlbnRTZWxlY3RvcnMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld0VuY2Fwc3VsYXRpb25FbnVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZnJvbVZhbHVlKHZpZXcuY29tcG9uZW50LnRlbXBsYXRlLmVuY2Fwc3VsYXRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LnN0eWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgLnRvU3RtdCgpXG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICBdO1xuICB9XG4gIHJldHVybiBvLmZuKHZpZXdGYWN0b3J5QXJncywgaW5pdFJlbmRlckNvbXBUeXBlU3RtdHMuY29uY2F0KFtcbiAgICAgICAgICAgIG5ldyBvLlJldHVyblN0YXRlbWVudChvLnZhcmlhYmxlKHZpZXdDbGFzcy5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5zdGFudGlhdGUodmlld0NsYXNzLmNvbnN0cnVjdG9yTWV0aG9kLnBhcmFtcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYW0pID0+IG8udmFyaWFibGUocGFyYW0ubmFtZSkpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgby5pbXBvcnRUeXBlKElkZW50aWZpZXJzLkFwcFZpZXcsIFtnZXRDb250ZXh0VHlwZSh2aWV3KV0pKVxuICAgICAgLnRvRGVjbFN0bXQodmlldy52aWV3RmFjdG9yeS5uYW1lLCBbby5TdG10TW9kaWZpZXIuRmluYWxdKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVDcmVhdGVNZXRob2QodmlldzogQ29tcGlsZVZpZXcpOiBvLlN0YXRlbWVudFtdIHtcbiAgdmFyIHBhcmVudFJlbmRlck5vZGVFeHByOiBvLkV4cHJlc3Npb24gPSBvLk5VTExfRVhQUjtcbiAgdmFyIHBhcmVudFJlbmRlck5vZGVTdG10cyA9IFtdO1xuICBpZiAodmlldy52aWV3VHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgcGFyZW50UmVuZGVyTm9kZUV4cHIgPSBWaWV3UHJvcGVydGllcy5yZW5kZXJlci5jYWxsTWV0aG9kKFxuICAgICAgICAnY3JlYXRlVmlld1Jvb3QnLCBbby5USElTX0VYUFIucHJvcCgnZGVjbGFyYXRpb25BcHBFbGVtZW50JykucHJvcCgnbmF0aXZlRWxlbWVudCcpXSk7XG4gICAgcGFyZW50UmVuZGVyTm9kZVN0bXRzID0gW1xuICAgICAgcGFyZW50UmVuZGVyTm9kZVZhci5zZXQocGFyZW50UmVuZGVyTm9kZUV4cHIpXG4gICAgICAgICAgLnRvRGVjbFN0bXQoby5pbXBvcnRUeXBlKHZpZXcuZ2VuQ29uZmlnLnJlbmRlclR5cGVzLnJlbmRlck5vZGUpLCBbby5TdG10TW9kaWZpZXIuRmluYWxdKVxuICAgIF07XG4gIH1cbiAgdmFyIHJlc3VsdEV4cHI6IG8uRXhwcmVzc2lvbjtcbiAgaWYgKHZpZXcudmlld1R5cGUgPT09IFZpZXdUeXBlLkhPU1QpIHtcbiAgICByZXN1bHRFeHByID0gKDxDb21waWxlRWxlbWVudD52aWV3Lm5vZGVzWzBdKS5hcHBFbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdEV4cHIgPSBvLk5VTExfRVhQUjtcbiAgfVxuICByZXR1cm4gcGFyZW50UmVuZGVyTm9kZVN0bXRzLmNvbmNhdCh2aWV3LmNyZWF0ZU1ldGhvZC5maW5pc2goKSlcbiAgICAgIC5jb25jYXQoW1xuICAgICAgICBvLlRISVNfRVhQUi5jYWxsTWV0aG9kKCdpbml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVGbGF0QXJyYXkodmlldy5yb290Tm9kZXNPckFwcEVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGl0ZXJhbEFycih2aWV3Lm5vZGVzLm1hcChub2RlID0+IG5vZGUucmVuZGVyTm9kZSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5saXRlcmFsQXJyKHZpZXcuZGlzcG9zYWJsZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5saXRlcmFsQXJyKHZpZXcuc3Vic2NyaXB0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgLnRvU3RtdCgpLFxuICAgICAgICBuZXcgby5SZXR1cm5TdGF0ZW1lbnQocmVzdWx0RXhwcilcbiAgICAgIF0pO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZURldGVjdENoYW5nZXNNZXRob2QodmlldzogQ29tcGlsZVZpZXcpOiBvLlN0YXRlbWVudFtdIHtcbiAgdmFyIHN0bXRzID0gW107XG4gIGlmICh2aWV3LmRldGVjdENoYW5nZXNJbklucHV0c01ldGhvZC5pc0VtcHR5KCkgJiYgdmlldy51cGRhdGVDb250ZW50UXVlcmllc01ldGhvZC5pc0VtcHR5KCkgJiZcbiAgICAgIHZpZXcuYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kLmlzRW1wdHkoKSAmJlxuICAgICAgdmlldy5kZXRlY3RDaGFuZ2VzUmVuZGVyUHJvcGVydGllc01ldGhvZC5pc0VtcHR5KCkgJiZcbiAgICAgIHZpZXcudXBkYXRlVmlld1F1ZXJpZXNNZXRob2QuaXNFbXB0eSgpICYmIHZpZXcuYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kLmlzRW1wdHkoKSkge1xuICAgIHJldHVybiBzdG10cztcbiAgfVxuICBMaXN0V3JhcHBlci5hZGRBbGwoc3RtdHMsIHZpZXcuZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kLmZpbmlzaCgpKTtcbiAgc3RtdHMucHVzaChcbiAgICAgIG8uVEhJU19FWFBSLmNhbGxNZXRob2QoJ2RldGVjdENvbnRlbnRDaGlsZHJlbkNoYW5nZXMnLCBbRGV0ZWN0Q2hhbmdlc1ZhcnMudGhyb3dPbkNoYW5nZV0pXG4gICAgICAgICAgLnRvU3RtdCgpKTtcbiAgdmFyIGFmdGVyQ29udGVudFN0bXRzID0gdmlldy51cGRhdGVDb250ZW50UXVlcmllc01ldGhvZC5maW5pc2goKS5jb25jYXQoXG4gICAgICB2aWV3LmFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrc01ldGhvZC5maW5pc2goKSk7XG4gIGlmIChhZnRlckNvbnRlbnRTdG10cy5sZW5ndGggPiAwKSB7XG4gICAgc3RtdHMucHVzaChuZXcgby5JZlN0bXQoby5ub3QoRGV0ZWN0Q2hhbmdlc1ZhcnMudGhyb3dPbkNoYW5nZSksIGFmdGVyQ29udGVudFN0bXRzKSk7XG4gIH1cbiAgTGlzdFdyYXBwZXIuYWRkQWxsKHN0bXRzLCB2aWV3LmRldGVjdENoYW5nZXNSZW5kZXJQcm9wZXJ0aWVzTWV0aG9kLmZpbmlzaCgpKTtcbiAgc3RtdHMucHVzaChvLlRISVNfRVhQUi5jYWxsTWV0aG9kKCdkZXRlY3RWaWV3Q2hpbGRyZW5DaGFuZ2VzJywgW0RldGVjdENoYW5nZXNWYXJzLnRocm93T25DaGFuZ2VdKVxuICAgICAgICAgICAgICAgICAudG9TdG10KCkpO1xuICB2YXIgYWZ0ZXJWaWV3U3RtdHMgPVxuICAgICAgdmlldy51cGRhdGVWaWV3UXVlcmllc01ldGhvZC5maW5pc2goKS5jb25jYXQodmlldy5hZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3NNZXRob2QuZmluaXNoKCkpO1xuICBpZiAoYWZ0ZXJWaWV3U3RtdHMubGVuZ3RoID4gMCkge1xuICAgIHN0bXRzLnB1c2gobmV3IG8uSWZTdG10KG8ubm90KERldGVjdENoYW5nZXNWYXJzLnRocm93T25DaGFuZ2UpLCBhZnRlclZpZXdTdG10cykpO1xuICB9XG5cbiAgdmFyIHZhclN0bXRzID0gW107XG4gIHZhciByZWFkVmFycyA9IG8uZmluZFJlYWRWYXJOYW1lcyhzdG10cyk7XG4gIGlmIChTZXRXcmFwcGVyLmhhcyhyZWFkVmFycywgRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlZC5uYW1lKSkge1xuICAgIHZhclN0bXRzLnB1c2goRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlZC5zZXQoby5saXRlcmFsKHRydWUpKS50b0RlY2xTdG10KG8uQk9PTF9UWVBFKSk7XG4gIH1cbiAgaWYgKFNldFdyYXBwZXIuaGFzKHJlYWRWYXJzLCBEZXRlY3RDaGFuZ2VzVmFycy5jaGFuZ2VzLm5hbWUpKSB7XG4gICAgdmFyU3RtdHMucHVzaChEZXRlY3RDaGFuZ2VzVmFycy5jaGFuZ2VzLnNldChvLk5VTExfRVhQUilcbiAgICAgICAgICAgICAgICAgICAgICAudG9EZWNsU3RtdChuZXcgby5NYXBUeXBlKG8uaW1wb3J0VHlwZShJZGVudGlmaWVycy5TaW1wbGVDaGFuZ2UpKSkpO1xuICB9XG4gIGlmIChTZXRXcmFwcGVyLmhhcyhyZWFkVmFycywgRGV0ZWN0Q2hhbmdlc1ZhcnMudmFsVW53cmFwcGVyLm5hbWUpKSB7XG4gICAgdmFyU3RtdHMucHVzaChcbiAgICAgICAgRGV0ZWN0Q2hhbmdlc1ZhcnMudmFsVW53cmFwcGVyLnNldChvLmltcG9ydEV4cHIoSWRlbnRpZmllcnMuVmFsdWVVbndyYXBwZXIpLmluc3RhbnRpYXRlKFtdKSlcbiAgICAgICAgICAgIC50b0RlY2xTdG10KG51bGwsIFtvLlN0bXRNb2RpZmllci5GaW5hbF0pKTtcbiAgfVxuICByZXR1cm4gdmFyU3RtdHMuY29uY2F0KHN0bXRzKTtcbn1cblxuZnVuY3Rpb24gYWRkUmV0dXJuVmFsdWVmTm90RW1wdHkoc3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSwgdmFsdWU6IG8uRXhwcmVzc2lvbik6IG8uU3RhdGVtZW50W10ge1xuICBpZiAoc3RhdGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHN0YXRlbWVudHMuY29uY2F0KFtuZXcgby5SZXR1cm5TdGF0ZW1lbnQodmFsdWUpXSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29udGV4dFR5cGUodmlldzogQ29tcGlsZVZpZXcpOiBvLlR5cGUge1xuICB2YXIgdHlwZU1ldGEgPSB2aWV3LmNvbXBvbmVudC50eXBlO1xuICByZXR1cm4gdHlwZU1ldGEuaXNIb3N0ID8gby5EWU5BTUlDX1RZUEUgOiBvLmltcG9ydFR5cGUodHlwZU1ldGEpO1xufVxuXG5mdW5jdGlvbiBnZXRDaGFuZ2VEZXRlY3Rpb25Nb2RlKHZpZXc6IENvbXBpbGVWaWV3KTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kge1xuICB2YXIgbW9kZTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3k7XG4gIGlmICh2aWV3LnZpZXdUeXBlID09PSBWaWV3VHlwZS5DT01QT05FTlQpIHtcbiAgICBtb2RlID0gaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kodmlldy5jb21wb25lbnQuY2hhbmdlRGV0ZWN0aW9uKSA/XG4gICAgICAgICAgICAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja0Fsd2F5cyA6XG4gICAgICAgICAgICAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja09uY2U7XG4gIH0gZWxzZSB7XG4gICAgbW9kZSA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrQWx3YXlzO1xuICB9XG4gIHJldHVybiBtb2RlO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nvar constants_1 = require('./constants');\r\nvar template_ast_1 = require('../template_ast');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar lifecycle_hooks_1 = require('angular2/src/core/metadata/lifecycle_hooks');\r\nvar constants_2 = require('angular2/src/core/change_detection/constants');\r\nvar util_1 = require('../util');\r\nvar expression_converter_1 = require('./expression_converter');\r\nvar compile_binding_1 = require('./compile_binding');\r\nfunction createBindFieldExpr(exprIndex) {\r\n return o.THIS_EXPR.prop(\"_expr_\" + exprIndex);\r\n}\r\nfunction createCurrValueExpr(exprIndex) {\r\n return o.variable(\"currVal_\" + exprIndex);\r\n}\r\nfunction bind(view, currValExpr, fieldExpr, parsedExpression, context, actions, method) {\r\n var checkExpression = expression_converter_1.convertCdExpressionToIr(view, context, parsedExpression, constants_1.DetectChangesVars.valUnwrapper);\r\n if (lang_1.isBlank(checkExpression.expression)) {\r\n // e.g. an empty expression was given\r\n return;\r\n }\r\n view.fields.push(new o.ClassField(fieldExpr.name, null, [o.StmtModifier.Private]));\r\n view.createMethod.addStmt(o.THIS_EXPR.prop(fieldExpr.name).set(o.importExpr(identifiers_1.Identifiers.uninitialized)).toStmt());\r\n if (checkExpression.needsValueUnwrapper) {\r\n var initValueUnwrapperStmt = constants_1.DetectChangesVars.valUnwrapper.callMethod('reset', []).toStmt();\r\n method.addStmt(initValueUnwrapperStmt);\r\n }\r\n method.addStmt(currValExpr.set(checkExpression.expression).toDeclStmt(null, [o.StmtModifier.Final]));\r\n var condition = o.importExpr(identifiers_1.Identifiers.checkBinding)\r\n .callFn([constants_1.DetectChangesVars.throwOnChange, fieldExpr, currValExpr]);\r\n if (checkExpression.needsValueUnwrapper) {\r\n condition = constants_1.DetectChangesVars.valUnwrapper.prop('hasWrappedValue').or(condition);\r\n }\r\n method.addStmt(new o.IfStmt(condition, actions.concat([o.THIS_EXPR.prop(fieldExpr.name).set(currValExpr).toStmt()])));\r\n}\r\nfunction bindRenderText(boundText, compileNode, view) {\r\n var bindingIndex = view.bindings.length;\r\n view.bindings.push(new compile_binding_1.CompileBinding(compileNode, boundText));\r\n var currValExpr = createCurrValueExpr(bindingIndex);\r\n var valueField = createBindFieldExpr(bindingIndex);\r\n view.detectChangesRenderPropertiesMethod.resetDebugInfo(compileNode.nodeIndex, boundText);\r\n bind(view, currValExpr, valueField, boundText.value, o.THIS_EXPR.prop('context'), [\r\n o.THIS_EXPR.prop('renderer')\r\n .callMethod('setText', [compileNode.renderNode, currValExpr])\r\n .toStmt()\r\n ], view.detectChangesRenderPropertiesMethod);\r\n}\r\nexports.bindRenderText = bindRenderText;\r\nfunction bindAndWriteToRenderer(boundProps, context, compileElement) {\r\n var view = compileElement.view;\r\n var renderNode = compileElement.renderNode;\r\n boundProps.forEach(function (boundProp) {\r\n var bindingIndex = view.bindings.length;\r\n view.bindings.push(new compile_binding_1.CompileBinding(compileElement, boundProp));\r\n view.detectChangesRenderPropertiesMethod.resetDebugInfo(compileElement.nodeIndex, boundProp);\r\n var fieldExpr = createBindFieldExpr(bindingIndex);\r\n var currValExpr = createCurrValueExpr(bindingIndex);\r\n var renderMethod;\r\n var renderValue = currValExpr;\r\n var updateStmts = [];\r\n switch (boundProp.type) {\r\n case template_ast_1.PropertyBindingType.Property:\r\n renderMethod = 'setElementProperty';\r\n if (view.genConfig.logBindingUpdate) {\r\n updateStmts.push(logBindingUpdateStmt(renderNode, boundProp.name, currValExpr));\r\n }\r\n break;\r\n case template_ast_1.PropertyBindingType.Attribute:\r\n renderMethod = 'setElementAttribute';\r\n renderValue =\r\n renderValue.isBlank().conditional(o.NULL_EXPR, renderValue.callMethod('toString', []));\r\n break;\r\n case template_ast_1.PropertyBindingType.Class:\r\n renderMethod = 'setElementClass';\r\n break;\r\n case template_ast_1.PropertyBindingType.Style:\r\n renderMethod = 'setElementStyle';\r\n var strValue = renderValue.callMethod('toString', []);\r\n if (lang_1.isPresent(boundProp.unit)) {\r\n strValue = strValue.plus(o.literal(boundProp.unit));\r\n }\r\n renderValue = renderValue.isBlank().conditional(o.NULL_EXPR, strValue);\r\n break;\r\n }\r\n updateStmts.push(o.THIS_EXPR.prop('renderer')\r\n .callMethod(renderMethod, [renderNode, o.literal(boundProp.name), renderValue])\r\n .toStmt());\r\n bind(view, currValExpr, fieldExpr, boundProp.value, context, updateStmts, view.detectChangesRenderPropertiesMethod);\r\n });\r\n}\r\nfunction bindRenderInputs(boundProps, compileElement) {\r\n bindAndWriteToRenderer(boundProps, o.THIS_EXPR.prop('context'), compileElement);\r\n}\r\nexports.bindRenderInputs = bindRenderInputs;\r\nfunction bindDirectiveHostProps(directiveAst, directiveInstance, compileElement) {\r\n bindAndWriteToRenderer(directiveAst.hostProperties, directiveInstance, compileElement);\r\n}\r\nexports.bindDirectiveHostProps = bindDirectiveHostProps;\r\nfunction bindDirectiveInputs(directiveAst, directiveInstance, compileElement) {\r\n if (directiveAst.inputs.length === 0) {\r\n return;\r\n }\r\n var view = compileElement.view;\r\n var detectChangesInInputsMethod = view.detectChangesInInputsMethod;\r\n detectChangesInInputsMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);\r\n var lifecycleHooks = directiveAst.directive.lifecycleHooks;\r\n var calcChangesMap = lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.OnChanges) !== -1;\r\n var isOnPushComp = directiveAst.directive.isComponent &&\r\n !constants_2.isDefaultChangeDetectionStrategy(directiveAst.directive.changeDetection);\r\n if (calcChangesMap) {\r\n detectChangesInInputsMethod.addStmt(constants_1.DetectChangesVars.changes.set(o.NULL_EXPR).toStmt());\r\n }\r\n if (isOnPushComp) {\r\n detectChangesInInputsMethod.addStmt(constants_1.DetectChangesVars.changed.set(o.literal(false)).toStmt());\r\n }\r\n directiveAst.inputs.forEach(function (input) {\r\n var bindingIndex = view.bindings.length;\r\n view.bindings.push(new compile_binding_1.CompileBinding(compileElement, input));\r\n detectChangesInInputsMethod.resetDebugInfo(compileElement.nodeIndex, input);\r\n var fieldExpr = createBindFieldExpr(bindingIndex);\r\n var currValExpr = createCurrValueExpr(bindingIndex);\r\n var statements = [directiveInstance.prop(input.directiveName).set(currValExpr).toStmt()];\r\n if (calcChangesMap) {\r\n statements.push(new o.IfStmt(constants_1.DetectChangesVars.changes.identical(o.NULL_EXPR), [\r\n constants_1.DetectChangesVars.changes.set(o.literalMap([], new o.MapType(o.importType(identifiers_1.Identifiers.SimpleChange))))\r\n .toStmt()\r\n ]));\r\n statements.push(constants_1.DetectChangesVars.changes.key(o.literal(input.directiveName))\r\n .set(o.importExpr(identifiers_1.Identifiers.SimpleChange).instantiate([fieldExpr, currValExpr]))\r\n .toStmt());\r\n }\r\n if (isOnPushComp) {\r\n statements.push(constants_1.DetectChangesVars.changed.set(o.literal(true)).toStmt());\r\n }\r\n if (view.genConfig.logBindingUpdate) {\r\n statements.push(logBindingUpdateStmt(compileElement.renderNode, input.directiveName, currValExpr));\r\n }\r\n bind(view, currValExpr, fieldExpr, input.value, o.THIS_EXPR.prop('context'), statements, detectChangesInInputsMethod);\r\n });\r\n if (isOnPushComp) {\r\n detectChangesInInputsMethod.addStmt(new o.IfStmt(constants_1.DetectChangesVars.changed, [\r\n compileElement.appElement.prop('componentView')\r\n .callMethod('markAsCheckOnce', [])\r\n .toStmt()\r\n ]));\r\n }\r\n}\r\nexports.bindDirectiveInputs = bindDirectiveInputs;\r\nfunction logBindingUpdateStmt(renderNode, propName, value) {\r\n return o.THIS_EXPR.prop('renderer')\r\n .callMethod('setBindingDebugInfo', [\r\n renderNode,\r\n o.literal(\"ng-reflect-\" + util_1.camelCaseToDashCase(propName)),\r\n value.isBlank().conditional(o.NULL_EXPR, value.callMethod('toString', []))\r\n ])\r\n .toStmt();\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlfYmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvcHJvcGVydHlfYmluZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxJQUFZLENBQUMsV0FBTSxzQkFBc0IsQ0FBQyxDQUFBO0FBQzFDLDRCQUEwQixnQkFBZ0IsQ0FBQyxDQUFBO0FBQzNDLDBCQUFnQyxhQUFhLENBQUMsQ0FBQTtBQUU5Qyw2QkFNTyxpQkFBaUIsQ0FBQyxDQUFBO0FBRXpCLHFCQUFzRCwwQkFBMEIsQ0FBQyxDQUFBO0FBTWpGLGdDQUE2Qiw0Q0FBNEMsQ0FBQyxDQUFBO0FBQzFFLDBCQUErQyw4Q0FBOEMsQ0FBQyxDQUFBO0FBQzlGLHFCQUFrQyxTQUFTLENBQUMsQ0FBQTtBQUU1QyxxQ0FBc0Msd0JBQXdCLENBQUMsQ0FBQTtBQUUvRCxnQ0FBNkIsbUJBQW1CLENBQUMsQ0FBQTtBQUVqRCw2QkFBNkIsU0FBaUI7SUFDNUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVMsU0FBVyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELDZCQUE2QixTQUFpQjtJQUM1QyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFXLFNBQVcsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxjQUFjLElBQWlCLEVBQUUsV0FBMEIsRUFBRSxTQUF5QixFQUN4RSxnQkFBMkIsRUFBRSxPQUFxQixFQUFFLE9BQXNCLEVBQzFFLE1BQXFCO0lBQ2pDLElBQUksZUFBZSxHQUNmLDhDQUF1QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNkJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0YsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLGVBQWUsQ0FBQyxV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QUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxFQUNsRiwyQkFBMkIsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNqQiwyQkFBMkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLDZCQUFpQixDQUFDLE9BQU8sRUFBRTtZQUMxRSxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7aUJBQzFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7aUJBQ2pDLE1BQU0sRUFBRTtTQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztBQUNILENBQUM7QUF2RGUsMkJBQW1CLHNCQXVEbEMsQ0FBQTtBQUVELDhCQUE4QixVQUF3QixFQUFFLFFBQWdCLEVBQzFDLEtBQW1CO0lBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDOUIsVUFBVSxDQUFDLHFCQUFxQixFQUNyQjtRQUNFLFVBQVU7UUFDVixDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFjLDBCQUFtQixDQUFDLFFBQVEsQ0FBRyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUMzRSxDQUFDO1NBQ2IsTUFBTSxFQUFFLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkQXN0IGZyb20gJy4uL2V4cHJlc3Npb25fcGFyc2VyL2FzdCc7XG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7SWRlbnRpZmllcnN9IGZyb20gJy4uL2lkZW50aWZpZXJzJztcbmltcG9ydCB7RGV0ZWN0Q2hhbmdlc1ZhcnN9IGZyb20gJy4vY29uc3RhbnRzJztcblxuaW1wb3J0IHtcbiAgQm91bmRUZXh0QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgRGlyZWN0aXZlQXN0LFxuICBQcm9wZXJ0eUJpbmRpbmdUeXBlLFxuICBUZW1wbGF0ZUFzdFxufSBmcm9tICcuLi90ZW1wbGF0ZV9hc3QnO1xuXG5pbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudCwgaXNBcnJheSwgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtDb21waWxlVmlld30gZnJvbSAnLi9jb21waWxlX3ZpZXcnO1xuaW1wb3J0IHtDb21waWxlRWxlbWVudCwgQ29tcGlsZU5vZGV9IGZyb20gJy4vY29tcGlsZV9lbGVtZW50JztcbmltcG9ydCB7Q29tcGlsZU1ldGhvZH0gZnJvbSAnLi9jb21waWxlX21ldGhvZCc7XG5cbmltcG9ydCB7TGlmZWN5Y2xlSG9va3N9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL2xpZmVjeWNsZV9ob29rcyc7XG5pbXBvcnQge2lzRGVmYXVsdENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvbnN0YW50cyc7XG5pbXBvcnQge2NhbWVsQ2FzZVRvRGFzaENhc2V9IGZyb20gJy4uL3V0aWwnO1xuXG5pbXBvcnQge2NvbnZlcnRDZEV4cHJlc3Npb25Ub0lyfSBmcm9tICcuL2V4cHJlc3Npb25fY29udmVydGVyJztcblxuaW1wb3J0IHtDb21waWxlQmluZGluZ30gZnJvbSAnLi9jb21waWxlX2JpbmRpbmcnO1xuXG5mdW5jdGlvbiBjcmVhdGVCaW5kRmllbGRFeHByKGV4cHJJbmRleDogbnVtYmVyKTogby5SZWFkUHJvcEV4cHIge1xuICByZXR1cm4gby5USElTX0VYUFIucHJvcChgX2V4cHJfJHtleHBySW5kZXh9YCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUN1cnJWYWx1ZUV4cHIoZXhwckluZGV4OiBudW1iZXIpOiBvLlJlYWRWYXJFeHByIHtcbiAgcmV0dXJuIG8udmFyaWFibGUoYGN1cnJWYWxfJHtleHBySW5kZXh9YCk7XG59XG5cbmZ1bmN0aW9uIGJpbmQodmlldzogQ29tcGlsZVZpZXcsIGN1cnJWYWxFeHByOiBvLlJlYWRWYXJFeHByLCBmaWVsZEV4cHI6IG8uUmVhZFByb3BFeHByLFxuICAgICAgICAgICAgICBwYXJzZWRFeHByZXNzaW9uOiBjZEFzdC5BU1QsIGNvbnRleHQ6IG8uRXhwcmVzc2lvbiwgYWN0aW9uczogby5TdGF0ZW1lbnRbXSxcbiAgICAgICAgICAgICAgbWV0aG9kOiBDb21waWxlTWV0aG9kKSB7XG4gIHZhciBjaGVja0V4cHJlc3Npb24gPVxuICAgICAgY29udmVydENkRXhwcmVzc2lvblRvSXIodmlldywgY29udGV4dCwgcGFyc2VkRXhwcmVzc2lvbiwgRGV0ZWN0Q2hhbmdlc1ZhcnMudmFsVW53cmFwcGVyKTtcbiAgaWYgKGlzQmxhbmsoY2hlY2tFeHByZXNzaW9uLmV4cHJlc3Npb24pKSB7XG4gICAgLy8gZS5nLiBhbiBlbXB0eSBleHByZXNzaW9uIHdhcyBnaXZlblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHZpZXcuZmllbGRzLnB1c2gobmV3IG8uQ2xhc3NGaWVsZChmaWVsZEV4cHIubmFtZSwgbnVsbCwgW28uU3RtdE1vZGlmaWVyLlByaXZhdGVdKSk7XG4gIHZpZXcuY3JlYXRlTWV0aG9kLmFkZFN0bXQoXG4gICAgICBvLlRISVNfRVhQUi5wcm9wKGZpZWxkRXhwci5uYW1lKS5zZXQoby5pbXBvcnRFeHByKElkZW50aWZpZXJzLnVuaW5pdGlhbGl6ZWQpKS50b1N0bXQoKSk7XG5cbiAgaWYgKGNoZWNrRXhwcmVzc2lvbi5uZWVkc1ZhbHVlVW53cmFwcGVyKSB7XG4gICAgdmFyIGluaXRWYWx1ZVVud3JhcHBlclN0bXQgPSBEZXRlY3RDaGFuZ2VzVmFycy52YWxVbndyYXBwZXIuY2FsbE1ldGhvZCgncmVzZXQnLCBbXSkudG9TdG10KCk7XG4gICAgbWV0aG9kLmFkZFN0bXQoaW5pdFZhbHVlVW53cmFwcGVyU3RtdCk7XG4gIH1cbiAgbWV0aG9kLmFkZFN0bXQoXG4gICAgICBjdXJyVmFsRXhwci5zZXQoY2hlY2tFeHByZXNzaW9uLmV4cHJlc3Npb24pLnRvRGVjbFN0bXQobnVsbCwgW28uU3RtdE1vZGlmaWVyLkZpbmFsXSkpO1xuXG4gIHZhciBjb25kaXRpb246IG8uRXhwcmVzc2lvbiA9XG4gICAgICBvLmltcG9ydEV4cHIoSWRlbnRpZmllcnMuY2hlY2tCaW5kaW5nKVxuICAgICAgICAgIC5jYWxsRm4oW0RldGVjdENoYW5nZXNWYXJzLnRocm93T25DaGFuZ2UsIGZpZWxkRXhwciwgY3VyclZhbEV4cHJdKTtcbiAgaWYgKGNoZWNrRXhwcmVzc2lvbi5uZWVkc1ZhbHVlVW53cmFwcGVyKSB7XG4gICAgY29uZGl0aW9uID0gRGV0ZWN0Q2hhbmdlc1ZhcnMudmFsVW53cmFwcGVyLnByb3AoJ2hhc1dyYXBwZWRWYWx1ZScpLm9yKGNvbmRpdGlvbik7XG4gIH1cbiAgbWV0aG9kLmFkZFN0bXQobmV3IG8uSWZTdG10KFxuICAgICAgY29uZGl0aW9uLFxuICAgICAgYWN0aW9ucy5jb25jYXQoWzxvLlN0YXRlbWVudD5vLlRISVNfRVhQUi5wcm9wKGZpZWxkRXhwci5uYW1lKS5zZXQoY3VyclZhbEV4cHIpLnRvU3RtdCgpXSkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRSZW5kZXJUZXh0KGJvdW5kVGV4dDogQm91bmRUZXh0QXN0LCBjb21waWxlTm9kZTogQ29tcGlsZU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldzogQ29tcGlsZVZpZXcpIHtcbiAgdmFyIGJpbmRpbmdJbmRleCA9IHZpZXcuYmluZGluZ3MubGVuZ3RoO1xuICB2aWV3LmJpbmRpbmdzLnB1c2gobmV3IENvbXBpbGVCaW5kaW5nKGNvbXBpbGVOb2RlLCBib3VuZFRleHQpKTtcbiAgdmFyIGN1cnJWYWxFeHByID0gY3JlYXRlQ3VyclZhbHVlRXhwcihiaW5kaW5nSW5kZXgpO1xuICB2YXIgdmFsdWVGaWVsZCA9IGNyZWF0ZUJpbmRGaWVsZEV4cHIoYmluZGluZ0luZGV4KTtcbiAgdmlldy5kZXRlY3RDaGFuZ2VzUmVuZGVyUHJvcGVydGllc01ldGhvZC5yZXNldERlYnVnSW5mbyhjb21waWxlTm9kZS5ub2RlSW5kZXgsIGJvdW5kVGV4dCk7XG5cbiAgYmluZCh2aWV3LCBjdXJyVmFsRXhwciwgdmFsdWVGaWVsZCwgYm91bmRUZXh0LnZhbHVlLCBvLlRISVNfRVhQUi5wcm9wKCdjb250ZXh0JyksXG4gICAgICAgW1xuICAgICAgICAgby5USElTX0VYUFIucHJvcCgncmVuZGVyZXInKVxuICAgICAgICAgICAgIC5jYWxsTWV0aG9kKCdzZXRUZXh0JywgW2NvbXBpbGVOb2RlLnJlbmRlck5vZGUsIGN1cnJWYWxFeHByXSlcbiAgICAgICAgICAgICAudG9TdG10KClcbiAgICAgICBdLFxuICAgICAgIHZpZXcuZGV0ZWN0Q2hhbmdlc1JlbmRlclByb3BlcnRpZXNNZXRob2QpO1xufVxuXG5mdW5jdGlvbiBiaW5kQW5kV3JpdGVUb1JlbmRlcmVyKGJvdW5kUHJvcHM6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0W10sIGNvbnRleHQ6IG8uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUVsZW1lbnQ6IENvbXBpbGVFbGVtZW50KSB7XG4gIHZhciB2aWV3ID0gY29tcGlsZUVsZW1lbnQudmlldztcbiAgdmFyIHJlbmRlck5vZGUgPSBjb21waWxlRWxlbWVudC5yZW5kZXJOb2RlO1xuICBib3VuZFByb3BzLmZvckVhY2goKGJvdW5kUHJvcCkgPT4ge1xuICAgIHZhciBiaW5kaW5nSW5kZXggPSB2aWV3LmJpbmRpbmdzLmxlbmd0aDtcbiAgICB2aWV3LmJpbmRpbmdzLnB1c2gobmV3IENvbXBpbGVCaW5kaW5nKGNvbXBpbGVFbGVtZW50LCBib3VuZFByb3ApKTtcbiAgICB2aWV3LmRldGVjdENoYW5nZXNSZW5kZXJQcm9wZXJ0aWVzTWV0aG9kLnJlc2V0RGVidWdJbmZvKGNvbXBpbGVFbGVtZW50Lm5vZGVJbmRleCwgYm91bmRQcm9wKTtcbiAgICB2YXIgZmllbGRFeHByID0gY3JlYXRlQmluZEZpZWxkRXhwcihiaW5kaW5nSW5kZXgpO1xuICAgIHZhciBjdXJyVmFsRXhwciA9IGNyZWF0ZUN1cnJWYWx1ZUV4cHIoYmluZGluZ0luZGV4KTtcbiAgICB2YXIgcmVuZGVyTWV0aG9kOiBzdHJpbmc7XG4gICAgdmFyIHJlbmRlclZhbHVlOiBvLkV4cHJlc3Npb24gPSBjdXJyVmFsRXhwcjtcbiAgICB2YXIgdXBkYXRlU3RtdHMgPSBbXTtcbiAgICBzd2l0Y2ggKGJvdW5kUHJvcC50eXBlKSB7XG4gICAgICBjYXNlIFByb3BlcnR5QmluZGluZ1R5cGUuUHJvcGVydHk6XG4gICAgICAgIHJlbmRlck1ldGhvZCA9ICdzZXRFbGVtZW50UHJvcGVydHknO1xuICAgICAgICBpZiAodmlldy5nZW5Db25maWcubG9nQmluZGluZ1VwZGF0ZSkge1xuICAgICAgICAgIHVwZGF0ZVN0bXRzLnB1c2gobG9nQmluZGluZ1VwZGF0ZVN0bXQocmVuZGVyTm9kZSwgYm91bmRQcm9wLm5hbWUsIGN1cnJWYWxFeHByKSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByb3BlcnR5QmluZGluZ1R5cGUuQXR0cmlidXRlOlxuICAgICAgICByZW5kZXJNZXRob2QgPSAnc2V0RWxlbWVudEF0dHJpYnV0ZSc7XG4gICAgICAgIHJlbmRlclZhbHVlID1cbiAgICAgICAgICAgIHJlbmRlclZhbHVlLmlzQmxhbmsoKS5jb25kaXRpb25hbChvLk5VTExfRVhQUiwgcmVuZGVyVmFsdWUuY2FsbE1ldGhvZCgndG9TdHJpbmcnLCBbXSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJvcGVydHlCaW5kaW5nVHlwZS5DbGFzczpcbiAgICAgICAgcmVuZGVyTWV0aG9kID0gJ3NldEVsZW1lbnRDbGFzcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eUJpbmRpbmdUeXBlLlN0eWxlOlxuICAgICAgICByZW5kZXJNZXRob2QgPSAnc2V0RWxlbWVudFN0eWxlJztcbiAgICAgICAgdmFyIHN0clZhbHVlOiBvLkV4cHJlc3Npb24gPSByZW5kZXJWYWx1ZS5jYWxsTWV0aG9kKCd0b1N0cmluZycsIFtdKTtcbiAgICAgICAgaWYgKGlzUHJlc2VudChib3VuZFByb3AudW5pdCkpIHtcbiAgICAgICAgICBzdHJWYWx1ZSA9IHN0clZhbHVlLnBsdXMoby5saXRlcmFsKGJvdW5kUHJvcC51bml0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyVmFsdWUgPSByZW5kZXJWYWx1ZS5pc0JsYW5rKCkuY29uZGl0aW9uYWwoby5OVUxMX0VYUFIsIHN0clZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHVwZGF0ZVN0bXRzLnB1c2goXG4gICAgICAgIG8uVEhJU19FWFBSLnByb3AoJ3JlbmRlcmVyJylcbiAgICAgICAgICAgIC5jYWxsTWV0aG9kKHJlbmRlck1ldGhvZCwgW3JlbmRlck5vZGUsIG8ubGl0ZXJhbChib3VuZFByb3AubmFtZSksIHJlbmRlclZhbHVlXSlcbiAgICAgICAgICAgIC50b1N0bXQoKSk7XG5cbiAgICBiaW5kKHZpZXcsIGN1cnJWYWxFeHByLCBmaWVsZEV4cHIsIGJvdW5kUHJvcC52YWx1ZSwgY29udGV4dCwgdXBkYXRlU3RtdHMsXG4gICAgICAgICB2aWV3LmRldGVjdENoYW5nZXNSZW5kZXJQcm9wZXJ0aWVzTWV0aG9kKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kUmVuZGVySW5wdXRzKGJvdW5kUHJvcHM6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlRWxlbWVudDogQ29tcGlsZUVsZW1lbnQpOiB2b2lkIHtcbiAgYmluZEFuZFdyaXRlVG9SZW5kZXJlcihib3VuZFByb3BzLCBvLlRISVNfRVhQUi5wcm9wKCdjb250ZXh0JyksIGNvbXBpbGVFbGVtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmREaXJlY3RpdmVIb3N0UHJvcHMoZGlyZWN0aXZlQXN0OiBEaXJlY3RpdmVBc3QsIGRpcmVjdGl2ZUluc3RhbmNlOiBvLkV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlRWxlbWVudDogQ29tcGlsZUVsZW1lbnQpOiB2b2lkIHtcbiAgYmluZEFuZFdyaXRlVG9SZW5kZXJlcihkaXJlY3RpdmVBc3QuaG9zdFByb3BlcnRpZXMsIGRpcmVjdGl2ZUluc3RhbmNlLCBjb21waWxlRWxlbWVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kRGlyZWN0aXZlSW5wdXRzKGRpcmVjdGl2ZUFzdDogRGlyZWN0aXZlQXN0LCBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUVsZW1lbnQ6IENvbXBpbGVFbGVtZW50KSB7XG4gIGlmIChkaXJlY3RpdmVBc3QuaW5wdXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgdmlldyA9IGNvbXBpbGVFbGVtZW50LnZpZXc7XG4gIHZhciBkZXRlY3RDaGFuZ2VzSW5JbnB1dHNNZXRob2QgPSB2aWV3LmRldGVjdENoYW5nZXNJbklucHV0c01ldGhvZDtcbiAgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kLnJlc2V0RGVidWdJbmZvKGNvbXBpbGVFbGVtZW50Lm5vZGVJbmRleCwgY29tcGlsZUVsZW1lbnQuc291cmNlQXN0KTtcblxuICB2YXIgbGlmZWN5Y2xlSG9va3MgPSBkaXJlY3RpdmVBc3QuZGlyZWN0aXZlLmxpZmVjeWNsZUhvb2tzO1xuICB2YXIgY2FsY0NoYW5nZXNNYXAgPSBsaWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLk9uQ2hhbmdlcykgIT09IC0xO1xuICB2YXIgaXNPblB1c2hDb21wID0gZGlyZWN0aXZlQXN0LmRpcmVjdGl2ZS5pc0NvbXBvbmVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgIWlzRGVmYXVsdENoYW5nZURldGVjdGlvblN0cmF0ZWd5KGRpcmVjdGl2ZUFzdC5kaXJlY3RpdmUuY2hhbmdlRGV0ZWN0aW9uKTtcbiAgaWYgKGNhbGNDaGFuZ2VzTWFwKSB7XG4gICAgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kLmFkZFN0bXQoRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlcy5zZXQoby5OVUxMX0VYUFIpLnRvU3RtdCgpKTtcbiAgfVxuICBpZiAoaXNPblB1c2hDb21wKSB7XG4gICAgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kLmFkZFN0bXQoRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlZC5zZXQoby5saXRlcmFsKGZhbHNlKSkudG9TdG10KCkpO1xuICB9XG4gIGRpcmVjdGl2ZUFzdC5pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICB2YXIgYmluZGluZ0luZGV4ID0gdmlldy5iaW5kaW5ncy5sZW5ndGg7XG4gICAgdmlldy5iaW5kaW5ncy5wdXNoKG5ldyBDb21waWxlQmluZGluZyhjb21waWxlRWxlbWVudCwgaW5wdXQpKTtcbiAgICBkZXRlY3RDaGFuZ2VzSW5JbnB1dHNNZXRob2QucmVzZXREZWJ1Z0luZm8oY29tcGlsZUVsZW1lbnQubm9kZUluZGV4LCBpbnB1dCk7XG4gICAgdmFyIGZpZWxkRXhwciA9IGNyZWF0ZUJpbmRGaWVsZEV4cHIoYmluZGluZ0luZGV4KTtcbiAgICB2YXIgY3VyclZhbEV4cHIgPSBjcmVhdGVDdXJyVmFsdWVFeHByKGJpbmRpbmdJbmRleCk7XG4gICAgdmFyIHN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10gPVxuICAgICAgICBbZGlyZWN0aXZlSW5zdGFuY2UucHJvcChpbnB1dC5kaXJlY3RpdmVOYW1lKS5zZXQoY3VyclZhbEV4cHIpLnRvU3RtdCgpXTtcbiAgICBpZiAoY2FsY0NoYW5nZXNNYXApIHtcbiAgICAgIHN0YXRlbWVudHMucHVzaChuZXcgby5JZlN0bXQoRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlcy5pZGVudGljYWwoby5OVUxMX0VYUFIpLCBbXG4gICAgICAgIERldGVjdENoYW5nZXNWYXJzLmNoYW5nZXMuc2V0KG8ubGl0ZXJhbE1hcChbXSwgbmV3IG8uTWFwVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5pbXBvcnRUeXBlKElkZW50aWZpZXJzLlNpbXBsZUNoYW5nZSkpKSlcbiAgICAgICAgICAgIC50b1N0bXQoKVxuICAgICAgXSkpO1xuICAgICAgc3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgIERldGVjdENoYW5nZXNWYXJzLmNoYW5nZXMua2V5KG8ubGl0ZXJhbChpbnB1dC5kaXJlY3RpdmVOYW1lKSlcbiAgICAgICAgICAgICAgLnNldChvLmltcG9ydEV4cHIoSWRlbnRpZmllcnMuU2ltcGxlQ2hhbmdlKS5pbnN0YW50aWF0ZShbZmllbGRFeHByLCBjdXJyVmFsRXhwcl0pKVxuICAgICAgICAgICAgICAudG9TdG10KCkpO1xuICAgIH1cbiAgICBpZiAoaXNPblB1c2hDb21wKSB7XG4gICAgICBzdGF0ZW1lbnRzLnB1c2goRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlZC5zZXQoby5saXRlcmFsKHRydWUpKS50b1N0bXQoKSk7XG4gICAgfVxuICAgIGlmICh2aWV3LmdlbkNvbmZpZy5sb2dCaW5kaW5nVXBkYXRlKSB7XG4gICAgICBzdGF0ZW1lbnRzLnB1c2goXG4gICAgICAgICAgbG9nQmluZGluZ1VwZGF0ZVN0bXQoY29tcGlsZUVsZW1lbnQucmVuZGVyTm9kZSwgaW5wdXQuZGlyZWN0aXZlTmFtZSwgY3VyclZhbEV4cHIpKTtcbiAgICB9XG4gICAgYmluZCh2aWV3LCBjdXJyVmFsRXhwciwgZmllbGRFeHByLCBpbnB1dC52YWx1ZSwgby5USElTX0VYUFIucHJvcCgnY29udGV4dCcpLCBzdGF0ZW1lbnRzLFxuICAgICAgICAgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kKTtcbiAgfSk7XG4gIGlmIChpc09uUHVzaENvbXApIHtcbiAgICBkZXRlY3RDaGFuZ2VzSW5JbnB1dHNNZXRob2QuYWRkU3RtdChuZXcgby5JZlN0bXQoRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlZCwgW1xuICAgICAgY29tcGlsZUVsZW1lbnQuYXBwRWxlbWVudC5wcm9wKCdjb21wb25lbnRWaWV3JylcbiAgICAgICAgICAuY2FsbE1ldGhvZCgnbWFya0FzQ2hlY2tPbmNlJywgW10pXG4gICAgICAgICAgLnRvU3RtdCgpXG4gICAgXSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ0JpbmRpbmdVcGRhdGVTdG10KHJlbmRlck5vZGU6IG8uRXhwcmVzc2lvbiwgcHJvcE5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvLkV4cHJlc3Npb24pOiBvLlN0YXRlbWVudCB7XG4gIHJldHVybiBvLlRISVNfRVhQUi5wcm9wKCdyZW5kZXJlcicpXG4gICAgICAuY2FsbE1ldGhvZCgnc2V0QmluZGluZ0RlYnVnSW5mbycsXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlck5vZGUsXG4gICAgICAgICAgICAgICAgICAgIG8ubGl0ZXJhbChgbmctcmVmbGVjdC0ke2NhbWVsQ2FzZVRvRGFzaENhc2UocHJvcE5hbWUpfWApLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5pc0JsYW5rKCkuY29uZGl0aW9uYWwoby5OVUxMX0VYUFIsIHZhbHVlLmNhbGxNZXRob2QoJ3RvU3RyaW5nJywgW10pKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgIC50b1N0bXQoKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar o = require('../output/output_ast');\r\nvar _DebugState = (function () {\r\n function _DebugState(nodeIndex, sourceAst) {\r\n this.nodeIndex = nodeIndex;\r\n this.sourceAst = sourceAst;\r\n }\r\n return _DebugState;\r\n}());\r\nvar NULL_DEBUG_STATE = new _DebugState(null, null);\r\nvar CompileMethod = (function () {\r\n function CompileMethod(_view) {\r\n this._view = _view;\r\n this._newState = NULL_DEBUG_STATE;\r\n this._currState = NULL_DEBUG_STATE;\r\n this._bodyStatements = [];\r\n this._debugEnabled = this._view.genConfig.genDebugInfo;\r\n }\r\n CompileMethod.prototype._updateDebugContextIfNeeded = function () {\r\n if (this._newState.nodeIndex !== this._currState.nodeIndex ||\r\n this._newState.sourceAst !== this._currState.sourceAst) {\r\n var expr = this._updateDebugContext(this._newState);\r\n if (lang_1.isPresent(expr)) {\r\n this._bodyStatements.push(expr.toStmt());\r\n }\r\n }\r\n };\r\n CompileMethod.prototype._updateDebugContext = function (newState) {\r\n this._currState = this._newState = newState;\r\n if (this._debugEnabled) {\r\n var sourceLocation = lang_1.isPresent(newState.sourceAst) ? newState.sourceAst.sourceSpan.start : null;\r\n return o.THIS_EXPR.callMethod('debug', [\r\n o.literal(newState.nodeIndex),\r\n lang_1.isPresent(sourceLocation) ? o.literal(sourceLocation.line) : o.NULL_EXPR,\r\n lang_1.isPresent(sourceLocation) ? o.literal(sourceLocation.col) : o.NULL_EXPR\r\n ]);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n CompileMethod.prototype.resetDebugInfoExpr = function (nodeIndex, templateAst) {\r\n var res = this._updateDebugContext(new _DebugState(nodeIndex, templateAst));\r\n return lang_1.isPresent(res) ? res : o.NULL_EXPR;\r\n };\r\n CompileMethod.prototype.resetDebugInfo = function (nodeIndex, templateAst) {\r\n this._newState = new _DebugState(nodeIndex, templateAst);\r\n };\r\n CompileMethod.prototype.addStmt = function (stmt) {\r\n this._updateDebugContextIfNeeded();\r\n this._bodyStatements.push(stmt);\r\n };\r\n CompileMethod.prototype.addStmts = function (stmts) {\r\n this._updateDebugContextIfNeeded();\r\n collection_1.ListWrapper.addAll(this._bodyStatements, stmts);\r\n };\r\n CompileMethod.prototype.finish = function () { return this._bodyStatements; };\r\n CompileMethod.prototype.isEmpty = function () { return this._bodyStatements.length === 0; };\r\n return CompileMethod;\r\n}());\r\nexports.CompileMethod = CompileMethod;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV9tZXRob2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvdmlld19jb21waWxlci9jb21waWxlX21ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFDNUQsMkJBQXNDLGdDQUFnQyxDQUFDLENBQUE7QUFFdkUsSUFBWSxDQUFDLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUsxQztJQUNFLHFCQUFtQixTQUFpQixFQUFTLFNBQXNCO1FBQWhELGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFhO0lBQUcsQ0FBQztJQUN6RSxrQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRUQsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkQ7SUFRRSx1QkFBb0IsS0FBa0I7UUFBbEIsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQVA5QixjQUFTLEdBQWdCLGdCQUFnQixDQUFDO1FBQzFDLGVBQVUsR0FBZ0IsZ0JBQWdCLENBQUM7UUFJM0Msb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBRzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3pELENBQUM7SUFFTyxtREFBMkIsR0FBbkM7UUFDRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7WUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLDJDQUFtQixHQUEzQixVQUE0QixRQUFxQjtRQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksY0FBYyxHQUNkLGdCQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFFL0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtnQkFDckMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUM3QixnQkFBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTO2dCQUN4RSxnQkFBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTO2FBQ3hFLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELDBDQUFrQixHQUFsQixVQUFtQixTQUFpQixFQUFFLFdBQXdCO1FBQzVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsc0NBQWMsR0FBZCxVQUFlLFNBQWlCLEVBQUUsV0FBd0I7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELCtCQUFPLEdBQVAsVUFBUSxJQUFpQjtRQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZ0NBQVEsR0FBUixVQUFTLEtBQW9CO1FBQzNCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLHdCQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELDhCQUFNLEdBQU4sY0FBMEIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXhELCtCQUFPLEdBQVAsY0FBcUIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsb0JBQUM7QUFBRCxDQUFDLEFBNURELElBNERDO0FBNURZLHFCQUFhLGdCQTREekIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge1RlbXBsYXRlQXN0fSBmcm9tICcuLi90ZW1wbGF0ZV9hc3QnO1xuXG5pbXBvcnQge0NvbXBpbGVWaWV3fSBmcm9tICcuL2NvbXBpbGVfdmlldyc7XG5cbmNsYXNzIF9EZWJ1Z1N0YXRlIHtcbiAgY29uc3RydWN0b3IocHVibGljIG5vZGVJbmRleDogbnVtYmVyLCBwdWJsaWMgc291cmNlQXN0OiBUZW1wbGF0ZUFzdCkge31cbn1cblxudmFyIE5VTExfREVCVUdfU1RBVEUgPSBuZXcgX0RlYnVnU3RhdGUobnVsbCwgbnVsbCk7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlTWV0aG9kIHtcbiAgcHJpdmF0ZSBfbmV3U3RhdGU6IF9EZWJ1Z1N0YXRlID0gTlVMTF9ERUJVR19TVEFURTtcbiAgcHJpdmF0ZSBfY3VyclN0YXRlOiBfRGVidWdTdGF0ZSA9IE5VTExfREVCVUdfU1RBVEU7XG5cbiAgcHJpdmF0ZSBfZGVidWdFbmFibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2JvZHlTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlldzogQ29tcGlsZVZpZXcpIHtcbiAgICB0aGlzLl9kZWJ1Z0VuYWJsZWQgPSB0aGlzLl92aWV3LmdlbkNvbmZpZy5nZW5EZWJ1Z0luZm87XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEZWJ1Z0NvbnRleHRJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5fbmV3U3RhdGUubm9kZUluZGV4ICE9PSB0aGlzLl9jdXJyU3RhdGUubm9kZUluZGV4IHx8XG4gICAgICAgIHRoaXMuX25ld1N0YXRlLnNvdXJjZUFzdCAhPT0gdGhpcy5fY3VyclN0YXRlLnNvdXJjZUFzdCkge1xuICAgICAgdmFyIGV4cHIgPSB0aGlzLl91cGRhdGVEZWJ1Z0NvbnRleHQodGhpcy5fbmV3U3RhdGUpO1xuICAgICAgaWYgKGlzUHJlc2VudChleHByKSkge1xuICAgICAgICB0aGlzLl9ib2R5U3RhdGVtZW50cy5wdXNoKGV4cHIudG9TdG10KCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZURlYnVnQ29udGV4dChuZXdTdGF0ZTogX0RlYnVnU3RhdGUpOiBvLkV4cHJlc3Npb24ge1xuICAgIHRoaXMuX2N1cnJTdGF0ZSA9IHRoaXMuX25ld1N0YXRlID0gbmV3U3RhdGU7XG4gICAgaWYgKHRoaXMuX2RlYnVnRW5hYmxlZCkge1xuICAgICAgdmFyIHNvdXJjZUxvY2F0aW9uID1cbiAgICAgICAgICBpc1ByZXNlbnQobmV3U3RhdGUuc291cmNlQXN0KSA/IG5ld1N0YXRlLnNvdXJjZUFzdC5zb3VyY2VTcGFuLnN0YXJ0IDogbnVsbDtcblxuICAgICAgcmV0dXJuIG8uVEhJU19FWFBSLmNhbGxNZXRob2QoJ2RlYnVnJywgW1xuICAgICAgICBvLmxpdGVyYWwobmV3U3RhdGUubm9kZUluZGV4KSxcbiAgICAgICAgaXNQcmVzZW50KHNvdXJjZUxvY2F0aW9uKSA/IG8ubGl0ZXJhbChzb3VyY2VMb2NhdGlvbi5saW5lKSA6IG8uTlVMTF9FWFBSLFxuICAgICAgICBpc1ByZXNlbnQoc291cmNlTG9jYXRpb24pID8gby5saXRlcmFsKHNvdXJjZUxvY2F0aW9uLmNvbCkgOiBvLk5VTExfRVhQUlxuICAgICAgXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RGVidWdJbmZvRXhwcihub2RlSW5kZXg6IG51bWJlciwgdGVtcGxhdGVBc3Q6IFRlbXBsYXRlQXN0KTogby5FeHByZXNzaW9uIHtcbiAgICB2YXIgcmVzID0gdGhpcy5fdXBkYXRlRGVidWdDb250ZXh0KG5ldyBfRGVidWdTdGF0ZShub2RlSW5kZXgsIHRlbXBsYXRlQXN0KSk7XG4gICAgcmV0dXJuIGlzUHJlc2VudChyZXMpID8gcmVzIDogby5OVUxMX0VYUFI7XG4gIH1cblxuICByZXNldERlYnVnSW5mbyhub2RlSW5kZXg6IG51bWJlciwgdGVtcGxhdGVBc3Q6IFRlbXBsYXRlQXN0KSB7XG4gICAgdGhpcy5fbmV3U3RhdGUgPSBuZXcgX0RlYnVnU3RhdGUobm9kZUluZGV4LCB0ZW1wbGF0ZUFzdCk7XG4gIH1cblxuICBhZGRTdG10KHN0bXQ6IG8uU3RhdGVtZW50KSB7XG4gICAgdGhpcy5fdXBkYXRlRGVidWdDb250ZXh0SWZOZWVkZWQoKTtcbiAgICB0aGlzLl9ib2R5U3RhdGVtZW50cy5wdXNoKHN0bXQpO1xuICB9XG5cbiAgYWRkU3RtdHMoc3RtdHM6IG8uU3RhdGVtZW50W10pIHtcbiAgICB0aGlzLl91cGRhdGVEZWJ1Z0NvbnRleHRJZk5lZWRlZCgpO1xuICAgIExpc3RXcmFwcGVyLmFkZEFsbCh0aGlzLl9ib2R5U3RhdGVtZW50cywgc3RtdHMpO1xuICB9XG5cbiAgZmluaXNoKCk6IG8uU3RhdGVtZW50W10geyByZXR1cm4gdGhpcy5fYm9keVN0YXRlbWVudHM7IH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fYm9keVN0YXRlbWVudHMubGVuZ3RoID09PSAwOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar IMPLICIT_RECEIVER = o.variable('#implicit');\r\nvar ExpressionWithWrappedValueInfo = (function () {\r\n function ExpressionWithWrappedValueInfo(expression, needsValueUnwrapper) {\r\n this.expression = expression;\r\n this.needsValueUnwrapper = needsValueUnwrapper;\r\n }\r\n return ExpressionWithWrappedValueInfo;\r\n}());\r\nexports.ExpressionWithWrappedValueInfo = ExpressionWithWrappedValueInfo;\r\nfunction convertCdExpressionToIr(nameResolver, implicitReceiver, expression, valueUnwrapper) {\r\n var visitor = new _AstToIrVisitor(nameResolver, implicitReceiver, valueUnwrapper);\r\n var irAst = expression.visit(visitor, _Mode.Expression);\r\n return new ExpressionWithWrappedValueInfo(irAst, visitor.needsValueUnwrapper);\r\n}\r\nexports.convertCdExpressionToIr = convertCdExpressionToIr;\r\nfunction convertCdStatementToIr(nameResolver, implicitReceiver, stmt) {\r\n var visitor = new _AstToIrVisitor(nameResolver, implicitReceiver, null);\r\n var statements = [];\r\n flattenStatements(stmt.visit(visitor, _Mode.Statement), statements);\r\n return statements;\r\n}\r\nexports.convertCdStatementToIr = convertCdStatementToIr;\r\nvar _Mode;\r\n(function (_Mode) {\r\n _Mode[_Mode[\"Statement\"] = 0] = \"Statement\";\r\n _Mode[_Mode[\"Expression\"] = 1] = \"Expression\";\r\n})(_Mode || (_Mode = {}));\r\nfunction ensureStatementMode(mode, ast) {\r\n if (mode !== _Mode.Statement) {\r\n throw new exceptions_1.BaseException(\"Expected a statement, but saw \" + ast);\r\n }\r\n}\r\nfunction ensureExpressionMode(mode, ast) {\r\n if (mode !== _Mode.Expression) {\r\n throw new exceptions_1.BaseException(\"Expected an expression, but saw \" + ast);\r\n }\r\n}\r\nfunction convertToStatementIfNeeded(mode, expr) {\r\n if (mode === _Mode.Statement) {\r\n return expr.toStmt();\r\n }\r\n else {\r\n return expr;\r\n }\r\n}\r\nvar _AstToIrVisitor = (function () {\r\n function _AstToIrVisitor(_nameResolver, _implicitReceiver, _valueUnwrapper) {\r\n this._nameResolver = _nameResolver;\r\n this._implicitReceiver = _implicitReceiver;\r\n this._valueUnwrapper = _valueUnwrapper;\r\n this.needsValueUnwrapper = false;\r\n }\r\n _AstToIrVisitor.prototype.visitBinary = function (ast, mode) {\r\n var op;\r\n switch (ast.operation) {\r\n case '+':\r\n op = o.BinaryOperator.Plus;\r\n break;\r\n case '-':\r\n op = o.BinaryOperator.Minus;\r\n break;\r\n case '*':\r\n op = o.BinaryOperator.Multiply;\r\n break;\r\n case '/':\r\n op = o.BinaryOperator.Divide;\r\n break;\r\n case '%':\r\n op = o.BinaryOperator.Modulo;\r\n break;\r\n case '&&':\r\n op = o.BinaryOperator.And;\r\n break;\r\n case '||':\r\n op = o.BinaryOperator.Or;\r\n break;\r\n case '==':\r\n op = o.BinaryOperator.Equals;\r\n break;\r\n case '!=':\r\n op = o.BinaryOperator.NotEquals;\r\n break;\r\n case '===':\r\n op = o.BinaryOperator.Identical;\r\n break;\r\n case '!==':\r\n op = o.BinaryOperator.NotIdentical;\r\n break;\r\n case '<':\r\n op = o.BinaryOperator.Lower;\r\n break;\r\n case '>':\r\n op = o.BinaryOperator.Bigger;\r\n break;\r\n case '<=':\r\n op = o.BinaryOperator.LowerEquals;\r\n break;\r\n case '>=':\r\n op = o.BinaryOperator.BiggerEquals;\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unsupported operation \" + ast.operation);\r\n }\r\n return convertToStatementIfNeeded(mode, new o.BinaryOperatorExpr(op, ast.left.visit(this, _Mode.Expression), ast.right.visit(this, _Mode.Expression)));\r\n };\r\n _AstToIrVisitor.prototype.visitChain = function (ast, mode) {\r\n ensureStatementMode(mode, ast);\r\n return this.visitAll(ast.expressions, mode);\r\n };\r\n _AstToIrVisitor.prototype.visitConditional = function (ast, mode) {\r\n var value = ast.condition.visit(this, _Mode.Expression);\r\n return convertToStatementIfNeeded(mode, value.conditional(ast.trueExp.visit(this, _Mode.Expression), ast.falseExp.visit(this, _Mode.Expression)));\r\n };\r\n _AstToIrVisitor.prototype.visitPipe = function (ast, mode) {\r\n var input = ast.exp.visit(this, _Mode.Expression);\r\n var args = this.visitAll(ast.args, _Mode.Expression);\r\n var value = this._nameResolver.callPipe(ast.name, input, args);\r\n this.needsValueUnwrapper = true;\r\n return convertToStatementIfNeeded(mode, this._valueUnwrapper.callMethod('unwrap', [value]));\r\n };\r\n _AstToIrVisitor.prototype.visitFunctionCall = function (ast, mode) {\r\n return convertToStatementIfNeeded(mode, ast.target.visit(this, _Mode.Expression)\r\n .callFn(this.visitAll(ast.args, _Mode.Expression)));\r\n };\r\n _AstToIrVisitor.prototype.visitImplicitReceiver = function (ast, mode) {\r\n ensureExpressionMode(mode, ast);\r\n return IMPLICIT_RECEIVER;\r\n };\r\n _AstToIrVisitor.prototype.visitInterpolation = function (ast, mode) {\r\n ensureExpressionMode(mode, ast);\r\n var args = [o.literal(ast.expressions.length)];\r\n for (var i = 0; i < ast.strings.length - 1; i++) {\r\n args.push(o.literal(ast.strings[i]));\r\n args.push(ast.expressions[i].visit(this, _Mode.Expression));\r\n }\r\n args.push(o.literal(ast.strings[ast.strings.length - 1]));\r\n return o.importExpr(identifiers_1.Identifiers.interpolate).callFn(args);\r\n };\r\n _AstToIrVisitor.prototype.visitKeyedRead = function (ast, mode) {\r\n return convertToStatementIfNeeded(mode, ast.obj.visit(this, _Mode.Expression).key(ast.key.visit(this, _Mode.Expression)));\r\n };\r\n _AstToIrVisitor.prototype.visitKeyedWrite = function (ast, mode) {\r\n var obj = ast.obj.visit(this, _Mode.Expression);\r\n var key = ast.key.visit(this, _Mode.Expression);\r\n var value = ast.value.visit(this, _Mode.Expression);\r\n return convertToStatementIfNeeded(mode, obj.key(key).set(value));\r\n };\r\n _AstToIrVisitor.prototype.visitLiteralArray = function (ast, mode) {\r\n return convertToStatementIfNeeded(mode, this._nameResolver.createLiteralArray(this.visitAll(ast.expressions, mode)));\r\n };\r\n _AstToIrVisitor.prototype.visitLiteralMap = function (ast, mode) {\r\n var parts = [];\r\n for (var i = 0; i < ast.keys.length; i++) {\r\n parts.push([ast.keys[i], ast.values[i].visit(this, _Mode.Expression)]);\r\n }\r\n return convertToStatementIfNeeded(mode, this._nameResolver.createLiteralMap(parts));\r\n };\r\n _AstToIrVisitor.prototype.visitLiteralPrimitive = function (ast, mode) {\r\n return convertToStatementIfNeeded(mode, o.literal(ast.value));\r\n };\r\n _AstToIrVisitor.prototype.visitMethodCall = function (ast, mode) {\r\n var args = this.visitAll(ast.args, _Mode.Expression);\r\n var result = null;\r\n var receiver = ast.receiver.visit(this, _Mode.Expression);\r\n if (receiver === IMPLICIT_RECEIVER) {\r\n var varExpr = this._nameResolver.getLocal(ast.name);\r\n if (lang_1.isPresent(varExpr)) {\r\n result = varExpr.callFn(args);\r\n }\r\n else {\r\n receiver = this._implicitReceiver;\r\n }\r\n }\r\n if (lang_1.isBlank(result)) {\r\n result = receiver.callMethod(ast.name, args);\r\n }\r\n return convertToStatementIfNeeded(mode, result);\r\n };\r\n _AstToIrVisitor.prototype.visitPrefixNot = function (ast, mode) {\r\n return convertToStatementIfNeeded(mode, o.not(ast.expression.visit(this, _Mode.Expression)));\r\n };\r\n _AstToIrVisitor.prototype.visitPropertyRead = function (ast, mode) {\r\n var result = null;\r\n var receiver = ast.receiver.visit(this, _Mode.Expression);\r\n if (receiver === IMPLICIT_RECEIVER) {\r\n result = this._nameResolver.getLocal(ast.name);\r\n if (lang_1.isBlank(result)) {\r\n receiver = this._implicitReceiver;\r\n }\r\n }\r\n if (lang_1.isBlank(result)) {\r\n result = receiver.prop(ast.name);\r\n }\r\n return convertToStatementIfNeeded(mode, result);\r\n };\r\n _AstToIrVisitor.prototype.visitPropertyWrite = function (ast, mode) {\r\n var receiver = ast.receiver.visit(this, _Mode.Expression);\r\n if (receiver === IMPLICIT_RECEIVER) {\r\n var varExpr = this._nameResolver.getLocal(ast.name);\r\n if (lang_1.isPresent(varExpr)) {\r\n throw new exceptions_1.BaseException('Cannot assign to a reference or variable!');\r\n }\r\n receiver = this._implicitReceiver;\r\n }\r\n return convertToStatementIfNeeded(mode, receiver.prop(ast.name).set(ast.value.visit(this, _Mode.Expression)));\r\n };\r\n _AstToIrVisitor.prototype.visitSafePropertyRead = function (ast, mode) {\r\n var receiver = ast.receiver.visit(this, _Mode.Expression);\r\n return convertToStatementIfNeeded(mode, receiver.isBlank().conditional(o.NULL_EXPR, receiver.prop(ast.name)));\r\n };\r\n _AstToIrVisitor.prototype.visitSafeMethodCall = function (ast, mode) {\r\n var receiver = ast.receiver.visit(this, _Mode.Expression);\r\n var args = this.visitAll(ast.args, _Mode.Expression);\r\n return convertToStatementIfNeeded(mode, receiver.isBlank().conditional(o.NULL_EXPR, receiver.callMethod(ast.name, args)));\r\n };\r\n _AstToIrVisitor.prototype.visitAll = function (asts, mode) {\r\n var _this = this;\r\n return asts.map(function (ast) { return ast.visit(_this, mode); });\r\n };\r\n _AstToIrVisitor.prototype.visitQuote = function (ast, mode) {\r\n throw new exceptions_1.BaseException('Quotes are not supported for evaluation!');\r\n };\r\n return _AstToIrVisitor;\r\n}());\r\nfunction flattenStatements(arg, output) {\r\n if (lang_1.isArray(arg)) {\r\n arg.forEach(function (entry) { return flattenStatements(entry, output); });\r\n }\r\n else {\r\n output.push(arg);\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbl9jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvdmlld19jb21waWxlci9leHByZXNzaW9uX2NvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBWSxDQUFDLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUMxQyw0QkFBMEIsZ0JBQWdCLENBQUMsQ0FBQTtBQUUzQywyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCxxQkFBc0QsMEJBQTBCLENBQUMsQ0FBQTtBQUVqRixJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFTaEQ7SUFDRSx3Q0FBbUIsVUFBd0IsRUFBUyxtQkFBNEI7UUFBN0QsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUFTLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBUztJQUFHLENBQUM7SUFDdEYscUNBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUZZLHNDQUE4QixpQ0FFMUMsQ0FBQTtBQUVELGlDQUNJLFlBQTBCLEVBQUUsZ0JBQThCLEVBQUUsVUFBcUIsRUFDakYsY0FBNkI7SUFDL0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2xGLElBQUksS0FBSyxHQUFpQixVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEUsTUFBTSxDQUFDLElBQUksOEJBQThCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFOZSwrQkFBdUIsMEJBTXRDLENBQUE7QUFFRCxnQ0FBdUMsWUFBMEIsRUFBRSxnQkFBOEIsRUFDMUQsSUFBZTtJ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LENBQUMsS0FBSSxFQUFFLElBQUksQ0FBQyxFQUFyQixDQUFxQixDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ2hHLG9DQUFVLEdBQVYsVUFBVyxHQUFnQixFQUFFLElBQVc7UUFDdEMsTUFBTSxJQUFJLDBCQUFhLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBdExELElBc0xDO0FBRUQsMkJBQTJCLEdBQVEsRUFBRSxNQUFxQjtJQUN4RCxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1QsR0FBSSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBaEMsQ0FBZ0MsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZEFzdCBmcm9tICcuLi9leHByZXNzaW9uX3BhcnNlci9hc3QnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0lkZW50aWZpZXJzfSBmcm9tICcuLi9pZGVudGlmaWVycyc7XG5cbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7aXNCbGFuaywgaXNQcmVzZW50LCBpc0FycmF5LCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG52YXIgSU1QTElDSVRfUkVDRUlWRVIgPSBvLnZhcmlhYmxlKCcjaW1wbGljaXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBOYW1lUmVzb2x2ZXIge1xuICBjYWxsUGlwZShuYW1lOiBzdHJpbmcsIGlucHV0OiBvLkV4cHJlc3Npb24sIGFyZ3M6IG8uRXhwcmVzc2lvbltdKTogby5FeHByZXNzaW9uO1xuICBnZXRMb2NhbChuYW1lOiBzdHJpbmcpOiBvLkV4cHJlc3Npb247XG4gIGNyZWF0ZUxpdGVyYWxBcnJheSh2YWx1ZXM6IG8uRXhwcmVzc2lvbltdKTogby5FeHByZXNzaW9uO1xuICBjcmVhdGVMaXRlcmFsTWFwKHZhbHVlczogQXJyYXk8QXJyYXk8c3RyaW5nIHwgby5FeHByZXNzaW9uPj4pOiBvLkV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBjbGFzcyBFeHByZXNzaW9uV2l0aFdyYXBwZWRWYWx1ZUluZm8ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXhwcmVzc2lvbjogby5FeHByZXNzaW9uLCBwdWJsaWMgbmVlZHNWYWx1ZVVud3JhcHBlcjogYm9vbGVhbikge31cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDZEV4cHJlc3Npb25Ub0lyKFxuICAgIG5hbWVSZXNvbHZlcjogTmFtZVJlc29sdmVyLCBpbXBsaWNpdFJlY2VpdmVyOiBvLkV4cHJlc3Npb24sIGV4cHJlc3Npb246IGNkQXN0LkFTVCxcbiAgICB2YWx1ZVVud3JhcHBlcjogby5SZWFkVmFyRXhwcik6IEV4cHJlc3Npb25XaXRoV3JhcHBlZFZhbHVlSW5mbyB7XG4gIHZhciB2aXNpdG9yID0gbmV3IF9Bc3RUb0lyVmlzaXRvcihuYW1lUmVzb2x2ZXIsIGltcGxpY2l0UmVjZWl2ZXIsIHZhbHVlVW53cmFwcGVyKTtcbiAgdmFyIGlyQXN0OiBvLkV4cHJlc3Npb24gPSBleHByZXNzaW9uLnZpc2l0KHZpc2l0b3IsIF9Nb2RlLkV4cHJlc3Npb24pO1xuICByZXR1cm4gbmV3IEV4cHJlc3Npb25XaXRoV3JhcHBlZFZhbHVlSW5mbyhpckFzdCwgdmlzaXRvci5uZWVkc1ZhbHVlVW53cmFwcGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDZFN0YXRlbWVudFRvSXIobmFtZVJlc29sdmVyOiBOYW1lUmVzb2x2ZXIsIGltcGxpY2l0UmVjZWl2ZXI6IG8uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQ6IGNkQXN0LkFTVCk6IG8uU3RhdGVtZW50W10ge1xuICB2YXIgdmlzaXRvciA9IG5ldyBfQXN0VG9JclZpc2l0b3IobmFtZVJlc29sdmVyLCBpbXBsaWNpdFJlY2VpdmVyLCBudWxsKTtcbiAgdmFyIHN0YXRlbWVudHMgPSBbXTtcbiAgZmxhdHRlblN0YXRlbWVudHMoc3RtdC52aXNpdCh2aXNpdG9yLCBfTW9kZS5TdGF0ZW1lbnQpLCBzdGF0ZW1lbnRzKTtcbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmVudW0gX01vZGUge1xuICBTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb25cbn1cblxuZnVuY3Rpb24gZW5zdXJlU3RhdGVtZW50TW9kZShtb2RlOiBfTW9kZSwgYXN0OiBjZEFzdC5BU1QpIHtcbiAgaWYgKG1vZGUgIT09IF9Nb2RlLlN0YXRlbWVudCkge1xuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBFeHBlY3RlZCBhIHN0YXRlbWVudCwgYnV0IHNhdyAke2FzdH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbnN1cmVFeHByZXNzaW9uTW9kZShtb2RlOiBfTW9kZSwgYXN0OiBjZEFzdC5BU1QpIHtcbiAgaWYgKG1vZGUgIT09IF9Nb2RlLkV4cHJlc3Npb24pIHtcbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgRXhwZWN0ZWQgYW4gZXhwcmVzc2lvbiwgYnV0IHNhdyAke2FzdH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0VG9TdGF0ZW1lbnRJZk5lZWRlZChtb2RlOiBfTW9kZSwgZXhwcjogby5FeHByZXNzaW9uKTogby5FeHByZXNzaW9uIHwgby5TdGF0ZW1lbnQge1xuICBpZiAobW9kZSA9PT0gX01vZGUuU3RhdGVtZW50KSB7XG4gICAgcmV0dXJuIGV4cHIudG9TdG10KCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cbn1cblxuY2xhc3MgX0FzdFRvSXJWaXNpdG9yIGltcGxlbWVudHMgY2RBc3QuQXN0VmlzaXRvciB7XG4gIHB1YmxpYyBuZWVkc1ZhbHVlVW53cmFwcGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmFtZVJlc29sdmVyOiBOYW1lUmVzb2x2ZXIsIHByaXZhdGUgX2ltcGxpY2l0UmVjZWl2ZXI6IG8uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmFsdWVVbndyYXBwZXI6IG8uUmVhZFZhckV4cHIpIHt9XG5cbiAgdmlzaXRCaW5hcnkoYXN0OiBjZEFzdC5CaW5hcnksIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICB2YXIgb3A7XG4gICAgc3dpdGNoIChhc3Qub3BlcmF0aW9uKSB7XG4gICAgICBjYXNlICcrJzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLlBsdXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLSc6XG4gICAgICAgIG9wID0gby5CaW5hcnlPcGVyYXRvci5NaW51cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLk11bHRpcGx5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy8nOlxuICAgICAgICBvcCA9IG8uQmluYXJ5T3BlcmF0b3IuRGl2aWRlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyUnOlxuICAgICAgICBvcCA9IG8uQmluYXJ5T3BlcmF0b3IuTW9kdWxvO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyYmJzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLkFuZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd8fCc6XG4gICAgICAgIG9wID0gby5CaW5hcnlPcGVyYXRvci5PcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc9PSc6XG4gICAgICAgIG9wID0gby5CaW5hcnlPcGVyYXRvci5FcXVhbHM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnIT0nOlxuICAgICAgICBvcCA9IG8uQmluYXJ5T3BlcmF0b3IuTm90RXF1YWxzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJz09PSc6XG4gICAgICAgIG9wID0gby5CaW5hcnlPcGVyYXRvci5JZGVudGljYWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnIT09JzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLk5vdElkZW50aWNhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLkxvd2VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJz4nOlxuICAgICAgICBvcCA9IG8uQmluYXJ5T3BlcmF0b3IuQmlnZ2VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLkxvd2VyRXF1YWxzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJz49JzpcbiAgICAgICAgb3AgPSBvLkJpbmFyeU9wZXJhdG9yLkJpZ2dlckVxdWFscztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVW5zdXBwb3J0ZWQgb3BlcmF0aW9uICR7YXN0Lm9wZXJhdGlvbn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQoXG4gICAgICAgIG1vZGUsIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihvcCwgYXN0LmxlZnQudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QucmlnaHQudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbikpKTtcbiAgfVxuICB2aXNpdENoYWluKGFzdDogY2RBc3QuQ2hhaW4sIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICBlbnN1cmVTdGF0ZW1lbnRNb2RlKG1vZGUsIGFzdCk7XG4gICAgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmV4cHJlc3Npb25zLCBtb2RlKTtcbiAgfVxuICB2aXNpdENvbmRpdGlvbmFsKGFzdDogY2RBc3QuQ29uZGl0aW9uYWwsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICB2YXIgdmFsdWU6IG8uRXhwcmVzc2lvbiA9IGFzdC5jb25kaXRpb24udmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbik7XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0YXRlbWVudElmTmVlZGVkKFxuICAgICAgICBtb2RlLCB2YWx1ZS5jb25kaXRpb25hbChhc3QudHJ1ZUV4cC52aXNpdCh0aGlzLCBfTW9kZS5FeHByZXNzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LmZhbHNlRXhwLnZpc2l0KHRoaXMsIF9Nb2RlLkV4cHJlc3Npb24pKSk7XG4gIH1cbiAgdmlzaXRQaXBlKGFzdDogY2RBc3QuQmluZGluZ1BpcGUsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICB2YXIgaW5wdXQgPSBhc3QuZXhwLnZpc2l0KHRoaXMsIF9Nb2RlLkV4cHJlc3Npb24pO1xuICAgIHZhciBhcmdzID0gdGhpcy52aXNpdEFsbChhc3QuYXJncywgX01vZGUuRXhwcmVzc2lvbik7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5fbmFtZVJlc29sdmVyLmNhbGxQaXBlKGFzdC5uYW1lLCBpbnB1dCwgYXJncyk7XG4gICAgdGhpcy5uZWVkc1ZhbHVlVW53cmFwcGVyID0gdHJ1ZTtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQobW9kZSwgdGhpcy5fdmFsdWVVbndyYXBwZXIuY2FsbE1ldGhvZCgndW53cmFwJywgW3ZhbHVlXSkpO1xuICB9XG4gIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogY2RBc3QuRnVuY3Rpb25DYWxsLCBtb2RlOiBfTW9kZSk6IGFueSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0YXRlbWVudElmTmVlZGVkKG1vZGUsIGFzdC50YXJnZXQudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsRm4odGhpcy52aXNpdEFsbChhc3QuYXJncywgX01vZGUuRXhwcmVzc2lvbikpKTtcbiAgfVxuICB2aXNpdEltcGxpY2l0UmVjZWl2ZXIoYXN0OiBjZEFzdC5JbXBsaWNpdFJlY2VpdmVyLCBtb2RlOiBfTW9kZSk6IGFueSB7XG4gICAgZW5zdXJlRXhwcmVzc2lvbk1vZGUobW9kZSwgYXN0KTtcbiAgICByZXR1cm4gSU1QTElDSVRfUkVDRUlWRVI7XG4gIH1cbiAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogY2RBc3QuSW50ZXJwb2xhdGlvbiwgbW9kZTogX01vZGUpOiBhbnkge1xuICAgIGVuc3VyZUV4cHJlc3Npb25Nb2RlKG1vZGUsIGFzdCk7XG4gICAgdmFyIGFyZ3MgPSBbby5saXRlcmFsKGFzdC5leHByZXNzaW9ucy5sZW5ndGgpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdC5zdHJpbmdzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgYXJncy5wdXNoKG8ubGl0ZXJhbChhc3Quc3RyaW5nc1tpXSkpO1xuICAgICAgYXJncy5wdXNoKGFzdC5leHByZXNzaW9uc1tpXS52aXNpdCh0aGlzLCBfTW9kZS5FeHByZXNzaW9uKSk7XG4gICAgfVxuICAgIGFyZ3MucHVzaChvLmxpdGVyYWwoYXN0LnN0cmluZ3NbYXN0LnN0cmluZ3MubGVuZ3RoIC0gMV0pKTtcbiAgICByZXR1cm4gby5pbXBvcnRFeHByKElkZW50aWZpZXJzLmludGVycG9sYXRlKS5jYWxsRm4oYXJncyk7XG4gIH1cbiAgdmlzaXRLZXllZFJlYWQoYXN0OiBjZEFzdC5LZXllZFJlYWQsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQoXG4gICAgICAgIG1vZGUsIGFzdC5vYmoudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbikua2V5KGFzdC5rZXkudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbikpKTtcbiAgfVxuICB2aXNpdEtleWVkV3JpdGUoYXN0OiBjZEFzdC5LZXllZFdyaXRlLCBtb2RlOiBfTW9kZSk6IGFueSB7XG4gICAgdmFyIG9iajogby5FeHByZXNzaW9uID0gYXN0Lm9iai52aXNpdCh0aGlzLCBfTW9kZS5FeHByZXNzaW9uKTtcbiAgICB2YXIga2V5OiBvLkV4cHJlc3Npb24gPSBhc3Qua2V5LnZpc2l0KHRoaXMsIF9Nb2RlLkV4cHJlc3Npb24pO1xuICAgIHZhciB2YWx1ZTogby5FeHByZXNzaW9uID0gYXN0LnZhbHVlLnZpc2l0KHRoaXMsIF9Nb2RlLkV4cHJlc3Npb24pO1xuICAgIHJldHVybiBjb252ZXJ0VG9TdGF0ZW1lbnRJZk5lZWRlZChtb2RlLCBvYmoua2V5KGtleSkuc2V0KHZhbHVlKSk7XG4gIH1cbiAgdmlzaXRMaXRlcmFsQXJyYXkoYXN0OiBjZEFzdC5MaXRlcmFsQXJyYXksIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQoXG4gICAgICAgIG1vZGUsIHRoaXMuX25hbWVSZXNvbHZlci5jcmVhdGVMaXRlcmFsQXJyYXkodGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMsIG1vZGUpKSk7XG4gIH1cbiAgdmlzaXRMaXRlcmFsTWFwKGFzdDogY2RBc3QuTGl0ZXJhbE1hcCwgbW9kZTogX01vZGUpOiBhbnkge1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXN0LmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhcnRzLnB1c2goW2FzdC5rZXlzW2ldLCBhc3QudmFsdWVzW2ldLnZpc2l0KHRoaXMsIF9Nb2RlLkV4cHJlc3Npb24pXSk7XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0VG9TdGF0ZW1lbnRJZk5lZWRlZChtb2RlLCB0aGlzLl9uYW1lUmVzb2x2ZXIuY3JlYXRlTGl0ZXJhbE1hcChwYXJ0cykpO1xuICB9XG4gIHZpc2l0TGl0ZXJhbFByaW1pdGl2ZShhc3Q6IGNkQXN0LkxpdGVyYWxQcmltaXRpdmUsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQobW9kZSwgby5saXRlcmFsKGFzdC52YWx1ZSkpO1xuICB9XG4gIHZpc2l0TWV0aG9kQ2FsbChhc3Q6IGNkQXN0Lk1ldGhvZENhbGwsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICB2YXIgYXJncyA9IHRoaXMudmlzaXRBbGwoYXN0LmFyZ3MsIF9Nb2RlLkV4cHJlc3Npb24pO1xuICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgIHZhciByZWNlaXZlciA9IGFzdC5yZWNlaXZlci52aXNpdCh0aGlzLCBfTW9kZS5FeHByZXNzaW9uKTtcbiAgICBpZiAocmVjZWl2ZXIgPT09IElNUExJQ0lUX1JFQ0VJVkVSKSB7XG4gICAgICB2YXIgdmFyRXhwciA9IHRoaXMuX25hbWVSZXNvbHZlci5nZXRMb2NhbChhc3QubmFtZSk7XG4gICAgICBpZiAoaXNQcmVzZW50KHZhckV4cHIpKSB7XG4gICAgICAgIHJlc3VsdCA9IHZhckV4cHIuY2FsbEZuKGFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjZWl2ZXIgPSB0aGlzLl9pbXBsaWNpdFJlY2VpdmVyO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNCbGFuayhyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSByZWNlaXZlci5jYWxsTWV0aG9kKGFzdC5uYW1lLCBhcmdzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0YXRlbWVudElmTmVlZGVkKG1vZGUsIHJlc3VsdCk7XG4gIH1cbiAgdmlzaXRQcmVmaXhOb3QoYXN0OiBjZEFzdC5QcmVmaXhOb3QsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQobW9kZSwgby5ub3QoYXN0LmV4cHJlc3Npb24udmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbikpKTtcbiAgfVxuICB2aXNpdFByb3BlcnR5UmVhZChhc3Q6IGNkQXN0LlByb3BlcnR5UmVhZCwgbW9kZTogX01vZGUpOiBhbnkge1xuICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgIHZhciByZWNlaXZlciA9IGFzdC5yZWNlaXZlci52aXNpdCh0aGlzLCBfTW9kZS5FeHByZXNzaW9uKTtcbiAgICBpZiAocmVjZWl2ZXIgPT09IElNUExJQ0lUX1JFQ0VJVkVSKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9uYW1lUmVzb2x2ZXIuZ2V0TG9jYWwoYXN0Lm5hbWUpO1xuICAgICAgaWYgKGlzQmxhbmsocmVzdWx0KSkge1xuICAgICAgICByZWNlaXZlciA9IHRoaXMuX2ltcGxpY2l0UmVjZWl2ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc0JsYW5rKHJlc3VsdCkpIHtcbiAgICAgIHJlc3VsdCA9IHJlY2VpdmVyLnByb3AoYXN0Lm5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQobW9kZSwgcmVzdWx0KTtcbiAgfVxuICB2aXNpdFByb3BlcnR5V3JpdGUoYXN0OiBjZEFzdC5Qcm9wZXJ0eVdyaXRlLCBtb2RlOiBfTW9kZSk6IGFueSB7XG4gICAgdmFyIHJlY2VpdmVyOiBvLkV4cHJlc3Npb24gPSBhc3QucmVjZWl2ZXIudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbik7XG4gICAgaWYgKHJlY2VpdmVyID09PSBJTVBMSUNJVF9SRUNFSVZFUikge1xuICAgICAgdmFyIHZhckV4cHIgPSB0aGlzLl9uYW1lUmVzb2x2ZXIuZ2V0TG9jYWwoYXN0Lm5hbWUpO1xuICAgICAgaWYgKGlzUHJlc2VudCh2YXJFeHByKSkge1xuICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignQ2Fubm90IGFzc2lnbiB0byBhIHJlZmVyZW5jZSBvciB2YXJpYWJsZSEnKTtcbiAgICAgIH1cbiAgICAgIHJlY2VpdmVyID0gdGhpcy5faW1wbGljaXRSZWNlaXZlcjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0YXRlbWVudElmTmVlZGVkKFxuICAgICAgICBtb2RlLCByZWNlaXZlci5wcm9wKGFzdC5uYW1lKS5zZXQoYXN0LnZhbHVlLnZpc2l0KHRoaXMsIF9Nb2RlLkV4cHJlc3Npb24pKSk7XG4gIH1cbiAgdmlzaXRTYWZlUHJvcGVydHlSZWFkKGFzdDogY2RBc3QuU2FmZVByb3BlcnR5UmVhZCwgbW9kZTogX01vZGUpOiBhbnkge1xuICAgIHZhciByZWNlaXZlciA9IGFzdC5yZWNlaXZlci52aXNpdCh0aGlzLCBfTW9kZS5FeHByZXNzaW9uKTtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQoXG4gICAgICAgIG1vZGUsIHJlY2VpdmVyLmlzQmxhbmsoKS5jb25kaXRpb25hbChvLk5VTExfRVhQUiwgcmVjZWl2ZXIucHJvcChhc3QubmFtZSkpKTtcbiAgfVxuICB2aXNpdFNhZmVNZXRob2RDYWxsKGFzdDogY2RBc3QuU2FmZU1ldGhvZENhbGwsIG1vZGU6IF9Nb2RlKTogYW55IHtcbiAgICB2YXIgcmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIudmlzaXQodGhpcywgX01vZGUuRXhwcmVzc2lvbik7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzLCBfTW9kZS5FeHByZXNzaW9uKTtcbiAgICByZXR1cm4gY29udmVydFRvU3RhdGVtZW50SWZOZWVkZWQoXG4gICAgICAgIG1vZGUsIHJlY2VpdmVyLmlzQmxhbmsoKS5jb25kaXRpb25hbChvLk5VTExfRVhQUiwgcmVjZWl2ZXIuY2FsbE1ldGhvZChhc3QubmFtZSwgYXJncykpKTtcbiAgfVxuICB2aXNpdEFsbChhc3RzOiBjZEFzdC5BU1RbXSwgbW9kZTogX01vZGUpOiBhbnkgeyByZXR1cm4gYXN0cy5tYXAoYXN0ID0+IGFzdC52aXNpdCh0aGlzLCBtb2RlKSk7IH1cbiAgdmlzaXRRdW90ZShhc3Q6IGNkQXN0LlF1b3RlLCBtb2RlOiBfTW9kZSk6IGFueSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ1F1b3RlcyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgZXZhbHVhdGlvbiEnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbGF0dGVuU3RhdGVtZW50cyhhcmc6IGFueSwgb3V0cHV0OiBvLlN0YXRlbWVudFtdKSB7XG4gIGlmIChpc0FycmF5KGFyZykpIHtcbiAgICAoPGFueVtdPmFyZykuZm9yRWFjaCgoZW50cnkpID0+IGZsYXR0ZW5TdGF0ZW1lbnRzKGVudHJ5LCBvdXRwdXQpKTtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQucHVzaChhcmcpO1xuICB9XG59Il19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar CompileBinding = (function () {\r\n function CompileBinding(node, sourceAst) {\r\n this.node = node;\r\n this.sourceAst = sourceAst;\r\n }\r\n return CompileBinding;\r\n}());\r\nexports.CompileBinding = CompileBinding;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV9iaW5kaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvY29tcGlsZV9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQTtJQUNFLHdCQUFtQixJQUFpQixFQUFTLFNBQXNCO1FBQWhELFNBQUksR0FBSixJQUFJLENBQWE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFhO0lBQUcsQ0FBQztJQUN6RSxxQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksc0JBQWMsaUJBRTFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBpbGVOb2RlfSBmcm9tICcuL2NvbXBpbGVfZWxlbWVudCc7XG5pbXBvcnQge1RlbXBsYXRlQXN0fSBmcm9tICcuLi90ZW1wbGF0ZV9hc3QnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUJpbmRpbmcge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbm9kZTogQ29tcGlsZU5vZGUsIHB1YmxpYyBzb3VyY2VBc3Q6IFRlbXBsYXRlQXN0KSB7fVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar constants_1 = require('./constants');\r\nvar o = require('../output/output_ast');\r\nvar compile_method_1 = require('./compile_method');\r\nvar expression_converter_1 = require('./expression_converter');\r\nvar compile_binding_1 = require('./compile_binding');\r\nvar CompileEventListener = (function () {\r\n function CompileEventListener(compileElement, eventTarget, eventName, listenerIndex) {\r\n this.compileElement = compileElement;\r\n this.eventTarget = eventTarget;\r\n this.eventName = eventName;\r\n this._hasComponentHostListener = false;\r\n this._actionResultExprs = [];\r\n this._method = new compile_method_1.CompileMethod(compileElement.view);\r\n this._methodName =\r\n \"_handle_\" + santitizeEventName(eventName) + \"_\" + compileElement.nodeIndex + \"_\" + listenerIndex;\r\n this._eventParam =\r\n new o.FnParam(constants_1.EventHandlerVars.event.name, o.importType(this.compileElement.view.genConfig.renderTypes.renderEvent));\r\n }\r\n CompileEventListener.getOrCreate = function (compileElement, eventTarget, eventName, targetEventListeners) {\r\n var listener = targetEventListeners.find(function (listener) { return listener.eventTarget == eventTarget &&\r\n listener.eventName == eventName; });\r\n if (lang_1.isBlank(listener)) {\r\n listener = new CompileEventListener(compileElement, eventTarget, eventName, targetEventListeners.length);\r\n targetEventListeners.push(listener);\r\n }\r\n return listener;\r\n };\r\n CompileEventListener.prototype.addAction = function (hostEvent, directive, directiveInstance) {\r\n if (lang_1.isPresent(directive) && directive.isComponent) {\r\n this._hasComponentHostListener = true;\r\n }\r\n this._method.resetDebugInfo(this.compileElement.nodeIndex, hostEvent);\r\n var context = lang_1.isPresent(directiveInstance) ? directiveInstance : o.THIS_EXPR.prop('context');\r\n var actionStmts = expression_converter_1.convertCdStatementToIr(this.compileElement.view, context, hostEvent.handler);\r\n var lastIndex = actionStmts.length - 1;\r\n if (lastIndex >= 0) {\r\n var lastStatement = actionStmts[lastIndex];\r\n var returnExpr = convertStmtIntoExpression(lastStatement);\r\n var preventDefaultVar = o.variable(\"pd_\" + this._actionResultExprs.length);\r\n this._actionResultExprs.push(preventDefaultVar);\r\n if (lang_1.isPresent(returnExpr)) {\r\n // Note: We need to cast the result of the method call to dynamic,\r\n // as it might be a void method!\r\n actionStmts[lastIndex] =\r\n preventDefaultVar.set(returnExpr.cast(o.DYNAMIC_TYPE).notIdentical(o.literal(false)))\r\n .toDeclStmt(null, [o.StmtModifier.Final]);\r\n }\r\n }\r\n this._method.addStmts(actionStmts);\r\n };\r\n CompileEventListener.prototype.finishMethod = function () {\r\n var markPathToRootStart = this._hasComponentHostListener ?\r\n this.compileElement.appElement.prop('componentView') :\r\n o.THIS_EXPR;\r\n var resultExpr = o.literal(true);\r\n this._actionResultExprs.forEach(function (expr) { resultExpr = resultExpr.and(expr); });\r\n var stmts = [markPathToRootStart.callMethod('markPathToRootAsCheckOnce', []).toStmt()]\r\n .concat(this._method.finish())\r\n .concat([new o.ReturnStatement(resultExpr)]);\r\n this.compileElement.view.eventHandlerMethods.push(new o.ClassMethod(this._methodName, [this._eventParam], stmts, o.BOOL_TYPE, [o.StmtModifier.Private]));\r\n };\r\n CompileEventListener.prototype.listenToRenderer = function () {\r\n var listenExpr;\r\n var eventListener = o.THIS_EXPR.callMethod('eventHandler', [\r\n o.fn([this._eventParam], [\r\n new o.ReturnStatement(o.THIS_EXPR.callMethod(this._methodName, [constants_1.EventHandlerVars.event]))\r\n ])\r\n ]);\r\n if (lang_1.isPresent(this.eventTarget)) {\r\n listenExpr = constants_1.ViewProperties.renderer.callMethod('listenGlobal', [o.literal(this.eventTarget), o.literal(this.eventName), eventListener]);\r\n }\r\n else {\r\n listenExpr = constants_1.ViewProperties.renderer.callMethod('listen', [this.compileElement.renderNode, o.literal(this.eventName), eventListener]);\r\n }\r\n var disposable = o.variable(\"disposable_\" + this.compileElement.view.disposables.length);\r\n this.compileElement.view.disposables.push(disposable);\r\n this.compileElement.view.createMethod.addStmt(disposable.set(listenExpr).toDeclStmt(o.FUNCTION_TYPE, [o.StmtModifier.Private]));\r\n };\r\n CompileEventListener.prototype.listenToDirective = function (directiveInstance, observablePropName) {\r\n var subscription = o.variable(\"subscription_\" + this.compileElement.view.subscriptions.length);\r\n this.compileElement.view.subscriptions.push(subscription);\r\n var eventListener = o.THIS_EXPR.callMethod('eventHandler', [\r\n o.fn([this._eventParam], [o.THIS_EXPR.callMethod(this._methodName, [constants_1.EventHandlerVars.event]).toStmt()])\r\n ]);\r\n this.compileElement.view.createMethod.addStmt(subscription.set(directiveInstance.prop(observablePropName)\r\n .callMethod(o.BuiltinMethod.SubscribeObservable, [eventListener]))\r\n .toDeclStmt(null, [o.StmtModifier.Final]));\r\n };\r\n return CompileEventListener;\r\n}());\r\nexports.CompileEventListener = CompileEventListener;\r\nfunction collectEventListeners(hostEvents, dirs, compileElement) {\r\n var eventListeners = [];\r\n hostEvents.forEach(function (hostEvent) {\r\n compileElement.view.bindings.push(new compile_binding_1.CompileBinding(compileElement, hostEvent));\r\n var listener = CompileEventListener.getOrCreate(compileElement, hostEvent.target, hostEvent.name, eventListeners);\r\n listener.addAction(hostEvent, null, null);\r\n });\r\n collection_1.ListWrapper.forEachWithIndex(dirs, function (directiveAst, i) {\r\n var directiveInstance = compileElement.directiveInstances[i];\r\n directiveAst.hostEvents.forEach(function (hostEvent) {\r\n compileElement.view.bindings.push(new compile_binding_1.CompileBinding(compileElement, hostEvent));\r\n var listener = CompileEventListener.getOrCreate(compileElement, hostEvent.target, hostEvent.name, eventListeners);\r\n listener.addAction(hostEvent, directiveAst.directive, directiveInstance);\r\n });\r\n });\r\n eventListeners.forEach(function (listener) { return listener.finishMethod(); });\r\n return eventListeners;\r\n}\r\nexports.collectEventListeners = collectEventListeners;\r\nfunction bindDirectiveOutputs(directiveAst, directiveInstance, eventListeners) {\r\n collection_1.StringMapWrapper.forEach(directiveAst.directive.outputs, function (eventName, observablePropName) {\r\n eventListeners.filter(function (listener) { return listener.eventName == eventName; })\r\n .forEach(function (listener) { listener.listenToDirective(directiveInstance, observablePropName); });\r\n });\r\n}\r\nexports.bindDirectiveOutputs = bindDirectiveOutputs;\r\nfunction bindRenderOutputs(eventListeners) {\r\n eventListeners.forEach(function (listener) { return listener.listenToRenderer(); });\r\n}\r\nexports.bindRenderOutputs = bindRenderOutputs;\r\nfunction convertStmtIntoExpression(stmt) {\r\n if (stmt instanceof o.ExpressionStatement) {\r\n return stmt.expr;\r\n }\r\n else if (stmt instanceof o.ReturnStatement) {\r\n return stmt.value;\r\n }\r\n return null;\r\n}\r\nfunction santitizeEventName(name) {\r\n return lang_1.StringWrapper.replaceAll(name, /[^a-zA-Z_]/g, '_');\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfYmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvZXZlbnRfYmluZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBZ0QsMEJBQTBCLENBQUMsQ0FBQTtBQUMzRSwyQkFBNEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RSwwQkFBK0MsYUFBYSxDQUFDLENBQUE7QUFFN0QsSUFBWSxDQUFDLFdBQU0sc0JBQXNCLENBQUMsQ0FBQTtBQUUxQywrQkFBNEIsa0JBQWtCLENBQUMsQ0FBQTtBQUsvQyxxQ0FBcUMsd0JBQXdCLENBQUMsQ0FBQTtBQUM5RCxnQ0FBNkIsbUJBQW1CLENBQUMsQ0FBQTtBQUVqRDtJQW1CRSw4QkFBbUIsY0FBOEIsRUFBUyxXQUFtQixFQUMxRCxTQUFpQixFQUFFLGFBQXFCO1FBRHhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQzFELGNBQVMsR0FBVCxTQUFTLENBQVE7UUFsQjVCLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUczQyx1QkFBa0IsR0FBbUIsRUFBRSxDQUFDO1FBZ0I5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksOEJBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVc7WUFDWixhQUFXLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxTQUFJLGNBQWMsQ0FBQyxTQUFTLFNBQUksYUFBZSxDQUFDO1FBQzVGLElBQUksQ0FBQyxXQUFXO1lBQ1osSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQzNCLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxD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WUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBQyxTQUFTLEVBQUUsa0JBQWtCO1FBQ3JGLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBQSxRQUFRLElBQUksT0FBQSxRQUFRLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBL0IsQ0FBK0IsQ0FBQzthQUM3RCxPQUFPLENBQ0osVUFBQyxRQUFRLElBQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQZSw0QkFBb0IsdUJBT25DLENBQUE7QUFFRCwyQkFBa0MsY0FBc0M7SUFDdEUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFFBQVEsSUFBSSxPQUFBLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUEzQixDQUEyQixDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUZlLHlCQUFpQixvQkFFaEMsQ0FBQTtBQUVELG1DQUFtQyxJQUFpQjtJQUNsRCxFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCw0QkFBNEIsSUFBWTtJQUN0QyxNQUFNLENBQUMsb0JBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIFN0cmluZ1dyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtFdmVudEhhbmRsZXJWYXJzLCBWaWV3UHJvcGVydGllc30gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7Q29tcGlsZUVsZW1lbnR9IGZyb20gJy4vY29tcGlsZV9lbGVtZW50JztcbmltcG9ydCB7Q29tcGlsZU1ldGhvZH0gZnJvbSAnLi9jb21waWxlX21ldGhvZCc7XG5cbmltcG9ydCB7Qm91bmRFdmVudEFzdCwgRGlyZWN0aXZlQXN0fSBmcm9tICcuLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtDb21waWxlRGlyZWN0aXZlTWV0YWRhdGF9IGZyb20gJy4uL2NvbXBpbGVfbWV0YWRhdGEnO1xuXG5pbXBvcnQge2NvbnZlcnRDZFN0YXRlbWVudFRvSXJ9IGZyb20gJy4vZXhwcmVzc2lvbl9jb252ZXJ0ZXInO1xuaW1wb3J0IHtDb21waWxlQmluZGluZ30gZnJvbSAnLi9jb21waWxlX2JpbmRpbmcnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUV2ZW50TGlzdGVuZXIge1xuICBwcml2YXRlIF9tZXRob2Q6IENvbXBpbGVNZXRob2Q7XG4gIHByaXZhdGUgX2hhc0NvbXBvbmVudEhvc3RMaXN0ZW5lcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9tZXRob2ROYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2V2ZW50UGFyYW06IG8uRm5QYXJhbTtcbiAgcHJpdmF0ZSBfYWN0aW9uUmVzdWx0RXhwcnM6IG8uRXhwcmVzc2lvbltdID0gW107XG5cbiAgc3RhdGljIGdldE9yQ3JlYXRlKGNvbXBpbGVFbGVtZW50OiBDb21waWxlRWxlbWVudCwgZXZlbnRUYXJnZXQ6IHN0cmluZywgZXZlbnROYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICB0YXJnZXRFdmVudExpc3RlbmVyczogQ29tcGlsZUV2ZW50TGlzdGVuZXJbXSk6IENvbXBpbGVFdmVudExpc3RlbmVyIHtcbiAgICB2YXIgbGlzdGVuZXIgPSB0YXJnZXRFdmVudExpc3RlbmVycy5maW5kKGxpc3RlbmVyID0+IGxpc3RlbmVyLmV2ZW50VGFyZ2V0ID09IGV2ZW50VGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5ldmVudE5hbWUgPT0gZXZlbnROYW1lKTtcbiAgICBpZiAoaXNCbGFuayhsaXN0ZW5lcikpIHtcbiAgICAgIGxpc3RlbmVyID0gbmV3IENvbXBpbGVFdmVudExpc3RlbmVyKGNvbXBpbGVFbGVtZW50LCBldmVudFRhcmdldCwgZXZlbnROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RXZlbnRMaXN0ZW5lcnMubGVuZ3RoKTtcbiAgICAgIHRhcmdldEV2ZW50TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdGVuZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcGlsZUVsZW1lbnQ6IENvbXBpbGVFbGVtZW50LCBwdWJsaWMgZXZlbnRUYXJnZXQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lckluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tZXRob2QgPSBuZXcgQ29tcGlsZU1ldGhvZChjb21waWxlRWxlbWVudC52aWV3KTtcbiAgICB0aGlzLl9tZXRob2ROYW1lID1cbiAgICAgICAgYF9oYW5kbGVfJHtzYW50aXRpemVFdmVudE5hbWUoZXZlbnROYW1lKX1fJHtjb21waWxlRWxlbWVudC5ub2RlSW5kZXh9XyR7bGlzdGVuZXJJbmRleH1gO1xuICAgIHRoaXMuX2V2ZW50UGFyYW0gPVxuICAgICAgICBuZXcgby5GblBhcmFtKEV2ZW50SGFuZGxlclZhcnMuZXZlbnQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBvLmltcG9ydFR5cGUodGhpcy5jb21waWxlRWxlbWVudC52aWV3LmdlbkNvbmZpZy5yZW5kZXJUeXBlcy5yZW5kZXJFdmVudCkpO1xuICB9XG5cbiAgYWRkQWN0aW9uKGhvc3RFdmVudDogQm91bmRFdmVudEFzdCwgZGlyZWN0aXZlOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uKSB7XG4gICAgaWYgKGlzUHJlc2VudChkaXJlY3RpdmUpICYmIGRpcmVjdGl2ZS5pc0NvbXBvbmVudCkge1xuICAgICAgdGhpcy5faGFzQ29tcG9uZW50SG9zdExpc3RlbmVyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5fbWV0aG9kLnJlc2V0RGVidWdJbmZvKHRoaXMuY29tcGlsZUVsZW1lbnQubm9kZUluZGV4LCBob3N0RXZlbnQpO1xuICAgIHZhciBjb250ZXh0ID0gaXNQcmVzZW50KGRpcmVjdGl2ZUluc3RhbmNlKSA/IGRpcmVjdGl2ZUluc3RhbmNlIDogby5USElTX0VYUFIucHJvcCgnY29udGV4dCcpO1xuICAgIHZhciBhY3Rpb25TdG10cyA9IGNvbnZlcnRDZFN0YXRlbWVudFRvSXIodGhpcy5jb21waWxlRWxlbWVudC52aWV3LCBjb250ZXh0LCBob3N0RXZlbnQuaGFuZGxlcik7XG4gICAgdmFyIGxhc3RJbmRleCA9IGFjdGlvblN0bXRzLmxlbmd0aCAtIDE7XG4gICAgaWYgKGxhc3RJbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbGFzdFN0YXRlbWVudCA9IGFjdGlvblN0bXRzW2xhc3RJbmRleF07XG4gICAgICB2YXIgcmV0dXJuRXhwciA9IGNvbnZlcnRTdG10SW50b0V4cHJlc3Npb24obGFzdFN0YXRlbWVudCk7XG4gICAgICB2YXIgcHJldmVudERlZmF1bHRWYXIgPSBvLnZhcmlhYmxlKGBwZF8ke3RoaXMuX2FjdGlvblJlc3VsdEV4cHJzLmxlbmd0aH1gKTtcbiAgICAgIHRoaXMuX2FjdGlvblJlc3VsdEV4cHJzLnB1c2gocHJldmVudERlZmF1bHRWYXIpO1xuICAgICAgaWYgKGlzUHJlc2VudChyZXR1cm5FeHByKSkge1xuICAgICAgICAvLyBOb3RlOiBXZSBuZWVkIHRvIGNhc3QgdGhlIHJlc3VsdCBvZiB0aGUgbWV0aG9kIGNhbGwgdG8gZHluYW1pYyxcbiAgICAgICAgLy8gYXMgaXQgbWlnaHQgYmUgYSB2b2lkIG1ldGhvZCFcbiAgICAgICAgYWN0aW9uU3RtdHNbbGFzdEluZGV4XSA9XG4gICAgICAgICAgICBwcmV2ZW50RGVmYXVsdFZhci5zZXQocmV0dXJuRXhwci5jYXN0KG8uRFlOQU1JQ19UWVBFKS5ub3RJZGVudGljYWwoby5saXRlcmFsKGZhbHNlKSkpXG4gICAgICAgICAgICAgICAgLnRvRGVjbFN0bXQobnVsbCwgW28uU3RtdE1vZGlmaWVyLkZpbmFsXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX21ldGhvZC5hZGRTdG10cyhhY3Rpb25TdG10cyk7XG4gIH1cblxuICBmaW5pc2hNZXRob2QoKSB7XG4gICAgdmFyIG1hcmtQYXRoVG9Sb290U3RhcnQgPSB0aGlzLl9oYXNDb21wb25lbnRIb3N0TGlzdGVuZXIgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZUVsZW1lbnQuYXBwRWxlbWVudC5wcm9wKCdjb21wb25lbnRWaWV3JykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uVEhJU19FWFBSO1xuICAgIHZhciByZXN1bHRFeHByOiBvLkV4cHJlc3Npb24gPSBvLmxpdGVyYWwodHJ1ZSk7XG4gICAgdGhpcy5fYWN0aW9uUmVzdWx0RXhwcnMuZm9yRWFjaCgoZXhwcikgPT4geyByZXN1bHRFeHByID0gcmVzdWx0RXhwci5hbmQoZXhwcik7IH0pO1xuICAgIHZhciBzdG10cyA9XG4gICAgICAgICg8by5TdGF0ZW1lbnRbXT5bbWFya1BhdGhUb1Jvb3RTdGFydC5jYWxsTWV0aG9kKCdtYXJrUGF0aFRvUm9vdEFzQ2hlY2tPbmNlJywgW10pLnRvU3RtdCgpXSlcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy5fbWV0aG9kLmZpbmlzaCgpKVxuICAgICAgICAgICAgLmNvbmNhdChbbmV3IG8uUmV0dXJuU3RhdGVtZW50KHJlc3VsdEV4cHIpXSk7XG4gICAgdGhpcy5jb21waWxlRWxlbWVudC52aWV3LmV2ZW50SGFuZGxlck1ldGhvZHMucHVzaChuZXcgby5DbGFzc01ldGhvZChcbiAgICAgICAgdGhpcy5fbWV0aG9kTmFtZSwgW3RoaXMuX2V2ZW50UGFyYW1dLCBzdG10cywgby5CT09MX1RZUEUsIFtvLlN0bXRNb2RpZmllci5Qcml2YXRlXSkpO1xuICB9XG5cbiAgbGlzdGVuVG9SZW5kZXJlcigpIHtcbiAgICB2YXIgbGlzdGVuRXhwcjtcbiAgICB2YXIgZXZlbnRMaXN0ZW5lciA9IG8uVEhJU19FWFBSLmNhbGxNZXRob2QoJ2V2ZW50SGFuZGxlcicsIFtcbiAgICAgIG8uZm4oW3RoaXMuX2V2ZW50UGFyYW1dLFxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgbmV3IG8uUmV0dXJuU3RhdGVtZW50KFxuICAgICAgICAgICAgICAgICBvLlRISVNfRVhQUi5jYWxsTWV0aG9kKHRoaXMuX21ldGhvZE5hbWUsIFtFdmVudEhhbmRsZXJWYXJzLmV2ZW50XSkpXG4gICAgICAgICAgIF0pXG4gICAgXSk7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLmV2ZW50VGFyZ2V0KSkge1xuICAgICAgbGlzdGVuRXhwciA9IFZpZXdQcm9wZXJ0aWVzLnJlbmRlcmVyLmNhbGxNZXRob2QoXG4gICAgICAgICAgJ2xpc3Rlbkdsb2JhbCcsIFtvLmxpdGVyYWwodGhpcy5ldmVudFRhcmdldCksIG8ubGl0ZXJhbCh0aGlzLmV2ZW50TmFtZSksIGV2ZW50TGlzdGVuZXJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdGVuRXhwciA9IFZpZXdQcm9wZXJ0aWVzLnJlbmRlcmVyLmNhbGxNZXRob2QoXG4gICAgICAgICAgJ2xpc3RlbicsIFt0aGlzLmNvbXBpbGVFbGVtZW50LnJlbmRlck5vZGUsIG8ubGl0ZXJhbCh0aGlzLmV2ZW50TmFtZSksIGV2ZW50TGlzdGVuZXJdKTtcbiAgICB9XG4gICAgdmFyIGRpc3Bvc2FibGUgPSBvLnZhcmlhYmxlKGBkaXNwb3NhYmxlXyR7dGhpcy5jb21waWxlRWxlbWVudC52aWV3LmRpc3Bvc2FibGVzLmxlbmd0aH1gKTtcbiAgICB0aGlzLmNvbXBpbGVFbGVtZW50LnZpZXcuZGlzcG9zYWJsZXMucHVzaChkaXNwb3NhYmxlKTtcbiAgICB0aGlzLmNvbXBpbGVFbGVtZW50LnZpZXcuY3JlYXRlTWV0aG9kLmFkZFN0bXQoXG4gICAgICAgIGRpc3Bvc2FibGUuc2V0KGxpc3RlbkV4cHIpLnRvRGVjbFN0bXQoby5GVU5DVElPTl9UWVBFLCBbby5TdG10TW9kaWZpZXIuUHJpdmF0ZV0pKTtcbiAgfVxuXG4gIGxpc3RlblRvRGlyZWN0aXZlKGRpcmVjdGl2ZUluc3RhbmNlOiBvLkV4cHJlc3Npb24sIG9ic2VydmFibGVQcm9wTmFtZTogc3RyaW5nKSB7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IG8udmFyaWFibGUoYHN1YnNjcmlwdGlvbl8ke3RoaXMuY29tcGlsZUVsZW1lbnQudmlldy5zdWJzY3JpcHRpb25zLmxlbmd0aH1gKTtcbiAgICB0aGlzLmNvbXBpbGVFbGVtZW50LnZpZXcuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgdmFyIGV2ZW50TGlzdGVuZXIgPSBvLlRISVNfRVhQUi5jYWxsTWV0aG9kKCdldmVudEhhbmRsZXInLCBbXG4gICAgICBvLmZuKFt0aGlzLl9ldmVudFBhcmFtXSxcbiAgICAgICAgICAgW28uVEhJU19FWFBSLmNhbGxNZXRob2QodGhpcy5fbWV0aG9kTmFtZSwgW0V2ZW50SGFuZGxlclZhcnMuZXZlbnRdKS50b1N0bXQoKV0pXG4gICAgXSk7XG4gICAgdGhpcy5jb21waWxlRWxlbWVudC52aWV3LmNyZWF0ZU1ldGhvZC5hZGRTdG10KFxuICAgICAgICBzdWJzY3JpcHRpb24uc2V0KGRpcmVjdGl2ZUluc3RhbmNlLnByb3Aob2JzZXJ2YWJsZVByb3BOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsbE1ldGhvZChvLkJ1aWx0aW5NZXRob2QuU3Vic2NyaWJlT2JzZXJ2YWJsZSwgW2V2ZW50TGlzdGVuZXJdKSlcbiAgICAgICAgICAgIC50b0RlY2xTdG10KG51bGwsIFtvLlN0bXRNb2RpZmllci5GaW5hbF0pKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdEV2ZW50TGlzdGVuZXJzKGhvc3RFdmVudHM6IEJvdW5kRXZlbnRBc3RbXSwgZGlyczogRGlyZWN0aXZlQXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50OiBDb21waWxlRWxlbWVudCk6IENvbXBpbGVFdmVudExpc3RlbmVyW10ge1xuICB2YXIgZXZlbnRMaXN0ZW5lcnM6IENvbXBpbGVFdmVudExpc3RlbmVyW10gPSBbXTtcbiAgaG9zdEV2ZW50cy5mb3JFYWNoKChob3N0RXZlbnQpID0+IHtcbiAgICBjb21waWxlRWxlbWVudC52aWV3LmJpbmRpbmdzLnB1c2gobmV3IENvbXBpbGVCaW5kaW5nKGNvbXBpbGVFbGVtZW50LCBob3N0RXZlbnQpKTtcbiAgICB2YXIgbGlzdGVuZXIgPSBDb21waWxlRXZlbnRMaXN0ZW5lci5nZXRPckNyZWF0ZShjb21waWxlRWxlbWVudCwgaG9zdEV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0RXZlbnQubmFtZSwgZXZlbnRMaXN0ZW5lcnMpO1xuICAgIGxpc3RlbmVyLmFkZEFjdGlvbihob3N0RXZlbnQsIG51bGwsIG51bGwpO1xuICB9KTtcbiAgTGlzdFdyYXBwZXIuZm9yRWFjaFdpdGhJbmRleChkaXJzLCAoZGlyZWN0aXZlQXN0LCBpKSA9PiB7XG4gICAgdmFyIGRpcmVjdGl2ZUluc3RhbmNlID0gY29tcGlsZUVsZW1lbnQuZGlyZWN0aXZlSW5zdGFuY2VzW2ldO1xuICAgIGRpcmVjdGl2ZUFzdC5ob3N0RXZlbnRzLmZvckVhY2goKGhvc3RFdmVudCkgPT4ge1xuICAgICAgY29tcGlsZUVsZW1lbnQudmlldy5iaW5kaW5ncy5wdXNoKG5ldyBDb21waWxlQmluZGluZyhjb21waWxlRWxlbWVudCwgaG9zdEV2ZW50KSk7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBDb21waWxlRXZlbnRMaXN0ZW5lci5nZXRPckNyZWF0ZShjb21waWxlRWxlbWVudCwgaG9zdEV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RFdmVudC5uYW1lLCBldmVudExpc3RlbmVycyk7XG4gICAgICBsaXN0ZW5lci5hZGRBY3Rpb24oaG9zdEV2ZW50LCBkaXJlY3RpdmVBc3QuZGlyZWN0aXZlLCBkaXJlY3RpdmVJbnN0YW5jZSk7XG4gICAgfSk7XG4gIH0pO1xuICBldmVudExpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIuZmluaXNoTWV0aG9kKCkpO1xuICByZXR1cm4gZXZlbnRMaXN0ZW5lcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kRGlyZWN0aXZlT3V0cHV0cyhkaXJlY3RpdmVBc3Q6IERpcmVjdGl2ZUFzdCwgZGlyZWN0aXZlSW5zdGFuY2U6IG8uRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudExpc3RlbmVyczogQ29tcGlsZUV2ZW50TGlzdGVuZXJbXSkge1xuICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goZGlyZWN0aXZlQXN0LmRpcmVjdGl2ZS5vdXRwdXRzLCAoZXZlbnROYW1lLCBvYnNlcnZhYmxlUHJvcE5hbWUpID0+IHtcbiAgICBldmVudExpc3RlbmVycy5maWx0ZXIobGlzdGVuZXIgPT4gbGlzdGVuZXIuZXZlbnROYW1lID09IGV2ZW50TmFtZSlcbiAgICAgICAgLmZvckVhY2goXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IHsgbGlzdGVuZXIubGlzdGVuVG9EaXJlY3RpdmUoZGlyZWN0aXZlSW5zdGFuY2UsIG9ic2VydmFibGVQcm9wTmFtZSk7IH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRSZW5kZXJPdXRwdXRzKGV2ZW50TGlzdGVuZXJzOiBDb21waWxlRXZlbnRMaXN0ZW5lcltdKSB7XG4gIGV2ZW50TGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIubGlzdGVuVG9SZW5kZXJlcigpKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFN0bXRJbnRvRXhwcmVzc2lvbihzdG10OiBvLlN0YXRlbWVudCk6IG8uRXhwcmVzc2lvbiB7XG4gIGlmIChzdG10IGluc3RhbmNlb2Ygby5FeHByZXNzaW9uU3RhdGVtZW50KSB7XG4gICAgcmV0dXJuIHN0bXQuZXhwcjtcbiAgfSBlbHNlIGlmIChzdG10IGluc3RhbmNlb2Ygby5SZXR1cm5TdGF0ZW1lbnQpIHtcbiAgICByZXR1cm4gc3RtdC52YWx1ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gc2FudGl0aXplRXZlbnROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwobmFtZSwgL1teYS16QS1aX10vZywgJ18nKTtcbn0iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar compile_metadata_1 = require('../compile_metadata');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar view_type_1 = require('angular2/src/core/linker/view_type');\r\nvar o = require('../output/output_ast');\r\nvar identifiers_1 = require('../identifiers');\r\nfunction _enumExpression(classIdentifier, value) {\r\n if (lang_1.isBlank(value))\r\n return o.NULL_EXPR;\r\n var name = lang_1.resolveEnumToken(classIdentifier.runtime, value);\r\n return o.importExpr(new compile_metadata_1.CompileIdentifierMetadata({\r\n name: classIdentifier.name + \".\" + name,\r\n moduleUrl: classIdentifier.moduleUrl,\r\n runtime: value\r\n }));\r\n}\r\nvar ViewTypeEnum = (function () {\r\n function ViewTypeEnum() {\r\n }\r\n ViewTypeEnum.fromValue = function (value) {\r\n return _enumExpression(identifiers_1.Identifiers.ViewType, value);\r\n };\r\n ViewTypeEnum.HOST = ViewTypeEnum.fromValue(view_type_1.ViewType.HOST);\r\n ViewTypeEnum.COMPONENT = ViewTypeEnum.fromValue(view_type_1.ViewType.COMPONENT);\r\n ViewTypeEnum.EMBEDDED = ViewTypeEnum.fromValue(view_type_1.ViewType.EMBEDDED);\r\n return ViewTypeEnum;\r\n}());\r\nexports.ViewTypeEnum = ViewTypeEnum;\r\nvar ViewEncapsulationEnum = (function () {\r\n function ViewEncapsulationEnum() {\r\n }\r\n ViewEncapsulationEnum.fromValue = function (value) {\r\n return _enumExpression(identifiers_1.Identifiers.ViewEncapsulation, value);\r\n };\r\n ViewEncapsulationEnum.Emulated = ViewEncapsulationEnum.fromValue(view_1.ViewEncapsulation.Emulated);\r\n ViewEncapsulationEnum.Native = ViewEncapsulationEnum.fromValue(view_1.ViewEncapsulation.Native);\r\n ViewEncapsulationEnum.None = ViewEncapsulationEnum.fromValue(view_1.ViewEncapsulation.None);\r\n return ViewEncapsulationEnum;\r\n}());\r\nexports.ViewEncapsulationEnum = ViewEncapsulationEnum;\r\nvar ChangeDetectorStateEnum = (function () {\r\n function ChangeDetectorStateEnum() {\r\n }\r\n ChangeDetectorStateEnum.fromValue = function (value) {\r\n return _enumExpression(identifiers_1.Identifiers.ChangeDetectorState, value);\r\n };\r\n ChangeDetectorStateEnum.NeverChecked = ChangeDetectorStateEnum.fromValue(change_detection_1.ChangeDetectorState.NeverChecked);\r\n ChangeDetectorStateEnum.CheckedBefore = ChangeDetectorStateEnum.fromValue(change_detection_1.ChangeDetectorState.CheckedBefore);\r\n ChangeDetectorStateEnum.Errored = ChangeDetectorStateEnum.fromValue(change_detection_1.ChangeDetectorState.Errored);\r\n return ChangeDetectorStateEnum;\r\n}());\r\nexports.ChangeDetectorStateEnum = ChangeDetectorStateEnum;\r\nvar ChangeDetectionStrategyEnum = (function () {\r\n function ChangeDetectionStrategyEnum() {\r\n }\r\n ChangeDetectionStrategyEnum.fromValue = function (value) {\r\n return _enumExpression(identifiers_1.Identifiers.ChangeDetectionStrategy, value);\r\n };\r\n ChangeDetectionStrategyEnum.CheckOnce = ChangeDetectionStrategyEnum.fromValue(change_detection_1.ChangeDetectionStrategy.CheckOnce);\r\n ChangeDetectionStrategyEnum.Checked = ChangeDetectionStrategyEnum.fromValue(change_detection_1.ChangeDetectionStrategy.Checked);\r\n ChangeDetectionStrategyEnum.CheckAlways = ChangeDetectionStrategyEnum.fromValue(change_detection_1.ChangeDetectionStrategy.CheckAlways);\r\n ChangeDetectionStrategyEnum.Detached = ChangeDetectionStrategyEnum.fromValue(change_detection_1.ChangeDetectionStrategy.Detached);\r\n ChangeDetectionStrategyEnum.OnPush = ChangeDetectionStrategyEnum.fromValue(change_detection_1.ChangeDetectionStrategy.OnPush);\r\n ChangeDetectionStrategyEnum.Default = ChangeDetectionStrategyEnum.fromValue(change_detection_1.ChangeDetectionStrategy.Default);\r\n return ChangeDetectionStrategyEnum;\r\n}());\r\nexports.ChangeDetectionStrategyEnum = ChangeDetectionStrategyEnum;\r\nvar ViewConstructorVars = (function () {\r\n function ViewConstructorVars() {\r\n }\r\n ViewConstructorVars.viewUtils = o.variable('viewUtils');\r\n ViewConstructorVars.parentInjector = o.variable('parentInjector');\r\n ViewConstructorVars.declarationEl = o.variable('declarationEl');\r\n return ViewConstructorVars;\r\n}());\r\nexports.ViewConstructorVars = ViewConstructorVars;\r\nvar ViewProperties = (function () {\r\n function ViewProperties() {\r\n }\r\n ViewProperties.renderer = o.THIS_EXPR.prop('renderer');\r\n ViewProperties.projectableNodes = o.THIS_EXPR.prop('projectableNodes');\r\n ViewProperties.viewUtils = o.THIS_EXPR.prop('viewUtils');\r\n return ViewProperties;\r\n}());\r\nexports.ViewProperties = ViewProperties;\r\nvar EventHandlerVars = (function () {\r\n function EventHandlerVars() {\r\n }\r\n EventHandlerVars.event = o.variable('$event');\r\n return EventHandlerVars;\r\n}());\r\nexports.EventHandlerVars = EventHandlerVars;\r\nvar InjectMethodVars = (function () {\r\n function InjectMethodVars() {\r\n }\r\n InjectMethodVars.token = o.variable('token');\r\n InjectMethodVars.requestNodeIndex = o.variable('requestNodeIndex');\r\n InjectMethodVars.notFoundResult = o.variable('notFoundResult');\r\n return InjectMethodVars;\r\n}());\r\nexports.InjectMethodVars = InjectMethodVars;\r\nvar DetectChangesVars = (function () {\r\n function DetectChangesVars() {\r\n }\r\n DetectChangesVars.throwOnChange = o.variable(\"throwOnChange\");\r\n DetectChangesVars.changes = o.variable(\"changes\");\r\n DetectChangesVars.changed = o.variable(\"changed\");\r\n DetectChangesVars.valUnwrapper = o.variable(\"valUnwrapper\");\r\n return DetectChangesVars;\r\n}());\r\nexports.DetectChangesVars = DetectChangesVars;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBdUQsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRixpQ0FBOEQscUJBQXFCLENBQUMsQ0FBQTtBQUNwRixpQ0FHTyxxREFBcUQsQ0FBQyxDQUFBO0FBQzdELHFCQUFnQyxpQ0FBaUMsQ0FBQyxDQUFBO0FBQ2xFLDBCQUF1QixvQ0FBb0MsQ0FBQyxDQUFBO0FBQzVELElBQVksQ0FBQyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDMUMsNEJBQTBCLGdCQUFnQixDQUFDLENBQUE7QUFFM0MseUJBQXlCLGVBQTBDLEVBQUUsS0FBVTtJQUM3RSxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2QyxJQUFJLElBQUksR0FBRyx1QkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVELE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksNENBQXlCLENBQUM7UUFDaEQsSUFBSSxFQUFLLGVBQWUsQ0FBQyxJQUFJLFNBQUksSUFBTTtRQUN2QyxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7UUFDcEMsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRDtJQUFBO0lBT0EsQ0FBQztJQU5RLHNCQUFTLEdBQWhCLFVBQWlCLEtBQWU7UUFDOUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyx5QkFBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ00saUJBQUksR0FBRyxZQUFZLENB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZXJpYWxpemVFbnVtLCBpc0JsYW5rLCByZXNvbHZlRW51bVRva2VufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLCBDb21waWxlVG9rZW5NZXRhZGF0YX0gZnJvbSAnLi4vY29tcGlsZV9tZXRhZGF0YSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclN0YXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge1ZpZXdUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld190eXBlJztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtJZGVudGlmaWVyc30gZnJvbSAnLi4vaWRlbnRpZmllcnMnO1xuXG5mdW5jdGlvbiBfZW51bUV4cHJlc3Npb24oY2xhc3NJZGVudGlmaWVyOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLCB2YWx1ZTogYW55KTogby5FeHByZXNzaW9uIHtcbiAgaWYgKGlzQmxhbmsodmFsdWUpKSByZXR1cm4gby5OVUxMX0VYUFI7XG4gIHZhciBuYW1lID0gcmVzb2x2ZUVudW1Ub2tlbihjbGFzc0lkZW50aWZpZXIucnVudGltZSwgdmFsdWUpO1xuICByZXR1cm4gby5pbXBvcnRFeHByKG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiBgJHtjbGFzc0lkZW50aWZpZXIubmFtZX0uJHtuYW1lfWAsXG4gICAgbW9kdWxlVXJsOiBjbGFzc0lkZW50aWZpZXIubW9kdWxlVXJsLFxuICAgIHJ1bnRpbWU6IHZhbHVlXG4gIH0pKTtcbn1cblxuZXhwb3J0IGNsYXNzIFZpZXdUeXBlRW51bSB7XG4gIHN0YXRpYyBmcm9tVmFsdWUodmFsdWU6IFZpZXdUeXBlKTogby5FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gX2VudW1FeHByZXNzaW9uKElkZW50aWZpZXJzLlZpZXdUeXBlLCB2YWx1ZSk7XG4gIH1cbiAgc3RhdGljIEhPU1QgPSBWaWV3VHlwZUVudW0uZnJvbVZhbHVlKFZpZXdUeXBlLkhPU1QpO1xuICBzdGF0aWMgQ09NUE9ORU5UID0gVmlld1R5cGVFbnVtLmZyb21WYWx1ZShWaWV3VHlwZS5DT01QT05FTlQpO1xuICBzdGF0aWMgRU1CRURERUQgPSBWaWV3VHlwZUVudW0uZnJvbVZhbHVlKFZpZXdUeXBlLkVNQkVEREVEKTtcbn1cblxuZXhwb3J0IGNsYXNzIFZpZXdFbmNhcHN1bGF0aW9uRW51bSB7XG4gIHN0YXRpYyBmcm9tVmFsdWUodmFsdWU6IFZpZXdFbmNhcHN1bGF0aW9uKTogby5FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gX2VudW1FeHByZXNzaW9uKElkZW50aWZpZXJzLlZpZXdFbmNhcHN1bGF0aW9uLCB2YWx1ZSk7XG4gIH1cbiAgc3RhdGljIEVtdWxhdGVkID0gVmlld0VuY2Fwc3VsYXRpb25FbnVtLmZyb21WYWx1ZShWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCk7XG4gIHN0YXRpYyBOYXRpdmUgPSBWaWV3RW5jYXBzdWxhdGlvbkVudW0uZnJvbVZhbHVlKFZpZXdFbmNhcHN1bGF0aW9uLk5hdGl2ZSk7XG4gIHN0YXRpYyBOb25lID0gVmlld0VuY2Fwc3VsYXRpb25FbnVtLmZyb21WYWx1ZShWaWV3RW5jYXBzdWxhdGlvbi5Ob25lKTtcbn1cblxuZXhwb3J0IGNsYXNzIENoYW5nZURldGVjdG9yU3RhdGVFbnVtIHtcbiAgc3RhdGljIGZyb21WYWx1ZSh2YWx1ZTogQ2hhbmdlRGV0ZWN0b3JTdGF0ZSk6IG8uRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIF9lbnVtRXhwcmVzc2lvbihJZGVudGlmaWVycy5DaGFuZ2VEZXRlY3RvclN0YXRlLCB2YWx1ZSk7XG4gIH1cbiAgc3RhdGljIE5ldmVyQ2hlY2tlZCA9IENoYW5nZURldGVjdG9yU3RhdGVFbnVtLmZyb21WYWx1ZShDaGFuZ2VEZXRlY3RvclN0YXRlLk5ldmVyQ2hlY2tlZCk7XG4gIHN0YXRpYyBDaGVja2VkQmVmb3JlID0gQ2hhbmdlRGV0ZWN0b3JTdGF0ZUVudW0uZnJvbVZhbHVlKENoYW5nZURldGVjdG9yU3RhdGUuQ2hlY2tlZEJlZm9yZSk7XG4gIHN0YXRpYyBFcnJvcmVkID0gQ2hhbmdlRGV0ZWN0b3JTdGF0ZUVudW0uZnJvbVZhbHVlKENoYW5nZURldGVjdG9yU3RhdGUuRXJyb3JlZCk7XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneUVudW0ge1xuICBzdGF0aWMgZnJvbVZhbHVlKHZhbHVlOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSk6IG8uRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIF9lbnVtRXhwcmVzc2lvbihJZGVudGlmaWVycy5DaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgdmFsdWUpO1xuICB9XG4gIHN0YXRpYyBDaGVja09uY2UgPSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneUVudW0uZnJvbVZhbHVlKENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZSk7XG4gIHN0YXRpYyBDaGVja2VkID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lFbnVtLmZyb21WYWx1ZShDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja2VkKTtcbiAgc3RhdGljIENoZWNrQWx3YXlzID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lFbnVtLmZyb21WYWx1ZShDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja0Fsd2F5cyk7XG4gIHN0YXRpYyBEZXRhY2hlZCA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5RW51bS5mcm9tVmFsdWUoQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGV0YWNoZWQpO1xuICBzdGF0aWMgT25QdXNoID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3lFbnVtLmZyb21WYWx1ZShDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gpO1xuICBzdGF0aWMgRGVmYXVsdCA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5RW51bS5mcm9tVmFsdWUoQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCk7XG59XG5cbmV4cG9ydCBjbGFzcyBWaWV3Q29uc3RydWN0b3JWYXJzIHtcbiAgc3RhdGljIHZpZXdVdGlscyA9IG8udmFyaWFibGUoJ3ZpZXdVdGlscycpO1xuICBzdGF0aWMgcGFyZW50SW5qZWN0b3IgPSBvLnZhcmlhYmxlKCdwYXJlbnRJbmplY3RvcicpO1xuICBzdGF0aWMgZGVjbGFyYXRpb25FbCA9IG8udmFyaWFibGUoJ2RlY2xhcmF0aW9uRWwnKTtcbn1cblxuZXhwb3J0IGNsYXNzIFZpZXdQcm9wZXJ0aWVzIHtcbiAgc3RhdGljIHJlbmRlcmVyID0gby5USElTX0VYUFIucHJvcCgncmVuZGVyZXInKTtcbiAgc3RhdGljIHByb2plY3RhYmxlTm9kZXMgPSBvLlRISVNfRVhQUi5wcm9wKCdwcm9qZWN0YWJsZU5vZGVzJyk7XG4gIHN0YXRpYyB2aWV3VXRpbHMgPSBvLlRISVNfRVhQUi5wcm9wKCd2aWV3VXRpbHMnKTtcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZW50SGFuZGxlclZhcnMgeyBzdGF0aWMgZXZlbnQgPSBvLnZhcmlhYmxlKCckZXZlbnQnKTsgfVxuXG5leHBvcnQgY2xhc3MgSW5qZWN0TWV0aG9kVmFycyB7XG4gIHN0YXRpYyB0b2tlbiA9IG8udmFyaWFibGUoJ3Rva2VuJyk7XG4gIHN0YXRpYyByZXF1ZXN0Tm9kZUluZGV4ID0gby52YXJpYWJsZSgncmVxdWVzdE5vZGVJbmRleCcpO1xuICBzdGF0aWMgbm90Rm91bmRSZXN1bHQgPSBvLnZhcmlhYmxlKCdub3RGb3VuZFJlc3VsdCcpO1xufVxuXG5leHBvcnQgY2xhc3MgRGV0ZWN0Q2hhbmdlc1ZhcnMge1xuICBzdGF0aWMgdGhyb3dPbkNoYW5nZSA9IG8udmFyaWFibGUoYHRocm93T25DaGFuZ2VgKTtcbiAgc3RhdGljIGNoYW5nZXMgPSBvLnZhcmlhYmxlKGBjaGFuZ2VzYCk7XG4gIHN0YXRpYyBjaGFuZ2VkID0gby52YXJpYWJsZShgY2hhbmdlZGApO1xuICBzdGF0aWMgdmFsVW53cmFwcGVyID0gby52YXJpYWJsZShgdmFsVW53cmFwcGVyYCk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar o = require('../output/output_ast');\r\nvar constants_1 = require('./constants');\r\nvar lifecycle_hooks_1 = require('angular2/src/core/metadata/lifecycle_hooks');\r\nvar STATE_IS_NEVER_CHECKED = o.THIS_EXPR.prop('cdState').identical(constants_1.ChangeDetectorStateEnum.NeverChecked);\r\nvar NOT_THROW_ON_CHANGES = o.not(constants_1.DetectChangesVars.throwOnChange);\r\nfunction bindDirectiveDetectChangesLifecycleCallbacks(directiveAst, directiveInstance, compileElement) {\r\n var view = compileElement.view;\r\n var detectChangesInInputsMethod = view.detectChangesInInputsMethod;\r\n var lifecycleHooks = directiveAst.directive.lifecycleHooks;\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.OnChanges) !== -1 && directiveAst.inputs.length > 0) {\r\n detectChangesInInputsMethod.addStmt(new o.IfStmt(constants_1.DetectChangesVars.changes.notIdentical(o.NULL_EXPR), [directiveInstance.callMethod('ngOnChanges', [constants_1.DetectChangesVars.changes]).toStmt()]));\r\n }\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.OnInit) !== -1) {\r\n detectChangesInInputsMethod.addStmt(new o.IfStmt(STATE_IS_NEVER_CHECKED.and(NOT_THROW_ON_CHANGES), [directiveInstance.callMethod('ngOnInit', []).toStmt()]));\r\n }\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.DoCheck) !== -1) {\r\n detectChangesInInputsMethod.addStmt(new o.IfStmt(NOT_THROW_ON_CHANGES, [directiveInstance.callMethod('ngDoCheck', []).toStmt()]));\r\n }\r\n}\r\nexports.bindDirectiveDetectChangesLifecycleCallbacks = bindDirectiveDetectChangesLifecycleCallbacks;\r\nfunction bindDirectiveAfterContentLifecycleCallbacks(directiveMeta, directiveInstance, compileElement) {\r\n var view = compileElement.view;\r\n var lifecycleHooks = directiveMeta.lifecycleHooks;\r\n var afterContentLifecycleCallbacksMethod = view.afterContentLifecycleCallbacksMethod;\r\n afterContentLifecycleCallbacksMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.AfterContentInit) !== -1) {\r\n afterContentLifecycleCallbacksMethod.addStmt(new o.IfStmt(STATE_IS_NEVER_CHECKED, [directiveInstance.callMethod('ngAfterContentInit', []).toStmt()]));\r\n }\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.AfterContentChecked) !== -1) {\r\n afterContentLifecycleCallbacksMethod.addStmt(directiveInstance.callMethod('ngAfterContentChecked', []).toStmt());\r\n }\r\n}\r\nexports.bindDirectiveAfterContentLifecycleCallbacks = bindDirectiveAfterContentLifecycleCallbacks;\r\nfunction bindDirectiveAfterViewLifecycleCallbacks(directiveMeta, directiveInstance, compileElement) {\r\n var view = compileElement.view;\r\n var lifecycleHooks = directiveMeta.lifecycleHooks;\r\n var afterViewLifecycleCallbacksMethod = view.afterViewLifecycleCallbacksMethod;\r\n afterViewLifecycleCallbacksMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.AfterViewInit) !== -1) {\r\n afterViewLifecycleCallbacksMethod.addStmt(new o.IfStmt(STATE_IS_NEVER_CHECKED, [directiveInstance.callMethod('ngAfterViewInit', []).toStmt()]));\r\n }\r\n if (lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.AfterViewChecked) !== -1) {\r\n afterViewLifecycleCallbacksMethod.addStmt(directiveInstance.callMethod('ngAfterViewChecked', []).toStmt());\r\n }\r\n}\r\nexports.bindDirectiveAfterViewLifecycleCallbacks = bindDirectiveAfterViewLifecycleCallbacks;\r\nfunction bindDirectiveDestroyLifecycleCallbacks(directiveMeta, directiveInstance, compileElement) {\r\n var onDestroyMethod = compileElement.view.destroyMethod;\r\n onDestroyMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);\r\n if (directiveMeta.lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.OnDestroy) !== -1) {\r\n onDestroyMethod.addStmt(directiveInstance.callMethod('ngOnDestroy', []).toStmt());\r\n }\r\n}\r\nexports.bindDirectiveDestroyLifecycleCallbacks = bindDirectiveDestroyLifecycleCallbacks;\r\nfunction bindPipeDestroyLifecycleCallbacks(pipeMeta, pipeInstance, view) {\r\n var onDestroyMethod = view.destroyMethod;\r\n if (pipeMeta.lifecycleHooks.indexOf(lifecycle_hooks_1.LifecycleHooks.OnDestroy) !== -1) {\r\n onDestroyMethod.addStmt(pipeInstance.callMethod('ngOnDestroy', []).toStmt());\r\n }\r\n}\r\nexports.bindPipeDestroyLifecycleCallbacks = bindPipeDestroyLifecycleCallbacks;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlX2JpbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X2NvbXBpbGVyL2xpZmVjeWNsZV9iaW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVksQ0FBQyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDMUMsMEJBQXlELGFBQWEsQ0FBQyxDQUFBO0FBQ3ZFLGdDQUE2Qiw0Q0FBNEMsQ0FBQyxDQUFBO0FBTzFFLElBQUksc0JBQXNCLEdBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxtQ0FBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRixJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsNkJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFbEUsc0RBQ0ksWUFBMEIsRUFBRSxpQkFBK0IsRUFBRSxjQUE4QjtJQUM3RixJQUFJLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQy9CLElBQUksMkJBQTJCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQ25FLElBQUksY0FBYyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0lBQzNELEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZ0NBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlGLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQzVDLDZCQUFpQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUNuRCxDQUFDLGlC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QUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7QUFDSCxDQUFDO0FBTmUseUNBQWlDLG9DQU1oRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbyBmcm9tICcuLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0RldGVjdENoYW5nZXNWYXJzLCBDaGFuZ2VEZXRlY3RvclN0YXRlRW51bX0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtMaWZlY3ljbGVIb29rc30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvbGlmZWN5Y2xlX2hvb2tzJztcblxuaW1wb3J0IHtDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsIENvbXBpbGVQaXBlTWV0YWRhdGF9IGZyb20gJy4uL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0IHtEaXJlY3RpdmVBc3R9IGZyb20gJy4uL3RlbXBsYXRlX2FzdCc7XG5pbXBvcnQge0NvbXBpbGVFbGVtZW50fSBmcm9tICcuL2NvbXBpbGVfZWxlbWVudCc7XG5pbXBvcnQge0NvbXBpbGVWaWV3fSBmcm9tICcuL2NvbXBpbGVfdmlldyc7XG5cbnZhciBTVEFURV9JU19ORVZFUl9DSEVDS0VEID1cbiAgICBvLlRISVNfRVhQUi5wcm9wKCdjZFN0YXRlJykuaWRlbnRpY2FsKENoYW5nZURldGVjdG9yU3RhdGVFbnVtLk5ldmVyQ2hlY2tlZCk7XG52YXIgTk9UX1RIUk9XX09OX0NIQU5HRVMgPSBvLm5vdChEZXRlY3RDaGFuZ2VzVmFycy50aHJvd09uQ2hhbmdlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmREaXJlY3RpdmVEZXRlY3RDaGFuZ2VzTGlmZWN5Y2xlQ2FsbGJhY2tzKFxuICAgIGRpcmVjdGl2ZUFzdDogRGlyZWN0aXZlQXN0LCBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uLCBjb21waWxlRWxlbWVudDogQ29tcGlsZUVsZW1lbnQpIHtcbiAgdmFyIHZpZXcgPSBjb21waWxlRWxlbWVudC52aWV3O1xuICB2YXIgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kID0gdmlldy5kZXRlY3RDaGFuZ2VzSW5JbnB1dHNNZXRob2Q7XG4gIHZhciBsaWZlY3ljbGVIb29rcyA9IGRpcmVjdGl2ZUFzdC5kaXJlY3RpdmUubGlmZWN5Y2xlSG9va3M7XG4gIGlmIChsaWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLk9uQ2hhbmdlcykgIT09IC0xICYmIGRpcmVjdGl2ZUFzdC5pbnB1dHMubGVuZ3RoID4gMCkge1xuICAgIGRldGVjdENoYW5nZXNJbklucHV0c01ldGhvZC5hZGRTdG10KG5ldyBvLklmU3RtdChcbiAgICAgICAgRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlcy5ub3RJZGVudGljYWwoby5OVUxMX0VYUFIpLFxuICAgICAgICBbZGlyZWN0aXZlSW5zdGFuY2UuY2FsbE1ldGhvZCgnbmdPbkNoYW5nZXMnLCBbRGV0ZWN0Q2hhbmdlc1ZhcnMuY2hhbmdlc10pLnRvU3RtdCgpXSkpO1xuICB9XG4gIGlmIChsaWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLk9uSW5pdCkgIT09IC0xKSB7XG4gICAgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kLmFkZFN0bXQoXG4gICAgICAgIG5ldyBvLklmU3RtdChTVEFURV9JU19ORVZFUl9DSEVDS0VELmFuZChOT1RfVEhST1dfT05fQ0hBTkdFUyksXG4gICAgICAgICAgICAgICAgICAgICBbZGlyZWN0aXZlSW5zdGFuY2UuY2FsbE1ldGhvZCgnbmdPbkluaXQnLCBbXSkudG9TdG10KCldKSk7XG4gIH1cbiAgaWYgKGxpZmVjeWNsZUhvb2tzLmluZGV4T2YoTGlmZWN5Y2xlSG9va3MuRG9DaGVjaykgIT09IC0xKSB7XG4gICAgZGV0ZWN0Q2hhbmdlc0luSW5wdXRzTWV0aG9kLmFkZFN0bXQobmV3IG8uSWZTdG10KFxuICAgICAgICBOT1RfVEhST1dfT05fQ0hBTkdFUywgW2RpcmVjdGl2ZUluc3RhbmNlLmNhbGxNZXRob2QoJ25nRG9DaGVjaycsIFtdKS50b1N0bXQoKV0pKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZERpcmVjdGl2ZUFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrcyhkaXJlY3RpdmVNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUVsZW1lbnQ6IENvbXBpbGVFbGVtZW50KSB7XG4gIHZhciB2aWV3ID0gY29tcGlsZUVsZW1lbnQudmlldztcbiAgdmFyIGxpZmVjeWNsZUhvb2tzID0gZGlyZWN0aXZlTWV0YS5saWZlY3ljbGVIb29rcztcbiAgdmFyIGFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrc01ldGhvZCA9IHZpZXcuYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kO1xuICBhZnRlckNvbnRlbnRMaWZlY3ljbGVDYWxsYmFja3NNZXRob2QucmVzZXREZWJ1Z0luZm8oY29tcGlsZUVsZW1lbnQubm9kZUluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUVsZW1lbnQuc291cmNlQXN0KTtcbiAgaWYgKGxpZmVjeWNsZUhvb2tzLmluZGV4T2YoTGlmZWN5Y2xlSG9va3MuQWZ0ZXJDb250ZW50SW5pdCkgIT09IC0xKSB7XG4gICAgYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kLmFkZFN0bXQobmV3IG8uSWZTdG10KFxuICAgICAgICBTVEFURV9JU19ORVZFUl9DSEVDS0VELCBbZGlyZWN0aXZlSW5zdGFuY2UuY2FsbE1ldGhvZCgnbmdBZnRlckNvbnRlbnRJbml0JywgW10pLnRvU3RtdCgpXSkpO1xuICB9XG4gIGlmIChsaWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLkFmdGVyQ29udGVudENoZWNrZWQpICE9PSAtMSkge1xuICAgIGFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrc01ldGhvZC5hZGRTdG10KFxuICAgICAgICBkaXJlY3RpdmVJbnN0YW5jZS5jYWxsTWV0aG9kKCduZ0FmdGVyQ29udGVudENoZWNrZWQnLCBbXSkudG9TdG10KCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kRGlyZWN0aXZlQWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzKGRpcmVjdGl2ZU1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUluc3RhbmNlOiBvLkV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlRWxlbWVudDogQ29tcGlsZUVsZW1lbnQpIHtcbiAgdmFyIHZpZXcgPSBjb21waWxlRWxlbWVudC52aWV3O1xuICB2YXIgbGlmZWN5Y2xlSG9va3MgPSBkaXJlY3RpdmVNZXRhLmxpZmVjeWNsZUhvb2tzO1xuICB2YXIgYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kID0gdmlldy5hZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3NNZXRob2Q7XG4gIGFmdGVyVmlld0xpZmVjeWNsZUNhbGxiYWNrc01ldGhvZC5yZXNldERlYnVnSW5mbyhjb21waWxlRWxlbWVudC5ub2RlSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlRWxlbWVudC5zb3VyY2VBc3QpO1xuICBpZiAobGlmZWN5Y2xlSG9va3MuaW5kZXhPZihMaWZlY3ljbGVIb29rcy5BZnRlclZpZXdJbml0KSAhPT0gLTEpIHtcbiAgICBhZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3NNZXRob2QuYWRkU3RtdChuZXcgby5JZlN0bXQoXG4gICAgICAgIFNUQVRFX0lTX05FVkVSX0NIRUNLRUQsIFtkaXJlY3RpdmVJbnN0YW5jZS5jYWxsTWV0aG9kKCduZ0FmdGVyVmlld0luaXQnLCBbXSkudG9TdG10KCldKSk7XG4gIH1cbiAgaWYgKGxpZmVjeWNsZUhvb2tzLmluZGV4T2YoTGlmZWN5Y2xlSG9va3MuQWZ0ZXJWaWV3Q2hlY2tlZCkgIT09IC0xKSB7XG4gICAgYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzTWV0aG9kLmFkZFN0bXQoXG4gICAgICAgIGRpcmVjdGl2ZUluc3RhbmNlLmNhbGxNZXRob2QoJ25nQWZ0ZXJWaWV3Q2hlY2tlZCcsIFtdKS50b1N0bXQoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmREaXJlY3RpdmVEZXN0cm95TGlmZWN5Y2xlQ2FsbGJhY2tzKGRpcmVjdGl2ZU1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVJbnN0YW5jZTogby5FeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50OiBDb21waWxlRWxlbWVudCkge1xuICB2YXIgb25EZXN0cm95TWV0aG9kID0gY29tcGlsZUVsZW1lbnQudmlldy5kZXN0cm95TWV0aG9kO1xuICBvbkRlc3Ryb3lNZXRob2QucmVzZXREZWJ1Z0luZm8oY29tcGlsZUVsZW1lbnQubm9kZUluZGV4LCBjb21waWxlRWxlbWVudC5zb3VyY2VBc3QpO1xuICBpZiAoZGlyZWN0aXZlTWV0YS5saWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLk9uRGVzdHJveSkgIT09IC0xKSB7XG4gICAgb25EZXN0cm95TWV0aG9kLmFkZFN0bXQoZGlyZWN0aXZlSW5zdGFuY2UuY2FsbE1ldGhvZCgnbmdPbkRlc3Ryb3knLCBbXSkudG9TdG10KCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kUGlwZURlc3Ryb3lMaWZlY3ljbGVDYWxsYmFja3MocGlwZU1ldGE6IENvbXBpbGVQaXBlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVJbnN0YW5jZTogby5FeHByZXNzaW9uLCB2aWV3OiBDb21waWxlVmlldykge1xuICB2YXIgb25EZXN0cm95TWV0aG9kID0gdmlldy5kZXN0cm95TWV0aG9kO1xuICBpZiAocGlwZU1ldGEubGlmZWN5Y2xlSG9va3MuaW5kZXhPZihMaWZlY3ljbGVIb29rcy5PbkRlc3Ryb3kpICE9PSAtMSkge1xuICAgIG9uRGVzdHJveU1ldGhvZC5hZGRTdG10KHBpcGVJbnN0YW5jZS5jYWxsTWV0aG9kKCduZ09uRGVzdHJveScsIFtdKS50b1N0bXQoKSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar template_ast_1 = require('../template_ast');\r\nvar property_binder_1 = require('./property_binder');\r\nvar event_binder_1 = require('./event_binder');\r\nvar lifecycle_binder_1 = require('./lifecycle_binder');\r\nfunction bindView(view, parsedTemplate) {\r\n var visitor = new ViewBinderVisitor(view);\r\n template_ast_1.templateVisitAll(visitor, parsedTemplate);\r\n view.pipes.forEach(function (pipe) { lifecycle_binder_1.bindPipeDestroyLifecycleCallbacks(pipe.meta, pipe.instance, pipe.view); });\r\n}\r\nexports.bindView = bindView;\r\nvar ViewBinderVisitor = (function () {\r\n function ViewBinderVisitor(view) {\r\n this.view = view;\r\n this._nodeIndex = 0;\r\n }\r\n ViewBinderVisitor.prototype.visitBoundText = function (ast, parent) {\r\n var node = this.view.nodes[this._nodeIndex++];\r\n property_binder_1.bindRenderText(ast, node, this.view);\r\n return null;\r\n };\r\n ViewBinderVisitor.prototype.visitText = function (ast, parent) {\r\n this._nodeIndex++;\r\n return null;\r\n };\r\n ViewBinderVisitor.prototype.visitNgContent = function (ast, parent) { return null; };\r\n ViewBinderVisitor.prototype.visitElement = function (ast, parent) {\r\n var compileElement = this.view.nodes[this._nodeIndex++];\r\n var eventListeners = event_binder_1.collectEventListeners(ast.outputs, ast.directives, compileElement);\r\n property_binder_1.bindRenderInputs(ast.inputs, compileElement);\r\n event_binder_1.bindRenderOutputs(eventListeners);\r\n collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {\r\n var directiveInstance = compileElement.directiveInstances[index];\r\n property_binder_1.bindDirectiveInputs(directiveAst, directiveInstance, compileElement);\r\n lifecycle_binder_1.bindDirectiveDetectChangesLifecycleCallbacks(directiveAst, directiveInstance, compileElement);\r\n property_binder_1.bindDirectiveHostProps(directiveAst, directiveInstance, compileElement);\r\n event_binder_1.bindDirectiveOutputs(directiveAst, directiveInstance, eventListeners);\r\n });\r\n template_ast_1.templateVisitAll(this, ast.children, compileElement);\r\n // afterContent and afterView lifecycles need to be called bottom up\r\n // so that children are notified before parents\r\n collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {\r\n var directiveInstance = compileElement.directiveInstances[index];\r\n lifecycle_binder_1.bindDirectiveAfterContentLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);\r\n lifecycle_binder_1.bindDirectiveAfterViewLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);\r\n lifecycle_binder_1.bindDirectiveDestroyLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);\r\n });\r\n return null;\r\n };\r\n ViewBinderVisitor.prototype.visitEmbeddedTemplate = function (ast, parent) {\r\n var compileElement = this.view.nodes[this._nodeIndex++];\r\n var eventListeners = event_binder_1.collectEventListeners(ast.outputs, ast.directives, compileElement);\r\n collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {\r\n var directiveInstance = compileElement.directiveInstances[index];\r\n property_binder_1.bindDirectiveInputs(directiveAst, directiveInstance, compileElement);\r\n lifecycle_binder_1.bindDirectiveDetectChangesLifecycleCallbacks(directiveAst, directiveInstance, compileElement);\r\n event_binder_1.bindDirectiveOutputs(directiveAst, directiveInstance, eventListeners);\r\n lifecycle_binder_1.bindDirectiveAfterContentLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);\r\n lifecycle_binder_1.bindDirectiveAfterViewLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);\r\n lifecycle_binder_1.bindDirectiveDestroyLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);\r\n });\r\n bindView(compileElement.embeddedView, ast.children);\r\n return null;\r\n };\r\n ViewBinderVisitor.prototype.visitAttr = function (ast, ctx) { return null; };\r\n ViewBinderVisitor.prototype.visitDirective = function (ast, ctx) { return null; };\r\n ViewBinderVisitor.prototype.visitEvent = function (ast, eventTargetAndNames) {\r\n return null;\r\n };\r\n ViewBinderVisitor.prototype.visitReference = function (ast, ctx) { return null; };\r\n ViewBinderVisitor.prototype.visitVariable = function (ast, ctx) { return null; };\r\n ViewBinderVisitor.prototype.visitDirectiveProperty = function (ast, context) { return null; };\r\n ViewBinderVisitor.prototype.visitElementProperty = function (ast, context) { return null; };\r\n return ViewBinderVisitor;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19iaW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvdmlld19jb21waWxlci92aWV3X2JpbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkJBRU8sZ0NBQWdDLENBQUMsQ0FBQTtBQUN4Qyw2QkFrQk8saUJBQWlCLENBQUMsQ0FBQTtBQUN6QixnQ0FLTyxtQkFBbUIsQ0FBQyxDQUFBO0FBQzNCLDZCQUE2RSxnQkFBZ0IsQ0FBQyxDQUFBO0FBQzlGLGlDQU1PLG9CQUFvQixDQUFDLENBQUE7QUFJNUIsa0JBQXlCLElBQWlCLEVBQUUsY0FBNkI7SUFDdkUsSUFBSSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQywrQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2QsVUFBQyxJQUFJLElBQU8sb0RBQWlDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdGLENBQUM7QUFMZSxnQkFBUSxXQUt2QixDQUFBO0FBRUQ7SUFHRSwyQkFBbUIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUY1QixlQUFVLEdBQVcsQ0FBQyxDQUFDO0lBRVEsQ0FBQztJQUV4QywwQ0FBYyxHQUFkLFVBQWUsR0FBaUIsRUFBRSxNQUFzQjtRQUN0RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM5QyxnQ0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUks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LHdCQUFDO0FBQUQsQ0FBQyxBQTFFRCxJQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIExpc3RXcmFwcGVyLFxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgVGVtcGxhdGVBc3QsXG4gIFRlbXBsYXRlQXN0VmlzaXRvcixcbiAgTmdDb250ZW50QXN0LFxuICBFbWJlZGRlZFRlbXBsYXRlQXN0LFxuICBFbGVtZW50QXN0LFxuICBSZWZlcmVuY2VBc3QsXG4gIFZhcmlhYmxlQXN0LFxuICBCb3VuZEV2ZW50QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQXR0ckFzdCxcbiAgQm91bmRUZXh0QXN0LFxuICBUZXh0QXN0LFxuICBEaXJlY3RpdmVBc3QsXG4gIEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsXG4gIHRlbXBsYXRlVmlzaXRBbGwsXG4gIFByb3BlcnR5QmluZGluZ1R5cGUsXG4gIFByb3ZpZGVyQXN0XG59IGZyb20gJy4uL3RlbXBsYXRlX2FzdCc7XG5pbXBvcnQge1xuICBiaW5kUmVuZGVyVGV4dCxcbiAgYmluZFJlbmRlcklucHV0cyxcbiAgYmluZERpcmVjdGl2ZUlucHV0cyxcbiAgYmluZERpcmVjdGl2ZUhvc3RQcm9wc1xufSBmcm9tICcuL3Byb3BlcnR5X2JpbmRlcic7XG5pbXBvcnQge2JpbmRSZW5kZXJPdXRwdXRzLCBjb2xsZWN0RXZlbnRMaXN0ZW5lcnMsIGJpbmREaXJlY3RpdmVPdXRwdXRzfSBmcm9tICcuL2V2ZW50X2JpbmRlcic7XG5pbXBvcnQge1xuICBiaW5kRGlyZWN0aXZlQWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzLFxuICBiaW5kRGlyZWN0aXZlQWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzLFxuICBiaW5kRGlyZWN0aXZlRGVzdHJveUxpZmVjeWNsZUNhbGxiYWNrcyxcbiAgYmluZFBpcGVEZXN0cm95TGlmZWN5Y2xlQ2FsbGJhY2tzLFxuICBiaW5kRGlyZWN0aXZlRGV0ZWN0Q2hhbmdlc0xpZmVjeWNsZUNhbGxiYWNrc1xufSBmcm9tICcuL2xpZmVjeWNsZV9iaW5kZXInO1xuaW1wb3J0IHtDb21waWxlVmlld30gZnJvbSAnLi9jb21waWxlX3ZpZXcnO1xuaW1wb3J0IHtDb21waWxlRWxlbWVudCwgQ29tcGlsZU5vZGV9IGZyb20gJy4vY29tcGlsZV9lbGVtZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRWaWV3KHZpZXc6IENvbXBpbGVWaWV3LCBwYXJzZWRUZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSk6IHZvaWQge1xuICB2YXIgdmlzaXRvciA9IG5ldyBWaWV3QmluZGVyVmlzaXRvcih2aWV3KTtcbiAgdGVtcGxhdGVWaXNpdEFsbCh2aXNpdG9yLCBwYXJzZWRUZW1wbGF0ZSk7XG4gIHZpZXcucGlwZXMuZm9yRWFjaChcbiAgICAgIChwaXBlKSA9PiB7IGJpbmRQaXBlRGVzdHJveUxpZmVjeWNsZUNhbGxiYWNrcyhwaXBlLm1ldGEsIHBpcGUuaW5zdGFuY2UsIHBpcGUudmlldyk7IH0pO1xufVxuXG5jbGFzcyBWaWV3QmluZGVyVmlzaXRvciBpbXBsZW1lbnRzIFRlbXBsYXRlQXN0VmlzaXRvciB7XG4gIHByaXZhdGUgX25vZGVJbmRleDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlldzogQ29tcGlsZVZpZXcpIHt9XG5cbiAgdmlzaXRCb3VuZFRleHQoYXN0OiBCb3VuZFRleHRBc3QsIHBhcmVudDogQ29tcGlsZUVsZW1lbnQpOiBhbnkge1xuICAgIHZhciBub2RlID0gdGhpcy52aWV3Lm5vZGVzW3RoaXMuX25vZGVJbmRleCsrXTtcbiAgICBiaW5kUmVuZGVyVGV4dChhc3QsIG5vZGUsIHRoaXMudmlldyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRUZXh0KGFzdDogVGV4dEFzdCwgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IGFueSB7XG4gICAgdGhpcy5fbm9kZUluZGV4Kys7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdE5nQ29udGVudChhc3Q6IE5nQ29udGVudEFzdCwgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IGFueSB7IHJldHVybiBudWxsOyB9XG5cbiAgdmlzaXRFbGVtZW50KGFzdDogRWxlbWVudEFzdCwgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IGFueSB7XG4gICAgdmFyIGNvbXBpbGVFbGVtZW50ID0gPENvbXBpbGVFbGVtZW50PnRoaXMudmlldy5ub2Rlc1t0aGlzLl9ub2RlSW5kZXgrK107XG4gICAgdmFyIGV2ZW50TGlzdGVuZXJzID0gY29sbGVjdEV2ZW50TGlzdGVuZXJzKGFzdC5vdXRwdXRzLCBhc3QuZGlyZWN0aXZlcywgY29tcGlsZUVsZW1lbnQpO1xuICAgIGJpbmRSZW5kZXJJbnB1dHMoYXN0LmlucHV0cywgY29tcGlsZUVsZW1lbnQpO1xuICAgIGJpbmRSZW5kZXJPdXRwdXRzKGV2ZW50TGlzdGVuZXJzKTtcbiAgICBMaXN0V3JhcHBlci5mb3JFYWNoV2l0aEluZGV4KGFzdC5kaXJlY3RpdmVzLCAoZGlyZWN0aXZlQXN0LCBpbmRleCkgPT4ge1xuICAgICAgdmFyIGRpcmVjdGl2ZUluc3RhbmNlID0gY29tcGlsZUVsZW1lbnQuZGlyZWN0aXZlSW5zdGFuY2VzW2luZGV4XTtcbiAgICAgIGJpbmREaXJlY3RpdmVJbnB1dHMoZGlyZWN0aXZlQXN0LCBkaXJlY3RpdmVJbnN0YW5jZSwgY29tcGlsZUVsZW1lbnQpO1xuICAgICAgYmluZERpcmVjdGl2ZURldGVjdENoYW5nZXNMaWZlY3ljbGVDYWxsYmFja3MoZGlyZWN0aXZlQXN0LCBkaXJlY3RpdmVJbnN0YW5jZSwgY29tcGlsZUVsZW1lbnQpO1xuXG4gICAgICBiaW5kRGlyZWN0aXZlSG9zdFByb3BzKGRpcmVjdGl2ZUFzdCwgZGlyZWN0aXZlSW5zdGFuY2UsIGNvbXBpbGVFbGVtZW50KTtcbiAgICAgIGJpbmREaXJlY3RpdmVPdXRwdXRzKGRpcmVjdGl2ZUFzdCwgZGlyZWN0aXZlSW5zdGFuY2UsIGV2ZW50TGlzdGVuZXJzKTtcbiAgICB9KTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5jaGlsZHJlbiwgY29tcGlsZUVsZW1lbnQpO1xuICAgIC8vIGFmdGVyQ29udGVudCBhbmQgYWZ0ZXJWaWV3IGxpZmVjeWNsZXMgbmVlZCB0byBiZSBjYWxsZWQgYm90dG9tIHVwXG4gICAgLy8gc28gdGhhdCBjaGlsZHJlbiBhcmUgbm90aWZpZWQgYmVmb3JlIHBhcmVudHNcbiAgICBMaXN0V3JhcHBlci5mb3JFYWNoV2l0aEluZGV4KGFzdC5kaXJlY3RpdmVzLCAoZGlyZWN0aXZlQXN0LCBpbmRleCkgPT4ge1xuICAgICAgdmFyIGRpcmVjdGl2ZUluc3RhbmNlID0gY29tcGlsZUVsZW1lbnQuZGlyZWN0aXZlSW5zdGFuY2VzW2luZGV4XTtcbiAgICAgIGJpbmREaXJlY3RpdmVBZnRlckNvbnRlbnRMaWZlY3ljbGVDYWxsYmFja3MoZGlyZWN0aXZlQXN0LmRpcmVjdGl2ZSwgZGlyZWN0aXZlSW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50KTtcbiAgICAgIGJpbmREaXJlY3RpdmVBZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3MoZGlyZWN0aXZlQXN0LmRpcmVjdGl2ZSwgZGlyZWN0aXZlSW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50KTtcbiAgICAgIGJpbmREaXJlY3RpdmVEZXN0cm95TGlmZWN5Y2xlQ2FsbGJhY2tzKGRpcmVjdGl2ZUFzdC5kaXJlY3RpdmUsIGRpcmVjdGl2ZUluc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUVsZW1lbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgcGFyZW50OiBDb21waWxlRWxlbWVudCk6IGFueSB7XG4gICAgdmFyIGNvbXBpbGVFbGVtZW50ID0gPENvbXBpbGVFbGVtZW50PnRoaXMudmlldy5ub2Rlc1t0aGlzLl9ub2RlSW5kZXgrK107XG4gICAgdmFyIGV2ZW50TGlzdGVuZXJzID0gY29sbGVjdEV2ZW50TGlzdGVuZXJzKGFzdC5vdXRwdXRzLCBhc3QuZGlyZWN0aXZlcywgY29tcGlsZUVsZW1lbnQpO1xuICAgIExpc3RXcmFwcGVyLmZvckVhY2hXaXRoSW5kZXgoYXN0LmRpcmVjdGl2ZXMsIChkaXJlY3RpdmVBc3QsIGluZGV4KSA9PiB7XG4gICAgICB2YXIgZGlyZWN0aXZlSW5zdGFuY2UgPSBjb21waWxlRWxlbWVudC5kaXJlY3RpdmVJbnN0YW5jZXNbaW5kZXhdO1xuICAgICAgYmluZERpcmVjdGl2ZUlucHV0cyhkaXJlY3RpdmVBc3QsIGRpcmVjdGl2ZUluc3RhbmNlLCBjb21waWxlRWxlbWVudCk7XG4gICAgICBiaW5kRGlyZWN0aXZlRGV0ZWN0Q2hhbmdlc0xpZmVjeWNsZUNhbGxiYWNrcyhkaXJlY3RpdmVBc3QsIGRpcmVjdGl2ZUluc3RhbmNlLCBjb21waWxlRWxlbWVudCk7XG4gICAgICBiaW5kRGlyZWN0aXZlT3V0cHV0cyhkaXJlY3RpdmVBc3QsIGRpcmVjdGl2ZUluc3RhbmNlLCBldmVudExpc3RlbmVycyk7XG4gICAgICBiaW5kRGlyZWN0aXZlQWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzKGRpcmVjdGl2ZUFzdC5kaXJlY3RpdmUsIGRpcmVjdGl2ZUluc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlRWxlbWVudCk7XG4gICAgICBiaW5kRGlyZWN0aXZlQWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzKGRpcmVjdGl2ZUFzdC5kaXJlY3RpdmUsIGRpcmVjdGl2ZUluc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlRWxlbWVudCk7XG4gICAgICBiaW5kRGlyZWN0aXZlRGVzdHJveUxpZmVjeWNsZUNhbGxiYWNrcyhkaXJlY3RpdmVBc3QuZGlyZWN0aXZlLCBkaXJlY3RpdmVJbnN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVFbGVtZW50KTtcbiAgICB9KTtcbiAgICBiaW5kVmlldyhjb21waWxlRWxlbWVudC5lbWJlZGRlZFZpZXcsIGFzdC5jaGlsZHJlbik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdEF0dHIoYXN0OiBBdHRyQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RGlyZWN0aXZlKGFzdDogRGlyZWN0aXZlQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RXZlbnQoYXN0OiBCb3VuZEV2ZW50QXN0LCBldmVudFRhcmdldEFuZE5hbWVzOiBNYXA8c3RyaW5nLCBCb3VuZEV2ZW50QXN0Pik6IGFueSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdFJlZmVyZW5jZShhc3Q6IFJlZmVyZW5jZUFzdCwgY3R4OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdFZhcmlhYmxlKGFzdDogVmFyaWFibGVBc3QsIGN0eDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXREaXJlY3RpdmVQcm9wZXJ0eShhc3Q6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RWxlbWVudFByb3BlcnR5KGFzdDogQm91bmRFbGVtZW50UHJvcGVydHlBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar compile_element_1 = require('./compile_element');\r\nvar compile_view_1 = require('./compile_view');\r\nvar view_builder_1 = require('./view_builder');\r\nvar view_binder_1 = require('./view_binder');\r\nvar config_1 = require('../config');\r\nvar ViewCompileResult = (function () {\r\n function ViewCompileResult(statements, viewFactoryVar, dependencies) {\r\n this.statements = statements;\r\n this.viewFactoryVar = viewFactoryVar;\r\n this.dependencies = dependencies;\r\n }\r\n return ViewCompileResult;\r\n}());\r\nexports.ViewCompileResult = ViewCompileResult;\r\nvar ViewCompiler = (function () {\r\n function ViewCompiler(_genConfig) {\r\n this._genConfig = _genConfig;\r\n }\r\n ViewCompiler.prototype.compileComponent = function (component, template, styles, pipes) {\r\n var statements = [];\r\n var dependencies = [];\r\n var view = new compile_view_1.CompileView(component, this._genConfig, pipes, styles, 0, compile_element_1.CompileElement.createNull(), []);\r\n view_builder_1.buildView(view, template, dependencies);\r\n // Need to separate binding from creation to be able to refer to\r\n // variables that have been declared after usage.\r\n view_binder_1.bindView(view, template);\r\n view_builder_1.finishView(view, statements);\r\n return new ViewCompileResult(statements, view.viewFactory.name, dependencies);\r\n };\r\n ViewCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [config_1.CompilerConfig])\r\n ], ViewCompiler);\r\n return ViewCompiler;\r\n}());\r\nexports.ViewCompiler = ViewCompiler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLG1CQUF5QixzQkFBc0IsQ0FBQyxDQUFBO0FBR2hELGdDQUE2QixtQkFBbUIsQ0FBQyxDQUFBO0FBQ2pELDZCQUEwQixnQkFBZ0IsQ0FBQyxDQUFBO0FBQzNDLDZCQUEyRCxnQkFBZ0IsQ0FBQyxDQUFBO0FBQzVFLDRCQUF1QixlQUFlLENBQUMsQ0FBQTtBQUt2Qyx1QkFBNkIsV0FBVyxDQUFDLENBQUE7QUFFekM7SUFDRSwyQkFBbUIsVUFBeUIsRUFBUyxjQUFzQixFQUN4RCxZQUFxQztRQURyQyxlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDeEQsaUJBQVksR0FBWixZQUFZLENBQXlCO0lBQUcsQ0FBQztJQUM5RCx3QkFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFkseUJBQWlCLG9CQUc3QixDQUFBO0FBR0Q7SUFDRSxzQkFBb0IsVUFBMEI7UUFBMUIsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7SUFBRyxDQUFDO0lBRWxELHVDQUFnQixHQUFoQixVQUFpQixTQUFtQyxFQUFFLFFBQXVCLEVBQzVELE1BQW9CLEVBQUUsS0FBNEI7UUFDakUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksR0FBRyxJQUFJLDBCQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQzVDLGdDQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUQsd0JBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLGdFQUFnRTtRQUNoRSxpREFBaUQ7UUFDakQsc0JBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekIseUJBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFN0IsTUFBTSxDQUFDLElBQUksaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFqQkg7UUFBQyxlQUFVLEVBQUU7O29CQUFBO0lBa0JiLG1CQUFDO0FBQUQsQ0FBQyxBQWpCRCxJQWlCQztBQWpCWSxvQkFBWSxlQWlCeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7Q29tcGlsZUVsZW1lbnR9IGZyb20gJy4vY29tcGlsZV9lbGVtZW50JztcbmltcG9ydCB7Q29tcGlsZVZpZXd9IGZyb20gJy4vY29tcGlsZV92aWV3JztcbmltcG9ydCB7YnVpbGRWaWV3LCBmaW5pc2hWaWV3LCBWaWV3Q29tcGlsZURlcGVuZGVuY3l9IGZyb20gJy4vdmlld19idWlsZGVyJztcbmltcG9ydCB7YmluZFZpZXd9IGZyb20gJy4vdmlld19iaW5kZXInO1xuXG5pbXBvcnQge0NvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgQ29tcGlsZVBpcGVNZXRhZGF0YX0gZnJvbSAnLi4vY29tcGlsZV9tZXRhZGF0YSc7XG5cbmltcG9ydCB7VGVtcGxhdGVBc3R9IGZyb20gJy4uL3RlbXBsYXRlX2FzdCc7XG5pbXBvcnQge0NvbXBpbGVyQ29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuXG5leHBvcnQgY2xhc3MgVmlld0NvbXBpbGVSZXN1bHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSwgcHVibGljIHZpZXdGYWN0b3J5VmFyOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBkZXBlbmRlbmNpZXM6IFZpZXdDb21waWxlRGVwZW5kZW5jeVtdKSB7fVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmlld0NvbXBpbGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZ2VuQ29uZmlnOiBDb21waWxlckNvbmZpZykge31cblxuICBjb21waWxlQ29tcG9uZW50KGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCB0ZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSxcbiAgICAgICAgICAgICAgICAgICBzdHlsZXM6IG8uRXhwcmVzc2lvbiwgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSk6IFZpZXdDb21waWxlUmVzdWx0IHtcbiAgICB2YXIgc3RhdGVtZW50cyA9IFtdO1xuICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTtcbiAgICB2YXIgdmlldyA9IG5ldyBDb21waWxlVmlldyhjb21wb25lbnQsIHRoaXMuX2dlbkNvbmZpZywgcGlwZXMsIHN0eWxlcywgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxlRWxlbWVudC5jcmVhdGVOdWxsKCksIFtdKTtcbiAgICBidWlsZFZpZXcodmlldywgdGVtcGxhdGUsIGRlcGVuZGVuY2llcyk7XG4gICAgLy8gTmVlZCB0byBzZXBhcmF0ZSBiaW5kaW5nIGZyb20gY3JlYXRpb24gdG8gYmUgYWJsZSB0byByZWZlciB0b1xuICAgIC8vIHZhcmlhYmxlcyB0aGF0IGhhdmUgYmVlbiBkZWNsYXJlZCBhZnRlciB1c2FnZS5cbiAgICBiaW5kVmlldyh2aWV3LCB0ZW1wbGF0ZSk7XG4gICAgZmluaXNoVmlldyh2aWV3LCBzdGF0ZW1lbnRzKTtcblxuICAgIHJldHVybiBuZXcgVmlld0NvbXBpbGVSZXN1bHQoc3RhdGVtZW50cywgdmlldy52aWV3RmFjdG9yeS5uYW1lLCBkZXBlbmRlbmNpZXMpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar template_ast_1 = require('./template_ast');\r\nvar compile_metadata_1 = require('./compile_metadata');\r\nvar identifiers_1 = require('./identifiers');\r\nvar parse_util_1 = require('./parse_util');\r\nvar ProviderError = (function (_super) {\r\n __extends(ProviderError, _super);\r\n function ProviderError(message, span) {\r\n _super.call(this, span, message);\r\n }\r\n return ProviderError;\r\n}(parse_util_1.ParseError));\r\nexports.ProviderError = ProviderError;\r\nvar ProviderViewContext = (function () {\r\n function ProviderViewContext(component, sourceSpan) {\r\n var _this = this;\r\n this.component = component;\r\n this.sourceSpan = sourceSpan;\r\n this.errors = [];\r\n this.viewQueries = _getViewQueries(component);\r\n this.viewProviders = new compile_metadata_1.CompileTokenMap();\r\n _normalizeProviders(component.viewProviders, sourceSpan, this.errors)\r\n .forEach(function (provider) {\r\n if (lang_1.isBlank(_this.viewProviders.get(provider.token))) {\r\n _this.viewProviders.add(provider.token, true);\r\n }\r\n });\r\n }\r\n return ProviderViewContext;\r\n}());\r\nexports.ProviderViewContext = ProviderViewContext;\r\nvar ProviderElementContext = (function () {\r\n function ProviderElementContext(_viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, _sourceSpan) {\r\n var _this = this;\r\n this._viewContext = _viewContext;\r\n this._parent = _parent;\r\n this._isViewRoot = _isViewRoot;\r\n this._directiveAsts = _directiveAsts;\r\n this._sourceSpan = _sourceSpan;\r\n this._transformedProviders = new compile_metadata_1.CompileTokenMap();\r\n this._seenProviders = new compile_metadata_1.CompileTokenMap();\r\n this._hasViewContainer = false;\r\n this._attrs = {};\r\n attrs.forEach(function (attrAst) { return _this._attrs[attrAst.name] = attrAst.value; });\r\n var directivesMeta = _directiveAsts.map(function (directiveAst) { return directiveAst.directive; });\r\n this._allProviders =\r\n _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, _viewContext.errors);\r\n this._contentQueries = _getContentQueries(directivesMeta);\r\n var queriedTokens = new compile_metadata_1.CompileTokenMap();\r\n this._allProviders.values().forEach(function (provider) { _this._addQueryReadsTo(provider.token, queriedTokens); });\r\n refs.forEach(function (refAst) {\r\n _this._addQueryReadsTo(new compile_metadata_1.CompileTokenMetadata({ value: refAst.name }), queriedTokens);\r\n });\r\n if (lang_1.isPresent(queriedTokens.get(identifiers_1.identifierToken(identifiers_1.Identifiers.ViewContainerRef)))) {\r\n this._hasViewContainer = true;\r\n }\r\n // create the providers that we know are eager first\r\n this._allProviders.values().forEach(function (provider) {\r\n var eager = provider.eager || lang_1.isPresent(queriedTokens.get(provider.token));\r\n if (eager) {\r\n _this._getOrCreateLocalProvider(provider.providerType, provider.token, true);\r\n }\r\n });\r\n }\r\n ProviderElementContext.prototype.afterElement = function () {\r\n var _this = this;\r\n // collect lazy providers\r\n this._allProviders.values().forEach(function (provider) {\r\n _this._getOrCreateLocalProvider(provider.providerType, provider.token, false);\r\n });\r\n };\r\n Object.defineProperty(ProviderElementContext.prototype, \"transformProviders\", {\r\n get: function () { return this._transformedProviders.values(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProviderElementContext.prototype, \"transformedDirectiveAsts\", {\r\n get: function () {\r\n var sortedProviderTypes = this._transformedProviders.values().map(function (provider) { return provider.token.identifier; });\r\n var sortedDirectives = collection_1.ListWrapper.clone(this._directiveAsts);\r\n collection_1.ListWrapper.sort(sortedDirectives, function (dir1, dir2) { return sortedProviderTypes.indexOf(dir1.directive.type) -\r\n sortedProviderTypes.indexOf(dir2.directive.type); });\r\n return sortedDirectives;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProviderElementContext.prototype, \"transformedHasViewContainer\", {\r\n get: function () { return this._hasViewContainer; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ProviderElementContext.prototype._addQueryReadsTo = function (token, queryReadTokens) {\r\n this._getQueriesFor(token).forEach(function (query) {\r\n var queryReadToken = lang_1.isPresent(query.read) ? query.read : token;\r\n if (lang_1.isBlank(queryReadTokens.get(queryReadToken))) {\r\n queryReadTokens.add(queryReadToken, true);\r\n }\r\n });\r\n };\r\n ProviderElementContext.prototype._getQueriesFor = function (token) {\r\n var result = [];\r\n var currentEl = this;\r\n var distance = 0;\r\n var queries;\r\n while (currentEl !== null) {\r\n queries = currentEl._contentQueries.get(token);\r\n if (lang_1.isPresent(queries)) {\r\n collection_1.ListWrapper.addAll(result, queries.filter(function (query) { return query.descendants || distance <= 1; }));\r\n }\r\n if (currentEl._directiveAsts.length > 0) {\r\n distance++;\r\n }\r\n currentEl = currentEl._parent;\r\n }\r\n queries = this._viewContext.viewQueries.get(token);\r\n if (lang_1.isPresent(queries)) {\r\n collection_1.ListWrapper.addAll(result, queries);\r\n }\r\n return result;\r\n };\r\n ProviderElementContext.prototype._getOrCreateLocalProvider = function (requestingProviderType, token, eager) {\r\n var _this = this;\r\n var resolvedProvider = this._allProviders.get(token);\r\n if (lang_1.isBlank(resolvedProvider) ||\r\n ((requestingProviderType === template_ast_1.ProviderAstType.Directive ||\r\n requestingProviderType === template_ast_1.ProviderAstType.PublicService) &&\r\n resolvedProvider.providerType === template_ast_1.ProviderAstType.PrivateService) ||\r\n ((requestingProviderType === template_ast_1.ProviderAstType.PrivateService ||\r\n requestingProviderType === template_ast_1.ProviderAstType.PublicService) &&\r\n resolvedProvider.providerType === template_ast_1.ProviderAstType.Builtin)) {\r\n return null;\r\n }\r\n var transformedProviderAst = this._transformedProviders.get(token);\r\n if (lang_1.isPresent(transformedProviderAst)) {\r\n return transformedProviderAst;\r\n }\r\n if (lang_1.isPresent(this._seenProviders.get(token))) {\r\n this._viewContext.errors.push(new ProviderError(\"Cannot instantiate cyclic dependency! \" + token.name, this._sourceSpan));\r\n return null;\r\n }\r\n this._seenProviders.add(token, true);\r\n var transformedProviders = resolvedProvider.providers.map(function (provider) {\r\n var transformedUseValue = provider.useValue;\r\n var transformedUseExisting = provider.useExisting;\r\n var transformedDeps;\r\n if (lang_1.isPresent(provider.useExisting)) {\r\n var existingDiDep = _this._getDependency(resolvedProvider.providerType, new compile_metadata_1.CompileDiDependencyMetadata({ token: provider.useExisting }), eager);\r\n if (lang_1.isPresent(existingDiDep.token)) {\r\n transformedUseExisting = existingDiDep.token;\r\n }\r\n else {\r\n transformedUseExisting = null;\r\n transformedUseValue = existingDiDep.value;\r\n }\r\n }\r\n else if (lang_1.isPresent(provider.useFactory)) {\r\n var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useFactory.diDeps;\r\n transformedDeps =\r\n deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });\r\n }\r\n else if (lang_1.isPresent(provider.useClass)) {\r\n var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useClass.diDeps;\r\n transformedDeps =\r\n deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });\r\n }\r\n return _transformProvider(provider, {\r\n useExisting: transformedUseExisting,\r\n useValue: transformedUseValue,\r\n deps: transformedDeps\r\n });\r\n });\r\n transformedProviderAst =\r\n _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\r\n this._transformedProviders.add(token, transformedProviderAst);\r\n return transformedProviderAst;\r\n };\r\n ProviderElementContext.prototype._getLocalDependency = function (requestingProviderType, dep, eager) {\r\n if (eager === void 0) { eager = null; }\r\n if (dep.isAttribute) {\r\n var attrValue = this._attrs[dep.token.value];\r\n return new compile_metadata_1.CompileDiDependencyMetadata({ isValue: true, value: lang_1.normalizeBlank(attrValue) });\r\n }\r\n if (lang_1.isPresent(dep.query) || lang_1.isPresent(dep.viewQuery)) {\r\n return dep;\r\n }\r\n if (lang_1.isPresent(dep.token)) {\r\n // access builtints\r\n if ((requestingProviderType === template_ast_1.ProviderAstType.Directive ||\r\n requestingProviderType === template_ast_1.ProviderAstType.Component)) {\r\n if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.Renderer)) ||\r\n dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ElementRef)) ||\r\n dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ChangeDetectorRef)) ||\r\n dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.TemplateRef))) {\r\n return dep;\r\n }\r\n if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ViewContainerRef))) {\r\n this._hasViewContainer = true;\r\n }\r\n }\r\n // access the injector\r\n if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.Injector))) {\r\n return dep;\r\n }\r\n // access providers\r\n if (lang_1.isPresent(this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager))) {\r\n return dep;\r\n }\r\n }\r\n return null;\r\n };\r\n ProviderElementContext.prototype._getDependency = function (requestingProviderType, dep, eager) {\r\n if (eager === void 0) { eager = null; }\r\n var currElement = this;\r\n var currEager = eager;\r\n var result = null;\r\n if (!dep.isSkipSelf) {\r\n result = this._getLocalDependency(requestingProviderType, dep, eager);\r\n }\r\n if (dep.isSelf) {\r\n if (lang_1.isBlank(result) && dep.isOptional) {\r\n result = new compile_metadata_1.CompileDiDependencyMetadata({ isValue: true, value: null });\r\n }\r\n }\r\n else {\r\n // check parent elements\r\n while (lang_1.isBlank(result) && lang_1.isPresent(currElement._parent)) {\r\n var prevElement = currElement;\r\n currElement = currElement._parent;\r\n if (prevElement._isViewRoot) {\r\n currEager = false;\r\n }\r\n result = currElement._getLocalDependency(template_ast_1.ProviderAstType.PublicService, dep, currEager);\r\n }\r\n // check @Host restriction\r\n if (lang_1.isBlank(result)) {\r\n if (!dep.isHost || this._viewContext.component.type.isHost ||\r\n identifiers_1.identifierToken(this._viewContext.component.type).equalsTo(dep.token) ||\r\n lang_1.isPresent(this._viewContext.viewProviders.get(dep.token))) {\r\n result = dep;\r\n }\r\n else {\r\n result = dep.isOptional ?\r\n result = new compile_metadata_1.CompileDiDependencyMetadata({ isValue: true, value: null }) :\r\n null;\r\n }\r\n }\r\n }\r\n if (lang_1.isBlank(result)) {\r\n this._viewContext.errors.push(new ProviderError(\"No provider for \" + dep.token.name, this._sourceSpan));\r\n }\r\n return result;\r\n };\r\n return ProviderElementContext;\r\n}());\r\nexports.ProviderElementContext = ProviderElementContext;\r\nfunction _transformProvider(provider, _a) {\r\n var useExisting = _a.useExisting, useValue = _a.useValue, deps = _a.deps;\r\n return new compile_metadata_1.CompileProviderMetadata({\r\n token: provider.token,\r\n useClass: provider.useClass,\r\n useExisting: useExisting,\r\n useFactory: provider.useFactory,\r\n useValue: useValue,\r\n deps: deps,\r\n multi: provider.multi\r\n });\r\n}\r\nfunction _transformProviderAst(provider, _a) {\r\n var eager = _a.eager, providers = _a.providers;\r\n return new template_ast_1.ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.sourceSpan);\r\n}\r\nfunction _normalizeProviders(providers, sourceSpan, targetErrors, targetProviders) {\r\n if (targetProviders === void 0) { targetProviders = null; }\r\n if (lang_1.isBlank(targetProviders)) {\r\n targetProviders = [];\r\n }\r\n if (lang_1.isPresent(providers)) {\r\n providers.forEach(function (provider) {\r\n if (lang_1.isArray(provider)) {\r\n _normalizeProviders(provider, sourceSpan, targetErrors, targetProviders);\r\n }\r\n else {\r\n var normalizeProvider;\r\n if (provider instanceof compile_metadata_1.CompileProviderMetadata) {\r\n normalizeProvider = provider;\r\n }\r\n else if (provider instanceof compile_metadata_1.CompileTypeMetadata) {\r\n normalizeProvider = new compile_metadata_1.CompileProviderMetadata({ token: new compile_metadata_1.CompileTokenMetadata({ identifier: provider }), useClass: provider });\r\n }\r\n else {\r\n targetErrors.push(new ProviderError(\"Unknown provider type \" + provider, sourceSpan));\r\n }\r\n if (lang_1.isPresent(normalizeProvider)) {\r\n targetProviders.push(normalizeProvider);\r\n }\r\n }\r\n });\r\n }\r\n return targetProviders;\r\n}\r\nfunction _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) {\r\n var providersByToken = new compile_metadata_1.CompileTokenMap();\r\n directives.forEach(function (directive) {\r\n var dirProvider = new compile_metadata_1.CompileProviderMetadata({ token: new compile_metadata_1.CompileTokenMetadata({ identifier: directive.type }), useClass: directive.type });\r\n _resolveProviders([dirProvider], directive.isComponent ? template_ast_1.ProviderAstType.Component : template_ast_1.ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken);\r\n });\r\n // Note: directives need to be able to overwrite providers of a component!\r\n var directivesWithComponentFirst = directives.filter(function (dir) { return dir.isComponent; }).concat(directives.filter(function (dir) { return !dir.isComponent; }));\r\n directivesWithComponentFirst.forEach(function (directive) {\r\n _resolveProviders(_normalizeProviders(directive.providers, sourceSpan, targetErrors), template_ast_1.ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken);\r\n _resolveProviders(_normalizeProviders(directive.viewProviders, sourceSpan, targetErrors), template_ast_1.ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken);\r\n });\r\n return providersByToken;\r\n}\r\nfunction _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken) {\r\n providers.forEach(function (provider) {\r\n var resolvedProvider = targetProvidersByToken.get(provider.token);\r\n if (lang_1.isPresent(resolvedProvider) && resolvedProvider.multiProvider !== provider.multi) {\r\n targetErrors.push(new ProviderError(\"Mixing multi and non multi provider is not possible for token \" + resolvedProvider.token.name, sourceSpan));\r\n }\r\n if (lang_1.isBlank(resolvedProvider)) {\r\n resolvedProvider = new template_ast_1.ProviderAst(provider.token, provider.multi, eager, [provider], providerType, sourceSpan);\r\n targetProvidersByToken.add(provider.token, resolvedProvider);\r\n }\r\n else {\r\n if (!provider.multi) {\r\n collection_1.ListWrapper.clear(resolvedProvider.providers);\r\n }\r\n resolvedProvider.providers.push(provider);\r\n }\r\n });\r\n}\r\nfunction _getViewQueries(component) {\r\n var viewQueries = new compile_metadata_1.CompileTokenMap();\r\n if (lang_1.isPresent(component.viewQueries)) {\r\n component.viewQueries.forEach(function (query) { return _addQueryToTokenMap(viewQueries, query); });\r\n }\r\n component.type.diDeps.forEach(function (dep) {\r\n if (lang_1.isPresent(dep.viewQuery)) {\r\n _addQueryToTokenMap(viewQueries, dep.viewQuery);\r\n }\r\n });\r\n return viewQueries;\r\n}\r\nfunction _getContentQueries(directives) {\r\n var contentQueries = new compile_metadata_1.CompileTokenMap();\r\n directives.forEach(function (directive) {\r\n if (lang_1.isPresent(directive.queries)) {\r\n directive.queries.forEach(function (query) { return _addQueryToTokenMap(contentQueries, query); });\r\n }\r\n directive.type.diDeps.forEach(function (dep) {\r\n if (lang_1.isPresent(dep.query)) {\r\n _addQueryToTokenMap(contentQueries, dep.query);\r\n }\r\n });\r\n });\r\n return contentQueries;\r\n}\r\nfunction _addQueryToTokenMap(map, query) {\r\n query.selectors.forEach(function (token) {\r\n var entry = map.get(token);\r\n if (lang_1.isBlank(entry)) {\r\n entry = [];\r\n map.add(token, entry);\r\n }\r\n entry.push(query);\r\n });\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJfcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3Byb3ZpZGVyX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQkFBMEQsMEJBQTBCLENBQUMsQ0FBQTtBQUNyRiwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMzRCw2QkFrQk8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixpQ0FRTyxvQkFBb0IsQ0FBQyxDQUFBO0FBQzVCLDRCQUEyQyxlQUFlLENBQUMsQ0FBQTtBQUMzRCwyQkFBeUQsY0FBYyxDQUFDLENBQUE7QUFFeEU7SUFBbUMsaUNBQVU7SUFDM0MsdUJBQVksT0FBZSxFQUFFLElBQXFCO1FBQUksa0JBQU0sSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUMvRSxvQkFBQztBQUFELENBQUMsQUFGRCxDQUFtQyx1QkFBVSxHQUU1QztBQUZZLHFCQUFhLGdCQUV6QixDQUFBO0FBRUQ7SUFXRSw2QkFBbUIsU0FBbUMsRUFBUyxVQUEyQjtRQVg1RixpQkFxQkM7UUFWb0IsY0FBUyxHQUFULFNBQVMsQ0FBMEI7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUYxRixXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUczQixJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksa0NBQWUsRUFBVyxDQUFDO1FBQ3BELG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDaEUsT0FBTyxDQUFDLFVBQUMsUUFBUTtZQUNoQixFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENB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UUFDbEQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDWCxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudCwgaXNCbGFuaywgaXNBcnJheSwgbm9ybWFsaXplQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgVGVtcGxhdGVBc3QsXG4gIFRlbXBsYXRlQXN0VmlzaXRvcixcbiAgTmdDb250ZW50QXN0LFxuICBFbWJlZGRlZFRlbXBsYXRlQXN0LFxuICBFbGVtZW50QXN0LFxuICBSZWZlcmVuY2VBc3QsXG4gIEJvdW5kRXZlbnRBc3QsXG4gIEJvdW5kRWxlbWVudFByb3BlcnR5QXN0LFxuICBBdHRyQXN0LFxuICBCb3VuZFRleHRBc3QsXG4gIFRleHRBc3QsXG4gIERpcmVjdGl2ZUFzdCxcbiAgQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCxcbiAgdGVtcGxhdGVWaXNpdEFsbCxcbiAgUHJvcGVydHlCaW5kaW5nVHlwZSxcbiAgUHJvdmlkZXJBc3QsXG4gIFByb3ZpZGVyQXN0VHlwZVxufSBmcm9tICcuL3RlbXBsYXRlX2FzdCc7XG5pbXBvcnQge1xuICBDb21waWxlVHlwZU1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NYXAsXG4gIENvbXBpbGVRdWVyeU1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NZXRhZGF0YSxcbiAgQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEsXG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhXG59IGZyb20gJy4vY29tcGlsZV9tZXRhZGF0YSc7XG5pbXBvcnQge0lkZW50aWZpZXJzLCBpZGVudGlmaWVyVG9rZW59IGZyb20gJy4vaWRlbnRpZmllcnMnO1xuaW1wb3J0IHtQYXJzZVNvdXJjZVNwYW4sIFBhcnNlRXJyb3IsIFBhcnNlTG9jYXRpb259IGZyb20gJy4vcGFyc2VfdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlckVycm9yIGV4dGVuZHMgUGFyc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7IHN1cGVyKHNwYW4sIG1lc3NhZ2UpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlclZpZXdDb250ZXh0IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdmlld1F1ZXJpZXM6IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlNZXRhZGF0YVtdPjtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdmlld1Byb3ZpZGVyczogQ29tcGlsZVRva2VuTWFwPGJvb2xlYW4+O1xuICBlcnJvcnM6IFByb3ZpZGVyRXJyb3JbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge1xuICAgIHRoaXMudmlld1F1ZXJpZXMgPSBfZ2V0Vmlld1F1ZXJpZXMoY29tcG9uZW50KTtcbiAgICB0aGlzLnZpZXdQcm92aWRlcnMgPSBuZXcgQ29tcGlsZVRva2VuTWFwPGJvb2xlYW4+KCk7XG4gICAgX25vcm1hbGl6ZVByb3ZpZGVycyhjb21wb25lbnQudmlld1Byb3ZpZGVycywgc291cmNlU3BhbiwgdGhpcy5lcnJvcnMpXG4gICAgICAgIC5mb3JFYWNoKChwcm92aWRlcikgPT4ge1xuICAgICAgICAgIGlmIChpc0JsYW5rKHRoaXMudmlld1Byb3ZpZGVycy5nZXQocHJvdmlkZXIudG9rZW4pKSkge1xuICAgICAgICAgICAgdGhpcy52aWV3UHJvdmlkZXJzLmFkZChwcm92aWRlci50b2tlbiwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJFbGVtZW50Q29udGV4dCB7XG4gIHByaXZhdGUgX2NvbnRlbnRRdWVyaWVzOiBDb21waWxlVG9rZW5NYXA8Q29tcGlsZVF1ZXJ5TWV0YWRhdGFbXT47XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtZWRQcm92aWRlcnMgPSBuZXcgQ29tcGlsZVRva2VuTWFwPFByb3ZpZGVyQXN0PigpO1xuICBwcml2YXRlIF9zZWVuUHJvdmlkZXJzID0gbmV3IENvbXBpbGVUb2tlbk1hcDxib29sZWFuPigpO1xuICBwcml2YXRlIF9hbGxQcm92aWRlcnM6IENvbXBpbGVUb2tlbk1hcDxQcm92aWRlckFzdD47XG4gIHByaXZhdGUgX2F0dHJzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgcHJpdmF0ZSBfaGFzVmlld0NvbnRhaW5lcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXdDb250ZXh0OiBQcm92aWRlclZpZXdDb250ZXh0LCBwcml2YXRlIF9wYXJlbnQ6IFByb3ZpZGVyRWxlbWVudENvbnRleHQsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2lzVmlld1Jvb3Q6IGJvb2xlYW4sIHByaXZhdGUgX2RpcmVjdGl2ZUFzdHM6IERpcmVjdGl2ZUFzdFtdLFxuICAgICAgICAgICAgICBhdHRyczogQXR0ckFzdFtdLCByZWZzOiBSZWZlcmVuY2VBc3RbXSwgcHJpdmF0ZSBfc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7XG4gICAgdGhpcy5fYXR0cnMgPSB7fTtcbiAgICBhdHRycy5mb3JFYWNoKChhdHRyQXN0KSA9PiB0aGlzLl9hdHRyc1thdHRyQXN0Lm5hbWVdID0gYXR0ckFzdC52YWx1ZSk7XG4gICAgdmFyIGRpcmVjdGl2ZXNNZXRhID0gX2RpcmVjdGl2ZUFzdHMubWFwKGRpcmVjdGl2ZUFzdCA9PiBkaXJlY3RpdmVBc3QuZGlyZWN0aXZlKTtcbiAgICB0aGlzLl9hbGxQcm92aWRlcnMgPVxuICAgICAgICBfcmVzb2x2ZVByb3ZpZGVyc0Zyb21EaXJlY3RpdmVzKGRpcmVjdGl2ZXNNZXRhLCBfc291cmNlU3BhbiwgX3ZpZXdDb250ZXh0LmVycm9ycyk7XG4gICAgdGhpcy5fY29udGVudFF1ZXJpZXMgPSBfZ2V0Q29udGVudFF1ZXJpZXMoZGlyZWN0aXZlc01ldGEpO1xuICAgIHZhciBxdWVyaWVkVG9rZW5zID0gbmV3IENvbXBpbGVUb2tlbk1hcDxib29sZWFuPigpO1xuICAgIHRoaXMuX2FsbFByb3ZpZGVycy52YWx1ZXMoKS5mb3JFYWNoKFxuICAgICAgICAocHJvdmlkZXIpID0+IHsgdGhpcy5fYWRkUXVlcnlSZWFkc1RvKHByb3ZpZGVyLnRva2VuLCBxdWVyaWVkVG9rZW5zKTsgfSk7XG4gICAgcmVmcy5mb3JFYWNoKChyZWZBc3QpID0+IHtcbiAgICAgIHRoaXMuX2FkZFF1ZXJ5UmVhZHNUbyhuZXcgQ29tcGlsZVRva2VuTWV0YWRhdGEoe3ZhbHVlOiByZWZBc3QubmFtZX0pLCBxdWVyaWVkVG9rZW5zKTtcbiAgICB9KTtcbiAgICBpZiAoaXNQcmVzZW50KHF1ZXJpZWRUb2tlbnMuZ2V0KGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5WaWV3Q29udGFpbmVyUmVmKSkpKSB7XG4gICAgICB0aGlzLl9oYXNWaWV3Q29udGFpbmVyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBjcmVhdGUgdGhlIHByb3ZpZGVycyB0aGF0IHdlIGtub3cgYXJlIGVhZ2VyIGZpcnN0XG4gICAgdGhpcy5fYWxsUHJvdmlkZXJzLnZhbHVlcygpLmZvckVhY2goKHByb3ZpZGVyKSA9PiB7XG4gICAgICB2YXIgZWFnZXIgPSBwcm92aWRlci5lYWdlciB8fCBpc1ByZXNlbnQocXVlcmllZFRva2Vucy5nZXQocHJvdmlkZXIudG9rZW4pKTtcbiAgICAgIGlmIChlYWdlcikge1xuICAgICAgICB0aGlzLl9nZXRPckNyZWF0ZUxvY2FsUHJvdmlkZXIocHJvdmlkZXIucHJvdmlkZXJUeXBlLCBwcm92aWRlci50b2tlbiwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZnRlckVsZW1lbnQoKSB7XG4gICAgLy8gY29sbGVjdCBsYXp5IHByb3ZpZGVyc1xuICAgIHRoaXMuX2FsbFByb3ZpZGVycy52YWx1ZXMoKS5mb3JFYWNoKChwcm92aWRlcikgPT4ge1xuICAgICAgdGhpcy5fZ2V0T3JDcmVhdGVMb2NhbFByb3ZpZGVyKHByb3ZpZGVyLnByb3ZpZGVyVHlwZSwgcHJvdmlkZXIudG9rZW4sIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB0cmFuc2Zvcm1Qcm92aWRlcnMoKTogUHJvdmlkZXJBc3RbXSB7IHJldHVybiB0aGlzLl90cmFuc2Zvcm1lZFByb3ZpZGVycy52YWx1ZXMoKTsgfVxuXG4gIGdldCB0cmFuc2Zvcm1lZERpcmVjdGl2ZUFzdHMoKTogRGlyZWN0aXZlQXN0W10ge1xuICAgIHZhciBzb3J0ZWRQcm92aWRlclR5cGVzID1cbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtZWRQcm92aWRlcnMudmFsdWVzKCkubWFwKHByb3ZpZGVyID0+IHByb3ZpZGVyLnRva2VuLmlkZW50aWZpZXIpO1xuICAgIHZhciBzb3J0ZWREaXJlY3RpdmVzID0gTGlzdFdyYXBwZXIuY2xvbmUodGhpcy5fZGlyZWN0aXZlQXN0cyk7XG4gICAgTGlzdFdyYXBwZXIuc29ydChzb3J0ZWREaXJlY3RpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgKGRpcjEsIGRpcjIpID0+IHNvcnRlZFByb3ZpZGVyVHlwZXMuaW5kZXhPZihkaXIxLmRpcmVjdGl2ZS50eXBlKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkUHJvdmlkZXJUeXBlcy5pbmRleE9mKGRpcjIuZGlyZWN0aXZlLnR5cGUpKTtcbiAgICByZXR1cm4gc29ydGVkRGlyZWN0aXZlcztcbiAgfVxuXG4gIGdldCB0cmFuc2Zvcm1lZEhhc1ZpZXdDb250YWluZXIoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oYXNWaWV3Q29udGFpbmVyOyB9XG5cbiAgcHJpdmF0ZSBfYWRkUXVlcnlSZWFkc1RvKHRva2VuOiBDb21waWxlVG9rZW5NZXRhZGF0YSwgcXVlcnlSZWFkVG9rZW5zOiBDb21waWxlVG9rZW5NYXA8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9nZXRRdWVyaWVzRm9yKHRva2VuKS5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgdmFyIHF1ZXJ5UmVhZFRva2VuID0gaXNQcmVzZW50KHF1ZXJ5LnJlYWQpID8gcXVlcnkucmVhZCA6IHRva2VuO1xuICAgICAgaWYgKGlzQmxhbmsocXVlcnlSZWFkVG9rZW5zLmdldChxdWVyeVJlYWRUb2tlbikpKSB7XG4gICAgICAgIHF1ZXJ5UmVhZFRva2Vucy5hZGQocXVlcnlSZWFkVG9rZW4sIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UXVlcmllc0Zvcih0b2tlbjogQ29tcGlsZVRva2VuTWV0YWRhdGEpOiBDb21waWxlUXVlcnlNZXRhZGF0YVtdIHtcbiAgICB2YXIgcmVzdWx0OiBDb21waWxlUXVlcnlNZXRhZGF0YVtdID0gW107XG4gICAgdmFyIGN1cnJlbnRFbDogUHJvdmlkZXJFbGVtZW50Q29udGV4dCA9IHRoaXM7XG4gICAgdmFyIGRpc3RhbmNlID0gMDtcbiAgICB2YXIgcXVlcmllczogQ29tcGlsZVF1ZXJ5TWV0YWRhdGFbXTtcbiAgICB3aGlsZSAoY3VycmVudEVsICE9PSBudWxsKSB7XG4gICAgICBxdWVyaWVzID0gY3VycmVudEVsLl9jb250ZW50UXVlcmllcy5nZXQodG9rZW4pO1xuICAgICAgaWYgKGlzUHJlc2VudChxdWVyaWVzKSkge1xuICAgICAgICBMaXN0V3JhcHBlci5hZGRBbGwocmVzdWx0LCBxdWVyaWVzLmZpbHRlcigocXVlcnkpID0+IHF1ZXJ5LmRlc2NlbmRhbnRzIHx8IGRpc3RhbmNlIDw9IDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50RWwuX2RpcmVjdGl2ZUFzdHMubGVuZ3RoID4gMCkge1xuICAgICAgICBkaXN0YW5jZSsrO1xuICAgICAgfVxuICAgICAgY3VycmVudEVsID0gY3VycmVudEVsLl9wYXJlbnQ7XG4gICAgfVxuICAgIHF1ZXJpZXMgPSB0aGlzLl92aWV3Q29udGV4dC52aWV3UXVlcmllcy5nZXQodG9rZW4pO1xuICAgIGlmIChpc1ByZXNlbnQocXVlcmllcykpIHtcbiAgICAgIExpc3RXcmFwcGVyLmFkZEFsbChyZXN1bHQsIHF1ZXJpZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuICBwcml2YXRlIF9nZXRPckNyZWF0ZUxvY2FsUHJvdmlkZXIocmVxdWVzdGluZ1Byb3ZpZGVyVHlwZTogUHJvdmlkZXJBc3RUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IENvbXBpbGVUb2tlbk1ldGFkYXRhLCBlYWdlcjogYm9vbGVhbik6IFByb3ZpZGVyQXN0IHtcbiAgICB2YXIgcmVzb2x2ZWRQcm92aWRlciA9IHRoaXMuX2FsbFByb3ZpZGVycy5nZXQodG9rZW4pO1xuICAgIGlmIChpc0JsYW5rKHJlc29sdmVkUHJvdmlkZXIpIHx8XG4gICAgICAgICgocmVxdWVzdGluZ1Byb3ZpZGVyVHlwZSA9PT0gUHJvdmlkZXJBc3RUeXBlLkRpcmVjdGl2ZSB8fFxuICAgICAgICAgIHJlcXVlc3RpbmdQcm92aWRlclR5cGUgPT09IFByb3ZpZGVyQXN0VHlwZS5QdWJsaWNTZXJ2aWNlKSAmJlxuICAgICAgICAgcmVzb2x2ZWRQcm92aWRlci5wcm92aWRlclR5cGUgPT09IFByb3ZpZGVyQXN0VHlwZS5Qcml2YXRlU2VydmljZSkgfHxcbiAgICAgICAgKChyZXF1ZXN0aW5nUHJvdmlkZXJUeXBlID09PSBQcm92aWRlckFzdFR5cGUuUHJpdmF0ZVNlcnZpY2UgfHxcbiAgICAgICAgICByZXF1ZXN0aW5nUHJvdmlkZXJUeXBlID09PSBQcm92aWRlckFzdFR5cGUuUHVibGljU2VydmljZSkgJiZcbiAgICAgICAgIHJlc29sdmVkUHJvdmlkZXIucHJvdmlkZXJUeXBlID09PSBQcm92aWRlckFzdFR5cGUuQnVpbHRpbikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgdHJhbnNmb3JtZWRQcm92aWRlckFzdCA9IHRoaXMuX3RyYW5zZm9ybWVkUHJvdmlkZXJzLmdldCh0b2tlbik7XG4gICAgaWYgKGlzUHJlc2VudCh0cmFuc2Zvcm1lZFByb3ZpZGVyQXN0KSkge1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUHJvdmlkZXJBc3Q7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fc2VlblByb3ZpZGVycy5nZXQodG9rZW4pKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3JzLnB1c2gobmV3IFByb3ZpZGVyRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBpbnN0YW50aWF0ZSBjeWNsaWMgZGVwZW5kZW5jeSEgJHt0b2tlbi5uYW1lfWAsIHRoaXMuX3NvdXJjZVNwYW4pKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aGlzLl9zZWVuUHJvdmlkZXJzLmFkZCh0b2tlbiwgdHJ1ZSk7XG4gICAgdmFyIHRyYW5zZm9ybWVkUHJvdmlkZXJzID0gcmVzb2x2ZWRQcm92aWRlci5wcm92aWRlcnMubWFwKChwcm92aWRlcikgPT4ge1xuICAgICAgdmFyIHRyYW5zZm9ybWVkVXNlVmFsdWUgPSBwcm92aWRlci51c2VWYWx1ZTtcbiAgICAgIHZhciB0cmFuc2Zvcm1lZFVzZUV4aXN0aW5nID0gcHJvdmlkZXIudXNlRXhpc3Rpbmc7XG4gICAgICB2YXIgdHJhbnNmb3JtZWREZXBzO1xuICAgICAgaWYgKGlzUHJlc2VudChwcm92aWRlci51c2VFeGlzdGluZykpIHtcbiAgICAgICAgdmFyIGV4aXN0aW5nRGlEZXAgPSB0aGlzLl9nZXREZXBlbmRlbmN5KFxuICAgICAgICAgICAgcmVzb2x2ZWRQcm92aWRlci5wcm92aWRlclR5cGUsXG4gICAgICAgICAgICBuZXcgQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhKHt0b2tlbjogcHJvdmlkZXIudXNlRXhpc3Rpbmd9KSwgZWFnZXIpO1xuICAgICAgICBpZiAoaXNQcmVzZW50KGV4aXN0aW5nRGlEZXAudG9rZW4pKSB7XG4gICAgICAgICAgdHJhbnNmb3JtZWRVc2VFeGlzdGluZyA9IGV4aXN0aW5nRGlEZXAudG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtZWRVc2VFeGlzdGluZyA9IG51bGw7XG4gICAgICAgICAgdHJhbnNmb3JtZWRVc2VWYWx1ZSA9IGV4aXN0aW5nRGlEZXAudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUZhY3RvcnkpKSB7XG4gICAgICAgIHZhciBkZXBzID0gaXNQcmVzZW50KHByb3ZpZGVyLmRlcHMpID8gcHJvdmlkZXIuZGVwcyA6IHByb3ZpZGVyLnVzZUZhY3RvcnkuZGlEZXBzO1xuICAgICAgICB0cmFuc2Zvcm1lZERlcHMgPVxuICAgICAgICAgICAgZGVwcy5tYXAoKGRlcCkgPT4gdGhpcy5fZ2V0RGVwZW5kZW5jeShyZXNvbHZlZFByb3ZpZGVyLnByb3ZpZGVyVHlwZSwgZGVwLCBlYWdlcikpO1xuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQocHJvdmlkZXIudXNlQ2xhc3MpKSB7XG4gICAgICAgIHZhciBkZXBzID0gaXNQcmVzZW50KHByb3ZpZGVyLmRlcHMpID8gcHJvdmlkZXIuZGVwcyA6IHByb3ZpZGVyLnVzZUNsYXNzLmRpRGVwcztcbiAgICAgICAgdHJhbnNmb3JtZWREZXBzID1cbiAgICAgICAgICAgIGRlcHMubWFwKChkZXApID0+IHRoaXMuX2dldERlcGVuZGVuY3kocmVzb2x2ZWRQcm92aWRlci5wcm92aWRlclR5cGUsIGRlcCwgZWFnZXIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfdHJhbnNmb3JtUHJvdmlkZXIocHJvdmlkZXIsIHtcbiAgICAgICAgdXNlRXhpc3Rpbmc6IHRyYW5zZm9ybWVkVXNlRXhpc3RpbmcsXG4gICAgICAgIHVzZVZhbHVlOiB0cmFuc2Zvcm1lZFVzZVZhbHVlLFxuICAgICAgICBkZXBzOiB0cmFuc2Zvcm1lZERlcHNcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRyYW5zZm9ybWVkUHJvdmlkZXJBc3QgPVxuICAgICAgICBfdHJhbnNmb3JtUHJvdmlkZXJBc3QocmVzb2x2ZWRQcm92aWRlciwge2VhZ2VyOiBlYWdlciwgcHJvdmlkZXJzOiB0cmFuc2Zvcm1lZFByb3ZpZGVyc30pO1xuICAgIHRoaXMuX3RyYW5zZm9ybWVkUHJvdmlkZXJzLmFkZCh0b2tlbiwgdHJhbnNmb3JtZWRQcm92aWRlckFzdCk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkUHJvdmlkZXJBc3Q7XG4gIH1cblxuICBwcml2YXRlIF9nZXRMb2NhbERlcGVuZGVuY3kocmVxdWVzdGluZ1Byb3ZpZGVyVHlwZTogUHJvdmlkZXJBc3RUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwOiBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWdlcjogYm9vbGVhbiA9IG51bGwpOiBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEge1xuICAgIGlmIChkZXAuaXNBdHRyaWJ1dGUpIHtcbiAgICAgIHZhciBhdHRyVmFsdWUgPSB0aGlzLl9hdHRyc1tkZXAudG9rZW4udmFsdWVdO1xuICAgICAgcmV0dXJuIG5ldyBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEoe2lzVmFsdWU6IHRydWUsIHZhbHVlOiBub3JtYWxpemVCbGFuayhhdHRyVmFsdWUpfSk7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQoZGVwLnF1ZXJ5KSB8fCBpc1ByZXNlbnQoZGVwLnZpZXdRdWVyeSkpIHtcbiAgICAgIHJldHVybiBkZXA7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudChkZXAudG9rZW4pKSB7XG4gICAgICAvLyBhY2Nlc3MgYnVpbHRpbnRzXG4gICAgICBpZiAoKHJlcXVlc3RpbmdQcm92aWRlclR5cGUgPT09IFByb3ZpZGVyQXN0VHlwZS5EaXJlY3RpdmUgfHxcbiAgICAgICAgICAgcmVxdWVzdGluZ1Byb3ZpZGVyVHlwZSA9PT0gUHJvdmlkZXJBc3RUeXBlLkNvbXBvbmVudCkpIHtcbiAgICAgICAgaWYgKGRlcC50b2tlbi5lcXVhbHNUbyhpZGVudGlmaWVyVG9rZW4oSWRlbnRpZmllcnMuUmVuZGVyZXIpKSB8fFxuICAgICAgICAgICAgZGVwLnRva2VuLmVxdWFsc1RvKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5FbGVtZW50UmVmKSkgfHxcbiAgICAgICAgICAgIGRlcC50b2tlbi5lcXVhbHNUbyhpZGVudGlmaWVyVG9rZW4oSWRlbnRpZmllcnMuQ2hhbmdlRGV0ZWN0b3JSZWYpKSB8fFxuICAgICAgICAgICAgZGVwLnRva2VuLmVxdWFsc1RvKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5UZW1wbGF0ZVJlZikpKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVwLnRva2VuLmVxdWFsc1RvKGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5WaWV3Q29udGFpbmVyUmVmKSkpIHtcbiAgICAgICAgICB0aGlzLl9oYXNWaWV3Q29udGFpbmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gYWNjZXNzIHRoZSBpbmplY3RvclxuICAgICAgaWYgKGRlcC50b2tlbi5lcXVhbHNUbyhpZGVudGlmaWVyVG9rZW4oSWRlbnRpZmllcnMuSW5qZWN0b3IpKSkge1xuICAgICAgICByZXR1cm4gZGVwO1xuICAgICAgfVxuICAgICAgLy8gYWNjZXNzIHByb3ZpZGVyc1xuICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLl9nZXRPckNyZWF0ZUxvY2FsUHJvdmlkZXIocmVxdWVzdGluZ1Byb3ZpZGVyVHlwZSwgZGVwLnRva2VuLCBlYWdlcikpKSB7XG4gICAgICAgIHJldHVybiBkZXA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGVwZW5kZW5jeShyZXF1ZXN0aW5nUHJvdmlkZXJUeXBlOiBQcm92aWRlckFzdFR5cGUsIGRlcDogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVhZ2VyOiBib29sZWFuID0gbnVsbCk6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSB7XG4gICAgdmFyIGN1cnJFbGVtZW50OiBQcm92aWRlckVsZW1lbnRDb250ZXh0ID0gdGhpcztcbiAgICB2YXIgY3VyckVhZ2VyOiBib29sZWFuID0gZWFnZXI7XG4gICAgdmFyIHJlc3VsdDogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhID0gbnVsbDtcbiAgICBpZiAoIWRlcC5pc1NraXBTZWxmKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9nZXRMb2NhbERlcGVuZGVuY3kocmVxdWVzdGluZ1Byb3ZpZGVyVHlwZSwgZGVwLCBlYWdlcik7XG4gICAgfVxuICAgIGlmIChkZXAuaXNTZWxmKSB7XG4gICAgICBpZiAoaXNCbGFuayhyZXN1bHQpICYmIGRlcC5pc09wdGlvbmFsKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEoe2lzVmFsdWU6IHRydWUsIHZhbHVlOiBudWxsfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNoZWNrIHBhcmVudCBlbGVtZW50c1xuICAgICAgd2hpbGUgKGlzQmxhbmsocmVzdWx0KSAmJiBpc1ByZXNlbnQoY3VyckVsZW1lbnQuX3BhcmVudCkpIHtcbiAgICAgICAgdmFyIHByZXZFbGVtZW50ID0gY3VyckVsZW1lbnQ7XG4gICAgICAgIGN1cnJFbGVtZW50ID0gY3VyckVsZW1lbnQuX3BhcmVudDtcbiAgICAgICAgaWYgKHByZXZFbGVtZW50Ll9pc1ZpZXdSb290KSB7XG4gICAgICAgICAgY3VyckVhZ2VyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gY3VyckVsZW1lbnQuX2dldExvY2FsRGVwZW5kZW5jeShQcm92aWRlckFzdFR5cGUuUHVibGljU2VydmljZSwgZGVwLCBjdXJyRWFnZXIpO1xuICAgICAgfVxuICAgICAgLy8gY2hlY2sgQEhvc3QgcmVzdHJpY3Rpb25cbiAgICAgIGlmIChpc0JsYW5rKHJlc3VsdCkpIHtcbiAgICAgICAgaWYgKCFkZXAuaXNIb3N0IHx8IHRoaXMuX3ZpZXdDb250ZXh0LmNvbXBvbmVudC50eXBlLmlzSG9zdCB8fFxuICAgICAgICAgICAgaWRlbnRpZmllclRva2VuKHRoaXMuX3ZpZXdDb250ZXh0LmNvbXBvbmVudC50eXBlKS5lcXVhbHNUbyhkZXAudG9rZW4pIHx8XG4gICAgICAgICAgICBpc1ByZXNlbnQodGhpcy5fdmlld0NvbnRleHQudmlld1Byb3ZpZGVycy5nZXQoZGVwLnRva2VuKSkpIHtcbiAgICAgICAgICByZXN1bHQgPSBkZXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gZGVwLmlzT3B0aW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhKHtpc1ZhbHVlOiB0cnVlLCB2YWx1ZTogbnVsbH0pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNCbGFuayhyZXN1bHQpKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvcnMucHVzaChcbiAgICAgICAgICBuZXcgUHJvdmlkZXJFcnJvcihgTm8gcHJvdmlkZXIgZm9yICR7ZGVwLnRva2VuLm5hbWV9YCwgdGhpcy5fc291cmNlU3BhbikpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIF90cmFuc2Zvcm1Qcm92aWRlcihcbiAgICBwcm92aWRlcjogQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEsXG4gICAge3VzZUV4aXN0aW5nLCB1c2VWYWx1ZSwgZGVwc306XG4gICAgICAgIHt1c2VFeGlzdGluZzogQ29tcGlsZVRva2VuTWV0YWRhdGEsIHVzZVZhbHVlOiBhbnksIGRlcHM6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YVtdfSkge1xuICByZXR1cm4gbmV3IENvbXBpbGVQcm92aWRlck1ldGFkYXRhKHtcbiAgICB0b2tlbjogcHJvdmlkZXIudG9rZW4sXG4gICAgdXNlQ2xhc3M6IHByb3ZpZGVyLnVzZUNsYXNzLFxuICAgIHVzZUV4aXN0aW5nOiB1c2VFeGlzdGluZyxcbiAgICB1c2VGYWN0b3J5OiBwcm92aWRlci51c2VGYWN0b3J5LFxuICAgIHVzZVZhbHVlOiB1c2VWYWx1ZSxcbiAgICBkZXBzOiBkZXBzLFxuICAgIG11bHRpOiBwcm92aWRlci5tdWx0aVxuICB9KTtcbn1cblxuZnVuY3Rpb24gX3RyYW5zZm9ybVByb3ZpZGVyQXN0KFxuICAgIHByb3ZpZGVyOiBQcm92aWRlckFzdCxcbiAgICB7ZWFnZXIsIHByb3ZpZGVyc306IHtlYWdlcjogYm9vbGVhbiwgcHJvdmlkZXJzOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YVtdfSk6IFByb3ZpZGVyQXN0IHtcbiAgcmV0dXJuIG5ldyBQcm92aWRlckFzdChwcm92aWRlci50b2tlbiwgcHJvdmlkZXIubXVsdGlQcm92aWRlciwgcHJvdmlkZXIuZWFnZXIgfHwgZWFnZXIsIHByb3ZpZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5wcm92aWRlclR5cGUsIHByb3ZpZGVyLnNvdXJjZVNwYW4pO1xufVxuXG5mdW5jdGlvbiBfbm9ybWFsaXplUHJvdmlkZXJzKFxuICAgIHByb3ZpZGVyczogQXJyYXk8Q29tcGlsZVByb3ZpZGVyTWV0YWRhdGEgfCBDb21waWxlVHlwZU1ldGFkYXRhIHwgYW55W10+LFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbiwgdGFyZ2V0RXJyb3JzOiBQYXJzZUVycm9yW10sXG4gICAgdGFyZ2V0UHJvdmlkZXJzOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YVtdID0gbnVsbCk6IENvbXBpbGVQcm92aWRlck1ldGFkYXRhW10ge1xuICBpZiAoaXNCbGFuayh0YXJnZXRQcm92aWRlcnMpKSB7XG4gICAgdGFyZ2V0UHJvdmlkZXJzID0gW107XG4gIH1cbiAgaWYgKGlzUHJlc2VudChwcm92aWRlcnMpKSB7XG4gICAgcHJvdmlkZXJzLmZvckVhY2goKHByb3ZpZGVyKSA9PiB7XG4gICAgICBpZiAoaXNBcnJheShwcm92aWRlcikpIHtcbiAgICAgICAgX25vcm1hbGl6ZVByb3ZpZGVycyg8YW55W10+cHJvdmlkZXIsIHNvdXJjZVNwYW4sIHRhcmdldEVycm9ycywgdGFyZ2V0UHJvdmlkZXJzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBub3JtYWxpemVQcm92aWRlcjogQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGE7XG4gICAgICAgIGlmIChwcm92aWRlciBpbnN0YW5jZW9mIENvbXBpbGVQcm92aWRlck1ldGFkYXRhKSB7XG4gICAgICAgICAgbm9ybWFsaXplUHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgICAgICAgfSBlbHNlIGlmIChwcm92aWRlciBpbnN0YW5jZW9mIENvbXBpbGVUeXBlTWV0YWRhdGEpIHtcbiAgICAgICAgICBub3JtYWxpemVQcm92aWRlciA9IG5ldyBDb21waWxlUHJvdmlkZXJNZXRhZGF0YShcbiAgICAgICAgICAgICAge3Rva2VuOiBuZXcgQ29tcGlsZVRva2VuTWV0YWRhdGEoe2lkZW50aWZpZXI6IHByb3ZpZGVyfSksIHVzZUNsYXNzOiBwcm92aWRlcn0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldEVycm9ycy5wdXNoKG5ldyBQcm92aWRlckVycm9yKGBVbmtub3duIHByb3ZpZGVyIHR5cGUgJHtwcm92aWRlcn1gLCBzb3VyY2VTcGFuKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUHJlc2VudChub3JtYWxpemVQcm92aWRlcikpIHtcbiAgICAgICAgICB0YXJnZXRQcm92aWRlcnMucHVzaChub3JtYWxpemVQcm92aWRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0UHJvdmlkZXJzO1xufVxuXG5cbmZ1bmN0aW9uIF9yZXNvbHZlUHJvdmlkZXJzRnJvbURpcmVjdGl2ZXMoZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RXJyb3JzOiBQYXJzZUVycm9yW10pOiBDb21waWxlVG9rZW5NYXA8UHJvdmlkZXJBc3Q+IHtcbiAgdmFyIHByb3ZpZGVyc0J5VG9rZW4gPSBuZXcgQ29tcGlsZVRva2VuTWFwPFByb3ZpZGVyQXN0PigpO1xuICBkaXJlY3RpdmVzLmZvckVhY2goKGRpcmVjdGl2ZSkgPT4ge1xuICAgIHZhciBkaXJQcm92aWRlciA9IG5ldyBDb21waWxlUHJvdmlkZXJNZXRhZGF0YShcbiAgICAgICAge3Rva2VuOiBuZXcgQ29tcGlsZVRva2VuTWV0YWRhdGEoe2lkZW50aWZpZXI6IGRpcmVjdGl2ZS50eXBlfSksIHVzZUNsYXNzOiBkaXJlY3RpdmUudHlwZX0pO1xuICAgIF9yZXNvbHZlUHJvdmlkZXJzKFtkaXJQcm92aWRlcl0sXG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlLmlzQ29tcG9uZW50ID8gUHJvdmlkZXJBc3RUeXBlLkNvbXBvbmVudCA6IFByb3ZpZGVyQXN0VHlwZS5EaXJlY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgc291cmNlU3BhbiwgdGFyZ2V0RXJyb3JzLCBwcm92aWRlcnNCeVRva2VuKTtcbiAgfSk7XG5cbiAgLy8gTm90ZTogZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGFibGUgdG8gb3ZlcndyaXRlIHByb3ZpZGVycyBvZiBhIGNvbXBvbmVudCFcbiAgdmFyIGRpcmVjdGl2ZXNXaXRoQ29tcG9uZW50Rmlyc3QgPVxuICAgICAgZGlyZWN0aXZlcy5maWx0ZXIoZGlyID0+IGRpci5pc0NvbXBvbmVudCkuY29uY2F0KGRpcmVjdGl2ZXMuZmlsdGVyKGRpciA9PiAhZGlyLmlzQ29tcG9uZW50KSk7XG4gIGRpcmVjdGl2ZXNXaXRoQ29tcG9uZW50Rmlyc3QuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgX3Jlc29sdmVQcm92aWRlcnMoX25vcm1hbGl6ZVByb3ZpZGVycyhkaXJlY3RpdmUucHJvdmlkZXJzLCBzb3VyY2VTcGFuLCB0YXJnZXRFcnJvcnMpLFxuICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVyQXN0VHlwZS5QdWJsaWNTZXJ2aWNlLCBmYWxzZSwgc291cmNlU3BhbiwgdGFyZ2V0RXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyc0J5VG9rZW4pO1xuICAgIF9yZXNvbHZlUHJvdmlkZXJzKF9ub3JtYWxpemVQcm92aWRlcnMoZGlyZWN0aXZlLnZpZXdQcm92aWRlcnMsIHNvdXJjZVNwYW4sIHRhcmdldEVycm9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJBc3RUeXBlLlByaXZhdGVTZXJ2aWNlLCBmYWxzZSwgc291cmNlU3BhbiwgdGFyZ2V0RXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyc0J5VG9rZW4pO1xuICB9KTtcbiAgcmV0dXJuIHByb3ZpZGVyc0J5VG9rZW47XG59XG5cbmZ1bmN0aW9uIF9yZXNvbHZlUHJvdmlkZXJzKHByb3ZpZGVyczogQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGFbXSwgcHJvdmlkZXJUeXBlOiBQcm92aWRlckFzdFR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlYWdlcjogYm9vbGVhbiwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLCB0YXJnZXRFcnJvcnM6IFBhcnNlRXJyb3JbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3ZpZGVyc0J5VG9rZW46IENvbXBpbGVUb2tlbk1hcDxQcm92aWRlckFzdD4pIHtcbiAgcHJvdmlkZXJzLmZvckVhY2goKHByb3ZpZGVyKSA9PiB7XG4gICAgdmFyIHJlc29sdmVkUHJvdmlkZXIgPSB0YXJnZXRQcm92aWRlcnNCeVRva2VuLmdldChwcm92aWRlci50b2tlbik7XG4gICAgaWYgKGlzUHJlc2VudChyZXNvbHZlZFByb3ZpZGVyKSAmJiByZXNvbHZlZFByb3ZpZGVyLm11bHRpUHJvdmlkZXIgIT09IHByb3ZpZGVyLm11bHRpKSB7XG4gICAgICB0YXJnZXRFcnJvcnMucHVzaChuZXcgUHJvdmlkZXJFcnJvcihcbiAgICAgICAgICBgTWl4aW5nIG11bHRpIGFuZCBub24gbXVsdGkgcHJvdmlkZXIgaXMgbm90IHBvc3NpYmxlIGZvciB0b2tlbiAke3Jlc29sdmVkUHJvdmlkZXIudG9rZW4ubmFtZX1gLFxuICAgICAgICAgIHNvdXJjZVNwYW4pKTtcbiAgICB9XG4gICAgaWYgKGlzQmxhbmsocmVzb2x2ZWRQcm92aWRlcikpIHtcbiAgICAgIHJlc29sdmVkUHJvdmlkZXIgPSBuZXcgUHJvdmlkZXJBc3QocHJvdmlkZXIudG9rZW4sIHByb3ZpZGVyLm11bHRpLCBlYWdlciwgW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJUeXBlLCBzb3VyY2VTcGFuKTtcbiAgICAgIHRhcmdldFByb3ZpZGVyc0J5VG9rZW4uYWRkKHByb3ZpZGVyLnRva2VuLCByZXNvbHZlZFByb3ZpZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFwcm92aWRlci5tdWx0aSkge1xuICAgICAgICBMaXN0V3JhcHBlci5jbGVhcihyZXNvbHZlZFByb3ZpZGVyLnByb3ZpZGVycyk7XG4gICAgICB9XG4gICAgICByZXNvbHZlZFByb3ZpZGVyLnByb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTtcbiAgICB9XG4gIH0pO1xufVxuXG5cbmZ1bmN0aW9uIF9nZXRWaWV3UXVlcmllcyhcbiAgICBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSk6IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlNZXRhZGF0YVtdPiB7XG4gIHZhciB2aWV3UXVlcmllcyA9IG5ldyBDb21waWxlVG9rZW5NYXA8Q29tcGlsZVF1ZXJ5TWV0YWRhdGFbXT4oKTtcbiAgaWYgKGlzUHJlc2VudChjb21wb25lbnQudmlld1F1ZXJpZXMpKSB7XG4gICAgY29tcG9uZW50LnZpZXdRdWVyaWVzLmZvckVhY2goKHF1ZXJ5KSA9PiBfYWRkUXVlcnlUb1Rva2VuTWFwKHZpZXdRdWVyaWVzLCBxdWVyeSkpO1xuICB9XG4gIGNvbXBvbmVudC50eXBlLmRpRGVwcy5mb3JFYWNoKChkZXApID0+IHtcbiAgICBpZiAoaXNQcmVzZW50KGRlcC52aWV3UXVlcnkpKSB7XG4gICAgICBfYWRkUXVlcnlUb1Rva2VuTWFwKHZpZXdRdWVyaWVzLCBkZXAudmlld1F1ZXJ5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdmlld1F1ZXJpZXM7XG59XG5cbmZ1bmN0aW9uIF9nZXRDb250ZW50UXVlcmllcyhcbiAgICBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSk6IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlNZXRhZGF0YVtdPiB7XG4gIHZhciBjb250ZW50UXVlcmllcyA9IG5ldyBDb21waWxlVG9rZW5NYXA8Q29tcGlsZVF1ZXJ5TWV0YWRhdGFbXT4oKTtcbiAgZGlyZWN0aXZlcy5mb3JFYWNoKGRpcmVjdGl2ZSA9PiB7XG4gICAgaWYgKGlzUHJlc2VudChkaXJlY3RpdmUucXVlcmllcykpIHtcbiAgICAgIGRpcmVjdGl2ZS5xdWVyaWVzLmZvckVhY2goKHF1ZXJ5KSA9PiBfYWRkUXVlcnlUb1Rva2VuTWFwKGNvbnRlbnRRdWVyaWVzLCBxdWVyeSkpO1xuICAgIH1cbiAgICBkaXJlY3RpdmUudHlwZS5kaURlcHMuZm9yRWFjaCgoZGVwKSA9PiB7XG4gICAgICBpZiAoaXNQcmVzZW50KGRlcC5xdWVyeSkpIHtcbiAgICAgICAgX2FkZFF1ZXJ5VG9Ub2tlbk1hcChjb250ZW50UXVlcmllcywgZGVwLnF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBjb250ZW50UXVlcmllcztcbn1cblxuZnVuY3Rpb24gX2FkZFF1ZXJ5VG9Ub2tlbk1hcChtYXA6IENvbXBpbGVUb2tlbk1hcDxDb21waWxlUXVlcnlNZXRhZGF0YVtdPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IENvbXBpbGVRdWVyeU1ldGFkYXRhKSB7XG4gIHF1ZXJ5LnNlbGVjdG9ycy5mb3JFYWNoKCh0b2tlbjogQ29tcGlsZVRva2VuTWV0YWRhdGEpID0+IHtcbiAgICB2YXIgZW50cnkgPSBtYXAuZ2V0KHRva2VuKTtcbiAgICBpZiAoaXNCbGFuayhlbnRyeSkpIHtcbiAgICAgIGVudHJ5ID0gW107XG4gICAgICBtYXAuYWRkKHRva2VuLCBlbnRyeSk7XG4gICAgfVxuICAgIGVudHJ5LnB1c2gocXVlcnkpO1xuICB9KTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar console_1 = require('angular2/src/core/console');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar ast_1 = require('./expression_parser/ast');\r\nvar parser_1 = require('./expression_parser/parser');\r\nvar html_parser_1 = require('./html_parser');\r\nvar html_tags_1 = require('./html_tags');\r\nvar parse_util_1 = require('./parse_util');\r\nvar view_utils_1 = require('angular2/src/core/linker/view_utils');\r\nvar template_ast_1 = require('./template_ast');\r\nvar selector_1 = require('angular2/src/compiler/selector');\r\nvar element_schema_registry_1 = require('angular2/src/compiler/schema/element_schema_registry');\r\nvar template_preparser_1 = require('./template_preparser');\r\nvar style_url_resolver_1 = require('./style_url_resolver');\r\nvar html_ast_1 = require('./html_ast');\r\nvar util_1 = require('./util');\r\nvar identifiers_1 = require('./identifiers');\r\nvar provider_parser_1 = require('./provider_parser');\r\n// Group 1 = \"bind-\"\r\n// Group 2 = \"var-\"\r\n// Group 3 = \"let-\"\r\n// Group 4 = \"ref-/#\"\r\n// Group 5 = \"on-\"\r\n// Group 6 = \"bindon-\"\r\n// Group 7 = the identifier after \"bind-\", \"var-/#\", or \"on-\"\r\n// Group 8 = identifier inside [()]\r\n// Group 9 = identifier inside []\r\n// Group 10 = identifier inside ()\r\nvar BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(var-)|(let-)|(ref-|#)|(on-)|(bindon-))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/g;\r\nvar TEMPLATE_ELEMENT = 'template';\r\nvar TEMPLATE_ATTR = 'template';\r\nvar TEMPLATE_ATTR_PREFIX = '*';\r\nvar CLASS_ATTR = 'class';\r\nvar PROPERTY_PARTS_SEPARATOR = '.';\r\nvar ATTRIBUTE_PREFIX = 'attr';\r\nvar CLASS_PREFIX = 'class';\r\nvar STYLE_PREFIX = 'style';\r\nvar TEXT_CSS_SELECTOR = selector_1.CssSelector.parse('*')[0];\r\n/**\r\n * Provides an array of {@link TemplateAstVisitor}s which will be used to transform\r\n * parsed templates before compilation is invoked, allowing custom expression syntax\r\n * and other advanced transformations.\r\n *\r\n * This is currently an internal-only feature and not meant for general use.\r\n */\r\nexports.TEMPLATE_TRANSFORMS = lang_1.CONST_EXPR(new core_1.OpaqueToken('TemplateTransforms'));\r\nvar TemplateParseError = (function (_super) {\r\n __extends(TemplateParseError, _super);\r\n function TemplateParseError(message, span, level) {\r\n _super.call(this, span, message, level);\r\n }\r\n return TemplateParseError;\r\n}(parse_util_1.ParseError));\r\nexports.TemplateParseError = TemplateParseError;\r\nvar TemplateParseResult = (function () {\r\n function TemplateParseResult(templateAst, errors) {\r\n this.templateAst = templateAst;\r\n this.errors = errors;\r\n }\r\n return TemplateParseResult;\r\n}());\r\nexports.TemplateParseResult = TemplateParseResult;\r\nvar TemplateParser = (function () {\r\n function TemplateParser(_exprParser, _schemaRegistry, _htmlParser, _console, transforms) {\r\n this._exprParser = _exprParser;\r\n this._schemaRegistry = _schemaRegistry;\r\n this._htmlParser = _htmlParser;\r\n this._console = _console;\r\n this.transforms = transforms;\r\n }\r\n TemplateParser.prototype.parse = function (component, template, directives, pipes, templateUrl) {\r\n var result = this.tryParse(component, template, directives, pipes, templateUrl);\r\n var warnings = result.errors.filter(function (error) { return error.level === parse_util_1.ParseErrorLevel.WARNING; });\r\n var errors = result.errors.filter(function (error) { return error.level === parse_util_1.ParseErrorLevel.FATAL; });\r\n if (warnings.length > 0) {\r\n this._console.warn(\"Template parse warnings:\\n\" + warnings.join('\\n'));\r\n }\r\n if (errors.length > 0) {\r\n var errorString = errors.join('\\n');\r\n throw new exceptions_1.BaseException(\"Template parse errors:\\n\" + errorString);\r\n }\r\n return result.templateAst;\r\n };\r\n TemplateParser.prototype.tryParse = function (component, template, directives, pipes, templateUrl) {\r\n var htmlAstWithErrors = this._htmlParser.parse(template, templateUrl);\r\n var errors = htmlAstWithErrors.errors;\r\n var result;\r\n if (htmlAstWithErrors.rootNodes.length > 0) {\r\n var uniqDirectives = removeDuplicates(directives);\r\n var uniqPipes = removeDuplicates(pipes);\r\n var providerViewContext = new provider_parser_1.ProviderViewContext(component, htmlAstWithErrors.rootNodes[0].sourceSpan);\r\n var parseVisitor = new TemplateParseVisitor(providerViewContext, uniqDirectives, uniqPipes, this._exprParser, this._schemaRegistry);\r\n result = html_ast_1.htmlVisitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT);\r\n errors = errors.concat(parseVisitor.errors).concat(providerViewContext.errors);\r\n }\r\n else {\r\n result = [];\r\n }\r\n if (errors.length > 0) {\r\n return new TemplateParseResult(result, errors);\r\n }\r\n if (lang_1.isPresent(this.transforms)) {\r\n this.transforms.forEach(function (transform) { result = template_ast_1.templateVisitAll(transform, result); });\r\n }\r\n return new TemplateParseResult(result, errors);\r\n };\r\n TemplateParser = __decorate([\r\n core_1.Injectable(),\r\n __param(4, core_1.Optional()),\r\n __param(4, core_1.Inject(exports.TEMPLATE_TRANSFORMS)), \r\n __metadata('design:paramtypes', [parser_1.Parser, element_schema_registry_1.ElementSchemaRegistry, html_parser_1.HtmlParser, console_1.Console, Array])\r\n ], TemplateParser);\r\n return TemplateParser;\r\n}());\r\nexports.TemplateParser = TemplateParser;\r\nvar TemplateParseVisitor = (function () {\r\n function TemplateParseVisitor(providerViewContext, directives, pipes, _exprParser, _schemaRegistry) {\r\n var _this = this;\r\n this.providerViewContext = providerViewContext;\r\n this._exprParser = _exprParser;\r\n this._schemaRegistry = _schemaRegistry;\r\n this.errors = [];\r\n this.directivesIndex = new Map();\r\n this.ngContentCount = 0;\r\n this.selectorMatcher = new selector_1.SelectorMatcher();\r\n collection_1.ListWrapper.forEachWithIndex(directives, function (directive, index) {\r\n var selector = selector_1.CssSelector.parse(directive.selector);\r\n _this.selectorMatcher.addSelectables(selector, directive);\r\n _this.directivesIndex.set(directive, index);\r\n });\r\n this.pipesByName = new Map();\r\n pipes.forEach(function (pipe) { return _this.pipesByName.set(pipe.name, pipe); });\r\n }\r\n TemplateParseVisitor.prototype._reportError = function (message, sourceSpan, level) {\r\n if (level === void 0) { level = parse_util_1.ParseErrorLevel.FATAL; }\r\n this.errors.push(new TemplateParseError(message, sourceSpan, level));\r\n };\r\n TemplateParseVisitor.prototype._parseInterpolation = function (value, sourceSpan) {\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var ast = this._exprParser.parseInterpolation(value, sourceInfo);\r\n this._checkPipes(ast, sourceSpan);\r\n if (lang_1.isPresent(ast) &&\r\n ast.ast.expressions.length > view_utils_1.MAX_INTERPOLATION_VALUES) {\r\n throw new exceptions_1.BaseException(\"Only support at most \" + view_utils_1.MAX_INTERPOLATION_VALUES + \" interpolation values!\");\r\n }\r\n return ast;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._parseAction = function (value, sourceSpan) {\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var ast = this._exprParser.parseAction(value, sourceInfo);\r\n this._checkPipes(ast, sourceSpan);\r\n return ast;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._parseBinding = function (value, sourceSpan) {\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var ast = this._exprParser.parseBinding(value, sourceInfo);\r\n this._checkPipes(ast, sourceSpan);\r\n return ast;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._parseTemplateBindings = function (value, sourceSpan) {\r\n var _this = this;\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var bindingsResult = this._exprParser.parseTemplateBindings(value, sourceInfo);\r\n bindingsResult.templateBindings.forEach(function (binding) {\r\n if (lang_1.isPresent(binding.expression)) {\r\n _this._checkPipes(binding.expression, sourceSpan);\r\n }\r\n });\r\n bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, parse_util_1.ParseErrorLevel.WARNING); });\r\n return bindingsResult.templateBindings;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return [];\r\n }\r\n };\r\n TemplateParseVisitor.prototype._checkPipes = function (ast, sourceSpan) {\r\n var _this = this;\r\n if (lang_1.isPresent(ast)) {\r\n var collector = new PipeCollector();\r\n ast.visit(collector);\r\n collector.pipes.forEach(function (pipeName) {\r\n if (!_this.pipesByName.has(pipeName)) {\r\n _this._reportError(\"The pipe '\" + pipeName + \"' could not be found\", sourceSpan);\r\n }\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype.visitExpansion = function (ast, context) { return null; };\r\n TemplateParseVisitor.prototype.visitExpansionCase = function (ast, context) { return null; };\r\n TemplateParseVisitor.prototype.visitText = function (ast, parent) {\r\n var ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);\r\n var expr = this._parseInterpolation(ast.value, ast.sourceSpan);\r\n if (lang_1.isPresent(expr)) {\r\n return new template_ast_1.BoundTextAst(expr, ngContentIndex, ast.sourceSpan);\r\n }\r\n else {\r\n return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);\r\n }\r\n };\r\n TemplateParseVisitor.prototype.visitAttr = function (ast, contex) {\r\n return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);\r\n };\r\n TemplateParseVisitor.prototype.visitComment = function (ast, context) { return null; };\r\n TemplateParseVisitor.prototype.visitElement = function (element, parent) {\r\n var _this = this;\r\n var nodeName = element.name;\r\n var preparsedElement = template_preparser_1.preparseElement(element);\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT ||\r\n preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE) {\r\n // Skipping <script> for security reasons\r\n // Skipping <style> as we already processed them\r\n // in the StyleCompiler\r\n return null;\r\n }\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET &&\r\n style_url_resolver_1.isStyleUrlResolvable(preparsedElement.hrefAttr)) {\r\n // Skipping stylesheets with either relative urls or package scheme as we already processed\r\n // them in the StyleCompiler\r\n return null;\r\n }\r\n var matchableAttrs = [];\r\n var elementOrDirectiveProps = [];\r\n var elementOrDirectiveRefs = [];\r\n var elementVars = [];\r\n var events = [];\r\n var templateElementOrDirectiveProps = [];\r\n var templateMatchableAttrs = [];\r\n var templateElementVars = [];\r\n var hasInlineTemplates = false;\r\n var attrs = [];\r\n var lcElName = html_tags_1.splitNsName(nodeName.toLowerCase())[1];\r\n var isTemplateElement = lcElName == TEMPLATE_ELEMENT;\r\n element.attrs.forEach(function (attr) {\r\n var hasBinding = _this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, events, elementOrDirectiveRefs, elementVars);\r\n var hasTemplateBinding = _this._parseInlineTemplateBinding(attr, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);\r\n if (!hasBinding && !hasTemplateBinding) {\r\n // don't include the bindings as attributes as well in the AST\r\n attrs.push(_this.visitAttr(attr, null));\r\n matchableAttrs.push([attr.name, attr.value]);\r\n }\r\n if (hasTemplateBinding) {\r\n hasInlineTemplates = true;\r\n }\r\n });\r\n var elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);\r\n var directiveMetas = this._parseDirectives(this.selectorMatcher, elementCssSelector);\r\n var references = [];\r\n var directiveAsts = this._createDirectiveAsts(isTemplateElement, element.name, directiveMetas, elementOrDirectiveProps, elementOrDirectiveRefs, element.sourceSpan, references);\r\n var elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, directiveAsts);\r\n var isViewRoot = parent.isTemplateElement || hasInlineTemplates;\r\n var providerContext = new provider_parser_1.ProviderElementContext(this.providerViewContext, parent.providerContext, isViewRoot, directiveAsts, attrs, references, element.sourceSpan);\r\n var children = html_ast_1.htmlVisitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, ElementContext.create(isTemplateElement, directiveAsts, isTemplateElement ? parent.providerContext : providerContext));\r\n providerContext.afterElement();\r\n // Override the actual selector when the `ngProjectAs` attribute is provided\r\n var projectionSelector = lang_1.isPresent(preparsedElement.projectAs) ?\r\n selector_1.CssSelector.parse(preparsedElement.projectAs)[0] :\r\n elementCssSelector;\r\n var ngContentIndex = parent.findNgContentIndex(projectionSelector);\r\n var parsedElement;\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.NG_CONTENT) {\r\n if (lang_1.isPresent(element.children) && element.children.length > 0) {\r\n this._reportError(\"<ng-content> element cannot have content. <ng-content> must be immediately followed by </ng-content>\", element.sourceSpan);\r\n }\r\n parsedElement = new template_ast_1.NgContentAst(this.ngContentCount++, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);\r\n }\r\n else if (isTemplateElement) {\r\n this._assertAllEventsPublishedByDirectives(directiveAsts, events);\r\n this._assertNoComponentsNorElementBindingsOnTemplate(directiveAsts, elementProps, element.sourceSpan);\r\n parsedElement = new template_ast_1.EmbeddedTemplateAst(attrs, events, references, elementVars, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, children, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);\r\n }\r\n else {\r\n this._assertOnlyOneComponent(directiveAsts, element.sourceSpan);\r\n var ngContentIndex_1 = hasInlineTemplates ? null : parent.findNgContentIndex(projectionSelector);\r\n parsedElement = new template_ast_1.ElementAst(nodeName, attrs, elementProps, events, references, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, children, hasInlineTemplates ? null : ngContentIndex_1, element.sourceSpan);\r\n }\r\n if (hasInlineTemplates) {\r\n var templateCssSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);\r\n var templateDirectiveMetas = this._parseDirectives(this.selectorMatcher, templateCssSelector);\r\n var templateDirectiveAsts = this._createDirectiveAsts(true, element.name, templateDirectiveMetas, templateElementOrDirectiveProps, [], element.sourceSpan, []);\r\n var templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateDirectiveAsts);\r\n this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectiveAsts, templateElementProps, element.sourceSpan);\r\n var templateProviderContext = new provider_parser_1.ProviderElementContext(this.providerViewContext, parent.providerContext, parent.isTemplateElement, templateDirectiveAsts, [], [], element.sourceSpan);\r\n templateProviderContext.afterElement();\r\n parsedElement = new template_ast_1.EmbeddedTemplateAst([], [], [], templateElementVars, templateProviderContext.transformedDirectiveAsts, templateProviderContext.transformProviders, templateProviderContext.transformedHasViewContainer, [parsedElement], ngContentIndex, element.sourceSpan);\r\n }\r\n return parsedElement;\r\n };\r\n TemplateParseVisitor.prototype._parseInlineTemplateBinding = function (attr, targetMatchableAttrs, targetProps, targetVars) {\r\n var templateBindingsSource = null;\r\n if (attr.name == TEMPLATE_ATTR) {\r\n templateBindingsSource = attr.value;\r\n }\r\n else if (attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {\r\n var key = attr.name.substring(TEMPLATE_ATTR_PREFIX.length); // remove the star\r\n templateBindingsSource = (attr.value.length == 0) ? key : key + ' ' + attr.value;\r\n }\r\n if (lang_1.isPresent(templateBindingsSource)) {\r\n var bindings = this._parseTemplateBindings(templateBindingsSource, attr.sourceSpan);\r\n for (var i = 0; i < bindings.length; i++) {\r\n var binding = bindings[i];\r\n if (binding.keyIsVar) {\r\n targetVars.push(new template_ast_1.VariableAst(binding.key, binding.name, attr.sourceSpan));\r\n }\r\n else if (lang_1.isPresent(binding.expression)) {\r\n this._parsePropertyAst(binding.key, binding.expression, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n else {\r\n targetMatchableAttrs.push([binding.key, '']);\r\n this._parseLiteralAttr(binding.key, null, attr.sourceSpan, targetProps);\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n TemplateParseVisitor.prototype._parseAttr = function (isTemplateElement, attr, targetMatchableAttrs, targetProps, targetEvents, targetRefs, targetVars) {\r\n var attrName = this._normalizeAttributeName(attr.name);\r\n var attrValue = attr.value;\r\n var bindParts = lang_1.RegExpWrapper.firstMatch(BIND_NAME_REGEXP, attrName);\r\n var hasBinding = false;\r\n if (lang_1.isPresent(bindParts)) {\r\n hasBinding = true;\r\n if (lang_1.isPresent(bindParts[1])) {\r\n this._parseProperty(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n else if (lang_1.isPresent(bindParts[2])) {\r\n var identifier = bindParts[7];\r\n if (isTemplateElement) {\r\n this._reportError(\"\\\"var-\\\" on <template> elements is deprecated. Use \\\"let-\\\" instead!\", attr.sourceSpan, parse_util_1.ParseErrorLevel.WARNING);\r\n this._parseVariable(identifier, attrValue, attr.sourceSpan, targetVars);\r\n }\r\n else {\r\n this._reportError(\"\\\"var-\\\" on non <template> elements is deprecated. Use \\\"ref-\\\" instead!\", attr.sourceSpan, parse_util_1.ParseErrorLevel.WARNING);\r\n this._parseReference(identifier, attrValue, attr.sourceSpan, targetRefs);\r\n }\r\n }\r\n else if (lang_1.isPresent(bindParts[3])) {\r\n if (isTemplateElement) {\r\n var identifier = bindParts[7];\r\n this._parseVariable(identifier, attrValue, attr.sourceSpan, targetVars);\r\n }\r\n else {\r\n this._reportError(\"\\\"let-\\\" is only supported on template elements.\", attr.sourceSpan);\r\n }\r\n }\r\n else if (lang_1.isPresent(bindParts[4])) {\r\n var identifier = bindParts[7];\r\n this._parseReference(identifier, attrValue, attr.sourceSpan, targetRefs);\r\n }\r\n else if (lang_1.isPresent(bindParts[5])) {\r\n this._parseEvent(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n else if (lang_1.isPresent(bindParts[6])) {\r\n this._parseProperty(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n this._parseAssignmentEvent(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n else if (lang_1.isPresent(bindParts[8])) {\r\n this._parseProperty(bindParts[8], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n this._parseAssignmentEvent(bindParts[8], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n else if (lang_1.isPresent(bindParts[9])) {\r\n this._parseProperty(bindParts[9], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n else if (lang_1.isPresent(bindParts[10])) {\r\n this._parseEvent(bindParts[10], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n }\r\n else {\r\n hasBinding = this._parsePropertyInterpolation(attrName, attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n if (!hasBinding) {\r\n this._parseLiteralAttr(attrName, attrValue, attr.sourceSpan, targetProps);\r\n }\r\n return hasBinding;\r\n };\r\n TemplateParseVisitor.prototype._normalizeAttributeName = function (attrName) {\r\n return attrName.toLowerCase().startsWith('data-') ? attrName.substring(5) : attrName;\r\n };\r\n TemplateParseVisitor.prototype._parseVariable = function (identifier, value, sourceSpan, targetVars) {\r\n if (identifier.indexOf('-') > -1) {\r\n this._reportError(\"\\\"-\\\" is not allowed in variable names\", sourceSpan);\r\n }\r\n targetVars.push(new template_ast_1.VariableAst(identifier, value, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseReference = function (identifier, value, sourceSpan, targetRefs) {\r\n if (identifier.indexOf('-') > -1) {\r\n this._reportError(\"\\\"-\\\" is not allowed in reference names\", sourceSpan);\r\n }\r\n targetRefs.push(new ElementOrDirectiveRef(identifier, value, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseProperty = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\r\n this._parsePropertyAst(name, this._parseBinding(expression, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\r\n };\r\n TemplateParseVisitor.prototype._parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\r\n var expr = this._parseInterpolation(value, sourceSpan);\r\n if (lang_1.isPresent(expr)) {\r\n this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\r\n return true;\r\n }\r\n return false;\r\n };\r\n TemplateParseVisitor.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\r\n targetMatchableAttrs.push([name, ast.source]);\r\n targetProps.push(new BoundElementOrDirectiveProperty(name, ast, false, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseAssignmentEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\r\n this._parseEvent(name + \"Change\", expression + \"=$event\", sourceSpan, targetMatchableAttrs, targetEvents);\r\n };\r\n TemplateParseVisitor.prototype._parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\r\n // long format: 'target: eventName'\r\n var parts = util_1.splitAtColon(name, [null, name]);\r\n var target = parts[0];\r\n var eventName = parts[1];\r\n var ast = this._parseAction(expression, sourceSpan);\r\n targetMatchableAttrs.push([name, ast.source]);\r\n targetEvents.push(new template_ast_1.BoundEventAst(eventName, target, ast, sourceSpan));\r\n // Don't detect directives for event names for now,\r\n // so don't add the event name to the matchableAttrs\r\n };\r\n TemplateParseVisitor.prototype._parseLiteralAttr = function (name, value, sourceSpan, targetProps) {\r\n targetProps.push(new BoundElementOrDirectiveProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), true, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseDirectives = function (selectorMatcher, elementCssSelector) {\r\n var _this = this;\r\n // Need to sort the directives so that we get consistent results throughout,\r\n // as selectorMatcher uses Maps inside.\r\n // Also dedupe directives as they might match more than one time!\r\n var directives = collection_1.ListWrapper.createFixedSize(this.directivesIndex.size);\r\n selectorMatcher.match(elementCssSelector, function (selector, directive) {\r\n directives[_this.directivesIndex.get(directive)] = directive;\r\n });\r\n return directives.filter(function (dir) { return lang_1.isPresent(dir); });\r\n };\r\n TemplateParseVisitor.prototype._createDirectiveAsts = function (isTemplateElement, elementName, directives, props, elementOrDirectiveRefs, sourceSpan, targetReferences) {\r\n var _this = this;\r\n var matchedReferences = new Set();\r\n var component = null;\r\n var directiveAsts = directives.map(function (directive) {\r\n if (directive.isComponent) {\r\n component = directive;\r\n }\r\n var hostProperties = [];\r\n var hostEvents = [];\r\n var directiveProperties = [];\r\n _this._createDirectiveHostPropertyAsts(elementName, directive.hostProperties, sourceSpan, hostProperties);\r\n _this._createDirectiveHostEventAsts(directive.hostListeners, sourceSpan, hostEvents);\r\n _this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties);\r\n elementOrDirectiveRefs.forEach(function (elOrDirRef) {\r\n if ((elOrDirRef.value.length === 0 && directive.isComponent) ||\r\n (directive.exportAs == elOrDirRef.value)) {\r\n targetReferences.push(new template_ast_1.ReferenceAst(elOrDirRef.name, identifiers_1.identifierToken(directive.type), elOrDirRef.sourceSpan));\r\n matchedReferences.add(elOrDirRef.name);\r\n }\r\n });\r\n return new template_ast_1.DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, sourceSpan);\r\n });\r\n elementOrDirectiveRefs.forEach(function (elOrDirRef) {\r\n if (elOrDirRef.value.length > 0) {\r\n if (!collection_1.SetWrapper.has(matchedReferences, elOrDirRef.name)) {\r\n _this._reportError(\"There is no directive with \\\"exportAs\\\" set to \\\"\" + elOrDirRef.value + \"\\\"\", elOrDirRef.sourceSpan);\r\n }\r\n ;\r\n }\r\n else if (lang_1.isBlank(component)) {\r\n var refToken = null;\r\n if (isTemplateElement) {\r\n refToken = identifiers_1.identifierToken(identifiers_1.Identifiers.TemplateRef);\r\n }\r\n targetReferences.push(new template_ast_1.ReferenceAst(elOrDirRef.name, refToken, elOrDirRef.sourceSpan));\r\n }\r\n });\r\n return directiveAsts;\r\n };\r\n TemplateParseVisitor.prototype._createDirectiveHostPropertyAsts = function (elementName, hostProps, sourceSpan, targetPropertyAsts) {\r\n var _this = this;\r\n if (lang_1.isPresent(hostProps)) {\r\n collection_1.StringMapWrapper.forEach(hostProps, function (expression, propName) {\r\n var exprAst = _this._parseBinding(expression, sourceSpan);\r\n targetPropertyAsts.push(_this._createElementPropertyAst(elementName, propName, exprAst, sourceSpan));\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype._createDirectiveHostEventAsts = function (hostListeners, sourceSpan, targetEventAsts) {\r\n var _this = this;\r\n if (lang_1.isPresent(hostListeners)) {\r\n collection_1.StringMapWrapper.forEach(hostListeners, function (expression, propName) {\r\n _this._parseEvent(propName, expression, sourceSpan, [], targetEventAsts);\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype._createDirectivePropertyAsts = function (directiveProperties, boundProps, targetBoundDirectiveProps) {\r\n if (lang_1.isPresent(directiveProperties)) {\r\n var boundPropsByName = new Map();\r\n boundProps.forEach(function (boundProp) {\r\n var prevValue = boundPropsByName.get(boundProp.name);\r\n if (lang_1.isBlank(prevValue) || prevValue.isLiteral) {\r\n // give [a]=\"b\" a higher precedence than a=\"b\" on the same element\r\n boundPropsByName.set(boundProp.name, boundProp);\r\n }\r\n });\r\n collection_1.StringMapWrapper.forEach(directiveProperties, function (elProp, dirProp) {\r\n var boundProp = boundPropsByName.get(elProp);\r\n // Bindings are optional, so this binding only needs to be set up if an expression is given.\r\n if (lang_1.isPresent(boundProp)) {\r\n targetBoundDirectiveProps.push(new template_ast_1.BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));\r\n }\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype._createElementPropertyAsts = function (elementName, props, directives) {\r\n var _this = this;\r\n var boundElementProps = [];\r\n var boundDirectivePropsIndex = new Map();\r\n directives.forEach(function (directive) {\r\n directive.inputs.forEach(function (prop) {\r\n boundDirectivePropsIndex.set(prop.templateName, prop);\r\n });\r\n });\r\n props.forEach(function (prop) {\r\n if (!prop.isLiteral && lang_1.isBlank(boundDirectivePropsIndex.get(prop.name))) {\r\n boundElementProps.push(_this._createElementPropertyAst(elementName, prop.name, prop.expression, prop.sourceSpan));\r\n }\r\n });\r\n return boundElementProps;\r\n };\r\n TemplateParseVisitor.prototype._createElementPropertyAst = function (elementName, name, ast, sourceSpan) {\r\n var unit = null;\r\n var bindingType;\r\n var boundPropertyName;\r\n var parts = name.split(PROPERTY_PARTS_SEPARATOR);\r\n if (parts.length === 1) {\r\n boundPropertyName = this._schemaRegistry.getMappedPropName(parts[0]);\r\n bindingType = template_ast_1.PropertyBindingType.Property;\r\n if (!this._schemaRegistry.hasProperty(elementName, boundPropertyName)) {\r\n this._reportError(\"Can't bind to '\" + boundPropertyName + \"' since it isn't a known native property\", sourceSpan);\r\n }\r\n }\r\n else {\r\n if (parts[0] == ATTRIBUTE_PREFIX) {\r\n boundPropertyName = parts[1];\r\n var nsSeparatorIdx = boundPropertyName.indexOf(':');\r\n if (nsSeparatorIdx > -1) {\r\n var ns = boundPropertyName.substring(0, nsSeparatorIdx);\r\n var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);\r\n boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);\r\n }\r\n bindingType = template_ast_1.PropertyBindingType.Attribute;\r\n }\r\n else if (parts[0] == CLASS_PREFIX) {\r\n boundPropertyName = parts[1];\r\n bindingType = template_ast_1.PropertyBindingType.Class;\r\n }\r\n else if (parts[0] == STYLE_PREFIX) {\r\n unit = parts.length > 2 ? parts[2] : null;\r\n boundPropertyName = parts[1];\r\n bindingType = template_ast_1.PropertyBindingType.Style;\r\n }\r\n else {\r\n this._reportError(\"Invalid property name '\" + name + \"'\", sourceSpan);\r\n bindingType = null;\r\n }\r\n }\r\n return new template_ast_1.BoundElementPropertyAst(boundPropertyName, bindingType, ast, unit, sourceSpan);\r\n };\r\n TemplateParseVisitor.prototype._findComponentDirectiveNames = function (directives) {\r\n var componentTypeNames = [];\r\n directives.forEach(function (directive) {\r\n var typeName = directive.directive.type.name;\r\n if (directive.directive.isComponent) {\r\n componentTypeNames.push(typeName);\r\n }\r\n });\r\n return componentTypeNames;\r\n };\r\n TemplateParseVisitor.prototype._assertOnlyOneComponent = function (directives, sourceSpan) {\r\n var componentTypeNames = this._findComponentDirectiveNames(directives);\r\n if (componentTypeNames.length > 1) {\r\n this._reportError(\"More than one component: \" + componentTypeNames.join(','), sourceSpan);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate = function (directives, elementProps, sourceSpan) {\r\n var _this = this;\r\n var componentTypeNames = this._findComponentDirectiveNames(directives);\r\n if (componentTypeNames.length > 0) {\r\n this._reportError(\"Components on an embedded template: \" + componentTypeNames.join(','), sourceSpan);\r\n }\r\n elementProps.forEach(function (prop) {\r\n _this._reportError(\"Property binding \" + prop.name + \" not used by any directive on an embedded template\", sourceSpan);\r\n });\r\n };\r\n TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives = function (directives, events) {\r\n var _this = this;\r\n var allDirectiveEvents = new Set();\r\n directives.forEach(function (directive) {\r\n collection_1.StringMapWrapper.forEach(directive.directive.outputs, function (eventName, _) { allDirectiveEvents.add(eventName); });\r\n });\r\n events.forEach(function (event) {\r\n if (lang_1.isPresent(event.target) || !collection_1.SetWrapper.has(allDirectiveEvents, event.name)) {\r\n _this._reportError(\"Event binding \" + event.fullName + \" not emitted by any directive on an embedded template\", event.sourceSpan);\r\n }\r\n });\r\n };\r\n return TemplateParseVisitor;\r\n}());\r\nvar NonBindableVisitor = (function () {\r\n function NonBindableVisitor() {\r\n }\r\n NonBindableVisitor.prototype.visitElement = function (ast, parent) {\r\n var preparsedElement = template_preparser_1.preparseElement(ast);\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT ||\r\n preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE ||\r\n preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET) {\r\n // Skipping <script> for security reasons\r\n // Skipping <style> and stylesheets as we already processed them\r\n // in the StyleCompiler\r\n return null;\r\n }\r\n var attrNameAndValues = ast.attrs.map(function (attrAst) { return [attrAst.name, attrAst.value]; });\r\n var selector = createElementCssSelector(ast.name, attrNameAndValues);\r\n var ngContentIndex = parent.findNgContentIndex(selector);\r\n var children = html_ast_1.htmlVisitAll(this, ast.children, EMPTY_ELEMENT_CONTEXT);\r\n return new template_ast_1.ElementAst(ast.name, html_ast_1.htmlVisitAll(this, ast.attrs), [], [], [], [], [], false, children, ngContentIndex, ast.sourceSpan);\r\n };\r\n NonBindableVisitor.prototype.visitComment = function (ast, context) { return null; };\r\n NonBindableVisitor.prototype.visitAttr = function (ast, context) {\r\n return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);\r\n };\r\n NonBindableVisitor.prototype.visitText = function (ast, parent) {\r\n var ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);\r\n return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);\r\n };\r\n NonBindableVisitor.prototype.visitExpansion = function (ast, context) { return ast; };\r\n NonBindableVisitor.prototype.visitExpansionCase = function (ast, context) { return ast; };\r\n return NonBindableVisitor;\r\n}());\r\nvar BoundElementOrDirectiveProperty = (function () {\r\n function BoundElementOrDirectiveProperty(name, expression, isLiteral, sourceSpan) {\r\n this.name = name;\r\n this.expression = expression;\r\n this.isLiteral = isLiteral;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n return BoundElementOrDirectiveProperty;\r\n}());\r\nvar ElementOrDirectiveRef = (function () {\r\n function ElementOrDirectiveRef(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n return ElementOrDirectiveRef;\r\n}());\r\nfunction splitClasses(classAttrValue) {\r\n return lang_1.StringWrapper.split(classAttrValue.trim(), /\\s+/g);\r\n}\r\nexports.splitClasses = splitClasses;\r\nvar ElementContext = (function () {\r\n function ElementContext(isTemplateElement, _ngContentIndexMatcher, _wildcardNgContentIndex, providerContext) {\r\n this.isTemplateElement = isTemplateElement;\r\n this._ngContentIndexMatcher = _ngContentIndexMatcher;\r\n this._wildcardNgContentIndex = _wildcardNgContentIndex;\r\n this.providerContext = providerContext;\r\n }\r\n ElementContext.create = function (isTemplateElement, directives, providerContext) {\r\n var matcher = new selector_1.SelectorMatcher();\r\n var wildcardNgContentIndex = null;\r\n if (directives.length > 0 && directives[0].directive.isComponent) {\r\n var ngContentSelectors = directives[0].directive.template.ngContentSelectors;\r\n for (var i = 0; i < ngContentSelectors.length; i++) {\r\n var selector = ngContentSelectors[i];\r\n if (lang_1.StringWrapper.equals(selector, '*')) {\r\n wildcardNgContentIndex = i;\r\n }\r\n else {\r\n matcher.addSelectables(selector_1.CssSelector.parse(ngContentSelectors[i]), i);\r\n }\r\n }\r\n }\r\n return new ElementContext(isTemplateElement, matcher, wildcardNgContentIndex, providerContext);\r\n };\r\n ElementContext.prototype.findNgContentIndex = function (selector) {\r\n var ngContentIndices = [];\r\n this._ngContentIndexMatcher.match(selector, function (selector, ngContentIndex) { ngContentIndices.push(ngContentIndex); });\r\n collection_1.ListWrapper.sort(ngContentIndices);\r\n if (lang_1.isPresent(this._wildcardNgContentIndex)) {\r\n ngContentIndices.push(this._wildcardNgContentIndex);\r\n }\r\n return ngContentIndices.length > 0 ? ngContentIndices[0] : null;\r\n };\r\n return ElementContext;\r\n}());\r\nfunction createElementCssSelector(elementName, matchableAttrs) {\r\n var cssSelector = new selector_1.CssSelector();\r\n var elNameNoNs = html_tags_1.splitNsName(elementName)[1];\r\n cssSelector.setElement(elNameNoNs);\r\n for (var i = 0; i < matchableAttrs.length; i++) {\r\n var attrName = matchableAttrs[i][0];\r\n var attrNameNoNs = html_tags_1.splitNsName(attrName)[1];\r\n var attrValue = matchableAttrs[i][1];\r\n cssSelector.addAttribute(attrNameNoNs, attrValue);\r\n if (attrName.toLowerCase() == CLASS_ATTR) {\r\n var classes = splitClasses(attrValue);\r\n classes.forEach(function (className) { return cssSelector.addClassName(className); });\r\n }\r\n }\r\n return cssSelector;\r\n}\r\nvar EMPTY_ELEMENT_CONTEXT = new ElementContext(true, new selector_1.SelectorMatcher(), null, null);\r\nvar NON_BINDABLE_VISITOR = new NonBindableVisitor();\r\nvar PipeCollector = (function (_super) {\r\n __extends(PipeCollector, _super);\r\n function PipeCollector() {\r\n _super.apply(this, arguments);\r\n this.pipes = new Set();\r\n }\r\n PipeCollector.prototype.visitPipe = function (ast, context) {\r\n this.pipes.add(ast.name);\r\n ast.exp.visit(this);\r\n this.visitAll(ast.args, context);\r\n return null;\r\n };\r\n return PipeCollector;\r\n}(ast_1.RecursiveAstVisitor));\r\nexports.PipeCollector = PipeCollector;\r\nfunction removeDuplicates(items) {\r\n var res = [];\r\n items.forEach(function (item) {\r\n var hasMatch = res.filter(function (r) { return r.type.name == item.type.name && r.type.moduleUrl == item.type.moduleUrl &&\r\n r.type.runtime == item.type.runtime; })\r\n .length > 0;\r\n if (!hasMatch) {\r\n res.push(item);\r\n }\r\n });\r\n return res;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFLTyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3hDLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMscUJBQXdELGVBQWUsQ0FBQyxDQUFBO0FBQ3hFLHdCQUFzQiwyQkFBMkIsQ0FBQyxDQUFBO0FBQ2xELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELG9CQU9PLHlCQUF5QixDQUFDLENBQUE7QUFDakMsdUJBQXFCLDRCQUE0QixDQUFDLENBQUE7QUFVbEQsNEJBQXlCLGVBQWUsQ0FBQyxDQUFBO0FBQ3pDLDBCQUEwQyxhQUFhLENBQUMsQ0FBQTtBQUN4RCwyQkFBMEUsY0FBYyxDQUFDLENBQUE7QUFDekYsMkJBQXVDLHFDQUFxQyxDQUFDLENBQUE7QUFFN0UsNkJBbUJPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIseUJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFFNUUsd0NBQW9DLHNEQUFzRCxDQUFDLENBQUE7QUFDM0YsbUNBQXNFLHNCQUFzQixDQUFDLENBQUE7QUFFN0YsbUNBQW1DLHNCQUFzQixDQUFDLENBQUE7QUFFMUQseUJBVU8sWUFBWSxDQUFDLENBQUE7QUFFcEIscUJBQTJCLFFBQVEsQ0FBQyxDQUFBO0FBQ3BDLDRCQUEyQyxlQUFlLENBQUMsQ0FBQTtBQUUzRCxnQ0FBMEQsbUJBQW1CLENBQUMsQ0FBQTtBQUU5RSxvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLG1CQUFtQjtBQUNuQixxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLHNCQUFzQjtBQUN0Qiw2REFBNkQ7QUFDN0QsbUNBQW1DO0FBQ25DLGlDQUFpQztB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QUFtQixHQVFyRDtBQVJZLHFCQUFhLGdCQVF6QixDQUFBO0FBRUQsMEJBQTBCLEtBQWdDO0lBQ3hELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNiLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJO1FBQ2hCLElBQUksUUFBUSxHQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDeEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBRG5DLENBQ21DLENBQUM7YUFDL0MsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNwQixFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDZCxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTGlzdFdyYXBwZXIsXG4gIFN0cmluZ01hcFdyYXBwZXIsXG4gIFNldFdyYXBwZXIsXG4gIE1hcFdyYXBwZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIENPTlNUX0VYUFIsXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIGlzUHJlc2VudCxcbiAgU3RyaW5nV3JhcHBlcixcbiAgaXNCbGFuayxcbiAgaXNBcnJheVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIE9wYXF1ZVRva2VuLCBPcHRpb25hbH0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0NvbnNvbGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NvbnNvbGUnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtcbiAgQVNULFxuICBJbnRlcnBvbGF0aW9uLFxuICBBU1RXaXRoU291cmNlLFxuICBUZW1wbGF0ZUJpbmRpbmcsXG4gIFJlY3Vyc2l2ZUFzdFZpc2l0b3IsXG4gIEJpbmRpbmdQaXBlXG59IGZyb20gJy4vZXhwcmVzc2lvbl9wYXJzZXIvYXN0JztcbmltcG9ydCB7UGFyc2VyfSBmcm9tICcuL2V4cHJlc3Npb25fcGFyc2VyL3BhcnNlcic7XG5pbXBvcnQge1xuICBDb21waWxlVG9rZW5NYXAsXG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcGlsZVBpcGVNZXRhZGF0YSxcbiAgQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUsXG4gIENvbXBpbGVQcm92aWRlck1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NZXRhZGF0YSxcbiAgQ29tcGlsZVR5cGVNZXRhZGF0YVxufSBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0IHtIdG1sUGFyc2VyfSBmcm9tICcuL2h0bWxfcGFyc2VyJztcbmltcG9ydCB7c3BsaXROc05hbWUsIG1lcmdlTnNBbmROYW1lfSBmcm9tICcuL2h0bWxfdGFncyc7XG5pbXBvcnQge1BhcnNlU291cmNlU3BhbiwgUGFyc2VFcnJvciwgUGFyc2VMb2NhdGlvbiwgUGFyc2VFcnJvckxldmVsfSBmcm9tICcuL3BhcnNlX3V0aWwnO1xuaW1wb3J0IHtNQVhfSU5URVJQT0xBVElPTl9WQUxVRVN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRWxlbWVudEFzdCxcbiAgQm91bmRFbGVtZW50UHJvcGVydHlBc3QsXG4gIEJvdW5kRXZlbnRBc3QsXG4gIFJlZmVyZW5jZUFzdCxcbiAgVGVtcGxhdGVBc3QsXG4gIFRlbXBsYXRlQXN0VmlzaXRvcixcbiAgdGVtcGxhdGVWaXNpdEFsbCxcbiAgVGV4dEFzdCxcbiAgQm91bmRUZXh0QXN0LFxuICBFbWJlZGRlZFRlbXBsYXRlQXN0LFxuICBBdHRyQXN0LFxuICBOZ0NvbnRlbnRBc3QsXG4gIFByb3BlcnR5QmluZGluZ1R5cGUsXG4gIERpcmVjdGl2ZUFzdCxcbiAgQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCxcbiAgUHJvdmlkZXJBc3QsXG4gIFByb3ZpZGVyQXN0VHlwZSxcbiAgVmFyaWFibGVBc3Rcbn0gZnJvbSAnLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtDc3NTZWxlY3RvciwgU2VsZWN0b3JNYXRjaGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2VsZWN0b3InO1xuXG5pbXBvcnQge0VsZW1lbnRTY2hlbWFSZWdpc3RyeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NjaGVtYS9lbGVtZW50X3NjaGVtYV9yZWdpc3RyeSc7XG5pbXBvcnQge3ByZXBhcnNlRWxlbWVudCwgUHJlcGFyc2VkRWxlbWVudCwgUHJlcGFyc2VkRWxlbWVudFR5cGV9IGZyb20gJy4vdGVtcGxhdGVfcHJlcGFyc2VyJztcblxuaW1wb3J0IHtpc1N0eWxlVXJsUmVzb2x2YWJsZX0gZnJvbSAnLi9zdHlsZV91cmxfcmVzb2x2ZXInO1xuXG5pbXBvcnQge1xuICBIdG1sQXN0VmlzaXRvcixcbiAgSHRtbEFzdCxcbiAgSHRtbEVsZW1lbnRBc3QsXG4gIEh0bWxBdHRyQXN0LFxuICBIdG1sVGV4dEFzdCxcbiAgSHRtbENvbW1lbnRBc3QsXG4gIEh0bWxFeHBhbnNpb25Bc3QsXG4gIEh0bWxFeHBhbnNpb25DYXNlQXN0LFxuICBodG1sVmlzaXRBbGxcbn0gZnJvbSAnLi9odG1sX2FzdCc7XG5cbmltcG9ydCB7c3BsaXRBdENvbG9ufSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHtpZGVudGlmaWVyVG9rZW4sIElkZW50aWZpZXJzfSBmcm9tICcuL2lkZW50aWZpZXJzJztcblxuaW1wb3J0IHtQcm92aWRlckVsZW1lbnRDb250ZXh0LCBQcm92aWRlclZpZXdDb250ZXh0fSBmcm9tICcuL3Byb3ZpZGVyX3BhcnNlcic7XG5cbi8vIEdyb3VwIDEgPSBcImJpbmQtXCJcbi8vIEdyb3VwIDIgPSBcInZhci1cIlxuLy8gR3JvdXAgMyA9IFwibGV0LVwiXG4vLyBHcm91cCA0ID0gXCJyZWYtLyNcIlxuLy8gR3JvdXAgNSA9IFwib24tXCJcbi8vIEdyb3VwIDYgPSBcImJpbmRvbi1cIlxuLy8gR3JvdXAgNyA9IHRoZSBpZGVudGlmaWVyIGFmdGVyIFwiYmluZC1cIiwgXCJ2YXItLyNcIiwgb3IgXCJvbi1cIlxuLy8gR3JvdXAgOCA9IGlkZW50aWZpZXIgaW5zaWRlIFsoKV1cbi8vIEdyb3VwIDkgPSBpZGVudGlmaWVyIGluc2lkZSBbXVxuLy8gR3JvdXAgMTAgPSBpZGVudGlmaWVyIGluc2lkZSAoKVxudmFyIEJJTkRfTkFNRV9SRUdFWFAgPVxuICAgIC9eKD86KD86KD86KGJpbmQtKXwodmFyLSl8KGxldC0pfChyZWYtfCMpfChvbi0pfChiaW5kb24tKSkoLispKXxcXFtcXCgoW15cXCldKylcXClcXF18XFxbKFteXFxdXSspXFxdfFxcKChbXlxcKV0rKVxcKSkkL2c7XG5cbmNvbnN0IFRFTVBMQVRFX0VMRU1FTlQgPSAndGVtcGxhdGUnO1xuY29uc3QgVEVNUExBVEVfQVRUUiA9ICd0ZW1wbGF0ZSc7XG5jb25zdCBURU1QTEFURV9BVFRSX1BSRUZJWCA9ICcqJztcbmNvbnN0IENMQVNTX0FUVFIgPSAnY2xhc3MnO1xuXG52YXIgUFJPUEVSVFlfUEFSVFNfU0VQQVJBVE9SID0gJy4nO1xuY29uc3QgQVRUUklCVVRFX1BSRUZJWCA9ICdhdHRyJztcbmNvbnN0IENMQVNTX1BSRUZJWCA9ICdjbGFzcyc7XG5jb25zdCBTVFlMRV9QUkVGSVggPSAnc3R5bGUnO1xuXG52YXIgVEVYVF9DU1NfU0VMRUNUT1IgPSBDc3NTZWxlY3Rvci5wYXJzZSgnKicpWzBdO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGFycmF5IG9mIHtAbGluayBUZW1wbGF0ZUFzdFZpc2l0b3J9cyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gdHJhbnNmb3JtXG4gKiBwYXJzZWQgdGVtcGxhdGVzIGJlZm9yZSBjb21waWxhdGlvbiBpcyBpbnZva2VkLCBhbGxvd2luZyBjdXN0b20gZXhwcmVzc2lvbiBzeW50YXhcbiAqIGFuZCBvdGhlciBhZHZhbmNlZCB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogVGhpcyBpcyBjdXJyZW50bHkgYW4gaW50ZXJuYWwtb25seSBmZWF0dXJlIGFuZCBub3QgbWVhbnQgZm9yIGdlbmVyYWwgdXNlLlxuICovXG5leHBvcnQgY29uc3QgVEVNUExBVEVfVFJBTlNGT1JNUyA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKCdUZW1wbGF0ZVRyYW5zZm9ybXMnKSk7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVBhcnNlRXJyb3IgZXh0ZW5kcyBQYXJzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBzcGFuOiBQYXJzZVNvdXJjZVNwYW4sIGxldmVsOiBQYXJzZUVycm9yTGV2ZWwpIHtcbiAgICBzdXBlcihzcGFuLCBtZXNzYWdlLCBsZXZlbCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUGFyc2VSZXN1bHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVBc3Q/OiBUZW1wbGF0ZUFzdFtdLCBwdWJsaWMgZXJyb3JzPzogUGFyc2VFcnJvcltdKSB7fVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVQYXJzZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9leHByUGFyc2VyOiBQYXJzZXIsIHByaXZhdGUgX3NjaGVtYVJlZ2lzdHJ5OiBFbGVtZW50U2NoZW1hUmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2h0bWxQYXJzZXI6IEh0bWxQYXJzZXIsIHByaXZhdGUgX2NvbnNvbGU6IENvbnNvbGUsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEVNUExBVEVfVFJBTlNGT1JNUykgcHVibGljIHRyYW5zZm9ybXM6IFRlbXBsYXRlQXN0VmlzaXRvcltdKSB7fVxuXG4gIHBhcnNlKGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCB0ZW1wbGF0ZTogc3RyaW5nLFxuICAgICAgICBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSwgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSxcbiAgICAgICAgdGVtcGxhdGVVcmw6IHN0cmluZyk6IFRlbXBsYXRlQXN0W10ge1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnRyeVBhcnNlKGNvbXBvbmVudCwgdGVtcGxhdGUsIGRpcmVjdGl2ZXMsIHBpcGVzLCB0ZW1wbGF0ZVVybCk7XG4gICAgdmFyIHdhcm5pbmdzID0gcmVzdWx0LmVycm9ycy5maWx0ZXIoZXJyb3IgPT4gZXJyb3IubGV2ZWwgPT09IFBhcnNlRXJyb3JMZXZlbC5XQVJOSU5HKTtcbiAgICB2YXIgZXJyb3JzID0gcmVzdWx0LmVycm9ycy5maWx0ZXIoZXJyb3IgPT4gZXJyb3IubGV2ZWwgPT09IFBhcnNlRXJyb3JMZXZlbC5GQVRBTCk7XG4gICAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2NvbnNvbGUud2FybihgVGVtcGxhdGUgcGFyc2Ugd2FybmluZ3M6XFxuJHt3YXJuaW5ncy5qb2luKCdcXG4nKX1gKTtcbiAgICB9XG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgZXJyb3JTdHJpbmcgPSBlcnJvcnMuam9pbignXFxuJyk7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVGVtcGxhdGUgcGFyc2UgZXJyb3JzOlxcbiR7ZXJyb3JTdHJpbmd9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudGVtcGxhdGVBc3Q7XG4gIH1cblxuICB0cnlQYXJzZShjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgdGVtcGxhdGU6IHN0cmluZyxcbiAgICAgICAgICAgZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sIHBpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10sXG4gICAgICAgICAgIHRlbXBsYXRlVXJsOiBzdHJpbmcpOiBUZW1wbGF0ZVBhcnNlUmVzdWx0IHtcbiAgICB2YXIgaHRtbEFzdFdpdGhFcnJvcnMgPSB0aGlzLl9odG1sUGFyc2VyLnBhcnNlKHRlbXBsYXRlLCB0ZW1wbGF0ZVVybCk7XG4gICAgdmFyIGVycm9yczogUGFyc2VFcnJvcltdID0gaHRtbEFzdFdpdGhFcnJvcnMuZXJyb3JzO1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKGh0bWxBc3RXaXRoRXJyb3JzLnJvb3ROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgdW5pcURpcmVjdGl2ZXMgPSA8Q29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10+cmVtb3ZlRHVwbGljYXRlcyhkaXJlY3RpdmVzKTtcbiAgICAgIHZhciB1bmlxUGlwZXMgPSA8Q29tcGlsZVBpcGVNZXRhZGF0YVtdPnJlbW92ZUR1cGxpY2F0ZXMocGlwZXMpO1xuICAgICAgdmFyIHByb3ZpZGVyVmlld0NvbnRleHQgPVxuICAgICAgICAgIG5ldyBQcm92aWRlclZpZXdDb250ZXh0KGNvbXBvbmVudCwgaHRtbEFzdFdpdGhFcnJvcnMucm9vdE5vZGVzWzBdLnNvdXJjZVNwYW4pO1xuICAgICAgdmFyIHBhcnNlVmlzaXRvciA9IG5ldyBUZW1wbGF0ZVBhcnNlVmlzaXRvcihwcm92aWRlclZpZXdDb250ZXh0LCB1bmlxRGlyZWN0aXZlcywgdW5pcVBpcGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9leHByUGFyc2VyLCB0aGlzLl9zY2hlbWFSZWdpc3RyeSk7XG5cbiAgICAgIHJlc3VsdCA9IGh0bWxWaXNpdEFsbChwYXJzZVZpc2l0b3IsIGh0bWxBc3RXaXRoRXJyb3JzLnJvb3ROb2RlcywgRU1QVFlfRUxFTUVOVF9DT05URVhUKTtcbiAgICAgIGVycm9ycyA9IGVycm9ycy5jb25jYXQocGFyc2VWaXNpdG9yLmVycm9ycykuY29uY2F0KHByb3ZpZGVyVmlld0NvbnRleHQuZXJyb3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gW107XG4gICAgfVxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVBhcnNlUmVzdWx0KHJlc3VsdCwgZXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnRyYW5zZm9ybXMpKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybXMuZm9yRWFjaChcbiAgICAgICAgICAodHJhbnNmb3JtOiBUZW1wbGF0ZUFzdFZpc2l0b3IpID0+IHsgcmVzdWx0ID0gdGVtcGxhdGVWaXNpdEFsbCh0cmFuc2Zvcm0sIHJlc3VsdCk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFRlbXBsYXRlUGFyc2VSZXN1bHQocmVzdWx0LCBlcnJvcnMpO1xuICB9XG59XG5cbmNsYXNzIFRlbXBsYXRlUGFyc2VWaXNpdG9yIGltcGxlbWVudHMgSHRtbEFzdFZpc2l0b3Ige1xuICBzZWxlY3Rvck1hdGNoZXI6IFNlbGVjdG9yTWF0Y2hlcjtcbiAgZXJyb3JzOiBUZW1wbGF0ZVBhcnNlRXJyb3JbXSA9IFtdO1xuICBkaXJlY3RpdmVzSW5kZXggPSBuZXcgTWFwPENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgbnVtYmVyPigpO1xuICBuZ0NvbnRlbnRDb3VudDogbnVtYmVyID0gMDtcbiAgcGlwZXNCeU5hbWU6IE1hcDxzdHJpbmcsIENvbXBpbGVQaXBlTWV0YWRhdGE+O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm92aWRlclZpZXdDb250ZXh0OiBQcm92aWRlclZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSwgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZXhwclBhcnNlcjogUGFyc2VyLCBwcml2YXRlIF9zY2hlbWFSZWdpc3RyeTogRWxlbWVudFNjaGVtYVJlZ2lzdHJ5KSB7XG4gICAgdGhpcy5zZWxlY3Rvck1hdGNoZXIgPSBuZXcgU2VsZWN0b3JNYXRjaGVyKCk7XG4gICAgTGlzdFdyYXBwZXIuZm9yRWFjaFdpdGhJbmRleChkaXJlY3RpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpcmVjdGl2ZTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvciA9IENzc1NlbGVjdG9yLnBhcnNlKGRpcmVjdGl2ZS5zZWxlY3Rvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0b3JNYXRjaGVyLmFkZFNlbGVjdGFibGVzKHNlbGVjdG9yLCBkaXJlY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXNJbmRleC5zZXQoZGlyZWN0aXZlLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICB0aGlzLnBpcGVzQnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIENvbXBpbGVQaXBlTWV0YWRhdGE+KCk7XG4gICAgcGlwZXMuZm9yRWFjaChwaXBlID0+IHRoaXMucGlwZXNCeU5hbWUuc2V0KHBpcGUubmFtZSwgcGlwZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVwb3J0RXJyb3IobWVzc2FnZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiBQYXJzZUVycm9yTGV2ZWwgPSBQYXJzZUVycm9yTGV2ZWwuRkFUQUwpIHtcbiAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBUZW1wbGF0ZVBhcnNlRXJyb3IobWVzc2FnZSwgc291cmNlU3BhbiwgbGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlSW50ZXJwb2xhdGlvbih2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBBU1RXaXRoU291cmNlIHtcbiAgICB2YXIgc291cmNlSW5mbyA9IHNvdXJjZVNwYW4uc3RhcnQudG9TdHJpbmcoKTtcbiAgICB0cnkge1xuICAgICAgdmFyIGFzdCA9IHRoaXMuX2V4cHJQYXJzZXIucGFyc2VJbnRlcnBvbGF0aW9uKHZhbHVlLCBzb3VyY2VJbmZvKTtcbiAgICAgIHRoaXMuX2NoZWNrUGlwZXMoYXN0LCBzb3VyY2VTcGFuKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoYXN0KSAmJlxuICAgICAgICAgICg8SW50ZXJwb2xhdGlvbj5hc3QuYXN0KS5leHByZXNzaW9ucy5sZW5ndGggPiBNQVhfSU5URVJQT0xBVElPTl9WQUxVRVMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgICBgT25seSBzdXBwb3J0IGF0IG1vc3QgJHtNQVhfSU5URVJQT0xBVElPTl9WQUxVRVN9IGludGVycG9sYXRpb24gdmFsdWVzIWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFzdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9yZXBvcnRFcnJvcihgJHtlfWAsIHNvdXJjZVNwYW4pO1xuICAgICAgcmV0dXJuIHRoaXMuX2V4cHJQYXJzZXIud3JhcExpdGVyYWxQcmltaXRpdmUoJ0VSUk9SJywgc291cmNlSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VBY3Rpb24odmFsdWU6IHN0cmluZywgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQVNUV2l0aFNvdXJjZSB7XG4gICAgdmFyIHNvdXJjZUluZm8gPSBzb3VyY2VTcGFuLnN0YXJ0LnRvU3RyaW5nKCk7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBhc3QgPSB0aGlzLl9leHByUGFyc2VyLnBhcnNlQWN0aW9uKHZhbHVlLCBzb3VyY2VJbmZvKTtcbiAgICAgIHRoaXMuX2NoZWNrUGlwZXMoYXN0LCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiBhc3Q7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYCR7ZX1gLCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiB0aGlzLl9leHByUGFyc2VyLndyYXBMaXRlcmFsUHJpbWl0aXZlKCdFUlJPUicsIHNvdXJjZUluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQmluZGluZyh2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBBU1RXaXRoU291cmNlIHtcbiAgICB2YXIgc291cmNlSW5mbyA9IHNvdXJjZVNwYW4uc3RhcnQudG9TdHJpbmcoKTtcbiAgICB0cnkge1xuICAgICAgdmFyIGFzdCA9IHRoaXMuX2V4cHJQYXJzZXIucGFyc2VCaW5kaW5nKHZhbHVlLCBzb3VyY2VJbmZvKTtcbiAgICAgIHRoaXMuX2NoZWNrUGlwZXMoYXN0LCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiBhc3Q7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYCR7ZX1gLCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiB0aGlzLl9leHByUGFyc2VyLndyYXBMaXRlcmFsUHJpbWl0aXZlKCdFUlJPUicsIHNvdXJjZUluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlVGVtcGxhdGVCaW5kaW5ncyh2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBUZW1wbGF0ZUJpbmRpbmdbXSB7XG4gICAgdmFyIHNvdXJjZUluZm8gPSBzb3VyY2VTcGFuLnN0YXJ0LnRvU3RyaW5nKCk7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBiaW5kaW5nc1Jlc3VsdCA9IHRoaXMuX2V4cHJQYXJzZXIucGFyc2VUZW1wbGF0ZUJpbmRpbmdzKHZhbHVlLCBzb3VyY2VJbmZvKTtcbiAgICAgIGJpbmRpbmdzUmVzdWx0LnRlbXBsYXRlQmluZGluZ3MuZm9yRWFjaCgoYmluZGluZykgPT4ge1xuICAgICAgICBpZiAoaXNQcmVzZW50KGJpbmRpbmcuZXhwcmVzc2lvbikpIHtcbiAgICAgICAgICB0aGlzLl9jaGVja1BpcGVzKGJpbmRpbmcuZXhwcmVzc2lvbiwgc291cmNlU3Bhbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYmluZGluZ3NSZXN1bHQud2FybmluZ3MuZm9yRWFjaChcbiAgICAgICAgICAod2FybmluZykgPT4geyB0aGlzLl9yZXBvcnRFcnJvcih3YXJuaW5nLCBzb3VyY2VTcGFuLCBQYXJzZUVycm9yTGV2ZWwuV0FSTklORyk7IH0pO1xuICAgICAgcmV0dXJuIGJpbmRpbmdzUmVzdWx0LnRlbXBsYXRlQmluZGluZ3M7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYCR7ZX1gLCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja1BpcGVzKGFzdDogQVNUV2l0aFNvdXJjZSwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7XG4gICAgaWYgKGlzUHJlc2VudChhc3QpKSB7XG4gICAgICB2YXIgY29sbGVjdG9yID0gbmV3IFBpcGVDb2xsZWN0b3IoKTtcbiAgICAgIGFzdC52aXNpdChjb2xsZWN0b3IpO1xuICAgICAgY29sbGVjdG9yLnBpcGVzLmZvckVhY2goKHBpcGVOYW1lKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5waXBlc0J5TmFtZS5oYXMocGlwZU5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYFRoZSBwaXBlICcke3BpcGVOYW1lfScgY291bGQgbm90IGJlIGZvdW5kYCwgc291cmNlU3Bhbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RXhwYW5zaW9uKGFzdDogSHRtbEV4cGFuc2lvbkFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdEV4cGFuc2lvbkNhc2UoYXN0OiBIdG1sRXhwYW5zaW9uQ2FzZUFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdFRleHQoYXN0OiBIdG1sVGV4dEFzdCwgcGFyZW50OiBFbGVtZW50Q29udGV4dCk6IGFueSB7XG4gICAgdmFyIG5nQ29udGVudEluZGV4ID0gcGFyZW50LmZpbmROZ0NvbnRlbnRJbmRleChURVhUX0NTU19TRUxFQ1RPUik7XG4gICAgdmFyIGV4cHIgPSB0aGlzLl9wYXJzZUludGVycG9sYXRpb24oYXN0LnZhbHVlLCBhc3Quc291cmNlU3Bhbik7XG4gICAgaWYgKGlzUHJlc2VudChleHByKSkge1xuICAgICAgcmV0dXJuIG5ldyBCb3VuZFRleHRBc3QoZXhwciwgbmdDb250ZW50SW5kZXgsIGFzdC5zb3VyY2VTcGFuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBUZXh0QXN0KGFzdC52YWx1ZSwgbmdDb250ZW50SW5kZXgsIGFzdC5zb3VyY2VTcGFuKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEF0dHIoYXN0OiBIdG1sQXR0ckFzdCwgY29udGV4OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgQXR0ckFzdChhc3QubmFtZSwgYXN0LnZhbHVlLCBhc3Quc291cmNlU3Bhbik7XG4gIH1cblxuICB2aXNpdENvbW1lbnQoYXN0OiBIdG1sQ29tbWVudEFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdEVsZW1lbnQoZWxlbWVudDogSHRtbEVsZW1lbnRBc3QsIHBhcmVudDogRWxlbWVudENvbnRleHQpOiBhbnkge1xuICAgIHZhciBub2RlTmFtZSA9IGVsZW1lbnQubmFtZTtcbiAgICB2YXIgcHJlcGFyc2VkRWxlbWVudCA9IHByZXBhcnNlRWxlbWVudChlbGVtZW50KTtcbiAgICBpZiAocHJlcGFyc2VkRWxlbWVudC50eXBlID09PSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TQ1JJUFQgfHxcbiAgICAgICAgcHJlcGFyc2VkRWxlbWVudC50eXBlID09PSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TVFlMRSkge1xuICAgICAgLy8gU2tpcHBpbmcgPHNjcmlwdD4gZm9yIHNlY3VyaXR5IHJlYXNvbnNcbiAgICAgIC8vIFNraXBwaW5nIDxzdHlsZT4gYXMgd2UgYWxyZWFkeSBwcm9jZXNzZWQgdGhlbVxuICAgICAgLy8gaW4gdGhlIFN0eWxlQ29tcGlsZXJcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAocHJlcGFyc2VkRWxlbWVudC50eXBlID09PSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TVFlMRVNIRUVUICYmXG4gICAgICAgIGlzU3R5bGVVcmxSZXNvbHZhYmxlKHByZXBhcnNlZEVsZW1lbnQuaHJlZkF0dHIpKSB7XG4gICAgICAvLyBTa2lwcGluZyBzdHlsZXNoZWV0cyB3aXRoIGVpdGhlciByZWxhdGl2ZSB1cmxzIG9yIHBhY2thZ2Ugc2NoZW1lIGFzIHdlIGFscmVhZHkgcHJvY2Vzc2VkXG4gICAgICAvLyB0aGVtIGluIHRoZSBTdHlsZUNvbXBpbGVyXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10gPSBbXTtcbiAgICB2YXIgZWxlbWVudE9yRGlyZWN0aXZlUHJvcHM6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHlbXSA9IFtdO1xuICAgIHZhciBlbGVtZW50T3JEaXJlY3RpdmVSZWZzOiBFbGVtZW50T3JEaXJlY3RpdmVSZWZbXSA9IFtdO1xuICAgIHZhciBlbGVtZW50VmFyczogVmFyaWFibGVBc3RbXSA9IFtdO1xuICAgIHZhciBldmVudHM6IEJvdW5kRXZlbnRBc3RbXSA9IFtdO1xuXG4gICAgdmFyIHRlbXBsYXRlRWxlbWVudE9yRGlyZWN0aXZlUHJvcHM6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHlbXSA9IFtdO1xuICAgIHZhciB0ZW1wbGF0ZU1hdGNoYWJsZUF0dHJzOiBzdHJpbmdbXVtdID0gW107XG4gICAgdmFyIHRlbXBsYXRlRWxlbWVudFZhcnM6IFZhcmlhYmxlQXN0W10gPSBbXTtcblxuICAgIHZhciBoYXNJbmxpbmVUZW1wbGF0ZXMgPSBmYWxzZTtcbiAgICB2YXIgYXR0cnMgPSBbXTtcbiAgICB2YXIgbGNFbE5hbWUgPSBzcGxpdE5zTmFtZShub2RlTmFtZS50b0xvd2VyQ2FzZSgpKVsxXTtcbiAgICB2YXIgaXNUZW1wbGF0ZUVsZW1lbnQgPSBsY0VsTmFtZSA9PSBURU1QTEFURV9FTEVNRU5UO1xuXG4gICAgZWxlbWVudC5hdHRycy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgdmFyIGhhc0JpbmRpbmcgPVxuICAgICAgICAgIHRoaXMuX3BhcnNlQXR0cihpc1RlbXBsYXRlRWxlbWVudCwgYXR0ciwgbWF0Y2hhYmxlQXR0cnMsIGVsZW1lbnRPckRpcmVjdGl2ZVByb3BzLCBldmVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPckRpcmVjdGl2ZVJlZnMsIGVsZW1lbnRWYXJzKTtcbiAgICAgIHZhciBoYXNUZW1wbGF0ZUJpbmRpbmcgPSB0aGlzLl9wYXJzZUlubGluZVRlbXBsYXRlQmluZGluZyhcbiAgICAgICAgICBhdHRyLCB0ZW1wbGF0ZU1hdGNoYWJsZUF0dHJzLCB0ZW1wbGF0ZUVsZW1lbnRPckRpcmVjdGl2ZVByb3BzLCB0ZW1wbGF0ZUVsZW1lbnRWYXJzKTtcbiAgICAgIGlmICghaGFzQmluZGluZyAmJiAhaGFzVGVtcGxhdGVCaW5kaW5nKSB7XG4gICAgICAgIC8vIGRvbid0IGluY2x1ZGUgdGhlIGJpbmRpbmdzIGFzIGF0dHJpYnV0ZXMgYXMgd2VsbCBpbiB0aGUgQVNUXG4gICAgICAgIGF0dHJzLnB1c2godGhpcy52aXNpdEF0dHIoYXR0ciwgbnVsbCkpO1xuICAgICAgICBtYXRjaGFibGVBdHRycy5wdXNoKFthdHRyLm5hbWUsIGF0dHIudmFsdWVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNUZW1wbGF0ZUJpbmRpbmcpIHtcbiAgICAgICAgaGFzSW5saW5lVGVtcGxhdGVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciBlbGVtZW50Q3NzU2VsZWN0b3IgPSBjcmVhdGVFbGVtZW50Q3NzU2VsZWN0b3Iobm9kZU5hbWUsIG1hdGNoYWJsZUF0dHJzKTtcbiAgICB2YXIgZGlyZWN0aXZlTWV0YXMgPSB0aGlzLl9wYXJzZURpcmVjdGl2ZXModGhpcy5zZWxlY3Rvck1hdGNoZXIsIGVsZW1lbnRDc3NTZWxlY3Rvcik7XG4gICAgdmFyIHJlZmVyZW5jZXM6IFJlZmVyZW5jZUFzdFtdID0gW107XG4gICAgdmFyIGRpcmVjdGl2ZUFzdHMgPSB0aGlzLl9jcmVhdGVEaXJlY3RpdmVBc3RzKGlzVGVtcGxhdGVFbGVtZW50LCBlbGVtZW50Lm5hbWUsIGRpcmVjdGl2ZU1ldGFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JEaXJlY3RpdmVQcm9wcywgZWxlbWVudE9yRGlyZWN0aXZlUmVmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zb3VyY2VTcGFuLCByZWZlcmVuY2VzKTtcbiAgICB2YXIgZWxlbWVudFByb3BzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdID1cbiAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudFByb3BlcnR5QXN0cyhlbGVtZW50Lm5hbWUsIGVsZW1lbnRPckRpcmVjdGl2ZVByb3BzLCBkaXJlY3RpdmVBc3RzKTtcbiAgICB2YXIgaXNWaWV3Um9vdCA9IHBhcmVudC5pc1RlbXBsYXRlRWxlbWVudCB8fCBoYXNJbmxpbmVUZW1wbGF0ZXM7XG4gICAgdmFyIHByb3ZpZGVyQ29udGV4dCA9XG4gICAgICAgIG5ldyBQcm92aWRlckVsZW1lbnRDb250ZXh0KHRoaXMucHJvdmlkZXJWaWV3Q29udGV4dCwgcGFyZW50LnByb3ZpZGVyQ29udGV4dCwgaXNWaWV3Um9vdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlQXN0cywgYXR0cnMsIHJlZmVyZW5jZXMsIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgdmFyIGNoaWxkcmVuID0gaHRtbFZpc2l0QWxsKFxuICAgICAgICBwcmVwYXJzZWRFbGVtZW50Lm5vbkJpbmRhYmxlID8gTk9OX0JJTkRBQkxFX1ZJU0lUT1IgOiB0aGlzLCBlbGVtZW50LmNoaWxkcmVuLFxuICAgICAgICBFbGVtZW50Q29udGV4dC5jcmVhdGUoaXNUZW1wbGF0ZUVsZW1lbnQsIGRpcmVjdGl2ZUFzdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RlbXBsYXRlRWxlbWVudCA/IHBhcmVudC5wcm92aWRlckNvbnRleHQgOiBwcm92aWRlckNvbnRleHQpKTtcbiAgICBwcm92aWRlckNvbnRleHQuYWZ0ZXJFbGVtZW50KCk7XG4gICAgLy8gT3ZlcnJpZGUgdGhlIGFjdHVhbCBzZWxlY3RvciB3aGVuIHRoZSBgbmdQcm9qZWN0QXNgIGF0dHJpYnV0ZSBpcyBwcm92aWRlZFxuICAgIHZhciBwcm9qZWN0aW9uU2VsZWN0b3IgPSBpc1ByZXNlbnQocHJlcGFyc2VkRWxlbWVudC5wcm9qZWN0QXMpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENzc1NlbGVjdG9yLnBhcnNlKHByZXBhcnNlZEVsZW1lbnQucHJvamVjdEFzKVswXSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Q3NzU2VsZWN0b3I7XG4gICAgdmFyIG5nQ29udGVudEluZGV4ID0gcGFyZW50LmZpbmROZ0NvbnRlbnRJbmRleChwcm9qZWN0aW9uU2VsZWN0b3IpO1xuICAgIHZhciBwYXJzZWRFbGVtZW50O1xuXG4gICAgaWYgKHByZXBhcnNlZEVsZW1lbnQudHlwZSA9PT0gUHJlcGFyc2VkRWxlbWVudFR5cGUuTkdfQ09OVEVOVCkge1xuICAgICAgaWYgKGlzUHJlc2VudChlbGVtZW50LmNoaWxkcmVuKSAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBgPG5nLWNvbnRlbnQ+IGVsZW1lbnQgY2Fubm90IGhhdmUgY29udGVudC4gPG5nLWNvbnRlbnQ+IG11c3QgYmUgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgPC9uZy1jb250ZW50PmAsXG4gICAgICAgICAgICBlbGVtZW50LnNvdXJjZVNwYW4pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZWRFbGVtZW50ID0gbmV3IE5nQ29udGVudEFzdChcbiAgICAgICAgICB0aGlzLm5nQ29udGVudENvdW50KyssIGhhc0lubGluZVRlbXBsYXRlcyA/IG51bGwgOiBuZ0NvbnRlbnRJbmRleCwgZWxlbWVudC5zb3VyY2VTcGFuKTtcbiAgICB9IGVsc2UgaWYgKGlzVGVtcGxhdGVFbGVtZW50KSB7XG4gICAgICB0aGlzLl9hc3NlcnRBbGxFdmVudHNQdWJsaXNoZWRCeURpcmVjdGl2ZXMoZGlyZWN0aXZlQXN0cywgZXZlbnRzKTtcbiAgICAgIHRoaXMuX2Fzc2VydE5vQ29tcG9uZW50c05vckVsZW1lbnRCaW5kaW5nc09uVGVtcGxhdGUoZGlyZWN0aXZlQXN0cywgZWxlbWVudFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNvdXJjZVNwYW4pO1xuXG4gICAgICBwYXJzZWRFbGVtZW50ID0gbmV3IEVtYmVkZGVkVGVtcGxhdGVBc3QoXG4gICAgICAgICAgYXR0cnMsIGV2ZW50cywgcmVmZXJlbmNlcywgZWxlbWVudFZhcnMsIHByb3ZpZGVyQ29udGV4dC50cmFuc2Zvcm1lZERpcmVjdGl2ZUFzdHMsXG4gICAgICAgICAgcHJvdmlkZXJDb250ZXh0LnRyYW5zZm9ybVByb3ZpZGVycywgcHJvdmlkZXJDb250ZXh0LnRyYW5zZm9ybWVkSGFzVmlld0NvbnRhaW5lciwgY2hpbGRyZW4sXG4gICAgICAgICAgaGFzSW5saW5lVGVtcGxhdGVzID8gbnVsbCA6IG5nQ29udGVudEluZGV4LCBlbGVtZW50LnNvdXJjZVNwYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hc3NlcnRPbmx5T25lQ29tcG9uZW50KGRpcmVjdGl2ZUFzdHMsIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgICBsZXQgbmdDb250ZW50SW5kZXggPVxuICAgICAgICAgIGhhc0lubGluZVRlbXBsYXRlcyA/IG51bGwgOiBwYXJlbnQuZmluZE5nQ29udGVudEluZGV4KHByb2plY3Rpb25TZWxlY3Rvcik7XG4gICAgICBwYXJzZWRFbGVtZW50ID0gbmV3IEVsZW1lbnRBc3QoXG4gICAgICAgICAgbm9kZU5hbWUsIGF0dHJzLCBlbGVtZW50UHJvcHMsIGV2ZW50cywgcmVmZXJlbmNlcyxcbiAgICAgICAgICBwcm92aWRlckNvbnRleHQudHJhbnNmb3JtZWREaXJlY3RpdmVBc3RzLCBwcm92aWRlckNvbnRleHQudHJhbnNmb3JtUHJvdmlkZXJzLFxuICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC50cmFuc2Zvcm1lZEhhc1ZpZXdDb250YWluZXIsIGNoaWxkcmVuLFxuICAgICAgICAgIGhhc0lubGluZVRlbXBsYXRlcyA/IG51bGwgOiBuZ0NvbnRlbnRJbmRleCwgZWxlbWVudC5zb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgaWYgKGhhc0lubGluZVRlbXBsYXRlcykge1xuICAgICAgdmFyIHRlbXBsYXRlQ3NzU2VsZWN0b3IgPSBjcmVhdGVFbGVtZW50Q3NzU2VsZWN0b3IoVEVNUExBVEVfRUxFTUVOVCwgdGVtcGxhdGVNYXRjaGFibGVBdHRycyk7XG4gICAgICB2YXIgdGVtcGxhdGVEaXJlY3RpdmVNZXRhcyA9IHRoaXMuX3BhcnNlRGlyZWN0aXZlcyh0aGlzLnNlbGVjdG9yTWF0Y2hlciwgdGVtcGxhdGVDc3NTZWxlY3Rvcik7XG4gICAgICB2YXIgdGVtcGxhdGVEaXJlY3RpdmVBc3RzID1cbiAgICAgICAgICB0aGlzLl9jcmVhdGVEaXJlY3RpdmVBc3RzKHRydWUsIGVsZW1lbnQubmFtZSwgdGVtcGxhdGVEaXJlY3RpdmVNZXRhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlRWxlbWVudE9yRGlyZWN0aXZlUHJvcHMsIFtdLCBlbGVtZW50LnNvdXJjZVNwYW4sIFtdKTtcbiAgICAgIHZhciB0ZW1wbGF0ZUVsZW1lbnRQcm9wczogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSA9IHRoaXMuX2NyZWF0ZUVsZW1lbnRQcm9wZXJ0eUFzdHMoXG4gICAgICAgICAgZWxlbWVudC5uYW1lLCB0ZW1wbGF0ZUVsZW1lbnRPckRpcmVjdGl2ZVByb3BzLCB0ZW1wbGF0ZURpcmVjdGl2ZUFzdHMpO1xuICAgICAgdGhpcy5fYXNzZXJ0Tm9Db21wb25lbnRzTm9yRWxlbWVudEJpbmRpbmdzT25UZW1wbGF0ZShcbiAgICAgICAgICB0ZW1wbGF0ZURpcmVjdGl2ZUFzdHMsIHRlbXBsYXRlRWxlbWVudFByb3BzLCBlbGVtZW50LnNvdXJjZVNwYW4pO1xuICAgICAgdmFyIHRlbXBsYXRlUHJvdmlkZXJDb250ZXh0ID0gbmV3IFByb3ZpZGVyRWxlbWVudENvbnRleHQoXG4gICAgICAgICAgdGhpcy5wcm92aWRlclZpZXdDb250ZXh0LCBwYXJlbnQucHJvdmlkZXJDb250ZXh0LCBwYXJlbnQuaXNUZW1wbGF0ZUVsZW1lbnQsXG4gICAgICAgICAgdGVtcGxhdGVEaXJlY3RpdmVBc3RzLCBbXSwgW10sIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgICB0ZW1wbGF0ZVByb3ZpZGVyQ29udGV4dC5hZnRlckVsZW1lbnQoKTtcblxuICAgICAgcGFyc2VkRWxlbWVudCA9IG5ldyBFbWJlZGRlZFRlbXBsYXRlQXN0KFtdLCBbXSwgW10sIHRlbXBsYXRlRWxlbWVudFZhcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVQcm92aWRlckNvbnRleHQudHJhbnNmb3JtZWREaXJlY3RpdmVBc3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlUHJvdmlkZXJDb250ZXh0LnRyYW5zZm9ybVByb3ZpZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVByb3ZpZGVyQ29udGV4dC50cmFuc2Zvcm1lZEhhc1ZpZXdDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlZEVsZW1lbnRdLCBuZ0NvbnRlbnRJbmRleCwgZWxlbWVudC5zb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUlubGluZVRlbXBsYXRlQmluZGluZyhhdHRyOiBIdG1sQXR0ckFzdCwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZhcnM6IFZhcmlhYmxlQXN0W10pOiBib29sZWFuIHtcbiAgICB2YXIgdGVtcGxhdGVCaW5kaW5nc1NvdXJjZSA9IG51bGw7XG4gICAgaWYgKGF0dHIubmFtZSA9PSBURU1QTEFURV9BVFRSKSB7XG4gICAgICB0ZW1wbGF0ZUJpbmRpbmdzU291cmNlID0gYXR0ci52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGF0dHIubmFtZS5zdGFydHNXaXRoKFRFTVBMQVRFX0FUVFJfUFJFRklYKSkge1xuICAgICAgdmFyIGtleSA9IGF0dHIubmFtZS5zdWJzdHJpbmcoVEVNUExBVEVfQVRUUl9QUkVGSVgubGVuZ3RoKTsgIC8vIHJlbW92ZSB0aGUgc3RhclxuICAgICAgdGVtcGxhdGVCaW5kaW5nc1NvdXJjZSA9IChhdHRyLnZhbHVlLmxlbmd0aCA9PSAwKSA/IGtleSA6IGtleSArICcgJyArIGF0dHIudmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGVtcGxhdGVCaW5kaW5nc1NvdXJjZSkpIHtcbiAgICAgIHZhciBiaW5kaW5ncyA9IHRoaXMuX3BhcnNlVGVtcGxhdGVCaW5kaW5ncyh0ZW1wbGF0ZUJpbmRpbmdzU291cmNlLCBhdHRyLnNvdXJjZVNwYW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5kaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYmluZGluZyA9IGJpbmRpbmdzW2ldO1xuICAgICAgICBpZiAoYmluZGluZy5rZXlJc1Zhcikge1xuICAgICAgICAgIHRhcmdldFZhcnMucHVzaChuZXcgVmFyaWFibGVBc3QoYmluZGluZy5rZXksIGJpbmRpbmcubmFtZSwgYXR0ci5zb3VyY2VTcGFuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRpbmcuZXhwcmVzc2lvbikpIHtcbiAgICAgICAgICB0aGlzLl9wYXJzZVByb3BlcnR5QXN0KGJpbmRpbmcua2V5LCBiaW5kaW5nLmV4cHJlc3Npb24sIGF0dHIuc291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLCB0YXJnZXRQcm9wcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMucHVzaChbYmluZGluZy5rZXksICcnXSk7XG4gICAgICAgICAgdGhpcy5fcGFyc2VMaXRlcmFsQXR0cihiaW5kaW5nLmtleSwgbnVsbCwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUF0dHIoaXNUZW1wbGF0ZUVsZW1lbnQ6IGJvb2xlYW4sIGF0dHI6IEh0bWxBdHRyQXN0LFxuICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdLCB0YXJnZXRFdmVudHM6IEJvdW5kRXZlbnRBc3RbXSxcbiAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlZnM6IEVsZW1lbnRPckRpcmVjdGl2ZVJlZltdLCB0YXJnZXRWYXJzOiBWYXJpYWJsZUFzdFtdKTogYm9vbGVhbiB7XG4gICAgdmFyIGF0dHJOYW1lID0gdGhpcy5fbm9ybWFsaXplQXR0cmlidXRlTmFtZShhdHRyLm5hbWUpO1xuICAgIHZhciBhdHRyVmFsdWUgPSBhdHRyLnZhbHVlO1xuICAgIHZhciBiaW5kUGFydHMgPSBSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2goQklORF9OQU1FX1JFR0VYUCwgYXR0ck5hbWUpO1xuICAgIHZhciBoYXNCaW5kaW5nID0gZmFsc2U7XG4gICAgaWYgKGlzUHJlc2VudChiaW5kUGFydHMpKSB7XG4gICAgICBoYXNCaW5kaW5nID0gdHJ1ZTtcbiAgICAgIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzFdKSkgeyAgLy8gbWF0Y2g6IGJpbmQtcHJvcFxuICAgICAgICB0aGlzLl9wYXJzZVByb3BlcnR5KGJpbmRQYXJ0c1s3XSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldE1hdGNoYWJsZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzJdKSkgeyAgLy8gbWF0Y2g6IHZhci1uYW1lIC8gdmFyLW5hbWU9XCJpZGVuXCJcbiAgICAgICAgdmFyIGlkZW50aWZpZXIgPSBiaW5kUGFydHNbN107XG4gICAgICAgIGlmIChpc1RlbXBsYXRlRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGBcInZhci1cIiBvbiA8dGVtcGxhdGU+IGVsZW1lbnRzIGlzIGRlcHJlY2F0ZWQuIFVzZSBcImxldC1cIiBpbnN0ZWFkIWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5zb3VyY2VTcGFuLCBQYXJzZUVycm9yTGV2ZWwuV0FSTklORyk7XG4gICAgICAgICAgdGhpcy5fcGFyc2VWYXJpYWJsZShpZGVudGlmaWVyLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0VmFycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYFwidmFyLVwiIG9uIG5vbiA8dGVtcGxhdGU+IGVsZW1lbnRzIGlzIGRlcHJlY2F0ZWQuIFVzZSBcInJlZi1cIiBpbnN0ZWFkIWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci5zb3VyY2VTcGFuLCBQYXJzZUVycm9yTGV2ZWwuV0FSTklORyk7XG4gICAgICAgICAgdGhpcy5fcGFyc2VSZWZlcmVuY2UoaWRlbnRpZmllciwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldFJlZnMpO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1szXSkpIHsgIC8vIG1hdGNoOiBsZXQtbmFtZVxuICAgICAgICBpZiAoaXNUZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgICAgICB2YXIgaWRlbnRpZmllciA9IGJpbmRQYXJ0c1s3XTtcbiAgICAgICAgICB0aGlzLl9wYXJzZVZhcmlhYmxlKGlkZW50aWZpZXIsIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRWYXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9yZXBvcnRFcnJvcihgXCJsZXQtXCIgaXMgb25seSBzdXBwb3J0ZWQgb24gdGVtcGxhdGUgZWxlbWVudHMuYCwgYXR0ci5zb3VyY2VTcGFuKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChiaW5kUGFydHNbNF0pKSB7ICAvLyBtYXRjaDogcmVmLSAvICNpZGVuXG4gICAgICAgIHZhciBpZGVudGlmaWVyID0gYmluZFBhcnRzWzddO1xuICAgICAgICB0aGlzLl9wYXJzZVJlZmVyZW5jZShpZGVudGlmaWVyLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0UmVmcyk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1s1XSkpIHsgIC8vIG1hdGNoOiBvbi1ldmVudFxuICAgICAgICB0aGlzLl9wYXJzZUV2ZW50KGJpbmRQYXJ0c1s3XSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldE1hdGNoYWJsZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEV2ZW50cyk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1s2XSkpIHsgIC8vIG1hdGNoOiBiaW5kb24tcHJvcFxuICAgICAgICB0aGlzLl9wYXJzZVByb3BlcnR5KGJpbmRQYXJ0c1s3XSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldE1hdGNoYWJsZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBc3NpZ25tZW50RXZlbnQoYmluZFBhcnRzWzddLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEV2ZW50cyk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1s4XSkpIHsgIC8vIG1hdGNoOiBbKGV4cHIpXVxuICAgICAgICB0aGlzLl9wYXJzZVByb3BlcnR5KGJpbmRQYXJ0c1s4XSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldE1hdGNoYWJsZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzKTtcbiAgICAgICAgdGhpcy5fcGFyc2VBc3NpZ25tZW50RXZlbnQoYmluZFBhcnRzWzhdLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEV2ZW50cyk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1s5XSkpIHsgIC8vIG1hdGNoOiBbZXhwcl1cbiAgICAgICAgdGhpcy5fcGFyc2VQcm9wZXJ0eShiaW5kUGFydHNbOV0sIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wcyk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1sxMF0pKSB7ICAvLyBtYXRjaDogKGV2ZW50KVxuICAgICAgICB0aGlzLl9wYXJzZUV2ZW50KGJpbmRQYXJ0c1sxMF0sIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFdmVudHMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNCaW5kaW5nID0gdGhpcy5fcGFyc2VQcm9wZXJ0eUludGVycG9sYXRpb24oYXR0ck5hbWUsIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLCB0YXJnZXRQcm9wcyk7XG4gICAgfVxuICAgIGlmICghaGFzQmluZGluZykge1xuICAgICAgdGhpcy5fcGFyc2VMaXRlcmFsQXR0cihhdHRyTmFtZSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldFByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0JpbmRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9ub3JtYWxpemVBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2RhdGEtJykgPyBhdHRyTmFtZS5zdWJzdHJpbmcoNSkgOiBhdHRyTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlVmFyaWFibGUoaWRlbnRpZmllcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmFyczogVmFyaWFibGVBc3RbXSkge1xuICAgIGlmIChpZGVudGlmaWVyLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgICB0aGlzLl9yZXBvcnRFcnJvcihgXCItXCIgaXMgbm90IGFsbG93ZWQgaW4gdmFyaWFibGUgbmFtZXNgLCBzb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgdGFyZ2V0VmFycy5wdXNoKG5ldyBWYXJpYWJsZUFzdChpZGVudGlmaWVyLCB2YWx1ZSwgc291cmNlU3BhbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VSZWZlcmVuY2UoaWRlbnRpZmllcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlZnM6IEVsZW1lbnRPckRpcmVjdGl2ZVJlZltdKSB7XG4gICAgaWYgKGlkZW50aWZpZXIuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGBcIi1cIiBpcyBub3QgYWxsb3dlZCBpbiByZWZlcmVuY2UgbmFtZXNgLCBzb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgdGFyZ2V0UmVmcy5wdXNoKG5ldyBFbGVtZW50T3JEaXJlY3RpdmVSZWYoaWRlbnRpZmllciwgdmFsdWUsIHNvdXJjZVNwYW4pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlUHJvcGVydHkobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNYXRjaGFibGVBdHRyczogc3RyaW5nW11bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdKSB7XG4gICAgdGhpcy5fcGFyc2VQcm9wZXJ0eUFzdChuYW1lLCB0aGlzLl9wYXJzZUJpbmRpbmcoZXhwcmVzc2lvbiwgc291cmNlU3BhbiksIHNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNYXRjaGFibGVBdHRycywgdGFyZ2V0UHJvcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VQcm9wZXJ0eUludGVycG9sYXRpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzOiBzdHJpbmdbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdKTogYm9vbGVhbiB7XG4gICAgdmFyIGV4cHIgPSB0aGlzLl9wYXJzZUludGVycG9sYXRpb24odmFsdWUsIHNvdXJjZVNwYW4pO1xuICAgIGlmIChpc1ByZXNlbnQoZXhwcikpIHtcbiAgICAgIHRoaXMuX3BhcnNlUHJvcGVydHlBc3QobmFtZSwgZXhwciwgc291cmNlU3BhbiwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMsIHRhcmdldFByb3BzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZVByb3BlcnR5QXN0KG5hbWU6IHN0cmluZywgYXN0OiBBU1RXaXRoU291cmNlLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcHM6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHlbXSkge1xuICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLnB1c2goW25hbWUsIGFzdC5zb3VyY2VdKTtcbiAgICB0YXJnZXRQcm9wcy5wdXNoKG5ldyBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5KG5hbWUsIGFzdCwgZmFsc2UsIHNvdXJjZVNwYW4pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQXNzaWdubWVudEV2ZW50KG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzOiBzdHJpbmdbXVtdLCB0YXJnZXRFdmVudHM6IEJvdW5kRXZlbnRBc3RbXSkge1xuICAgIHRoaXMuX3BhcnNlRXZlbnQoYCR7bmFtZX1DaGFuZ2VgLCBgJHtleHByZXNzaW9ufT0kZXZlbnRgLCBzb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgIHRhcmdldEV2ZW50cyk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUV2ZW50KG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sIHRhcmdldEV2ZW50czogQm91bmRFdmVudEFzdFtdKSB7XG4gICAgLy8gbG9uZyBmb3JtYXQ6ICd0YXJnZXQ6IGV2ZW50TmFtZSdcbiAgICB2YXIgcGFydHMgPSBzcGxpdEF0Q29sb24obmFtZSwgW251bGwsIG5hbWVdKTtcbiAgICB2YXIgdGFyZ2V0ID0gcGFydHNbMF07XG4gICAgdmFyIGV2ZW50TmFtZSA9IHBhcnRzWzFdO1xuICAgIHZhciBhc3QgPSB0aGlzLl9wYXJzZUFjdGlvbihleHByZXNzaW9uLCBzb3VyY2VTcGFuKTtcbiAgICB0YXJnZXRNYXRjaGFibGVBdHRycy5wdXNoKFtuYW1lLCBhc3Quc291cmNlXSk7XG4gICAgdGFyZ2V0RXZlbnRzLnB1c2gobmV3IEJvdW5kRXZlbnRBc3QoZXZlbnROYW1lLCB0YXJnZXQsIGFzdCwgc291cmNlU3BhbikpO1xuICAgIC8vIERvbid0IGRldGVjdCBkaXJlY3RpdmVzIGZvciBldmVudCBuYW1lcyBmb3Igbm93LFxuICAgIC8vIHNvIGRvbid0IGFkZCB0aGUgZXZlbnQgbmFtZSB0byB0aGUgbWF0Y2hhYmxlQXR0cnNcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlTGl0ZXJhbEF0dHIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcHM6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHlbXSkge1xuICAgIHRhcmdldFByb3BzLnB1c2gobmV3IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHkoXG4gICAgICAgIG5hbWUsIHRoaXMuX2V4cHJQYXJzZXIud3JhcExpdGVyYWxQcmltaXRpdmUodmFsdWUsICcnKSwgdHJ1ZSwgc291cmNlU3BhbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VEaXJlY3RpdmVzKHNlbGVjdG9yTWF0Y2hlcjogU2VsZWN0b3JNYXRjaGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudENzc1NlbGVjdG9yOiBDc3NTZWxlY3Rvcik6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdIHtcbiAgICAvLyBOZWVkIHRvIHNvcnQgdGhlIGRpcmVjdGl2ZXMgc28gdGhhdCB3ZSBnZXQgY29uc2lzdGVudCByZXN1bHRzIHRocm91Z2hvdXQsXG4gICAgLy8gYXMgc2VsZWN0b3JNYXRjaGVyIHVzZXMgTWFwcyBpbnNpZGUuXG4gICAgLy8gQWxzbyBkZWR1cGUgZGlyZWN0aXZlcyBhcyB0aGV5IG1pZ2h0IG1hdGNoIG1vcmUgdGhhbiBvbmUgdGltZSFcbiAgICB2YXIgZGlyZWN0aXZlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZSh0aGlzLmRpcmVjdGl2ZXNJbmRleC5zaXplKTtcbiAgICBzZWxlY3Rvck1hdGNoZXIubWF0Y2goZWxlbWVudENzc1NlbGVjdG9yLCAoc2VsZWN0b3IsIGRpcmVjdGl2ZSkgPT4ge1xuICAgICAgZGlyZWN0aXZlc1t0aGlzLmRpcmVjdGl2ZXNJbmRleC5nZXQoZGlyZWN0aXZlKV0gPSBkaXJlY3RpdmU7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRpcmVjdGl2ZXMuZmlsdGVyKGRpciA9PiBpc1ByZXNlbnQoZGlyKSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEaXJlY3RpdmVBc3RzKGlzVGVtcGxhdGVFbGVtZW50OiBib29sZWFuLCBlbGVtZW50TmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudE9yRGlyZWN0aXZlUmVmczogRWxlbWVudE9yRGlyZWN0aXZlUmVmW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlZmVyZW5jZXM6IFJlZmVyZW5jZUFzdFtdKTogRGlyZWN0aXZlQXN0W10ge1xuICAgIHZhciBtYXRjaGVkUmVmZXJlbmNlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHZhciBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSA9IG51bGw7XG4gICAgdmFyIGRpcmVjdGl2ZUFzdHMgPSBkaXJlY3RpdmVzLm1hcCgoZGlyZWN0aXZlOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEpID0+IHtcbiAgICAgIGlmIChkaXJlY3RpdmUuaXNDb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50ID0gZGlyZWN0aXZlO1xuICAgICAgfVxuICAgICAgdmFyIGhvc3RQcm9wZXJ0aWVzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdID0gW107XG4gICAgICB2YXIgaG9zdEV2ZW50czogQm91bmRFdmVudEFzdFtdID0gW107XG4gICAgICB2YXIgZGlyZWN0aXZlUHJvcGVydGllczogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdFtdID0gW107XG4gICAgICB0aGlzLl9jcmVhdGVEaXJlY3RpdmVIb3N0UHJvcGVydHlBc3RzKGVsZW1lbnROYW1lLCBkaXJlY3RpdmUuaG9zdFByb3BlcnRpZXMsIHNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQcm9wZXJ0aWVzKTtcbiAgICAgIHRoaXMuX2NyZWF0ZURpcmVjdGl2ZUhvc3RFdmVudEFzdHMoZGlyZWN0aXZlLmhvc3RMaXN0ZW5lcnMsIHNvdXJjZVNwYW4sIGhvc3RFdmVudHMpO1xuICAgICAgdGhpcy5fY3JlYXRlRGlyZWN0aXZlUHJvcGVydHlBc3RzKGRpcmVjdGl2ZS5pbnB1dHMsIHByb3BzLCBkaXJlY3RpdmVQcm9wZXJ0aWVzKTtcbiAgICAgIGVsZW1lbnRPckRpcmVjdGl2ZVJlZnMuZm9yRWFjaCgoZWxPckRpclJlZikgPT4ge1xuICAgICAgICBpZiAoKGVsT3JEaXJSZWYudmFsdWUubGVuZ3RoID09PSAwICYmIGRpcmVjdGl2ZS5pc0NvbXBvbmVudCkgfHxcbiAgICAgICAgICAgIChkaXJlY3RpdmUuZXhwb3J0QXMgPT0gZWxPckRpclJlZi52YWx1ZSkpIHtcbiAgICAgICAgICB0YXJnZXRSZWZlcmVuY2VzLnB1c2gobmV3IFJlZmVyZW5jZUFzdChlbE9yRGlyUmVmLm5hbWUsIGlkZW50aWZpZXJUb2tlbihkaXJlY3RpdmUudHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxPckRpclJlZi5zb3VyY2VTcGFuKSk7XG4gICAgICAgICAgbWF0Y2hlZFJlZmVyZW5jZXMuYWRkKGVsT3JEaXJSZWYubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBEaXJlY3RpdmVBc3QoZGlyZWN0aXZlLCBkaXJlY3RpdmVQcm9wZXJ0aWVzLCBob3N0UHJvcGVydGllcywgaG9zdEV2ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVNwYW4pO1xuICAgIH0pO1xuICAgIGVsZW1lbnRPckRpcmVjdGl2ZVJlZnMuZm9yRWFjaCgoZWxPckRpclJlZikgPT4ge1xuICAgICAgaWYgKGVsT3JEaXJSZWYudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoIVNldFdyYXBwZXIuaGFzKG1hdGNoZWRSZWZlcmVuY2VzLCBlbE9yRGlyUmVmLm5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYFRoZXJlIGlzIG5vIGRpcmVjdGl2ZSB3aXRoIFwiZXhwb3J0QXNcIiBzZXQgdG8gXCIke2VsT3JEaXJSZWYudmFsdWV9XCJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsT3JEaXJSZWYuc291cmNlU3Bhbik7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGlzQmxhbmsoY29tcG9uZW50KSkge1xuICAgICAgICB2YXIgcmVmVG9rZW4gPSBudWxsO1xuICAgICAgICBpZiAoaXNUZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgICAgICByZWZUb2tlbiA9IGlkZW50aWZpZXJUb2tlbihJZGVudGlmaWVycy5UZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0UmVmZXJlbmNlcy5wdXNoKG5ldyBSZWZlcmVuY2VBc3QoZWxPckRpclJlZi5uYW1lLCByZWZUb2tlbiwgZWxPckRpclJlZi5zb3VyY2VTcGFuKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRpcmVjdGl2ZUFzdHM7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEaXJlY3RpdmVIb3N0UHJvcGVydHlBc3RzKGVsZW1lbnROYW1lOiBzdHJpbmcsIGhvc3RQcm9wczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BlcnR5QXN0czogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSkge1xuICAgIGlmIChpc1ByZXNlbnQoaG9zdFByb3BzKSkge1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKGhvc3RQcm9wcywgKGV4cHJlc3Npb246IHN0cmluZywgcHJvcE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB2YXIgZXhwckFzdCA9IHRoaXMuX3BhcnNlQmluZGluZyhleHByZXNzaW9uLCBzb3VyY2VTcGFuKTtcbiAgICAgICAgdGFyZ2V0UHJvcGVydHlBc3RzLnB1c2goXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbGVtZW50UHJvcGVydHlBc3QoZWxlbWVudE5hbWUsIHByb3BOYW1lLCBleHByQXN0LCBzb3VyY2VTcGFuKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEaXJlY3RpdmVIb3N0RXZlbnRBc3RzKGhvc3RMaXN0ZW5lcnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFdmVudEFzdHM6IEJvdW5kRXZlbnRBc3RbXSkge1xuICAgIGlmIChpc1ByZXNlbnQoaG9zdExpc3RlbmVycykpIHtcbiAgICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChob3N0TGlzdGVuZXJzLCAoZXhwcmVzc2lvbjogc3RyaW5nLCBwcm9wTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuX3BhcnNlRXZlbnQocHJvcE5hbWUsIGV4cHJlc3Npb24sIHNvdXJjZVNwYW4sIFtdLCB0YXJnZXRFdmVudEFzdHMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRGlyZWN0aXZlUHJvcGVydHlBc3RzKGRpcmVjdGl2ZVByb3BlcnRpZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRQcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Qm91bmREaXJlY3RpdmVQcm9wczogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdFtdKSB7XG4gICAgaWYgKGlzUHJlc2VudChkaXJlY3RpdmVQcm9wZXJ0aWVzKSkge1xuICAgICAgdmFyIGJvdW5kUHJvcHNCeU5hbWUgPSBuZXcgTWFwPHN0cmluZywgQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eT4oKTtcbiAgICAgIGJvdW5kUHJvcHMuZm9yRWFjaChib3VuZFByb3AgPT4ge1xuICAgICAgICB2YXIgcHJldlZhbHVlID0gYm91bmRQcm9wc0J5TmFtZS5nZXQoYm91bmRQcm9wLm5hbWUpO1xuICAgICAgICBpZiAoaXNCbGFuayhwcmV2VmFsdWUpIHx8IHByZXZWYWx1ZS5pc0xpdGVyYWwpIHtcbiAgICAgICAgICAvLyBnaXZlIFthXT1cImJcIiBhIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gYT1cImJcIiBvbiB0aGUgc2FtZSBlbGVtZW50XG4gICAgICAgICAgYm91bmRQcm9wc0J5TmFtZS5zZXQoYm91bmRQcm9wLm5hbWUsIGJvdW5kUHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goZGlyZWN0aXZlUHJvcGVydGllcywgKGVsUHJvcDogc3RyaW5nLCBkaXJQcm9wOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdmFyIGJvdW5kUHJvcCA9IGJvdW5kUHJvcHNCeU5hbWUuZ2V0KGVsUHJvcCk7XG5cbiAgICAgICAgLy8gQmluZGluZ3MgYXJlIG9wdGlvbmFsLCBzbyB0aGlzIGJpbmRpbmcgb25seSBuZWVkcyB0byBiZSBzZXQgdXAgaWYgYW4gZXhwcmVzc2lvbiBpcyBnaXZlbi5cbiAgICAgICAgaWYgKGlzUHJlc2VudChib3VuZFByb3ApKSB7XG4gICAgICAgICAgdGFyZ2V0Qm91bmREaXJlY3RpdmVQcm9wcy5wdXNoKG5ldyBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0KFxuICAgICAgICAgICAgICBkaXJQcm9wLCBib3VuZFByb3AubmFtZSwgYm91bmRQcm9wLmV4cHJlc3Npb24sIGJvdW5kUHJvcC5zb3VyY2VTcGFuKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUVsZW1lbnRQcm9wZXJ0eUFzdHMoZWxlbWVudE5hbWU6IHN0cmluZywgcHJvcHM6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHlbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBEaXJlY3RpdmVBc3RbXSk6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0W10ge1xuICAgIHZhciBib3VuZEVsZW1lbnRQcm9wczogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSA9IFtdO1xuICAgIHZhciBib3VuZERpcmVjdGl2ZVByb3BzSW5kZXggPSBuZXcgTWFwPHN0cmluZywgQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdD4oKTtcbiAgICBkaXJlY3RpdmVzLmZvckVhY2goKGRpcmVjdGl2ZTogRGlyZWN0aXZlQXN0KSA9PiB7XG4gICAgICBkaXJlY3RpdmUuaW5wdXRzLmZvckVhY2goKHByb3A6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QpID0+IHtcbiAgICAgICAgYm91bmREaXJlY3RpdmVQcm9wc0luZGV4LnNldChwcm9wLnRlbXBsYXRlTmFtZSwgcHJvcCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBwcm9wcy5mb3JFYWNoKChwcm9wOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5KSA9PiB7XG4gICAgICBpZiAoIXByb3AuaXNMaXRlcmFsICYmIGlzQmxhbmsoYm91bmREaXJlY3RpdmVQcm9wc0luZGV4LmdldChwcm9wLm5hbWUpKSkge1xuICAgICAgICBib3VuZEVsZW1lbnRQcm9wcy5wdXNoKHRoaXMuX2NyZWF0ZUVsZW1lbnRQcm9wZXJ0eUFzdChlbGVtZW50TmFtZSwgcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmV4cHJlc3Npb24sIHByb3Auc291cmNlU3BhbikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBib3VuZEVsZW1lbnRQcm9wcztcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUVsZW1lbnRQcm9wZXJ0eUFzdChlbGVtZW50TmFtZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGFzdDogQVNULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQm91bmRFbGVtZW50UHJvcGVydHlBc3Qge1xuICAgIHZhciB1bml0ID0gbnVsbDtcbiAgICB2YXIgYmluZGluZ1R5cGU7XG4gICAgdmFyIGJvdW5kUHJvcGVydHlOYW1lO1xuICAgIHZhciBwYXJ0cyA9IG5hbWUuc3BsaXQoUFJPUEVSVFlfUEFSVFNfU0VQQVJBVE9SKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBib3VuZFByb3BlcnR5TmFtZSA9IHRoaXMuX3NjaGVtYVJlZ2lzdHJ5LmdldE1hcHBlZFByb3BOYW1lKHBhcnRzWzBdKTtcbiAgICAgIGJpbmRpbmdUeXBlID0gUHJvcGVydHlCaW5kaW5nVHlwZS5Qcm9wZXJ0eTtcbiAgICAgIGlmICghdGhpcy5fc2NoZW1hUmVnaXN0cnkuaGFzUHJvcGVydHkoZWxlbWVudE5hbWUsIGJvdW5kUHJvcGVydHlOYW1lKSkge1xuICAgICAgICB0aGlzLl9yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIGBDYW4ndCBiaW5kIHRvICcke2JvdW5kUHJvcGVydHlOYW1lfScgc2luY2UgaXQgaXNuJ3QgYSBrbm93biBuYXRpdmUgcHJvcGVydHlgLFxuICAgICAgICAgICAgc291cmNlU3Bhbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJ0c1swXSA9PSBBVFRSSUJVVEVfUFJFRklYKSB7XG4gICAgICAgIGJvdW5kUHJvcGVydHlOYW1lID0gcGFydHNbMV07XG4gICAgICAgIGxldCBuc1NlcGFyYXRvcklkeCA9IGJvdW5kUHJvcGVydHlOYW1lLmluZGV4T2YoJzonKTtcbiAgICAgICAgaWYgKG5zU2VwYXJhdG9ySWR4ID4gLTEpIHtcbiAgICAgICAgICBsZXQgbnMgPSBib3VuZFByb3BlcnR5TmFtZS5zdWJzdHJpbmcoMCwgbnNTZXBhcmF0b3JJZHgpO1xuICAgICAgICAgIGxldCBuYW1lID0gYm91bmRQcm9wZXJ0eU5hbWUuc3Vic3RyaW5nKG5zU2VwYXJhdG9ySWR4ICsgMSk7XG4gICAgICAgICAgYm91bmRQcm9wZXJ0eU5hbWUgPSBtZXJnZU5zQW5kTmFtZShucywgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgYmluZGluZ1R5cGUgPSBQcm9wZXJ0eUJpbmRpbmdUeXBlLkF0dHJpYnV0ZTtcbiAgICAgIH0gZWxzZSBpZiAocGFydHNbMF0gPT0gQ0xBU1NfUFJFRklYKSB7XG4gICAgICAgIGJvdW5kUHJvcGVydHlOYW1lID0gcGFydHNbMV07XG4gICAgICAgIGJpbmRpbmdUeXBlID0gUHJvcGVydHlCaW5kaW5nVHlwZS5DbGFzcztcbiAgICAgIH0gZWxzZSBpZiAocGFydHNbMF0gPT0gU1RZTEVfUFJFRklYKSB7XG4gICAgICAgIHVuaXQgPSBwYXJ0cy5sZW5ndGggPiAyID8gcGFydHNbMl0gOiBudWxsO1xuICAgICAgICBib3VuZFByb3BlcnR5TmFtZSA9IHBhcnRzWzFdO1xuICAgICAgICBiaW5kaW5nVHlwZSA9IFByb3BlcnR5QmluZGluZ1R5cGUuU3R5bGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9yZXBvcnRFcnJvcihgSW52YWxpZCBwcm9wZXJ0eSBuYW1lICcke25hbWV9J2AsIHNvdXJjZVNwYW4pO1xuICAgICAgICBiaW5kaW5nVHlwZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdChib3VuZFByb3BlcnR5TmFtZSwgYmluZGluZ1R5cGUsIGFzdCwgdW5pdCwgc291cmNlU3Bhbik7XG4gIH1cblxuXG4gIHByaXZhdGUgX2ZpbmRDb21wb25lbnREaXJlY3RpdmVOYW1lcyhkaXJlY3RpdmVzOiBEaXJlY3RpdmVBc3RbXSk6IHN0cmluZ1tdIHtcbiAgICB2YXIgY29tcG9uZW50VHlwZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGRpcmVjdGl2ZXMuZm9yRWFjaChkaXJlY3RpdmUgPT4ge1xuICAgICAgdmFyIHR5cGVOYW1lID0gZGlyZWN0aXZlLmRpcmVjdGl2ZS50eXBlLm5hbWU7XG4gICAgICBpZiAoZGlyZWN0aXZlLmRpcmVjdGl2ZS5pc0NvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnRUeXBlTmFtZXMucHVzaCh0eXBlTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFR5cGVOYW1lcztcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2VydE9ubHlPbmVDb21wb25lbnQoZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge1xuICAgIHZhciBjb21wb25lbnRUeXBlTmFtZXMgPSB0aGlzLl9maW5kQ29tcG9uZW50RGlyZWN0aXZlTmFtZXMoZGlyZWN0aXZlcyk7XG4gICAgaWYgKGNvbXBvbmVudFR5cGVOYW1lcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLl9yZXBvcnRFcnJvcihgTW9yZSB0aGFuIG9uZSBjb21wb25lbnQ6ICR7Y29tcG9uZW50VHlwZU5hbWVzLmpvaW4oJywnKX1gLCBzb3VyY2VTcGFuKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hc3NlcnROb0NvbXBvbmVudHNOb3JFbGVtZW50QmluZGluZ3NPblRlbXBsYXRlKGRpcmVjdGl2ZXM6IERpcmVjdGl2ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wczogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHtcbiAgICB2YXIgY29tcG9uZW50VHlwZU5hbWVzOiBzdHJpbmdbXSA9IHRoaXMuX2ZpbmRDb21wb25lbnREaXJlY3RpdmVOYW1lcyhkaXJlY3RpdmVzKTtcbiAgICBpZiAoY29tcG9uZW50VHlwZU5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGBDb21wb25lbnRzIG9uIGFuIGVtYmVkZGVkIHRlbXBsYXRlOiAke2NvbXBvbmVudFR5cGVOYW1lcy5qb2luKCcsJyl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVNwYW4pO1xuICAgIH1cbiAgICBlbGVtZW50UHJvcHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIHRoaXMuX3JlcG9ydEVycm9yKFxuICAgICAgICAgIGBQcm9wZXJ0eSBiaW5kaW5nICR7cHJvcC5uYW1lfSBub3QgdXNlZCBieSBhbnkgZGlyZWN0aXZlIG9uIGFuIGVtYmVkZGVkIHRlbXBsYXRlYCxcbiAgICAgICAgICBzb3VyY2VTcGFuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2VydEFsbEV2ZW50c1B1Ymxpc2hlZEJ5RGlyZWN0aXZlcyhkaXJlY3RpdmVzOiBEaXJlY3RpdmVBc3RbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogQm91bmRFdmVudEFzdFtdKSB7XG4gICAgdmFyIGFsbERpcmVjdGl2ZUV2ZW50cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGRpcmVjdGl2ZXMuZm9yRWFjaChkaXJlY3RpdmUgPT4ge1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKGRpcmVjdGl2ZS5kaXJlY3RpdmUub3V0cHV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnROYW1lOiBzdHJpbmcsIF8pID0+IHsgYWxsRGlyZWN0aXZlRXZlbnRzLmFkZChldmVudE5hbWUpOyB9KTtcbiAgICB9KTtcbiAgICBldmVudHMuZm9yRWFjaChldmVudCA9PiB7XG4gICAgICBpZiAoaXNQcmVzZW50KGV2ZW50LnRhcmdldCkgfHwgIVNldFdyYXBwZXIuaGFzKGFsbERpcmVjdGl2ZUV2ZW50cywgZXZlbnQubmFtZSkpIHtcbiAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBgRXZlbnQgYmluZGluZyAke2V2ZW50LmZ1bGxOYW1lfSBub3QgZW1pdHRlZCBieSBhbnkgZGlyZWN0aXZlIG9uIGFuIGVtYmVkZGVkIHRlbXBsYXRlYCxcbiAgICAgICAgICAgIGV2ZW50LnNvdXJjZVNwYW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIE5vbkJpbmRhYmxlVmlzaXRvciBpbXBsZW1lbnRzIEh0bWxBc3RWaXNpdG9yIHtcbiAgdmlzaXRFbGVtZW50KGFzdDogSHRtbEVsZW1lbnRBc3QsIHBhcmVudDogRWxlbWVudENvbnRleHQpOiBFbGVtZW50QXN0IHtcbiAgICB2YXIgcHJlcGFyc2VkRWxlbWVudCA9IHByZXBhcnNlRWxlbWVudChhc3QpO1xuICAgIGlmIChwcmVwYXJzZWRFbGVtZW50LnR5cGUgPT09IFByZXBhcnNlZEVsZW1lbnRUeXBlLlNDUklQVCB8fFxuICAgICAgICBwcmVwYXJzZWRFbGVtZW50LnR5cGUgPT09IFByZXBhcnNlZEVsZW1lbnRUeXBlLlNUWUxFIHx8XG4gICAgICAgIHByZXBhcnNlZEVsZW1lbnQudHlwZSA9PT0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEVTSEVFVCkge1xuICAgICAgLy8gU2tpcHBpbmcgPHNjcmlwdD4gZm9yIHNlY3VyaXR5IHJlYXNvbnNcbiAgICAgIC8vIFNraXBwaW5nIDxzdHlsZT4gYW5kIHN0eWxlc2hlZXRzIGFzIHdlIGFscmVhZHkgcHJvY2Vzc2VkIHRoZW1cbiAgICAgIC8vIGluIHRoZSBTdHlsZUNvbXBpbGVyXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXR0ck5hbWVBbmRWYWx1ZXMgPSBhc3QuYXR0cnMubWFwKGF0dHJBc3QgPT4gW2F0dHJBc3QubmFtZSwgYXR0ckFzdC52YWx1ZV0pO1xuICAgIHZhciBzZWxlY3RvciA9IGNyZWF0ZUVsZW1lbnRDc3NTZWxlY3Rvcihhc3QubmFtZSwgYXR0ck5hbWVBbmRWYWx1ZXMpO1xuICAgIHZhciBuZ0NvbnRlbnRJbmRleCA9IHBhcmVudC5maW5kTmdDb250ZW50SW5kZXgoc2VsZWN0b3IpO1xuICAgIHZhciBjaGlsZHJlbiA9IGh0bWxWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4sIEVNUFRZX0VMRU1FTlRfQ09OVEVYVCk7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50QXN0KGFzdC5uYW1lLCBodG1sVmlzaXRBbGwodGhpcywgYXN0LmF0dHJzKSwgW10sIFtdLCBbXSwgW10sIFtdLCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIG5nQ29udGVudEluZGV4LCBhc3Quc291cmNlU3Bhbik7XG4gIH1cbiAgdmlzaXRDb21tZW50KGFzdDogSHRtbENvbW1lbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0QXR0cihhc3Q6IEh0bWxBdHRyQXN0LCBjb250ZXh0OiBhbnkpOiBBdHRyQXN0IHtcbiAgICByZXR1cm4gbmV3IEF0dHJBc3QoYXN0Lm5hbWUsIGFzdC52YWx1ZSwgYXN0LnNvdXJjZVNwYW4pO1xuICB9XG4gIHZpc2l0VGV4dChhc3Q6IEh0bWxUZXh0QXN0LCBwYXJlbnQ6IEVsZW1lbnRDb250ZXh0KTogVGV4dEFzdCB7XG4gICAgdmFyIG5nQ29udGVudEluZGV4ID0gcGFyZW50LmZpbmROZ0NvbnRlbnRJbmRleChURVhUX0NTU19TRUxFQ1RPUik7XG4gICAgcmV0dXJuIG5ldyBUZXh0QXN0KGFzdC52YWx1ZSwgbmdDb250ZW50SW5kZXgsIGFzdC5zb3VyY2VTcGFuKTtcbiAgfVxuICB2aXNpdEV4cGFuc2lvbihhc3Q6IEh0bWxFeHBhbnNpb25Bc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBhc3Q7IH1cbiAgdmlzaXRFeHBhbnNpb25DYXNlKGFzdDogSHRtbEV4cGFuc2lvbkNhc2VBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBhc3Q7IH1cbn1cblxuY2xhc3MgQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBleHByZXNzaW9uOiBBU1QsIHB1YmxpYyBpc0xpdGVyYWw6IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG59XG5cbmNsYXNzIEVsZW1lbnRPckRpcmVjdGl2ZVJlZiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogc3RyaW5nLCBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRDbGFzc2VzKGNsYXNzQXR0clZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnNwbGl0KGNsYXNzQXR0clZhbHVlLnRyaW0oKSwgL1xccysvZyk7XG59XG5cbmNsYXNzIEVsZW1lbnRDb250ZXh0IHtcbiAgc3RhdGljIGNyZWF0ZShpc1RlbXBsYXRlRWxlbWVudDogYm9vbGVhbiwgZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10sXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJDb250ZXh0OiBQcm92aWRlckVsZW1lbnRDb250ZXh0KTogRWxlbWVudENvbnRleHQge1xuICAgIHZhciBtYXRjaGVyID0gbmV3IFNlbGVjdG9yTWF0Y2hlcigpO1xuICAgIHZhciB3aWxkY2FyZE5nQ29udGVudEluZGV4ID0gbnVsbDtcbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPiAwICYmIGRpcmVjdGl2ZXNbMF0uZGlyZWN0aXZlLmlzQ29tcG9uZW50KSB7XG4gICAgICB2YXIgbmdDb250ZW50U2VsZWN0b3JzID0gZGlyZWN0aXZlc1swXS5kaXJlY3RpdmUudGVtcGxhdGUubmdDb250ZW50U2VsZWN0b3JzO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZ0NvbnRlbnRTZWxlY3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gbmdDb250ZW50U2VsZWN0b3JzW2ldO1xuICAgICAgICBpZiAoU3RyaW5nV3JhcHBlci5lcXVhbHMoc2VsZWN0b3IsICcqJykpIHtcbiAgICAgICAgICB3aWxkY2FyZE5nQ29udGVudEluZGV4ID0gaTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXRjaGVyLmFkZFNlbGVjdGFibGVzKENzc1NlbGVjdG9yLnBhcnNlKG5nQ29udGVudFNlbGVjdG9yc1tpXSksIGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgRWxlbWVudENvbnRleHQoaXNUZW1wbGF0ZUVsZW1lbnQsIG1hdGNoZXIsIHdpbGRjYXJkTmdDb250ZW50SW5kZXgsIHByb3ZpZGVyQ29udGV4dCk7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIGlzVGVtcGxhdGVFbGVtZW50OiBib29sZWFuLCBwcml2YXRlIF9uZ0NvbnRlbnRJbmRleE1hdGNoZXI6IFNlbGVjdG9yTWF0Y2hlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd2lsZGNhcmROZ0NvbnRlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgcHJvdmlkZXJDb250ZXh0OiBQcm92aWRlckVsZW1lbnRDb250ZXh0KSB7fVxuXG4gIGZpbmROZ0NvbnRlbnRJbmRleChzZWxlY3RvcjogQ3NzU2VsZWN0b3IpOiBudW1iZXIge1xuICAgIHZhciBuZ0NvbnRlbnRJbmRpY2VzID0gW107XG4gICAgdGhpcy5fbmdDb250ZW50SW5kZXhNYXRjaGVyLm1hdGNoKFxuICAgICAgICBzZWxlY3RvciwgKHNlbGVjdG9yLCBuZ0NvbnRlbnRJbmRleCkgPT4geyBuZ0NvbnRlbnRJbmRpY2VzLnB1c2gobmdDb250ZW50SW5kZXgpOyB9KTtcbiAgICBMaXN0V3JhcHBlci5zb3J0KG5nQ29udGVudEluZGljZXMpO1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fd2lsZGNhcmROZ0NvbnRlbnRJbmRleCkpIHtcbiAgICAgIG5nQ29udGVudEluZGljZXMucHVzaCh0aGlzLl93aWxkY2FyZE5nQ29udGVudEluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIG5nQ29udGVudEluZGljZXMubGVuZ3RoID4gMCA/IG5nQ29udGVudEluZGljZXNbMF0gOiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRDc3NTZWxlY3RvcihlbGVtZW50TmFtZTogc3RyaW5nLCBtYXRjaGFibGVBdHRyczogc3RyaW5nW11bXSk6IENzc1NlbGVjdG9yIHtcbiAgdmFyIGNzc1NlbGVjdG9yID0gbmV3IENzc1NlbGVjdG9yKCk7XG4gIGxldCBlbE5hbWVOb05zID0gc3BsaXROc05hbWUoZWxlbWVudE5hbWUpWzFdO1xuXG4gIGNzc1NlbGVjdG9yLnNldEVsZW1lbnQoZWxOYW1lTm9Ocyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGFibGVBdHRycy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBhdHRyTmFtZSA9IG1hdGNoYWJsZUF0dHJzW2ldWzBdO1xuICAgIGxldCBhdHRyTmFtZU5vTnMgPSBzcGxpdE5zTmFtZShhdHRyTmFtZSlbMV07XG4gICAgbGV0IGF0dHJWYWx1ZSA9IG1hdGNoYWJsZUF0dHJzW2ldWzFdO1xuXG4gICAgY3NzU2VsZWN0b3IuYWRkQXR0cmlidXRlKGF0dHJOYW1lTm9OcywgYXR0clZhbHVlKTtcbiAgICBpZiAoYXR0ck5hbWUudG9Mb3dlckNhc2UoKSA9PSBDTEFTU19BVFRSKSB7XG4gICAgICB2YXIgY2xhc3NlcyA9IHNwbGl0Q2xhc3NlcyhhdHRyVmFsdWUpO1xuICAgICAgY2xhc3Nlcy5mb3JFYWNoKGNsYXNzTmFtZSA9PiBjc3NTZWxlY3Rvci5hZGRDbGFzc05hbWUoY2xhc3NOYW1lKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjc3NTZWxlY3Rvcjtcbn1cblxudmFyIEVNUFRZX0VMRU1FTlRfQ09OVEVYVCA9IG5ldyBFbGVtZW50Q29udGV4dCh0cnVlLCBuZXcgU2VsZWN0b3JNYXRjaGVyKCksIG51bGwsIG51bGwpO1xudmFyIE5PTl9CSU5EQUJMRV9WSVNJVE9SID0gbmV3IE5vbkJpbmRhYmxlVmlzaXRvcigpO1xuXG5cbmV4cG9ydCBjbGFzcyBQaXBlQ29sbGVjdG9yIGV4dGVuZHMgUmVjdXJzaXZlQXN0VmlzaXRvciB7XG4gIHBpcGVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICB2aXNpdFBpcGUoYXN0OiBCaW5kaW5nUGlwZSwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB0aGlzLnBpcGVzLmFkZChhc3QubmFtZSk7XG4gICAgYXN0LmV4cC52aXNpdCh0aGlzKTtcbiAgICB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGl0ZW1zOiBDb21waWxlTWV0YWRhdGFXaXRoVHlwZVtdKTogQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGVbXSB7XG4gIGxldCByZXMgPSBbXTtcbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICBsZXQgaGFzTWF0Y2ggPVxuICAgICAgICByZXMuZmlsdGVyKHIgPT4gci50eXBlLm5hbWUgPT0gaXRlbS50eXBlLm5hbWUgJiYgci50eXBlLm1vZHVsZVVybCA9PSBpdGVtLnR5cGUubW9kdWxlVXJsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICByLnR5cGUucnVudGltZSA9PSBpdGVtLnR5cGUucnVudGltZSlcbiAgICAgICAgICAgIC5sZW5ndGggPiAwO1xuICAgIGlmICghaGFzTWF0Y2gpIHtcbiAgICAgIHJlcy5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXM7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';// Some of the code comes from WebComponents.JS\r\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/HTMLImports/path.js\r\n\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar StyleWithImports = (function () {\r\n function StyleWithImports(style, styleUrls) {\r\n this.style = style;\r\n this.styleUrls = styleUrls;\r\n }\r\n return StyleWithImports;\r\n}());\r\nexports.StyleWithImports = StyleWithImports;\r\nfunction isStyleUrlResolvable(url) {\r\n if (lang_1.isBlank(url) || url.length === 0 || url[0] == '/')\r\n return false;\r\n var schemeMatch = lang_1.RegExpWrapper.firstMatch(_urlWithSchemaRe, url);\r\n return lang_1.isBlank(schemeMatch) || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\r\n}\r\nexports.isStyleUrlResolvable = isStyleUrlResolvable;\r\n/**\r\n * Rewrites stylesheets by resolving and removing the @import urls that\r\n * are either relative or don't have a `package:` scheme\r\n */\r\nfunction extractStyleUrls(resolver, baseUrl, cssText) {\r\n var foundUrls = [];\r\n var modifiedCssText = lang_1.StringWrapper.replaceAllMapped(cssText, _cssImportRe, function (m) {\r\n var url = lang_1.isPresent(m[1]) ? m[1] : m[2];\r\n if (!isStyleUrlResolvable(url)) {\r\n // Do not attempt to resolve non-package absolute URLs with URI scheme\r\n return m[0];\r\n }\r\n foundUrls.push(resolver.resolve(baseUrl, url));\r\n return '';\r\n });\r\n return new StyleWithImports(modifiedCssText, foundUrls);\r\n}\r\nexports.extractStyleUrls = extractStyleUrls;\r\nvar _cssImportRe = /@import\\s+(?:url\\()?\\s*(?:(?:['\"]([^'\"]*))|([^;\\)\\s]*))[^;]*;?/g;\r\n// TODO: can't use /^[^:/?#.]+:/g due to clang-format bug:\r\n// https://github.com/angular/angular/issues/4596\r\nvar _urlWithSchemaRe = /^([a-zA-Z\\-\\+\\.]+):/g;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVfdXJsX3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3N0eWxlX3VybF9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0MsdUZBQXVGOztBQUV2RixxQkFBdUUsMEJBQTBCLENBQUMsQ0FBQTtBQUdsRztJQUNFLDBCQUFtQixLQUFhLEVBQVMsU0FBbUI7UUFBekMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFBRyxDQUFDO0lBQ2xFLHVCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFGWSx3QkFBZ0IsbUJBRTVCLENBQUE7QUFFRCw4QkFBcUMsR0FBVztJQUM5QyxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDcEUsSUFBSSxXQUFXLEdBQUcsb0JBQWEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEUsTUFBTSxDQUFDLGNBQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDMUYsQ0FBQztBQUplLDRCQUFvQix1QkFJbkMsQ0FBQTtBQUVEOzs7R0FHRztBQUNILDBCQUFpQyxRQUFxQixFQUFFLE9BQWUsRUFDdEMsT0FBZTtJQUM5QyxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDbkIsSUFBSSxlQUFlLEdBQUcsb0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQUMsQ0FBQztRQUM1RSxJQUFJLEdBQUcsR0FBRyxnQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0Isc0VBQXNFO1lBQ3RFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxDQUFDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBYmUsd0JBQWdCLG1CQWEvQixDQUFBO0FBRUQsSUFBSSxZQUFZLEdBQUcsaUVBQWlFLENBQUM7QUFDckYsMERBQTBEO0FBQzFELHVEQUF1RDtBQUN2RCxJQUFJLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU29tZSBvZiB0aGUgY29kZSBjb21lcyBmcm9tIFdlYkNvbXBvbmVudHMuSlNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3dlYmNvbXBvbmVudHNqcy9ibG9iL21hc3Rlci9zcmMvSFRNTEltcG9ydHMvcGF0aC5qc1xuXG5pbXBvcnQge1JlZ0V4cCwgUmVnRXhwV3JhcHBlciwgU3RyaW5nV3JhcHBlciwgaXNQcmVzZW50LCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtVcmxSZXNvbHZlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3VybF9yZXNvbHZlcic7XG5cbmV4cG9ydCBjbGFzcyBTdHlsZVdpdGhJbXBvcnRzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHN0eWxlOiBzdHJpbmcsIHB1YmxpYyBzdHlsZVVybHM6IHN0cmluZ1tdKSB7fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHlsZVVybFJlc29sdmFibGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzQmxhbmsodXJsKSB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybFswXSA9PSAnLycpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNjaGVtZU1hdGNoID0gUmVnRXhwV3JhcHBlci5maXJzdE1hdGNoKF91cmxXaXRoU2NoZW1hUmUsIHVybCk7XG4gIHJldHVybiBpc0JsYW5rKHNjaGVtZU1hdGNoKSB8fCBzY2hlbWVNYXRjaFsxXSA9PSAncGFja2FnZScgfHwgc2NoZW1lTWF0Y2hbMV0gPT0gJ2Fzc2V0Jztcbn1cblxuLyoqXG4gKiBSZXdyaXRlcyBzdHlsZXNoZWV0cyBieSByZXNvbHZpbmcgYW5kIHJlbW92aW5nIHRoZSBAaW1wb3J0IHVybHMgdGhhdFxuICogYXJlIGVpdGhlciByZWxhdGl2ZSBvciBkb24ndCBoYXZlIGEgYHBhY2thZ2U6YCBzY2hlbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RTdHlsZVVybHMocmVzb2x2ZXI6IFVybFJlc29sdmVyLCBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NUZXh0OiBzdHJpbmcpOiBTdHlsZVdpdGhJbXBvcnRzIHtcbiAgdmFyIGZvdW5kVXJscyA9IFtdO1xuICB2YXIgbW9kaWZpZWRDc3NUZXh0ID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGNzc1RleHQsIF9jc3NJbXBvcnRSZSwgKG0pID0+IHtcbiAgICB2YXIgdXJsID0gaXNQcmVzZW50KG1bMV0pID8gbVsxXSA6IG1bMl07XG4gICAgaWYgKCFpc1N0eWxlVXJsUmVzb2x2YWJsZSh1cmwpKSB7XG4gICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byByZXNvbHZlIG5vbi1wYWNrYWdlIGFic29sdXRlIFVSTHMgd2l0aCBVUkkgc2NoZW1lXG4gICAgICByZXR1cm4gbVswXTtcbiAgICB9XG4gICAgZm91bmRVcmxzLnB1c2gocmVzb2x2ZXIucmVzb2x2ZShiYXNlVXJsLCB1cmwpKTtcbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuICByZXR1cm4gbmV3IFN0eWxlV2l0aEltcG9ydHMobW9kaWZpZWRDc3NUZXh0LCBmb3VuZFVybHMpO1xufVxuXG52YXIgX2Nzc0ltcG9ydFJlID0gL0BpbXBvcnRcXHMrKD86dXJsXFwoKT9cXHMqKD86KD86WydcIl0oW14nXCJdKikpfChbXjtcXClcXHNdKikpW147XSo7Py9nO1xuLy8gVE9ETzogY2FuJ3QgdXNlIC9eW146Lz8jLl0rOi9nIGR1ZSB0byBjbGFuZy1mb3JtYXQgYnVnOlxuLy8gICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNDU5NlxudmFyIF91cmxXaXRoU2NoZW1hUmUgPSAvXihbYS16QS1aXFwtXFwrXFwuXSspOi9nO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar HtmlTextAst = (function () {\r\n function HtmlTextAst(value, sourceSpan) {\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlTextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\r\n return HtmlTextAst;\r\n}());\r\nexports.HtmlTextAst = HtmlTextAst;\r\nvar HtmlExpansionAst = (function () {\r\n function HtmlExpansionAst(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {\r\n this.switchValue = switchValue;\r\n this.type = type;\r\n this.cases = cases;\r\n this.sourceSpan = sourceSpan;\r\n this.switchValueSourceSpan = switchValueSourceSpan;\r\n }\r\n HtmlExpansionAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitExpansion(this, context);\r\n };\r\n return HtmlExpansionAst;\r\n}());\r\nexports.HtmlExpansionAst = HtmlExpansionAst;\r\nvar HtmlExpansionCaseAst = (function () {\r\n function HtmlExpansionCaseAst(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {\r\n this.value = value;\r\n this.expression = expression;\r\n this.sourceSpan = sourceSpan;\r\n this.valueSourceSpan = valueSourceSpan;\r\n this.expSourceSpan = expSourceSpan;\r\n }\r\n HtmlExpansionCaseAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitExpansionCase(this, context);\r\n };\r\n return HtmlExpansionCaseAst;\r\n}());\r\nexports.HtmlExpansionCaseAst = HtmlExpansionCaseAst;\r\nvar HtmlAttrAst = (function () {\r\n function HtmlAttrAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlAttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };\r\n return HtmlAttrAst;\r\n}());\r\nexports.HtmlAttrAst = HtmlAttrAst;\r\nvar HtmlElementAst = (function () {\r\n function HtmlElementAst(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan) {\r\n this.name = name;\r\n this.attrs = attrs;\r\n this.children = children;\r\n this.sourceSpan = sourceSpan;\r\n this.startSourceSpan = startSourceSpan;\r\n this.endSourceSpan = endSourceSpan;\r\n }\r\n HtmlElementAst.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); };\r\n return HtmlElementAst;\r\n}());\r\nexports.HtmlElementAst = HtmlElementAst;\r\nvar HtmlCommentAst = (function () {\r\n function HtmlCommentAst(value, sourceSpan) {\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlCommentAst.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); };\r\n return HtmlCommentAst;\r\n}());\r\nexports.HtmlCommentAst = HtmlCommentAst;\r\nfunction htmlVisitAll(visitor, asts, context) {\r\n if (context === void 0) { context = null; }\r\n var result = [];\r\n asts.forEach(function (ast) {\r\n var astResult = ast.visit(visitor, context);\r\n if (lang_1.isPresent(astResult)) {\r\n result.push(astResult);\r\n }\r\n });\r\n return result;\r\n}\r\nexports.htmlVisitAll = htmlVisitAll;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvaHRtbF9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBU25EO0lBQ0UscUJBQW1CLEtBQWEsRUFBUyxVQUEyQjtRQUFqRCxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7SUFBRyxDQUFDO0lBQ3hFLDJCQUFLLEdBQUwsVUFBTSxPQUF1QixFQUFFLE9BQVksSUFBUyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLGtCQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIWSxtQkFBVyxjQUd2QixDQUFBO0FBRUQ7SUFDRSwwQkFBbUIsV0FBbUIsRUFBUyxJQUFZLEVBQVMsS0FBNkIsRUFDOUUsVUFBMkIsRUFBUyxxQkFBc0M7UUFEMUUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDOUUsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBUywwQkFBcUIsR0FBckIscUJBQXFCLENBQWlCO0lBQUcsQ0FBQztJQUNqRyxnQ0FBSyxHQUFMLFVBQU0sT0FBdUIsRUFBRSxPQUFZO1FBQ3pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBTkQsSUFNQztBQU5ZLHdCQUFnQixtQkFNNUIsQ0FBQTtBQUVEO0lBQ0UsOEJBQW1CLEtBQWEsRUFBUyxVQUFxQixFQUMzQyxVQUEyQixFQUFTLGVBQWdDLEVBQ3BFLGFBQThCO1FBRjlCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQzNDLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ3BFLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtJQUFHLENBQUM7SUFFckQsb0NBQUssR0FBTCxVQUFNLE9BQXVCLEVBQUUsT0FBWTtRQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0gsMkJBQUM7QUFBRCxDQUFDLEFBUkQsSUFRQztBQVJZLDRCQUFvQix1QkFRaEMsQ0FBQTtBQUVEO0lBQ0UscUJBQW1CLElBQVksRUFBUyxLQUFhLEVBQVMsVUFBMkI7UUFBdEUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFpQjtJQUFHLENBQUM7SUFDN0YsMkJBQUssR0FBTCxVQUFNLE9BQXVCLEVBQUUsT0FBWSxJQUFTLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsa0JBQUM7QUFBRCxDQUFDLEFBSEQsSUFHQztBQUhZLG1CQUFXLGNBR3ZCLENBQUE7QUFFRDtJQUNFLHdCQUFtQixJQUFZLEVBQVMsS0FBb0IsRUFBUyxRQUFtQixFQUNyRSxVQUEyQixFQUFTLGVBQWdDLEVBQ3BFLGFBQThCO1FBRjlCLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyRSxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNwRSxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7SUFBRyxDQUFDO0lBQ3JELDhCQUFLLEdBQUwsVUFBTSxPQUF1QixFQUFFLE9BQVksSUFBUyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25HLHFCQUFDO0FBQUQsQ0FBQyxBQUxELElBS0M7QUFMWSxzQkFBYyxpQkFLMUIsQ0FBQTtBQUVEO0lBQ0Usd0JBQW1CLEtBQWEsRUFBUyxVQUEyQjtRQUFqRCxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7SUFBRyxDQUFDO0lBQ3hFLDhCQUFLLEdBQUwsVUFBTSxPQUF1QixFQUFFLE9BQVksSUFBUyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25HLHFCQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIWSxzQkFBYyxpQkFHMUIsQ0FBQTtBQVdELHNCQUE2QixPQUF1QixFQUFFLElBQWUsRUFBRSxPQUFtQjtJQUFuQix1QkFBbUIsR0FBbkIsY0FBbUI7SUFDeEYsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO1FBQ2QsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFUZSxvQkFBWSxlQVMzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmltcG9ydCB7UGFyc2VTb3VyY2VTcGFufSBmcm9tICcuL3BhcnNlX3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0bWxBc3Qge1xuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG4gIHZpc2l0KHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBIdG1sVGV4dEFzdCBpbXBsZW1lbnRzIEh0bWxBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IHN0cmluZywgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogSHRtbEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0VGV4dCh0aGlzLCBjb250ZXh0KTsgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbEV4cGFuc2lvbkFzdCBpbXBsZW1lbnRzIEh0bWxBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3dpdGNoVmFsdWU6IHN0cmluZywgcHVibGljIHR5cGU6IHN0cmluZywgcHVibGljIGNhc2VzOiBIdG1sRXhwYW5zaW9uQ2FzZUFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLCBwdWJsaWMgc3dpdGNoVmFsdWVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXhwYW5zaW9uKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdG1sRXhwYW5zaW9uQ2FzZUFzdCBpbXBsZW1lbnRzIEh0bWxBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IHN0cmluZywgcHVibGljIGV4cHJlc3Npb246IEh0bWxBc3RbXSxcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbiwgcHVibGljIHZhbHVlU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLFxuICAgICAgICAgICAgICBwdWJsaWMgZXhwU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuXG4gIHZpc2l0KHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXhwYW5zaW9uQ2FzZSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbEF0dHJBc3QgaW1wbGVtZW50cyBIdG1sQXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIHZhbHVlOiBzdHJpbmcsIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdEF0dHIodGhpcywgY29udGV4dCk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxFbGVtZW50QXN0IGltcGxlbWVudHMgSHRtbEFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBhdHRyczogSHRtbEF0dHJBc3RbXSwgcHVibGljIGNoaWxkcmVuOiBIdG1sQXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sIHB1YmxpYyBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgcHVibGljIGVuZFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogSHRtbEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0RWxlbWVudCh0aGlzLCBjb250ZXh0KTsgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbENvbW1lbnRBc3QgaW1wbGVtZW50cyBIdG1sQXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBzdHJpbmcsIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdENvbW1lbnQodGhpcywgY29udGV4dCk7IH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdG1sQXN0VmlzaXRvciB7XG4gIHZpc2l0RWxlbWVudChhc3Q6IEh0bWxFbGVtZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QXR0cihhc3Q6IEh0bWxBdHRyQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0VGV4dChhc3Q6IEh0bWxUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0Q29tbWVudChhc3Q6IEh0bWxDb21tZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RXhwYW5zaW9uKGFzdDogSHRtbEV4cGFuc2lvbkFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEV4cGFuc2lvbkNhc2UoYXN0OiBIdG1sRXhwYW5zaW9uQ2FzZUFzdCwgY29udGV4dDogYW55KTogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHRtbFZpc2l0QWxsKHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBhc3RzOiBIdG1sQXN0W10sIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnlbXSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgYXN0cy5mb3JFYWNoKGFzdCA9PiB7XG4gICAgdmFyIGFzdFJlc3VsdCA9IGFzdC52aXNpdCh2aXNpdG9yLCBjb250ZXh0KTtcbiAgICBpZiAoaXNQcmVzZW50KGFzdFJlc3VsdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGFzdFJlc3VsdCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar parse_util_1 = require('./parse_util');\r\nvar html_tags_1 = require('./html_tags');\r\n(function (HtmlTokenType) {\r\n HtmlTokenType[HtmlTokenType[\"TAG_OPEN_START\"] = 0] = \"TAG_OPEN_START\";\r\n HtmlTokenType[HtmlTokenType[\"TAG_OPEN_END\"] = 1] = \"TAG_OPEN_END\";\r\n HtmlTokenType[HtmlTokenType[\"TAG_OPEN_END_VOID\"] = 2] = \"TAG_OPEN_END_VOID\";\r\n HtmlTokenType[HtmlTokenType[\"TAG_CLOSE\"] = 3] = \"TAG_CLOSE\";\r\n HtmlTokenType[HtmlTokenType[\"TEXT\"] = 4] = \"TEXT\";\r\n HtmlTokenType[HtmlTokenType[\"ESCAPABLE_RAW_TEXT\"] = 5] = \"ESCAPABLE_RAW_TEXT\";\r\n HtmlTokenType[HtmlTokenType[\"RAW_TEXT\"] = 6] = \"RAW_TEXT\";\r\n HtmlTokenType[HtmlTokenType[\"COMMENT_START\"] = 7] = \"COMMENT_START\";\r\n HtmlTokenType[HtmlTokenType[\"COMMENT_END\"] = 8] = \"COMMENT_END\";\r\n HtmlTokenType[HtmlTokenType[\"CDATA_START\"] = 9] = \"CDATA_START\";\r\n HtmlTokenType[HtmlTokenType[\"CDATA_END\"] = 10] = \"CDATA_END\";\r\n HtmlTokenType[HtmlTokenType[\"ATTR_NAME\"] = 11] = \"ATTR_NAME\";\r\n HtmlTokenType[HtmlTokenType[\"ATTR_VALUE\"] = 12] = \"ATTR_VALUE\";\r\n HtmlTokenType[HtmlTokenType[\"DOC_TYPE\"] = 13] = \"DOC_TYPE\";\r\n HtmlTokenType[HtmlTokenType[\"EXPANSION_FORM_START\"] = 14] = \"EXPANSION_FORM_START\";\r\n HtmlTokenType[HtmlTokenType[\"EXPANSION_CASE_VALUE\"] = 15] = \"EXPANSION_CASE_VALUE\";\r\n HtmlTokenType[HtmlTokenType[\"EXPANSION_CASE_EXP_START\"] = 16] = \"EXPANSION_CASE_EXP_START\";\r\n HtmlTokenType[HtmlTokenType[\"EXPANSION_CASE_EXP_END\"] = 17] = \"EXPANSION_CASE_EXP_END\";\r\n HtmlTokenType[HtmlTokenType[\"EXPANSION_FORM_END\"] = 18] = \"EXPANSION_FORM_END\";\r\n HtmlTokenType[HtmlTokenType[\"EOF\"] = 19] = \"EOF\";\r\n})(exports.HtmlTokenType || (exports.HtmlTokenType = {}));\r\nvar HtmlTokenType = exports.HtmlTokenType;\r\nvar HtmlToken = (function () {\r\n function HtmlToken(type, parts, sourceSpan) {\r\n this.type = type;\r\n this.parts = parts;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n return HtmlToken;\r\n}());\r\nexports.HtmlToken = HtmlToken;\r\nvar HtmlTokenError = (function (_super) {\r\n __extends(HtmlTokenError, _super);\r\n function HtmlTokenError(errorMsg, tokenType, span) {\r\n _super.call(this, span, errorMsg);\r\n this.tokenType = tokenType;\r\n }\r\n return HtmlTokenError;\r\n}(parse_util_1.ParseError));\r\nexports.HtmlTokenError = HtmlTokenError;\r\nvar HtmlTokenizeResult = (function () {\r\n function HtmlTokenizeResult(tokens, errors) {\r\n this.tokens = tokens;\r\n this.errors = errors;\r\n }\r\n return HtmlTokenizeResult;\r\n}());\r\nexports.HtmlTokenizeResult = HtmlTokenizeResult;\r\nfunction tokenizeHtml(sourceContent, sourceUrl, tokenizeExpansionForms) {\r\n if (tokenizeExpansionForms === void 0) { tokenizeExpansionForms = false; }\r\n return new _HtmlTokenizer(new parse_util_1.ParseSourceFile(sourceContent, sourceUrl), tokenizeExpansionForms)\r\n .tokenize();\r\n}\r\nexports.tokenizeHtml = tokenizeHtml;\r\nvar $EOF = 0;\r\nvar $TAB = 9;\r\nvar $LF = 10;\r\nvar $FF = 12;\r\nvar $CR = 13;\r\nvar $SPACE = 32;\r\nvar $BANG = 33;\r\nvar $DQ = 34;\r\nvar $HASH = 35;\r\nvar $$ = 36;\r\nvar $AMPERSAND = 38;\r\nvar $SQ = 39;\r\nvar $MINUS = 45;\r\nvar $SLASH = 47;\r\nvar $0 = 48;\r\nvar $SEMICOLON = 59;\r\nvar $9 = 57;\r\nvar $COLON = 58;\r\nvar $LT = 60;\r\nvar $EQ = 61;\r\nvar $GT = 62;\r\nvar $QUESTION = 63;\r\nvar $LBRACKET = 91;\r\nvar $RBRACKET = 93;\r\nvar $LBRACE = 123;\r\nvar $RBRACE = 125;\r\nvar $COMMA = 44;\r\nvar $A = 65;\r\nvar $F = 70;\r\nvar $X = 88;\r\nvar $Z = 90;\r\nvar $a = 97;\r\nvar $f = 102;\r\nvar $z = 122;\r\nvar $x = 120;\r\nvar $NBSP = 160;\r\nvar CR_OR_CRLF_REGEXP = /\\r\\n?/g;\r\nfunction unexpectedCharacterErrorMsg(charCode) {\r\n var char = charCode === $EOF ? 'EOF' : lang_1.StringWrapper.fromCharCode(charCode);\r\n return \"Unexpected character \\\"\" + char + \"\\\"\";\r\n}\r\nfunction unknownEntityErrorMsg(entitySrc) {\r\n return \"Unknown entity \\\"\" + entitySrc + \"\\\" - use the \\\"&#<decimal>;\\\" or \\\"&#x<hex>;\\\" syntax\";\r\n}\r\nvar ControlFlowError = (function () {\r\n function ControlFlowError(error) {\r\n this.error = error;\r\n }\r\n return ControlFlowError;\r\n}());\r\n// See http://www.w3.org/TR/html51/syntax.html#writing\r\nvar _HtmlTokenizer = (function () {\r\n function _HtmlTokenizer(file, tokenizeExpansionForms) {\r\n this.file = file;\r\n this.tokenizeExpansionForms = tokenizeExpansionForms;\r\n // Note: this is always lowercase!\r\n this.peek = -1;\r\n this.nextPeek = -1;\r\n this.index = -1;\r\n this.line = 0;\r\n this.column = -1;\r\n this.expansionCaseStack = [];\r\n this.tokens = [];\r\n this.errors = [];\r\n this.input = file.content;\r\n this.length = file.content.length;\r\n this._advance();\r\n }\r\n _HtmlTokenizer.prototype._processCarriageReturns = function (content) {\r\n // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream\r\n // In order to keep the original position in the source, we can not\r\n // pre-process it.\r\n // Instead CRs are processed right before instantiating the tokens.\r\n return lang_1.StringWrapper.replaceAll(content, CR_OR_CRLF_REGEXP, '\\n');\r\n };\r\n _HtmlTokenizer.prototype.tokenize = function () {\r\n while (this.peek !== $EOF) {\r\n var start = this._getLocation();\r\n try {\r\n if (this._attemptCharCode($LT)) {\r\n if (this._attemptCharCode($BANG)) {\r\n if (this._attemptCharCode($LBRACKET)) {\r\n this._consumeCdata(start);\r\n }\r\n else if (this._attemptCharCode($MINUS)) {\r\n this._consumeComment(start);\r\n }\r\n else {\r\n this._consumeDocType(start);\r\n }\r\n }\r\n else if (this._attemptCharCode($SLASH)) {\r\n this._consumeTagClose(start);\r\n }\r\n else {\r\n this._consumeTagOpen(start);\r\n }\r\n }\r\n else if (isSpecialFormStart(this.peek, this.nextPeek) && this.tokenizeExpansionForms) {\r\n this._consumeExpansionFormStart();\r\n }\r\n else if (this.peek === $EQ && this.tokenizeExpansionForms) {\r\n this._consumeExpansionCaseStart();\r\n }\r\n else if (this.peek === $RBRACE && this.isInExpansionCase() &&\r\n this.tokenizeExpansionForms) {\r\n this._consumeExpansionCaseEnd();\r\n }\r\n else if (this.peek === $RBRACE && this.isInExpansionForm() &&\r\n this.tokenizeExpansionForms) {\r\n this._consumeExpansionFormEnd();\r\n }\r\n else {\r\n this._consumeText();\r\n }\r\n }\r\n catch (e) {\r\n if (e instanceof ControlFlowError) {\r\n this.errors.push(e.error);\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n this._beginToken(HtmlTokenType.EOF);\r\n this._endToken([]);\r\n return new HtmlTokenizeResult(mergeTextTokens(this.tokens), this.errors);\r\n };\r\n _HtmlTokenizer.prototype._getLocation = function () {\r\n return new parse_util_1.ParseLocation(this.file, this.index, this.line, this.column);\r\n };\r\n _HtmlTokenizer.prototype._getSpan = function (start, end) {\r\n if (lang_1.isBlank(start)) {\r\n start = this._getLocation();\r\n }\r\n if (lang_1.isBlank(end)) {\r\n end = this._getLocation();\r\n }\r\n return new parse_util_1.ParseSourceSpan(start, end);\r\n };\r\n _HtmlTokenizer.prototype._beginToken = function (type, start) {\r\n if (start === void 0) { start = null; }\r\n if (lang_1.isBlank(start)) {\r\n start = this._getLocation();\r\n }\r\n this.currentTokenStart = start;\r\n this.currentTokenType = type;\r\n };\r\n _HtmlTokenizer.prototype._endToken = function (parts, end) {\r\n if (end === void 0) { end = null; }\r\n if (lang_1.isBlank(end)) {\r\n end = this._getLocation();\r\n }\r\n var token = new HtmlToken(this.currentTokenType, parts, new parse_util_1.ParseSourceSpan(this.currentTokenStart, end));\r\n this.tokens.push(token);\r\n this.currentTokenStart = null;\r\n this.currentTokenType = null;\r\n return token;\r\n };\r\n _HtmlTokenizer.prototype._createError = function (msg, span) {\r\n var error = new HtmlTokenError(msg, this.currentTokenType, span);\r\n this.currentTokenStart = null;\r\n this.currentTokenType = null;\r\n return new ControlFlowError(error);\r\n };\r\n _HtmlTokenizer.prototype._advance = function () {\r\n if (this.index >= this.length) {\r\n throw this._createError(unexpectedCharacterErrorMsg($EOF), this._getSpan());\r\n }\r\n if (this.peek === $LF) {\r\n this.line++;\r\n this.column = 0;\r\n }\r\n else if (this.peek !== $LF && this.peek !== $CR) {\r\n this.column++;\r\n }\r\n this.index++;\r\n this.peek = this.index >= this.length ? $EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);\r\n this.nextPeek =\r\n this.index + 1 >= this.length ? $EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index + 1);\r\n };\r\n _HtmlTokenizer.prototype._attemptCharCode = function (charCode) {\r\n if (this.peek === charCode) {\r\n this._advance();\r\n return true;\r\n }\r\n return false;\r\n };\r\n _HtmlTokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) {\r\n if (compareCharCodeCaseInsensitive(this.peek, charCode)) {\r\n this._advance();\r\n return true;\r\n }\r\n return false;\r\n };\r\n _HtmlTokenizer.prototype._requireCharCode = function (charCode) {\r\n var location = this._getLocation();\r\n if (!this._attemptCharCode(charCode)) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location, location));\r\n }\r\n };\r\n _HtmlTokenizer.prototype._attemptStr = function (chars) {\r\n for (var i = 0; i < chars.length; i++) {\r\n if (!this._attemptCharCode(lang_1.StringWrapper.charCodeAt(chars, i))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n _HtmlTokenizer.prototype._attemptStrCaseInsensitive = function (chars) {\r\n for (var i = 0; i < chars.length; i++) {\r\n if (!this._attemptCharCodeCaseInsensitive(lang_1.StringWrapper.charCodeAt(chars, i))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n _HtmlTokenizer.prototype._requireStr = function (chars) {\r\n var location = this._getLocation();\r\n if (!this._attemptStr(chars)) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location));\r\n }\r\n };\r\n _HtmlTokenizer.prototype._attemptCharCodeUntilFn = function (predicate) {\r\n while (!predicate(this.peek)) {\r\n this._advance();\r\n }\r\n };\r\n _HtmlTokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) {\r\n var start = this._getLocation();\r\n this._attemptCharCodeUntilFn(predicate);\r\n if (this.index - start.offset < len) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(start, start));\r\n }\r\n };\r\n _HtmlTokenizer.prototype._attemptUntilChar = function (char) {\r\n while (this.peek !== char) {\r\n this._advance();\r\n }\r\n };\r\n _HtmlTokenizer.prototype._readChar = function (decodeEntities) {\r\n if (decodeEntities && this.peek === $AMPERSAND) {\r\n return this._decodeEntity();\r\n }\r\n else {\r\n var index = this.index;\r\n this._advance();\r\n return this.input[index];\r\n }\r\n };\r\n _HtmlTokenizer.prototype._decodeEntity = function () {\r\n var start = this._getLocation();\r\n this._advance();\r\n if (this._attemptCharCode($HASH)) {\r\n var isHex = this._attemptCharCode($x) || this._attemptCharCode($X);\r\n var numberStart = this._getLocation().offset;\r\n this._attemptCharCodeUntilFn(isDigitEntityEnd);\r\n if (this.peek != $SEMICOLON) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());\r\n }\r\n this._advance();\r\n var strNum = this.input.substring(numberStart, this.index - 1);\r\n try {\r\n var charCode = lang_1.NumberWrapper.parseInt(strNum, isHex ? 16 : 10);\r\n return lang_1.StringWrapper.fromCharCode(charCode);\r\n }\r\n catch (e) {\r\n var entity = this.input.substring(start.offset + 1, this.index - 1);\r\n throw this._createError(unknownEntityErrorMsg(entity), this._getSpan(start));\r\n }\r\n }\r\n else {\r\n var startPosition = this._savePosition();\r\n this._attemptCharCodeUntilFn(isNamedEntityEnd);\r\n if (this.peek != $SEMICOLON) {\r\n this._restorePosition(startPosition);\r\n return '&';\r\n }\r\n this._advance();\r\n var name_1 = this.input.substring(start.offset + 1, this.index - 1);\r\n var char = html_tags_1.NAMED_ENTITIES[name_1];\r\n if (lang_1.isBlank(char)) {\r\n throw this._createError(unknownEntityErrorMsg(name_1), this._getSpan(start));\r\n }\r\n return char;\r\n }\r\n };\r\n _HtmlTokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) {\r\n var tagCloseStart;\r\n var textStart = this._getLocation();\r\n this._beginToken(decodeEntities ? HtmlTokenType.ESCAPABLE_RAW_TEXT : HtmlTokenType.RAW_TEXT, textStart);\r\n var parts = [];\r\n while (true) {\r\n tagCloseStart = this._getLocation();\r\n if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {\r\n break;\r\n }\r\n if (this.index > tagCloseStart.offset) {\r\n parts.push(this.input.substring(tagCloseStart.offset, this.index));\r\n }\r\n while (this.peek !== firstCharOfEnd) {\r\n parts.push(this._readChar(decodeEntities));\r\n }\r\n }\r\n return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);\r\n };\r\n _HtmlTokenizer.prototype._consumeComment = function (start) {\r\n var _this = this;\r\n this._beginToken(HtmlTokenType.COMMENT_START, start);\r\n this._requireCharCode($MINUS);\r\n this._endToken([]);\r\n var textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); });\r\n this._beginToken(HtmlTokenType.COMMENT_END, textToken.sourceSpan.end);\r\n this._endToken([]);\r\n };\r\n _HtmlTokenizer.prototype._consumeCdata = function (start) {\r\n var _this = this;\r\n this._beginToken(HtmlTokenType.CDATA_START, start);\r\n this._requireStr('CDATA[');\r\n this._endToken([]);\r\n var textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); });\r\n this._beginToken(HtmlTokenType.CDATA_END, textToken.sourceSpan.end);\r\n this._endToken([]);\r\n };\r\n _HtmlTokenizer.prototype._consumeDocType = function (start) {\r\n this._beginToken(HtmlTokenType.DOC_TYPE, start);\r\n this._attemptUntilChar($GT);\r\n this._advance();\r\n this._endToken([this.input.substring(start.offset + 2, this.index - 1)]);\r\n };\r\n _HtmlTokenizer.prototype._consumePrefixAndName = function () {\r\n var nameOrPrefixStart = this.index;\r\n var prefix = null;\r\n while (this.peek !== $COLON && !isPrefixEnd(this.peek)) {\r\n this._advance();\r\n }\r\n var nameStart;\r\n if (this.peek === $COLON) {\r\n this._advance();\r\n prefix = this.input.substring(nameOrPrefixStart, this.index - 1);\r\n nameStart = this.index;\r\n }\r\n else {\r\n nameStart = nameOrPrefixStart;\r\n }\r\n this._requireCharCodeUntilFn(isNameEnd, this.index === nameStart ? 1 : 0);\r\n var name = this.input.substring(nameStart, this.index);\r\n return [prefix, name];\r\n };\r\n _HtmlTokenizer.prototype._consumeTagOpen = function (start) {\r\n var savedPos = this._savePosition();\r\n var lowercaseTagName;\r\n try {\r\n if (!isAsciiLetter(this.peek)) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());\r\n }\r\n var nameStart = this.index;\r\n this._consumeTagOpenStart(start);\r\n lowercaseTagName = this.input.substring(nameStart, this.index).toLowerCase();\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n while (this.peek !== $SLASH && this.peek !== $GT) {\r\n this._consumeAttributeName();\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n if (this._attemptCharCode($EQ)) {\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this._consumeAttributeValue();\r\n }\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n }\r\n this._consumeTagOpenEnd();\r\n }\r\n catch (e) {\r\n if (e instanceof ControlFlowError) {\r\n // When the start tag is invalid, assume we want a \"<\"\r\n this._restorePosition(savedPos);\r\n // Back to back text tokens are merged at the end\r\n this._beginToken(HtmlTokenType.TEXT, start);\r\n this._endToken(['<']);\r\n return;\r\n }\r\n throw e;\r\n }\r\n var contentTokenType = html_tags_1.getHtmlTagDefinition(lowercaseTagName).contentType;\r\n if (contentTokenType === html_tags_1.HtmlTagContentType.RAW_TEXT) {\r\n this._consumeRawTextWithTagClose(lowercaseTagName, false);\r\n }\r\n else if (contentTokenType === html_tags_1.HtmlTagContentType.ESCAPABLE_RAW_TEXT) {\r\n this._consumeRawTextWithTagClose(lowercaseTagName, true);\r\n }\r\n };\r\n _HtmlTokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) {\r\n var _this = this;\r\n var textToken = this._consumeRawText(decodeEntities, $LT, function () {\r\n if (!_this._attemptCharCode($SLASH))\r\n return false;\r\n _this._attemptCharCodeUntilFn(isNotWhitespace);\r\n if (!_this._attemptStrCaseInsensitive(lowercaseTagName))\r\n return false;\r\n _this._attemptCharCodeUntilFn(isNotWhitespace);\r\n if (!_this._attemptCharCode($GT))\r\n return false;\r\n return true;\r\n });\r\n this._beginToken(HtmlTokenType.TAG_CLOSE, textToken.sourceSpan.end);\r\n this._endToken([null, lowercaseTagName]);\r\n };\r\n _HtmlTokenizer.prototype._consumeTagOpenStart = function (start) {\r\n this._beginToken(HtmlTokenType.TAG_OPEN_START, start);\r\n var parts = this._consumePrefixAndName();\r\n this._endToken(parts);\r\n };\r\n _HtmlTokenizer.prototype._consumeAttributeName = function () {\r\n this._beginToken(HtmlTokenType.ATTR_NAME);\r\n var prefixAndName = this._consumePrefixAndName();\r\n this._endToken(prefixAndName);\r\n };\r\n _HtmlTokenizer.prototype._consumeAttributeValue = function () {\r\n this._beginToken(HtmlTokenType.ATTR_VALUE);\r\n var value;\r\n if (this.peek === $SQ || this.peek === $DQ) {\r\n var quoteChar = this.peek;\r\n this._advance();\r\n var parts = [];\r\n while (this.peek !== quoteChar) {\r\n parts.push(this._readChar(true));\r\n }\r\n value = parts.join('');\r\n this._advance();\r\n }\r\n else {\r\n var valueStart = this.index;\r\n this._requireCharCodeUntilFn(isNameEnd, 1);\r\n value = this.input.substring(valueStart, this.index);\r\n }\r\n this._endToken([this._processCarriageReturns(value)]);\r\n };\r\n _HtmlTokenizer.prototype._consumeTagOpenEnd = function () {\r\n var tokenType = this._attemptCharCode($SLASH) ? HtmlTokenType.TAG_OPEN_END_VOID :\r\n HtmlTokenType.TAG_OPEN_END;\r\n this._beginToken(tokenType);\r\n this._requireCharCode($GT);\r\n this._endToken([]);\r\n };\r\n _HtmlTokenizer.prototype._consumeTagClose = function (start) {\r\n this._beginToken(HtmlTokenType.TAG_CLOSE, start);\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n var prefixAndName;\r\n prefixAndName = this._consumePrefixAndName();\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this._requireCharCode($GT);\r\n this._endToken(prefixAndName);\r\n };\r\n _HtmlTokenizer.prototype._consumeExpansionFormStart = function () {\r\n this._beginToken(HtmlTokenType.EXPANSION_FORM_START, this._getLocation());\r\n this._requireCharCode($LBRACE);\r\n this._endToken([]);\r\n this._beginToken(HtmlTokenType.RAW_TEXT, this._getLocation());\r\n var condition = this._readUntil($COMMA);\r\n this._endToken([condition], this._getLocation());\r\n this._requireCharCode($COMMA);\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this._beginToken(HtmlTokenType.RAW_TEXT, this._getLocation());\r\n var type = this._readUntil($COMMA);\r\n this._endToken([type], this._getLocation());\r\n this._requireCharCode($COMMA);\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this.expansionCaseStack.push(HtmlTokenType.EXPANSION_FORM_START);\r\n };\r\n _HtmlTokenizer.prototype._consumeExpansionCaseStart = function () {\r\n this._requireCharCode($EQ);\r\n this._beginToken(HtmlTokenType.EXPANSION_CASE_VALUE, this._getLocation());\r\n var value = this._readUntil($LBRACE).trim();\r\n this._endToken([value], this._getLocation());\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this._beginToken(HtmlTokenType.EXPANSION_CASE_EXP_START, this._getLocation());\r\n this._requireCharCode($LBRACE);\r\n this._endToken([], this._getLocation());\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this.expansionCaseStack.push(HtmlTokenType.EXPANSION_CASE_EXP_START);\r\n };\r\n _HtmlTokenizer.prototype._consumeExpansionCaseEnd = function () {\r\n this._beginToken(HtmlTokenType.EXPANSION_CASE_EXP_END, this._getLocation());\r\n this._requireCharCode($RBRACE);\r\n this._endToken([], this._getLocation());\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this.expansionCaseStack.pop();\r\n };\r\n _HtmlTokenizer.prototype._consumeExpansionFormEnd = function () {\r\n this._beginToken(HtmlTokenType.EXPANSION_FORM_END, this._getLocation());\r\n this._requireCharCode($RBRACE);\r\n this._endToken([]);\r\n this.expansionCaseStack.pop();\r\n };\r\n _HtmlTokenizer.prototype._consumeText = function () {\r\n var start = this._getLocation();\r\n this._beginToken(HtmlTokenType.TEXT, start);\r\n var parts = [];\r\n var interpolation = false;\r\n if (this.peek === $LBRACE && this.nextPeek === $LBRACE) {\r\n parts.push(this._readChar(true));\r\n parts.push(this._readChar(true));\r\n interpolation = true;\r\n }\r\n else {\r\n parts.push(this._readChar(true));\r\n }\r\n while (!this.isTextEnd(interpolation)) {\r\n if (this.peek === $LBRACE && this.nextPeek === $LBRACE) {\r\n parts.push(this._readChar(true));\r\n parts.push(this._readChar(true));\r\n interpolation = true;\r\n }\r\n else if (this.peek === $RBRACE && this.nextPeek === $RBRACE && interpolation) {\r\n parts.push(this._readChar(true));\r\n parts.push(this._readChar(true));\r\n interpolation = false;\r\n }\r\n else {\r\n parts.push(this._readChar(true));\r\n }\r\n }\r\n this._endToken([this._processCarriageReturns(parts.join(''))]);\r\n };\r\n _HtmlTokenizer.prototype.isTextEnd = function (interpolation) {\r\n if (this.peek === $LT || this.peek === $EOF)\r\n return true;\r\n if (this.tokenizeExpansionForms) {\r\n if (isSpecialFormStart(this.peek, this.nextPeek))\r\n return true;\r\n if (this.peek === $RBRACE && !interpolation &&\r\n (this.isInExpansionCase() || this.isInExpansionForm()))\r\n return true;\r\n }\r\n return false;\r\n };\r\n _HtmlTokenizer.prototype._savePosition = function () {\r\n return [this.peek, this.index, this.column, this.line, this.tokens.length];\r\n };\r\n _HtmlTokenizer.prototype._readUntil = function (char) {\r\n var start = this.index;\r\n this._attemptUntilChar(char);\r\n return this.input.substring(start, this.index);\r\n };\r\n _HtmlTokenizer.prototype._restorePosition = function (position) {\r\n this.peek = position[0];\r\n this.index = position[1];\r\n this.column = position[2];\r\n this.line = position[3];\r\n var nbTokens = position[4];\r\n if (nbTokens < this.tokens.length) {\r\n // remove any extra tokens\r\n this.tokens = collection_1.ListWrapper.slice(this.tokens, 0, nbTokens);\r\n }\r\n };\r\n _HtmlTokenizer.prototype.isInExpansionCase = function () {\r\n return this.expansionCaseStack.length > 0 &&\r\n this.expansionCaseStack[this.expansionCaseStack.length - 1] ===\r\n HtmlTokenType.EXPANSION_CASE_EXP_START;\r\n };\r\n _HtmlTokenizer.prototype.isInExpansionForm = function () {\r\n return this.expansionCaseStack.length > 0 &&\r\n this.expansionCaseStack[this.expansionCaseStack.length - 1] ===\r\n HtmlTokenType.EXPANSION_FORM_START;\r\n };\r\n return _HtmlTokenizer;\r\n}());\r\nfunction isNotWhitespace(code) {\r\n return !isWhitespace(code) || code === $EOF;\r\n}\r\nfunction isWhitespace(code) {\r\n return (code >= $TAB && code <= $SPACE) || (code === $NBSP);\r\n}\r\nfunction isNameEnd(code) {\r\n return isWhitespace(code) || code === $GT || code === $SLASH || code === $SQ || code === $DQ ||\r\n code === $EQ;\r\n}\r\nfunction isPrefixEnd(code) {\r\n return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9);\r\n}\r\nfunction isDigitEntityEnd(code) {\r\n return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);\r\n}\r\nfunction isNamedEntityEnd(code) {\r\n return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);\r\n}\r\nfunction isSpecialFormStart(peek, nextPeek) {\r\n return peek === $LBRACE && nextPeek != $LBRACE;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return code >= $a && code <= $z || code >= $A && code <= $Z;\r\n}\r\nfunction isAsciiHexDigit(code) {\r\n return code >= $a && code <= $f || code >= $A && code <= $F || code >= $0 && code <= $9;\r\n}\r\nfunction compareCharCodeCaseInsensitive(code1, code2) {\r\n return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);\r\n}\r\nfunction toUpperCaseCharCode(code) {\r\n return code >= $a && code <= $z ? code - $a + $A : code;\r\n}\r\nfunction mergeTextTokens(srcTokens) {\r\n var dstTokens = [];\r\n var lastDstToken;\r\n for (var i = 0; i < srcTokens.length; i++) {\r\n var token = srcTokens[i];\r\n if (lang_1.isPresent(lastDstToken) && lastDstToken.type == HtmlTokenType.TEXT &&\r\n token.type == HtmlTokenType.TEXT) {\r\n lastDstToken.parts[0] += token.parts[0];\r\n lastDstToken.sourceSpan.end = token.sourceSpan.end;\r\n }\r\n else {\r\n lastDstToken = token;\r\n dstTokens.push(lastDstToken);\r\n }\r\n }\r\n return dstTokens;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9sZXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9odG1sX2xleGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFDM0QsMkJBQTBFLGNBQWMsQ0FBQyxDQUFBO0FBQ3pGLDBCQUF1RSxhQUFhLENBQUMsQ0FBQTtBQUVyRixXQUFZLGFBQWE7SUFDdkIscUVBQWMsQ0FBQTtJQUNkLGlFQUFZLENBQUE7SUFDWiwyRUFBaUIsQ0FBQTtJQUNqQiwyREFBUyxDQUFBO0lBQ1QsaURBQUksQ0FBQTtJQUNKLDZFQUFrQixDQUFBO0lBQ2xCLHlEQUFRLENBQUE7SUFDUixtRUFBYSxDQUFBO0lBQ2IsK0RBQVcsQ0FBQTtJQUNYLCtEQUFXLENBQUE7SUFDWCw0REFBUyxDQUFBO0lBQ1QsNERBQVMsQ0FBQTtJQUNULDhEQUFVLENBQUE7SUFDViwwREFBUSxDQUFBO0lBQ1Isa0ZBQW9CLENBQUE7SUFDcEIsa0ZBQW9CLENBQUE7SUFDcEIsMEZBQXdCLENBQUE7SUFDeEIsc0ZBQXNCLENBQUE7SUFDdEIsOEVBQWtCLENBQUE7SUFDbEIsZ0RBQUcsQ0FBQTtBQUNMLENBQUMsRUFyQlcscUJBQWEsS0FBYixxQkFBYSxRQXFCeEI7QUFyQkQsSUFBWSxhQUFhLEdBQWIscUJBcUJYLENBQUE7QUFFRDtJQUNFLG1CQUFtQixJQUFtQixFQUFTLEtBQWUsRUFDM0MsVUFBMkI7UUFEM0IsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQVU7UUFDM0MsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7SUFBRyxDQUFDO0lBQ3BELGdCQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIWSxpQkFBUyxZQUdyQixD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IjpbImltcG9ydCB7XG4gIFN0cmluZ1dyYXBwZXIsXG4gIE51bWJlcldyYXBwZXIsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgQ09OU1RfRVhQUixcbiAgc2VyaWFsaXplRW51bVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UGFyc2VMb2NhdGlvbiwgUGFyc2VFcnJvciwgUGFyc2VTb3VyY2VGaWxlLCBQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4vcGFyc2VfdXRpbCc7XG5pbXBvcnQge2dldEh0bWxUYWdEZWZpbml0aW9uLCBIdG1sVGFnQ29udGVudFR5cGUsIE5BTUVEX0VOVElUSUVTfSBmcm9tICcuL2h0bWxfdGFncyc7XG5cbmV4cG9ydCBlbnVtIEh0bWxUb2tlblR5cGUge1xuICBUQUdfT1BFTl9TVEFSVCxcbiAgVEFHX09QRU5fRU5ELFxuICBUQUdfT1BFTl9FTkRfVk9JRCxcbiAgVEFHX0NMT1NFLFxuICBURVhULFxuICBFU0NBUEFCTEVfUkFXX1RFWFQsXG4gIFJBV19URVhULFxuICBDT01NRU5UX1NUQVJULFxuICBDT01NRU5UX0VORCxcbiAgQ0RBVEFfU1RBUlQsXG4gIENEQVRBX0VORCxcbiAgQVRUUl9OQU1FLFxuICBBVFRSX1ZBTFVFLFxuICBET0NfVFlQRSxcbiAgRVhQQU5TSU9OX0ZPUk1fU1RBUlQsXG4gIEVYUEFOU0lPTl9DQVNFX1ZBTFVFLFxuICBFWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQsXG4gIEVYUEFOU0lPTl9DQVNFX0VYUF9FTkQsXG4gIEVYUEFOU0lPTl9GT1JNX0VORCxcbiAgRU9GXG59XG5cbmV4cG9ydCBjbGFzcyBIdG1sVG9rZW4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHlwZTogSHRtbFRva2VuVHlwZSwgcHVibGljIHBhcnRzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxUb2tlbkVycm9yIGV4dGVuZHMgUGFyc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGVycm9yTXNnOiBzdHJpbmcsIHB1YmxpYyB0b2tlblR5cGU6IEh0bWxUb2tlblR5cGUsIHNwYW46IFBhcnNlU291cmNlU3Bhbikge1xuICAgIHN1cGVyKHNwYW4sIGVycm9yTXNnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbFRva2VuaXplUmVzdWx0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRva2VuczogSHRtbFRva2VuW10sIHB1YmxpYyBlcnJvcnM6IEh0bWxUb2tlbkVycm9yW10pIHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZUh0bWwoc291cmNlQ29udGVudDogc3RyaW5nLCBzb3VyY2VVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5pemVFeHBhbnNpb25Gb3JtczogYm9vbGVhbiA9IGZhbHNlKTogSHRtbFRva2VuaXplUmVzdWx0IHtcbiAgcmV0dXJuIG5ldyBfSHRtbFRva2VuaXplcihuZXcgUGFyc2VTb3VyY2VGaWxlKHNvdXJjZUNvbnRlbnQsIHNvdXJjZVVybCksIHRva2VuaXplRXhwYW5zaW9uRm9ybXMpXG4gICAgICAudG9rZW5pemUoKTtcbn1cblxuY29uc3QgJEVPRiA9IDA7XG5jb25zdCAkVEFCID0gOTtcbmNvbnN0ICRMRiA9IDEwO1xuY29uc3QgJEZGID0gMTI7XG5jb25zdCAkQ1IgPSAxMztcblxuY29uc3QgJFNQQUNFID0gMzI7XG5cbmNvbnN0ICRCQU5HID0gMzM7XG5jb25zdCAkRFEgPSAzNDtcbmNvbnN0ICRIQVNIID0gMzU7XG5jb25zdCAkJCA9IDM2O1xuY29uc3QgJEFNUEVSU0FORCA9IDM4O1xuY29uc3QgJFNRID0gMzk7XG5jb25zdCAkTUlOVVMgPSA0NTtcbmNvbnN0ICRTTEFTSCA9IDQ3O1xuY29uc3QgJDAgPSA0ODtcblxuY29uc3QgJFNFTUlDT0xPTiA9IDU5O1xuXG5jb25zdCAkOSA9IDU3O1xuY29uc3QgJENPTE9OID0gNTg7XG5jb25zdCAkTFQgPSA2MDtcbmNvbnN0ICRFUSA9IDYxO1xuY29uc3QgJEdUID0gNjI7XG5jb25zdCAkUVVFU1RJT04gPSA2MztcbmNvbnN0ICRMQlJBQ0tFVCA9IDkxO1xuY29uc3QgJFJCUkFDS0VUID0gOTM7XG5jb25zdCAkTEJSQUNFID0gMTIzO1xuY29uc3QgJFJCUkFDRSA9IDEyNTtcbmNvbnN0ICRDT01NQSA9IDQ0O1xuY29uc3QgJEEgPSA2NTtcbmNvbnN0ICRGID0gNzA7XG5jb25zdCAkWCA9IDg4O1xuY29uc3QgJFogPSA5MDtcblxuY29uc3QgJGEgPSA5NztcbmNvbnN0ICRmID0gMTAyO1xuY29uc3QgJHogPSAxMjI7XG5jb25zdCAkeCA9IDEyMDtcblxuY29uc3QgJE5CU1AgPSAxNjA7XG5cbnZhciBDUl9PUl9DUkxGX1JFR0VYUCA9IC9cXHJcXG4/L2c7XG5cbmZ1bmN0aW9uIHVuZXhwZWN0ZWRDaGFyYWN0ZXJFcnJvck1zZyhjaGFyQ29kZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgdmFyIGNoYXIgPSBjaGFyQ29kZSA9PT0gJEVPRiA/ICdFT0YnIDogU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICByZXR1cm4gYFVuZXhwZWN0ZWQgY2hhcmFjdGVyIFwiJHtjaGFyfVwiYDtcbn1cblxuZnVuY3Rpb24gdW5rbm93bkVudGl0eUVycm9yTXNnKGVudGl0eVNyYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBVbmtub3duIGVudGl0eSBcIiR7ZW50aXR5U3JjfVwiIC0gdXNlIHRoZSBcIiYjPGRlY2ltYWw+O1wiIG9yICBcIiYjeDxoZXg+O1wiIHN5bnRheGA7XG59XG5cbmNsYXNzIENvbnRyb2xGbG93RXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXJyb3I6IEh0bWxUb2tlbkVycm9yKSB7fVxufVxuXG4vLyBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUxL3N5bnRheC5odG1sI3dyaXRpbmdcbmNsYXNzIF9IdG1sVG9rZW5pemVyIHtcbiAgcHJpdmF0ZSBpbnB1dDogc3RyaW5nO1xuICBwcml2YXRlIGxlbmd0aDogbnVtYmVyO1xuICAvLyBOb3RlOiB0aGlzIGlzIGFsd2F5cyBsb3dlcmNhc2UhXG4gIHByaXZhdGUgcGVlazogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgbmV4dFBlZWs6IG51bWJlciA9IC0xO1xuICBwcml2YXRlIGluZGV4OiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSBsaW5lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIGNvbHVtbjogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgY3VycmVudFRva2VuU3RhcnQ6IFBhcnNlTG9jYXRpb247XG4gIHByaXZhdGUgY3VycmVudFRva2VuVHlwZTogSHRtbFRva2VuVHlwZTtcblxuICBwcml2YXRlIGV4cGFuc2lvbkNhc2VTdGFjayA9IFtdO1xuXG4gIHRva2VuczogSHRtbFRva2VuW10gPSBbXTtcbiAgZXJyb3JzOiBIdG1sVG9rZW5FcnJvcltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlOiBQYXJzZVNvdXJjZUZpbGUsIHByaXZhdGUgdG9rZW5pemVFeHBhbnNpb25Gb3JtczogYm9vbGVhbikge1xuICAgIHRoaXMuaW5wdXQgPSBmaWxlLmNvbnRlbnQ7XG4gICAgdGhpcy5sZW5ndGggPSBmaWxlLmNvbnRlbnQubGVuZ3RoO1xuICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb2Nlc3NDYXJyaWFnZVJldHVybnMoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW1cbiAgICAvLyBJbiBvcmRlciB0byBrZWVwIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgc291cmNlLCB3ZSBjYW4gbm90XG4gICAgLy8gcHJlLXByb2Nlc3MgaXQuXG4gICAgLy8gSW5zdGVhZCBDUnMgYXJlIHByb2Nlc3NlZCByaWdodCBiZWZvcmUgaW5zdGFudGlhdGluZyB0aGUgdG9rZW5zLlxuICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoY29udGVudCwgQ1JfT1JfQ1JMRl9SRUdFWFAsICdcXG4nKTtcbiAgfVxuXG4gIHRva2VuaXplKCk6IEh0bWxUb2tlbml6ZVJlc3VsdCB7XG4gICAgd2hpbGUgKHRoaXMucGVlayAhPT0gJEVPRikge1xuICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJExUKSkge1xuICAgICAgICAgIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJEJBTkcpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRMQlJBQ0tFVCkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZUNkYXRhKHN0YXJ0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRNSU5VUykpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZUNvbW1lbnQoc3RhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZURvY1R5cGUoc3RhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRTTEFTSCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN1bWVUYWdDbG9zZShzdGFydCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN1bWVUYWdPcGVuKHN0YXJ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTcGVjaWFsRm9ybVN0YXJ0KHRoaXMucGVlaywgdGhpcy5uZXh0UGVlaykgJiYgdGhpcy50b2tlbml6ZUV4cGFuc2lvbkZvcm1zKSB7XG4gICAgICAgICAgdGhpcy5fY29uc3VtZUV4cGFuc2lvbkZvcm1TdGFydCgpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrID09PSAkRVEgJiYgdGhpcy50b2tlbml6ZUV4cGFuc2lvbkZvcm1zKSB7XG4gICAgICAgICAgdGhpcy5fY29uc3VtZUV4cGFuc2lvbkNhc2VTdGFydCgpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrID09PSAkUkJSQUNFICYmIHRoaXMuaXNJbkV4cGFuc2lvbkNhc2UoKSAmJlxuICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVFeHBhbnNpb25Gb3Jtcykge1xuICAgICAgICAgIHRoaXMuX2NvbnN1bWVFeHBhbnNpb25DYXNlRW5kKCk7XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsgPT09ICRSQlJBQ0UgJiYgdGhpcy5pc0luRXhwYW5zaW9uRm9ybSgpICYmXG4gICAgICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZUV4cGFuc2lvbkZvcm1zKSB7XG4gICAgICAgICAgdGhpcy5fY29uc3VtZUV4cGFuc2lvbkZvcm1FbmQoKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2NvbnN1bWVUZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDb250cm9sRmxvd0Vycm9yKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcnMucHVzaChlLmVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5FT0YpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcbiAgICByZXR1cm4gbmV3IEh0bWxUb2tlbml6ZVJlc3VsdChtZXJnZVRleHRUb2tlbnModGhpcy50b2tlbnMpLCB0aGlzLmVycm9ycyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRMb2NhdGlvbigpOiBQYXJzZUxvY2F0aW9uIHtcbiAgICByZXR1cm4gbmV3IFBhcnNlTG9jYXRpb24odGhpcy5maWxlLCB0aGlzLmluZGV4LCB0aGlzLmxpbmUsIHRoaXMuY29sdW1uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFNwYW4oc3RhcnQ/OiBQYXJzZUxvY2F0aW9uLCBlbmQ/OiBQYXJzZUxvY2F0aW9uKTogUGFyc2VTb3VyY2VTcGFuIHtcbiAgICBpZiAoaXNCbGFuayhzdGFydCkpIHtcbiAgICAgIHN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKGlzQmxhbmsoZW5kKSkge1xuICAgICAgZW5kID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQYXJzZVNvdXJjZVNwYW4oc3RhcnQsIGVuZCk7XG4gIH1cblxuICBwcml2YXRlIF9iZWdpblRva2VuKHR5cGU6IEh0bWxUb2tlblR5cGUsIHN0YXJ0OiBQYXJzZUxvY2F0aW9uID0gbnVsbCkge1xuICAgIGlmIChpc0JsYW5rKHN0YXJ0KSkge1xuICAgICAgc3RhcnQgPSB0aGlzLl9nZXRMb2NhdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRUb2tlblN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5UeXBlID0gdHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgX2VuZFRva2VuKHBhcnRzOiBzdHJpbmdbXSwgZW5kOiBQYXJzZUxvY2F0aW9uID0gbnVsbCk6IEh0bWxUb2tlbiB7XG4gICAgaWYgKGlzQmxhbmsoZW5kKSkge1xuICAgICAgZW5kID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB9XG4gICAgdmFyIHRva2VuID0gbmV3IEh0bWxUb2tlbih0aGlzLmN1cnJlbnRUb2tlblR5cGUsIHBhcnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBhcnNlU291cmNlU3Bhbih0aGlzLmN1cnJlbnRUb2tlblN0YXJ0LCBlbmQpKTtcbiAgICB0aGlzLnRva2Vucy5wdXNoKHRva2VuKTtcbiAgICB0aGlzLmN1cnJlbnRUb2tlblN0YXJ0ID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRUb2tlblR5cGUgPSBudWxsO1xuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUVycm9yKG1zZzogc3RyaW5nLCBzcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBDb250cm9sRmxvd0Vycm9yIHtcbiAgICB2YXIgZXJyb3IgPSBuZXcgSHRtbFRva2VuRXJyb3IobXNnLCB0aGlzLmN1cnJlbnRUb2tlblR5cGUsIHNwYW4pO1xuICAgIHRoaXMuY3VycmVudFRva2VuU3RhcnQgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFRva2VuVHlwZSA9IG51bGw7XG4gICAgcmV0dXJuIG5ldyBDb250cm9sRmxvd0Vycm9yKGVycm9yKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkdmFuY2UoKSB7XG4gICAgaWYgKHRoaXMuaW5kZXggPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUVycm9yKHVuZXhwZWN0ZWRDaGFyYWN0ZXJFcnJvck1zZygkRU9GKSwgdGhpcy5fZ2V0U3BhbigpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGVlayA9PT0gJExGKSB7XG4gICAgICB0aGlzLmxpbmUrKztcbiAgICAgIHRoaXMuY29sdW1uID0gMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGVlayAhPT0gJExGICYmIHRoaXMucGVlayAhPT0gJENSKSB7XG4gICAgICB0aGlzLmNvbHVtbisrO1xuICAgIH1cbiAgICB0aGlzLmluZGV4Kys7XG4gICAgdGhpcy5wZWVrID0gdGhpcy5pbmRleCA+PSB0aGlzLmxlbmd0aCA/ICRFT0YgOiBTdHJpbmdXcmFwcGVyLmNoYXJDb2RlQXQodGhpcy5pbnB1dCwgdGhpcy5pbmRleCk7XG4gICAgdGhpcy5uZXh0UGVlayA9XG4gICAgICAgIHRoaXMuaW5kZXggKyAxID49IHRoaXMubGVuZ3RoID8gJEVPRiA6IFN0cmluZ1dyYXBwZXIuY2hhckNvZGVBdCh0aGlzLmlucHV0LCB0aGlzLmluZGV4ICsgMSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRlbXB0Q2hhckNvZGUoY2hhckNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnBlZWsgPT09IGNoYXJDb2RlKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0ZW1wdENoYXJDb2RlQ2FzZUluc2Vuc2l0aXZlKGNoYXJDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoY29tcGFyZUNoYXJDb2RlQ2FzZUluc2Vuc2l0aXZlKHRoaXMucGVlaywgY2hhckNvZGUpKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZUNoYXJDb2RlKGNoYXJDb2RlOiBudW1iZXIpIHtcbiAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9nZXRMb2NhdGlvbigpO1xuICAgIGlmICghdGhpcy5fYXR0ZW1wdENoYXJDb2RlKGNoYXJDb2RlKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IodW5leHBlY3RlZENoYXJhY3RlckVycm9yTXNnKHRoaXMucGVlayksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRTcGFuKGxvY2F0aW9uLCBsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2F0dGVtcHRTdHIoY2hhcnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghdGhpcy5fYXR0ZW1wdENoYXJDb2RlKFN0cmluZ1dyYXBwZXIuY2hhckNvZGVBdChjaGFycywgaSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIF9hdHRlbXB0U3RyQ2FzZUluc2Vuc2l0aXZlKGNoYXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuX2F0dGVtcHRDaGFyQ29kZUNhc2VJbnNlbnNpdGl2ZShTdHJpbmdXcmFwcGVyLmNoYXJDb2RlQXQoY2hhcnMsIGkpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZVN0cihjaGFyczogc3RyaW5nKSB7XG4gICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuX2F0dGVtcHRTdHIoY2hhcnMpKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcih1bmV4cGVjdGVkQ2hhcmFjdGVyRXJyb3JNc2codGhpcy5wZWVrKSwgdGhpcy5fZ2V0U3Bhbihsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4ocHJlZGljYXRlOiBGdW5jdGlvbikge1xuICAgIHdoaWxlICghcHJlZGljYXRlKHRoaXMucGVlaykpIHtcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXF1aXJlQ2hhckNvZGVVbnRpbEZuKHByZWRpY2F0ZTogRnVuY3Rpb24sIGxlbjogbnVtYmVyKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKHByZWRpY2F0ZSk7XG4gICAgaWYgKHRoaXMuaW5kZXggLSBzdGFydC5vZmZzZXQgPCBsZW4pIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUVycm9yKHVuZXhwZWN0ZWRDaGFyYWN0ZXJFcnJvck1zZyh0aGlzLnBlZWspLCB0aGlzLl9nZXRTcGFuKHN0YXJ0LCBzdGFydCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2F0dGVtcHRVbnRpbENoYXIoY2hhcjogbnVtYmVyKSB7XG4gICAgd2hpbGUgKHRoaXMucGVlayAhPT0gY2hhcikge1xuICAgICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRDaGFyKGRlY29kZUVudGl0aWVzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBpZiAoZGVjb2RlRW50aXRpZXMgJiYgdGhpcy5wZWVrID09PSAkQU1QRVJTQU5EKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVjb2RlRW50aXR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXg7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gdGhpcy5pbnB1dFtpbmRleF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVjb2RlRW50aXR5KCk6IHN0cmluZyB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgaWYgKHRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkSEFTSCkpIHtcbiAgICAgIGxldCBpc0hleCA9IHRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkeCkgfHwgdGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRYKTtcbiAgICAgIGxldCBudW1iZXJTdGFydCA9IHRoaXMuX2dldExvY2F0aW9uKCkub2Zmc2V0O1xuICAgICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc0RpZ2l0RW50aXR5RW5kKTtcbiAgICAgIGlmICh0aGlzLnBlZWsgIT0gJFNFTUlDT0xPTikge1xuICAgICAgICB0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcih1bmV4cGVjdGVkQ2hhcmFjdGVyRXJyb3JNc2codGhpcy5wZWVrKSwgdGhpcy5fZ2V0U3BhbigpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICAgIGxldCBzdHJOdW0gPSB0aGlzLmlucHV0LnN1YnN0cmluZyhudW1iZXJTdGFydCwgdGhpcy5pbmRleCAtIDEpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGNoYXJDb2RlID0gTnVtYmVyV3JhcHBlci5wYXJzZUludChzdHJOdW0sIGlzSGV4ID8gMTYgOiAxMCk7XG4gICAgICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxldCBlbnRpdHkgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydC5vZmZzZXQgKyAxLCB0aGlzLmluZGV4IC0gMSk7XG4gICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUVycm9yKHVua25vd25FbnRpdHlFcnJvck1zZyhlbnRpdHkpLCB0aGlzLl9nZXRTcGFuKHN0YXJ0KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzdGFydFBvc2l0aW9uID0gdGhpcy5fc2F2ZVBvc2l0aW9uKCk7XG4gICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTmFtZWRFbnRpdHlFbmQpO1xuICAgICAgaWYgKHRoaXMucGVlayAhPSAkU0VNSUNPTE9OKSB7XG4gICAgICAgIHRoaXMuX3Jlc3RvcmVQb3NpdGlvbihzdGFydFBvc2l0aW9uKTtcbiAgICAgICAgcmV0dXJuICcmJztcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICAgIGxldCBuYW1lID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQub2Zmc2V0ICsgMSwgdGhpcy5pbmRleCAtIDEpO1xuICAgICAgbGV0IGNoYXIgPSBOQU1FRF9FTlRJVElFU1tuYW1lXTtcbiAgICAgIGlmIChpc0JsYW5rKGNoYXIpKSB7XG4gICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUVycm9yKHVua25vd25FbnRpdHlFcnJvck1zZyhuYW1lKSwgdGhpcy5fZ2V0U3BhbihzdGFydCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNoYXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVJhd1RleHQoZGVjb2RlRW50aXRpZXM6IGJvb2xlYW4sIGZpcnN0Q2hhck9mRW5kOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGVtcHRFbmRSZXN0OiBGdW5jdGlvbik6IEh0bWxUb2tlbiB7XG4gICAgdmFyIHRhZ0Nsb3NlU3RhcnQ7XG4gICAgdmFyIHRleHRTdGFydCA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihkZWNvZGVFbnRpdGllcyA/IEh0bWxUb2tlblR5cGUuRVNDQVBBQkxFX1JBV19URVhUIDogSHRtbFRva2VuVHlwZS5SQVdfVEVYVCxcbiAgICAgICAgICAgICAgICAgICAgIHRleHRTdGFydCk7XG4gICAgdmFyIHBhcnRzID0gW107XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRhZ0Nsb3NlU3RhcnQgPSB0aGlzLl9nZXRMb2NhdGlvbigpO1xuICAgICAgaWYgKHRoaXMuX2F0dGVtcHRDaGFyQ29kZShmaXJzdENoYXJPZkVuZCkgJiYgYXR0ZW1wdEVuZFJlc3QoKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluZGV4ID4gdGFnQ2xvc2VTdGFydC5vZmZzZXQpIHtcbiAgICAgICAgcGFydHMucHVzaCh0aGlzLmlucHV0LnN1YnN0cmluZyh0YWdDbG9zZVN0YXJ0Lm9mZnNldCwgdGhpcy5pbmRleCkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHRoaXMucGVlayAhPT0gZmlyc3RDaGFyT2ZFbmQpIHtcbiAgICAgICAgcGFydHMucHVzaCh0aGlzLl9yZWFkQ2hhcihkZWNvZGVFbnRpdGllcykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZW5kVG9rZW4oW3RoaXMuX3Byb2Nlc3NDYXJyaWFnZVJldHVybnMocGFydHMuam9pbignJykpXSwgdGFnQ2xvc2VTdGFydCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lQ29tbWVudChzdGFydDogUGFyc2VMb2NhdGlvbikge1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5DT01NRU5UX1NUQVJULCBzdGFydCk7XG4gICAgdGhpcy5fcmVxdWlyZUNoYXJDb2RlKCRNSU5VUyk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW10pO1xuICAgIHZhciB0ZXh0VG9rZW4gPSB0aGlzLl9jb25zdW1lUmF3VGV4dChmYWxzZSwgJE1JTlVTLCAoKSA9PiB0aGlzLl9hdHRlbXB0U3RyKCctPicpKTtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuQ09NTUVOVF9FTkQsIHRleHRUb2tlbi5zb3VyY2VTcGFuLmVuZCk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUNkYXRhKHN0YXJ0OiBQYXJzZUxvY2F0aW9uKSB7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLkNEQVRBX1NUQVJULCBzdGFydCk7XG4gICAgdGhpcy5fcmVxdWlyZVN0cignQ0RBVEFbJyk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW10pO1xuICAgIHZhciB0ZXh0VG9rZW4gPSB0aGlzLl9jb25zdW1lUmF3VGV4dChmYWxzZSwgJFJCUkFDS0VULCAoKSA9PiB0aGlzLl9hdHRlbXB0U3RyKCddPicpKTtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuQ0RBVEFfRU5ELCB0ZXh0VG9rZW4uc291cmNlU3Bhbi5lbmQpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVEb2NUeXBlKHN0YXJ0OiBQYXJzZUxvY2F0aW9uKSB7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLkRPQ19UWVBFLCBzdGFydCk7XG4gICAgdGhpcy5fYXR0ZW1wdFVudGlsQ2hhcigkR1QpO1xuICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICB0aGlzLl9lbmRUb2tlbihbdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQub2Zmc2V0ICsgMiwgdGhpcy5pbmRleCAtIDEpXSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lUHJlZml4QW5kTmFtZSgpOiBzdHJpbmdbXSB7XG4gICAgdmFyIG5hbWVPclByZWZpeFN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICB2YXIgcHJlZml4ID0gbnVsbDtcbiAgICB3aGlsZSAodGhpcy5wZWVrICE9PSAkQ09MT04gJiYgIWlzUHJlZml4RW5kKHRoaXMucGVlaykpIHtcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICB9XG4gICAgdmFyIG5hbWVTdGFydDtcbiAgICBpZiAodGhpcy5wZWVrID09PSAkQ09MT04pIHtcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICAgIHByZWZpeCA9IHRoaXMuaW5wdXQuc3Vic3RyaW5nKG5hbWVPclByZWZpeFN0YXJ0LCB0aGlzLmluZGV4IC0gMSk7XG4gICAgICBuYW1lU3RhcnQgPSB0aGlzLmluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lU3RhcnQgPSBuYW1lT3JQcmVmaXhTdGFydDtcbiAgICB9XG4gICAgdGhpcy5fcmVxdWlyZUNoYXJDb2RlVW50aWxGbihpc05hbWVFbmQsIHRoaXMuaW5kZXggPT09IG5hbWVTdGFydCA/IDEgOiAwKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMuaW5wdXQuc3Vic3RyaW5nKG5hbWVTdGFydCwgdGhpcy5pbmRleCk7XG4gICAgcmV0dXJuIFtwcmVmaXgsIG5hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVRhZ09wZW4oc3RhcnQ6IFBhcnNlTG9jYXRpb24pIHtcbiAgICBsZXQgc2F2ZWRQb3MgPSB0aGlzLl9zYXZlUG9zaXRpb24oKTtcbiAgICBsZXQgbG93ZXJjYXNlVGFnTmFtZTtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpc0FzY2lpTGV0dGVyKHRoaXMucGVlaykpIHtcbiAgICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IodW5leHBlY3RlZENoYXJhY3RlckVycm9yTXNnKHRoaXMucGVlayksIHRoaXMuX2dldFNwYW4oKSk7XG4gICAgICB9XG4gICAgICB2YXIgbmFtZVN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgIHRoaXMuX2NvbnN1bWVUYWdPcGVuU3RhcnQoc3RhcnQpO1xuICAgICAgbG93ZXJjYXNlVGFnTmFtZSA9IHRoaXMuaW5wdXQuc3Vic3RyaW5nKG5hbWVTdGFydCwgdGhpcy5pbmRleCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4oaXNOb3RXaGl0ZXNwYWNlKTtcbiAgICAgIHdoaWxlICh0aGlzLnBlZWsgIT09ICRTTEFTSCAmJiB0aGlzLnBlZWsgIT09ICRHVCkge1xuICAgICAgICB0aGlzLl9jb25zdW1lQXR0cmlidXRlTmFtZSgpO1xuICAgICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgICAgIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJEVRKSkge1xuICAgICAgICAgIHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4oaXNOb3RXaGl0ZXNwYWNlKTtcbiAgICAgICAgICB0aGlzLl9jb25zdW1lQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9jb25zdW1lVGFnT3BlbkVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgQ29udHJvbEZsb3dFcnJvcikge1xuICAgICAgICAvLyBXaGVuIHRoZSBzdGFydCB0YWcgaXMgaW52YWxpZCwgYXNzdW1lIHdlIHdhbnQgYSBcIjxcIlxuICAgICAgICB0aGlzLl9yZXN0b3JlUG9zaXRpb24oc2F2ZWRQb3MpO1xuICAgICAgICAvLyBCYWNrIHRvIGJhY2sgdGV4dCB0b2tlbnMgYXJlIG1lcmdlZCBhdCB0aGUgZW5kXG4gICAgICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5URVhULCBzdGFydCk7XG4gICAgICAgIHRoaXMuX2VuZFRva2VuKFsnPCddKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50VG9rZW5UeXBlID0gZ2V0SHRtbFRhZ0RlZmluaXRpb24obG93ZXJjYXNlVGFnTmFtZSkuY29udGVudFR5cGU7XG4gICAgaWYgKGNvbnRlbnRUb2tlblR5cGUgPT09IEh0bWxUYWdDb250ZW50VHlwZS5SQVdfVEVYVCkge1xuICAgICAgdGhpcy5fY29uc3VtZVJhd1RleHRXaXRoVGFnQ2xvc2UobG93ZXJjYXNlVGFnTmFtZSwgZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoY29udGVudFRva2VuVHlwZSA9PT0gSHRtbFRhZ0NvbnRlbnRUeXBlLkVTQ0FQQUJMRV9SQVdfVEVYVCkge1xuICAgICAgdGhpcy5fY29uc3VtZVJhd1RleHRXaXRoVGFnQ2xvc2UobG93ZXJjYXNlVGFnTmFtZSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVJhd1RleHRXaXRoVGFnQ2xvc2UobG93ZXJjYXNlVGFnTmFtZTogc3RyaW5nLCBkZWNvZGVFbnRpdGllczogYm9vbGVhbikge1xuICAgIHZhciB0ZXh0VG9rZW4gPSB0aGlzLl9jb25zdW1lUmF3VGV4dChkZWNvZGVFbnRpdGllcywgJExULCAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkU0xBU0gpKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgICBpZiAoIXRoaXMuX2F0dGVtcHRTdHJDYXNlSW5zZW5zaXRpdmUobG93ZXJjYXNlVGFnTmFtZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4oaXNOb3RXaGl0ZXNwYWNlKTtcbiAgICAgIGlmICghdGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRHVCkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5UQUdfQ0xPU0UsIHRleHRUb2tlbi5zb3VyY2VTcGFuLmVuZCk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW251bGwsIGxvd2VyY2FzZVRhZ05hbWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVUYWdPcGVuU3RhcnQoc3RhcnQ6IFBhcnNlTG9jYXRpb24pIHtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuVEFHX09QRU5fU1RBUlQsIHN0YXJ0KTtcbiAgICB2YXIgcGFydHMgPSB0aGlzLl9jb25zdW1lUHJlZml4QW5kTmFtZSgpO1xuICAgIHRoaXMuX2VuZFRva2VuKHBhcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVBdHRyaWJ1dGVOYW1lKCkge1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5BVFRSX05BTUUpO1xuICAgIHZhciBwcmVmaXhBbmROYW1lID0gdGhpcy5fY29uc3VtZVByZWZpeEFuZE5hbWUoKTtcbiAgICB0aGlzLl9lbmRUb2tlbihwcmVmaXhBbmROYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVBdHRyaWJ1dGVWYWx1ZSgpIHtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuQVRUUl9WQUxVRSk7XG4gICAgdmFyIHZhbHVlO1xuICAgIGlmICh0aGlzLnBlZWsgPT09ICRTUSB8fCB0aGlzLnBlZWsgPT09ICREUSkge1xuICAgICAgdmFyIHF1b3RlQ2hhciA9IHRoaXMucGVlaztcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICAgIHZhciBwYXJ0cyA9IFtdO1xuICAgICAgd2hpbGUgKHRoaXMucGVlayAhPT0gcXVvdGVDaGFyKSB7XG4gICAgICAgIHBhcnRzLnB1c2godGhpcy5fcmVhZENoYXIodHJ1ZSkpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBwYXJ0cy5qb2luKCcnKTtcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHZhbHVlU3RhcnQgPSB0aGlzLmluZGV4O1xuICAgICAgdGhpcy5fcmVxdWlyZUNoYXJDb2RlVW50aWxGbihpc05hbWVFbmQsIDEpO1xuICAgICAgdmFsdWUgPSB0aGlzLmlucHV0LnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCB0aGlzLmluZGV4KTtcbiAgICB9XG4gICAgdGhpcy5fZW5kVG9rZW4oW3RoaXMuX3Byb2Nlc3NDYXJyaWFnZVJldHVybnModmFsdWUpXSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lVGFnT3BlbkVuZCgpIHtcbiAgICB2YXIgdG9rZW5UeXBlID0gdGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRTTEFTSCkgPyBIdG1sVG9rZW5UeXBlLlRBR19PUEVOX0VORF9WT0lEIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sVG9rZW5UeXBlLlRBR19PUEVOX0VORDtcbiAgICB0aGlzLl9iZWdpblRva2VuKHRva2VuVHlwZSk7XG4gICAgdGhpcy5fcmVxdWlyZUNoYXJDb2RlKCRHVCk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVRhZ0Nsb3NlKHN0YXJ0OiBQYXJzZUxvY2F0aW9uKSB7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLlRBR19DTE9TRSwgc3RhcnQpO1xuICAgIHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4oaXNOb3RXaGl0ZXNwYWNlKTtcbiAgICB2YXIgcHJlZml4QW5kTmFtZTtcbiAgICBwcmVmaXhBbmROYW1lID0gdGhpcy5fY29uc3VtZVByZWZpeEFuZE5hbWUoKTtcbiAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgdGhpcy5fcmVxdWlyZUNoYXJDb2RlKCRHVCk7XG4gICAgdGhpcy5fZW5kVG9rZW4ocHJlZml4QW5kTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lRXhwYW5zaW9uRm9ybVN0YXJ0KCkge1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fRk9STV9TVEFSVCwgdGhpcy5fZ2V0TG9jYXRpb24oKSk7XG4gICAgdGhpcy5fcmVxdWlyZUNoYXJDb2RlKCRMQlJBQ0UpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcblxuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5SQVdfVEVYVCwgdGhpcy5fZ2V0TG9jYXRpb24oKSk7XG4gICAgbGV0IGNvbmRpdGlvbiA9IHRoaXMuX3JlYWRVbnRpbCgkQ09NTUEpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtjb25kaXRpb25dLCB0aGlzLl9nZXRMb2NhdGlvbigpKTtcbiAgICB0aGlzLl9yZXF1aXJlQ2hhckNvZGUoJENPTU1BKTtcbiAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG5cbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuUkFXX1RFWFQsIHRoaXMuX2dldExvY2F0aW9uKCkpO1xuICAgIGxldCB0eXBlID0gdGhpcy5fcmVhZFVudGlsKCRDT01NQSk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW3R5cGVdLCB0aGlzLl9nZXRMb2NhdGlvbigpKTtcbiAgICB0aGlzLl9yZXF1aXJlQ2hhckNvZGUoJENPTU1BKTtcbiAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG5cbiAgICB0aGlzLmV4cGFuc2lvbkNhc2VTdGFjay5wdXNoKEh0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0ZPUk1fU1RBUlQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUV4cGFuc2lvbkNhc2VTdGFydCgpIHtcbiAgICB0aGlzLl9yZXF1aXJlQ2hhckNvZGUoJEVRKTtcblxuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9WQUxVRSwgdGhpcy5fZ2V0TG9jYXRpb24oKSk7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5fcmVhZFVudGlsKCRMQlJBQ0UpLnRyaW0oKTtcbiAgICB0aGlzLl9lbmRUb2tlbihbdmFsdWVdLCB0aGlzLl9nZXRMb2NhdGlvbigpKTtcbiAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG5cbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0NBU0VfRVhQX1NUQVJULCB0aGlzLl9nZXRMb2NhdGlvbigpKTtcbiAgICB0aGlzLl9yZXF1aXJlQ2hhckNvZGUoJExCUkFDRSk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW10sIHRoaXMuX2dldExvY2F0aW9uKCkpO1xuICAgIHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4oaXNOb3RXaGl0ZXNwYWNlKTtcblxuICAgIHRoaXMuZXhwYW5zaW9uQ2FzZVN0YWNrLnB1c2goSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUV4cGFuc2lvbkNhc2VFbmQoKSB7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLkVYUEFOU0lPTl9DQVNFX0VYUF9FTkQsIHRoaXMuX2dldExvY2F0aW9uKCkpO1xuICAgIHRoaXMuX3JlcXVpcmVDaGFyQ29kZSgkUkJSQUNFKTtcbiAgICB0aGlzLl9lbmRUb2tlbihbXSwgdGhpcy5fZ2V0TG9jYXRpb24oKSk7XG4gICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc05vdFdoaXRlc3BhY2UpO1xuXG4gICAgdGhpcy5leHBhbnNpb25DYXNlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lRXhwYW5zaW9uRm9ybUVuZCgpIHtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0ZPUk1fRU5ELCB0aGlzLl9nZXRMb2NhdGlvbigpKTtcbiAgICB0aGlzLl9yZXF1aXJlQ2hhckNvZGUoJFJCUkFDRSk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW10pO1xuXG4gICAgdGhpcy5leHBhbnNpb25DYXNlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lVGV4dCgpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9nZXRMb2NhdGlvbigpO1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5URVhULCBzdGFydCk7XG5cbiAgICB2YXIgcGFydHMgPSBbXTtcbiAgICBsZXQgaW50ZXJwb2xhdGlvbiA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMucGVlayA9PT0gJExCUkFDRSAmJiB0aGlzLm5leHRQZWVrID09PSAkTEJSQUNFKSB7XG4gICAgICBwYXJ0cy5wdXNoKHRoaXMuX3JlYWRDaGFyKHRydWUpKTtcbiAgICAgIHBhcnRzLnB1c2godGhpcy5fcmVhZENoYXIodHJ1ZSkpO1xuICAgICAgaW50ZXJwb2xhdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2godGhpcy5fcmVhZENoYXIodHJ1ZSkpO1xuICAgIH1cblxuICAgIHdoaWxlICghdGhpcy5pc1RleHRFbmQoaW50ZXJwb2xhdGlvbikpIHtcbiAgICAgIGlmICh0aGlzLnBlZWsgPT09ICRMQlJBQ0UgJiYgdGhpcy5uZXh0UGVlayA9PT0gJExCUkFDRSkge1xuICAgICAgICBwYXJ0cy5wdXNoKHRoaXMuX3JlYWRDaGFyKHRydWUpKTtcbiAgICAgICAgcGFydHMucHVzaCh0aGlzLl9yZWFkQ2hhcih0cnVlKSk7XG4gICAgICAgIGludGVycG9sYXRpb24gPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsgPT09ICRSQlJBQ0UgJiYgdGhpcy5uZXh0UGVlayA9PT0gJFJCUkFDRSAmJiBpbnRlcnBvbGF0aW9uKSB7XG4gICAgICAgIHBhcnRzLnB1c2godGhpcy5fcmVhZENoYXIodHJ1ZSkpO1xuICAgICAgICBwYXJ0cy5wdXNoKHRoaXMuX3JlYWRDaGFyKHRydWUpKTtcbiAgICAgICAgaW50ZXJwb2xhdGlvbiA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaCh0aGlzLl9yZWFkQ2hhcih0cnVlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2VuZFRva2VuKFt0aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKHBhcnRzLmpvaW4oJycpKV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RleHRFbmQoaW50ZXJwb2xhdGlvbjogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnBlZWsgPT09ICRMVCB8fCB0aGlzLnBlZWsgPT09ICRFT0YpIHJldHVybiB0cnVlO1xuICAgIGlmICh0aGlzLnRva2VuaXplRXhwYW5zaW9uRm9ybXMpIHtcbiAgICAgIGlmIChpc1NwZWNpYWxGb3JtU3RhcnQodGhpcy5wZWVrLCB0aGlzLm5leHRQZWVrKSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodGhpcy5wZWVrID09PSAkUkJSQUNFICYmICFpbnRlcnBvbGF0aW9uICYmXG4gICAgICAgICAgKHRoaXMuaXNJbkV4cGFuc2lvbkNhc2UoKSB8fCB0aGlzLmlzSW5FeHBhbnNpb25Gb3JtKCkpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBvc2l0aW9uKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gW3RoaXMucGVlaywgdGhpcy5pbmRleCwgdGhpcy5jb2x1bW4sIHRoaXMubGluZSwgdGhpcy50b2tlbnMubGVuZ3RoXTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRVbnRpbChjaGFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBzdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgdGhpcy5fYXR0ZW1wdFVudGlsQ2hhcihjaGFyKTtcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMuaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVBvc2l0aW9uKHBvc2l0aW9uOiBudW1iZXJbXSk6IHZvaWQge1xuICAgIHRoaXMucGVlayA9IHBvc2l0aW9uWzBdO1xuICAgIHRoaXMuaW5kZXggPSBwb3NpdGlvblsxXTtcbiAgICB0aGlzLmNvbHVtbiA9IHBvc2l0aW9uWzJdO1xuICAgIHRoaXMubGluZSA9IHBvc2l0aW9uWzNdO1xuICAgIGxldCBuYlRva2VucyA9IHBvc2l0aW9uWzRdO1xuICAgIGlmIChuYlRva2VucyA8IHRoaXMudG9rZW5zLmxlbmd0aCkge1xuICAgICAgLy8gcmVtb3ZlIGFueSBleHRyYSB0b2tlbnNcbiAgICAgIHRoaXMudG9rZW5zID0gTGlzdFdyYXBwZXIuc2xpY2UodGhpcy50b2tlbnMsIDAsIG5iVG9rZW5zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzSW5FeHBhbnNpb25DYXNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuc2lvbkNhc2VTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgICAgIHRoaXMuZXhwYW5zaW9uQ2FzZVN0YWNrW3RoaXMuZXhwYW5zaW9uQ2FzZVN0YWNrLmxlbmd0aCAtIDFdID09PVxuICAgICAgICAgICAgICAgSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQ7XG4gIH1cblxuICBwcml2YXRlIGlzSW5FeHBhbnNpb25Gb3JtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuc2lvbkNhc2VTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgICAgIHRoaXMuZXhwYW5zaW9uQ2FzZVN0YWNrW3RoaXMuZXhwYW5zaW9uQ2FzZVN0YWNrLmxlbmd0aCAtIDFdID09PVxuICAgICAgICAgICAgICAgSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fRk9STV9TVEFSVDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc05vdFdoaXRlc3BhY2UoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNXaGl0ZXNwYWNlKGNvZGUpIHx8IGNvZGUgPT09ICRFT0Y7XG59XG5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChjb2RlID49ICRUQUIgJiYgY29kZSA8PSAkU1BBQ0UpIHx8IChjb2RlID09PSAkTkJTUCk7XG59XG5cbmZ1bmN0aW9uIGlzTmFtZUVuZChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzV2hpdGVzcGFjZShjb2RlKSB8fCBjb2RlID09PSAkR1QgfHwgY29kZSA9PT0gJFNMQVNIIHx8IGNvZGUgPT09ICRTUSB8fCBjb2RlID09PSAkRFEgfHxcbiAgICAgICAgIGNvZGUgPT09ICRFUTtcbn1cblxuZnVuY3Rpb24gaXNQcmVmaXhFbmQoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoY29kZSA8ICRhIHx8ICR6IDwgY29kZSkgJiYgKGNvZGUgPCAkQSB8fCAkWiA8IGNvZGUpICYmIChjb2RlIDwgJDAgfHwgY29kZSA+ICQ5KTtcbn1cblxuZnVuY3Rpb24gaXNEaWdpdEVudGl0eUVuZChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT0gJFNFTUlDT0xPTiB8fCBjb2RlID09ICRFT0YgfHwgIWlzQXNjaWlIZXhEaWdpdChjb2RlKTtcbn1cblxuZnVuY3Rpb24gaXNOYW1lZEVudGl0eUVuZChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT0gJFNFTUlDT0xPTiB8fCBjb2RlID09ICRFT0YgfHwgIWlzQXNjaWlMZXR0ZXIoY29kZSk7XG59XG5cbmZ1bmN0aW9uIGlzU3BlY2lhbEZvcm1TdGFydChwZWVrOiBudW1iZXIsIG5leHRQZWVrOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBlZWsgPT09ICRMQlJBQ0UgJiYgbmV4dFBlZWsgIT0gJExCUkFDRTtcbn1cblxuZnVuY3Rpb24gaXNBc2NpaUxldHRlcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPj0gJGEgJiYgY29kZSA8PSAkeiB8fCBjb2RlID49ICRBICYmIGNvZGUgPD0gJFo7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlIZXhEaWdpdChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPj0gJGEgJiYgY29kZSA8PSAkZiB8fCBjb2RlID49ICRBICYmIGNvZGUgPD0gJEYgfHwgY29kZSA+PSAkMCAmJiBjb2RlIDw9ICQ5O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlQ2hhckNvZGVDYXNlSW5zZW5zaXRpdmUoY29kZTE6IG51bWJlciwgY29kZTI6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gdG9VcHBlckNhc2VDaGFyQ29kZShjb2RlMSkgPT0gdG9VcHBlckNhc2VDaGFyQ29kZShjb2RlMik7XG59XG5cbmZ1bmN0aW9uIHRvVXBwZXJDYXNlQ2hhckNvZGUoY29kZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGNvZGUgPj0gJGEgJiYgY29kZSA8PSAkeiA/IGNvZGUgLSAkYSArICRBIDogY29kZTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VUZXh0VG9rZW5zKHNyY1Rva2VuczogSHRtbFRva2VuW10pOiBIdG1sVG9rZW5bXSB7XG4gIGxldCBkc3RUb2tlbnMgPSBbXTtcbiAgbGV0IGxhc3REc3RUb2tlbjogSHRtbFRva2VuO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNyY1Rva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGxldCB0b2tlbiA9IHNyY1Rva2Vuc1tpXTtcbiAgICBpZiAoaXNQcmVzZW50KGxhc3REc3RUb2tlbikgJiYgbGFzdERzdFRva2VuLnR5cGUgPT0gSHRtbFRva2VuVHlwZS5URVhUICYmXG4gICAgICAgIHRva2VuLnR5cGUgPT0gSHRtbFRva2VuVHlwZS5URVhUKSB7XG4gICAgICBsYXN0RHN0VG9rZW4ucGFydHNbMF0gKz0gdG9rZW4ucGFydHNbMF07XG4gICAgICBsYXN0RHN0VG9rZW4uc291cmNlU3Bhbi5lbmQgPSB0b2tlbi5zb3VyY2VTcGFuLmVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdERzdFRva2VuID0gdG9rZW47XG4gICAgICBkc3RUb2tlbnMucHVzaChsYXN0RHN0VG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkc3RUb2tlbnM7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar ParseLocation = (function () {\r\n function ParseLocation(file, offset, line, col) {\r\n this.file = file;\r\n this.offset = offset;\r\n this.line = line;\r\n this.col = col;\r\n }\r\n ParseLocation.prototype.toString = function () { return this.file.url + \"@\" + this.line + \":\" + this.col; };\r\n return ParseLocation;\r\n}());\r\nexports.ParseLocation = ParseLocation;\r\nvar ParseSourceFile = (function () {\r\n function ParseSourceFile(content, url) {\r\n this.content = content;\r\n this.url = url;\r\n }\r\n return ParseSourceFile;\r\n}());\r\nexports.ParseSourceFile = ParseSourceFile;\r\nvar ParseSourceSpan = (function () {\r\n function ParseSourceSpan(start, end) {\r\n this.start = start;\r\n this.end = end;\r\n }\r\n ParseSourceSpan.prototype.toString = function () {\r\n return this.start.file.content.substring(this.start.offset, this.end.offset);\r\n };\r\n return ParseSourceSpan;\r\n}());\r\nexports.ParseSourceSpan = ParseSourceSpan;\r\n(function (ParseErrorLevel) {\r\n ParseErrorLevel[ParseErrorLevel[\"WARNING\"] = 0] = \"WARNING\";\r\n ParseErrorLevel[ParseErrorLevel[\"FATAL\"] = 1] = \"FATAL\";\r\n})(exports.ParseErrorLevel || (exports.ParseErrorLevel = {}));\r\nvar ParseErrorLevel = exports.ParseErrorLevel;\r\nvar ParseError = (function () {\r\n function ParseError(span, msg, level) {\r\n if (level === void 0) { level = ParseErrorLevel.FATAL; }\r\n this.span = span;\r\n this.msg = msg;\r\n this.level = level;\r\n }\r\n ParseError.prototype.toString = function () {\r\n var source = this.span.start.file.content;\r\n var ctxStart = this.span.start.offset;\r\n if (ctxStart > source.length - 1) {\r\n ctxStart = source.length - 1;\r\n }\r\n var ctxEnd = ctxStart;\r\n var ctxLen = 0;\r\n var ctxLines = 0;\r\n while (ctxLen < 100 && ctxStart > 0) {\r\n ctxStart--;\r\n ctxLen++;\r\n if (source[ctxStart] == \"\\n\") {\r\n if (++ctxLines == 3) {\r\n break;\r\n }\r\n }\r\n }\r\n ctxLen = 0;\r\n ctxLines = 0;\r\n while (ctxLen < 100 && ctxEnd < source.length - 1) {\r\n ctxEnd++;\r\n ctxLen++;\r\n if (source[ctxEnd] == \"\\n\") {\r\n if (++ctxLines == 3) {\r\n break;\r\n }\r\n }\r\n }\r\n var context = source.substring(ctxStart, this.span.start.offset) + '[ERROR ->]' +\r\n source.substring(this.span.start.offset, ctxEnd + 1);\r\n return this.msg + \" (\\\"\" + context + \"\\\"): \" + this.span.start;\r\n };\r\n return ParseError;\r\n}());\r\nexports.ParseError = ParseError;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9wYXJzZV91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUNFLHVCQUFtQixJQUFxQixFQUFTLE1BQWMsRUFBUyxJQUFZLEVBQ2pFLEdBQVc7UUFEWCxTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2pFLFFBQUcsR0FBSCxHQUFHLENBQVE7SUFBRyxDQUFDO0lBRWxDLGdDQUFRLEdBQVIsY0FBcUIsTUFBTSxDQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFJLElBQUksQ0FBQyxJQUFJLFNBQUksSUFBSSxDQUFDLEdBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsb0JBQUM7QUFBRCxDQUFDLEFBTEQsSUFLQztBQUxZLHFCQUFhLGdCQUt6QixDQUFBO0FBRUQ7SUFDRSx5QkFBbUIsT0FBZSxFQUFTLEdBQVc7UUFBbkMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVE7SUFBRyxDQUFDO0lBQzVELHNCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFGWSx1QkFBZSxrQkFFM0IsQ0FBQTtBQUVEO0lBQ0UseUJBQW1CLEtBQW9CLEVBQVMsR0FBa0I7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQWU7SUFBRyxDQUFDO0lBRXRFLGtDQUFRLEdBQVI7UUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFORCxJQU1DO0FBTlksdUJBQWUsa0JBTTNCLENBQUE7QUFFRCxXQUFZLGVBQWU7SUFDekIsMkRBQU8sQ0FBQTtJQUNQLHVEQUFLLENBQUE7QUFDUCxDQUFDLEVBSFcsdUJBQWUsS0FBZix1QkFBZSxRQUcxQjtBQUhELElBQVksZUFBZSxHQUFmLHVCQUdYLENBQUE7QUFFRDtJQUNFLG9CQUFtQixJQUFxQixFQUFTLEdBQVcsRUFDekMsS0FBOEM7UUFBckQscUJBQXFELEdBQXJELFFBQWdDLGVBQWUsQ0FBQyxLQUFLO1FBRDlDLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUN6QyxVQUFLLEdBQUwsS0FBSyxDQUF5QztJQUFHLENBQUM7SUFFckUsNkJBQVEsR0FBUjtRQUNFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDMUMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLE9BQU8sTUFBTSxHQUFHLEdBQUcsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsUUFBUSxFQUFFLENBQUM7WUFDWCxNQUFNLEVBQUUsQ0FBQztZQUNULEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQixLQUFLLENBQUM7Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNYLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixPQUFPLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQztZQUNULEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQixLQUFLLENBQUM7Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWTtZQUNqRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbkUsTUFBTSxDQUFJLElBQUksQ0FBQyxHQUFHLFlBQU0sT0FBTyxhQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBTyxDQUFDO0lBQzFELENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF6Q0QsSUF5Q0M7QUF6Q3FCLGtCQUFVLGFBeUMvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFBhcnNlTG9jYXRpb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlsZTogUGFyc2VTb3VyY2VGaWxlLCBwdWJsaWMgb2Zmc2V0OiBudW1iZXIsIHB1YmxpYyBsaW5lOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBjb2w6IG51bWJlcikge31cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYCR7dGhpcy5maWxlLnVybH1AJHt0aGlzLmxpbmV9OiR7dGhpcy5jb2x9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VTb3VyY2VGaWxlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRlbnQ6IHN0cmluZywgcHVibGljIHVybDogc3RyaW5nKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VTb3VyY2VTcGFuIHtcbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBQYXJzZUxvY2F0aW9uLCBwdWJsaWMgZW5kOiBQYXJzZUxvY2F0aW9uKSB7fVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQuZmlsZS5jb250ZW50LnN1YnN0cmluZyh0aGlzLnN0YXJ0Lm9mZnNldCwgdGhpcy5lbmQub2Zmc2V0KTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBQYXJzZUVycm9yTGV2ZWwge1xuICBXQVJOSU5HLFxuICBGQVRBTFxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzcGFuOiBQYXJzZVNvdXJjZVNwYW4sIHB1YmxpYyBtc2c6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIGxldmVsOiBQYXJzZUVycm9yTGV2ZWwgPSBQYXJzZUVycm9yTGV2ZWwuRkFUQUwpIHt9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICB2YXIgc291cmNlID0gdGhpcy5zcGFuLnN0YXJ0LmZpbGUuY29udGVudDtcbiAgICB2YXIgY3R4U3RhcnQgPSB0aGlzLnNwYW4uc3RhcnQub2Zmc2V0O1xuICAgIGlmIChjdHhTdGFydCA+IHNvdXJjZS5sZW5ndGggLSAxKSB7XG4gICAgICBjdHhTdGFydCA9IHNvdXJjZS5sZW5ndGggLSAxO1xuICAgIH1cbiAgICB2YXIgY3R4RW5kID0gY3R4U3RhcnQ7XG4gICAgdmFyIGN0eExlbiA9IDA7XG4gICAgdmFyIGN0eExpbmVzID0gMDtcblxuICAgIHdoaWxlIChjdHhMZW4gPCAxMDAgJiYgY3R4U3RhcnQgPiAwKSB7XG4gICAgICBjdHhTdGFydC0tO1xuICAgICAgY3R4TGVuKys7XG4gICAgICBpZiAoc291cmNlW2N0eFN0YXJ0XSA9PSBcIlxcblwiKSB7XG4gICAgICAgIGlmICgrK2N0eExpbmVzID09IDMpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGN0eExlbiA9IDA7XG4gICAgY3R4TGluZXMgPSAwO1xuICAgIHdoaWxlIChjdHhMZW4gPCAxMDAgJiYgY3R4RW5kIDwgc291cmNlLmxlbmd0aCAtIDEpIHtcbiAgICAgIGN0eEVuZCsrO1xuICAgICAgY3R4TGVuKys7XG4gICAgICBpZiAoc291cmNlW2N0eEVuZF0gPT0gXCJcXG5cIikge1xuICAgICAgICBpZiAoKytjdHhMaW5lcyA9PSAzKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY29udGV4dCA9IHNvdXJjZS5zdWJzdHJpbmcoY3R4U3RhcnQsIHRoaXMuc3Bhbi5zdGFydC5vZmZzZXQpICsgJ1tFUlJPUiAtPl0nICtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZS5zdWJzdHJpbmcodGhpcy5zcGFuLnN0YXJ0Lm9mZnNldCwgY3R4RW5kICsgMSk7XG5cbiAgICByZXR1cm4gYCR7dGhpcy5tc2d9IChcIiR7Y29udGV4dH1cIik6ICR7dGhpcy5zcGFuLnN0YXJ0fWA7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar html_ast_1 = require('./html_ast');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar html_lexer_1 = require('./html_lexer');\r\nvar parse_util_1 = require('./parse_util');\r\nvar html_tags_1 = require('./html_tags');\r\nvar HtmlTreeError = (function (_super) {\r\n __extends(HtmlTreeError, _super);\r\n function HtmlTreeError(elementName, span, msg) {\r\n _super.call(this, span, msg);\r\n this.elementName = elementName;\r\n }\r\n HtmlTreeError.create = function (elementName, span, msg) {\r\n return new HtmlTreeError(elementName, span, msg);\r\n };\r\n return HtmlTreeError;\r\n}(parse_util_1.ParseError));\r\nexports.HtmlTreeError = HtmlTreeError;\r\nvar HtmlParseTreeResult = (function () {\r\n function HtmlParseTreeResult(rootNodes, errors) {\r\n this.rootNodes = rootNodes;\r\n this.errors = errors;\r\n }\r\n return HtmlParseTreeResult;\r\n}());\r\nexports.HtmlParseTreeResult = HtmlParseTreeResult;\r\nvar HtmlParser = (function () {\r\n function HtmlParser() {\r\n }\r\n HtmlParser.prototype.parse = function (sourceContent, sourceUrl, parseExpansionForms) {\r\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\r\n var tokensAndErrors = html_lexer_1.tokenizeHtml(sourceContent, sourceUrl, parseExpansionForms);\r\n var treeAndErrors = new TreeBuilder(tokensAndErrors.tokens).build();\r\n return new HtmlParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors\r\n .concat(treeAndErrors.errors));\r\n };\r\n HtmlParser = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], HtmlParser);\r\n return HtmlParser;\r\n}());\r\nexports.HtmlParser = HtmlParser;\r\nvar TreeBuilder = (function () {\r\n function TreeBuilder(tokens) {\r\n this.tokens = tokens;\r\n this.index = -1;\r\n this.rootNodes = [];\r\n this.errors = [];\r\n this.elementStack = [];\r\n this._advance();\r\n }\r\n TreeBuilder.prototype.build = function () {\r\n while (this.peek.type !== html_lexer_1.HtmlTokenType.EOF) {\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_START) {\r\n this._consumeStartTag(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_CLOSE) {\r\n this._consumeEndTag(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.CDATA_START) {\r\n this._closeVoidElement();\r\n this._consumeCdata(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.COMMENT_START) {\r\n this._closeVoidElement();\r\n this._consumeComment(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.TEXT ||\r\n this.peek.type === html_lexer_1.HtmlTokenType.RAW_TEXT ||\r\n this.peek.type === html_lexer_1.HtmlTokenType.ESCAPABLE_RAW_TEXT) {\r\n this._closeVoidElement();\r\n this._consumeText(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_START) {\r\n this._consumeExpansion(this._advance());\r\n }\r\n else {\r\n // Skip all other tokens...\r\n this._advance();\r\n }\r\n }\r\n return new HtmlParseTreeResult(this.rootNodes, this.errors);\r\n };\r\n TreeBuilder.prototype._advance = function () {\r\n var prev = this.peek;\r\n if (this.index < this.tokens.length - 1) {\r\n // Note: there is always an EOF token at the end\r\n this.index++;\r\n }\r\n this.peek = this.tokens[this.index];\r\n return prev;\r\n };\r\n TreeBuilder.prototype._advanceIf = function (type) {\r\n if (this.peek.type === type) {\r\n return this._advance();\r\n }\r\n return null;\r\n };\r\n TreeBuilder.prototype._consumeCdata = function (startToken) {\r\n this._consumeText(this._advance());\r\n this._advanceIf(html_lexer_1.HtmlTokenType.CDATA_END);\r\n };\r\n TreeBuilder.prototype._consumeComment = function (token) {\r\n var text = this._advanceIf(html_lexer_1.HtmlTokenType.RAW_TEXT);\r\n this._advanceIf(html_lexer_1.HtmlTokenType.COMMENT_END);\r\n var value = lang_1.isPresent(text) ? text.parts[0].trim() : null;\r\n this._addToParent(new html_ast_1.HtmlCommentAst(value, token.sourceSpan));\r\n };\r\n TreeBuilder.prototype._consumeExpansion = function (token) {\r\n var switchValue = this._advance();\r\n var type = this._advance();\r\n var cases = [];\r\n // read =\r\n while (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_VALUE) {\r\n var expCase = this._parseExpansionCase();\r\n if (lang_1.isBlank(expCase))\r\n return; // error\r\n cases.push(expCase);\r\n }\r\n // read the final }\r\n if (this.peek.type !== html_lexer_1.HtmlTokenType.EXPANSION_FORM_END) {\r\n this.errors.push(HtmlTreeError.create(null, this.peek.sourceSpan, \"Invalid expansion form. Missing '}'.\"));\r\n return;\r\n }\r\n this._advance();\r\n var mainSourceSpan = new parse_util_1.ParseSourceSpan(token.sourceSpan.start, this.peek.sourceSpan.end);\r\n this._addToParent(new html_ast_1.HtmlExpansionAst(switchValue.parts[0], type.parts[0], cases, mainSourceSpan, switchValue.sourceSpan));\r\n };\r\n TreeBuilder.prototype._parseExpansionCase = function () {\r\n var value = this._advance();\r\n // read {\r\n if (this.peek.type !== html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START) {\r\n this.errors.push(HtmlTreeError.create(null, this.peek.sourceSpan, \"Invalid expansion form. Missing '{'.,\"));\r\n return null;\r\n }\r\n // read until }\r\n var start = this._advance();\r\n var exp = this._collectExpansionExpTokens(start);\r\n if (lang_1.isBlank(exp))\r\n return null;\r\n var end = this._advance();\r\n exp.push(new html_lexer_1.HtmlToken(html_lexer_1.HtmlTokenType.EOF, [], end.sourceSpan));\r\n // parse everything in between { and }\r\n var parsedExp = new TreeBuilder(exp).build();\r\n if (parsedExp.errors.length > 0) {\r\n this.errors = this.errors.concat(parsedExp.errors);\r\n return null;\r\n }\r\n var sourceSpan = new parse_util_1.ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);\r\n var expSourceSpan = new parse_util_1.ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);\r\n return new html_ast_1.HtmlExpansionCaseAst(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);\r\n };\r\n TreeBuilder.prototype._collectExpansionExpTokens = function (start) {\r\n var exp = [];\r\n var expansionFormStack = [html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START];\r\n while (true) {\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_START ||\r\n this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START) {\r\n expansionFormStack.push(this.peek.type);\r\n }\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_END) {\r\n if (lastOnStack(expansionFormStack, html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START)) {\r\n expansionFormStack.pop();\r\n if (expansionFormStack.length == 0)\r\n return exp;\r\n }\r\n else {\r\n this.errors.push(HtmlTreeError.create(null, start.sourceSpan, \"Invalid expansion form. Missing '}'.\"));\r\n return null;\r\n }\r\n }\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_END) {\r\n if (lastOnStack(expansionFormStack, html_lexer_1.HtmlTokenType.EXPANSION_FORM_START)) {\r\n expansionFormStack.pop();\r\n }\r\n else {\r\n this.errors.push(HtmlTreeError.create(null, start.sourceSpan, \"Invalid expansion form. Missing '}'.\"));\r\n return null;\r\n }\r\n }\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.EOF) {\r\n this.errors.push(HtmlTreeError.create(null, start.sourceSpan, \"Invalid expansion form. Missing '}'.\"));\r\n return null;\r\n }\r\n exp.push(this._advance());\r\n }\r\n };\r\n TreeBuilder.prototype._consumeText = function (token) {\r\n var text = token.parts[0];\r\n if (text.length > 0 && text[0] == '\\n') {\r\n var parent_1 = this._getParentElement();\r\n if (lang_1.isPresent(parent_1) && parent_1.children.length == 0 &&\r\n html_tags_1.getHtmlTagDefinition(parent_1.name).ignoreFirstLf) {\r\n text = text.substring(1);\r\n }\r\n }\r\n if (text.length > 0) {\r\n this._addToParent(new html_ast_1.HtmlTextAst(text, token.sourceSpan));\r\n }\r\n };\r\n TreeBuilder.prototype._closeVoidElement = function () {\r\n if (this.elementStack.length > 0) {\r\n var el = collection_1.ListWrapper.last(this.elementStack);\r\n if (html_tags_1.getHtmlTagDefinition(el.name).isVoid) {\r\n this.elementStack.pop();\r\n }\r\n }\r\n };\r\n TreeBuilder.prototype._consumeStartTag = function (startTagToken) {\r\n var prefix = startTagToken.parts[0];\r\n var name = startTagToken.parts[1];\r\n var attrs = [];\r\n while (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_NAME) {\r\n attrs.push(this._consumeAttr(this._advance()));\r\n }\r\n var fullName = getElementFullName(prefix, name, this._getParentElement());\r\n var selfClosing = false;\r\n // Note: There could have been a tokenizer error\r\n // so that we don't get a token for the end tag...\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END_VOID) {\r\n this._advance();\r\n selfClosing = true;\r\n if (html_tags_1.getNsPrefix(fullName) == null && !html_tags_1.getHtmlTagDefinition(fullName).isVoid) {\r\n this.errors.push(HtmlTreeError.create(fullName, startTagToken.sourceSpan, \"Only void and foreign elements can be self closed \\\"\" + startTagToken.parts[1] + \"\\\"\"));\r\n }\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END) {\r\n this._advance();\r\n selfClosing = false;\r\n }\r\n var end = this.peek.sourceSpan.start;\r\n var span = new parse_util_1.ParseSourceSpan(startTagToken.sourceSpan.start, end);\r\n var el = new html_ast_1.HtmlElementAst(fullName, attrs, [], span, span, null);\r\n this._pushElement(el);\r\n if (selfClosing) {\r\n this._popElement(fullName);\r\n el.endSourceSpan = span;\r\n }\r\n };\r\n TreeBuilder.prototype._pushElement = function (el) {\r\n if (this.elementStack.length > 0) {\r\n var parentEl = collection_1.ListWrapper.last(this.elementStack);\r\n if (html_tags_1.getHtmlTagDefinition(parentEl.name).isClosedByChild(el.name)) {\r\n this.elementStack.pop();\r\n }\r\n }\r\n var tagDef = html_tags_1.getHtmlTagDefinition(el.name);\r\n var parentEl = this._getParentElement();\r\n if (tagDef.requireExtraParent(lang_1.isPresent(parentEl) ? parentEl.name : null)) {\r\n var newParent = new html_ast_1.HtmlElementAst(tagDef.parentToAdd, [], [el], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\r\n this._addToParent(newParent);\r\n this.elementStack.push(newParent);\r\n this.elementStack.push(el);\r\n }\r\n else {\r\n this._addToParent(el);\r\n this.elementStack.push(el);\r\n }\r\n };\r\n TreeBuilder.prototype._consumeEndTag = function (endTagToken) {\r\n var fullName = getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());\r\n this._getParentElement().endSourceSpan = endTagToken.sourceSpan;\r\n if (html_tags_1.getHtmlTagDefinition(fullName).isVoid) {\r\n this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, \"Void elements do not have end tags \\\"\" + endTagToken.parts[1] + \"\\\"\"));\r\n }\r\n else if (!this._popElement(fullName)) {\r\n this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, \"Unexpected closing tag \\\"\" + endTagToken.parts[1] + \"\\\"\"));\r\n }\r\n };\r\n TreeBuilder.prototype._popElement = function (fullName) {\r\n for (var stackIndex = this.elementStack.length - 1; stackIndex >= 0; stackIndex--) {\r\n var el = this.elementStack[stackIndex];\r\n if (el.name == fullName) {\r\n collection_1.ListWrapper.splice(this.elementStack, stackIndex, this.elementStack.length - stackIndex);\r\n return true;\r\n }\r\n if (!html_tags_1.getHtmlTagDefinition(el.name).closedByParent) {\r\n return false;\r\n }\r\n }\r\n return false;\r\n };\r\n TreeBuilder.prototype._consumeAttr = function (attrName) {\r\n var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);\r\n var end = attrName.sourceSpan.end;\r\n var value = '';\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {\r\n var valueToken = this._advance();\r\n value = valueToken.parts[0];\r\n end = valueToken.sourceSpan.end;\r\n }\r\n return new html_ast_1.HtmlAttrAst(fullName, value, new parse_util_1.ParseSourceSpan(attrName.sourceSpan.start, end));\r\n };\r\n TreeBuilder.prototype._getParentElement = function () {\r\n return this.elementStack.length > 0 ? collection_1.ListWrapper.last(this.elementStack) : null;\r\n };\r\n TreeBuilder.prototype._addToParent = function (node) {\r\n var parent = this._getParentElement();\r\n if (lang_1.isPresent(parent)) {\r\n parent.children.push(node);\r\n }\r\n else {\r\n this.rootNodes.push(node);\r\n }\r\n };\r\n return TreeBuilder;\r\n}());\r\nfunction getElementFullName(prefix, localName, parentElement) {\r\n if (lang_1.isBlank(prefix)) {\r\n prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;\r\n if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {\r\n prefix = html_tags_1.getNsPrefix(parentElement.name);\r\n }\r\n }\r\n return html_tags_1.mergeNsAndName(prefix, localName);\r\n}\r\nfunction lastOnStack(stack, element) {\r\n return stack.length > 0 && stack[stack.length - 1] === element;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvaHRtbF9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUJBU08sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQywyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUUzRCx5QkFRTyxZQUFZLENBQUMsQ0FBQTtBQUVwQixtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCwyQkFBcUQsY0FBYyxDQUFDLENBQUE7QUFDcEUsMkJBQXlELGNBQWMsQ0FBQyxDQUFBO0FBQ3hFLDBCQUFtRixhQUFhLENBQUMsQ0FBQTtBQUVqRztJQUFtQyxpQ0FBVTtJQUszQyx1QkFBbUIsV0FBbUIsRUFBRSxJQUFxQixFQUFFLEdBQVc7UUFBSSxrQkFBTSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFBNUUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFBMEQsQ0FBQztJQUoxRixvQkFBTSxHQUFiLFVBQWMsV0FBbUIsRUFBRSxJQUFxQixFQUFFLEdBQVc7UUFDbkUsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUdILG9CQUFDO0FBQUQsQ0FBQyxBQU5ELENBQW1DLHVCQUFVLEdBTTVDO0FBTlkscUJBQWEsZ0JBTXpCLENBQUE7QUFFRDtJQUNFLDZCQUFtQixTQUFvQixFQUFTLE1BQW9CO1FBQWpELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFjO0lBQUcsQ0FBQztJQUMxRSwwQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksMkJBQW1CLHNCQUUvQixDQUFBO0FBR0Q7SUFBQTtJQVFBLENBQUM7SUFQQywwQkFBSyxHQUFM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LENBQUMsQ0FBQyxjQUFPLENBQUMsTUFBTSxDQUFDLElBQUksZ0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsTUFBTSxHQUFHLHVCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLDBCQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxxQkFBcUIsS0FBWSxFQUFFLE9BQVk7SUFDN0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBTdHJpbmdXcmFwcGVyLFxuICBzdHJpbmdpZnksXG4gIGFzc2VydGlvbnNFbmFibGVkLFxuICBTdHJpbmdKb2luZXIsXG4gIHNlcmlhbGl6ZUVudW0sXG4gIENPTlNUX0VYUFJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0IHtcbiAgSHRtbEFzdCxcbiAgSHRtbEF0dHJBc3QsXG4gIEh0bWxUZXh0QXN0LFxuICBIdG1sQ29tbWVudEFzdCxcbiAgSHRtbEVsZW1lbnRBc3QsXG4gIEh0bWxFeHBhbnNpb25Bc3QsXG4gIEh0bWxFeHBhbnNpb25DYXNlQXN0XG59IGZyb20gJy4vaHRtbF9hc3QnO1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7SHRtbFRva2VuLCBIdG1sVG9rZW5UeXBlLCB0b2tlbml6ZUh0bWx9IGZyb20gJy4vaHRtbF9sZXhlcic7XG5pbXBvcnQge1BhcnNlRXJyb3IsIFBhcnNlTG9jYXRpb24sIFBhcnNlU291cmNlU3Bhbn0gZnJvbSAnLi9wYXJzZV91dGlsJztcbmltcG9ydCB7SHRtbFRhZ0RlZmluaXRpb24sIGdldEh0bWxUYWdEZWZpbml0aW9uLCBnZXROc1ByZWZpeCwgbWVyZ2VOc0FuZE5hbWV9IGZyb20gJy4vaHRtbF90YWdzJztcblxuZXhwb3J0IGNsYXNzIEh0bWxUcmVlRXJyb3IgZXh0ZW5kcyBQYXJzZUVycm9yIHtcbiAgc3RhdGljIGNyZWF0ZShlbGVtZW50TmFtZTogc3RyaW5nLCBzcGFuOiBQYXJzZVNvdXJjZVNwYW4sIG1zZzogc3RyaW5nKTogSHRtbFRyZWVFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBIdG1sVHJlZUVycm9yKGVsZW1lbnROYW1lLCBzcGFuLCBtc2cpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnROYW1lOiBzdHJpbmcsIHNwYW46IFBhcnNlU291cmNlU3BhbiwgbXNnOiBzdHJpbmcpIHsgc3VwZXIoc3BhbiwgbXNnKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbFBhcnNlVHJlZVJlc3VsdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByb290Tm9kZXM6IEh0bWxBc3RbXSwgcHVibGljIGVycm9yczogUGFyc2VFcnJvcltdKSB7fVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHRtbFBhcnNlciB7XG4gIHBhcnNlKHNvdXJjZUNvbnRlbnQ6IHN0cmluZywgc291cmNlVXJsOiBzdHJpbmcsXG4gICAgICAgIHBhcnNlRXhwYW5zaW9uRm9ybXM6IGJvb2xlYW4gPSBmYWxzZSk6IEh0bWxQYXJzZVRyZWVSZXN1bHQge1xuICAgIHZhciB0b2tlbnNBbmRFcnJvcnMgPSB0b2tlbml6ZUh0bWwoc291cmNlQ29udGVudCwgc291cmNlVXJsLCBwYXJzZUV4cGFuc2lvbkZvcm1zKTtcbiAgICB2YXIgdHJlZUFuZEVycm9ycyA9IG5ldyBUcmVlQnVpbGRlcih0b2tlbnNBbmRFcnJvcnMudG9rZW5zKS5idWlsZCgpO1xuICAgIHJldHVybiBuZXcgSHRtbFBhcnNlVHJlZVJlc3VsdCh0cmVlQW5kRXJyb3JzLnJvb3ROb2RlcywgKDxQYXJzZUVycm9yW10+dG9rZW5zQW5kRXJyb3JzLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KHRyZWVBbmRFcnJvcnMuZXJyb3JzKSk7XG4gIH1cbn1cblxuY2xhc3MgVHJlZUJ1aWxkZXIge1xuICBwcml2YXRlIGluZGV4OiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSBwZWVrOiBIdG1sVG9rZW47XG5cbiAgcHJpdmF0ZSByb290Tm9kZXM6IEh0bWxBc3RbXSA9IFtdO1xuICBwcml2YXRlIGVycm9yczogSHRtbFRyZWVFcnJvcltdID0gW107XG5cbiAgcHJpdmF0ZSBlbGVtZW50U3RhY2s6IEh0bWxFbGVtZW50QXN0W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuczogSHRtbFRva2VuW10pIHsgdGhpcy5fYWR2YW5jZSgpOyB9XG5cbiAgYnVpbGQoKTogSHRtbFBhcnNlVHJlZVJlc3VsdCB7XG4gICAgd2hpbGUgKHRoaXMucGVlay50eXBlICE9PSBIdG1sVG9rZW5UeXBlLkVPRikge1xuICAgICAgaWYgKHRoaXMucGVlay50eXBlID09PSBIdG1sVG9rZW5UeXBlLlRBR19PUEVOX1NUQVJUKSB7XG4gICAgICAgIHRoaXMuX2NvbnN1bWVTdGFydFRhZyh0aGlzLl9hZHZhbmNlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5UQUdfQ0xPU0UpIHtcbiAgICAgICAgdGhpcy5fY29uc3VtZUVuZFRhZyh0aGlzLl9hZHZhbmNlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5DREFUQV9TVEFSVCkge1xuICAgICAgICB0aGlzLl9jbG9zZVZvaWRFbGVtZW50KCk7XG4gICAgICAgIHRoaXMuX2NvbnN1bWVDZGF0YSh0aGlzLl9hZHZhbmNlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5DT01NRU5UX1NUQVJUKSB7XG4gICAgICAgIHRoaXMuX2Nsb3NlVm9pZEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5fY29uc3VtZUNvbW1lbnQodGhpcy5fYWR2YW5jZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuVEVYVCB8fFxuICAgICAgICAgICAgICAgICB0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5SQVdfVEVYVCB8fFxuICAgICAgICAgICAgICAgICB0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5FU0NBUEFCTEVfUkFXX1RFWFQpIHtcbiAgICAgICAgdGhpcy5fY2xvc2VWb2lkRWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9jb25zdW1lVGV4dCh0aGlzLl9hZHZhbmNlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fRk9STV9TVEFSVCkge1xuICAgICAgICB0aGlzLl9jb25zdW1lRXhwYW5zaW9uKHRoaXMuX2FkdmFuY2UoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTa2lwIGFsbCBvdGhlciB0b2tlbnMuLi5cbiAgICAgICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEh0bWxQYXJzZVRyZWVSZXN1bHQodGhpcy5yb290Tm9kZXMsIHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkdmFuY2UoKTogSHRtbFRva2VuIHtcbiAgICB2YXIgcHJldiA9IHRoaXMucGVlaztcbiAgICBpZiAodGhpcy5pbmRleCA8IHRoaXMudG9rZW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIE5vdGU6IHRoZXJlIGlzIGFsd2F5cyBhbiBFT0YgdG9rZW4gYXQgdGhlIGVuZFxuICAgICAgdGhpcy5pbmRleCsrO1xuICAgIH1cbiAgICB0aGlzLnBlZWsgPSB0aGlzLnRva2Vuc1t0aGlzLmluZGV4XTtcbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIHByaXZhdGUgX2FkdmFuY2VJZih0eXBlOiBIdG1sVG9rZW5UeXBlKTogSHRtbFRva2VuIHtcbiAgICBpZiAodGhpcy5wZWVrLnR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hZHZhbmNlKCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUNkYXRhKHN0YXJ0VG9rZW46IEh0bWxUb2tlbikge1xuICAgIHRoaXMuX2NvbnN1bWVUZXh0KHRoaXMuX2FkdmFuY2UoKSk7XG4gICAgdGhpcy5fYWR2YW5jZUlmKEh0bWxUb2tlblR5cGUuQ0RBVEFfRU5EKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVDb21tZW50KHRva2VuOiBIdG1sVG9rZW4pIHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuX2FkdmFuY2VJZihIdG1sVG9rZW5UeXBlLlJBV19URVhUKTtcbiAgICB0aGlzLl9hZHZhbmNlSWYoSHRtbFRva2VuVHlwZS5DT01NRU5UX0VORCk7XG4gICAgdmFyIHZhbHVlID0gaXNQcmVzZW50KHRleHQpID8gdGV4dC5wYXJ0c1swXS50cmltKCkgOiBudWxsO1xuICAgIHRoaXMuX2FkZFRvUGFyZW50KG5ldyBIdG1sQ29tbWVudEFzdCh2YWx1ZSwgdG9rZW4uc291cmNlU3BhbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUV4cGFuc2lvbih0b2tlbjogSHRtbFRva2VuKSB7XG4gICAgbGV0IHN3aXRjaFZhbHVlID0gdGhpcy5fYWR2YW5jZSgpO1xuXG4gICAgbGV0IHR5cGUgPSB0aGlzLl9hZHZhbmNlKCk7XG4gICAgbGV0IGNhc2VzID0gW107XG5cbiAgICAvLyByZWFkID1cbiAgICB3aGlsZSAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0NBU0VfVkFMVUUpIHtcbiAgICAgIGxldCBleHBDYXNlID0gdGhpcy5fcGFyc2VFeHBhbnNpb25DYXNlKCk7XG4gICAgICBpZiAoaXNCbGFuayhleHBDYXNlKSkgcmV0dXJuOyAgLy8gZXJyb3JcbiAgICAgIGNhc2VzLnB1c2goZXhwQ2FzZSk7XG4gICAgfVxuXG4gICAgLy8gcmVhZCB0aGUgZmluYWwgfVxuICAgIGlmICh0aGlzLnBlZWsudHlwZSAhPT0gSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fRk9STV9FTkQpIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goXG4gICAgICAgICAgSHRtbFRyZWVFcnJvci5jcmVhdGUobnVsbCwgdGhpcy5wZWVrLnNvdXJjZVNwYW4sIGBJbnZhbGlkIGV4cGFuc2lvbiBmb3JtLiBNaXNzaW5nICd9Jy5gKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2FkdmFuY2UoKTtcblxuICAgIGxldCBtYWluU291cmNlU3BhbiA9IG5ldyBQYXJzZVNvdXJjZVNwYW4odG9rZW4uc291cmNlU3Bhbi5zdGFydCwgdGhpcy5wZWVrLnNvdXJjZVNwYW4uZW5kKTtcbiAgICB0aGlzLl9hZGRUb1BhcmVudChuZXcgSHRtbEV4cGFuc2lvbkFzdChzd2l0Y2hWYWx1ZS5wYXJ0c1swXSwgdHlwZS5wYXJ0c1swXSwgY2FzZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblNvdXJjZVNwYW4sIHN3aXRjaFZhbHVlLnNvdXJjZVNwYW4pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlRXhwYW5zaW9uQ2FzZSgpOiBIdG1sRXhwYW5zaW9uQ2FzZUFzdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5fYWR2YW5jZSgpO1xuXG4gICAgLy8gcmVhZCB7XG4gICAgaWYgKHRoaXMucGVlay50eXBlICE9PSBIdG1sVG9rZW5UeXBlLkVYUEFOU0lPTl9DQVNFX0VYUF9TVEFSVCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaChIdG1sVHJlZUVycm9yLmNyZWF0ZShudWxsLCB0aGlzLnBlZWsuc291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEludmFsaWQgZXhwYW5zaW9uIGZvcm0uIE1pc3NpbmcgJ3snLixgKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyByZWFkIHVudGlsIH1cbiAgICBsZXQgc3RhcnQgPSB0aGlzLl9hZHZhbmNlKCk7XG5cbiAgICBsZXQgZXhwID0gdGhpcy5fY29sbGVjdEV4cGFuc2lvbkV4cFRva2VucyhzdGFydCk7XG4gICAgaWYgKGlzQmxhbmsoZXhwKSkgcmV0dXJuIG51bGw7XG5cbiAgICBsZXQgZW5kID0gdGhpcy5fYWR2YW5jZSgpO1xuICAgIGV4cC5wdXNoKG5ldyBIdG1sVG9rZW4oSHRtbFRva2VuVHlwZS5FT0YsIFtdLCBlbmQuc291cmNlU3BhbikpO1xuXG4gICAgLy8gcGFyc2UgZXZlcnl0aGluZyBpbiBiZXR3ZWVuIHsgYW5kIH1cbiAgICBsZXQgcGFyc2VkRXhwID0gbmV3IFRyZWVCdWlsZGVyKGV4cCkuYnVpbGQoKTtcbiAgICBpZiAocGFyc2VkRXhwLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IHRoaXMuZXJyb3JzLmNvbmNhdCg8SHRtbFRyZWVFcnJvcltdPnBhcnNlZEV4cC5lcnJvcnMpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZVNwYW4gPSBuZXcgUGFyc2VTb3VyY2VTcGFuKHZhbHVlLnNvdXJjZVNwYW4uc3RhcnQsIGVuZC5zb3VyY2VTcGFuLmVuZCk7XG4gICAgbGV0IGV4cFNvdXJjZVNwYW4gPSBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0LnNvdXJjZVNwYW4uc3RhcnQsIGVuZC5zb3VyY2VTcGFuLmVuZCk7XG4gICAgcmV0dXJuIG5ldyBIdG1sRXhwYW5zaW9uQ2FzZUFzdCh2YWx1ZS5wYXJ0c1swXSwgcGFyc2VkRXhwLnJvb3ROb2Rlcywgc291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNvdXJjZVNwYW4sIGV4cFNvdXJjZVNwYW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29sbGVjdEV4cGFuc2lvbkV4cFRva2VucyhzdGFydDogSHRtbFRva2VuKTogSHRtbFRva2VuW10ge1xuICAgIGxldCBleHAgPSBbXTtcbiAgICBsZXQgZXhwYW5zaW9uRm9ybVN0YWNrID0gW0h0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0NBU0VfRVhQX1NUQVJUXTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0ZPUk1fU1RBUlQgfHxcbiAgICAgICAgICB0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5FWFBBTlNJT05fQ0FTRV9FWFBfU1RBUlQpIHtcbiAgICAgICAgZXhwYW5zaW9uRm9ybVN0YWNrLnB1c2godGhpcy5wZWVrLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuRVhQQU5TSU9OX0NBU0VfRVhQX0VORCkge1xuICAgICAgICBpZiAobGFzdE9uU3RhY2soZXhwYW5zaW9uRm9ybVN0YWNrLCBIdG1sVG9rZW5UeXBlLkVYUEFOU0lPTl9DQVNFX0VYUF9TVEFSVCkpIHtcbiAgICAgICAgICBleHBhbnNpb25Gb3JtU3RhY2sucG9wKCk7XG4gICAgICAgICAgaWYgKGV4cGFuc2lvbkZvcm1TdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIGV4cDtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgIEh0bWxUcmVlRXJyb3IuY3JlYXRlKG51bGwsIHN0YXJ0LnNvdXJjZVNwYW4sIGBJbnZhbGlkIGV4cGFuc2lvbiBmb3JtLiBNaXNzaW5nICd9Jy5gKSk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGVlay50eXBlID09PSBIdG1sVG9rZW5UeXBlLkVYUEFOU0lPTl9GT1JNX0VORCkge1xuICAgICAgICBpZiAobGFzdE9uU3RhY2soZXhwYW5zaW9uRm9ybVN0YWNrLCBIdG1sVG9rZW5UeXBlLkVYUEFOU0lPTl9GT1JNX1NUQVJUKSkge1xuICAgICAgICAgIGV4cGFuc2lvbkZvcm1TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICBIdG1sVHJlZUVycm9yLmNyZWF0ZShudWxsLCBzdGFydC5zb3VyY2VTcGFuLCBgSW52YWxpZCBleHBhbnNpb24gZm9ybS4gTWlzc2luZyAnfScuYCkpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5FT0YpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaChcbiAgICAgICAgICAgIEh0bWxUcmVlRXJyb3IuY3JlYXRlKG51bGwsIHN0YXJ0LnNvdXJjZVNwYW4sIGBJbnZhbGlkIGV4cGFuc2lvbiBmb3JtLiBNaXNzaW5nICd9Jy5gKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBleHAucHVzaCh0aGlzLl9hZHZhbmNlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVUZXh0KHRva2VuOiBIdG1sVG9rZW4pIHtcbiAgICBsZXQgdGV4dCA9IHRva2VuLnBhcnRzWzBdO1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDAgJiYgdGV4dFswXSA9PSAnXFxuJykge1xuICAgICAgbGV0IHBhcmVudCA9IHRoaXMuX2dldFBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGlmIChpc1ByZXNlbnQocGFyZW50KSAmJiBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICBnZXRIdG1sVGFnRGVmaW5pdGlvbihwYXJlbnQubmFtZSkuaWdub3JlRmlyc3RMZikge1xuICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRleHQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fYWRkVG9QYXJlbnQobmV3IEh0bWxUZXh0QXN0KHRleHQsIHRva2VuLnNvdXJjZVNwYW4pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZVZvaWRFbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgZWwgPSBMaXN0V3JhcHBlci5sYXN0KHRoaXMuZWxlbWVudFN0YWNrKTtcblxuICAgICAgaWYgKGdldEh0bWxUYWdEZWZpbml0aW9uKGVsLm5hbWUpLmlzVm9pZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lU3RhcnRUYWcoc3RhcnRUYWdUb2tlbjogSHRtbFRva2VuKSB7XG4gICAgdmFyIHByZWZpeCA9IHN0YXJ0VGFnVG9rZW4ucGFydHNbMF07XG4gICAgdmFyIG5hbWUgPSBzdGFydFRhZ1Rva2VuLnBhcnRzWzFdO1xuICAgIHZhciBhdHRycyA9IFtdO1xuICAgIHdoaWxlICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5BVFRSX05BTUUpIHtcbiAgICAgIGF0dHJzLnB1c2godGhpcy5fY29uc3VtZUF0dHIodGhpcy5fYWR2YW5jZSgpKSk7XG4gICAgfVxuICAgIHZhciBmdWxsTmFtZSA9IGdldEVsZW1lbnRGdWxsTmFtZShwcmVmaXgsIG5hbWUsIHRoaXMuX2dldFBhcmVudEVsZW1lbnQoKSk7XG4gICAgdmFyIHNlbGZDbG9zaW5nID0gZmFsc2U7XG4gICAgLy8gTm90ZTogVGhlcmUgY291bGQgaGF2ZSBiZWVuIGEgdG9rZW5pemVyIGVycm9yXG4gICAgLy8gc28gdGhhdCB3ZSBkb24ndCBnZXQgYSB0b2tlbiBmb3IgdGhlIGVuZCB0YWcuLi5cbiAgICBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuVEFHX09QRU5fRU5EX1ZPSUQpIHtcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICAgIHNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgIGlmIChnZXROc1ByZWZpeChmdWxsTmFtZSkgPT0gbnVsbCAmJiAhZ2V0SHRtbFRhZ0RlZmluaXRpb24oZnVsbE5hbWUpLmlzVm9pZCkge1xuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKEh0bWxUcmVlRXJyb3IuY3JlYXRlKFxuICAgICAgICAgICAgZnVsbE5hbWUsIHN0YXJ0VGFnVG9rZW4uc291cmNlU3BhbixcbiAgICAgICAgICAgIGBPbmx5IHZvaWQgYW5kIGZvcmVpZ24gZWxlbWVudHMgY2FuIGJlIHNlbGYgY2xvc2VkIFwiJHtzdGFydFRhZ1Rva2VuLnBhcnRzWzFdfVwiYCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuVEFHX09QRU5fRU5EKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICBzZWxmQ2xvc2luZyA9IGZhbHNlO1xuICAgIH1cbiAgICB2YXIgZW5kID0gdGhpcy5wZWVrLnNvdXJjZVNwYW4uc3RhcnQ7XG4gICAgbGV0IHNwYW4gPSBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0VGFnVG9rZW4uc291cmNlU3Bhbi5zdGFydCwgZW5kKTtcbiAgICB2YXIgZWwgPSBuZXcgSHRtbEVsZW1lbnRBc3QoZnVsbE5hbWUsIGF0dHJzLCBbXSwgc3Bhbiwgc3BhbiwgbnVsbCk7XG4gICAgdGhpcy5fcHVzaEVsZW1lbnQoZWwpO1xuICAgIGlmIChzZWxmQ2xvc2luZykge1xuICAgICAgdGhpcy5fcG9wRWxlbWVudChmdWxsTmFtZSk7XG4gICAgICBlbC5lbmRTb3VyY2VTcGFuID0gc3BhbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wdXNoRWxlbWVudChlbDogSHRtbEVsZW1lbnRBc3QpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50U3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHBhcmVudEVsID0gTGlzdFdyYXBwZXIubGFzdCh0aGlzLmVsZW1lbnRTdGFjayk7XG4gICAgICBpZiAoZ2V0SHRtbFRhZ0RlZmluaXRpb24ocGFyZW50RWwubmFtZSkuaXNDbG9zZWRCeUNoaWxkKGVsLm5hbWUpKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB0YWdEZWYgPSBnZXRIdG1sVGFnRGVmaW5pdGlvbihlbC5uYW1lKTtcbiAgICB2YXIgcGFyZW50RWwgPSB0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCk7XG4gICAgaWYgKHRhZ0RlZi5yZXF1aXJlRXh0cmFQYXJlbnQoaXNQcmVzZW50KHBhcmVudEVsKSA/IHBhcmVudEVsLm5hbWUgOiBudWxsKSkge1xuICAgICAgdmFyIG5ld1BhcmVudCA9IG5ldyBIdG1sRWxlbWVudEFzdCh0YWdEZWYucGFyZW50VG9BZGQsIFtdLCBbZWxdLCBlbC5zb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5zdGFydFNvdXJjZVNwYW4sIGVsLmVuZFNvdXJjZVNwYW4pO1xuICAgICAgdGhpcy5fYWRkVG9QYXJlbnQobmV3UGFyZW50KTtcbiAgICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2gobmV3UGFyZW50KTtcbiAgICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZGRUb1BhcmVudChlbCk7XG4gICAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lRW5kVGFnKGVuZFRhZ1Rva2VuOiBIdG1sVG9rZW4pIHtcbiAgICB2YXIgZnVsbE5hbWUgPVxuICAgICAgICBnZXRFbGVtZW50RnVsbE5hbWUoZW5kVGFnVG9rZW4ucGFydHNbMF0sIGVuZFRhZ1Rva2VuLnBhcnRzWzFdLCB0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCkpO1xuXG4gICAgdGhpcy5fZ2V0UGFyZW50RWxlbWVudCgpLmVuZFNvdXJjZVNwYW4gPSBlbmRUYWdUb2tlbi5zb3VyY2VTcGFuO1xuXG4gICAgaWYgKGdldEh0bWxUYWdEZWZpbml0aW9uKGZ1bGxOYW1lKS5pc1ZvaWQpIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goXG4gICAgICAgICAgSHRtbFRyZWVFcnJvci5jcmVhdGUoZnVsbE5hbWUsIGVuZFRhZ1Rva2VuLnNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFZvaWQgZWxlbWVudHMgZG8gbm90IGhhdmUgZW5kIHRhZ3MgXCIke2VuZFRhZ1Rva2VuLnBhcnRzWzFdfVwiYCkpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX3BvcEVsZW1lbnQoZnVsbE5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9ycy5wdXNoKEh0bWxUcmVlRXJyb3IuY3JlYXRlKGZ1bGxOYW1lLCBlbmRUYWdUb2tlbi5zb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgVW5leHBlY3RlZCBjbG9zaW5nIHRhZyBcIiR7ZW5kVGFnVG9rZW4ucGFydHNbMV19XCJgKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcG9wRWxlbWVudChmdWxsTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgc3RhY2tJbmRleCA9IHRoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCAtIDE7IHN0YWNrSW5kZXggPj0gMDsgc3RhY2tJbmRleC0tKSB7XG4gICAgICBsZXQgZWwgPSB0aGlzLmVsZW1lbnRTdGFja1tzdGFja0luZGV4XTtcbiAgICAgIGlmIChlbC5uYW1lID09IGZ1bGxOYW1lKSB7XG4gICAgICAgIExpc3RXcmFwcGVyLnNwbGljZSh0aGlzLmVsZW1lbnRTdGFjaywgc3RhY2tJbmRleCwgdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoIC0gc3RhY2tJbmRleCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWdldEh0bWxUYWdEZWZpbml0aW9uKGVsLm5hbWUpLmNsb3NlZEJ5UGFyZW50KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUF0dHIoYXR0ck5hbWU6IEh0bWxUb2tlbik6IEh0bWxBdHRyQXN0IHtcbiAgICB2YXIgZnVsbE5hbWUgPSBtZXJnZU5zQW5kTmFtZShhdHRyTmFtZS5wYXJ0c1swXSwgYXR0ck5hbWUucGFydHNbMV0pO1xuICAgIHZhciBlbmQgPSBhdHRyTmFtZS5zb3VyY2VTcGFuLmVuZDtcbiAgICB2YXIgdmFsdWUgPSAnJztcbiAgICBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuQVRUUl9WQUxVRSkge1xuICAgICAgdmFyIHZhbHVlVG9rZW4gPSB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICB2YWx1ZSA9IHZhbHVlVG9rZW4ucGFydHNbMF07XG4gICAgICBlbmQgPSB2YWx1ZVRva2VuLnNvdXJjZVNwYW4uZW5kO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEh0bWxBdHRyQXN0KGZ1bGxOYW1lLCB2YWx1ZSwgbmV3IFBhcnNlU291cmNlU3BhbihhdHRyTmFtZS5zb3VyY2VTcGFuLnN0YXJ0LCBlbmQpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhcmVudEVsZW1lbnQoKTogSHRtbEVsZW1lbnRBc3Qge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggPiAwID8gTGlzdFdyYXBwZXIubGFzdCh0aGlzLmVsZW1lbnRTdGFjaykgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkVG9QYXJlbnQobm9kZTogSHRtbEFzdCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCk7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb290Tm9kZXMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEZ1bGxOYW1lKHByZWZpeDogc3RyaW5nLCBsb2NhbE5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50OiBIdG1sRWxlbWVudEFzdCk6IHN0cmluZyB7XG4gIGlmIChpc0JsYW5rKHByZWZpeCkpIHtcbiAgICBwcmVmaXggPSBnZXRIdG1sVGFnRGVmaW5pdGlvbihsb2NhbE5hbWUpLmltcGxpY2l0TmFtZXNwYWNlUHJlZml4O1xuICAgIGlmIChpc0JsYW5rKHByZWZpeCkgJiYgaXNQcmVzZW50KHBhcmVudEVsZW1lbnQpKSB7XG4gICAgICBwcmVmaXggPSBnZXROc1ByZWZpeChwYXJlbnRFbGVtZW50Lm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZU5zQW5kTmFtZShwcmVmaXgsIGxvY2FsTmFtZSk7XG59XG5cbmZ1bmN0aW9uIGxhc3RPblN0YWNrKHN0YWNrOiBhbnlbXSwgZWxlbWVudDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGFjay5sZW5ndGggPiAwICYmIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdID09PSBlbGVtZW50O1xufSJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar html_tags_1 = require('./html_tags');\r\nvar NG_CONTENT_SELECT_ATTR = 'select';\r\nvar NG_CONTENT_ELEMENT = 'ng-content';\r\nvar LINK_ELEMENT = 'link';\r\nvar LINK_STYLE_REL_ATTR = 'rel';\r\nvar LINK_STYLE_HREF_ATTR = 'href';\r\nvar LINK_STYLE_REL_VALUE = 'stylesheet';\r\nvar STYLE_ELEMENT = 'style';\r\nvar SCRIPT_ELEMENT = 'script';\r\nvar NG_NON_BINDABLE_ATTR = 'ngNonBindable';\r\nvar NG_PROJECT_AS = 'ngProjectAs';\r\nfunction preparseElement(ast) {\r\n var selectAttr = null;\r\n var hrefAttr = null;\r\n var relAttr = null;\r\n var nonBindable = false;\r\n var projectAs = null;\r\n ast.attrs.forEach(function (attr) {\r\n var lcAttrName = attr.name.toLowerCase();\r\n if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\r\n selectAttr = attr.value;\r\n }\r\n else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\r\n hrefAttr = attr.value;\r\n }\r\n else if (lcAttrName == LINK_STYLE_REL_ATTR) {\r\n relAttr = attr.value;\r\n }\r\n else if (attr.name == NG_NON_BINDABLE_ATTR) {\r\n nonBindable = true;\r\n }\r\n else if (attr.name == NG_PROJECT_AS) {\r\n if (attr.value.length > 0) {\r\n projectAs = attr.value;\r\n }\r\n }\r\n });\r\n selectAttr = normalizeNgContentSelect(selectAttr);\r\n var nodeName = ast.name.toLowerCase();\r\n var type = PreparsedElementType.OTHER;\r\n if (html_tags_1.splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {\r\n type = PreparsedElementType.NG_CONTENT;\r\n }\r\n else if (nodeName == STYLE_ELEMENT) {\r\n type = PreparsedElementType.STYLE;\r\n }\r\n else if (nodeName == SCRIPT_ELEMENT) {\r\n type = PreparsedElementType.SCRIPT;\r\n }\r\n else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\r\n type = PreparsedElementType.STYLESHEET;\r\n }\r\n return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);\r\n}\r\nexports.preparseElement = preparseElement;\r\n(function (PreparsedElementType) {\r\n PreparsedElementType[PreparsedElementType[\"NG_CONTENT\"] = 0] = \"NG_CONTENT\";\r\n PreparsedElementType[PreparsedElementType[\"STYLE\"] = 1] = \"STYLE\";\r\n PreparsedElementType[PreparsedElementType[\"STYLESHEET\"] = 2] = \"STYLESHEET\";\r\n PreparsedElementType[PreparsedElementType[\"SCRIPT\"] = 3] = \"SCRIPT\";\r\n PreparsedElementType[PreparsedElementType[\"OTHER\"] = 4] = \"OTHER\";\r\n})(exports.PreparsedElementType || (exports.PreparsedElementType = {}));\r\nvar PreparsedElementType = exports.PreparsedElementType;\r\nvar PreparsedElement = (function () {\r\n function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) {\r\n this.type = type;\r\n this.selectAttr = selectAttr;\r\n this.hrefAttr = hrefAttr;\r\n this.nonBindable = nonBindable;\r\n this.projectAs = projectAs;\r\n }\r\n return PreparsedElement;\r\n}());\r\nexports.PreparsedElement = PreparsedElement;\r\nfunction normalizeNgContentSelect(selectAttr) {\r\n if (lang_1.isBlank(selectAttr) || selectAttr.length === 0) {\r\n return '*';\r\n }\r\n return selectAttr;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfcHJlcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX3ByZXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFDNUQsMEJBQTBCLGFBQWEsQ0FBQyxDQUFBO0FBRXhDLElBQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLElBQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDO0FBQ3hDLElBQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUM1QixJQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQztBQUNsQyxJQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUNwQyxJQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQztBQUMxQyxJQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDOUIsSUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBQ2hDLElBQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0FBQzdDLElBQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUVwQyx5QkFBZ0MsR0FBbUI7SUFDakQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztJQUNwQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLElBQUksU0FBUyxHQUFXLElBQUksQ0FBQztJQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7UUFDcEIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1lB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RSxDQUFDLENBQUMsY0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHRtbEVsZW1lbnRBc3R9IGZyb20gJy4vaHRtbF9hc3QnO1xuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3NwbGl0TnNOYW1lfSBmcm9tICcuL2h0bWxfdGFncyc7XG5cbmNvbnN0IE5HX0NPTlRFTlRfU0VMRUNUX0FUVFIgPSAnc2VsZWN0JztcbmNvbnN0IE5HX0NPTlRFTlRfRUxFTUVOVCA9ICduZy1jb250ZW50JztcbmNvbnN0IExJTktfRUxFTUVOVCA9ICdsaW5rJztcbmNvbnN0IExJTktfU1RZTEVfUkVMX0FUVFIgPSAncmVsJztcbmNvbnN0IExJTktfU1RZTEVfSFJFRl9BVFRSID0gJ2hyZWYnO1xuY29uc3QgTElOS19TVFlMRV9SRUxfVkFMVUUgPSAnc3R5bGVzaGVldCc7XG5jb25zdCBTVFlMRV9FTEVNRU5UID0gJ3N0eWxlJztcbmNvbnN0IFNDUklQVF9FTEVNRU5UID0gJ3NjcmlwdCc7XG5jb25zdCBOR19OT05fQklOREFCTEVfQVRUUiA9ICduZ05vbkJpbmRhYmxlJztcbmNvbnN0IE5HX1BST0pFQ1RfQVMgPSAnbmdQcm9qZWN0QXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyc2VFbGVtZW50KGFzdDogSHRtbEVsZW1lbnRBc3QpOiBQcmVwYXJzZWRFbGVtZW50IHtcbiAgdmFyIHNlbGVjdEF0dHIgPSBudWxsO1xuICB2YXIgaHJlZkF0dHIgPSBudWxsO1xuICB2YXIgcmVsQXR0ciA9IG51bGw7XG4gIHZhciBub25CaW5kYWJsZSA9IGZhbHNlO1xuICB2YXIgcHJvamVjdEFzOiBzdHJpbmcgPSBudWxsO1xuICBhc3QuYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcbiAgICBsZXQgbGNBdHRyTmFtZSA9IGF0dHIubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsY0F0dHJOYW1lID09IE5HX0NPTlRFTlRfU0VMRUNUX0FUVFIpIHtcbiAgICAgIHNlbGVjdEF0dHIgPSBhdHRyLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGNBdHRyTmFtZSA9PSBMSU5LX1NUWUxFX0hSRUZfQVRUUikge1xuICAgICAgaHJlZkF0dHIgPSBhdHRyLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGNBdHRyTmFtZSA9PSBMSU5LX1NUWUxFX1JFTF9BVFRSKSB7XG4gICAgICByZWxBdHRyID0gYXR0ci52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGF0dHIubmFtZSA9PSBOR19OT05fQklOREFCTEVfQVRUUikge1xuICAgICAgbm9uQmluZGFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXR0ci5uYW1lID09IE5HX1BST0pFQ1RfQVMpIHtcbiAgICAgIGlmIChhdHRyLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcHJvamVjdEFzID0gYXR0ci52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBzZWxlY3RBdHRyID0gbm9ybWFsaXplTmdDb250ZW50U2VsZWN0KHNlbGVjdEF0dHIpO1xuICB2YXIgbm9kZU5hbWUgPSBhc3QubmFtZS50b0xvd2VyQ2FzZSgpO1xuICB2YXIgdHlwZSA9IFByZXBhcnNlZEVsZW1lbnRUeXBlLk9USEVSO1xuICBpZiAoc3BsaXROc05hbWUobm9kZU5hbWUpWzFdID09IE5HX0NPTlRFTlRfRUxFTUVOVCkge1xuICAgIHR5cGUgPSBQcmVwYXJzZWRFbGVtZW50VHlwZS5OR19DT05URU5UO1xuICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IFNUWUxFX0VMRU1FTlQpIHtcbiAgICB0eXBlID0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEU7XG4gIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gU0NSSVBUX0VMRU1FTlQpIHtcbiAgICB0eXBlID0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU0NSSVBUO1xuICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IExJTktfRUxFTUVOVCAmJiByZWxBdHRyID09IExJTktfU1RZTEVfUkVMX1ZBTFVFKSB7XG4gICAgdHlwZSA9IFByZXBhcnNlZEVsZW1lbnRUeXBlLlNUWUxFU0hFRVQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBQcmVwYXJzZWRFbGVtZW50KHR5cGUsIHNlbGVjdEF0dHIsIGhyZWZBdHRyLCBub25CaW5kYWJsZSwgcHJvamVjdEFzKTtcbn1cblxuZXhwb3J0IGVudW0gUHJlcGFyc2VkRWxlbWVudFR5cGUge1xuICBOR19DT05URU5ULFxuICBTVFlMRSxcbiAgU1RZTEVTSEVFVCxcbiAgU0NSSVBULFxuICBPVEhFUlxufVxuXG5leHBvcnQgY2xhc3MgUHJlcGFyc2VkRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0eXBlOiBQcmVwYXJzZWRFbGVtZW50VHlwZSwgcHVibGljIHNlbGVjdEF0dHI6IHN0cmluZywgcHVibGljIGhyZWZBdHRyOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBub25CaW5kYWJsZTogYm9vbGVhbiwgcHVibGljIHByb2plY3RBczogc3RyaW5nKSB7fVxufVxuXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5nQ29udGVudFNlbGVjdChzZWxlY3RBdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoaXNCbGFuayhzZWxlY3RBdHRyKSB8fCBzZWxlY3RBdHRyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnKic7XG4gIH1cbiAgcmV0dXJuIHNlbGVjdEF0dHI7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar compile_metadata_1 = require('./compile_metadata');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar style_url_resolver_1 = require('./style_url_resolver');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar html_ast_1 = require('./html_ast');\r\nvar html_parser_1 = require('./html_parser');\r\nvar template_preparser_1 = require('./template_preparser');\r\nvar DirectiveNormalizer = (function () {\r\n function DirectiveNormalizer(_xhr, _urlResolver, _htmlParser) {\r\n this._xhr = _xhr;\r\n this._urlResolver = _urlResolver;\r\n this._htmlParser = _htmlParser;\r\n }\r\n DirectiveNormalizer.prototype.normalizeDirective = function (directive) {\r\n if (!directive.isComponent) {\r\n // For non components there is nothing to be normalized yet.\r\n return async_1.PromiseWrapper.resolve(directive);\r\n }\r\n return this.normalizeTemplate(directive.type, directive.template)\r\n .then(function (normalizedTemplate) { return new compile_metadata_1.CompileDirectiveMetadata({\r\n type: directive.type,\r\n isComponent: directive.isComponent,\r\n selector: directive.selector,\r\n exportAs: directive.exportAs,\r\n changeDetection: directive.changeDetection,\r\n inputs: directive.inputs,\r\n outputs: directive.outputs,\r\n hostListeners: directive.hostListeners,\r\n hostProperties: directive.hostProperties,\r\n hostAttributes: directive.hostAttributes,\r\n lifecycleHooks: directive.lifecycleHooks,\r\n providers: directive.providers,\r\n viewProviders: directive.viewProviders,\r\n queries: directive.queries,\r\n viewQueries: directive.viewQueries,\r\n template: normalizedTemplate\r\n }); });\r\n };\r\n DirectiveNormalizer.prototype.normalizeTemplate = function (directiveType, template) {\r\n var _this = this;\r\n if (lang_1.isPresent(template.template)) {\r\n return async_1.PromiseWrapper.resolve(this.normalizeLoadedTemplate(directiveType, template, template.template, directiveType.moduleUrl));\r\n }\r\n else if (lang_1.isPresent(template.templateUrl)) {\r\n var sourceAbsUrl = this._urlResolver.resolve(directiveType.moduleUrl, template.templateUrl);\r\n return this._xhr.get(sourceAbsUrl)\r\n .then(function (templateContent) { return _this.normalizeLoadedTemplate(directiveType, template, templateContent, sourceAbsUrl); });\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"No template specified for component \" + directiveType.name);\r\n }\r\n };\r\n DirectiveNormalizer.prototype.normalizeLoadedTemplate = function (directiveType, templateMeta, template, templateAbsUrl) {\r\n var _this = this;\r\n var rootNodesAndErrors = this._htmlParser.parse(template, directiveType.name);\r\n if (rootNodesAndErrors.errors.length > 0) {\r\n var errorString = rootNodesAndErrors.errors.join('\\n');\r\n throw new exceptions_1.BaseException(\"Template parse errors:\\n\" + errorString);\r\n }\r\n var visitor = new TemplatePreparseVisitor();\r\n html_ast_1.htmlVisitAll(visitor, rootNodesAndErrors.rootNodes);\r\n var allStyles = templateMeta.styles.concat(visitor.styles);\r\n var allStyleAbsUrls = visitor.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable)\r\n .map(function (url) { return _this._urlResolver.resolve(templateAbsUrl, url); })\r\n .concat(templateMeta.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable)\r\n .map(function (url) { return _this._urlResolver.resolve(directiveType.moduleUrl, url); }));\r\n var allResolvedStyles = allStyles.map(function (style) {\r\n var styleWithImports = style_url_resolver_1.extractStyleUrls(_this._urlResolver, templateAbsUrl, style);\r\n styleWithImports.styleUrls.forEach(function (styleUrl) { return allStyleAbsUrls.push(styleUrl); });\r\n return styleWithImports.style;\r\n });\r\n var encapsulation = templateMeta.encapsulation;\r\n if (encapsulation === view_1.ViewEncapsulation.Emulated && allResolvedStyles.length === 0 &&\r\n allStyleAbsUrls.length === 0) {\r\n encapsulation = view_1.ViewEncapsulation.None;\r\n }\r\n return new compile_metadata_1.CompileTemplateMetadata({\r\n encapsulation: encapsulation,\r\n template: template,\r\n templateUrl: templateAbsUrl,\r\n styles: allResolvedStyles,\r\n styleUrls: allStyleAbsUrls,\r\n ngContentSelectors: visitor.ngContentSelectors\r\n });\r\n };\r\n DirectiveNormalizer = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [xhr_1.XHR, url_resolver_1.UrlResolver, html_parser_1.HtmlParser])\r\n ], DirectiveNormalizer);\r\n return DirectiveNormalizer;\r\n}());\r\nexports.DirectiveNormalizer = DirectiveNormalizer;\r\nvar TemplatePreparseVisitor = (function () {\r\n function TemplatePreparseVisitor() {\r\n this.ngContentSelectors = [];\r\n this.styles = [];\r\n this.styleUrls = [];\r\n this.ngNonBindableStackCount = 0;\r\n }\r\n TemplatePreparseVisitor.prototype.visitElement = function (ast, context) {\r\n var preparsedElement = template_preparser_1.preparseElement(ast);\r\n switch (preparsedElement.type) {\r\n case template_preparser_1.PreparsedElementType.NG_CONTENT:\r\n if (this.ngNonBindableStackCount === 0) {\r\n this.ngContentSelectors.push(preparsedElement.selectAttr);\r\n }\r\n break;\r\n case template_preparser_1.PreparsedElementType.STYLE:\r\n var textContent = '';\r\n ast.children.forEach(function (child) {\r\n if (child instanceof html_ast_1.HtmlTextAst) {\r\n textContent += child.value;\r\n }\r\n });\r\n this.styles.push(textContent);\r\n break;\r\n case template_preparser_1.PreparsedElementType.STYLESHEET:\r\n this.styleUrls.push(preparsedElement.hrefAttr);\r\n break;\r\n default:\r\n // DDC reports this as error. See:\r\n // https://github.com/dart-lang/dev_compiler/issues/428\r\n break;\r\n }\r\n if (preparsedElement.nonBindable) {\r\n this.ngNonBindableStackCount++;\r\n }\r\n html_ast_1.htmlVisitAll(this, ast.children);\r\n if (preparsedElement.nonBindable) {\r\n this.ngNonBindableStackCount--;\r\n }\r\n return null;\r\n };\r\n TemplatePreparseVisitor.prototype.visitComment = function (ast, context) { return null; };\r\n TemplatePreparseVisitor.prototype.visitAttr = function (ast, context) { return null; };\r\n TemplatePreparseVisitor.prototype.visitText = function (ast, context) { return null; };\r\n TemplatePreparseVisitor.prototype.visitExpansion = function (ast, context) { return null; };\r\n TemplatePreparseVisitor.prototype.visitExpansionCase = function (ast, context) { return null; };\r\n return TemplatePreparseVisitor;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX25vcm1hbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvZGlyZWN0aXZlX25vcm1hbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLGlDQU1PLG9CQUFvQixDQUFDLENBQUE7QUFDNUIscUJBQTBDLDBCQUEwQixDQUFDLENBQUE7QUFDckUsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0Qsc0JBQTZCLDJCQUEyQixDQUFDLENBQUE7QUFFekQsb0JBQWtCLDJCQUEyQixDQUFDLENBQUE7QUFDOUMsNkJBQTBCLG9DQUFvQyxDQUFDLENBQUE7QUFDL0QsbUNBQXFELHNCQUFzQixDQUFDLENBQUE7QUFDNUUsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQscUJBQWdDLGlDQUFpQyxDQUFDLENBQUE7QUFHbEUseUJBVU8sWUFBWSxDQUFDLENBQUE7QUFDcEIsNEJBQXlCLGVBQWUsQ0FBQyxDQUFBO0FBRXpDLG1DQUFzRSxzQkFBc0IsQ0FBQyxDQUFBO0FBRzdGO0lBQ0UsNkJBQW9CLElBQVMsRUFBVSxZQUF5QixFQUM1QyxXQUF1QjtRQUR2QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDNUMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7SUFBRyxDQUFDO0lBRS9DLGdEQUFrQixHQUFsQixVQUFtQixTQUFtQztRQUNwRCxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNCLDREQUE0RDtZQUM1RCxNQUFNLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFD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LElBQUksQ0FBQyxDQUFDLENBQUM7SUFFekUsb0RBQWtCLEdBQWxCLFVBQW1CLEdBQXlCLEVBQUUsT0FBWSxJQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25GLDhCQUFDO0FBQUQsQ0FBQyxBQTlDRCxJQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBpbGVUeXBlTWV0YWRhdGEsXG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEsXG4gIENvbXBpbGVQcm92aWRlck1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NZXRhZGF0YVxufSBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIGlzQXJyYXl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcblxuaW1wb3J0IHtYSFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci94aHInO1xuaW1wb3J0IHtVcmxSZXNvbHZlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3VybF9yZXNvbHZlcic7XG5pbXBvcnQge2V4dHJhY3RTdHlsZVVybHMsIGlzU3R5bGVVcmxSZXNvbHZhYmxlfSBmcm9tICcuL3N0eWxlX3VybF9yZXNvbHZlcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuXG5cbmltcG9ydCB7XG4gIEh0bWxBc3RWaXNpdG9yLFxuICBIdG1sRWxlbWVudEFzdCxcbiAgSHRtbFRleHRBc3QsXG4gIEh0bWxBdHRyQXN0LFxuICBIdG1sQXN0LFxuICBIdG1sQ29tbWVudEFzdCxcbiAgSHRtbEV4cGFuc2lvbkFzdCxcbiAgSHRtbEV4cGFuc2lvbkNhc2VBc3QsXG4gIGh0bWxWaXNpdEFsbFxufSBmcm9tICcuL2h0bWxfYXN0JztcbmltcG9ydCB7SHRtbFBhcnNlcn0gZnJvbSAnLi9odG1sX3BhcnNlcic7XG5cbmltcG9ydCB7cHJlcGFyc2VFbGVtZW50LCBQcmVwYXJzZWRFbGVtZW50LCBQcmVwYXJzZWRFbGVtZW50VHlwZX0gZnJvbSAnLi90ZW1wbGF0ZV9wcmVwYXJzZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGlyZWN0aXZlTm9ybWFsaXplciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3hocjogWEhSLCBwcml2YXRlIF91cmxSZXNvbHZlcjogVXJsUmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2h0bWxQYXJzZXI6IEh0bWxQYXJzZXIpIHt9XG5cbiAgbm9ybWFsaXplRGlyZWN0aXZlKGRpcmVjdGl2ZTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKTogUHJvbWlzZTxDb21waWxlRGlyZWN0aXZlTWV0YWRhdGE+IHtcbiAgICBpZiAoIWRpcmVjdGl2ZS5pc0NvbXBvbmVudCkge1xuICAgICAgLy8gRm9yIG5vbiBjb21wb25lbnRzIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgbm9ybWFsaXplZCB5ZXQuXG4gICAgICByZXR1cm4gUHJvbWlzZVdyYXBwZXIucmVzb2x2ZShkaXJlY3RpdmUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVUZW1wbGF0ZShkaXJlY3RpdmUudHlwZSwgZGlyZWN0aXZlLnRlbXBsYXRlKVxuICAgICAgICAudGhlbigobm9ybWFsaXplZFRlbXBsYXRlOiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSkgPT4gbmV3IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgdHlwZTogZGlyZWN0aXZlLnR5cGUsXG4gICAgICAgICAgICAgICAgaXNDb21wb25lbnQ6IGRpcmVjdGl2ZS5pc0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogZGlyZWN0aXZlLnNlbGVjdG9yLFxuICAgICAgICAgICAgICAgIGV4cG9ydEFzOiBkaXJlY3RpdmUuZXhwb3J0QXMsXG4gICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiBkaXJlY3RpdmUuY2hhbmdlRGV0ZWN0aW9uLFxuICAgICAgICAgICAgICAgIGlucHV0czogZGlyZWN0aXZlLmlucHV0cyxcbiAgICAgICAgICAgICAgICBvdXRwdXRzOiBkaXJlY3RpdmUub3V0cHV0cyxcbiAgICAgICAgICAgICAgICBob3N0TGlzdGVuZXJzOiBkaXJlY3RpdmUuaG9zdExpc3RlbmVycyxcbiAgICAgICAgICAgICAgICBob3N0UHJvcGVydGllczogZGlyZWN0aXZlLmhvc3RQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgIGhvc3RBdHRyaWJ1dGVzOiBkaXJlY3RpdmUuaG9zdEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgICAgbGlmZWN5Y2xlSG9va3M6IGRpcmVjdGl2ZS5saWZlY3ljbGVIb29rcyxcbiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IGRpcmVjdGl2ZS5wcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgdmlld1Byb3ZpZGVyczogZGlyZWN0aXZlLnZpZXdQcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgcXVlcmllczogZGlyZWN0aXZlLnF1ZXJpZXMsXG4gICAgICAgICAgICAgICAgdmlld1F1ZXJpZXM6IGRpcmVjdGl2ZS52aWV3UXVlcmllcyxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogbm9ybWFsaXplZFRlbXBsYXRlXG4gICAgICAgICAgICAgIH0pKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZVRlbXBsYXRlKGRpcmVjdGl2ZVR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSk6IFByb21pc2U8Q29tcGlsZVRlbXBsYXRlTWV0YWRhdGE+IHtcbiAgICBpZiAoaXNQcmVzZW50KHRlbXBsYXRlLnRlbXBsYXRlKSkge1xuICAgICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLnJlc29sdmUodGhpcy5ub3JtYWxpemVMb2FkZWRUZW1wbGF0ZShcbiAgICAgICAgICBkaXJlY3RpdmVUeXBlLCB0ZW1wbGF0ZSwgdGVtcGxhdGUudGVtcGxhdGUsIGRpcmVjdGl2ZVR5cGUubW9kdWxlVXJsKSk7XG4gICAgfSBlbHNlIGlmIChpc1ByZXNlbnQodGVtcGxhdGUudGVtcGxhdGVVcmwpKSB7XG4gICAgICB2YXIgc291cmNlQWJzVXJsID0gdGhpcy5fdXJsUmVzb2x2ZXIucmVzb2x2ZShkaXJlY3RpdmVUeXBlLm1vZHVsZVVybCwgdGVtcGxhdGUudGVtcGxhdGVVcmwpO1xuICAgICAgcmV0dXJuIHRoaXMuX3hoci5nZXQoc291cmNlQWJzVXJsKVxuICAgICAgICAgIC50aGVuKHRlbXBsYXRlQ29udGVudCA9PiB0aGlzLm5vcm1hbGl6ZUxvYWRlZFRlbXBsYXRlKGRpcmVjdGl2ZVR5cGUsIHRlbXBsYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlQ29udGVudCwgc291cmNlQWJzVXJsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBObyB0ZW1wbGF0ZSBzcGVjaWZpZWQgZm9yIGNvbXBvbmVudCAke2RpcmVjdGl2ZVR5cGUubmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICBub3JtYWxpemVMb2FkZWRUZW1wbGF0ZShkaXJlY3RpdmVUeXBlOiBDb21waWxlVHlwZU1ldGFkYXRhLCB0ZW1wbGF0ZU1ldGE6IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogc3RyaW5nLCB0ZW1wbGF0ZUFic1VybDogc3RyaW5nKTogQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEge1xuICAgIHZhciByb290Tm9kZXNBbmRFcnJvcnMgPSB0aGlzLl9odG1sUGFyc2VyLnBhcnNlKHRlbXBsYXRlLCBkaXJlY3RpdmVUeXBlLm5hbWUpO1xuICAgIGlmIChyb290Tm9kZXNBbmRFcnJvcnMuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBlcnJvclN0cmluZyA9IHJvb3ROb2Rlc0FuZEVycm9ycy5lcnJvcnMuam9pbignXFxuJyk7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVGVtcGxhdGUgcGFyc2UgZXJyb3JzOlxcbiR7ZXJyb3JTdHJpbmd9YCk7XG4gICAgfVxuXG4gICAgdmFyIHZpc2l0b3IgPSBuZXcgVGVtcGxhdGVQcmVwYXJzZVZpc2l0b3IoKTtcbiAgICBodG1sVmlzaXRBbGwodmlzaXRvciwgcm9vdE5vZGVzQW5kRXJyb3JzLnJvb3ROb2Rlcyk7XG4gICAgdmFyIGFsbFN0eWxlcyA9IHRlbXBsYXRlTWV0YS5zdHlsZXMuY29uY2F0KHZpc2l0b3Iuc3R5bGVzKTtcblxuICAgIHZhciBhbGxTdHlsZUFic1VybHMgPVxuICAgICAgICB2aXNpdG9yLnN0eWxlVXJscy5maWx0ZXIoaXNTdHlsZVVybFJlc29sdmFibGUpXG4gICAgICAgICAgICAubWFwKHVybCA9PiB0aGlzLl91cmxSZXNvbHZlci5yZXNvbHZlKHRlbXBsYXRlQWJzVXJsLCB1cmwpKVxuICAgICAgICAgICAgLmNvbmNhdCh0ZW1wbGF0ZU1ldGEuc3R5bGVVcmxzLmZpbHRlcihpc1N0eWxlVXJsUmVzb2x2YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAodXJsID0+IHRoaXMuX3VybFJlc29sdmVyLnJlc29sdmUoZGlyZWN0aXZlVHlwZS5tb2R1bGVVcmwsIHVybCkpKTtcblxuICAgIHZhciBhbGxSZXNvbHZlZFN0eWxlcyA9IGFsbFN0eWxlcy5tYXAoc3R5bGUgPT4ge1xuICAgICAgdmFyIHN0eWxlV2l0aEltcG9ydHMgPSBleHRyYWN0U3R5bGVVcmxzKHRoaXMuX3VybFJlc29sdmVyLCB0ZW1wbGF0ZUFic1VybCwgc3R5bGUpO1xuICAgICAgc3R5bGVXaXRoSW1wb3J0cy5zdHlsZVVybHMuZm9yRWFjaChzdHlsZVVybCA9PiBhbGxTdHlsZUFic1VybHMucHVzaChzdHlsZVVybCkpO1xuICAgICAgcmV0dXJuIHN0eWxlV2l0aEltcG9ydHMuc3R5bGU7XG4gICAgfSk7XG5cbiAgICB2YXIgZW5jYXBzdWxhdGlvbiA9IHRlbXBsYXRlTWV0YS5lbmNhcHN1bGF0aW9uO1xuICAgIGlmIChlbmNhcHN1bGF0aW9uID09PSBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCAmJiBhbGxSZXNvbHZlZFN0eWxlcy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgYWxsU3R5bGVBYnNVcmxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZW5jYXBzdWxhdGlvbiA9IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEoe1xuICAgICAgZW5jYXBzdWxhdGlvbjogZW5jYXBzdWxhdGlvbixcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICAgIHRlbXBsYXRlVXJsOiB0ZW1wbGF0ZUFic1VybCxcbiAgICAgIHN0eWxlczogYWxsUmVzb2x2ZWRTdHlsZXMsXG4gICAgICBzdHlsZVVybHM6IGFsbFN0eWxlQWJzVXJscyxcbiAgICAgIG5nQ29udGVudFNlbGVjdG9yczogdmlzaXRvci5uZ0NvbnRlbnRTZWxlY3RvcnNcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBUZW1wbGF0ZVByZXBhcnNlVmlzaXRvciBpbXBsZW1lbnRzIEh0bWxBc3RWaXNpdG9yIHtcbiAgbmdDb250ZW50U2VsZWN0b3JzOiBzdHJpbmdbXSA9IFtdO1xuICBzdHlsZXM6IHN0cmluZ1tdID0gW107XG4gIHN0eWxlVXJsczogc3RyaW5nW10gPSBbXTtcbiAgbmdOb25CaW5kYWJsZVN0YWNrQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgdmlzaXRFbGVtZW50KGFzdDogSHRtbEVsZW1lbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgdmFyIHByZXBhcnNlZEVsZW1lbnQgPSBwcmVwYXJzZUVsZW1lbnQoYXN0KTtcbiAgICBzd2l0Y2ggKHByZXBhcnNlZEVsZW1lbnQudHlwZSkge1xuICAgICAgY2FzZSBQcmVwYXJzZWRFbGVtZW50VHlwZS5OR19DT05URU5UOlxuICAgICAgICBpZiAodGhpcy5uZ05vbkJpbmRhYmxlU3RhY2tDb3VudCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMubmdDb250ZW50U2VsZWN0b3JzLnB1c2gocHJlcGFyc2VkRWxlbWVudC5zZWxlY3RBdHRyKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEU6XG4gICAgICAgIHZhciB0ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICBhc3QuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSHRtbFRleHRBc3QpIHtcbiAgICAgICAgICAgIHRleHRDb250ZW50ICs9ICg8SHRtbFRleHRBc3Q+Y2hpbGQpLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3R5bGVzLnB1c2godGV4dENvbnRlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEVTSEVFVDpcbiAgICAgICAgdGhpcy5zdHlsZVVybHMucHVzaChwcmVwYXJzZWRFbGVtZW50LmhyZWZBdHRyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEREMgcmVwb3J0cyB0aGlzIGFzIGVycm9yLiBTZWU6XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvZGV2X2NvbXBpbGVyL2lzc3Vlcy80MjhcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChwcmVwYXJzZWRFbGVtZW50Lm5vbkJpbmRhYmxlKSB7XG4gICAgICB0aGlzLm5nTm9uQmluZGFibGVTdGFja0NvdW50Kys7XG4gICAgfVxuICAgIGh0bWxWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4pO1xuICAgIGlmIChwcmVwYXJzZWRFbGVtZW50Lm5vbkJpbmRhYmxlKSB7XG4gICAgICB0aGlzLm5nTm9uQmluZGFibGVTdGFja0NvdW50LS07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0Q29tbWVudChhc3Q6IEh0bWxDb21tZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEF0dHIoYXN0OiBIdG1sQXR0ckFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXRUZXh0KGFzdDogSHRtbFRleHRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RXhwYW5zaW9uKGFzdDogSHRtbEV4cGFuc2lvbkFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdEV4cGFuc2lvbkNhc2UoYXN0OiBIdG1sRXhwYW5zaW9uQ2FzZUFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar metadata_1 = require('angular2/src/core/metadata');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar reflector_reader_1 = require('angular2/src/core/reflection/reflector_reader');\r\nfunction _isDirectiveMetadata(type) {\r\n return type instanceof metadata_1.DirectiveMetadata;\r\n}\r\n/*\r\n * Resolve a `Type` for {@link DirectiveMetadata}.\r\n *\r\n * This interface can be overridden by the application developer to create custom behavior.\r\n *\r\n * See {@link Compiler}\r\n */\r\nvar DirectiveResolver = (function () {\r\n function DirectiveResolver(_reflector) {\r\n if (lang_1.isPresent(_reflector)) {\r\n this._reflector = _reflector;\r\n }\r\n else {\r\n this._reflector = reflection_1.reflector;\r\n }\r\n }\r\n /**\r\n * Return {@link DirectiveMetadata} for a given `Type`.\r\n */\r\n DirectiveResolver.prototype.resolve = function (type) {\r\n var typeMetadata = this._reflector.annotations(di_1.resolveForwardRef(type));\r\n if (lang_1.isPresent(typeMetadata)) {\r\n var metadata = typeMetadata.find(_isDirectiveMetadata);\r\n if (lang_1.isPresent(metadata)) {\r\n var propertyMetadata = this._reflector.propMetadata(type);\r\n return this._mergeWithPropertyMetadata(metadata, propertyMetadata, type);\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"No Directive annotation found on \" + lang_1.stringify(type));\r\n };\r\n DirectiveResolver.prototype._mergeWithPropertyMetadata = function (dm, propertyMetadata, directiveType) {\r\n var inputs = [];\r\n var outputs = [];\r\n var host = {};\r\n var queries = {};\r\n collection_1.StringMapWrapper.forEach(propertyMetadata, function (metadata, propName) {\r\n metadata.forEach(function (a) {\r\n if (a instanceof metadata_1.InputMetadata) {\r\n if (lang_1.isPresent(a.bindingPropertyName)) {\r\n inputs.push(propName + \": \" + a.bindingPropertyName);\r\n }\r\n else {\r\n inputs.push(propName);\r\n }\r\n }\r\n if (a instanceof metadata_1.OutputMetadata) {\r\n if (lang_1.isPresent(a.bindingPropertyName)) {\r\n outputs.push(propName + \": \" + a.bindingPropertyName);\r\n }\r\n else {\r\n outputs.push(propName);\r\n }\r\n }\r\n if (a instanceof metadata_1.HostBindingMetadata) {\r\n if (lang_1.isPresent(a.hostPropertyName)) {\r\n host[(\"[\" + a.hostPropertyName + \"]\")] = propName;\r\n }\r\n else {\r\n host[(\"[\" + propName + \"]\")] = propName;\r\n }\r\n }\r\n if (a instanceof metadata_1.HostListenerMetadata) {\r\n var args = lang_1.isPresent(a.args) ? a.args.join(', ') : '';\r\n host[(\"(\" + a.eventName + \")\")] = propName + \"(\" + args + \")\";\r\n }\r\n if (a instanceof metadata_1.ContentChildrenMetadata) {\r\n queries[propName] = a;\r\n }\r\n if (a instanceof metadata_1.ViewChildrenMetadata) {\r\n queries[propName] = a;\r\n }\r\n if (a instanceof metadata_1.ContentChildMetadata) {\r\n queries[propName] = a;\r\n }\r\n if (a instanceof metadata_1.ViewChildMetadata) {\r\n queries[propName] = a;\r\n }\r\n });\r\n });\r\n return this._merge(dm, inputs, outputs, host, queries, directiveType);\r\n };\r\n DirectiveResolver.prototype._merge = function (dm, inputs, outputs, host, queries, directiveType) {\r\n var mergedInputs = lang_1.isPresent(dm.inputs) ? collection_1.ListWrapper.concat(dm.inputs, inputs) : inputs;\r\n var mergedOutputs;\r\n if (lang_1.isPresent(dm.outputs)) {\r\n dm.outputs.forEach(function (propName) {\r\n if (collection_1.ListWrapper.contains(outputs, propName)) {\r\n throw new exceptions_1.BaseException(\"Output event '\" + propName + \"' defined multiple times in '\" + lang_1.stringify(directiveType) + \"'\");\r\n }\r\n });\r\n mergedOutputs = collection_1.ListWrapper.concat(dm.outputs, outputs);\r\n }\r\n else {\r\n mergedOutputs = outputs;\r\n }\r\n var mergedHost = lang_1.isPresent(dm.host) ? collection_1.StringMapWrapper.merge(dm.host, host) : host;\r\n var mergedQueries = lang_1.isPresent(dm.queries) ? collection_1.StringMapWrapper.merge(dm.queries, queries) : queries;\r\n if (dm instanceof metadata_1.ComponentMetadata) {\r\n return new metadata_1.ComponentMetadata({\r\n selector: dm.selector,\r\n inputs: mergedInputs,\r\n outputs: mergedOutputs,\r\n host: mergedHost,\r\n exportAs: dm.exportAs,\r\n moduleId: dm.moduleId,\r\n queries: mergedQueries,\r\n changeDetection: dm.changeDetection,\r\n providers: dm.providers,\r\n viewProviders: dm.viewProviders\r\n });\r\n }\r\n else {\r\n return new metadata_1.DirectiveMetadata({\r\n selector: dm.selector,\r\n inputs: mergedInputs,\r\n outputs: mergedOutputs,\r\n host: mergedHost,\r\n exportAs: dm.exportAs,\r\n queries: mergedQueries,\r\n providers: dm.providers\r\n });\r\n }\r\n };\r\n DirectiveResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [reflector_reader_1.ReflectorReader])\r\n ], DirectiveResolver);\r\n return DirectiveResolver;\r\n}());\r\nexports.DirectiveResolver = DirectiveResolver;\r\nexports.CODEGEN_DIRECTIVE_RESOLVER = new DirectiveResolver(reflection_1.reflector);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2RpcmVjdGl2ZV9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsbUJBQTRDLHNCQUFzQixDQUFDLENBQUE7QUFDbkUscUJBQWtELDBCQUEwQixDQUFDLENBQUE7QUFDN0UsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0QsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFFN0UseUJBV08sNEJBQTRCLENBQUMsQ0FBQTtBQUNwQywyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUNsRSxpQ0FBOEIsK0NBQStDLENBQUMsQ0FBQTtBQUU5RSw4QkFBOEIsSUFBUztJQUNyQyxNQUFNLENBQUMsSUFBSSxZQUFZLDRCQUFpQixDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFFSDtJQUdFLDJCQUFZLFVBQTRCO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQy9CLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsc0JBQVMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUNBQU8sR0FBUCxVQUFRLElBQVU7UUFDaEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsc0JBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMs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O1FBRUwsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLElBQUksNEJBQWlCLENBQUM7Z0JBQzNCLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtnQkFDckIsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2dCQUNyQixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBdElIO1FBQUMsZUFBVSxFQUFFOzt5QkFBQTtJQXVJYix3QkFBQztBQUFELENBQUMsQUF0SUQsSUFzSUM7QUF0SVkseUJBQWlCLG9CQXNJN0IsQ0FBQTtBQUVVLGtDQUEwQixHQUFHLElBQUksaUJBQWlCLENBQUMsc0JBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZiwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtUeXBlLCBpc1ByZXNlbnQsIGlzQmxhbmssIHN0cmluZ2lmeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmltcG9ydCB7XG4gIERpcmVjdGl2ZU1ldGFkYXRhLFxuICBDb21wb25lbnRNZXRhZGF0YSxcbiAgSW5wdXRNZXRhZGF0YSxcbiAgT3V0cHV0TWV0YWRhdGEsXG4gIEhvc3RCaW5kaW5nTWV0YWRhdGEsXG4gIEhvc3RMaXN0ZW5lck1ldGFkYXRhLFxuICBDb250ZW50Q2hpbGRyZW5NZXRhZGF0YSxcbiAgVmlld0NoaWxkcmVuTWV0YWRhdGEsXG4gIENvbnRlbnRDaGlsZE1ldGFkYXRhLFxuICBWaWV3Q2hpbGRNZXRhZGF0YVxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YSc7XG5pbXBvcnQge3JlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcbmltcG9ydCB7UmVmbGVjdG9yUmVhZGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rvcl9yZWFkZXInO1xuXG5mdW5jdGlvbiBfaXNEaXJlY3RpdmVNZXRhZGF0YSh0eXBlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBEaXJlY3RpdmVNZXRhZGF0YTtcbn1cblxuLypcbiAqIFJlc29sdmUgYSBgVHlwZWAgZm9yIHtAbGluayBEaXJlY3RpdmVNZXRhZGF0YX0uXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uIGRldmVsb3BlciB0byBjcmVhdGUgY3VzdG9tIGJlaGF2aW9yLlxuICpcbiAqIFNlZSB7QGxpbmsgQ29tcGlsZXJ9XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEaXJlY3RpdmVSZXNvbHZlciB7XG4gIHByaXZhdGUgX3JlZmxlY3RvcjogUmVmbGVjdG9yUmVhZGVyO1xuXG4gIGNvbnN0cnVjdG9yKF9yZWZsZWN0b3I/OiBSZWZsZWN0b3JSZWFkZXIpIHtcbiAgICBpZiAoaXNQcmVzZW50KF9yZWZsZWN0b3IpKSB7XG4gICAgICB0aGlzLl9yZWZsZWN0b3IgPSBfcmVmbGVjdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZsZWN0b3IgPSByZWZsZWN0b3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB7QGxpbmsgRGlyZWN0aXZlTWV0YWRhdGF9IGZvciBhIGdpdmVuIGBUeXBlYC5cbiAgICovXG4gIHJlc29sdmUodHlwZTogVHlwZSk6IERpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgICB2YXIgdHlwZU1ldGFkYXRhID0gdGhpcy5fcmVmbGVjdG9yLmFubm90YXRpb25zKHJlc29sdmVGb3J3YXJkUmVmKHR5cGUpKTtcbiAgICBpZiAoaXNQcmVzZW50KHR5cGVNZXRhZGF0YSkpIHtcbiAgICAgIHZhciBtZXRhZGF0YSA9IHR5cGVNZXRhZGF0YS5maW5kKF9pc0RpcmVjdGl2ZU1ldGFkYXRhKTtcbiAgICAgIGlmIChpc1ByZXNlbnQobWV0YWRhdGEpKSB7XG4gICAgICAgIHZhciBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5fcmVmbGVjdG9yLnByb3BNZXRhZGF0YSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlV2l0aFByb3BlcnR5TWV0YWRhdGEobWV0YWRhdGEsIHByb3BlcnR5TWV0YWRhdGEsIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBObyBEaXJlY3RpdmUgYW5ub3RhdGlvbiBmb3VuZCBvbiAke3N0cmluZ2lmeSh0eXBlKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgX21lcmdlV2l0aFByb3BlcnR5TWV0YWRhdGEoZG06IERpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TWV0YWRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlVHlwZTogVHlwZSk6IERpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgICB2YXIgaW5wdXRzID0gW107XG4gICAgdmFyIG91dHB1dHMgPSBbXTtcbiAgICB2YXIgaG9zdDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICB2YXIgcXVlcmllczoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcblxuICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChwcm9wZXJ0eU1ldGFkYXRhLCAobWV0YWRhdGE6IGFueVtdLCBwcm9wTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBtZXRhZGF0YS5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIElucHV0TWV0YWRhdGEpIHtcbiAgICAgICAgICBpZiAoaXNQcmVzZW50KGEuYmluZGluZ1Byb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGlucHV0cy5wdXNoKGAke3Byb3BOYW1lfTogJHthLmJpbmRpbmdQcm9wZXJ0eU5hbWV9YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0cy5wdXNoKHByb3BOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIE91dHB1dE1ldGFkYXRhKSB7XG4gICAgICAgICAgaWYgKGlzUHJlc2VudChhLmJpbmRpbmdQcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgICAgICBvdXRwdXRzLnB1c2goYCR7cHJvcE5hbWV9OiAke2EuYmluZGluZ1Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0cy5wdXNoKHByb3BOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEhvc3RCaW5kaW5nTWV0YWRhdGEpIHtcbiAgICAgICAgICBpZiAoaXNQcmVzZW50KGEuaG9zdFByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGhvc3RbYFske2EuaG9zdFByb3BlcnR5TmFtZX1dYF0gPSBwcm9wTmFtZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9zdFtgWyR7cHJvcE5hbWV9XWBdID0gcHJvcE5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBIb3N0TGlzdGVuZXJNZXRhZGF0YSkge1xuICAgICAgICAgIHZhciBhcmdzID0gaXNQcmVzZW50KGEuYXJncykgPyAoPGFueVtdPmEuYXJncykuam9pbignLCAnKSA6ICcnO1xuICAgICAgICAgIGhvc3RbYCgke2EuZXZlbnROYW1lfSlgXSA9IGAke3Byb3BOYW1lfSgke2FyZ3N9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhKSB7XG4gICAgICAgICAgcXVlcmllc1twcm9wTmFtZV0gPSBhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBWaWV3Q2hpbGRyZW5NZXRhZGF0YSkge1xuICAgICAgICAgIHF1ZXJpZXNbcHJvcE5hbWVdID0gYTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgQ29udGVudENoaWxkTWV0YWRhdGEpIHtcbiAgICAgICAgICBxdWVyaWVzW3Byb3BOYW1lXSA9IGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFZpZXdDaGlsZE1ldGFkYXRhKSB7XG4gICAgICAgICAgcXVlcmllc1twcm9wTmFtZV0gPSBhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2UoZG0sIGlucHV0cywgb3V0cHV0cywgaG9zdCwgcXVlcmllcywgZGlyZWN0aXZlVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIF9tZXJnZShkbTogRGlyZWN0aXZlTWV0YWRhdGEsIGlucHV0czogc3RyaW5nW10sIG91dHB1dHM6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICBob3N0OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSwgcXVlcmllczoge1trZXk6IHN0cmluZ106IGFueX0sXG4gICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVR5cGU6IFR5cGUpOiBEaXJlY3RpdmVNZXRhZGF0YSB7XG4gICAgdmFyIG1lcmdlZElucHV0cyA9IGlzUHJlc2VudChkbS5pbnB1dHMpID8gTGlzdFdyYXBwZXIuY29uY2F0KGRtLmlucHV0cywgaW5wdXRzKSA6IGlucHV0cztcblxuICAgIHZhciBtZXJnZWRPdXRwdXRzO1xuICAgIGlmIChpc1ByZXNlbnQoZG0ub3V0cHV0cykpIHtcbiAgICAgIGRtLm91dHB1dHMuZm9yRWFjaCgocHJvcE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoTGlzdFdyYXBwZXIuY29udGFpbnMob3V0cHV0cywgcHJvcE5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgICAgIGBPdXRwdXQgZXZlbnQgJyR7cHJvcE5hbWV9JyBkZWZpbmVkIG11bHRpcGxlIHRpbWVzIGluICcke3N0cmluZ2lmeShkaXJlY3RpdmVUeXBlKX0nYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWVyZ2VkT3V0cHV0cyA9IExpc3RXcmFwcGVyLmNvbmNhdChkbS5vdXRwdXRzLCBvdXRwdXRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkT3V0cHV0cyA9IG91dHB1dHM7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlZEhvc3QgPSBpc1ByZXNlbnQoZG0uaG9zdCkgPyBTdHJpbmdNYXBXcmFwcGVyLm1lcmdlKGRtLmhvc3QsIGhvc3QpIDogaG9zdDtcbiAgICB2YXIgbWVyZ2VkUXVlcmllcyA9XG4gICAgICAgIGlzUHJlc2VudChkbS5xdWVyaWVzKSA/IFN0cmluZ01hcFdyYXBwZXIubWVyZ2UoZG0ucXVlcmllcywgcXVlcmllcykgOiBxdWVyaWVzO1xuXG4gICAgaWYgKGRtIGluc3RhbmNlb2YgQ29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TWV0YWRhdGEoe1xuICAgICAgICBzZWxlY3RvcjogZG0uc2VsZWN0b3IsXG4gICAgICAgIGlucHV0czogbWVyZ2VkSW5wdXRzLFxuICAgICAgICBvdXRwdXRzOiBtZXJnZWRPdXRwdXRzLFxuICAgICAgICBob3N0OiBtZXJnZWRIb3N0LFxuICAgICAgICBleHBvcnRBczogZG0uZXhwb3J0QXMsXG4gICAgICAgIG1vZHVsZUlkOiBkbS5tb2R1bGVJZCxcbiAgICAgICAgcXVlcmllczogbWVyZ2VkUXVlcmllcyxcbiAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiBkbS5jaGFuZ2VEZXRlY3Rpb24sXG4gICAgICAgIHByb3ZpZGVyczogZG0ucHJvdmlkZXJzLFxuICAgICAgICB2aWV3UHJvdmlkZXJzOiBkbS52aWV3UHJvdmlkZXJzXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERpcmVjdGl2ZU1ldGFkYXRhKHtcbiAgICAgICAgc2VsZWN0b3I6IGRtLnNlbGVjdG9yLFxuICAgICAgICBpbnB1dHM6IG1lcmdlZElucHV0cyxcbiAgICAgICAgb3V0cHV0czogbWVyZ2VkT3V0cHV0cyxcbiAgICAgICAgaG9zdDogbWVyZ2VkSG9zdCxcbiAgICAgICAgZXhwb3J0QXM6IGRtLmV4cG9ydEFzLFxuICAgICAgICBxdWVyaWVzOiBtZXJnZWRRdWVyaWVzLFxuICAgICAgICBwcm92aWRlcnM6IGRtLnByb3ZpZGVyc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB2YXIgQ09ERUdFTl9ESVJFQ1RJVkVfUkVTT0xWRVIgPSBuZXcgRGlyZWN0aXZlUmVzb2x2ZXIocmVmbGVjdG9yKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar metadata_1 = require('angular2/src/core/metadata');\r\nvar reflector_reader_1 = require('angular2/src/core/reflection/reflector_reader');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nfunction _isPipeMetadata(type) {\r\n return type instanceof metadata_1.PipeMetadata;\r\n}\r\n/**\r\n * Resolve a `Type` for {@link PipeMetadata}.\r\n *\r\n * This interface can be overridden by the application developer to create custom behavior.\r\n *\r\n * See {@link Compiler}\r\n */\r\nvar PipeResolver = (function () {\r\n function PipeResolver(_reflector) {\r\n if (lang_1.isPresent(_reflector)) {\r\n this._reflector = _reflector;\r\n }\r\n else {\r\n this._reflector = reflection_1.reflector;\r\n }\r\n }\r\n /**\r\n * Return {@link PipeMetadata} for a given `Type`.\r\n */\r\n PipeResolver.prototype.resolve = function (type) {\r\n var metas = this._reflector.annotations(di_1.resolveForwardRef(type));\r\n if (lang_1.isPresent(metas)) {\r\n var annotation = metas.find(_isPipeMetadata);\r\n if (lang_1.isPresent(annotation)) {\r\n return annotation;\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"No Pipe decorator found on \" + lang_1.stringify(type));\r\n };\r\n PipeResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [reflector_reader_1.ReflectorReader])\r\n ], PipeResolver);\r\n return PipeResolver;\r\n}());\r\nexports.PipeResolver = PipeResolver;\r\nexports.CODEGEN_PIPE_RESOLVER = new PipeResolver(reflection_1.reflector);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZV9yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9waXBlX3Jlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxtQkFBNEMsc0JBQXNCLENBQUMsQ0FBQTtBQUNuRSxxQkFBeUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRSwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCx5QkFBMkIsNEJBQTRCLENBQUMsQ0FBQTtBQUN4RCxpQ0FBOEIsK0NBQStDLENBQUMsQ0FBQTtBQUM5RSwyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUVsRSx5QkFBeUIsSUFBUztJQUNoQyxNQUFNLENBQUMsSUFBSSxZQUFZLHVCQUFZLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUVIO0lBRUUsc0JBQVksVUFBNEI7UUFDdEMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDL0IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxzQkFBUyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCw4QkFBTyxHQUFQLFVBQVEsSUFBVTtRQUNoQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxzQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDN0MsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLElBQUksMEJBQWEsQ0FBQyxnQ0FBOEIsZ0JBQVMsQ0FBQyxJQUFJLENBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUF2Qkg7UUFBQyxlQUFVLEVBQUU7O29CQUFBO0lBd0JiLG1CQUFDO0FBQUQsQ0FBQyxBQXZCRCxJQXVCQztBQXZCWSxvQkFBWSxlQXVCeEIsQ0FBQTtBQUVVLDZCQUFxQixHQUFHLElBQUksWUFBWSxDQUFDLHNCQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVzb2x2ZUZvcndhcmRSZWYsIEluamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VHlwZSwgaXNQcmVzZW50LCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1BpcGVNZXRhZGF0YX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEnO1xuaW1wb3J0IHtSZWZsZWN0b3JSZWFkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdG9yX3JlYWRlcic7XG5pbXBvcnQge3JlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcblxuZnVuY3Rpb24gX2lzUGlwZU1ldGFkYXRhKHR5cGU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSBpbnN0YW5jZW9mIFBpcGVNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgYFR5cGVgIGZvciB7QGxpbmsgUGlwZU1ldGFkYXRhfS5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIHRvIGNyZWF0ZSBjdXN0b20gYmVoYXZpb3IuXG4gKlxuICogU2VlIHtAbGluayBDb21waWxlcn1cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBpcGVSZXNvbHZlciB7XG4gIHByaXZhdGUgX3JlZmxlY3RvcjogUmVmbGVjdG9yUmVhZGVyO1xuICBjb25zdHJ1Y3RvcihfcmVmbGVjdG9yPzogUmVmbGVjdG9yUmVhZGVyKSB7XG4gICAgaWYgKGlzUHJlc2VudChfcmVmbGVjdG9yKSkge1xuICAgICAgdGhpcy5fcmVmbGVjdG9yID0gX3JlZmxlY3RvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVmbGVjdG9yID0gcmVmbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4ge0BsaW5rIFBpcGVNZXRhZGF0YX0gZm9yIGEgZ2l2ZW4gYFR5cGVgLlxuICAgKi9cbiAgcmVzb2x2ZSh0eXBlOiBUeXBlKTogUGlwZU1ldGFkYXRhIHtcbiAgICB2YXIgbWV0YXMgPSB0aGlzLl9yZWZsZWN0b3IuYW5ub3RhdGlvbnMocmVzb2x2ZUZvcndhcmRSZWYodHlwZSkpO1xuICAgIGlmIChpc1ByZXNlbnQobWV0YXMpKSB7XG4gICAgICB2YXIgYW5ub3RhdGlvbiA9IG1ldGFzLmZpbmQoX2lzUGlwZU1ldGFkYXRhKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoYW5ub3RhdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIGFubm90YXRpb247XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBObyBQaXBlIGRlY29yYXRvciBmb3VuZCBvbiAke3N0cmluZ2lmeSh0eXBlKX1gKTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIENPREVHRU5fUElQRV9SRVNPTFZFUiA9IG5ldyBQaXBlUmVzb2x2ZXIocmVmbGVjdG9yKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar directives_1 = require('angular2/src/core/metadata/directives');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar reflector_reader_1 = require('angular2/src/core/reflection/reflector_reader');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\n/**\r\n * Resolves types to {@link ViewMetadata}.\r\n */\r\nvar ViewResolver = (function () {\r\n function ViewResolver(_reflector) {\r\n /** @internal */\r\n this._cache = new collection_1.Map();\r\n if (lang_1.isPresent(_reflector)) {\r\n this._reflector = _reflector;\r\n }\r\n else {\r\n this._reflector = reflection_1.reflector;\r\n }\r\n }\r\n ViewResolver.prototype.resolve = function (component) {\r\n var view = this._cache.get(component);\r\n if (lang_1.isBlank(view)) {\r\n view = this._resolve(component);\r\n this._cache.set(component, view);\r\n }\r\n return view;\r\n };\r\n /** @internal */\r\n ViewResolver.prototype._resolve = function (component) {\r\n var compMeta;\r\n var viewMeta;\r\n this._reflector.annotations(component).forEach(function (m) {\r\n if (m instanceof view_1.ViewMetadata) {\r\n viewMeta = m;\r\n }\r\n if (m instanceof directives_1.ComponentMetadata) {\r\n compMeta = m;\r\n }\r\n });\r\n if (lang_1.isPresent(compMeta)) {\r\n if (lang_1.isBlank(compMeta.template) && lang_1.isBlank(compMeta.templateUrl) && lang_1.isBlank(viewMeta)) {\r\n throw new exceptions_1.BaseException(\"Component '\" + lang_1.stringify(component) + \"' must have either 'template' or 'templateUrl' set.\");\r\n }\r\n else if (lang_1.isPresent(compMeta.template) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"template\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.templateUrl) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"templateUrl\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.directives) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"directives\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.pipes) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"pipes\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.encapsulation) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"encapsulation\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.styles) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"styles\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.styleUrls) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"styleUrls\", component);\r\n }\r\n else if (lang_1.isPresent(viewMeta)) {\r\n return viewMeta;\r\n }\r\n else {\r\n return new view_1.ViewMetadata({\r\n templateUrl: compMeta.templateUrl,\r\n template: compMeta.template,\r\n directives: compMeta.directives,\r\n pipes: compMeta.pipes,\r\n encapsulation: compMeta.encapsulation,\r\n styles: compMeta.styles,\r\n styleUrls: compMeta.styleUrls\r\n });\r\n }\r\n }\r\n else {\r\n if (lang_1.isBlank(viewMeta)) {\r\n throw new exceptions_1.BaseException(\"Could not compile '\" + lang_1.stringify(component) + \"' because it is not a component.\");\r\n }\r\n else {\r\n return viewMeta;\r\n }\r\n }\r\n return null;\r\n };\r\n /** @internal */\r\n ViewResolver.prototype._throwMixingViewAndComponent = function (propertyName, component) {\r\n throw new exceptions_1.BaseException(\"Component '\" + lang_1.stringify(component) + \"' cannot have both '\" + propertyName + \"' and '@View' set at the same time\\\"\");\r\n };\r\n ViewResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [reflector_reader_1.ReflectorReader])\r\n ], ViewResolver);\r\n return ViewResolver;\r\n}());\r\nexports.ViewResolver = ViewResolver;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X3Jlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxxQkFBMkIsaUNBQWlDLENBQUMsQ0FBQTtBQUM3RCwyQkFBZ0MsdUNBQXVDLENBQUMsQ0FBQTtBQUV4RSxxQkFBa0QsMEJBQTBCLENBQUMsQ0FBQTtBQUM3RSwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCwyQkFBa0IsZ0NBQWdDLENBQUMsQ0FBQTtBQUVuRCxpQ0FBOEIsK0NBQStDLENBQUMsQ0FBQTtBQUM5RSwyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUVsRTs7R0FFRztBQUVIO0lBTUUsc0JBQVksVUFBNEI7UUFIeEMsZ0JBQWdCO1FBQ2hCLFdBQU0sR0FBRyxJQUFJLGdCQUFHLEVBQXNCLENBQUM7UUFHckMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDL0IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxzQkFBUyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsOEJBQU8sR0FBUCxVQUFRLFNBQWU7UUFDckIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEMsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxJ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QUM7SUFDbEgsQ0FBQztJQS9GSDtRQUFDLGVBQVUsRUFBRTs7b0JBQUE7SUFnR2IsbUJBQUM7QUFBRCxDQUFDLEFBL0ZELElBK0ZDO0FBL0ZZLG9CQUFZLGVBK0Z4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1ZpZXdNZXRhZGF0YX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge0NvbXBvbmVudE1ldGFkYXRhfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS9kaXJlY3RpdmVzJztcblxuaW1wb3J0IHtUeXBlLCBzdHJpbmdpZnksIGlzQmxhbmssIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7TWFwfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5pbXBvcnQge1JlZmxlY3RvclJlYWRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0b3JfcmVhZGVyJztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuXG4vKipcbiAqIFJlc29sdmVzIHR5cGVzIHRvIHtAbGluayBWaWV3TWV0YWRhdGF9LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmlld1Jlc29sdmVyIHtcbiAgcHJpdmF0ZSBfcmVmbGVjdG9yOiBSZWZsZWN0b3JSZWFkZXI7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY2FjaGUgPSBuZXcgTWFwPFR5cGUsIFZpZXdNZXRhZGF0YT4oKTtcblxuICBjb25zdHJ1Y3RvcihfcmVmbGVjdG9yPzogUmVmbGVjdG9yUmVhZGVyKSB7XG4gICAgaWYgKGlzUHJlc2VudChfcmVmbGVjdG9yKSkge1xuICAgICAgdGhpcy5fcmVmbGVjdG9yID0gX3JlZmxlY3RvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVmbGVjdG9yID0gcmVmbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmUoY29tcG9uZW50OiBUeXBlKTogVmlld01ldGFkYXRhIHtcbiAgICB2YXIgdmlldyA9IHRoaXMuX2NhY2hlLmdldChjb21wb25lbnQpO1xuXG4gICAgaWYgKGlzQmxhbmsodmlldykpIHtcbiAgICAgIHZpZXcgPSB0aGlzLl9yZXNvbHZlKGNvbXBvbmVudCk7XG4gICAgICB0aGlzLl9jYWNoZS5zZXQoY29tcG9uZW50LCB2aWV3KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlldztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Jlc29sdmUoY29tcG9uZW50OiBUeXBlKTogVmlld01ldGFkYXRhIHtcbiAgICB2YXIgY29tcE1ldGE6IENvbXBvbmVudE1ldGFkYXRhO1xuICAgIHZhciB2aWV3TWV0YTogVmlld01ldGFkYXRhO1xuXG4gICAgdGhpcy5fcmVmbGVjdG9yLmFubm90YXRpb25zKGNvbXBvbmVudCkuZm9yRWFjaChtID0+IHtcbiAgICAgIGlmIChtIGluc3RhbmNlb2YgVmlld01ldGFkYXRhKSB7XG4gICAgICAgIHZpZXdNZXRhID0gbTtcbiAgICAgIH1cbiAgICAgIGlmIChtIGluc3RhbmNlb2YgQ29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgICAgY29tcE1ldGEgPSBtO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGlzUHJlc2VudChjb21wTWV0YSkpIHtcbiAgICAgIGlmIChpc0JsYW5rKGNvbXBNZXRhLnRlbXBsYXRlKSAmJiBpc0JsYW5rKGNvbXBNZXRhLnRlbXBsYXRlVXJsKSAmJiBpc0JsYW5rKHZpZXdNZXRhKSkge1xuICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICAgIGBDb21wb25lbnQgJyR7c3RyaW5naWZ5KGNvbXBvbmVudCl9JyBtdXN0IGhhdmUgZWl0aGVyICd0ZW1wbGF0ZScgb3IgJ3RlbXBsYXRlVXJsJyBzZXQuYCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGNvbXBNZXRhLnRlbXBsYXRlKSAmJiBpc1ByZXNlbnQodmlld01ldGEpKSB7XG4gICAgICAgIHRoaXMuX3Rocm93TWl4aW5nVmlld0FuZENvbXBvbmVudChcInRlbXBsYXRlXCIsIGNvbXBvbmVudCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGNvbXBNZXRhLnRlbXBsYXRlVXJsKSAmJiBpc1ByZXNlbnQodmlld01ldGEpKSB7XG4gICAgICAgIHRoaXMuX3Rocm93TWl4aW5nVmlld0FuZENvbXBvbmVudChcInRlbXBsYXRlVXJsXCIsIGNvbXBvbmVudCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGNvbXBNZXRhLmRpcmVjdGl2ZXMpICYmIGlzUHJlc2VudCh2aWV3TWV0YSkpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KFwiZGlyZWN0aXZlc1wiLCBjb21wb25lbnQpO1xuXG4gICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChjb21wTWV0YS5waXBlcykgJiYgaXNQcmVzZW50KHZpZXdNZXRhKSkge1xuICAgICAgICB0aGlzLl90aHJvd01peGluZ1ZpZXdBbmRDb21wb25lbnQoXCJwaXBlc1wiLCBjb21wb25lbnQpO1xuXG4gICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChjb21wTWV0YS5lbmNhcHN1bGF0aW9uKSAmJiBpc1ByZXNlbnQodmlld01ldGEpKSB7XG4gICAgICAgIHRoaXMuX3Rocm93TWl4aW5nVmlld0FuZENvbXBvbmVudChcImVuY2Fwc3VsYXRpb25cIiwgY29tcG9uZW50KTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoY29tcE1ldGEuc3R5bGVzKSAmJiBpc1ByZXNlbnQodmlld01ldGEpKSB7XG4gICAgICAgIHRoaXMuX3Rocm93TWl4aW5nVmlld0FuZENvbXBvbmVudChcInN0eWxlc1wiLCBjb21wb25lbnQpO1xuXG4gICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChjb21wTWV0YS5zdHlsZVVybHMpICYmIGlzUHJlc2VudCh2aWV3TWV0YSkpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KFwic3R5bGVVcmxzXCIsIGNvbXBvbmVudCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KHZpZXdNZXRhKSkge1xuICAgICAgICByZXR1cm4gdmlld01ldGE7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgVmlld01ldGFkYXRhKHtcbiAgICAgICAgICB0ZW1wbGF0ZVVybDogY29tcE1ldGEudGVtcGxhdGVVcmwsXG4gICAgICAgICAgdGVtcGxhdGU6IGNvbXBNZXRhLnRlbXBsYXRlLFxuICAgICAgICAgIGRpcmVjdGl2ZXM6IGNvbXBNZXRhLmRpcmVjdGl2ZXMsXG4gICAgICAgICAgcGlwZXM6IGNvbXBNZXRhLnBpcGVzLFxuICAgICAgICAgIGVuY2Fwc3VsYXRpb246IGNvbXBNZXRhLmVuY2Fwc3VsYXRpb24sXG4gICAgICAgICAgc3R5bGVzOiBjb21wTWV0YS5zdHlsZXMsXG4gICAgICAgICAgc3R5bGVVcmxzOiBjb21wTWV0YS5zdHlsZVVybHNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0JsYW5rKHZpZXdNZXRhKSkge1xuICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICAgIGBDb3VsZCBub3QgY29tcGlsZSAnJHtzdHJpbmdpZnkoY29tcG9uZW50KX0nIGJlY2F1c2UgaXQgaXMgbm90IGEgY29tcG9uZW50LmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZpZXdNZXRhO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Rocm93TWl4aW5nVmlld0FuZENvbXBvbmVudChwcm9wZXJ0eU5hbWU6IHN0cmluZywgY29tcG9uZW50OiBUeXBlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgIGBDb21wb25lbnQgJyR7c3RyaW5naWZ5KGNvbXBvbmVudCl9JyBjYW5ub3QgaGF2ZSBib3RoICcke3Byb3BlcnR5TmFtZX0nIGFuZCAnQFZpZXcnIHNldCBhdCB0aGUgc2FtZSB0aW1lXCJgKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar lifecycle_hooks_1 = require('angular2/src/core/metadata/lifecycle_hooks');\r\nfunction hasLifecycleHook(lcInterface, token) {\r\n if (!(token instanceof lang_1.Type))\r\n return false;\r\n var proto = token.prototype;\r\n switch (lcInterface) {\r\n case lifecycle_hooks_1.LifecycleHooks.AfterContentInit:\r\n return !!proto.ngAfterContentInit;\r\n case lifecycle_hooks_1.LifecycleHooks.AfterContentChecked:\r\n return !!proto.ngAfterContentChecked;\r\n case lifecycle_hooks_1.LifecycleHooks.AfterViewInit:\r\n return !!proto.ngAfterViewInit;\r\n case lifecycle_hooks_1.LifecycleHooks.AfterViewChecked:\r\n return !!proto.ngAfterViewChecked;\r\n case lifecycle_hooks_1.LifecycleHooks.OnChanges:\r\n return !!proto.ngOnChanges;\r\n case lifecycle_hooks_1.LifecycleHooks.DoCheck:\r\n return !!proto.ngDoCheck;\r\n case lifecycle_hooks_1.LifecycleHooks.OnDestroy:\r\n return !!proto.ngOnDestroy;\r\n case lifecycle_hooks_1.LifecycleHooks.OnInit:\r\n return !!proto.ngOnInit;\r\n default:\r\n return false;\r\n }\r\n}\r\nexports.hasLifecycleHook = hasLifecycleHook;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX2xpZmVjeWNsZV9yZWZsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvZGlyZWN0aXZlX2xpZmVjeWNsZV9yZWZsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUFtQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQzlDLGdDQUE2Qiw0Q0FBNEMsQ0FBQyxDQUFBO0FBRTFFLDBCQUFpQyxXQUEyQixFQUFFLEtBQUs7SUFDakUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxXQUFJLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFFM0MsSUFBSSxLQUFLLEdBQVMsS0FBTSxDQUFDLFNBQVMsQ0FBQztJQUVuQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLEtBQUssZ0NBQWMsQ0FBQyxnQkFBZ0I7WUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDcEMsS0FBSyxnQ0FBYyxDQUFDLG1CQUFtQjtZQUNyQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUN2QyxLQUFLLGdDQUFjLENBQUMsYUFBYTtZQUMvQixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDakMsS0FBSyxnQ0FBYyxDQUFDLGdCQUFnQjtZQUNsQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNwQyxLQUFLLGdDQUFjLENBQUMsU0FBUztZQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDN0IsS0FBSyxnQ0FBYyxDQUFDLE9BQU87WUFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzNCLEtBQUssZ0NBQWMsQ0FBQyxTQUFTO1lBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUM3QixLQUFLLGdDQUFjLENBQUMsTUFBTTtZQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDMUI7WUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDSCxDQUFDO0FBekJlLHdCQUFnQixtQkF5Qi9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpZmVjeWNsZUhvb2tzfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS9saWZlY3ljbGVfaG9va3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzTGlmZWN5Y2xlSG9vayhsY0ludGVyZmFjZTogTGlmZWN5Y2xlSG9va3MsIHRva2VuKTogYm9vbGVhbiB7XG4gIGlmICghKHRva2VuIGluc3RhbmNlb2YgVHlwZSkpIHJldHVybiBmYWxzZTtcblxuICB2YXIgcHJvdG8gPSAoPGFueT50b2tlbikucHJvdG90eXBlO1xuXG4gIHN3aXRjaCAobGNJbnRlcmZhY2UpIHtcbiAgICBjYXNlIExpZmVjeWNsZUhvb2tzLkFmdGVyQ29udGVudEluaXQ6XG4gICAgICByZXR1cm4gISFwcm90by5uZ0FmdGVyQ29udGVudEluaXQ7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5BZnRlckNvbnRlbnRDaGVja2VkOlxuICAgICAgcmV0dXJuICEhcHJvdG8ubmdBZnRlckNvbnRlbnRDaGVja2VkO1xuICAgIGNhc2UgTGlmZWN5Y2xlSG9va3MuQWZ0ZXJWaWV3SW5pdDpcbiAgICAgIHJldHVybiAhIXByb3RvLm5nQWZ0ZXJWaWV3SW5pdDtcbiAgICBjYXNlIExpZmVjeWNsZUhvb2tzLkFmdGVyVmlld0NoZWNrZWQ6XG4gICAgICByZXR1cm4gISFwcm90by5uZ0FmdGVyVmlld0NoZWNrZWQ7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5PbkNoYW5nZXM6XG4gICAgICByZXR1cm4gISFwcm90by5uZ09uQ2hhbmdlcztcbiAgICBjYXNlIExpZmVjeWNsZUhvb2tzLkRvQ2hlY2s6XG4gICAgICByZXR1cm4gISFwcm90by5uZ0RvQ2hlY2s7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5PbkRlc3Ryb3k6XG4gICAgICByZXR1cm4gISFwcm90by5uZ09uRGVzdHJveTtcbiAgICBjYXNlIExpZmVjeWNsZUhvb2tzLk9uSW5pdDpcbiAgICAgIHJldHVybiAhIXByb3RvLm5nT25Jbml0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('../facade/lang');\r\nvar exceptions_1 = require('../facade/exceptions');\r\nfunction assertArrayOfStrings(identifier, value) {\r\n if (!lang_1.assertionsEnabled() || lang_1.isBlank(value)) {\r\n return;\r\n }\r\n if (!lang_1.isArray(value)) {\r\n throw new exceptions_1.BaseException(\"Expected '\" + identifier + \"' to be an array of strings.\");\r\n }\r\n for (var i = 0; i < value.length; i += 1) {\r\n if (!lang_1.isString(value[i])) {\r\n throw new exceptions_1.BaseException(\"Expected '\" + identifier + \"' to be an array of strings.\");\r\n }\r\n }\r\n}\r\nexports.assertArrayOfStrings = assertArrayOfStrings;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9hc3NlcnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBNEQsZ0JBQWdCLENBQUMsQ0FBQTtBQUM3RSwyQkFBNEIsc0JBQXNCLENBQUMsQ0FBQTtBQUVuRCw4QkFBcUMsVUFBa0IsRUFBRSxLQUFVO0lBQ2pFLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0JBQWlCLEVBQUUsSUFBSSxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQztJQUNULENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxJQUFJLDBCQUFhLENBQUMsZUFBYSxVQUFVLGlDQUE4QixDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNELEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDekMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sSUFBSSwwQkFBYSxDQUFDLGVBQWEsVUFBVSxpQ0FBOEIsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQVplLDRCQUFvQix1QkFZbkMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNBcnJheSwgaXNTdHJpbmcsIGlzQmxhbmssIGFzc2VydGlvbnNFbmFibGVkfSBmcm9tICcuLi9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJy4uL2ZhY2FkZS9leGNlcHRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFycmF5T2ZTdHJpbmdzKGlkZW50aWZpZXI6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICBpZiAoIWFzc2VydGlvbnNFbmFibGVkKCkgfHwgaXNCbGFuayh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFpc0FycmF5KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBFeHBlY3RlZCAnJHtpZGVudGlmaWVyfScgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncy5gKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKCFpc1N0cmluZyh2YWx1ZVtpXSkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBFeHBlY3RlZCAnJHtpZGVudGlmaWVyfScgdG8gYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncy5gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar reflective_exceptions_1 = require('angular2/src/core/di/reflective_exceptions');\r\nvar cpl = require('./compile_metadata');\r\nvar md = require('angular2/src/core/metadata/directives');\r\nvar dimd = require('angular2/src/core/metadata/di');\r\nvar directive_resolver_1 = require('./directive_resolver');\r\nvar pipe_resolver_1 = require('./pipe_resolver');\r\nvar view_resolver_1 = require('./view_resolver');\r\nvar directive_lifecycle_reflector_1 = require('./directive_lifecycle_reflector');\r\nvar lifecycle_hooks_1 = require('angular2/src/core/metadata/lifecycle_hooks');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar di_2 = require('angular2/src/core/di');\r\nvar platform_directives_and_pipes_1 = require('angular2/src/core/platform_directives_and_pipes');\r\nvar util_1 = require('./util');\r\nvar assertions_1 = require('./assertions');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar provider_1 = require('angular2/src/core/di/provider');\r\nvar reflective_provider_1 = require('angular2/src/core/di/reflective_provider');\r\nvar metadata_1 = require('angular2/src/core/di/metadata');\r\nvar reflector_reader_1 = require('angular2/src/core/reflection/reflector_reader');\r\nvar RuntimeMetadataResolver = (function () {\r\n function RuntimeMetadataResolver(_directiveResolver, _pipeResolver, _viewResolver, _platformDirectives, _platformPipes, _reflector) {\r\n this._directiveResolver = _directiveResolver;\r\n this._pipeResolver = _pipeResolver;\r\n this._viewResolver = _viewResolver;\r\n this._platformDirectives = _platformDirectives;\r\n this._platformPipes = _platformPipes;\r\n this._directiveCache = new Map();\r\n this._pipeCache = new Map();\r\n this._anonymousTypes = new Map();\r\n this._anonymousTypeIndex = 0;\r\n if (lang_1.isPresent(_reflector)) {\r\n this._reflector = _reflector;\r\n }\r\n else {\r\n this._reflector = reflection_1.reflector;\r\n }\r\n }\r\n RuntimeMetadataResolver.prototype.sanitizeTokenName = function (token) {\r\n var identifier = lang_1.stringify(token);\r\n if (identifier.indexOf('(') >= 0) {\r\n // case: anonymous functions!\r\n var found = this._anonymousTypes.get(token);\r\n if (lang_1.isBlank(found)) {\r\n this._anonymousTypes.set(token, this._anonymousTypeIndex++);\r\n found = this._anonymousTypes.get(token);\r\n }\r\n identifier = \"anonymous_token_\" + found + \"_\";\r\n }\r\n return util_1.sanitizeIdentifier(identifier);\r\n };\r\n RuntimeMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) {\r\n var meta = this._directiveCache.get(directiveType);\r\n if (lang_1.isBlank(meta)) {\r\n var dirMeta = this._directiveResolver.resolve(directiveType);\r\n var moduleUrl = null;\r\n var templateMeta = null;\r\n var changeDetectionStrategy = null;\r\n var viewProviders = [];\r\n if (dirMeta instanceof md.ComponentMetadata) {\r\n assertions_1.assertArrayOfStrings('styles', dirMeta.styles);\r\n var cmpMeta = dirMeta;\r\n moduleUrl = calcModuleUrl(this._reflector, directiveType, cmpMeta);\r\n var viewMeta = this._viewResolver.resolve(directiveType);\r\n assertions_1.assertArrayOfStrings('styles', viewMeta.styles);\r\n templateMeta = new cpl.CompileTemplateMetadata({\r\n encapsulation: viewMeta.encapsulation,\r\n template: viewMeta.template,\r\n templateUrl: viewMeta.templateUrl,\r\n styles: viewMeta.styles,\r\n styleUrls: viewMeta.styleUrls\r\n });\r\n changeDetectionStrategy = cmpMeta.changeDetection;\r\n if (lang_1.isPresent(dirMeta.viewProviders)) {\r\n viewProviders = this.getProvidersMetadata(dirMeta.viewProviders);\r\n }\r\n }\r\n var providers = [];\r\n if (lang_1.isPresent(dirMeta.providers)) {\r\n providers = this.getProvidersMetadata(dirMeta.providers);\r\n }\r\n var queries = [];\r\n var viewQueries = [];\r\n if (lang_1.isPresent(dirMeta.queries)) {\r\n queries = this.getQueriesMetadata(dirMeta.queries, false);\r\n viewQueries = this.getQueriesMetadata(dirMeta.queries, true);\r\n }\r\n meta = cpl.CompileDirectiveMetadata.create({\r\n selector: dirMeta.selector,\r\n exportAs: dirMeta.exportAs,\r\n isComponent: lang_1.isPresent(templateMeta),\r\n type: this.getTypeMetadata(directiveType, moduleUrl),\r\n template: templateMeta,\r\n changeDetection: changeDetectionStrategy,\r\n inputs: dirMeta.inputs,\r\n outputs: dirMeta.outputs,\r\n host: dirMeta.host,\r\n lifecycleHooks: lifecycle_hooks_1.LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return directive_lifecycle_reflector_1.hasLifecycleHook(hook, directiveType); }),\r\n providers: providers,\r\n viewProviders: viewProviders,\r\n queries: queries,\r\n viewQueries: viewQueries\r\n });\r\n this._directiveCache.set(directiveType, meta);\r\n }\r\n return meta;\r\n };\r\n RuntimeMetadataResolver.prototype.getTypeMetadata = function (type, moduleUrl) {\r\n return new cpl.CompileTypeMetadata({\r\n name: this.sanitizeTokenName(type),\r\n moduleUrl: moduleUrl,\r\n runtime: type,\r\n diDeps: this.getDependenciesMetadata(type, null)\r\n });\r\n };\r\n RuntimeMetadataResolver.prototype.getFactoryMetadata = function (factory, moduleUrl) {\r\n return new cpl.CompileFactoryMetadata({\r\n name: this.sanitizeTokenName(factory),\r\n moduleUrl: moduleUrl,\r\n runtime: factory,\r\n diDeps: this.getDependenciesMetadata(factory, null)\r\n });\r\n };\r\n RuntimeMetadataResolver.prototype.getPipeMetadata = function (pipeType) {\r\n var meta = this._pipeCache.get(pipeType);\r\n if (lang_1.isBlank(meta)) {\r\n var pipeMeta = this._pipeResolver.resolve(pipeType);\r\n var moduleUrl = this._reflector.importUri(pipeType);\r\n meta = new cpl.CompilePipeMetadata({\r\n type: this.getTypeMetadata(pipeType, moduleUrl),\r\n name: pipeMeta.name,\r\n pure: pipeMeta.pure,\r\n lifecycleHooks: lifecycle_hooks_1.LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return directive_lifecycle_reflector_1.hasLifecycleHook(hook, pipeType); }),\r\n });\r\n this._pipeCache.set(pipeType, meta);\r\n }\r\n return meta;\r\n };\r\n RuntimeMetadataResolver.prototype.getViewDirectivesMetadata = function (component) {\r\n var _this = this;\r\n var view = this._viewResolver.resolve(component);\r\n var directives = flattenDirectives(view, this._platformDirectives);\r\n for (var i = 0; i < directives.length; i++) {\r\n if (!isValidType(directives[i])) {\r\n throw new exceptions_1.BaseException(\"Unexpected directive value '\" + lang_1.stringify(directives[i]) + \"' on the View of component '\" + lang_1.stringify(component) + \"'\");\r\n }\r\n }\r\n return directives.map(function (type) { return _this.getDirectiveMetadata(type); });\r\n };\r\n RuntimeMetadataResolver.prototype.getViewPipesMetadata = function (component) {\r\n var _this = this;\r\n var view = this._viewResolver.resolve(component);\r\n var pipes = flattenPipes(view, this._platformPipes);\r\n for (var i = 0; i < pipes.length; i++) {\r\n if (!isValidType(pipes[i])) {\r\n throw new exceptions_1.BaseException(\"Unexpected piped value '\" + lang_1.stringify(pipes[i]) + \"' on the View of component '\" + lang_1.stringify(component) + \"'\");\r\n }\r\n }\r\n return pipes.map(function (type) { return _this.getPipeMetadata(type); });\r\n };\r\n RuntimeMetadataResolver.prototype.getDependenciesMetadata = function (typeOrFunc, dependencies) {\r\n var _this = this;\r\n var deps;\r\n try {\r\n deps = reflective_provider_1.constructDependencies(typeOrFunc, dependencies);\r\n }\r\n catch (e) {\r\n if (e instanceof reflective_exceptions_1.NoAnnotationError) {\r\n deps = [];\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n return deps.map(function (dep) {\r\n var compileToken;\r\n var p = dep.properties.find(function (p) { return p instanceof dimd.AttributeMetadata; });\r\n var isAttribute = false;\r\n if (lang_1.isPresent(p)) {\r\n compileToken = _this.getTokenMetadata(p.attributeName);\r\n isAttribute = true;\r\n }\r\n else {\r\n compileToken = _this.getTokenMetadata(dep.key.token);\r\n }\r\n var compileQuery = null;\r\n var q = dep.properties.find(function (p) { return p instanceof dimd.QueryMetadata; });\r\n if (lang_1.isPresent(q)) {\r\n compileQuery = _this.getQueryMetadata(q, null);\r\n }\r\n return new cpl.CompileDiDependencyMetadata({\r\n isAttribute: isAttribute,\r\n isHost: dep.upperBoundVisibility instanceof metadata_1.HostMetadata,\r\n isSelf: dep.upperBoundVisibility instanceof metadata_1.SelfMetadata,\r\n isSkipSelf: dep.lowerBoundVisibility instanceof metadata_1.SkipSelfMetadata,\r\n isOptional: dep.optional,\r\n query: lang_1.isPresent(q) && !q.isViewQuery ? compileQuery : null,\r\n viewQuery: lang_1.isPresent(q) && q.isViewQuery ? compileQuery : null,\r\n token: compileToken\r\n });\r\n });\r\n };\r\n RuntimeMetadataResolver.prototype.getTokenMetadata = function (token) {\r\n token = di_1.resolveForwardRef(token);\r\n var compileToken;\r\n if (lang_1.isString(token)) {\r\n compileToken = new cpl.CompileTokenMetadata({ value: token });\r\n }\r\n else {\r\n compileToken = new cpl.CompileTokenMetadata({\r\n identifier: new cpl.CompileIdentifierMetadata({ runtime: token, name: this.sanitizeTokenName(token) })\r\n });\r\n }\r\n return compileToken;\r\n };\r\n RuntimeMetadataResolver.prototype.getProvidersMetadata = function (providers) {\r\n var _this = this;\r\n return providers.map(function (provider) {\r\n provider = di_1.resolveForwardRef(provider);\r\n if (lang_1.isArray(provider)) {\r\n return _this.getProvidersMetadata(provider);\r\n }\r\n else if (provider instanceof provider_1.Provider) {\r\n return _this.getProviderMetadata(provider);\r\n }\r\n else {\r\n return _this.getTypeMetadata(provider, null);\r\n }\r\n });\r\n };\r\n RuntimeMetadataResolver.prototype.getProviderMetadata = function (provider) {\r\n var compileDeps;\r\n if (lang_1.isPresent(provider.useClass)) {\r\n compileDeps = this.getDependenciesMetadata(provider.useClass, provider.dependencies);\r\n }\r\n else if (lang_1.isPresent(provider.useFactory)) {\r\n compileDeps = this.getDependenciesMetadata(provider.useFactory, provider.dependencies);\r\n }\r\n return new cpl.CompileProviderMetadata({\r\n token: this.getTokenMetadata(provider.token),\r\n useClass: lang_1.isPresent(provider.useClass) ? this.getTypeMetadata(provider.useClass, null) : null,\r\n useValue: lang_1.isPresent(provider.useValue) ?\r\n new cpl.CompileIdentifierMetadata({ runtime: provider.useValue }) :\r\n null,\r\n useFactory: lang_1.isPresent(provider.useFactory) ?\r\n this.getFactoryMetadata(provider.useFactory, null) :\r\n null,\r\n useExisting: lang_1.isPresent(provider.useExisting) ? this.getTokenMetadata(provider.useExisting) :\r\n null,\r\n deps: compileDeps,\r\n multi: provider.multi\r\n });\r\n };\r\n RuntimeMetadataResolver.prototype.getQueriesMetadata = function (queries, isViewQuery) {\r\n var _this = this;\r\n var compileQueries = [];\r\n collection_1.StringMapWrapper.forEach(queries, function (query, propertyName) {\r\n if (query.isViewQuery === isViewQuery) {\r\n compileQueries.push(_this.getQueryMetadata(query, propertyName));\r\n }\r\n });\r\n return compileQueries;\r\n };\r\n RuntimeMetadataResolver.prototype.getQueryMetadata = function (q, propertyName) {\r\n var _this = this;\r\n var selectors;\r\n if (q.isVarBindingQuery) {\r\n selectors = q.varBindings.map(function (varName) { return _this.getTokenMetadata(varName); });\r\n }\r\n else {\r\n selectors = [this.getTokenMetadata(q.selector)];\r\n }\r\n return new cpl.CompileQueryMetadata({\r\n selectors: selectors,\r\n first: q.first,\r\n descendants: q.descendants,\r\n propertyName: propertyName,\r\n read: lang_1.isPresent(q.read) ? this.getTokenMetadata(q.read) : null\r\n });\r\n };\r\n RuntimeMetadataResolver = __decorate([\r\n di_2.Injectable(),\r\n __param(3, di_2.Optional()),\r\n __param(3, di_2.Inject(platform_directives_and_pipes_1.PLATFORM_DIRECTIVES)),\r\n __param(4, di_2.Optional()),\r\n __param(4, di_2.Inject(platform_directives_and_pipes_1.PLATFORM_PIPES)), \r\n __metadata('design:paramtypes', [directive_resolver_1.DirectiveResolver, pipe_resolver_1.PipeResolver, view_resolver_1.ViewResolver, Array, Array, reflector_reader_1.ReflectorReader])\r\n ], RuntimeMetadataResolver);\r\n return RuntimeMetadataResolver;\r\n}());\r\nexports.RuntimeMetadataResolver = RuntimeMetadataResolver;\r\nfunction flattenDirectives(view, platformDirectives) {\r\n var directives = [];\r\n if (lang_1.isPresent(platformDirectives)) {\r\n flattenArray(platformDirectives, directives);\r\n }\r\n if (lang_1.isPresent(view.directives)) {\r\n flattenArray(view.directives, directives);\r\n }\r\n return directives;\r\n}\r\nfunction flattenPipes(view, platformPipes) {\r\n var pipes = [];\r\n if (lang_1.isPresent(platformPipes)) {\r\n flattenArray(platformPipes, pipes);\r\n }\r\n if (lang_1.isPresent(view.pipes)) {\r\n flattenArray(view.pipes, pipes);\r\n }\r\n return pipes;\r\n}\r\nfunction flattenArray(tree, out) {\r\n for (var i = 0; i < tree.length; i++) {\r\n var item = di_1.resolveForwardRef(tree[i]);\r\n if (lang_1.isArray(item)) {\r\n flattenArray(item, out);\r\n }\r\n else {\r\n out.push(item);\r\n }\r\n }\r\n}\r\nfunction isValidType(value) {\r\n return lang_1.isPresent(value) && (value instanceof lang_1.Type);\r\n}\r\nfunction calcModuleUrl(reflector, type, cmpMetadata) {\r\n var moduleId = cmpMetadata.moduleId;\r\n if (lang_1.isPresent(moduleId)) {\r\n var scheme = url_resolver_1.getUrlScheme(moduleId);\r\n return lang_1.isPresent(scheme) && scheme.length > 0 ? moduleId :\r\n \"package:\" + moduleId + util_1.MODULE_SUFFIX;\r\n }\r\n else {\r\n return reflector.importUri(type);\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZV9tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9ydW50aW1lX21ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQkFBZ0Msc0JBQXNCLENBQUMsQ0FBQTtBQUN2RCxxQkFTTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUErQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ2hFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELHNDQUFnQyw0Q0FBNEMsQ0FBQyxDQUFBO0FBQzdFLElBQVksR0FBRyxXQUFNLG9CQUFvQixDQUFDLENBQUE7QUFDMUMsSUFBWSxFQUFFLFdBQU0sdUNBQXVDLENBQUMsQ0FBQTtBQUM1RCxJQUFZLElBQUksV0FBTSwrQkFBK0IsQ0FBQyxDQUFBO0FBQ3RELG1DQUFnQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3ZELDhCQUEyQixpQkFBaUIsQ0FBQyxDQUFBO0FBQzdDLDhCQUEyQixpQkFBaUIsQ0FBQyxDQUFBO0FBRTdDLDhDQUErQixpQ0FBaUMsQ0FBQyxDQUFBO0FBQ2pFLGdDQUFxRCw0Q0FBNEMsQ0FBQyxDQUFBO0FBQ2xHLDJCQUF3Qix5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2xFLG1CQUEyQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ2xFLDhDQUFrRCxpREFBaUQsQ0FBQyxDQUFBO0FBQ3BHLHFCQUFnRCxRQUFRLENBQUMsQ0FBQTtBQUN6RCwyQkFBbUMsY0FBYyxDQUFDLENBQUE7QUFDbEQsNkJBQTJCLG9DQUFvQyxDQUFDLENBQUE7QUFDaEUseUJBQXVCLCtCQUErQixDQUFDLENBQUE7QUFDdkQsb0NBR08sMENBQTBDLENBQUMsQ0FBQTtBQUNsRCx5QkFLTywrQkFBK0IsQ0FBQyxDQUFBO0FBQ3ZDLGlDQUE4QiwrQ0FBK0MsQ0FBQyxD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LENBQUMsZ0JBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsMkJBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxRQUFRO1lBQ1IsYUFBVyxRQUFRLEdBQUcsb0JBQWUsQ0FBQztJQUN4RixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVzb2x2ZUZvcndhcmRSZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7XG4gIFR5cGUsXG4gIGlzQmxhbmssXG4gIGlzUHJlc2VudCxcbiAgaXNBcnJheSxcbiAgc3RyaW5naWZ5LFxuICBpc1N0cmluZyxcbiAgUmVnRXhwV3JhcHBlcixcbiAgU3RyaW5nV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtOb0Fubm90YXRpb25FcnJvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGkvcmVmbGVjdGl2ZV9leGNlcHRpb25zJztcbmltcG9ydCAqIGFzIGNwbCBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0ICogYXMgbWQgZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvZGlyZWN0aXZlcyc7XG5pbXBvcnQgKiBhcyBkaW1kIGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL2RpJztcbmltcG9ydCB7RGlyZWN0aXZlUmVzb2x2ZXJ9IGZyb20gJy4vZGlyZWN0aXZlX3Jlc29sdmVyJztcbmltcG9ydCB7UGlwZVJlc29sdmVyfSBmcm9tICcuL3BpcGVfcmVzb2x2ZXInO1xuaW1wb3J0IHtWaWV3UmVzb2x2ZXJ9IGZyb20gJy4vdmlld19yZXNvbHZlcic7XG5pbXBvcnQge1ZpZXdNZXRhZGF0YX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge2hhc0xpZmVjeWNsZUhvb2t9IGZyb20gJy4vZGlyZWN0aXZlX2xpZmVjeWNsZV9yZWZsZWN0b3InO1xuaW1wb3J0IHtMaWZlY3ljbGVIb29rcywgTElGRUNZQ0xFX0hPT0tTX1ZBTFVFU30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvbGlmZWN5Y2xlX2hvb2tzJztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1BMQVRGT1JNX0RJUkVDVElWRVMsIFBMQVRGT1JNX1BJUEVTfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9wbGF0Zm9ybV9kaXJlY3RpdmVzX2FuZF9waXBlcyc7XG5pbXBvcnQge01PRFVMRV9TVUZGSVgsIHNhbml0aXplSWRlbnRpZmllcn0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7YXNzZXJ0QXJyYXlPZlN0cmluZ3N9IGZyb20gJy4vYXNzZXJ0aW9ucyc7XG5pbXBvcnQge2dldFVybFNjaGVtZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3VybF9yZXNvbHZlcic7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaS9wcm92aWRlcic7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3REZXBlbmRlbmNpZXMsXG4gIFJlZmxlY3RpdmVEZXBlbmRlbmN5XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL3JlZmxlY3RpdmVfcHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgT3B0aW9uYWxNZXRhZGF0YSxcbiAgU2VsZk1ldGFkYXRhLFxuICBIb3N0TWV0YWRhdGEsXG4gIFNraXBTZWxmTWV0YWRhdGFcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGkvbWV0YWRhdGEnO1xuaW1wb3J0IHtSZWZsZWN0b3JSZWFkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdG9yX3JlYWRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSdW50aW1lTWV0YWRhdGFSZXNvbHZlciB7XG4gIHByaXZhdGUgX2RpcmVjdGl2ZUNhY2hlID0gbmV3IE1hcDxUeXBlLCBjcGwuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhPigpO1xuICBwcml2YXRlIF9waXBlQ2FjaGUgPSBuZXcgTWFwPFR5cGUsIGNwbC5Db21waWxlUGlwZU1ldGFkYXRhPigpO1xuICBwcml2YXRlIF9hbm9ueW1vdXNUeXBlcyA9IG5ldyBNYXA8T2JqZWN0LCBudW1iZXI+KCk7XG4gIHByaXZhdGUgX2Fub255bW91c1R5cGVJbmRleCA9IDA7XG4gIHByaXZhdGUgX3JlZmxlY3RvcjogUmVmbGVjdG9yUmVhZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpcmVjdGl2ZVJlc29sdmVyOiBEaXJlY3RpdmVSZXNvbHZlciwgcHJpdmF0ZSBfcGlwZVJlc29sdmVyOiBQaXBlUmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdSZXNvbHZlcjogVmlld1Jlc29sdmVyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBMQVRGT1JNX0RJUkVDVElWRVMpIHByaXZhdGUgX3BsYXRmb3JtRGlyZWN0aXZlczogVHlwZVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBMQVRGT1JNX1BJUEVTKSBwcml2YXRlIF9wbGF0Zm9ybVBpcGVzOiBUeXBlW10sXG4gICAgICAgICAgICAgIF9yZWZsZWN0b3I/OiBSZWZsZWN0b3JSZWFkZXIpIHtcbiAgICBpZiAoaXNQcmVzZW50KF9yZWZsZWN0b3IpKSB7XG4gICAgICB0aGlzLl9yZWZsZWN0b3IgPSBfcmVmbGVjdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWZsZWN0b3IgPSByZWZsZWN0b3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGl6ZVRva2VuTmFtZSh0b2tlbjogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgaWRlbnRpZmllciA9IHN0cmluZ2lmeSh0b2tlbik7XG4gICAgaWYgKGlkZW50aWZpZXIuaW5kZXhPZignKCcpID49IDApIHtcbiAgICAgIC8vIGNhc2U6IGFub255bW91cyBmdW5jdGlvbnMhXG4gICAgICBsZXQgZm91bmQgPSB0aGlzLl9hbm9ueW1vdXNUeXBlcy5nZXQodG9rZW4pO1xuICAgICAgaWYgKGlzQmxhbmsoZm91bmQpKSB7XG4gICAgICAgIHRoaXMuX2Fub255bW91c1R5cGVzLnNldCh0b2tlbiwgdGhpcy5fYW5vbnltb3VzVHlwZUluZGV4KyspO1xuICAgICAgICBmb3VuZCA9IHRoaXMuX2Fub255bW91c1R5cGVzLmdldCh0b2tlbik7XG4gICAgICB9XG4gICAgICBpZGVudGlmaWVyID0gYGFub255bW91c190b2tlbl8ke2ZvdW5kfV9gO1xuICAgIH1cbiAgICByZXR1cm4gc2FuaXRpemVJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgZ2V0RGlyZWN0aXZlTWV0YWRhdGEoZGlyZWN0aXZlVHlwZTogVHlwZSk6IGNwbC5Db21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICAgIHZhciBtZXRhID0gdGhpcy5fZGlyZWN0aXZlQ2FjaGUuZ2V0KGRpcmVjdGl2ZVR5cGUpO1xuICAgIGlmIChpc0JsYW5rKG1ldGEpKSB7XG4gICAgICB2YXIgZGlyTWV0YSA9IHRoaXMuX2RpcmVjdGl2ZVJlc29sdmVyLnJlc29sdmUoZGlyZWN0aXZlVHlwZSk7XG4gICAgICB2YXIgbW9kdWxlVXJsID0gbnVsbDtcbiAgICAgIHZhciB0ZW1wbGF0ZU1ldGEgPSBudWxsO1xuICAgICAgdmFyIGNoYW5nZURldGVjdGlvblN0cmF0ZWd5ID0gbnVsbDtcbiAgICAgIHZhciB2aWV3UHJvdmlkZXJzID0gW107XG5cbiAgICAgIGlmIChkaXJNZXRhIGluc3RhbmNlb2YgbWQuQ29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgICAgYXNzZXJ0QXJyYXlPZlN0cmluZ3MoJ3N0eWxlcycsIGRpck1ldGEuc3R5bGVzKTtcbiAgICAgICAgdmFyIGNtcE1ldGEgPSA8bWQuQ29tcG9uZW50TWV0YWRhdGE+ZGlyTWV0YTtcbiAgICAgICAgbW9kdWxlVXJsID0gY2FsY01vZHVsZVVybCh0aGlzLl9yZWZsZWN0b3IsIGRpcmVjdGl2ZVR5cGUsIGNtcE1ldGEpO1xuICAgICAgICB2YXIgdmlld01ldGEgPSB0aGlzLl92aWV3UmVzb2x2ZXIucmVzb2x2ZShkaXJlY3RpdmVUeXBlKTtcbiAgICAgICAgYXNzZXJ0QXJyYXlPZlN0cmluZ3MoJ3N0eWxlcycsIHZpZXdNZXRhLnN0eWxlcyk7XG4gICAgICAgIHRlbXBsYXRlTWV0YSA9IG5ldyBjcGwuQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEoe1xuICAgICAgICAgIGVuY2Fwc3VsYXRpb246IHZpZXdNZXRhLmVuY2Fwc3VsYXRpb24sXG4gICAgICAgICAgdGVtcGxhdGU6IHZpZXdNZXRhLnRlbXBsYXRlLFxuICAgICAgICAgIHRlbXBsYXRlVXJsOiB2aWV3TWV0YS50ZW1wbGF0ZVVybCxcbiAgICAgICAgICBzdHlsZXM6IHZpZXdNZXRhLnN0eWxlcyxcbiAgICAgICAgICBzdHlsZVVybHM6IHZpZXdNZXRhLnN0eWxlVXJsc1xuICAgICAgICB9KTtcbiAgICAgICAgY2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgPSBjbXBNZXRhLmNoYW5nZURldGVjdGlvbjtcbiAgICAgICAgaWYgKGlzUHJlc2VudChkaXJNZXRhLnZpZXdQcm92aWRlcnMpKSB7XG4gICAgICAgICAgdmlld1Byb3ZpZGVycyA9IHRoaXMuZ2V0UHJvdmlkZXJzTWV0YWRhdGEoZGlyTWV0YS52aWV3UHJvdmlkZXJzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcHJvdmlkZXJzID0gW107XG4gICAgICBpZiAoaXNQcmVzZW50KGRpck1ldGEucHJvdmlkZXJzKSkge1xuICAgICAgICBwcm92aWRlcnMgPSB0aGlzLmdldFByb3ZpZGVyc01ldGFkYXRhKGRpck1ldGEucHJvdmlkZXJzKTtcbiAgICAgIH1cbiAgICAgIHZhciBxdWVyaWVzID0gW107XG4gICAgICB2YXIgdmlld1F1ZXJpZXMgPSBbXTtcbiAgICAgIGlmIChpc1ByZXNlbnQoZGlyTWV0YS5xdWVyaWVzKSkge1xuICAgICAgICBxdWVyaWVzID0gdGhpcy5nZXRRdWVyaWVzTWV0YWRhdGEoZGlyTWV0YS5xdWVyaWVzLCBmYWxzZSk7XG4gICAgICAgIHZpZXdRdWVyaWVzID0gdGhpcy5nZXRRdWVyaWVzTWV0YWRhdGEoZGlyTWV0YS5xdWVyaWVzLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIG1ldGEgPSBjcGwuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLmNyZWF0ZSh7XG4gICAgICAgIHNlbGVjdG9yOiBkaXJNZXRhLnNlbGVjdG9yLFxuICAgICAgICBleHBvcnRBczogZGlyTWV0YS5leHBvcnRBcyxcbiAgICAgICAgaXNDb21wb25lbnQ6IGlzUHJlc2VudCh0ZW1wbGF0ZU1ldGEpLFxuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVNZXRhZGF0YShkaXJlY3RpdmVUeXBlLCBtb2R1bGVVcmwpLFxuICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGVNZXRhLFxuICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IGNoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgICAgICBpbnB1dHM6IGRpck1ldGEuaW5wdXRzLFxuICAgICAgICBvdXRwdXRzOiBkaXJNZXRhLm91dHB1dHMsXG4gICAgICAgIGhvc3Q6IGRpck1ldGEuaG9zdCxcbiAgICAgICAgbGlmZWN5Y2xlSG9va3M6XG4gICAgICAgICAgICBMSUZFQ1lDTEVfSE9PS1NfVkFMVUVTLmZpbHRlcihob29rID0+IGhhc0xpZmVjeWNsZUhvb2soaG9vaywgZGlyZWN0aXZlVHlwZSkpLFxuICAgICAgICBwcm92aWRlcnM6IHByb3ZpZGVycyxcbiAgICAgICAgdmlld1Byb3ZpZGVyczogdmlld1Byb3ZpZGVycyxcbiAgICAgICAgcXVlcmllczogcXVlcmllcyxcbiAgICAgICAgdmlld1F1ZXJpZXM6IHZpZXdRdWVyaWVzXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2RpcmVjdGl2ZUNhY2hlLnNldChkaXJlY3RpdmVUeXBlLCBtZXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBnZXRUeXBlTWV0YWRhdGEodHlwZTogVHlwZSwgbW9kdWxlVXJsOiBzdHJpbmcpOiBjcGwuQ29tcGlsZVR5cGVNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBjcGwuQ29tcGlsZVR5cGVNZXRhZGF0YSh7XG4gICAgICBuYW1lOiB0aGlzLnNhbml0aXplVG9rZW5OYW1lKHR5cGUpLFxuICAgICAgbW9kdWxlVXJsOiBtb2R1bGVVcmwsXG4gICAgICBydW50aW1lOiB0eXBlLFxuICAgICAgZGlEZXBzOiB0aGlzLmdldERlcGVuZGVuY2llc01ldGFkYXRhKHR5cGUsIG51bGwpXG4gICAgfSk7XG4gIH1cblxuICBnZXRGYWN0b3J5TWV0YWRhdGEoZmFjdG9yeTogRnVuY3Rpb24sIG1vZHVsZVVybDogc3RyaW5nKTogY3BsLkNvbXBpbGVGYWN0b3J5TWV0YWRhdGEge1xuICAgIHJldHVybiBuZXcgY3BsLkNvbXBpbGVGYWN0b3J5TWV0YWRhdGEoe1xuICAgICAgbmFtZTogdGhpcy5zYW5pdGl6ZVRva2VuTmFtZShmYWN0b3J5KSxcbiAgICAgIG1vZHVsZVVybDogbW9kdWxlVXJsLFxuICAgICAgcnVudGltZTogZmFjdG9yeSxcbiAgICAgIGRpRGVwczogdGhpcy5nZXREZXBlbmRlbmNpZXNNZXRhZGF0YShmYWN0b3J5LCBudWxsKVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGlwZU1ldGFkYXRhKHBpcGVUeXBlOiBUeXBlKTogY3BsLkNvbXBpbGVQaXBlTWV0YWRhdGEge1xuICAgIHZhciBtZXRhID0gdGhpcy5fcGlwZUNhY2hlLmdldChwaXBlVHlwZSk7XG4gICAgaWYgKGlzQmxhbmsobWV0YSkpIHtcbiAgICAgIHZhciBwaXBlTWV0YSA9IHRoaXMuX3BpcGVSZXNvbHZlci5yZXNvbHZlKHBpcGVUeXBlKTtcbiAgICAgIHZhciBtb2R1bGVVcmwgPSB0aGlzLl9yZWZsZWN0b3IuaW1wb3J0VXJpKHBpcGVUeXBlKTtcbiAgICAgIG1ldGEgPSBuZXcgY3BsLkNvbXBpbGVQaXBlTWV0YWRhdGEoe1xuICAgICAgICB0eXBlOiB0aGlzLmdldFR5cGVNZXRhZGF0YShwaXBlVHlwZSwgbW9kdWxlVXJsKSxcbiAgICAgICAgbmFtZTogcGlwZU1ldGEubmFtZSxcbiAgICAgICAgcHVyZTogcGlwZU1ldGEucHVyZSxcbiAgICAgICAgbGlmZWN5Y2xlSG9va3M6IExJRkVDWUNMRV9IT09LU19WQUxVRVMuZmlsdGVyKGhvb2sgPT4gaGFzTGlmZWN5Y2xlSG9vayhob29rLCBwaXBlVHlwZSkpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9waXBlQ2FjaGUuc2V0KHBpcGVUeXBlLCBtZXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBnZXRWaWV3RGlyZWN0aXZlc01ldGFkYXRhKGNvbXBvbmVudDogVHlwZSk6IGNwbC5Db21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSB7XG4gICAgdmFyIHZpZXcgPSB0aGlzLl92aWV3UmVzb2x2ZXIucmVzb2x2ZShjb21wb25lbnQpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gZmxhdHRlbkRpcmVjdGl2ZXModmlldywgdGhpcy5fcGxhdGZvcm1EaXJlY3RpdmVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcmVjdGl2ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZFR5cGUoZGlyZWN0aXZlc1tpXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgICBgVW5leHBlY3RlZCBkaXJlY3RpdmUgdmFsdWUgJyR7c3RyaW5naWZ5KGRpcmVjdGl2ZXNbaV0pfScgb24gdGhlIFZpZXcgb2YgY29tcG9uZW50ICcke3N0cmluZ2lmeShjb21wb25lbnQpfSdgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlyZWN0aXZlcy5tYXAodHlwZSA9PiB0aGlzLmdldERpcmVjdGl2ZU1ldGFkYXRhKHR5cGUpKTtcbiAgfVxuXG4gIGdldFZpZXdQaXBlc01ldGFkYXRhKGNvbXBvbmVudDogVHlwZSk6IGNwbC5Db21waWxlUGlwZU1ldGFkYXRhW10ge1xuICAgIHZhciB2aWV3ID0gdGhpcy5fdmlld1Jlc29sdmVyLnJlc29sdmUoY29tcG9uZW50KTtcbiAgICB2YXIgcGlwZXMgPSBmbGF0dGVuUGlwZXModmlldywgdGhpcy5fcGxhdGZvcm1QaXBlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwaXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFpc1ZhbGlkVHlwZShwaXBlc1tpXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgICBgVW5leHBlY3RlZCBwaXBlZCB2YWx1ZSAnJHtzdHJpbmdpZnkocGlwZXNbaV0pfScgb24gdGhlIFZpZXcgb2YgY29tcG9uZW50ICcke3N0cmluZ2lmeShjb21wb25lbnQpfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBpcGVzLm1hcCh0eXBlID0+IHRoaXMuZ2V0UGlwZU1ldGFkYXRhKHR5cGUpKTtcbiAgfVxuXG4gIGdldERlcGVuZGVuY2llc01ldGFkYXRhKHR5cGVPckZ1bmM6IFR5cGUgfCBGdW5jdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBhbnlbXSk6IGNwbC5Db21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGFbXSB7XG4gICAgdmFyIGRlcHM6IFJlZmxlY3RpdmVEZXBlbmRlbmN5W107XG4gICAgdHJ5IHtcbiAgICAgIGRlcHMgPSBjb25zdHJ1Y3REZXBlbmRlbmNpZXModHlwZU9yRnVuYywgZGVwZW5kZW5jaWVzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vQW5ub3RhdGlvbkVycm9yKSB7XG4gICAgICAgIGRlcHMgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZXBzLm1hcCgoZGVwKSA9PiB7XG4gICAgICB2YXIgY29tcGlsZVRva2VuO1xuICAgICAgdmFyIHAgPSA8ZGltZC5BdHRyaWJ1dGVNZXRhZGF0YT5kZXAucHJvcGVydGllcy5maW5kKHAgPT4gcCBpbnN0YW5jZW9mIGRpbWQuQXR0cmlidXRlTWV0YWRhdGEpO1xuICAgICAgdmFyIGlzQXR0cmlidXRlID0gZmFsc2U7XG4gICAgICBpZiAoaXNQcmVzZW50KHApKSB7XG4gICAgICAgIGNvbXBpbGVUb2tlbiA9IHRoaXMuZ2V0VG9rZW5NZXRhZGF0YShwLmF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBpc0F0dHJpYnV0ZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21waWxlVG9rZW4gPSB0aGlzLmdldFRva2VuTWV0YWRhdGEoZGVwLmtleS50b2tlbik7XG4gICAgICB9XG4gICAgICB2YXIgY29tcGlsZVF1ZXJ5ID0gbnVsbDtcbiAgICAgIHZhciBxID0gPGRpbWQuUXVlcnlNZXRhZGF0YT5kZXAucHJvcGVydGllcy5maW5kKHAgPT4gcCBpbnN0YW5jZW9mIGRpbWQuUXVlcnlNZXRhZGF0YSk7XG4gICAgICBpZiAoaXNQcmVzZW50KHEpKSB7XG4gICAgICAgIGNvbXBpbGVRdWVyeSA9IHRoaXMuZ2V0UXVlcnlNZXRhZGF0YShxLCBudWxsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgY3BsLkNvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSh7XG4gICAgICAgIGlzQXR0cmlidXRlOiBpc0F0dHJpYnV0ZSxcbiAgICAgICAgaXNIb3N0OiBkZXAudXBwZXJCb3VuZFZpc2liaWxpdHkgaW5zdGFuY2VvZiBIb3N0TWV0YWRhdGEsXG4gICAgICAgIGlzU2VsZjogZGVwLnVwcGVyQm91bmRWaXNpYmlsaXR5IGluc3RhbmNlb2YgU2VsZk1ldGFkYXRhLFxuICAgICAgICBpc1NraXBTZWxmOiBkZXAubG93ZXJCb3VuZFZpc2liaWxpdHkgaW5zdGFuY2VvZiBTa2lwU2VsZk1ldGFkYXRhLFxuICAgICAgICBpc09wdGlvbmFsOiBkZXAub3B0aW9uYWwsXG4gICAgICAgIHF1ZXJ5OiBpc1ByZXNlbnQocSkgJiYgIXEuaXNWaWV3UXVlcnkgPyBjb21waWxlUXVlcnkgOiBudWxsLFxuICAgICAgICB2aWV3UXVlcnk6IGlzUHJlc2VudChxKSAmJiBxLmlzVmlld1F1ZXJ5ID8gY29tcGlsZVF1ZXJ5IDogbnVsbCxcbiAgICAgICAgdG9rZW46IGNvbXBpbGVUb2tlblxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRUb2tlbk1ldGFkYXRhKHRva2VuOiBhbnkpOiBjcGwuQ29tcGlsZVRva2VuTWV0YWRhdGEge1xuICAgIHRva2VuID0gcmVzb2x2ZUZvcndhcmRSZWYodG9rZW4pO1xuICAgIHZhciBjb21waWxlVG9rZW47XG4gICAgaWYgKGlzU3RyaW5nKHRva2VuKSkge1xuICAgICAgY29tcGlsZVRva2VuID0gbmV3IGNwbC5Db21waWxlVG9rZW5NZXRhZGF0YSh7dmFsdWU6IHRva2VufSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVUb2tlbiA9IG5ldyBjcGwuQ29tcGlsZVRva2VuTWV0YWRhdGEoe1xuICAgICAgICBpZGVudGlmaWVyOiBuZXcgY3BsLkNvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoXG4gICAgICAgICAgICB7cnVudGltZTogdG9rZW4sIG5hbWU6IHRoaXMuc2FuaXRpemVUb2tlbk5hbWUodG9rZW4pfSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGlsZVRva2VuO1xuICB9XG5cbiAgZ2V0UHJvdmlkZXJzTWV0YWRhdGEocHJvdmlkZXJzOiBhbnlbXSk6XG4gICAgICBBcnJheTxjcGwuQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEgfCBjcGwuQ29tcGlsZVR5cGVNZXRhZGF0YSB8IGFueVtdPiB7XG4gICAgcmV0dXJuIHByb3ZpZGVycy5tYXAoKHByb3ZpZGVyKSA9PiB7XG4gICAgICBwcm92aWRlciA9IHJlc29sdmVGb3J3YXJkUmVmKHByb3ZpZGVyKTtcbiAgICAgIGlmIChpc0FycmF5KHByb3ZpZGVyKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm92aWRlcnNNZXRhZGF0YShwcm92aWRlcik7XG4gICAgICB9IGVsc2UgaWYgKHByb3ZpZGVyIGluc3RhbmNlb2YgUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvdmlkZXJNZXRhZGF0YShwcm92aWRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUeXBlTWV0YWRhdGEocHJvdmlkZXIsIG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UHJvdmlkZXJNZXRhZGF0YShwcm92aWRlcjogUHJvdmlkZXIpOiBjcGwuQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEge1xuICAgIHZhciBjb21waWxlRGVwcztcbiAgICBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUNsYXNzKSkge1xuICAgICAgY29tcGlsZURlcHMgPSB0aGlzLmdldERlcGVuZGVuY2llc01ldGFkYXRhKHByb3ZpZGVyLnVzZUNsYXNzLCBwcm92aWRlci5kZXBlbmRlbmNpZXMpO1xuICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUZhY3RvcnkpKSB7XG4gICAgICBjb21waWxlRGVwcyA9IHRoaXMuZ2V0RGVwZW5kZW5jaWVzTWV0YWRhdGEocHJvdmlkZXIudXNlRmFjdG9yeSwgcHJvdmlkZXIuZGVwZW5kZW5jaWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBjcGwuQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEoe1xuICAgICAgdG9rZW46IHRoaXMuZ2V0VG9rZW5NZXRhZGF0YShwcm92aWRlci50b2tlbiksXG4gICAgICB1c2VDbGFzczogaXNQcmVzZW50KHByb3ZpZGVyLnVzZUNsYXNzKSA/IHRoaXMuZ2V0VHlwZU1ldGFkYXRhKHByb3ZpZGVyLnVzZUNsYXNzLCBudWxsKSA6IG51bGwsXG4gICAgICB1c2VWYWx1ZTogaXNQcmVzZW50KHByb3ZpZGVyLnVzZVZhbHVlKSA/XG4gICAgICAgICAgICAgICAgICAgIG5ldyBjcGwuQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7cnVudGltZTogcHJvdmlkZXIudXNlVmFsdWV9KSA6XG4gICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICB1c2VGYWN0b3J5OiBpc1ByZXNlbnQocHJvdmlkZXIudXNlRmFjdG9yeSkgP1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RmFjdG9yeU1ldGFkYXRhKHByb3ZpZGVyLnVzZUZhY3RvcnksIG51bGwpIDpcbiAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgdXNlRXhpc3Rpbmc6IGlzUHJlc2VudChwcm92aWRlci51c2VFeGlzdGluZykgPyB0aGlzLmdldFRva2VuTWV0YWRhdGEocHJvdmlkZXIudXNlRXhpc3RpbmcpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgIGRlcHM6IGNvbXBpbGVEZXBzLFxuICAgICAgbXVsdGk6IHByb3ZpZGVyLm11bHRpXG4gICAgfSk7XG4gIH1cblxuICBnZXRRdWVyaWVzTWV0YWRhdGEocXVlcmllczoge1trZXk6IHN0cmluZ106IGRpbWQuUXVlcnlNZXRhZGF0YX0sXG4gICAgICAgICAgICAgICAgICAgICBpc1ZpZXdRdWVyeTogYm9vbGVhbik6IGNwbC5Db21waWxlUXVlcnlNZXRhZGF0YVtdIHtcbiAgICB2YXIgY29tcGlsZVF1ZXJpZXMgPSBbXTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2gocXVlcmllcywgKHF1ZXJ5LCBwcm9wZXJ0eU5hbWUpID0+IHtcbiAgICAgIGlmIChxdWVyeS5pc1ZpZXdRdWVyeSA9PT0gaXNWaWV3UXVlcnkpIHtcbiAgICAgICAgY29tcGlsZVF1ZXJpZXMucHVzaCh0aGlzLmdldFF1ZXJ5TWV0YWRhdGEocXVlcnksIHByb3BlcnR5TmFtZSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb21waWxlUXVlcmllcztcbiAgfVxuXG4gIGdldFF1ZXJ5TWV0YWRhdGEocTogZGltZC5RdWVyeU1ldGFkYXRhLCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IGNwbC5Db21waWxlUXVlcnlNZXRhZGF0YSB7XG4gICAgdmFyIHNlbGVjdG9ycztcbiAgICBpZiAocS5pc1ZhckJpbmRpbmdRdWVyeSkge1xuICAgICAgc2VsZWN0b3JzID0gcS52YXJCaW5kaW5ncy5tYXAodmFyTmFtZSA9PiB0aGlzLmdldFRva2VuTWV0YWRhdGEodmFyTmFtZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RvcnMgPSBbdGhpcy5nZXRUb2tlbk1ldGFkYXRhKHEuc2VsZWN0b3IpXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBjcGwuQ29tcGlsZVF1ZXJ5TWV0YWRhdGEoe1xuICAgICAgc2VsZWN0b3JzOiBzZWxlY3RvcnMsXG4gICAgICBmaXJzdDogcS5maXJzdCxcbiAgICAgIGRlc2NlbmRhbnRzOiBxLmRlc2NlbmRhbnRzLFxuICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgICByZWFkOiBpc1ByZXNlbnQocS5yZWFkKSA/IHRoaXMuZ2V0VG9rZW5NZXRhZGF0YShxLnJlYWQpIDogbnVsbFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5EaXJlY3RpdmVzKHZpZXc6IFZpZXdNZXRhZGF0YSwgcGxhdGZvcm1EaXJlY3RpdmVzOiBhbnlbXSk6IFR5cGVbXSB7XG4gIGxldCBkaXJlY3RpdmVzID0gW107XG4gIGlmIChpc1ByZXNlbnQocGxhdGZvcm1EaXJlY3RpdmVzKSkge1xuICAgIGZsYXR0ZW5BcnJheShwbGF0Zm9ybURpcmVjdGl2ZXMsIGRpcmVjdGl2ZXMpO1xuICB9XG4gIGlmIChpc1ByZXNlbnQodmlldy5kaXJlY3RpdmVzKSkge1xuICAgIGZsYXR0ZW5BcnJheSh2aWV3LmRpcmVjdGl2ZXMsIGRpcmVjdGl2ZXMpO1xuICB9XG4gIHJldHVybiBkaXJlY3RpdmVzO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuUGlwZXModmlldzogVmlld01ldGFkYXRhLCBwbGF0Zm9ybVBpcGVzOiBhbnlbXSk6IFR5cGVbXSB7XG4gIGxldCBwaXBlcyA9IFtdO1xuICBpZiAoaXNQcmVzZW50KHBsYXRmb3JtUGlwZXMpKSB7XG4gICAgZmxhdHRlbkFycmF5KHBsYXRmb3JtUGlwZXMsIHBpcGVzKTtcbiAgfVxuICBpZiAoaXNQcmVzZW50KHZpZXcucGlwZXMpKSB7XG4gICAgZmxhdHRlbkFycmF5KHZpZXcucGlwZXMsIHBpcGVzKTtcbiAgfVxuICByZXR1cm4gcGlwZXM7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5BcnJheSh0cmVlOiBhbnlbXSwgb3V0OiBBcnJheTxUeXBlIHwgYW55W10+KTogdm9pZCB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gcmVzb2x2ZUZvcndhcmRSZWYodHJlZVtpXSk7XG4gICAgaWYgKGlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZsYXR0ZW5BcnJheShpdGVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNWYWxpZFR5cGUodmFsdWU6IFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzUHJlc2VudCh2YWx1ZSkgJiYgKHZhbHVlIGluc3RhbmNlb2YgVHlwZSk7XG59XG5cbmZ1bmN0aW9uIGNhbGNNb2R1bGVVcmwocmVmbGVjdG9yOiBSZWZsZWN0b3JSZWFkZXIsIHR5cGU6IFR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgIGNtcE1ldGFkYXRhOiBtZC5Db21wb25lbnRNZXRhZGF0YSk6IHN0cmluZyB7XG4gIHZhciBtb2R1bGVJZCA9IGNtcE1ldGFkYXRhLm1vZHVsZUlkO1xuICBpZiAoaXNQcmVzZW50KG1vZHVsZUlkKSkge1xuICAgIHZhciBzY2hlbWUgPSBnZXRVcmxTY2hlbWUobW9kdWxlSWQpO1xuICAgIHJldHVybiBpc1ByZXNlbnQoc2NoZW1lKSAmJiBzY2hlbWUubGVuZ3RoID4gMCA/IG1vZHVsZUlkIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGFja2FnZToke21vZHVsZUlkfSR7TU9EVUxFX1NVRkZJWH1gO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZWZsZWN0b3IuaW1wb3J0VXJpKHR5cGUpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar _EMPTY_ATTR_VALUE = '';\r\n// TODO: Can't use `const` here as\r\n// in Dart this is not transpiled into `final` yet...\r\nvar _SELECTOR_REGEXP = lang_1.RegExpWrapper.create('(\\\\:not\\\\()|' +\r\n '([-\\\\w]+)|' +\r\n '(?:\\\\.([-\\\\w]+))|' +\r\n '(?:\\\\[([-\\\\w*]+)(?:=([^\\\\]]*))?\\\\])|' +\r\n '(\\\\))|' +\r\n '(\\\\s*,\\\\s*)'); // \",\"\r\n/**\r\n * A css selector contains an element name,\r\n * css classes and attribute/value pairs with the purpose\r\n * of selecting subsets out of them.\r\n */\r\nvar CssSelector = (function () {\r\n function CssSelector() {\r\n this.element = null;\r\n this.classNames = [];\r\n this.attrs = [];\r\n this.notSelectors = [];\r\n }\r\n CssSelector.parse = function (selector) {\r\n var results = [];\r\n var _addResult = function (res, cssSel) {\r\n if (cssSel.notSelectors.length > 0 && lang_1.isBlank(cssSel.element) &&\r\n collection_1.ListWrapper.isEmpty(cssSel.classNames) && collection_1.ListWrapper.isEmpty(cssSel.attrs)) {\r\n cssSel.element = \"*\";\r\n }\r\n res.push(cssSel);\r\n };\r\n var cssSelector = new CssSelector();\r\n var matcher = lang_1.RegExpWrapper.matcher(_SELECTOR_REGEXP, selector);\r\n var match;\r\n var current = cssSelector;\r\n var inNot = false;\r\n while (lang_1.isPresent(match = lang_1.RegExpMatcherWrapper.next(matcher))) {\r\n if (lang_1.isPresent(match[1])) {\r\n if (inNot) {\r\n throw new exceptions_1.BaseException('Nesting :not is not allowed in a selector');\r\n }\r\n inNot = true;\r\n current = new CssSelector();\r\n cssSelector.notSelectors.push(current);\r\n }\r\n if (lang_1.isPresent(match[2])) {\r\n current.setElement(match[2]);\r\n }\r\n if (lang_1.isPresent(match[3])) {\r\n current.addClassName(match[3]);\r\n }\r\n if (lang_1.isPresent(match[4])) {\r\n current.addAttribute(match[4], match[5]);\r\n }\r\n if (lang_1.isPresent(match[6])) {\r\n inNot = false;\r\n current = cssSelector;\r\n }\r\n if (lang_1.isPresent(match[7])) {\r\n if (inNot) {\r\n throw new exceptions_1.BaseException('Multiple selectors in :not are not supported');\r\n }\r\n _addResult(results, cssSelector);\r\n cssSelector = current = new CssSelector();\r\n }\r\n }\r\n _addResult(results, cssSelector);\r\n return results;\r\n };\r\n CssSelector.prototype.isElementSelector = function () {\r\n return lang_1.isPresent(this.element) && collection_1.ListWrapper.isEmpty(this.classNames) &&\r\n collection_1.ListWrapper.isEmpty(this.attrs) && this.notSelectors.length === 0;\r\n };\r\n CssSelector.prototype.setElement = function (element) {\r\n if (element === void 0) { element = null; }\r\n this.element = element;\r\n };\r\n /** Gets a template string for an element that matches the selector. */\r\n CssSelector.prototype.getMatchingElementTemplate = function () {\r\n var tagName = lang_1.isPresent(this.element) ? this.element : 'div';\r\n var classAttr = this.classNames.length > 0 ? \" class=\\\"\" + this.classNames.join(' ') + \"\\\"\" : '';\r\n var attrs = '';\r\n for (var i = 0; i < this.attrs.length; i += 2) {\r\n var attrName = this.attrs[i];\r\n var attrValue = this.attrs[i + 1] !== '' ? \"=\\\"\" + this.attrs[i + 1] + \"\\\"\" : '';\r\n attrs += \" \" + attrName + attrValue;\r\n }\r\n return \"<\" + tagName + classAttr + attrs + \"></\" + tagName + \">\";\r\n };\r\n CssSelector.prototype.addAttribute = function (name, value) {\r\n if (value === void 0) { value = _EMPTY_ATTR_VALUE; }\r\n this.attrs.push(name);\r\n if (lang_1.isPresent(value)) {\r\n value = value.toLowerCase();\r\n }\r\n else {\r\n value = _EMPTY_ATTR_VALUE;\r\n }\r\n this.attrs.push(value);\r\n };\r\n CssSelector.prototype.addClassName = function (name) { this.classNames.push(name.toLowerCase()); };\r\n CssSelector.prototype.toString = function () {\r\n var res = '';\r\n if (lang_1.isPresent(this.element)) {\r\n res += this.element;\r\n }\r\n if (lang_1.isPresent(this.classNames)) {\r\n for (var i = 0; i < this.classNames.length; i++) {\r\n res += '.' + this.classNames[i];\r\n }\r\n }\r\n if (lang_1.isPresent(this.attrs)) {\r\n for (var i = 0; i < this.attrs.length;) {\r\n var attrName = this.attrs[i++];\r\n var attrValue = this.attrs[i++];\r\n res += '[' + attrName;\r\n if (attrValue.length > 0) {\r\n res += '=' + attrValue;\r\n }\r\n res += ']';\r\n }\r\n }\r\n this.notSelectors.forEach(function (notSelector) { return res += \":not(\" + notSelector + \")\"; });\r\n return res;\r\n };\r\n return CssSelector;\r\n}());\r\nexports.CssSelector = CssSelector;\r\n/**\r\n * Reads a list of CssSelectors and allows to calculate which ones\r\n * are contained in a given CssSelector.\r\n */\r\nvar SelectorMatcher = (function () {\r\n function SelectorMatcher() {\r\n this._elementMap = new collection_1.Map();\r\n this._elementPartialMap = new collection_1.Map();\r\n this._classMap = new collection_1.Map();\r\n this._classPartialMap = new collection_1.Map();\r\n this._attrValueMap = new collection_1.Map();\r\n this._attrValuePartialMap = new collection_1.Map();\r\n this._listContexts = [];\r\n }\r\n SelectorMatcher.createNotMatcher = function (notSelectors) {\r\n var notMatcher = new SelectorMatcher();\r\n notMatcher.addSelectables(notSelectors, null);\r\n return notMatcher;\r\n };\r\n SelectorMatcher.prototype.addSelectables = function (cssSelectors, callbackCtxt) {\r\n var listContext = null;\r\n if (cssSelectors.length > 1) {\r\n listContext = new SelectorListContext(cssSelectors);\r\n this._listContexts.push(listContext);\r\n }\r\n for (var i = 0; i < cssSelectors.length; i++) {\r\n this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\r\n }\r\n };\r\n /**\r\n * Add an object that can be found later on by calling `match`.\r\n * @param cssSelector A css selector\r\n * @param callbackCtxt An opaque object that will be given to the callback of the `match` function\r\n */\r\n SelectorMatcher.prototype._addSelectable = function (cssSelector, callbackCtxt, listContext) {\r\n var matcher = this;\r\n var element = cssSelector.element;\r\n var classNames = cssSelector.classNames;\r\n var attrs = cssSelector.attrs;\r\n var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\r\n if (lang_1.isPresent(element)) {\r\n var isTerminal = attrs.length === 0 && classNames.length === 0;\r\n if (isTerminal) {\r\n this._addTerminal(matcher._elementMap, element, selectable);\r\n }\r\n else {\r\n matcher = this._addPartial(matcher._elementPartialMap, element);\r\n }\r\n }\r\n if (lang_1.isPresent(classNames)) {\r\n for (var index = 0; index < classNames.length; index++) {\r\n var isTerminal = attrs.length === 0 && index === classNames.length - 1;\r\n var className = classNames[index];\r\n if (isTerminal) {\r\n this._addTerminal(matcher._classMap, className, selectable);\r\n }\r\n else {\r\n matcher = this._addPartial(matcher._classPartialMap, className);\r\n }\r\n }\r\n }\r\n if (lang_1.isPresent(attrs)) {\r\n for (var index = 0; index < attrs.length;) {\r\n var isTerminal = index === attrs.length - 2;\r\n var attrName = attrs[index++];\r\n var attrValue = attrs[index++];\r\n if (isTerminal) {\r\n var terminalMap = matcher._attrValueMap;\r\n var terminalValuesMap = terminalMap.get(attrName);\r\n if (lang_1.isBlank(terminalValuesMap)) {\r\n terminalValuesMap = new collection_1.Map();\r\n terminalMap.set(attrName, terminalValuesMap);\r\n }\r\n this._addTerminal(terminalValuesMap, attrValue, selectable);\r\n }\r\n else {\r\n var parttialMap = matcher._attrValuePartialMap;\r\n var partialValuesMap = parttialMap.get(attrName);\r\n if (lang_1.isBlank(partialValuesMap)) {\r\n partialValuesMap = new collection_1.Map();\r\n parttialMap.set(attrName, partialValuesMap);\r\n }\r\n matcher = this._addPartial(partialValuesMap, attrValue);\r\n }\r\n }\r\n }\r\n };\r\n SelectorMatcher.prototype._addTerminal = function (map, name, selectable) {\r\n var terminalList = map.get(name);\r\n if (lang_1.isBlank(terminalList)) {\r\n terminalList = [];\r\n map.set(name, terminalList);\r\n }\r\n terminalList.push(selectable);\r\n };\r\n SelectorMatcher.prototype._addPartial = function (map, name) {\r\n var matcher = map.get(name);\r\n if (lang_1.isBlank(matcher)) {\r\n matcher = new SelectorMatcher();\r\n map.set(name, matcher);\r\n }\r\n return matcher;\r\n };\r\n /**\r\n * Find the objects that have been added via `addSelectable`\r\n * whose css selector is contained in the given css selector.\r\n * @param cssSelector A css selector\r\n * @param matchedCallback This callback will be called with the object handed into `addSelectable`\r\n * @return boolean true if a match was found\r\n */\r\n SelectorMatcher.prototype.match = function (cssSelector, matchedCallback) {\r\n var result = false;\r\n var element = cssSelector.element;\r\n var classNames = cssSelector.classNames;\r\n var attrs = cssSelector.attrs;\r\n for (var i = 0; i < this._listContexts.length; i++) {\r\n this._listContexts[i].alreadyMatched = false;\r\n }\r\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\r\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\r\n result;\r\n if (lang_1.isPresent(classNames)) {\r\n for (var index = 0; index < classNames.length; index++) {\r\n var className = classNames[index];\r\n result =\r\n this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\r\n result =\r\n this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\r\n result;\r\n }\r\n }\r\n if (lang_1.isPresent(attrs)) {\r\n for (var index = 0; index < attrs.length;) {\r\n var attrName = attrs[index++];\r\n var attrValue = attrs[index++];\r\n var terminalValuesMap = this._attrValueMap.get(attrName);\r\n if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {\r\n result = this._matchTerminal(terminalValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) ||\r\n result;\r\n }\r\n result = this._matchTerminal(terminalValuesMap, attrValue, cssSelector, matchedCallback) ||\r\n result;\r\n var partialValuesMap = this._attrValuePartialMap.get(attrName);\r\n if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {\r\n result = this._matchPartial(partialValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) ||\r\n result;\r\n }\r\n result =\r\n this._matchPartial(partialValuesMap, attrValue, cssSelector, matchedCallback) || result;\r\n }\r\n }\r\n return result;\r\n };\r\n /** @internal */\r\n SelectorMatcher.prototype._matchTerminal = function (map, name, cssSelector, matchedCallback) {\r\n if (lang_1.isBlank(map) || lang_1.isBlank(name)) {\r\n return false;\r\n }\r\n var selectables = map.get(name);\r\n var starSelectables = map.get(\"*\");\r\n if (lang_1.isPresent(starSelectables)) {\r\n selectables = selectables.concat(starSelectables);\r\n }\r\n if (lang_1.isBlank(selectables)) {\r\n return false;\r\n }\r\n var selectable;\r\n var result = false;\r\n for (var index = 0; index < selectables.length; index++) {\r\n selectable = selectables[index];\r\n result = selectable.finalize(cssSelector, matchedCallback) || result;\r\n }\r\n return result;\r\n };\r\n /** @internal */\r\n SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback /*: (c: CssSelector, a: any) => void*/) {\r\n if (lang_1.isBlank(map) || lang_1.isBlank(name)) {\r\n return false;\r\n }\r\n var nestedSelector = map.get(name);\r\n if (lang_1.isBlank(nestedSelector)) {\r\n return false;\r\n }\r\n // TODO(perf): get rid of recursion and measure again\r\n // TODO(perf): don't pass the whole selector into the recursion,\r\n // but only the not processed parts\r\n return nestedSelector.match(cssSelector, matchedCallback);\r\n };\r\n return SelectorMatcher;\r\n}());\r\nexports.SelectorMatcher = SelectorMatcher;\r\nvar SelectorListContext = (function () {\r\n function SelectorListContext(selectors) {\r\n this.selectors = selectors;\r\n this.alreadyMatched = false;\r\n }\r\n return SelectorListContext;\r\n}());\r\nexports.SelectorListContext = SelectorListContext;\r\n// Store context to pass back selector and context when a selector is matched\r\nvar SelectorContext = (function () {\r\n function SelectorContext(selector, cbContext, listContext) {\r\n this.selector = selector;\r\n this.cbContext = cbContext;\r\n this.listContext = listContext;\r\n this.notSelectors = selector.notSelectors;\r\n }\r\n SelectorContext.prototype.finalize = function (cssSelector, callback) {\r\n var result = true;\r\n if (this.notSelectors.length > 0 &&\r\n (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {\r\n var notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\r\n result = !notMatcher.match(cssSelector, null);\r\n }\r\n if (result && lang_1.isPresent(callback) &&\r\n (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {\r\n if (lang_1.isPresent(this.listContext)) {\r\n this.listContext.alreadyMatched = true;\r\n }\r\n callback(this.selector, this.cbContext);\r\n }\r\n return result;\r\n };\r\n return SelectorContext;\r\n}());\r\nexports.SelectorContext = SelectorContext;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzVFLHFCQU1PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFFL0UsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0Isa0NBQWtDO0FBQ2xDLHFEQUFxRDtBQUNyRCxJQUFJLGdCQUFnQixHQUFHLG9CQUFhLENBQUMsTUFBTSxDQUN2QyxjQUFjO0lBQ2QsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixzQ0FBc0M7SUFDdEMsUUFBUTtJQUNSLGFBQWEsQ0FBQyxDQUFDLENBQTJCLE1BQU07QUFFcEQ7Ozs7R0FJRztBQUNIO0lBQUE7UUFDRSxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFDMUIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUNyQixpQkFBWSxHQUFrQixFQUFFLENBQUM7SUE0R25DLENBQUM7SUExR1EsaUJBQUssR0FBWixVQUFhLFFBQWdCO1FBQzNCLElBQUksT0FBTyxHQUFrQixFQUFFLENBQUM7UUFDaEMsSUFBSSxVQUFVLEdBQUcsVUFBQyxHQUFrQixFQUFFLE1BQU07WUFDMUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGNBQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUN6RCx3QkFBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksd0JBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxD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LENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzVCLENBQUMsY0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckUsTUFBTSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxnQkFBUyxDQUFDLFFBQVEsQ0FBQztZQUM3QixDQUFDLGNBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRSxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN6QyxDQUFDO1lBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUF4QkQsSUF3QkM7QUF4QlksdUJBQWUsa0JBd0IzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXAsIExpc3RXcmFwcGVyLCBNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBSZWdFeHBXcmFwcGVyLFxuICBSZWdFeHBNYXRjaGVyV3JhcHBlcixcbiAgU3RyaW5nV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuXG5jb25zdCBfRU1QVFlfQVRUUl9WQUxVRSA9ICcnO1xuXG4vLyBUT0RPOiBDYW4ndCB1c2UgYGNvbnN0YCBoZXJlIGFzXG4vLyBpbiBEYXJ0IHRoaXMgaXMgbm90IHRyYW5zcGlsZWQgaW50byBgZmluYWxgIHlldC4uLlxudmFyIF9TRUxFQ1RPUl9SRUdFWFAgPSBSZWdFeHBXcmFwcGVyLmNyZWF0ZShcbiAgICAnKFxcXFw6bm90XFxcXCgpfCcgKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cIjpub3QoXCJcbiAgICAnKFstXFxcXHddKyl8JyArICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwidGFnXCJcbiAgICAnKD86XFxcXC4oWy1cXFxcd10rKSl8JyArICAgICAgICAgICAgICAgICAgICAgLy8gXCIuY2xhc3NcIlxuICAgICcoPzpcXFxcWyhbLVxcXFx3Kl0rKSg/Oj0oW15cXFxcXV0qKSk/XFxcXF0pfCcgKyAgLy8gXCJbbmFtZV1cIiwgXCJbbmFtZT12YWx1ZV1cIiBvciBcIltuYW1lKj12YWx1ZV1cIlxuICAgICcoXFxcXCkpfCcgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXCIpXCJcbiAgICAnKFxcXFxzKixcXFxccyopJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXCIsXCJcblxuLyoqXG4gKiBBIGNzcyBzZWxlY3RvciBjb250YWlucyBhbiBlbGVtZW50IG5hbWUsXG4gKiBjc3MgY2xhc3NlcyBhbmQgYXR0cmlidXRlL3ZhbHVlIHBhaXJzIHdpdGggdGhlIHB1cnBvc2VcbiAqIG9mIHNlbGVjdGluZyBzdWJzZXRzIG91dCBvZiB0aGVtLlxuICovXG5leHBvcnQgY2xhc3MgQ3NzU2VsZWN0b3Ige1xuICBlbGVtZW50OiBzdHJpbmcgPSBudWxsO1xuICBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBhdHRyczogc3RyaW5nW10gPSBbXTtcbiAgbm90U2VsZWN0b3JzOiBDc3NTZWxlY3RvcltdID0gW107XG5cbiAgc3RhdGljIHBhcnNlKHNlbGVjdG9yOiBzdHJpbmcpOiBDc3NTZWxlY3RvcltdIHtcbiAgICB2YXIgcmVzdWx0czogQ3NzU2VsZWN0b3JbXSA9IFtdO1xuICAgIHZhciBfYWRkUmVzdWx0ID0gKHJlczogQ3NzU2VsZWN0b3JbXSwgY3NzU2VsKSA9PiB7XG4gICAgICBpZiAoY3NzU2VsLm5vdFNlbGVjdG9ycy5sZW5ndGggPiAwICYmIGlzQmxhbmsoY3NzU2VsLmVsZW1lbnQpICYmXG4gICAgICAgICAgTGlzdFdyYXBwZXIuaXNFbXB0eShjc3NTZWwuY2xhc3NOYW1lcykgJiYgTGlzdFdyYXBwZXIuaXNFbXB0eShjc3NTZWwuYXR0cnMpKSB7XG4gICAgICAgIGNzc1NlbC5lbGVtZW50ID0gXCIqXCI7XG4gICAgICB9XG4gICAgICByZXMucHVzaChjc3NTZWwpO1xuICAgIH07XG4gICAgdmFyIGNzc1NlbGVjdG9yID0gbmV3IENzc1NlbGVjdG9yKCk7XG4gICAgdmFyIG1hdGNoZXIgPSBSZWdFeHBXcmFwcGVyLm1hdGNoZXIoX1NFTEVDVE9SX1JFR0VYUCwgc2VsZWN0b3IpO1xuICAgIHZhciBtYXRjaDtcbiAgICB2YXIgY3VycmVudCA9IGNzc1NlbGVjdG9yO1xuICAgIHZhciBpbk5vdCA9IGZhbHNlO1xuICAgIHdoaWxlIChpc1ByZXNlbnQobWF0Y2ggPSBSZWdFeHBNYXRjaGVyV3JhcHBlci5uZXh0KG1hdGNoZXIpKSkge1xuICAgICAgaWYgKGlzUHJlc2VudChtYXRjaFsxXSkpIHtcbiAgICAgICAgaWYgKGluTm90KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ05lc3RpbmcgOm5vdCBpcyBub3QgYWxsb3dlZCBpbiBhIHNlbGVjdG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5Ob3QgPSB0cnVlO1xuICAgICAgICBjdXJyZW50ID0gbmV3IENzc1NlbGVjdG9yKCk7XG4gICAgICAgIGNzc1NlbGVjdG9yLm5vdFNlbGVjdG9ycy5wdXNoKGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChtYXRjaFsyXSkpIHtcbiAgICAgICAgY3VycmVudC5zZXRFbGVtZW50KG1hdGNoWzJdKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQobWF0Y2hbM10pKSB7XG4gICAgICAgIGN1cnJlbnQuYWRkQ2xhc3NOYW1lKG1hdGNoWzNdKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQobWF0Y2hbNF0pKSB7XG4gICAgICAgIGN1cnJlbnQuYWRkQXR0cmlidXRlKG1hdGNoWzRdLCBtYXRjaFs1XSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcmVzZW50KG1hdGNoWzZdKSkge1xuICAgICAgICBpbk5vdCA9IGZhbHNlO1xuICAgICAgICBjdXJyZW50ID0gY3NzU2VsZWN0b3I7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcmVzZW50KG1hdGNoWzddKSkge1xuICAgICAgICBpZiAoaW5Ob3QpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignTXVsdGlwbGUgc2VsZWN0b3JzIGluIDpub3QgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBfYWRkUmVzdWx0KHJlc3VsdHMsIGNzc1NlbGVjdG9yKTtcbiAgICAgICAgY3NzU2VsZWN0b3IgPSBjdXJyZW50ID0gbmV3IENzc1NlbGVjdG9yKCk7XG4gICAgICB9XG4gICAgfVxuICAgIF9hZGRSZXN1bHQocmVzdWx0cywgY3NzU2VsZWN0b3IpO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgaXNFbGVtZW50U2VsZWN0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmVsZW1lbnQpICYmIExpc3RXcmFwcGVyLmlzRW1wdHkodGhpcy5jbGFzc05hbWVzKSAmJlxuICAgICAgICAgICBMaXN0V3JhcHBlci5pc0VtcHR5KHRoaXMuYXR0cnMpICYmIHRoaXMubm90U2VsZWN0b3JzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHNldEVsZW1lbnQoZWxlbWVudDogc3RyaW5nID0gbnVsbCkgeyB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OyB9XG5cbiAgLyoqIEdldHMgYSB0ZW1wbGF0ZSBzdHJpbmcgZm9yIGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3Rvci4gKi9cbiAgZ2V0TWF0Y2hpbmdFbGVtZW50VGVtcGxhdGUoKTogc3RyaW5nIHtcbiAgICBsZXQgdGFnTmFtZSA9IGlzUHJlc2VudCh0aGlzLmVsZW1lbnQpID8gdGhpcy5lbGVtZW50IDogJ2Rpdic7XG4gICAgbGV0IGNsYXNzQXR0ciA9IHRoaXMuY2xhc3NOYW1lcy5sZW5ndGggPiAwID8gYCBjbGFzcz1cIiR7dGhpcy5jbGFzc05hbWVzLmpvaW4oJyAnKX1cImAgOiAnJztcblxuICAgIGxldCBhdHRycyA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdHRycy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgbGV0IGF0dHJOYW1lID0gdGhpcy5hdHRyc1tpXTtcbiAgICAgIGxldCBhdHRyVmFsdWUgPSB0aGlzLmF0dHJzW2kgKyAxXSAhPT0gJycgPyBgPVwiJHt0aGlzLmF0dHJzW2kgKyAxXX1cImAgOiAnJztcbiAgICAgIGF0dHJzICs9IGAgJHthdHRyTmFtZX0ke2F0dHJWYWx1ZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBgPCR7dGFnTmFtZX0ke2NsYXNzQXR0cn0ke2F0dHJzfT48LyR7dGFnTmFtZX0+YDtcbiAgfVxuXG4gIGFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgPSBfRU1QVFlfQVRUUl9WQUxVRSkge1xuICAgIHRoaXMuYXR0cnMucHVzaChuYW1lKTtcbiAgICBpZiAoaXNQcmVzZW50KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IF9FTVBUWV9BVFRSX1ZBTFVFO1xuICAgIH1cbiAgICB0aGlzLmF0dHJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgYWRkQ2xhc3NOYW1lKG5hbWU6IHN0cmluZykgeyB0aGlzLmNsYXNzTmFtZXMucHVzaChuYW1lLnRvTG93ZXJDYXNlKCkpOyB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICByZXMgKz0gdGhpcy5lbGVtZW50O1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuY2xhc3NOYW1lcykpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jbGFzc05hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlcyArPSAnLicgKyB0aGlzLmNsYXNzTmFtZXNbaV07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5hdHRycykpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5hdHRycy5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBhdHRyTmFtZSA9IHRoaXMuYXR0cnNbaSsrXTtcbiAgICAgICAgdmFyIGF0dHJWYWx1ZSA9IHRoaXMuYXR0cnNbaSsrXTtcbiAgICAgICAgcmVzICs9ICdbJyArIGF0dHJOYW1lO1xuICAgICAgICBpZiAoYXR0clZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXMgKz0gJz0nICsgYXR0clZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJlcyArPSAnXSc7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubm90U2VsZWN0b3JzLmZvckVhY2gobm90U2VsZWN0b3IgPT4gcmVzICs9IGA6bm90KCR7bm90U2VsZWN0b3J9KWApO1xuICAgIHJldHVybiByZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyBhIGxpc3Qgb2YgQ3NzU2VsZWN0b3JzIGFuZCBhbGxvd3MgdG8gY2FsY3VsYXRlIHdoaWNoIG9uZXNcbiAqIGFyZSBjb250YWluZWQgaW4gYSBnaXZlbiBDc3NTZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlbGVjdG9yTWF0Y2hlciB7XG4gIHN0YXRpYyBjcmVhdGVOb3RNYXRjaGVyKG5vdFNlbGVjdG9yczogQ3NzU2VsZWN0b3JbXSk6IFNlbGVjdG9yTWF0Y2hlciB7XG4gICAgdmFyIG5vdE1hdGNoZXIgPSBuZXcgU2VsZWN0b3JNYXRjaGVyKCk7XG4gICAgbm90TWF0Y2hlci5hZGRTZWxlY3RhYmxlcyhub3RTZWxlY3RvcnMsIG51bGwpO1xuICAgIHJldHVybiBub3RNYXRjaGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWxlbWVudE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTZWxlY3RvckNvbnRleHRbXT4oKTtcbiAgcHJpdmF0ZSBfZWxlbWVudFBhcnRpYWxNYXAgPSBuZXcgTWFwPHN0cmluZywgU2VsZWN0b3JNYXRjaGVyPigpO1xuICBwcml2YXRlIF9jbGFzc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBTZWxlY3RvckNvbnRleHRbXT4oKTtcbiAgcHJpdmF0ZSBfY2xhc3NQYXJ0aWFsTWFwID0gbmV3IE1hcDxzdHJpbmcsIFNlbGVjdG9yTWF0Y2hlcj4oKTtcbiAgcHJpdmF0ZSBfYXR0clZhbHVlTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNlbGVjdG9yQ29udGV4dFtdPj4oKTtcbiAgcHJpdmF0ZSBfYXR0clZhbHVlUGFydGlhbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBTZWxlY3Rvck1hdGNoZXI+PigpO1xuICBwcml2YXRlIF9saXN0Q29udGV4dHM6IFNlbGVjdG9yTGlzdENvbnRleHRbXSA9IFtdO1xuXG4gIGFkZFNlbGVjdGFibGVzKGNzc1NlbGVjdG9yczogQ3NzU2VsZWN0b3JbXSwgY2FsbGJhY2tDdHh0PzogYW55KSB7XG4gICAgdmFyIGxpc3RDb250ZXh0ID0gbnVsbDtcbiAgICBpZiAoY3NzU2VsZWN0b3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGxpc3RDb250ZXh0ID0gbmV3IFNlbGVjdG9yTGlzdENvbnRleHQoY3NzU2VsZWN0b3JzKTtcbiAgICAgIHRoaXMuX2xpc3RDb250ZXh0cy5wdXNoKGxpc3RDb250ZXh0KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjc3NTZWxlY3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuX2FkZFNlbGVjdGFibGUoY3NzU2VsZWN0b3JzW2ldLCBjYWxsYmFja0N0eHQsIGxpc3RDb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIG9iamVjdCB0aGF0IGNhbiBiZSBmb3VuZCBsYXRlciBvbiBieSBjYWxsaW5nIGBtYXRjaGAuXG4gICAqIEBwYXJhbSBjc3NTZWxlY3RvciBBIGNzcyBzZWxlY3RvclxuICAgKiBAcGFyYW0gY2FsbGJhY2tDdHh0IEFuIG9wYXF1ZSBvYmplY3QgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIHRoZSBjYWxsYmFjayBvZiB0aGUgYG1hdGNoYCBmdW5jdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBfYWRkU2VsZWN0YWJsZShjc3NTZWxlY3RvcjogQ3NzU2VsZWN0b3IsIGNhbGxiYWNrQ3R4dDogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RDb250ZXh0OiBTZWxlY3Rvckxpc3RDb250ZXh0KSB7XG4gICAgdmFyIG1hdGNoZXI6IFNlbGVjdG9yTWF0Y2hlciA9IHRoaXM7XG4gICAgdmFyIGVsZW1lbnQgPSBjc3NTZWxlY3Rvci5lbGVtZW50O1xuICAgIHZhciBjbGFzc05hbWVzID0gY3NzU2VsZWN0b3IuY2xhc3NOYW1lcztcbiAgICB2YXIgYXR0cnMgPSBjc3NTZWxlY3Rvci5hdHRycztcbiAgICB2YXIgc2VsZWN0YWJsZSA9IG5ldyBTZWxlY3RvckNvbnRleHQoY3NzU2VsZWN0b3IsIGNhbGxiYWNrQ3R4dCwgbGlzdENvbnRleHQpO1xuXG4gICAgaWYgKGlzUHJlc2VudChlbGVtZW50KSkge1xuICAgICAgdmFyIGlzVGVybWluYWwgPSBhdHRycy5sZW5ndGggPT09IDAgJiYgY2xhc3NOYW1lcy5sZW5ndGggPT09IDA7XG4gICAgICBpZiAoaXNUZXJtaW5hbCkge1xuICAgICAgICB0aGlzLl9hZGRUZXJtaW5hbChtYXRjaGVyLl9lbGVtZW50TWFwLCBlbGVtZW50LCBzZWxlY3RhYmxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoZXIgPSB0aGlzLl9hZGRQYXJ0aWFsKG1hdGNoZXIuX2VsZW1lbnRQYXJ0aWFsTWFwLCBlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KGNsYXNzTmFtZXMpKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIGlzVGVybWluYWwgPSBhdHRycy5sZW5ndGggPT09IDAgJiYgaW5kZXggPT09IGNsYXNzTmFtZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdO1xuICAgICAgICBpZiAoaXNUZXJtaW5hbCkge1xuICAgICAgICAgIHRoaXMuX2FkZFRlcm1pbmFsKG1hdGNoZXIuX2NsYXNzTWFwLCBjbGFzc05hbWUsIHNlbGVjdGFibGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoZXIgPSB0aGlzLl9hZGRQYXJ0aWFsKG1hdGNoZXIuX2NsYXNzUGFydGlhbE1hcCwgY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1ByZXNlbnQoYXR0cnMpKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXR0cnMubGVuZ3RoOykge1xuICAgICAgICB2YXIgaXNUZXJtaW5hbCA9IGluZGV4ID09PSBhdHRycy5sZW5ndGggLSAyO1xuICAgICAgICB2YXIgYXR0ck5hbWUgPSBhdHRyc1tpbmRleCsrXTtcbiAgICAgICAgdmFyIGF0dHJWYWx1ZSA9IGF0dHJzW2luZGV4KytdO1xuICAgICAgICBpZiAoaXNUZXJtaW5hbCkge1xuICAgICAgICAgIHZhciB0ZXJtaW5hbE1hcCA9IG1hdGNoZXIuX2F0dHJWYWx1ZU1hcDtcbiAgICAgICAgICB2YXIgdGVybWluYWxWYWx1ZXNNYXAgPSB0ZXJtaW5hbE1hcC5nZXQoYXR0ck5hbWUpO1xuICAgICAgICAgIGlmIChpc0JsYW5rKHRlcm1pbmFsVmFsdWVzTWFwKSkge1xuICAgICAgICAgICAgdGVybWluYWxWYWx1ZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgU2VsZWN0b3JDb250ZXh0W10+KCk7XG4gICAgICAgICAgICB0ZXJtaW5hbE1hcC5zZXQoYXR0ck5hbWUsIHRlcm1pbmFsVmFsdWVzTWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fYWRkVGVybWluYWwodGVybWluYWxWYWx1ZXNNYXAsIGF0dHJWYWx1ZSwgc2VsZWN0YWJsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHBhcnR0aWFsTWFwID0gbWF0Y2hlci5fYXR0clZhbHVlUGFydGlhbE1hcDtcbiAgICAgICAgICB2YXIgcGFydGlhbFZhbHVlc01hcCA9IHBhcnR0aWFsTWFwLmdldChhdHRyTmFtZSk7XG4gICAgICAgICAgaWYgKGlzQmxhbmsocGFydGlhbFZhbHVlc01hcCkpIHtcbiAgICAgICAgICAgIHBhcnRpYWxWYWx1ZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgU2VsZWN0b3JNYXRjaGVyPigpO1xuICAgICAgICAgICAgcGFydHRpYWxNYXAuc2V0KGF0dHJOYW1lLCBwYXJ0aWFsVmFsdWVzTWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWF0Y2hlciA9IHRoaXMuX2FkZFBhcnRpYWwocGFydGlhbFZhbHVlc01hcCwgYXR0clZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FkZFRlcm1pbmFsKG1hcDogTWFwPHN0cmluZywgU2VsZWN0b3JDb250ZXh0W10+LCBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGU6IFNlbGVjdG9yQ29udGV4dCkge1xuICAgIHZhciB0ZXJtaW5hbExpc3QgPSBtYXAuZ2V0KG5hbWUpO1xuICAgIGlmIChpc0JsYW5rKHRlcm1pbmFsTGlzdCkpIHtcbiAgICAgIHRlcm1pbmFsTGlzdCA9IFtdO1xuICAgICAgbWFwLnNldChuYW1lLCB0ZXJtaW5hbExpc3QpO1xuICAgIH1cbiAgICB0ZXJtaW5hbExpc3QucHVzaChzZWxlY3RhYmxlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFBhcnRpYWwobWFwOiBNYXA8c3RyaW5nLCBTZWxlY3Rvck1hdGNoZXI+LCBuYW1lOiBzdHJpbmcpOiBTZWxlY3Rvck1hdGNoZXIge1xuICAgIHZhciBtYXRjaGVyID0gbWFwLmdldChuYW1lKTtcbiAgICBpZiAoaXNCbGFuayhtYXRjaGVyKSkge1xuICAgICAgbWF0Y2hlciA9IG5ldyBTZWxlY3Rvck1hdGNoZXIoKTtcbiAgICAgIG1hcC5zZXQobmFtZSwgbWF0Y2hlcik7XG4gICAgfVxuICAgIHJldHVybiBtYXRjaGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgdmlhIGBhZGRTZWxlY3RhYmxlYFxuICAgKiB3aG9zZSBjc3Mgc2VsZWN0b3IgaXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiBjc3Mgc2VsZWN0b3IuXG4gICAqIEBwYXJhbSBjc3NTZWxlY3RvciBBIGNzcyBzZWxlY3RvclxuICAgKiBAcGFyYW0gbWF0Y2hlZENhbGxiYWNrIFRoaXMgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgb2JqZWN0IGhhbmRlZCBpbnRvIGBhZGRTZWxlY3RhYmxlYFxuICAgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZSBpZiBhIG1hdGNoIHdhcyBmb3VuZFxuICAqL1xuICBtYXRjaChjc3NTZWxlY3RvcjogQ3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjazogKGM6IENzc1NlbGVjdG9yLCBhOiBhbnkpID0+IHZvaWQpOiBib29sZWFuIHtcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gICAgdmFyIGVsZW1lbnQgPSBjc3NTZWxlY3Rvci5lbGVtZW50O1xuICAgIHZhciBjbGFzc05hbWVzID0gY3NzU2VsZWN0b3IuY2xhc3NOYW1lcztcbiAgICB2YXIgYXR0cnMgPSBjc3NTZWxlY3Rvci5hdHRycztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbGlzdENvbnRleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLl9saXN0Q29udGV4dHNbaV0uYWxyZWFkeU1hdGNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSB0aGlzLl9tYXRjaFRlcm1pbmFsKHRoaXMuX2VsZW1lbnRNYXAsIGVsZW1lbnQsIGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spIHx8IHJlc3VsdDtcbiAgICByZXN1bHQgPSB0aGlzLl9tYXRjaFBhcnRpYWwodGhpcy5fZWxlbWVudFBhcnRpYWxNYXAsIGVsZW1lbnQsIGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spIHx8XG4gICAgICAgICAgICAgcmVzdWx0O1xuXG4gICAgaWYgKGlzUHJlc2VudChjbGFzc05hbWVzKSkge1xuICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIHRoaXMuX21hdGNoVGVybWluYWwodGhpcy5fY2xhc3NNYXAsIGNsYXNzTmFtZSwgY3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjaykgfHwgcmVzdWx0O1xuICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgdGhpcy5fbWF0Y2hQYXJ0aWFsKHRoaXMuX2NsYXNzUGFydGlhbE1hcCwgY2xhc3NOYW1lLCBjc3NTZWxlY3RvciwgbWF0Y2hlZENhbGxiYWNrKSB8fFxuICAgICAgICAgICAgcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1ByZXNlbnQoYXR0cnMpKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXR0cnMubGVuZ3RoOykge1xuICAgICAgICB2YXIgYXR0ck5hbWUgPSBhdHRyc1tpbmRleCsrXTtcbiAgICAgICAgdmFyIGF0dHJWYWx1ZSA9IGF0dHJzW2luZGV4KytdO1xuXG4gICAgICAgIHZhciB0ZXJtaW5hbFZhbHVlc01hcCA9IHRoaXMuX2F0dHJWYWx1ZU1hcC5nZXQoYXR0ck5hbWUpO1xuICAgICAgICBpZiAoIVN0cmluZ1dyYXBwZXIuZXF1YWxzKGF0dHJWYWx1ZSwgX0VNUFRZX0FUVFJfVkFMVUUpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5fbWF0Y2hUZXJtaW5hbCh0ZXJtaW5hbFZhbHVlc01hcCwgX0VNUFRZX0FUVFJfVkFMVUUsIGNzc1NlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZENhbGxiYWNrKSB8fFxuICAgICAgICAgICAgICAgICAgIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB0aGlzLl9tYXRjaFRlcm1pbmFsKHRlcm1pbmFsVmFsdWVzTWFwLCBhdHRyVmFsdWUsIGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spIHx8XG4gICAgICAgICAgICAgICAgIHJlc3VsdDtcblxuICAgICAgICB2YXIgcGFydGlhbFZhbHVlc01hcCA9IHRoaXMuX2F0dHJWYWx1ZVBhcnRpYWxNYXAuZ2V0KGF0dHJOYW1lKTtcbiAgICAgICAgaWYgKCFTdHJpbmdXcmFwcGVyLmVxdWFscyhhdHRyVmFsdWUsIF9FTVBUWV9BVFRSX1ZBTFVFKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX21hdGNoUGFydGlhbChwYXJ0aWFsVmFsdWVzTWFwLCBfRU1QVFlfQVRUUl9WQUxVRSwgY3NzU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRDYWxsYmFjaykgfHxcbiAgICAgICAgICAgICAgICAgICByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIHRoaXMuX21hdGNoUGFydGlhbChwYXJ0aWFsVmFsdWVzTWFwLCBhdHRyVmFsdWUsIGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spIHx8IHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX21hdGNoVGVybWluYWwobWFwOiBNYXA8c3RyaW5nLCBTZWxlY3RvckNvbnRleHRbXT4sIG5hbWUsIGNzc1NlbGVjdG9yOiBDc3NTZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgbWF0Y2hlZENhbGxiYWNrOiAoYzogQ3NzU2VsZWN0b3IsIGE6IGFueSkgPT4gdm9pZCk6IGJvb2xlYW4ge1xuICAgIGlmIChpc0JsYW5rKG1hcCkgfHwgaXNCbGFuayhuYW1lKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBzZWxlY3RhYmxlcyA9IG1hcC5nZXQobmFtZSk7XG4gICAgdmFyIHN0YXJTZWxlY3RhYmxlcyA9IG1hcC5nZXQoXCIqXCIpO1xuICAgIGlmIChpc1ByZXNlbnQoc3RhclNlbGVjdGFibGVzKSkge1xuICAgICAgc2VsZWN0YWJsZXMgPSBzZWxlY3RhYmxlcy5jb25jYXQoc3RhclNlbGVjdGFibGVzKTtcbiAgICB9XG4gICAgaWYgKGlzQmxhbmsoc2VsZWN0YWJsZXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBzZWxlY3RhYmxlO1xuICAgIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc2VsZWN0YWJsZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBzZWxlY3RhYmxlID0gc2VsZWN0YWJsZXNbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gc2VsZWN0YWJsZS5maW5hbGl6ZShjc3NTZWxlY3RvciwgbWF0Y2hlZENhbGxiYWNrKSB8fCByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXRjaFBhcnRpYWwobWFwOiBNYXA8c3RyaW5nLCBTZWxlY3Rvck1hdGNoZXI+LCBuYW1lLCBjc3NTZWxlY3RvcjogQ3NzU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgbWF0Y2hlZENhbGxiYWNrIC8qOiAoYzogQ3NzU2VsZWN0b3IsIGE6IGFueSkgPT4gdm9pZCovKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQmxhbmsobWFwKSB8fCBpc0JsYW5rKG5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBuZXN0ZWRTZWxlY3RvciA9IG1hcC5nZXQobmFtZSk7XG4gICAgaWYgKGlzQmxhbmsobmVzdGVkU2VsZWN0b3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFRPRE8ocGVyZik6IGdldCByaWQgb2YgcmVjdXJzaW9uIGFuZCBtZWFzdXJlIGFnYWluXG4gICAgLy8gVE9ETyhwZXJmKTogZG9uJ3QgcGFzcyB0aGUgd2hvbGUgc2VsZWN0b3IgaW50byB0aGUgcmVjdXJzaW9uLFxuICAgIC8vIGJ1dCBvbmx5IHRoZSBub3QgcHJvY2Vzc2VkIHBhcnRzXG4gICAgcmV0dXJuIG5lc3RlZFNlbGVjdG9yLm1hdGNoKGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGVjdG9yTGlzdENvbnRleHQge1xuICBhbHJlYWR5TWF0Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZWxlY3RvcnM6IENzc1NlbGVjdG9yW10pIHt9XG59XG5cbi8vIFN0b3JlIGNvbnRleHQgdG8gcGFzcyBiYWNrIHNlbGVjdG9yIGFuZCBjb250ZXh0IHdoZW4gYSBzZWxlY3RvciBpcyBtYXRjaGVkXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JDb250ZXh0IHtcbiAgbm90U2VsZWN0b3JzOiBDc3NTZWxlY3RvcltdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZWxlY3RvcjogQ3NzU2VsZWN0b3IsIHB1YmxpYyBjYkNvbnRleHQ6IGFueSxcbiAgICAgICAgICAgICAgcHVibGljIGxpc3RDb250ZXh0OiBTZWxlY3Rvckxpc3RDb250ZXh0KSB7XG4gICAgdGhpcy5ub3RTZWxlY3RvcnMgPSBzZWxlY3Rvci5ub3RTZWxlY3RvcnM7XG4gIH1cblxuICBmaW5hbGl6ZShjc3NTZWxlY3RvcjogQ3NzU2VsZWN0b3IsIGNhbGxiYWNrOiAoYzogQ3NzU2VsZWN0b3IsIGE6IGFueSkgPT4gdm9pZCk6IGJvb2xlYW4ge1xuICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgIGlmICh0aGlzLm5vdFNlbGVjdG9ycy5sZW5ndGggPiAwICYmXG4gICAgICAgIChpc0JsYW5rKHRoaXMubGlzdENvbnRleHQpIHx8ICF0aGlzLmxpc3RDb250ZXh0LmFscmVhZHlNYXRjaGVkKSkge1xuICAgICAgdmFyIG5vdE1hdGNoZXIgPSBTZWxlY3Rvck1hdGNoZXIuY3JlYXRlTm90TWF0Y2hlcih0aGlzLm5vdFNlbGVjdG9ycyk7XG4gICAgICByZXN1bHQgPSAhbm90TWF0Y2hlci5tYXRjaChjc3NTZWxlY3RvciwgbnVsbCk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgJiYgaXNQcmVzZW50KGNhbGxiYWNrKSAmJlxuICAgICAgICAoaXNCbGFuayh0aGlzLmxpc3RDb250ZXh0KSB8fCAhdGhpcy5saXN0Q29udGV4dC5hbHJlYWR5TWF0Y2hlZCkpIHtcbiAgICAgIGlmIChpc1ByZXNlbnQodGhpcy5saXN0Q29udGV4dCkpIHtcbiAgICAgICAgdGhpcy5saXN0Q29udGV4dC5hbHJlYWR5TWF0Y2hlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayh0aGlzLnNlbGVjdG9yLCB0aGlzLmNiQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n(function (LifecycleHooks) {\r\n LifecycleHooks[LifecycleHooks[\"OnInit\"] = 0] = \"OnInit\";\r\n LifecycleHooks[LifecycleHooks[\"OnDestroy\"] = 1] = \"OnDestroy\";\r\n LifecycleHooks[LifecycleHooks[\"DoCheck\"] = 2] = \"DoCheck\";\r\n LifecycleHooks[LifecycleHooks[\"OnChanges\"] = 3] = \"OnChanges\";\r\n LifecycleHooks[LifecycleHooks[\"AfterContentInit\"] = 4] = \"AfterContentInit\";\r\n LifecycleHooks[LifecycleHooks[\"AfterContentChecked\"] = 5] = \"AfterContentChecked\";\r\n LifecycleHooks[LifecycleHooks[\"AfterViewInit\"] = 6] = \"AfterViewInit\";\r\n LifecycleHooks[LifecycleHooks[\"AfterViewChecked\"] = 7] = \"AfterViewChecked\";\r\n})(exports.LifecycleHooks || (exports.LifecycleHooks = {}));\r\nvar LifecycleHooks = exports.LifecycleHooks;\r\n/**\r\n * @internal\r\n */\r\nexports.LIFECYCLE_HOOKS_VALUES = [\r\n LifecycleHooks.OnInit,\r\n LifecycleHooks.OnDestroy,\r\n LifecycleHooks.DoCheck,\r\n LifecycleHooks.OnChanges,\r\n LifecycleHooks.AfterContentInit,\r\n LifecycleHooks.AfterContentChecked,\r\n LifecycleHooks.AfterViewInit,\r\n LifecycleHooks.AfterViewChecked\r\n];\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlX2hvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvbGlmZWN5Y2xlX2hvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxXQUFZLGNBQWM7SUFDeEIsdURBQU0sQ0FBQTtJQUNOLDZEQUFTLENBQUE7SUFDVCx5REFBTyxDQUFBO0lBQ1AsNkRBQVMsQ0FBQTtJQUNULDJFQUFnQixDQUFBO0lBQ2hCLGlGQUFtQixDQUFBO0lBQ25CLHFFQUFhLENBQUE7SUFDYiwyRUFBZ0IsQ0FBQTtBQUNsQixDQUFDLEVBVFcsc0JBQWMsS0FBZCxzQkFBYyxRQVN6QjtBQVRELElBQVksY0FBYyxHQUFkLHNCQVNYLENBQUE7QUFFRDs7R0FFRztBQUNRLDhCQUFzQixHQUFHO0lBQ2xDLGNBQWMsQ0FBQyxNQUFNO0lBQ3JCLGNBQWMsQ0FBQyxTQUFTO0lBQ3hCLGNBQWMsQ0FBQyxPQUFPO0lBQ3RCLGNBQWMsQ0FBQyxTQUFTO0lBQ3hCLGNBQWMsQ0FBQyxnQkFBZ0I7SUFDL0IsY0FBYyxDQUFDLG1CQUFtQjtJQUNsQyxjQUFjLENBQUMsYUFBYTtJQUM1QixjQUFjLENBQUMsZ0JBQWdCO0NBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NpbXBsZUNoYW5nZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uX3V0aWwnO1xuXG5leHBvcnQgZW51bSBMaWZlY3ljbGVIb29rcyB7XG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBEb0NoZWNrLFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEFmdGVyVmlld0NoZWNrZWRcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHZhciBMSUZFQ1lDTEVfSE9PS1NfVkFMVUVTID0gW1xuICBMaWZlY3ljbGVIb29rcy5PbkluaXQsXG4gIExpZmVjeWNsZUhvb2tzLk9uRGVzdHJveSxcbiAgTGlmZWN5Y2xlSG9va3MuRG9DaGVjayxcbiAgTGlmZWN5Y2xlSG9va3MuT25DaGFuZ2VzLFxuICBMaWZlY3ljbGVIb29rcy5BZnRlckNvbnRlbnRJbml0LFxuICBMaWZlY3ljbGVIb29rcy5BZnRlckNvbnRlbnRDaGVja2VkLFxuICBMaWZlY3ljbGVIb29rcy5BZnRlclZpZXdJbml0LFxuICBMaWZlY3ljbGVIb29rcy5BZnRlclZpZXdDaGVja2VkXG5dO1xuXG4vKipcbiAqIExpZmVjeWNsZSBob29rcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBjYWxsZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjpcbiAqIC0gYE9uQ2hhbmdlc2AgKGlmIGFueSBiaW5kaW5ncyBoYXZlIGNoYW5nZWQpLFxuICogLSBgT25Jbml0YCAoYWZ0ZXIgdGhlIGZpcnN0IGNoZWNrIG9ubHkpLFxuICogLSBgRG9DaGVja2AsXG4gKiAtIGBBZnRlckNvbnRlbnRJbml0YCxcbiAqIC0gYEFmdGVyQ29udGVudENoZWNrZWRgLFxuICogLSBgQWZ0ZXJWaWV3SW5pdGAsXG4gKiAtIGBBZnRlclZpZXdDaGVja2VkYCxcbiAqIC0gYE9uRGVzdHJveWAgKGF0IHRoZSB2ZXJ5IGVuZCBiZWZvcmUgZGVzdHJ1Y3Rpb24pXG4gKi9cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZ2V0IG5vdGlmaWVkIHdoZW4gYW55IGRhdGEtYm91bmQgcHJvcGVydHkgb2YgeW91ciBkaXJlY3RpdmUgY2hhbmdlcy5cbiAqXG4gKiBgbmdPbkNoYW5nZXNgIGlzIGNhbGxlZCByaWdodCBhZnRlciB0aGUgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIGhhdmUgYmVlbiBjaGVja2VkIGFuZCBiZWZvcmUgdmlld1xuICogYW5kIGNvbnRlbnQgY2hpbGRyZW4gYXJlIGNoZWNrZWQgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaGFzIGNoYW5nZWQuXG4gKlxuICogVGhlIGBjaGFuZ2VzYCBwYXJhbWV0ZXIgY29udGFpbnMgYW4gZW50cnkgZm9yIGVhY2ggb2YgdGhlIGNoYW5nZWQgZGF0YS1ib3VuZCBwcm9wZXJ0eS4gVGhlIGtleSBpc1xuICogdGhlIHByb3BlcnR5IG5hbWUgYW5kIHRoZSB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgU2ltcGxlQ2hhbmdlfS5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZXhhbXBsZV0oaHR0cDovL3BsbmtyLmNvL2VkaXQvQUhyQjZvcExxSERCUGt0NEtwZFQ/cD1wcmV2aWV3KSk6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktY21wJyxcbiAqICAgdGVtcGxhdGU6IGA8cD5teVByb3AgPSB7e215UHJvcH19PC9wPmBcbiAqIH0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gKiAgIEBJbnB1dCgpIG15UHJvcDogYW55O1xuICpcbiAqICAgbmdPbkNoYW5nZXMoY2hhbmdlczoge1twcm9wTmFtZTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlfSkge1xuICogICAgIGNvbnNvbGUubG9nKCduZ09uQ2hhbmdlcyAtIG15UHJvcCA9ICcgKyBjaGFuZ2VzWydteVByb3AnXS5jdXJyZW50VmFsdWUpO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJ2YWx1ZSA9IHZhbHVlICsgMVwiPkNoYW5nZSBNeUNvbXBvbmVudDwvYnV0dG9uPlxuICogICAgIDxteS1jbXAgW215LXByb3BdPVwidmFsdWVcIj48L215LWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbTXlDb21wb25lbnRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIHZhbHVlID0gMDtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uQ2hhbmdlcyB7IG5nT25DaGFuZ2VzKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KTsgfVxuXG4vKipcbiAqIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSB0byBleGVjdXRlIGN1c3RvbSBpbml0aWFsaXphdGlvbiBsb2dpYyBhZnRlciB5b3VyIGRpcmVjdGl2ZSdzXG4gKiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgaGF2ZSBiZWVuIGluaXRpYWxpemVkLlxuICpcbiAqIGBuZ09uSW5pdGAgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIHRoZSBkaXJlY3RpdmUncyBkYXRhLWJvdW5kIHByb3BlcnRpZXMgaGF2ZSBiZWVuIGNoZWNrZWQgZm9yIHRoZVxuICogZmlyc3QgdGltZSwgYW5kIGJlZm9yZSBhbnkgb2YgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBjaGVja2VkLiBJdCBpcyBpbnZva2VkIG9ubHkgb25jZSB3aGVuIHRoZVxuICogZGlyZWN0aXZlIGlzIGluc3RhbnRpYXRlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZXhhbXBsZV0oaHR0cDovL3BsbmtyLmNvL2VkaXQvMU1CeXBScnlYZDY0djRwVjAzWW4/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1jbXAnLFxuICogICB0ZW1wbGF0ZTogYDxwPm15LWNvbXBvbmVudDwvcD5gXG4gKiB9KVxuICogY2xhc3MgTXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIGNvbnNvbGUubG9nKCduZ09uSW5pdCcpO1xuICogICB9XG4gKlxuICogICBuZ09uRGVzdHJveSgpIHtcbiAqICAgICBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3knKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFzQ2hpbGQgPSAhaGFzQ2hpbGRcIj5cbiAqICAgICAgIHt7aGFzQ2hpbGQgPyAnRGVzdHJveScgOiAnQ3JlYXRlJ319IE15Q29tcG9uZW50XG4gKiAgICAgPC9idXR0b24+XG4gKiAgICAgPG15LWNtcCAqbmdJZj1cImhhc0NoaWxkXCI+PC9teS1jbXA+YCxcbiAqICAgZGlyZWN0aXZlczogW015Q29tcG9uZW50LCBOZ0lmXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogICBoYXNDaGlsZCA9IHRydWU7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gKiAgYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25Jbml0IHsgbmdPbkluaXQoKTsgfVxuXG4vKipcbiAqIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0aW9uIGFsZ29yaXRobSBmb3IgeW91ciBkaXJlY3RpdmUuXG4gKlxuICogYG5nRG9DaGVja2AgZ2V0cyBjYWxsZWQgdG8gY2hlY2sgdGhlIGNoYW5nZXMgaW4gdGhlIGRpcmVjdGl2ZXMgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBhbGdvcml0aG0uXG4gKlxuICogVGhlIGRlZmF1bHQgY2hhbmdlIGRldGVjdGlvbiBhbGdvcml0aG0gbG9va3MgZm9yIGRpZmZlcmVuY2VzIGJ5IGNvbXBhcmluZyBib3VuZC1wcm9wZXJ0eSB2YWx1ZXNcbiAqIGJ5IHJlZmVyZW5jZSBhY3Jvc3MgY2hhbmdlIGRldGVjdGlvbiBydW5zLiBXaGVuIGBEb0NoZWNrYCBpcyBpbXBsZW1lbnRlZCwgdGhlIGRlZmF1bHQgYWxnb3JpdGhtXG4gKiBpcyBkaXNhYmxlZCBhbmQgYG5nRG9DaGVja2AgaXMgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIGZvciBjaGFuZ2VzLlxuICpcbiAqIEltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSBhbGxvd3MgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGJ5IHVzaW5nIGluc2lnaHRzIGFib3V0IHRoZSBjb21wb25lbnQsXG4gKiBpdHMgaW1wbGVtZW50YXRpb24gYW5kIGRhdGEgdHlwZXMgb2YgaXRzIHByb3BlcnRpZXMuXG4gKlxuICogTm90ZSB0aGF0IGEgZGlyZWN0aXZlIHNob3VsZCBub3QgaW1wbGVtZW50IGJvdGggYERvQ2hlY2tgIGFuZCB7QGxpbmsgT25DaGFuZ2VzfSBhdCB0aGUgc2FtZSB0aW1lLlxuICogYG5nT25DaGFuZ2VzYCB3b3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gYSBkaXJlY3RpdmUgaW1wbGVtZW50cyBgRG9DaGVja2AuIFJlYWN0aW9uIHRvIHRoZSBjaGFuZ2VzXG4gKiBoYXZlIHRvIGJlIGhhbmRsZWQgZnJvbSB3aXRoaW4gdGhlIGBuZ0RvQ2hlY2tgIGNhbGxiYWNrLlxuICpcbiAqIFVzZSB7QGxpbmsgS2V5VmFsdWVEaWZmZXJzfSBhbmQge0BsaW5rIEl0ZXJhYmxlRGlmZmVyc30gdG8gYWRkIHlvdXIgY3VzdG9tIGNoZWNrIG1lY2hhbmlzbXMuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1FwbklsRjBDUjJpNWJjWWJIRVVKP3A9cHJldmlldykpXG4gKlxuICogSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIGBuZ0RvQ2hlY2tgIHVzZXMgYW4ge0BsaW5rIEl0ZXJhYmxlRGlmZmVyc30gdG8gZGV0ZWN0IHRoZSB1cGRhdGVzIHRvIHRoZVxuICogYXJyYXkgYGxpc3RgOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2N1c3RvbS1jaGVjaycsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPHA+Q2hhbmdlczo8L3A+XG4gKiAgICAgPHVsPlxuICogICAgICAgPGxpICpuZ0Zvcj1cImxldCBsaW5lIG9mIGxvZ3NcIj57e2xpbmV9fTwvbGk+XG4gKiAgICAgPC91bD5gLFxuICogICBkaXJlY3RpdmVzOiBbTmdGb3JdXG4gKiB9KVxuICogY2xhc3MgQ3VzdG9tQ2hlY2tDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAqICAgQElucHV0KCkgbGlzdDogYW55W107XG4gKiAgIGRpZmZlcjogYW55O1xuICogICBsb2dzID0gW107XG4gKlxuICogICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAqICAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuICogICB9XG4gKlxuICogICBuZ0RvQ2hlY2soKSB7XG4gKiAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMubGlzdCk7XG4gKlxuICogICAgIGlmIChjaGFuZ2VzKSB7XG4gKiAgICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0ociA9PiB0aGlzLmxvZ3MucHVzaCgnYWRkZWQgJyArIHIuaXRlbSkpO1xuICogICAgICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0ociA9PiB0aGlzLmxvZ3MucHVzaCgncmVtb3ZlZCAnICsgci5pdGVtKSlcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxidXR0b24gKGNsaWNrKT1cImxpc3QucHVzaChsaXN0Lmxlbmd0aClcIj5QdXNoPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwibGlzdC5wb3AoKVwiPlBvcDwvYnV0dG9uPlxuICogICAgIDxjdXN0b20tY2hlY2sgW2xpc3RdPVwibGlzdFwiPjwvY3VzdG9tLWNoZWNrPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDdXN0b21DaGVja0NvbXBvbmVudF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgbGlzdCA9IFtdO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9DaGVjayB7IG5nRG9DaGVjaygpOyB9XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIGdldCBub3RpZmllZCB3aGVuIHlvdXIgZGlyZWN0aXZlIGlzIGRlc3Ryb3llZC5cbiAqXG4gKiBgbmdPbkRlc3Ryb3lgIGNhbGxiYWNrIGlzIHR5cGljYWxseSB1c2VkIGZvciBhbnkgY3VzdG9tIGNsZWFudXAgdGhhdCBuZWVkcyB0byBvY2N1ciB3aGVuIHRoZVxuICogaW5zdGFuY2UgaXMgZGVzdHJveWVkXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGV4YW1wbGVdKGh0dHA6Ly9wbG5rci5jby9lZGl0LzFNQnlwUnJ5WGQ2NHY0cFYwM1luP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1jbXAnLFxuICogICB0ZW1wbGF0ZTogYDxwPm15LWNvbXBvbmVudDwvcD5gXG4gKiB9KVxuICogY2xhc3MgTXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIGNvbnNvbGUubG9nKCduZ09uSW5pdCcpO1xuICogICB9XG4gKlxuICogICBuZ09uRGVzdHJveSgpIHtcbiAqICAgICBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3knKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFzQ2hpbGQgPSAhaGFzQ2hpbGRcIj5cbiAqICAgICAgIHt7aGFzQ2hpbGQgPyAnRGVzdHJveScgOiAnQ3JlYXRlJ319IE15Q29tcG9uZW50XG4gKiAgICAgPC9idXR0b24+XG4gKiAgICAgPG15LWNtcCAqbmdJZj1cImhhc0NoaWxkXCI+PC9teS1jbXA+YCxcbiAqICAgZGlyZWN0aXZlczogW015Q29tcG9uZW50LCBOZ0lmXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogICBoYXNDaGlsZCA9IHRydWU7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gKiBgYGBcbiAqXG4gKlxuICogVG8gY3JlYXRlIGEgc3RhdGVmdWwgUGlwZSwgeW91IHNob3VsZCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgYW5kIHNldCB0aGUgYHB1cmVgXG4gKiBwYXJhbWV0ZXIgdG8gYGZhbHNlYCBpbiB0aGUge0BsaW5rIFBpcGVNZXRhZGF0YX0uXG4gKlxuICogQSBzdGF0ZWZ1bCBwaXBlIG1heSBwcm9kdWNlIGRpZmZlcmVudCBvdXRwdXQsIGdpdmVuIHRoZSBzYW1lIGlucHV0LiBJdCBpc1xuICogbGlrZWx5IHRoYXQgYSBzdGF0ZWZ1bCBwaXBlIG1heSBjb250YWluIHN0YXRlIHRoYXQgc2hvdWxkIGJlIGNsZWFuZWQgdXAgd2hlblxuICogYSBiaW5kaW5nIGlzIGRlc3Ryb3llZC4gRm9yIGV4YW1wbGUsIGEgc3Vic2NyaXB0aW9uIHRvIGEgc3RyZWFtIG9mIGRhdGEgbWF5IG5lZWQgdG9cbiAqIGJlIGRpc3Bvc2VkLCBvciBhbiBpbnRlcnZhbCBtYXkgbmVlZCB0byBiZSBjbGVhcmVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9pOHBtNWJyTzRzUGFMeEJ4NTZNUj9wPXByZXZpZXcpKVxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgYSBwaXBlIGlzIGNyZWF0ZWQgdG8gY291bnRkb3duIGl0cyBpbnB1dCB2YWx1ZSwgdXBkYXRpbmcgaXQgZXZlcnlcbiAqIDUwbXMuIEJlY2F1c2UgaXQgbWFpbnRhaW5zIGFuIGludGVybmFsIGludGVydmFsLCBpdCBhdXRvbWF0aWNhbGx5IGNsZWFyc1xuICogdGhlIGludGVydmFsIHdoZW4gdGhlIGJpbmRpbmcgaXMgZGVzdHJveWVkIG9yIHRoZSBjb3VudGRvd24gY29tcGxldGVzLlxuICpcbiAqIGBgYFxuICogaW1wb3J0IHtPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ2FuZ3VsYXIyL2NvcmUnXG4gKiBAUGlwZSh7bmFtZTogJ2NvdW50ZG93bicsIHB1cmU6IGZhbHNlfSlcbiAqIGNsYXNzIENvdW50RG93biBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gKiAgIHJlbWFpbmluZ1RpbWU6TnVtYmVyO1xuICogICBpbnRlcnZhbDpTZXRJbnRlcnZhbDtcbiAqICAgbmdPbkRlc3Ryb3koKSB7XG4gKiAgICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAqICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gKiAgICAgfVxuICogICB9XG4gKiAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzOiBhbnlbXSA9IFtdKSB7XG4gKiAgICAgaWYgKCFwYXJzZUludCh2YWx1ZSwgMTApKSByZXR1cm4gbnVsbDtcbiAqICAgICBpZiAodHlwZW9mIHRoaXMucmVtYWluaW5nVGltZSAhPT0gJ251bWJlcicpIHtcbiAqICAgICAgIHRoaXMucmVtYWluaW5nVGltZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gKiAgICAgfVxuICogICAgIGlmICghdGhpcy5pbnRlcnZhbCkge1xuICogICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAqICAgICAgICAgdGhpcy5yZW1haW5pbmdUaW1lLT01MDtcbiAqICAgICAgICAgaWYgKHRoaXMucmVtYWluaW5nVGltZSA8PSAwKSB7XG4gKiAgICAgICAgICAgdGhpcy5yZW1haW5pbmdUaW1lID0gMDtcbiAqICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICogICAgICAgICAgIGRlbGV0ZSB0aGlzLmludGVydmFsO1xuICogICAgICAgICB9XG4gKiAgICAgICB9LCA1MCk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB0aGlzLnJlbWFpbmluZ1RpbWU7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEludm9raW5nIGB7eyAxMDAwMCB8IGNvdW50ZG93biB9fWAgd291bGQgY2F1c2UgdGhlIHZhbHVlIHRvIGJlIGRlY3JlbWVudGVkIGJ5IDUwLFxuICogZXZlcnkgNTBtcywgdW50aWwgaXQgcmVhY2hlcyAwLlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkRlc3Ryb3kgeyBuZ09uRGVzdHJveSgpOyB9XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIGdldCBub3RpZmllZCB3aGVuIHlvdXIgZGlyZWN0aXZlJ3MgY29udGVudCBoYXMgYmVlbiBmdWxseVxuICogaW5pdGlhbGl6ZWQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3BsYW1YVXBzTFFiSVhwVmlaaFVPP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnY2hpbGQtY21wJyxcbiAqICAgdGVtcGxhdGU6IGB7e3doZXJlfX0gY2hpbGRgXG4gKiB9KVxuICogY2xhc3MgQ2hpbGRDb21wb25lbnQge1xuICogICBASW5wdXQoKSB3aGVyZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhcmVudC1jbXAnLFxuICogICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG4gKiB9KVxuICogY2xhc3MgUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gKiAgIEBDb250ZW50Q2hpbGQoQ2hpbGRDb21wb25lbnQpIGNvbnRlbnRDaGlsZDogQ2hpbGRDb21wb25lbnQ7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGQgaXMgbm90IGluaXRpYWxpemVkIHlldFxuICogICAgIGNvbnNvbGUubG9nKHRoaXMuZ2V0TWVzc2FnZSh0aGlzLmNvbnRlbnRDaGlsZCkpO1xuICogICB9XG4gKlxuICogICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gKiAgICAgLy8gY29udGVudENoaWxkIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIGNvbnRlbnQgaGFzIGJlZW4gY2hlY2tlZFxuICogICAgIGNvbnNvbGUubG9nKCdBZnRlckNvbnRlbnRJbml0OiAnICsgdGhpcy5nZXRNZXNzYWdlKHRoaXMuY29udGVudENoaWxkKSk7XG4gKiAgIH1cbiAqXG4gKiAgIHByaXZhdGUgZ2V0TWVzc2FnZShjbXA6IENoaWxkQ29tcG9uZW50KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gY21wID8gY21wLndoZXJlICsgJyBjaGlsZCcgOiAnbm8gY2hpbGQnO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8cGFyZW50LWNtcD5cbiAqICAgICAgIDxjaGlsZC1jbXAgd2hlcmU9XCJjb250ZW50XCI+PC9jaGlsZC1jbXA+XG4gKiAgICAgPC9wYXJlbnQtY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtQYXJlbnRDb21wb25lbnQsIENoaWxkQ29tcG9uZW50XVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogfVxuICpcbiAqIGJvb3RzdHJhcChBcHApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWZ0ZXJDb250ZW50SW5pdCB7IG5nQWZ0ZXJDb250ZW50SW5pdCgpOyB9XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIGdldCBub3RpZmllZCBhZnRlciBldmVyeSBjaGVjayBvZiB5b3VyIGRpcmVjdGl2ZSdzIGNvbnRlbnQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3RHZHJ5dE5FS1FuZWNJUGtEN05VP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7c2VsZWN0b3I6ICdjaGlsZC1jbXAnLCB0ZW1wbGF0ZTogYHt7d2hlcmV9fSBjaGlsZGB9KVxuICogY2xhc3MgQ2hpbGRDb21wb25lbnQge1xuICogICBASW5wdXQoKSB3aGVyZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBDb21wb25lbnQoe3NlbGVjdG9yOiAncGFyZW50LWNtcCcsIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmB9KVxuICogY2xhc3MgUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gKiAgIEBDb250ZW50Q2hpbGQoQ2hpbGRDb21wb25lbnQpIGNvbnRlbnRDaGlsZDogQ2hpbGRDb21wb25lbnQ7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGQgaXMgbm90IGluaXRpYWxpemVkIHlldFxuICogICAgIGNvbnNvbGUubG9nKHRoaXMuZ2V0TWVzc2FnZSh0aGlzLmNvbnRlbnRDaGlsZCkpO1xuICogICB9XG4gKlxuICogICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gKiAgICAgLy8gY29udGVudENoaWxkIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIGNvbnRlbnQgaGFzIGJlZW4gY2hlY2tlZFxuICogICAgIGNvbnNvbGUubG9nKCdBZnRlckNvbnRlbnRDaGVja2VkOiAnICsgdGhpcy5nZXRNZXNzYWdlKHRoaXMuY29udGVudENoaWxkKSk7XG4gKiAgIH1cbiAqXG4gKiAgIHByaXZhdGUgZ2V0TWVzc2FnZShjbXA6IENoaWxkQ29tcG9uZW50KTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gY21wID8gY21wLndoZXJlICsgJyBjaGlsZCcgOiAnbm8gY2hpbGQnO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8cGFyZW50LWNtcD5cbiAqICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhc0NvbnRlbnQgPSAhaGFzQ29udGVudFwiPlRvZ2dsZSBjb250ZW50IGNoaWxkPC9idXR0b24+XG4gKiAgICAgICA8Y2hpbGQtY21wICpuZ0lmPVwiaGFzQ29udGVudFwiIHdoZXJlPVwiY29udGVudFwiPjwvY2hpbGQtY21wPlxuICogICAgIDwvcGFyZW50LWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbTmdJZiwgUGFyZW50Q29tcG9uZW50LCBDaGlsZENvbXBvbmVudF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgaGFzQ29udGVudCA9IHRydWU7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZnRlckNvbnRlbnRDaGVja2VkIHsgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk7IH1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZ2V0IG5vdGlmaWVkIHdoZW4geW91ciBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9MaFRLVk1FTTBma0pneXA0Q0kxVz9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe3NlbGVjdG9yOiAnY2hpbGQtY21wJywgdGVtcGxhdGU6IGB7e3doZXJlfX0gY2hpbGRgfSlcbiAqIGNsYXNzIENoaWxkQ29tcG9uZW50IHtcbiAqICAgQElucHV0KCkgd2hlcmU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdwYXJlbnQtY21wJyxcbiAqICAgdGVtcGxhdGU6IGA8Y2hpbGQtY21wIHdoZXJlPVwidmlld1wiPjwvY2hpbGQtY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDaGlsZENvbXBvbmVudF1cbiAqIH0pXG4gKiBjbGFzcyBQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAqICAgQFZpZXdDaGlsZChDaGlsZENvbXBvbmVudCkgdmlld0NoaWxkOiBDaGlsZENvbXBvbmVudDtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIC8vIHZpZXdDaGlsZCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0XG4gKiAgICAgY29uc29sZS5sb2codGhpcy5nZXRNZXNzYWdlKHRoaXMudmlld0NoaWxkKSk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAqICAgICAvLyB2aWV3Q2hpbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZFxuICogICAgIGNvbnNvbGUubG9nKCduZ0FmdGVyVmlld0luaXQ6ICcgKyB0aGlzLmdldE1lc3NhZ2UodGhpcy52aWV3Q2hpbGQpKTtcbiAqICAgfVxuICpcbiAqICAgcHJpdmF0ZSBnZXRNZXNzYWdlKGNtcDogQ2hpbGRDb21wb25lbnQpOiBzdHJpbmcge1xuICogICAgIHJldHVybiBjbXAgPyBjbXAud2hlcmUgKyAnIGNoaWxkJyA6ICdubyBjaGlsZCc7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYDxwYXJlbnQtY21wPjwvcGFyZW50LWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbUGFyZW50Q29tcG9uZW50XVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogfVxuICpcbiAqIGJvb3RzdHJhcChBcHApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWZ0ZXJWaWV3SW5pdCB7IG5nQWZ0ZXJWaWV3SW5pdCgpOyB9XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIGdldCBub3RpZmllZCBhZnRlciBldmVyeSBjaGVjayBvZiB5b3VyIGNvbXBvbmVudCdzIHZpZXcuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0LzBxREdIY1BRa2MyNUNYaFROektVP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7c2VsZWN0b3I6ICdjaGlsZC1jbXAnLCB0ZW1wbGF0ZTogYHt7d2hlcmV9fSBjaGlsZGB9KVxuICogY2xhc3MgQ2hpbGRDb21wb25lbnQge1xuICogICBASW5wdXQoKSB3aGVyZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhcmVudC1jbXAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxidXR0b24gKGNsaWNrKT1cInNob3dWaWV3ID0gIXNob3dWaWV3XCI+VG9nZ2xlIHZpZXcgY2hpbGQ8L2J1dHRvbj5cbiAqICAgICA8Y2hpbGQtY21wICpuZ0lmPVwic2hvd1ZpZXdcIiB3aGVyZT1cInZpZXdcIj48L2NoaWxkLWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbTmdJZiwgQ2hpbGRDb21wb25lbnRdXG4gKiB9KVxuICogY2xhc3MgUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gKiAgIEBWaWV3Q2hpbGQoQ2hpbGRDb21wb25lbnQpIHZpZXdDaGlsZDogQ2hpbGRDb21wb25lbnQ7XG4gKiAgIHNob3dWaWV3ID0gdHJ1ZTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIC8vIHZpZXdDaGlsZCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0XG4gKiAgICAgY29uc29sZS5sb2codGhpcy5nZXRNZXNzYWdlKHRoaXMudmlld0NoaWxkKSk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAqICAgICAvLyB2aWV3Q2hpbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBjaGVja2VkXG4gKiAgICAgY29uc29sZS5sb2coJ0FmdGVyVmlld0NoZWNrZWQ6ICcgKyB0aGlzLmdldE1lc3NhZ2UodGhpcy52aWV3Q2hpbGQpKTtcbiAqICAgfVxuICpcbiAqICAgcHJpdmF0ZSBnZXRNZXNzYWdlKGNtcDogQ2hpbGRDb21wb25lbnQpOiBzdHJpbmcge1xuICogICAgIHJldHVybiBjbXAgPyBjbXAud2hlcmUgKyAnIGNoaWxkJyA6ICdubyBjaGlsZCc7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYDxwYXJlbnQtY21wPjwvcGFyZW50LWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbUGFyZW50Q29tcG9uZW50XVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogfVxuICpcbiAqIGJvb3RzdHJhcChBcHApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWZ0ZXJWaWV3Q2hlY2tlZCB7IG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOyB9XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar application_tokens_1 = require('angular2/src/core/application_tokens');\r\nvar _ASSET_SCHEME = 'asset:';\r\n/**\r\n * Create a {@link UrlResolver} with no package prefix.\r\n */\r\nfunction createUrlResolverWithoutPackagePrefix() {\r\n return new UrlResolver();\r\n}\r\nexports.createUrlResolverWithoutPackagePrefix = createUrlResolverWithoutPackagePrefix;\r\nfunction createOfflineCompileUrlResolver() {\r\n return new UrlResolver(_ASSET_SCHEME);\r\n}\r\nexports.createOfflineCompileUrlResolver = createOfflineCompileUrlResolver;\r\n/**\r\n * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.\r\n */\r\nexports.DEFAULT_PACKAGE_URL_PROVIDER = new di_1.Provider(application_tokens_1.PACKAGE_ROOT_URL, { useValue: \"/\" });\r\n/**\r\n * Used by the {@link Compiler} when resolving HTML and CSS template URLs.\r\n *\r\n * This class can be overridden by the application developer to create custom behavior.\r\n *\r\n * See {@link Compiler}\r\n *\r\n * ## Example\r\n *\r\n * {@example compiler/ts/url_resolver/url_resolver.ts region='url_resolver'}\r\n */\r\nvar UrlResolver = (function () {\r\n function UrlResolver(_packagePrefix) {\r\n if (_packagePrefix === void 0) { _packagePrefix = null; }\r\n this._packagePrefix = _packagePrefix;\r\n }\r\n /**\r\n * Resolves the `url` given the `baseUrl`:\r\n * - when the `url` is null, the `baseUrl` is returned,\r\n * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of\r\n * `baseUrl` and `url`,\r\n * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is\r\n * returned as is (ignoring the `baseUrl`)\r\n *\r\n * @param {string} baseUrl\r\n * @param {string} url\r\n * @returns {string} the resolved URL\r\n */\r\n UrlResolver.prototype.resolve = function (baseUrl, url) {\r\n var resolvedUrl = url;\r\n if (lang_1.isPresent(baseUrl) && baseUrl.length > 0) {\r\n resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);\r\n }\r\n var resolvedParts = _split(resolvedUrl);\r\n var prefix = this._packagePrefix;\r\n if (lang_1.isPresent(prefix) && lang_1.isPresent(resolvedParts) &&\r\n resolvedParts[_ComponentIndex.Scheme] == \"package\") {\r\n var path = resolvedParts[_ComponentIndex.Path];\r\n if (this._packagePrefix === _ASSET_SCHEME) {\r\n var pathSegements = path.split(/\\//);\r\n resolvedUrl = \"asset:\" + pathSegements[0] + \"/lib/\" + pathSegements.slice(1).join('/');\r\n }\r\n else {\r\n prefix = lang_1.StringWrapper.stripRight(prefix, '/');\r\n path = lang_1.StringWrapper.stripLeft(path, '/');\r\n return prefix + \"/\" + path;\r\n }\r\n }\r\n return resolvedUrl;\r\n };\r\n UrlResolver = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(application_tokens_1.PACKAGE_ROOT_URL)), \r\n __metadata('design:paramtypes', [String])\r\n ], UrlResolver);\r\n return UrlResolver;\r\n}());\r\nexports.UrlResolver = UrlResolver;\r\n/**\r\n * Extract the scheme of a URL.\r\n */\r\nfunction getUrlScheme(url) {\r\n var match = _split(url);\r\n return (match && match[_ComponentIndex.Scheme]) || \"\";\r\n}\r\nexports.getUrlScheme = getUrlScheme;\r\n// The code below is adapted from Traceur:\r\n// https://github.com/google/traceur-compiler/blob/9511c1dafa972bf0de1202a8a863bad02f0f95a8/src/runtime/url.js\r\n/**\r\n * Builds a URI string from already-encoded parts.\r\n *\r\n * No encoding is performed. Any component may be omitted as either null or\r\n * undefined.\r\n *\r\n * @param {?string=} opt_scheme The scheme such as 'http'.\r\n * @param {?string=} opt_userInfo The user name before the '@'.\r\n * @param {?string=} opt_domain The domain such as 'www.google.com', already\r\n * URI-encoded.\r\n * @param {(string|null)=} opt_port The port number.\r\n * @param {?string=} opt_path The path, already URI-encoded. If it is not\r\n * empty, it must begin with a slash.\r\n * @param {?string=} opt_queryData The URI-encoded query data.\r\n * @param {?string=} opt_fragment The URI-encoded fragment identifier.\r\n * @return {string} The fully combined URI.\r\n */\r\nfunction _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {\r\n var out = [];\r\n if (lang_1.isPresent(opt_scheme)) {\r\n out.push(opt_scheme + ':');\r\n }\r\n if (lang_1.isPresent(opt_domain)) {\r\n out.push('//');\r\n if (lang_1.isPresent(opt_userInfo)) {\r\n out.push(opt_userInfo + '@');\r\n }\r\n out.push(opt_domain);\r\n if (lang_1.isPresent(opt_port)) {\r\n out.push(':' + opt_port);\r\n }\r\n }\r\n if (lang_1.isPresent(opt_path)) {\r\n out.push(opt_path);\r\n }\r\n if (lang_1.isPresent(opt_queryData)) {\r\n out.push('?' + opt_queryData);\r\n }\r\n if (lang_1.isPresent(opt_fragment)) {\r\n out.push('#' + opt_fragment);\r\n }\r\n return out.join('');\r\n}\r\n/**\r\n * A regular expression for breaking a URI into its component parts.\r\n *\r\n * {@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says\r\n * As the \"first-match-wins\" algorithm is identical to the \"greedy\"\r\n * disambiguation method used by POSIX regular expressions, it is natural and\r\n * commonplace to use a regular expression for parsing the potential five\r\n * components of a URI reference.\r\n *\r\n * The following line is the regular expression for breaking-down a\r\n * well-formed URI reference into its components.\r\n *\r\n * <pre>\r\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\r\n * 12 3 4 5 6 7 8 9\r\n * </pre>\r\n *\r\n * The numbers in the second line above are only to assist readability; they\r\n * indicate the reference points for each subexpression (i.e., each paired\r\n * parenthesis). We refer to the value matched for subexpression <n> as $<n>.\r\n * For example, matching the above expression to\r\n * <pre>\r\n * http://www.ics.uci.edu/pub/ietf/uri/#Related\r\n * </pre>\r\n * results in the following subexpression matches:\r\n * <pre>\r\n * $1 = http:\r\n * $2 = http\r\n * $3 = //www.ics.uci.edu\r\n * $4 = www.ics.uci.edu\r\n * $5 = /pub/ietf/uri/\r\n * $6 = <undefined>\r\n * $7 = <undefined>\r\n * $8 = #Related\r\n * $9 = Related\r\n * </pre>\r\n * where <undefined> indicates that the component is not present, as is the\r\n * case for the query component in the above example. Therefore, we can\r\n * determine the value of the five components as\r\n * <pre>\r\n * scheme = $2\r\n * authority = $4\r\n * path = $5\r\n * query = $7\r\n * fragment = $9\r\n * </pre>\r\n *\r\n * The regular expression has been modified slightly to expose the\r\n * userInfo, domain, and port separately from the authority.\r\n * The modified version yields\r\n * <pre>\r\n * $1 = http scheme\r\n * $2 = <undefined> userInfo -\\\r\n * $3 = www.ics.uci.edu domain | authority\r\n * $4 = <undefined> port -/\r\n * $5 = /pub/ietf/uri/ path\r\n * $6 = <undefined> query without ?\r\n * $7 = Related fragment without #\r\n * </pre>\r\n * @type {!RegExp}\r\n * @internal\r\n */\r\nvar _splitRe = lang_1.RegExpWrapper.create('^' +\r\n '(?:' +\r\n '([^:/?#.]+)' +\r\n // used by other URL parts such as :,\r\n // ?, /, #, and .\r\n ':)?' +\r\n '(?://' +\r\n '(?:([^/?#]*)@)?' +\r\n '([\\\\w\\\\d\\\\-\\\\u0100-\\\\uffff.%]*)' +\r\n // digits, dashes, dots, percent\r\n // escapes, and unicode characters.\r\n '(?::([0-9]+))?' +\r\n ')?' +\r\n '([^?#]+)?' +\r\n '(?:\\\\?([^#]*))?' +\r\n '(?:#(.*))?' +\r\n '$');\r\n/**\r\n * The index of each URI component in the return value of goog.uri.utils.split.\r\n * @enum {number}\r\n */\r\nvar _ComponentIndex;\r\n(function (_ComponentIndex) {\r\n _ComponentIndex[_ComponentIndex[\"Scheme\"] = 1] = \"Scheme\";\r\n _ComponentIndex[_ComponentIndex[\"UserInfo\"] = 2] = \"UserInfo\";\r\n _ComponentIndex[_ComponentIndex[\"Domain\"] = 3] = \"Domain\";\r\n _ComponentIndex[_ComponentIndex[\"Port\"] = 4] = \"Port\";\r\n _ComponentIndex[_ComponentIndex[\"Path\"] = 5] = \"Path\";\r\n _ComponentIndex[_ComponentIndex[\"QueryData\"] = 6] = \"QueryData\";\r\n _ComponentIndex[_ComponentIndex[\"Fragment\"] = 7] = \"Fragment\";\r\n})(_ComponentIndex || (_ComponentIndex = {}));\r\n/**\r\n * Splits a URI into its component parts.\r\n *\r\n * Each component can be accessed via the component indices; for example:\r\n * <pre>\r\n * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];\r\n * </pre>\r\n *\r\n * @param {string} uri The URI string to examine.\r\n * @return {!Array.<string|undefined>} Each component still URI-encoded.\r\n * Each component that is present will contain the encoded value, whereas\r\n * components that are not present will be undefined or empty, depending\r\n * on the browser's regular expression implementation. Never null, since\r\n * arbitrary strings may still look like path names.\r\n */\r\nfunction _split(uri) {\r\n return lang_1.RegExpWrapper.firstMatch(_splitRe, uri);\r\n}\r\n/**\r\n * Removes dot segments in given path component, as described in\r\n * RFC 3986, section 5.2.4.\r\n *\r\n * @param {string} path A non-empty path component.\r\n * @return {string} Path component with removed dot segments.\r\n */\r\nfunction _removeDotSegments(path) {\r\n if (path == '/')\r\n return '/';\r\n var leadingSlash = path[0] == '/' ? '/' : '';\r\n var trailingSlash = path[path.length - 1] === '/' ? '/' : '';\r\n var segments = path.split('/');\r\n var out = [];\r\n var up = 0;\r\n for (var pos = 0; pos < segments.length; pos++) {\r\n var segment = segments[pos];\r\n switch (segment) {\r\n case '':\r\n case '.':\r\n break;\r\n case '..':\r\n if (out.length > 0) {\r\n out.pop();\r\n }\r\n else {\r\n up++;\r\n }\r\n break;\r\n default:\r\n out.push(segment);\r\n }\r\n }\r\n if (leadingSlash == '') {\r\n while (up-- > 0) {\r\n out.unshift('..');\r\n }\r\n if (out.length === 0)\r\n out.push('.');\r\n }\r\n return leadingSlash + out.join('/') + trailingSlash;\r\n}\r\n/**\r\n * Takes an array of the parts from split and canonicalizes the path part\r\n * and then joins all the parts.\r\n * @param {Array.<string?>} parts\r\n * @return {string}\r\n */\r\nfunction _joinAndCanonicalizePath(parts) {\r\n var path = parts[_ComponentIndex.Path];\r\n path = lang_1.isBlank(path) ? '' : _removeDotSegments(path);\r\n parts[_ComponentIndex.Path] = path;\r\n return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);\r\n}\r\n/**\r\n * Resolves a URL.\r\n * @param {string} base The URL acting as the base URL.\r\n * @param {string} to The URL to resolve.\r\n * @return {string}\r\n */\r\nfunction _resolveUrl(base, url) {\r\n var parts = _split(encodeURI(url));\r\n var baseParts = _split(base);\r\n if (lang_1.isPresent(parts[_ComponentIndex.Scheme])) {\r\n return _joinAndCanonicalizePath(parts);\r\n }\r\n else {\r\n parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];\r\n }\r\n for (var i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {\r\n if (lang_1.isBlank(parts[i])) {\r\n parts[i] = baseParts[i];\r\n }\r\n }\r\n if (parts[_ComponentIndex.Path][0] == '/') {\r\n return _joinAndCanonicalizePath(parts);\r\n }\r\n var path = baseParts[_ComponentIndex.Path];\r\n if (lang_1.isBlank(path))\r\n path = '/';\r\n var index = path.lastIndexOf('/');\r\n path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];\r\n parts[_ComponentIndex.Path] = path;\r\n return _joinAndCanonicalizePath(parts);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsX3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3VybF9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsbUJBQTJDLHNCQUFzQixDQUFDLENBQUE7QUFDbEUscUJBTU8sMEJBQTBCLENBQUMsQ0FBQTtBQUdsQyxtQ0FBK0Isc0NBQXNDLENBQUMsQ0FBQTtBQUV0RSxJQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSDtJQUNFLE1BQU0sQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFGZSw2Q0FBcUMsd0NBRXBELENBQUE7QUFFRDtJQUNFLE1BQU0sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRmUsdUNBQStCLGtDQUU5QyxDQUFBO0FBRUQ7O0dBRUc7QUFDUSxvQ0FBNEIsR0FBRyxJQUFJLGFBQVEsQ0FBQyxxQ0FBZ0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO0FBRTFGOzs7Ozs7Ozs7O0dBVUc7QUFFSDtJQUNFLHFCQUE4QyxjQUE2QjtRQUFyQyw4QkFBcUMsR0FBckMscUJBQXFDO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO0lBQUcsQ0FBQztJQUUvRTs7Ozs7Ozs7Ozs7T0FXRztJQUNILDZCQUFPLEdBQVAsVUFBUSxPQUFlLEVBQUUsR0FBVztRQUNsQyxJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdEIsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENB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QyxDQUFDO0lBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNuQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvdmlkZXIsIEluamVjdGFibGUsIEluamVjdH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtcbiAgU3RyaW5nV3JhcHBlcixcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBSZWdFeHBXcmFwcGVyLFxuICBub3JtYWxpemVCbGFua1xufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UEFDS0FHRV9ST09UX1VSTH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fdG9rZW5zJztcblxuY29uc3QgX0FTU0VUX1NDSEVNRSA9ICdhc3NldDonO1xuXG4vKipcbiAqIENyZWF0ZSBhIHtAbGluayBVcmxSZXNvbHZlcn0gd2l0aCBubyBwYWNrYWdlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVybFJlc29sdmVyV2l0aG91dFBhY2thZ2VQcmVmaXgoKTogVXJsUmVzb2x2ZXIge1xuICByZXR1cm4gbmV3IFVybFJlc29sdmVyKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPZmZsaW5lQ29tcGlsZVVybFJlc29sdmVyKCk6IFVybFJlc29sdmVyIHtcbiAgcmV0dXJuIG5ldyBVcmxSZXNvbHZlcihfQVNTRVRfU0NIRU1FKTtcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgcHJvdmlkZXIgZm9yIHtAbGluayBQQUNLQUdFX1JPT1RfVVJMfSB0aGF0IG1hcHMgdG8gJy8nLlxuICovXG5leHBvcnQgdmFyIERFRkFVTFRfUEFDS0FHRV9VUkxfUFJPVklERVIgPSBuZXcgUHJvdmlkZXIoUEFDS0FHRV9ST09UX1VSTCwge3VzZVZhbHVlOiBcIi9cIn0pO1xuXG4vKipcbiAqIFVzZWQgYnkgdGhlIHtAbGluayBDb21waWxlcn0gd2hlbiByZXNvbHZpbmcgSFRNTCBhbmQgQ1NTIHRlbXBsYXRlIFVSTHMuXG4gKlxuICogVGhpcyBjbGFzcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIHRvIGNyZWF0ZSBjdXN0b20gYmVoYXZpb3IuXG4gKlxuICogU2VlIHtAbGluayBDb21waWxlcn1cbiAqXG4gKiAjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvbXBpbGVyL3RzL3VybF9yZXNvbHZlci91cmxfcmVzb2x2ZXIudHMgcmVnaW9uPSd1cmxfcmVzb2x2ZXInfVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJsUmVzb2x2ZXIge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBBQ0tBR0VfUk9PVF9VUkwpIHByaXZhdGUgX3BhY2thZ2VQcmVmaXg6IHN0cmluZyA9IG51bGwpIHt9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBgdXJsYCBnaXZlbiB0aGUgYGJhc2VVcmxgOlxuICAgKiAtIHdoZW4gdGhlIGB1cmxgIGlzIG51bGwsIHRoZSBgYmFzZVVybGAgaXMgcmV0dXJuZWQsXG4gICAqIC0gaWYgYHVybGAgaXMgcmVsYXRpdmUgKCdwYXRoL3RvL2hlcmUnLCAnLi9wYXRoL3RvL2hlcmUnKSwgdGhlIHJlc29sdmVkIHVybCBpcyBhIGNvbWJpbmF0aW9uIG9mXG4gICAqIGBiYXNlVXJsYCBhbmQgYHVybGAsXG4gICAqIC0gaWYgYHVybGAgaXMgYWJzb2x1dGUgKGl0IGhhcyBhIHNjaGVtZTogJ2h0dHA6Ly8nLCAnaHR0cHM6Ly8nIG9yIHN0YXJ0IHdpdGggJy8nKSwgdGhlIGB1cmxgIGlzXG4gICAqIHJldHVybmVkIGFzIGlzIChpZ25vcmluZyB0aGUgYGJhc2VVcmxgKVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVybFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSByZXNvbHZlZCBVUkxcbiAgICovXG4gIHJlc29sdmUoYmFzZVVybDogc3RyaW5nLCB1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdmFyIHJlc29sdmVkVXJsID0gdXJsO1xuICAgIGlmIChpc1ByZXNlbnQoYmFzZVVybCkgJiYgYmFzZVVybC5sZW5ndGggPiAwKSB7XG4gICAgICByZXNvbHZlZFVybCA9IF9yZXNvbHZlVXJsKGJhc2VVcmwsIHJlc29sdmVkVXJsKTtcbiAgICB9XG4gICAgdmFyIHJlc29sdmVkUGFydHMgPSBfc3BsaXQocmVzb2x2ZWRVcmwpO1xuICAgIHZhciBwcmVmaXggPSB0aGlzLl9wYWNrYWdlUHJlZml4O1xuICAgIGlmIChpc1ByZXNlbnQocHJlZml4KSAmJiBpc1ByZXNlbnQocmVzb2x2ZWRQYXJ0cykgJiZcbiAgICAgICAgcmVzb2x2ZWRQYXJ0c1tfQ29tcG9uZW50SW5kZXguU2NoZW1lXSA9PSBcInBhY2thZ2VcIikge1xuICAgICAgdmFyIHBhdGggPSByZXNvbHZlZFBhcnRzW19Db21wb25lbnRJbmRleC5QYXRoXTtcbiAgICAgIGlmICh0aGlzLl9wYWNrYWdlUHJlZml4ID09PSBfQVNTRVRfU0NIRU1FKSB7XG4gICAgICAgIHZhciBwYXRoU2VnZW1lbnRzID0gcGF0aC5zcGxpdCgvXFwvLyk7XG4gICAgICAgIHJlc29sdmVkVXJsID0gYGFzc2V0OiR7cGF0aFNlZ2VtZW50c1swXX0vbGliLyR7cGF0aFNlZ2VtZW50cy5zbGljZSgxKS5qb2luKCcvJyl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZWZpeCA9IFN0cmluZ1dyYXBwZXIuc3RyaXBSaWdodChwcmVmaXgsICcvJyk7XG4gICAgICAgIHBhdGggPSBTdHJpbmdXcmFwcGVyLnN0cmlwTGVmdChwYXRoLCAnLycpO1xuICAgICAgICByZXR1cm4gYCR7cHJlZml4fS8ke3BhdGh9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkVXJsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgc2NoZW1lIG9mIGEgVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsU2NoZW1lKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdmFyIG1hdGNoID0gX3NwbGl0KHVybCk7XG4gIHJldHVybiAobWF0Y2ggJiYgbWF0Y2hbX0NvbXBvbmVudEluZGV4LlNjaGVtZV0pIHx8IFwiXCI7XG59XG5cbi8vIFRoZSBjb2RlIGJlbG93IGlzIGFkYXB0ZWQgZnJvbSBUcmFjZXVyOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS90cmFjZXVyLWNvbXBpbGVyL2Jsb2IvOTUxMWMxZGFmYTk3MmJmMGRlMTIwMmE4YTg2M2JhZDAyZjBmOTVhOC9zcmMvcnVudGltZS91cmwuanNcblxuLyoqXG4gKiBCdWlsZHMgYSBVUkkgc3RyaW5nIGZyb20gYWxyZWFkeS1lbmNvZGVkIHBhcnRzLlxuICpcbiAqIE5vIGVuY29kaW5nIGlzIHBlcmZvcm1lZC4gIEFueSBjb21wb25lbnQgbWF5IGJlIG9taXR0ZWQgYXMgZWl0aGVyIG51bGwgb3JcbiAqIHVuZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmc9fSBvcHRfc2NoZW1lIFRoZSBzY2hlbWUgc3VjaCBhcyAnaHR0cCcuXG4gKiBAcGFyYW0gez9zdHJpbmc9fSBvcHRfdXNlckluZm8gVGhlIHVzZXIgbmFtZSBiZWZvcmUgdGhlICdAJy5cbiAqIEBwYXJhbSB7P3N0cmluZz19IG9wdF9kb21haW4gVGhlIGRvbWFpbiBzdWNoIGFzICd3d3cuZ29vZ2xlLmNvbScsIGFscmVhZHlcbiAqICAgICBVUkktZW5jb2RlZC5cbiAqIEBwYXJhbSB7KHN0cmluZ3xudWxsKT19IG9wdF9wb3J0IFRoZSBwb3J0IG51bWJlci5cbiAqIEBwYXJhbSB7P3N0cmluZz19IG9wdF9wYXRoIFRoZSBwYXRoLCBhbHJlYWR5IFVSSS1lbmNvZGVkLiAgSWYgaXQgaXMgbm90XG4gKiAgICAgZW1wdHksIGl0IG11c3QgYmVnaW4gd2l0aCBhIHNsYXNoLlxuICogQHBhcmFtIHs/c3RyaW5nPX0gb3B0X3F1ZXJ5RGF0YSBUaGUgVVJJLWVuY29kZWQgcXVlcnkgZGF0YS5cbiAqIEBwYXJhbSB7P3N0cmluZz19IG9wdF9mcmFnbWVudCBUaGUgVVJJLWVuY29kZWQgZnJhZ21lbnQgaWRlbnRpZmllci5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZ1bGx5IGNvbWJpbmVkIFVSSS5cbiAqL1xuZnVuY3Rpb24gX2J1aWxkRnJvbUVuY29kZWRQYXJ0cyhvcHRfc2NoZW1lPzogc3RyaW5nLCBvcHRfdXNlckluZm8/OiBzdHJpbmcsIG9wdF9kb21haW4/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdF9wb3J0Pzogc3RyaW5nLCBvcHRfcGF0aD86IHN0cmluZywgb3B0X3F1ZXJ5RGF0YT86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0X2ZyYWdtZW50Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgdmFyIG91dCA9IFtdO1xuXG4gIGlmIChpc1ByZXNlbnQob3B0X3NjaGVtZSkpIHtcbiAgICBvdXQucHVzaChvcHRfc2NoZW1lICsgJzonKTtcbiAgfVxuXG4gIGlmIChpc1ByZXNlbnQob3B0X2RvbWFpbikpIHtcbiAgICBvdXQucHVzaCgnLy8nKTtcblxuICAgIGlmIChpc1ByZXNlbnQob3B0X3VzZXJJbmZvKSkge1xuICAgICAgb3V0LnB1c2gob3B0X3VzZXJJbmZvICsgJ0AnKTtcbiAgICB9XG5cbiAgICBvdXQucHVzaChvcHRfZG9tYWluKTtcblxuICAgIGlmIChpc1ByZXNlbnQob3B0X3BvcnQpKSB7XG4gICAgICBvdXQucHVzaCgnOicgKyBvcHRfcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzUHJlc2VudChvcHRfcGF0aCkpIHtcbiAgICBvdXQucHVzaChvcHRfcGF0aCk7XG4gIH1cblxuICBpZiAoaXNQcmVzZW50KG9wdF9xdWVyeURhdGEpKSB7XG4gICAgb3V0LnB1c2goJz8nICsgb3B0X3F1ZXJ5RGF0YSk7XG4gIH1cblxuICBpZiAoaXNQcmVzZW50KG9wdF9mcmFnbWVudCkpIHtcbiAgICBvdXQucHVzaCgnIycgKyBvcHRfZnJhZ21lbnQpO1xuICB9XG5cbiAgcmV0dXJuIG91dC5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgYnJlYWtpbmcgYSBVUkkgaW50byBpdHMgY29tcG9uZW50IHBhcnRzLlxuICpcbiAqIHtAbGluayBodHRwOi8vd3d3LmdiaXYuY29tL3Byb3RvY29scy91cmkvcmZjL3JmYzM5ODYuaHRtbCNSRkMyMjM0fSBzYXlzXG4gKiBBcyB0aGUgXCJmaXJzdC1tYXRjaC13aW5zXCIgYWxnb3JpdGhtIGlzIGlkZW50aWNhbCB0byB0aGUgXCJncmVlZHlcIlxuICogZGlzYW1iaWd1YXRpb24gbWV0aG9kIHVzZWQgYnkgUE9TSVggcmVndWxhciBleHByZXNzaW9ucywgaXQgaXMgbmF0dXJhbCBhbmRcbiAqIGNvbW1vbnBsYWNlIHRvIHVzZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgcGFyc2luZyB0aGUgcG90ZW50aWFsIGZpdmVcbiAqIGNvbXBvbmVudHMgb2YgYSBVUkkgcmVmZXJlbmNlLlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgbGluZSBpcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGZvciBicmVha2luZy1kb3duIGFcbiAqIHdlbGwtZm9ybWVkIFVSSSByZWZlcmVuY2UgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiA8cHJlPlxuICogXigoW146Lz8jXSspOik/KC8vKFteLz8jXSopKT8oW14/I10qKShcXD8oW14jXSopKT8oIyguKikpP1xuICogIDEyICAgICAgICAgICAgMyAgNCAgICAgICAgICA1ICAgICAgIDYgIDcgICAgICAgIDggOVxuICogPC9wcmU+XG4gKlxuICogVGhlIG51bWJlcnMgaW4gdGhlIHNlY29uZCBsaW5lIGFib3ZlIGFyZSBvbmx5IHRvIGFzc2lzdCByZWFkYWJpbGl0eTsgdGhleVxuICogaW5kaWNhdGUgdGhlIHJlZmVyZW5jZSBwb2ludHMgZm9yIGVhY2ggc3ViZXhwcmVzc2lvbiAoaS5lLiwgZWFjaCBwYWlyZWRcbiAqIHBhcmVudGhlc2lzKS4gV2UgcmVmZXIgdG8gdGhlIHZhbHVlIG1hdGNoZWQgZm9yIHN1YmV4cHJlc3Npb24gPG4+IGFzICQ8bj4uXG4gKiBGb3IgZXhhbXBsZSwgbWF0Y2hpbmcgdGhlIGFib3ZlIGV4cHJlc3Npb24gdG9cbiAqIDxwcmU+XG4gKiAgICAgaHR0cDovL3d3dy5pY3MudWNpLmVkdS9wdWIvaWV0Zi91cmkvI1JlbGF0ZWRcbiAqIDwvcHJlPlxuICogcmVzdWx0cyBpbiB0aGUgZm9sbG93aW5nIHN1YmV4cHJlc3Npb24gbWF0Y2hlczpcbiAqIDxwcmU+XG4gKiAgICAkMSA9IGh0dHA6XG4gKiAgICAkMiA9IGh0dHBcbiAqICAgICQzID0gLy93d3cuaWNzLnVjaS5lZHVcbiAqICAgICQ0ID0gd3d3Lmljcy51Y2kuZWR1XG4gKiAgICAkNSA9IC9wdWIvaWV0Zi91cmkvXG4gKiAgICAkNiA9IDx1bmRlZmluZWQ+XG4gKiAgICAkNyA9IDx1bmRlZmluZWQ+XG4gKiAgICAkOCA9ICNSZWxhdGVkXG4gKiAgICAkOSA9IFJlbGF0ZWRcbiAqIDwvcHJlPlxuICogd2hlcmUgPHVuZGVmaW5lZD4gaW5kaWNhdGVzIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBub3QgcHJlc2VudCwgYXMgaXMgdGhlXG4gKiBjYXNlIGZvciB0aGUgcXVlcnkgY29tcG9uZW50IGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGVyZWZvcmUsIHdlIGNhblxuICogZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgZml2ZSBjb21wb25lbnRzIGFzXG4gKiA8cHJlPlxuICogICAgc2NoZW1lICAgID0gJDJcbiAqICAgIGF1dGhvcml0eSA9ICQ0XG4gKiAgICBwYXRoICAgICAgPSAkNVxuICogICAgcXVlcnkgICAgID0gJDdcbiAqICAgIGZyYWdtZW50ICA9ICQ5XG4gKiA8L3ByZT5cbiAqXG4gKiBUaGUgcmVndWxhciBleHByZXNzaW9uIGhhcyBiZWVuIG1vZGlmaWVkIHNsaWdodGx5IHRvIGV4cG9zZSB0aGVcbiAqIHVzZXJJbmZvLCBkb21haW4sIGFuZCBwb3J0IHNlcGFyYXRlbHkgZnJvbSB0aGUgYXV0aG9yaXR5LlxuICogVGhlIG1vZGlmaWVkIHZlcnNpb24geWllbGRzXG4gKiA8cHJlPlxuICogICAgJDEgPSBodHRwICAgICAgICAgICAgICBzY2hlbWVcbiAqICAgICQyID0gPHVuZGVmaW5lZD4gICAgICAgdXNlckluZm8gLVxcXG4gKiAgICAkMyA9IHd3dy5pY3MudWNpLmVkdSAgIGRvbWFpbiAgICAgfCBhdXRob3JpdHlcbiAqICAgICQ0ID0gPHVuZGVmaW5lZD4gICAgICAgcG9ydCAgICAgLS9cbiAqICAgICQ1ID0gL3B1Yi9pZXRmL3VyaS8gICAgcGF0aFxuICogICAgJDYgPSA8dW5kZWZpbmVkPiAgICAgICBxdWVyeSB3aXRob3V0ID9cbiAqICAgICQ3ID0gUmVsYXRlZCAgICAgICAgICAgZnJhZ21lbnQgd2l0aG91dCAjXG4gKiA8L3ByZT5cbiAqIEB0eXBlIHshUmVnRXhwfVxuICogQGludGVybmFsXG4gKi9cbnZhciBfc3BsaXRSZSA9XG4gICAgUmVnRXhwV3JhcHBlci5jcmVhdGUoJ14nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKD86JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJyhbXjovPyMuXSspJyArICAvLyBzY2hlbWUgLSBpZ25vcmUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGJ5IG90aGVyIFVSTCBwYXJ0cyBzdWNoIGFzIDosXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA/LCAvLCAjLCBhbmQgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICc6KT8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKD86Ly8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKD86KFteLz8jXSopQCk/JyArICAgICAgICAgICAgICAgICAgLy8gdXNlckluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAnKFtcXFxcd1xcXFxkXFxcXC1cXFxcdTAxMDAtXFxcXHVmZmZmLiVdKiknICsgIC8vIGRvbWFpbiAtIHJlc3RyaWN0IHRvIGxldHRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZ2l0cywgZGFzaGVzLCBkb3RzLCBwZXJjZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzY2FwZXMsIGFuZCB1bmljb2RlIGNoYXJhY3RlcnMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgJyg/OjooWzAtOV0rKSk/JyArICAgICAgICAgICAgICAgICAgIC8vIHBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKT8nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKFtePyNdKyk/JyArICAgICAgICAvLyBwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgJyg/OlxcXFw/KFteI10qKSk/JyArICAvLyBxdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICcoPzojKC4qKSk/JyArICAgICAgIC8vIGZyYWdtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgJyQnKTtcblxuLyoqXG4gKiBUaGUgaW5kZXggb2YgZWFjaCBVUkkgY29tcG9uZW50IGluIHRoZSByZXR1cm4gdmFsdWUgb2YgZ29vZy51cmkudXRpbHMuc3BsaXQuXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5lbnVtIF9Db21wb25lbnRJbmRleCB7XG4gIFNjaGVtZSA9IDEsXG4gIFVzZXJJbmZvLFxuICBEb21haW4sXG4gIFBvcnQsXG4gIFBhdGgsXG4gIFF1ZXJ5RGF0YSxcbiAgRnJhZ21lbnRcbn1cblxuLyoqXG4gKiBTcGxpdHMgYSBVUkkgaW50byBpdHMgY29tcG9uZW50IHBhcnRzLlxuICpcbiAqIEVhY2ggY29tcG9uZW50IGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIGNvbXBvbmVudCBpbmRpY2VzOyBmb3IgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiBnb29nLnVyaS51dGlscy5zcGxpdChzb21lU3RyKVtnb29nLnVyaS51dGlscy5Db21wb250ZW50SW5kZXguUVVFUllfREFUQV07XG4gKiA8L3ByZT5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJpIFRoZSBVUkkgc3RyaW5nIHRvIGV4YW1pbmUuXG4gKiBAcmV0dXJuIHshQXJyYXkuPHN0cmluZ3x1bmRlZmluZWQ+fSBFYWNoIGNvbXBvbmVudCBzdGlsbCBVUkktZW5jb2RlZC5cbiAqICAgICBFYWNoIGNvbXBvbmVudCB0aGF0IGlzIHByZXNlbnQgd2lsbCBjb250YWluIHRoZSBlbmNvZGVkIHZhbHVlLCB3aGVyZWFzXG4gKiAgICAgY29tcG9uZW50cyB0aGF0IGFyZSBub3QgcHJlc2VudCB3aWxsIGJlIHVuZGVmaW5lZCBvciBlbXB0eSwgZGVwZW5kaW5nXG4gKiAgICAgb24gdGhlIGJyb3dzZXIncyByZWd1bGFyIGV4cHJlc3Npb24gaW1wbGVtZW50YXRpb24uICBOZXZlciBudWxsLCBzaW5jZVxuICogICAgIGFyYml0cmFyeSBzdHJpbmdzIG1heSBzdGlsbCBsb29rIGxpa2UgcGF0aCBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gX3NwbGl0KHVyaTogc3RyaW5nKTogQXJyYXk8c3RyaW5nIHwgYW55PiB7XG4gIHJldHVybiBSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2goX3NwbGl0UmUsIHVyaSk7XG59XG5cbi8qKlxuICAqIFJlbW92ZXMgZG90IHNlZ21lbnRzIGluIGdpdmVuIHBhdGggY29tcG9uZW50LCBhcyBkZXNjcmliZWQgaW5cbiAgKiBSRkMgMzk4Niwgc2VjdGlvbiA1LjIuNC5cbiAgKlxuICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIEEgbm9uLWVtcHR5IHBhdGggY29tcG9uZW50LlxuICAqIEByZXR1cm4ge3N0cmluZ30gUGF0aCBjb21wb25lbnQgd2l0aCByZW1vdmVkIGRvdCBzZWdtZW50cy5cbiAgKi9cbmZ1bmN0aW9uIF9yZW1vdmVEb3RTZWdtZW50cyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocGF0aCA9PSAnLycpIHJldHVybiAnLyc7XG5cbiAgdmFyIGxlYWRpbmdTbGFzaCA9IHBhdGhbMF0gPT0gJy8nID8gJy8nIDogJyc7XG4gIHZhciB0cmFpbGluZ1NsYXNoID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSAnLycgPyAnLycgOiAnJztcbiAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gIHZhciBvdXQ6IHN0cmluZ1tdID0gW107XG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHNlZ21lbnRzLmxlbmd0aDsgcG9zKyspIHtcbiAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzW3Bvc107XG4gICAgc3dpdGNoIChzZWdtZW50KSB7XG4gICAgICBjYXNlICcnOlxuICAgICAgY2FzZSAnLic6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLi4nOlxuICAgICAgICBpZiAob3V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvdXQucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXArKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG91dC5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChsZWFkaW5nU2xhc2ggPT0gJycpIHtcbiAgICB3aGlsZSAodXAtLSA+IDApIHtcbiAgICAgIG91dC51bnNoaWZ0KCcuLicpO1xuICAgIH1cblxuICAgIGlmIChvdXQubGVuZ3RoID09PSAwKSBvdXQucHVzaCgnLicpO1xuICB9XG5cbiAgcmV0dXJuIGxlYWRpbmdTbGFzaCArIG91dC5qb2luKCcvJykgKyB0cmFpbGluZ1NsYXNoO1xufVxuXG4vKipcbiAqIFRha2VzIGFuIGFycmF5IG9mIHRoZSBwYXJ0cyBmcm9tIHNwbGl0IGFuZCBjYW5vbmljYWxpemVzIHRoZSBwYXRoIHBhcnRcbiAqIGFuZCB0aGVuIGpvaW5zIGFsbCB0aGUgcGFydHMuXG4gKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc/Pn0gcGFydHNcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gX2pvaW5BbmRDYW5vbmljYWxpemVQYXRoKHBhcnRzOiBhbnlbXSk6IHN0cmluZyB7XG4gIHZhciBwYXRoID0gcGFydHNbX0NvbXBvbmVudEluZGV4LlBhdGhdO1xuICBwYXRoID0gaXNCbGFuayhwYXRoKSA/ICcnIDogX3JlbW92ZURvdFNlZ21lbnRzKHBhdGgpO1xuICBwYXJ0c1tfQ29tcG9uZW50SW5kZXguUGF0aF0gPSBwYXRoO1xuXG4gIHJldHVybiBfYnVpbGRGcm9tRW5jb2RlZFBhcnRzKHBhcnRzW19Db21wb25lbnRJbmRleC5TY2hlbWVdLCBwYXJ0c1tfQ29tcG9uZW50SW5kZXguVXNlckluZm9dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c1tfQ29tcG9uZW50SW5kZXguRG9tYWluXSwgcGFydHNbX0NvbXBvbmVudEluZGV4LlBvcnRdLCBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c1tfQ29tcG9uZW50SW5kZXguUXVlcnlEYXRhXSwgcGFydHNbX0NvbXBvbmVudEluZGV4LkZyYWdtZW50XSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBVUkwuXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZSBUaGUgVVJMIGFjdGluZyBhcyB0aGUgYmFzZSBVUkwuXG4gKiBAcGFyYW0ge3N0cmluZ30gdG8gVGhlIFVSTCB0byByZXNvbHZlLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBfcmVzb2x2ZVVybChiYXNlOiBzdHJpbmcsIHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdmFyIHBhcnRzID0gX3NwbGl0KGVuY29kZVVSSSh1cmwpKTtcbiAgdmFyIGJhc2VQYXJ0cyA9IF9zcGxpdChiYXNlKTtcblxuICBpZiAoaXNQcmVzZW50KHBhcnRzW19Db21wb25lbnRJbmRleC5TY2hlbWVdKSkge1xuICAgIHJldHVybiBfam9pbkFuZENhbm9uaWNhbGl6ZVBhdGgocGFydHMpO1xuICB9IGVsc2Uge1xuICAgIHBhcnRzW19Db21wb25lbnRJbmRleC5TY2hlbWVdID0gYmFzZVBhcnRzW19Db21wb25lbnRJbmRleC5TY2hlbWVdO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IF9Db21wb25lbnRJbmRleC5TY2hlbWU7IGkgPD0gX0NvbXBvbmVudEluZGV4LlBvcnQ7IGkrKykge1xuICAgIGlmIChpc0JsYW5rKHBhcnRzW2ldKSkge1xuICAgICAgcGFydHNbaV0gPSBiYXNlUGFydHNbaV07XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRzW19Db21wb25lbnRJbmRleC5QYXRoXVswXSA9PSAnLycpIHtcbiAgICByZXR1cm4gX2pvaW5BbmRDYW5vbmljYWxpemVQYXRoKHBhcnRzKTtcbiAgfVxuXG4gIHZhciBwYXRoID0gYmFzZVBhcnRzW19Db21wb25lbnRJbmRleC5QYXRoXTtcbiAgaWYgKGlzQmxhbmsocGF0aCkpIHBhdGggPSAnLyc7XG4gIHZhciBpbmRleCA9IHBhdGgubGFzdEluZGV4T2YoJy8nKTtcbiAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIGluZGV4ICsgMSkgKyBwYXJ0c1tfQ29tcG9uZW50SW5kZXguUGF0aF07XG4gIHBhcnRzW19Db21wb25lbnRJbmRleC5QYXRoXSA9IHBhdGg7XG4gIHJldHVybiBfam9pbkFuZENhbm9uaWNhbGl6ZVBhdGgocGFydHMpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar selector_1 = require('angular2/src/compiler/selector');\r\nvar util_1 = require('./util');\r\nvar lifecycle_hooks_1 = require('angular2/src/core/metadata/lifecycle_hooks');\r\nvar url_resolver_1 = require('./url_resolver');\r\n// group 1: \"property\" from \"[property]\"\r\n// group 2: \"event\" from \"(event)\"\r\nvar HOST_REG_EXP = /^(?:(?:\\[([^\\]]+)\\])|(?:\\(([^\\)]+)\\)))$/g;\r\nvar CompileMetadataWithIdentifier = (function () {\r\n function CompileMetadataWithIdentifier() {\r\n }\r\n Object.defineProperty(CompileMetadataWithIdentifier.prototype, \"identifier\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileMetadataWithIdentifier;\r\n}());\r\nexports.CompileMetadataWithIdentifier = CompileMetadataWithIdentifier;\r\nvar CompileMetadataWithType = (function (_super) {\r\n __extends(CompileMetadataWithType, _super);\r\n function CompileMetadataWithType() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(CompileMetadataWithType.prototype, \"type\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CompileMetadataWithType.prototype, \"identifier\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileMetadataWithType;\r\n}(CompileMetadataWithIdentifier));\r\nexports.CompileMetadataWithType = CompileMetadataWithType;\r\nfunction metadataFromJson(data) {\r\n return _COMPILE_METADATA_FROM_JSON[data['class']](data);\r\n}\r\nexports.metadataFromJson = metadataFromJson;\r\nvar CompileIdentifierMetadata = (function () {\r\n function CompileIdentifierMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, value = _b.value;\r\n this.runtime = runtime;\r\n this.name = name;\r\n this.prefix = prefix;\r\n this.moduleUrl = moduleUrl;\r\n this.value = value;\r\n }\r\n CompileIdentifierMetadata.fromJson = function (data) {\r\n var value = lang_1.isArray(data['value']) ? _arrayFromJson(data['value'], metadataFromJson) :\r\n _objFromJson(data['value'], metadataFromJson);\r\n return new CompileIdentifierMetadata({ name: data['name'], prefix: data['prefix'], moduleUrl: data['moduleUrl'], value: value });\r\n };\r\n CompileIdentifierMetadata.prototype.toJson = function () {\r\n var value = lang_1.isArray(this.value) ? _arrayToJson(this.value) : _objToJson(this.value);\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'class': 'Identifier',\r\n 'name': this.name,\r\n 'moduleUrl': this.moduleUrl,\r\n 'prefix': this.prefix,\r\n 'value': value\r\n };\r\n };\r\n Object.defineProperty(CompileIdentifierMetadata.prototype, \"identifier\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileIdentifierMetadata;\r\n}());\r\nexports.CompileIdentifierMetadata = CompileIdentifierMetadata;\r\nvar CompileDiDependencyMetadata = (function () {\r\n function CompileDiDependencyMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, isAttribute = _b.isAttribute, isSelf = _b.isSelf, isHost = _b.isHost, isSkipSelf = _b.isSkipSelf, isOptional = _b.isOptional, isValue = _b.isValue, query = _b.query, viewQuery = _b.viewQuery, token = _b.token, value = _b.value;\r\n this.isAttribute = lang_1.normalizeBool(isAttribute);\r\n this.isSelf = lang_1.normalizeBool(isSelf);\r\n this.isHost = lang_1.normalizeBool(isHost);\r\n this.isSkipSelf = lang_1.normalizeBool(isSkipSelf);\r\n this.isOptional = lang_1.normalizeBool(isOptional);\r\n this.isValue = lang_1.normalizeBool(isValue);\r\n this.query = query;\r\n this.viewQuery = viewQuery;\r\n this.token = token;\r\n this.value = value;\r\n }\r\n CompileDiDependencyMetadata.fromJson = function (data) {\r\n return new CompileDiDependencyMetadata({\r\n token: _objFromJson(data['token'], CompileTokenMetadata.fromJson),\r\n query: _objFromJson(data['query'], CompileQueryMetadata.fromJson),\r\n viewQuery: _objFromJson(data['viewQuery'], CompileQueryMetadata.fromJson),\r\n value: data['value'],\r\n isAttribute: data['isAttribute'],\r\n isSelf: data['isSelf'],\r\n isHost: data['isHost'],\r\n isSkipSelf: data['isSkipSelf'],\r\n isOptional: data['isOptional'],\r\n isValue: data['isValue']\r\n });\r\n };\r\n CompileDiDependencyMetadata.prototype.toJson = function () {\r\n return {\r\n 'token': _objToJson(this.token),\r\n 'query': _objToJson(this.query),\r\n 'viewQuery': _objToJson(this.viewQuery),\r\n 'value': this.value,\r\n 'isAttribute': this.isAttribute,\r\n 'isSelf': this.isSelf,\r\n 'isHost': this.isHost,\r\n 'isSkipSelf': this.isSkipSelf,\r\n 'isOptional': this.isOptional,\r\n 'isValue': this.isValue\r\n };\r\n };\r\n return CompileDiDependencyMetadata;\r\n}());\r\nexports.CompileDiDependencyMetadata = CompileDiDependencyMetadata;\r\nvar CompileProviderMetadata = (function () {\r\n function CompileProviderMetadata(_a) {\r\n var token = _a.token, useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\r\n this.token = token;\r\n this.useClass = useClass;\r\n this.useValue = useValue;\r\n this.useExisting = useExisting;\r\n this.useFactory = useFactory;\r\n this.deps = lang_1.normalizeBlank(deps);\r\n this.multi = lang_1.normalizeBool(multi);\r\n }\r\n CompileProviderMetadata.fromJson = function (data) {\r\n return new CompileProviderMetadata({\r\n token: _objFromJson(data['token'], CompileTokenMetadata.fromJson),\r\n useClass: _objFromJson(data['useClass'], CompileTypeMetadata.fromJson),\r\n useExisting: _objFromJson(data['useExisting'], CompileTokenMetadata.fromJson),\r\n useValue: _objFromJson(data['useValue'], CompileIdentifierMetadata.fromJson),\r\n useFactory: _objFromJson(data['useFactory'], CompileFactoryMetadata.fromJson),\r\n multi: data['multi'],\r\n deps: _arrayFromJson(data['deps'], CompileDiDependencyMetadata.fromJson)\r\n });\r\n };\r\n CompileProviderMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'class': 'Provider',\r\n 'token': _objToJson(this.token),\r\n 'useClass': _objToJson(this.useClass),\r\n 'useExisting': _objToJson(this.useExisting),\r\n 'useValue': _objToJson(this.useValue),\r\n 'useFactory': _objToJson(this.useFactory),\r\n 'multi': this.multi,\r\n 'deps': _arrayToJson(this.deps)\r\n };\r\n };\r\n return CompileProviderMetadata;\r\n}());\r\nexports.CompileProviderMetadata = CompileProviderMetadata;\r\nvar CompileFactoryMetadata = (function () {\r\n function CompileFactoryMetadata(_a) {\r\n var runtime = _a.runtime, name = _a.name, moduleUrl = _a.moduleUrl, prefix = _a.prefix, diDeps = _a.diDeps, value = _a.value;\r\n this.runtime = runtime;\r\n this.name = name;\r\n this.prefix = prefix;\r\n this.moduleUrl = moduleUrl;\r\n this.diDeps = _normalizeArray(diDeps);\r\n this.value = value;\r\n }\r\n Object.defineProperty(CompileFactoryMetadata.prototype, \"identifier\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileFactoryMetadata.fromJson = function (data) {\r\n return new CompileFactoryMetadata({\r\n name: data['name'],\r\n prefix: data['prefix'],\r\n moduleUrl: data['moduleUrl'],\r\n value: data['value'],\r\n diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)\r\n });\r\n };\r\n CompileFactoryMetadata.prototype.toJson = function () {\r\n return {\r\n 'class': 'Factory',\r\n 'name': this.name,\r\n 'prefix': this.prefix,\r\n 'moduleUrl': this.moduleUrl,\r\n 'value': this.value,\r\n 'diDeps': _arrayToJson(this.diDeps)\r\n };\r\n };\r\n return CompileFactoryMetadata;\r\n}());\r\nexports.CompileFactoryMetadata = CompileFactoryMetadata;\r\nvar CompileTokenMetadata = (function () {\r\n function CompileTokenMetadata(_a) {\r\n var value = _a.value, identifier = _a.identifier, identifierIsInstance = _a.identifierIsInstance;\r\n this.value = value;\r\n this.identifier = identifier;\r\n this.identifierIsInstance = lang_1.normalizeBool(identifierIsInstance);\r\n }\r\n CompileTokenMetadata.fromJson = function (data) {\r\n return new CompileTokenMetadata({\r\n value: data['value'],\r\n identifier: _objFromJson(data['identifier'], CompileIdentifierMetadata.fromJson),\r\n identifierIsInstance: data['identifierIsInstance']\r\n });\r\n };\r\n CompileTokenMetadata.prototype.toJson = function () {\r\n return {\r\n 'value': this.value,\r\n 'identifier': _objToJson(this.identifier),\r\n 'identifierIsInstance': this.identifierIsInstance\r\n };\r\n };\r\n Object.defineProperty(CompileTokenMetadata.prototype, \"runtimeCacheKey\", {\r\n get: function () {\r\n if (lang_1.isPresent(this.identifier)) {\r\n return this.identifier.runtime;\r\n }\r\n else {\r\n return this.value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CompileTokenMetadata.prototype, \"assetCacheKey\", {\r\n get: function () {\r\n if (lang_1.isPresent(this.identifier)) {\r\n return lang_1.isPresent(this.identifier.moduleUrl) &&\r\n lang_1.isPresent(url_resolver_1.getUrlScheme(this.identifier.moduleUrl)) ?\r\n this.identifier.name + \"|\" + this.identifier.moduleUrl + \"|\" + this.identifierIsInstance :\r\n null;\r\n }\r\n else {\r\n return this.value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileTokenMetadata.prototype.equalsTo = function (token2) {\r\n var rk = this.runtimeCacheKey;\r\n var ak = this.assetCacheKey;\r\n return (lang_1.isPresent(rk) && rk == token2.runtimeCacheKey) ||\r\n (lang_1.isPresent(ak) && ak == token2.assetCacheKey);\r\n };\r\n Object.defineProperty(CompileTokenMetadata.prototype, \"name\", {\r\n get: function () {\r\n return lang_1.isPresent(this.value) ? util_1.sanitizeIdentifier(this.value) : this.identifier.name;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileTokenMetadata;\r\n}());\r\nexports.CompileTokenMetadata = CompileTokenMetadata;\r\nvar CompileTokenMap = (function () {\r\n function CompileTokenMap() {\r\n this._valueMap = new Map();\r\n this._values = [];\r\n }\r\n CompileTokenMap.prototype.add = function (token, value) {\r\n var existing = this.get(token);\r\n if (lang_1.isPresent(existing)) {\r\n throw new exceptions_1.BaseException(\"Can only add to a TokenMap! Token: \" + token.name);\r\n }\r\n this._values.push(value);\r\n var rk = token.runtimeCacheKey;\r\n if (lang_1.isPresent(rk)) {\r\n this._valueMap.set(rk, value);\r\n }\r\n var ak = token.assetCacheKey;\r\n if (lang_1.isPresent(ak)) {\r\n this._valueMap.set(ak, value);\r\n }\r\n };\r\n CompileTokenMap.prototype.get = function (token) {\r\n var rk = token.runtimeCacheKey;\r\n var ak = token.assetCacheKey;\r\n var result;\r\n if (lang_1.isPresent(rk)) {\r\n result = this._valueMap.get(rk);\r\n }\r\n if (lang_1.isBlank(result) && lang_1.isPresent(ak)) {\r\n result = this._valueMap.get(ak);\r\n }\r\n return result;\r\n };\r\n CompileTokenMap.prototype.values = function () { return this._values; };\r\n Object.defineProperty(CompileTokenMap.prototype, \"size\", {\r\n get: function () { return this._values.length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileTokenMap;\r\n}());\r\nexports.CompileTokenMap = CompileTokenMap;\r\n/**\r\n * Metadata regarding compilation of a type.\r\n */\r\nvar CompileTypeMetadata = (function () {\r\n function CompileTypeMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, isHost = _b.isHost, value = _b.value, diDeps = _b.diDeps;\r\n this.runtime = runtime;\r\n this.name = name;\r\n this.moduleUrl = moduleUrl;\r\n this.prefix = prefix;\r\n this.isHost = lang_1.normalizeBool(isHost);\r\n this.value = value;\r\n this.diDeps = _normalizeArray(diDeps);\r\n }\r\n CompileTypeMetadata.fromJson = function (data) {\r\n return new CompileTypeMetadata({\r\n name: data['name'],\r\n moduleUrl: data['moduleUrl'],\r\n prefix: data['prefix'],\r\n isHost: data['isHost'],\r\n value: data['value'],\r\n diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)\r\n });\r\n };\r\n Object.defineProperty(CompileTypeMetadata.prototype, \"identifier\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CompileTypeMetadata.prototype, \"type\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileTypeMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'class': 'Type',\r\n 'name': this.name,\r\n 'moduleUrl': this.moduleUrl,\r\n 'prefix': this.prefix,\r\n 'isHost': this.isHost,\r\n 'value': this.value,\r\n 'diDeps': _arrayToJson(this.diDeps)\r\n };\r\n };\r\n return CompileTypeMetadata;\r\n}());\r\nexports.CompileTypeMetadata = CompileTypeMetadata;\r\nvar CompileQueryMetadata = (function () {\r\n function CompileQueryMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, selectors = _b.selectors, descendants = _b.descendants, first = _b.first, propertyName = _b.propertyName, read = _b.read;\r\n this.selectors = selectors;\r\n this.descendants = lang_1.normalizeBool(descendants);\r\n this.first = lang_1.normalizeBool(first);\r\n this.propertyName = propertyName;\r\n this.read = read;\r\n }\r\n CompileQueryMetadata.fromJson = function (data) {\r\n return new CompileQueryMetadata({\r\n selectors: _arrayFromJson(data['selectors'], CompileTokenMetadata.fromJson),\r\n descendants: data['descendants'],\r\n first: data['first'],\r\n propertyName: data['propertyName'],\r\n read: _objFromJson(data['read'], CompileTokenMetadata.fromJson)\r\n });\r\n };\r\n CompileQueryMetadata.prototype.toJson = function () {\r\n return {\r\n 'selectors': _arrayToJson(this.selectors),\r\n 'descendants': this.descendants,\r\n 'first': this.first,\r\n 'propertyName': this.propertyName,\r\n 'read': _objToJson(this.read)\r\n };\r\n };\r\n return CompileQueryMetadata;\r\n}());\r\nexports.CompileQueryMetadata = CompileQueryMetadata;\r\n/**\r\n * Metadata regarding compilation of a template.\r\n */\r\nvar CompileTemplateMetadata = (function () {\r\n function CompileTemplateMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, ngContentSelectors = _b.ngContentSelectors;\r\n this.encapsulation = lang_1.isPresent(encapsulation) ? encapsulation : view_1.ViewEncapsulation.Emulated;\r\n this.template = template;\r\n this.templateUrl = templateUrl;\r\n this.styles = lang_1.isPresent(styles) ? styles : [];\r\n this.styleUrls = lang_1.isPresent(styleUrls) ? styleUrls : [];\r\n this.ngContentSelectors = lang_1.isPresent(ngContentSelectors) ? ngContentSelectors : [];\r\n }\r\n CompileTemplateMetadata.fromJson = function (data) {\r\n return new CompileTemplateMetadata({\r\n encapsulation: lang_1.isPresent(data['encapsulation']) ?\r\n view_1.VIEW_ENCAPSULATION_VALUES[data['encapsulation']] :\r\n data['encapsulation'],\r\n template: data['template'],\r\n templateUrl: data['templateUrl'],\r\n styles: data['styles'],\r\n styleUrls: data['styleUrls'],\r\n ngContentSelectors: data['ngContentSelectors']\r\n });\r\n };\r\n CompileTemplateMetadata.prototype.toJson = function () {\r\n return {\r\n 'encapsulation': lang_1.isPresent(this.encapsulation) ? lang_1.serializeEnum(this.encapsulation) : this.encapsulation,\r\n 'template': this.template,\r\n 'templateUrl': this.templateUrl,\r\n 'styles': this.styles,\r\n 'styleUrls': this.styleUrls,\r\n 'ngContentSelectors': this.ngContentSelectors\r\n };\r\n };\r\n return CompileTemplateMetadata;\r\n}());\r\nexports.CompileTemplateMetadata = CompileTemplateMetadata;\r\n/**\r\n * Metadata regarding compilation of a directive.\r\n */\r\nvar CompileDirectiveMetadata = (function () {\r\n function CompileDirectiveMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template;\r\n this.type = type;\r\n this.isComponent = isComponent;\r\n this.selector = selector;\r\n this.exportAs = exportAs;\r\n this.changeDetection = changeDetection;\r\n this.inputs = inputs;\r\n this.outputs = outputs;\r\n this.hostListeners = hostListeners;\r\n this.hostProperties = hostProperties;\r\n this.hostAttributes = hostAttributes;\r\n this.lifecycleHooks = _normalizeArray(lifecycleHooks);\r\n this.providers = _normalizeArray(providers);\r\n this.viewProviders = _normalizeArray(viewProviders);\r\n this.queries = _normalizeArray(queries);\r\n this.viewQueries = _normalizeArray(viewQueries);\r\n this.template = template;\r\n }\r\n CompileDirectiveMetadata.create = function (_a) {\r\n var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template;\r\n var hostListeners = {};\r\n var hostProperties = {};\r\n var hostAttributes = {};\r\n if (lang_1.isPresent(host)) {\r\n collection_1.StringMapWrapper.forEach(host, function (value, key) {\r\n var matches = lang_1.RegExpWrapper.firstMatch(HOST_REG_EXP, key);\r\n if (lang_1.isBlank(matches)) {\r\n hostAttributes[key] = value;\r\n }\r\n else if (lang_1.isPresent(matches[1])) {\r\n hostProperties[matches[1]] = value;\r\n }\r\n else if (lang_1.isPresent(matches[2])) {\r\n hostListeners[matches[2]] = value;\r\n }\r\n });\r\n }\r\n var inputsMap = {};\r\n if (lang_1.isPresent(inputs)) {\r\n inputs.forEach(function (bindConfig) {\r\n // canonical syntax: `dirProp: elProp`\r\n // if there is no `:`, use dirProp = elProp\r\n var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);\r\n inputsMap[parts[0]] = parts[1];\r\n });\r\n }\r\n var outputsMap = {};\r\n if (lang_1.isPresent(outputs)) {\r\n outputs.forEach(function (bindConfig) {\r\n // canonical syntax: `dirProp: elProp`\r\n // if there is no `:`, use dirProp = elProp\r\n var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);\r\n outputsMap[parts[0]] = parts[1];\r\n });\r\n }\r\n return new CompileDirectiveMetadata({\r\n type: type,\r\n isComponent: lang_1.normalizeBool(isComponent),\r\n selector: selector,\r\n exportAs: exportAs,\r\n changeDetection: changeDetection,\r\n inputs: inputsMap,\r\n outputs: outputsMap,\r\n hostListeners: hostListeners,\r\n hostProperties: hostProperties,\r\n hostAttributes: hostAttributes,\r\n lifecycleHooks: lang_1.isPresent(lifecycleHooks) ? lifecycleHooks : [],\r\n providers: providers,\r\n viewProviders: viewProviders,\r\n queries: queries,\r\n viewQueries: viewQueries,\r\n template: template\r\n });\r\n };\r\n Object.defineProperty(CompileDirectiveMetadata.prototype, \"identifier\", {\r\n get: function () { return this.type; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileDirectiveMetadata.fromJson = function (data) {\r\n return new CompileDirectiveMetadata({\r\n isComponent: data['isComponent'],\r\n selector: data['selector'],\r\n exportAs: data['exportAs'],\r\n type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],\r\n changeDetection: lang_1.isPresent(data['changeDetection']) ?\r\n change_detection_1.CHANGE_DETECTION_STRATEGY_VALUES[data['changeDetection']] :\r\n data['changeDetection'],\r\n inputs: data['inputs'],\r\n outputs: data['outputs'],\r\n hostListeners: data['hostListeners'],\r\n hostProperties: data['hostProperties'],\r\n hostAttributes: data['hostAttributes'],\r\n lifecycleHooks: data['lifecycleHooks'].map(function (hookValue) { return lifecycle_hooks_1.LIFECYCLE_HOOKS_VALUES[hookValue]; }),\r\n template: lang_1.isPresent(data['template']) ? CompileTemplateMetadata.fromJson(data['template']) :\r\n data['template'],\r\n providers: _arrayFromJson(data['providers'], metadataFromJson),\r\n viewProviders: _arrayFromJson(data['viewProviders'], metadataFromJson),\r\n queries: _arrayFromJson(data['queries'], CompileQueryMetadata.fromJson),\r\n viewQueries: _arrayFromJson(data['viewQueries'], CompileQueryMetadata.fromJson)\r\n });\r\n };\r\n CompileDirectiveMetadata.prototype.toJson = function () {\r\n return {\r\n 'class': 'Directive',\r\n 'isComponent': this.isComponent,\r\n 'selector': this.selector,\r\n 'exportAs': this.exportAs,\r\n 'type': lang_1.isPresent(this.type) ? this.type.toJson() : this.type,\r\n 'changeDetection': lang_1.isPresent(this.changeDetection) ? lang_1.serializeEnum(this.changeDetection) :\r\n this.changeDetection,\r\n 'inputs': this.inputs,\r\n 'outputs': this.outputs,\r\n 'hostListeners': this.hostListeners,\r\n 'hostProperties': this.hostProperties,\r\n 'hostAttributes': this.hostAttributes,\r\n 'lifecycleHooks': this.lifecycleHooks.map(function (hook) { return lang_1.serializeEnum(hook); }),\r\n 'template': lang_1.isPresent(this.template) ? this.template.toJson() : this.template,\r\n 'providers': _arrayToJson(this.providers),\r\n 'viewProviders': _arrayToJson(this.viewProviders),\r\n 'queries': _arrayToJson(this.queries),\r\n 'viewQueries': _arrayToJson(this.viewQueries)\r\n };\r\n };\r\n return CompileDirectiveMetadata;\r\n}());\r\nexports.CompileDirectiveMetadata = CompileDirectiveMetadata;\r\n/**\r\n * Construct {@link CompileDirectiveMetadata} from {@link ComponentTypeMetadata} and a selector.\r\n */\r\nfunction createHostComponentMeta(componentType, componentSelector) {\r\n var template = selector_1.CssSelector.parse(componentSelector)[0].getMatchingElementTemplate();\r\n return CompileDirectiveMetadata.create({\r\n type: new CompileTypeMetadata({\r\n runtime: Object,\r\n name: componentType.name + \"_Host\",\r\n moduleUrl: componentType.moduleUrl,\r\n isHost: true\r\n }),\r\n template: new CompileTemplateMetadata({ template: template, templateUrl: '', styles: [], styleUrls: [], ngContentSelectors: [] }),\r\n changeDetection: change_detection_1.ChangeDetectionStrategy.Default,\r\n inputs: [],\r\n outputs: [],\r\n host: {},\r\n lifecycleHooks: [],\r\n isComponent: true,\r\n selector: '*',\r\n providers: [],\r\n viewProviders: [],\r\n queries: [],\r\n viewQueries: []\r\n });\r\n}\r\nexports.createHostComponentMeta = createHostComponentMeta;\r\nvar CompilePipeMetadata = (function () {\r\n function CompilePipeMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure, lifecycleHooks = _b.lifecycleHooks;\r\n this.type = type;\r\n this.name = name;\r\n this.pure = lang_1.normalizeBool(pure);\r\n this.lifecycleHooks = _normalizeArray(lifecycleHooks);\r\n }\r\n Object.defineProperty(CompilePipeMetadata.prototype, \"identifier\", {\r\n get: function () { return this.type; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompilePipeMetadata.fromJson = function (data) {\r\n return new CompilePipeMetadata({\r\n type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],\r\n name: data['name'],\r\n pure: data['pure']\r\n });\r\n };\r\n CompilePipeMetadata.prototype.toJson = function () {\r\n return {\r\n 'class': 'Pipe',\r\n 'type': lang_1.isPresent(this.type) ? this.type.toJson() : null,\r\n 'name': this.name,\r\n 'pure': this.pure\r\n };\r\n };\r\n return CompilePipeMetadata;\r\n}());\r\nexports.CompilePipeMetadata = CompilePipeMetadata;\r\nvar _COMPILE_METADATA_FROM_JSON = {\r\n 'Directive': CompileDirectiveMetadata.fromJson,\r\n 'Pipe': CompilePipeMetadata.fromJson,\r\n 'Type': CompileTypeMetadata.fromJson,\r\n 'Provider': CompileProviderMetadata.fromJson,\r\n 'Identifier': CompileIdentifierMetadata.fromJson,\r\n 'Factory': CompileFactoryMetadata.fromJson\r\n};\r\nfunction _arrayFromJson(obj, fn) {\r\n return lang_1.isBlank(obj) ? null : obj.map(function (o) { return _objFromJson(o, fn); });\r\n}\r\nfunction _arrayToJson(obj) {\r\n return lang_1.isBlank(obj) ? null : obj.map(_objToJson);\r\n}\r\nfunction _objFromJson(obj, fn) {\r\n if (lang_1.isArray(obj))\r\n return _arrayFromJson(obj, fn);\r\n if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj))\r\n return obj;\r\n return fn(obj);\r\n}\r\nfunction _objToJson(obj) {\r\n if (lang_1.isArray(obj))\r\n return _arrayToJson(obj);\r\n if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj))\r\n return obj;\r\n return obj.toJson();\r\n}\r\nfunction _normalizeArray(obj) {\r\n return lang_1.isPresent(obj) ? obj : [];\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZV9tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9jb21waWxlX21ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFCQWFPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFDNUUsMkJBS08sZ0NBQWdDLENBQUMsQ0FBQTtBQUN4QyxpQ0FHTyxxREFBcUQsQ0FBQyxDQUFBO0FBQzdELHFCQUEyRCxpQ0FBaUMsQ0FBQyxDQUFBO0FBQzdGLHlCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzNELHFCQUErQyxRQUFRLENBQUMsQ0FBQTtBQUN4RCxnQ0FBcUQsNENBQTRDLENBQUMsQ0FBQTtBQUNsRyw2QkFBMkIsZ0JBQWdCLENBQUMsQ0FBQTtBQUU1Qyx3Q0FBd0M7QUFDeEMsa0NBQWtDO0FBQ2xDLElBQUksWUFBWSxHQUFHLDBDQUEwQyxDQUFDO0FBRTlEO0lBQUE7SUFJQSxDQUFDO0lBREMsc0JBQUkscURBQVU7YUFBZCxjQUE4QyxNQUFNLENBQTRCLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ3BHLG9DQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKcUIscUNBQTZCLGdDQUlsRCxDQUFBO0FBRUQ7SUFBc0QsMkNBQTZCO0lBQW5GO1FBQXNELDhCQUE2QjtJQU1uRixDQUFDO0lBSEMsc0JBQUkseUNBQUk7YUFBUixjQUFrQyxNQUFNLENBQXNCLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBRWhGLHNCQUFJLCtDQUFVO2FBQWQsY0FBOEMsTUFBTSxDQUE0QiwwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUNwRyw4QkFBQztBQUFELENBQUMsQUFORCxDQUFzRCw2QkFBNkIsR0FN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QUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBpc051bWJlcixcbiAgaXNCb29sZWFuLFxuICBub3JtYWxpemVCb29sLFxuICBub3JtYWxpemVCbGFuayxcbiAgc2VyaWFsaXplRW51bSxcbiAgVHlwZSxcbiAgaXNTdHJpbmcsXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIFN0cmluZ1dyYXBwZXIsXG4gIGlzQXJyYXlcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7dW5pbXBsZW1lbnRlZCwgQmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7XG4gIFN0cmluZ01hcFdyYXBwZXIsXG4gIE1hcFdyYXBwZXIsXG4gIFNldFdyYXBwZXIsXG4gIExpc3RXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWV9WQUxVRVNcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb24sIFZJRVdfRU5DQVBTVUxBVElPTl9WQUxVRVN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtDc3NTZWxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NlbGVjdG9yJztcbmltcG9ydCB7c3BsaXRBdENvbG9uLCBzYW5pdGl6ZUlkZW50aWZpZXJ9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge0xpZmVjeWNsZUhvb2tzLCBMSUZFQ1lDTEVfSE9PS1NfVkFMVUVTfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS9saWZlY3ljbGVfaG9va3MnO1xuaW1wb3J0IHtnZXRVcmxTY2hlbWV9IGZyb20gJy4vdXJsX3Jlc29sdmVyJztcblxuLy8gZ3JvdXAgMTogXCJwcm9wZXJ0eVwiIGZyb20gXCJbcHJvcGVydHldXCJcbi8vIGdyb3VwIDI6IFwiZXZlbnRcIiBmcm9tIFwiKGV2ZW50KVwiXG52YXIgSE9TVF9SRUdfRVhQID0gL14oPzooPzpcXFsoW15cXF1dKylcXF0pfCg/OlxcKChbXlxcKV0rKVxcKSkpJC9nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcGlsZU1ldGFkYXRhV2l0aElkZW50aWZpZXIge1xuICBhYnN0cmFjdCB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX07XG5cbiAgZ2V0IGlkZW50aWZpZXIoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiA8Q29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YT51bmltcGxlbWVudGVkKCk7IH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBpbGVNZXRhZGF0YVdpdGhUeXBlIGV4dGVuZHMgQ29tcGlsZU1ldGFkYXRhV2l0aElkZW50aWZpZXIge1xuICBhYnN0cmFjdCB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX07XG5cbiAgZ2V0IHR5cGUoKTogQ29tcGlsZVR5cGVNZXRhZGF0YSB7IHJldHVybiA8Q29tcGlsZVR5cGVNZXRhZGF0YT51bmltcGxlbWVudGVkKCk7IH1cblxuICBnZXQgaWRlbnRpZmllcigpOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHsgcmV0dXJuIDxDb21waWxlSWRlbnRpZmllck1ldGFkYXRhPnVuaW1wbGVtZW50ZWQoKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YWRhdGFGcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IGFueSB7XG4gIHJldHVybiBfQ09NUElMRV9NRVRBREFUQV9GUk9NX0pTT05bZGF0YVsnY2xhc3MnXV0oZGF0YSk7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIGltcGxlbWVudHMgQ29tcGlsZU1ldGFkYXRhV2l0aElkZW50aWZpZXIge1xuICBydW50aW1lOiBhbnk7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4OiBzdHJpbmc7XG4gIG1vZHVsZVVybDogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAge3J1bnRpbWUsIG5hbWUsIG1vZHVsZVVybCwgcHJlZml4LCB2YWx1ZX06XG4gICAgICAgICAge3J1bnRpbWU/OiBhbnksIG5hbWU/OiBzdHJpbmcsIG1vZHVsZVVybD86IHN0cmluZywgcHJlZml4Pzogc3RyaW5nLCB2YWx1ZT86IGFueX0gPSB7fSkge1xuICAgIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICB0aGlzLm1vZHVsZVVybCA9IG1vZHVsZVVybDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHtcbiAgICBsZXQgdmFsdWUgPSBpc0FycmF5KGRhdGFbJ3ZhbHVlJ10pID8gX2FycmF5RnJvbUpzb24oZGF0YVsndmFsdWUnXSwgbWV0YWRhdGFGcm9tSnNvbikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2JqRnJvbUpzb24oZGF0YVsndmFsdWUnXSwgbWV0YWRhdGFGcm9tSnNvbik7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKFxuICAgICAgICB7bmFtZTogZGF0YVsnbmFtZSddLCBwcmVmaXg6IGRhdGFbJ3ByZWZpeCddLCBtb2R1bGVVcmw6IGRhdGFbJ21vZHVsZVVybCddLCB2YWx1ZTogdmFsdWV9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgbGV0IHZhbHVlID0gaXNBcnJheSh0aGlzLnZhbHVlKSA/IF9hcnJheVRvSnNvbih0aGlzLnZhbHVlKSA6IF9vYmpUb0pzb24odGhpcy52YWx1ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIE5vdGU6IFJ1bnRpbWUgdHlwZSBjYW4ndCBiZSBzZXJpYWxpemVkLi4uXG4gICAgICAnY2xhc3MnOiAnSWRlbnRpZmllcicsXG4gICAgICAnbmFtZSc6IHRoaXMubmFtZSxcbiAgICAgICdtb2R1bGVVcmwnOiB0aGlzLm1vZHVsZVVybCxcbiAgICAgICdwcmVmaXgnOiB0aGlzLnByZWZpeCxcbiAgICAgICd2YWx1ZSc6IHZhbHVlXG4gICAgfTtcbiAgfVxuXG4gIGdldCBpZGVudGlmaWVyKCk6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgeyByZXR1cm4gdGhpczsgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhIHtcbiAgaXNBdHRyaWJ1dGU6IGJvb2xlYW47XG4gIGlzU2VsZjogYm9vbGVhbjtcbiAgaXNIb3N0OiBib29sZWFuO1xuICBpc1NraXBTZWxmOiBib29sZWFuO1xuICBpc09wdGlvbmFsOiBib29sZWFuO1xuICBpc1ZhbHVlOiBib29sZWFuO1xuICBxdWVyeTogQ29tcGlsZVF1ZXJ5TWV0YWRhdGE7XG4gIHZpZXdRdWVyeTogQ29tcGlsZVF1ZXJ5TWV0YWRhdGE7XG4gIHRva2VuOiBDb21waWxlVG9rZW5NZXRhZGF0YTtcbiAgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7aXNBdHRyaWJ1dGUsIGlzU2VsZiwgaXNIb3N0LCBpc1NraXBTZWxmLCBpc09wdGlvbmFsLCBpc1ZhbHVlLCBxdWVyeSwgdmlld1F1ZXJ5LFxuICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlfToge1xuICAgIGlzQXR0cmlidXRlPzogYm9vbGVhbixcbiAgICBpc1NlbGY/OiBib29sZWFuLFxuICAgIGlzSG9zdD86IGJvb2xlYW4sXG4gICAgaXNTa2lwU2VsZj86IGJvb2xlYW4sXG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW4sXG4gICAgaXNWYWx1ZT86IGJvb2xlYW4sXG4gICAgcXVlcnk/OiBDb21waWxlUXVlcnlNZXRhZGF0YSxcbiAgICB2aWV3UXVlcnk/OiBDb21waWxlUXVlcnlNZXRhZGF0YSxcbiAgICB0b2tlbj86IENvbXBpbGVUb2tlbk1ldGFkYXRhLFxuICAgIHZhbHVlPzogYW55XG4gIH0gPSB7fSkge1xuICAgIHRoaXMuaXNBdHRyaWJ1dGUgPSBub3JtYWxpemVCb29sKGlzQXR0cmlidXRlKTtcbiAgICB0aGlzLmlzU2VsZiA9IG5vcm1hbGl6ZUJvb2woaXNTZWxmKTtcbiAgICB0aGlzLmlzSG9zdCA9IG5vcm1hbGl6ZUJvb2woaXNIb3N0KTtcbiAgICB0aGlzLmlzU2tpcFNlbGYgPSBub3JtYWxpemVCb29sKGlzU2tpcFNlbGYpO1xuICAgIHRoaXMuaXNPcHRpb25hbCA9IG5vcm1hbGl6ZUJvb2woaXNPcHRpb25hbCk7XG4gICAgdGhpcy5pc1ZhbHVlID0gbm9ybWFsaXplQm9vbChpc1ZhbHVlKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgdGhpcy52aWV3UXVlcnkgPSB2aWV3UXVlcnk7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEoe1xuICAgICAgdG9rZW46IF9vYmpGcm9tSnNvbihkYXRhWyd0b2tlbiddLCBDb21waWxlVG9rZW5NZXRhZGF0YS5mcm9tSnNvbiksXG4gICAgICBxdWVyeTogX29iakZyb21Kc29uKGRhdGFbJ3F1ZXJ5J10sIENvbXBpbGVRdWVyeU1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIHZpZXdRdWVyeTogX29iakZyb21Kc29uKGRhdGFbJ3ZpZXdRdWVyeSddLCBDb21waWxlUXVlcnlNZXRhZGF0YS5mcm9tSnNvbiksXG4gICAgICB2YWx1ZTogZGF0YVsndmFsdWUnXSxcbiAgICAgIGlzQXR0cmlidXRlOiBkYXRhWydpc0F0dHJpYnV0ZSddLFxuICAgICAgaXNTZWxmOiBkYXRhWydpc1NlbGYnXSxcbiAgICAgIGlzSG9zdDogZGF0YVsnaXNIb3N0J10sXG4gICAgICBpc1NraXBTZWxmOiBkYXRhWydpc1NraXBTZWxmJ10sXG4gICAgICBpc09wdGlvbmFsOiBkYXRhWydpc09wdGlvbmFsJ10sXG4gICAgICBpc1ZhbHVlOiBkYXRhWydpc1ZhbHVlJ11cbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICd0b2tlbic6IF9vYmpUb0pzb24odGhpcy50b2tlbiksXG4gICAgICAncXVlcnknOiBfb2JqVG9Kc29uKHRoaXMucXVlcnkpLFxuICAgICAgJ3ZpZXdRdWVyeSc6IF9vYmpUb0pzb24odGhpcy52aWV3UXVlcnkpLFxuICAgICAgJ3ZhbHVlJzogdGhpcy52YWx1ZSxcbiAgICAgICdpc0F0dHJpYnV0ZSc6IHRoaXMuaXNBdHRyaWJ1dGUsXG4gICAgICAnaXNTZWxmJzogdGhpcy5pc1NlbGYsXG4gICAgICAnaXNIb3N0JzogdGhpcy5pc0hvc3QsXG4gICAgICAnaXNTa2lwU2VsZic6IHRoaXMuaXNTa2lwU2VsZixcbiAgICAgICdpc09wdGlvbmFsJzogdGhpcy5pc09wdGlvbmFsLFxuICAgICAgJ2lzVmFsdWUnOiB0aGlzLmlzVmFsdWVcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlUHJvdmlkZXJNZXRhZGF0YSB7XG4gIHRva2VuOiBDb21waWxlVG9rZW5NZXRhZGF0YTtcbiAgdXNlQ2xhc3M6IENvbXBpbGVUeXBlTWV0YWRhdGE7XG4gIHVzZVZhbHVlOiBhbnk7XG4gIHVzZUV4aXN0aW5nOiBDb21waWxlVG9rZW5NZXRhZGF0YTtcbiAgdXNlRmFjdG9yeTogQ29tcGlsZUZhY3RvcnlNZXRhZGF0YTtcbiAgZGVwczogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhW107XG4gIG11bHRpOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHt0b2tlbiwgdXNlQ2xhc3MsIHVzZVZhbHVlLCB1c2VFeGlzdGluZywgdXNlRmFjdG9yeSwgZGVwcywgbXVsdGl9OiB7XG4gICAgdG9rZW4/OiBDb21waWxlVG9rZW5NZXRhZGF0YSxcbiAgICB1c2VDbGFzcz86IENvbXBpbGVUeXBlTWV0YWRhdGEsXG4gICAgdXNlVmFsdWU/OiBhbnksXG4gICAgdXNlRXhpc3Rpbmc/OiBDb21waWxlVG9rZW5NZXRhZGF0YSxcbiAgICB1c2VGYWN0b3J5PzogQ29tcGlsZUZhY3RvcnlNZXRhZGF0YSxcbiAgICBkZXBzPzogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhW10sXG4gICAgbXVsdGk/OiBib29sZWFuXG4gIH0pIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy51c2VDbGFzcyA9IHVzZUNsYXNzO1xuICAgIHRoaXMudXNlVmFsdWUgPSB1c2VWYWx1ZTtcbiAgICB0aGlzLnVzZUV4aXN0aW5nID0gdXNlRXhpc3Rpbmc7XG4gICAgdGhpcy51c2VGYWN0b3J5ID0gdXNlRmFjdG9yeTtcbiAgICB0aGlzLmRlcHMgPSBub3JtYWxpemVCbGFuayhkZXBzKTtcbiAgICB0aGlzLm11bHRpID0gbm9ybWFsaXplQm9vbChtdWx0aSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlUHJvdmlkZXJNZXRhZGF0YSh7XG4gICAgICB0b2tlbjogX29iakZyb21Kc29uKGRhdGFbJ3Rva2VuJ10sIENvbXBpbGVUb2tlbk1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIHVzZUNsYXNzOiBfb2JqRnJvbUpzb24oZGF0YVsndXNlQ2xhc3MnXSwgQ29tcGlsZVR5cGVNZXRhZGF0YS5mcm9tSnNvbiksXG4gICAgICB1c2VFeGlzdGluZzogX29iakZyb21Kc29uKGRhdGFbJ3VzZUV4aXN0aW5nJ10sIENvbXBpbGVUb2tlbk1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIHVzZVZhbHVlOiBfb2JqRnJvbUpzb24oZGF0YVsndXNlVmFsdWUnXSwgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YS5mcm9tSnNvbiksXG4gICAgICB1c2VGYWN0b3J5OiBfb2JqRnJvbUpzb24oZGF0YVsndXNlRmFjdG9yeSddLCBDb21waWxlRmFjdG9yeU1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIG11bHRpOiBkYXRhWydtdWx0aSddLFxuICAgICAgZGVwczogX2FycmF5RnJvbUpzb24oZGF0YVsnZGVwcyddLCBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEuZnJvbUpzb24pXG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBOb3RlOiBSdW50aW1lIHR5cGUgY2FuJ3QgYmUgc2VyaWFsaXplZC4uLlxuICAgICAgJ2NsYXNzJzogJ1Byb3ZpZGVyJyxcbiAgICAgICd0b2tlbic6IF9vYmpUb0pzb24odGhpcy50b2tlbiksXG4gICAgICAndXNlQ2xhc3MnOiBfb2JqVG9Kc29uKHRoaXMudXNlQ2xhc3MpLFxuICAgICAgJ3VzZUV4aXN0aW5nJzogX29ialRvSnNvbih0aGlzLnVzZUV4aXN0aW5nKSxcbiAgICAgICd1c2VWYWx1ZSc6IF9vYmpUb0pzb24odGhpcy51c2VWYWx1ZSksXG4gICAgICAndXNlRmFjdG9yeSc6IF9vYmpUb0pzb24odGhpcy51c2VGYWN0b3J5KSxcbiAgICAgICdtdWx0aSc6IHRoaXMubXVsdGksXG4gICAgICAnZGVwcyc6IF9hcnJheVRvSnNvbih0aGlzLmRlcHMpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUZhY3RvcnlNZXRhZGF0YSBpbXBsZW1lbnRzIENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEsXG4gICAgQ29tcGlsZU1ldGFkYXRhV2l0aElkZW50aWZpZXIge1xuICBydW50aW1lOiBGdW5jdGlvbjtcbiAgbmFtZTogc3RyaW5nO1xuICBwcmVmaXg6IHN0cmluZztcbiAgbW9kdWxlVXJsOiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG4gIGRpRGVwczogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhW107XG5cbiAgY29uc3RydWN0b3Ioe3J1bnRpbWUsIG5hbWUsIG1vZHVsZVVybCwgcHJlZml4LCBkaURlcHMsIHZhbHVlfToge1xuICAgIHJ1bnRpbWU/OiBGdW5jdGlvbixcbiAgICBuYW1lPzogc3RyaW5nLFxuICAgIHByZWZpeD86IHN0cmluZyxcbiAgICBtb2R1bGVVcmw/OiBzdHJpbmcsXG4gICAgdmFsdWU/OiBib29sZWFuLFxuICAgIGRpRGVwcz86IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YVtdXG4gIH0pIHtcbiAgICB0aGlzLnJ1bnRpbWUgPSBydW50aW1lO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgdGhpcy5tb2R1bGVVcmwgPSBtb2R1bGVVcmw7XG4gICAgdGhpcy5kaURlcHMgPSBfbm9ybWFsaXplQXJyYXkoZGlEZXBzKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaWRlbnRpZmllcigpOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHsgcmV0dXJuIHRoaXM7IH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlRmFjdG9yeU1ldGFkYXRhIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVGYWN0b3J5TWV0YWRhdGEoe1xuICAgICAgbmFtZTogZGF0YVsnbmFtZSddLFxuICAgICAgcHJlZml4OiBkYXRhWydwcmVmaXgnXSxcbiAgICAgIG1vZHVsZVVybDogZGF0YVsnbW9kdWxlVXJsJ10sXG4gICAgICB2YWx1ZTogZGF0YVsndmFsdWUnXSxcbiAgICAgIGRpRGVwczogX2FycmF5RnJvbUpzb24oZGF0YVsnZGlEZXBzJ10sIENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YS5mcm9tSnNvbilcbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjbGFzcyc6ICdGYWN0b3J5JyxcbiAgICAgICduYW1lJzogdGhpcy5uYW1lLFxuICAgICAgJ3ByZWZpeCc6IHRoaXMucHJlZml4LFxuICAgICAgJ21vZHVsZVVybCc6IHRoaXMubW9kdWxlVXJsLFxuICAgICAgJ3ZhbHVlJzogdGhpcy52YWx1ZSxcbiAgICAgICdkaURlcHMnOiBfYXJyYXlUb0pzb24odGhpcy5kaURlcHMpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVRva2VuTWV0YWRhdGEgaW1wbGVtZW50cyBDb21waWxlTWV0YWRhdGFXaXRoSWRlbnRpZmllciB7XG4gIHZhbHVlOiBhbnk7XG4gIGlkZW50aWZpZXI6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGE7XG4gIGlkZW50aWZpZXJJc0luc3RhbmNlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHt2YWx1ZSwgaWRlbnRpZmllciwgaWRlbnRpZmllcklzSW5zdGFuY2V9OiB7XG4gICAgdmFsdWU/OiBhbnksXG4gICAgaWRlbnRpZmllcj86IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEsXG4gICAgaWRlbnRpZmllcklzSW5zdGFuY2U/OiBib29sZWFuXG4gIH0pIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLmlkZW50aWZpZXJJc0luc3RhbmNlID0gbm9ybWFsaXplQm9vbChpZGVudGlmaWVySXNJbnN0YW5jZSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlVG9rZW5NZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlVG9rZW5NZXRhZGF0YSh7XG4gICAgICB2YWx1ZTogZGF0YVsndmFsdWUnXSxcbiAgICAgIGlkZW50aWZpZXI6IF9vYmpGcm9tSnNvbihkYXRhWydpZGVudGlmaWVyJ10sIENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEuZnJvbUpzb24pLFxuICAgICAgaWRlbnRpZmllcklzSW5zdGFuY2U6IGRhdGFbJ2lkZW50aWZpZXJJc0luc3RhbmNlJ11cbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICd2YWx1ZSc6IHRoaXMudmFsdWUsXG4gICAgICAnaWRlbnRpZmllcic6IF9vYmpUb0pzb24odGhpcy5pZGVudGlmaWVyKSxcbiAgICAgICdpZGVudGlmaWVySXNJbnN0YW5jZSc6IHRoaXMuaWRlbnRpZmllcklzSW5zdGFuY2VcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHJ1bnRpbWVDYWNoZUtleSgpOiBhbnkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5pZGVudGlmaWVyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaWRlbnRpZmllci5ydW50aW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXNzZXRDYWNoZUtleSgpOiBhbnkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5pZGVudGlmaWVyKSkge1xuICAgICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmlkZW50aWZpZXIubW9kdWxlVXJsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgaXNQcmVzZW50KGdldFVybFNjaGVtZSh0aGlzLmlkZW50aWZpZXIubW9kdWxlVXJsKSkgP1xuICAgICAgICAgICAgICAgICBgJHt0aGlzLmlkZW50aWZpZXIubmFtZX18JHt0aGlzLmlkZW50aWZpZXIubW9kdWxlVXJsfXwke3RoaXMuaWRlbnRpZmllcklzSW5zdGFuY2V9YCA6XG4gICAgICAgICAgICAgICAgIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGVxdWFsc1RvKHRva2VuMjogQ29tcGlsZVRva2VuTWV0YWRhdGEpOiBib29sZWFuIHtcbiAgICB2YXIgcmsgPSB0aGlzLnJ1bnRpbWVDYWNoZUtleTtcbiAgICB2YXIgYWsgPSB0aGlzLmFzc2V0Q2FjaGVLZXk7XG4gICAgcmV0dXJuIChpc1ByZXNlbnQocmspICYmIHJrID09IHRva2VuMi5ydW50aW1lQ2FjaGVLZXkpIHx8XG4gICAgICAgICAgIChpc1ByZXNlbnQoYWspICYmIGFrID09IHRva2VuMi5hc3NldENhY2hlS2V5KTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLnZhbHVlKSA/IHNhbml0aXplSWRlbnRpZmllcih0aGlzLnZhbHVlKSA6IHRoaXMuaWRlbnRpZmllci5uYW1lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlVG9rZW5NYXA8VkFMVUU+IHtcbiAgcHJpdmF0ZSBfdmFsdWVNYXAgPSBuZXcgTWFwPGFueSwgVkFMVUU+KCk7XG4gIHByaXZhdGUgX3ZhbHVlczogVkFMVUVbXSA9IFtdO1xuXG4gIGFkZCh0b2tlbjogQ29tcGlsZVRva2VuTWV0YWRhdGEsIHZhbHVlOiBWQUxVRSkge1xuICAgIHZhciBleGlzdGluZyA9IHRoaXMuZ2V0KHRva2VuKTtcbiAgICBpZiAoaXNQcmVzZW50KGV4aXN0aW5nKSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENhbiBvbmx5IGFkZCB0byBhIFRva2VuTWFwISBUb2tlbjogJHt0b2tlbi5uYW1lfWApO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgdmFyIHJrID0gdG9rZW4ucnVudGltZUNhY2hlS2V5O1xuICAgIGlmIChpc1ByZXNlbnQocmspKSB7XG4gICAgICB0aGlzLl92YWx1ZU1hcC5zZXQocmssIHZhbHVlKTtcbiAgICB9XG4gICAgdmFyIGFrID0gdG9rZW4uYXNzZXRDYWNoZUtleTtcbiAgICBpZiAoaXNQcmVzZW50KGFrKSkge1xuICAgICAgdGhpcy5fdmFsdWVNYXAuc2V0KGFrLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGdldCh0b2tlbjogQ29tcGlsZVRva2VuTWV0YWRhdGEpOiBWQUxVRSB7XG4gICAgdmFyIHJrID0gdG9rZW4ucnVudGltZUNhY2hlS2V5O1xuICAgIHZhciBhayA9IHRva2VuLmFzc2V0Q2FjaGVLZXk7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAoaXNQcmVzZW50KHJrKSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fdmFsdWVNYXAuZ2V0KHJrKTtcbiAgICB9XG4gICAgaWYgKGlzQmxhbmsocmVzdWx0KSAmJiBpc1ByZXNlbnQoYWspKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl92YWx1ZU1hcC5nZXQoYWspO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhbHVlcygpOiBWQUxVRVtdIHsgcmV0dXJuIHRoaXMuX3ZhbHVlczsgfVxuICBnZXQgc2l6ZSgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fdmFsdWVzLmxlbmd0aDsgfVxufVxuXG4vKipcbiAqIE1ldGFkYXRhIHJlZ2FyZGluZyBjb21waWxhdGlvbiBvZiBhIHR5cGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21waWxlVHlwZU1ldGFkYXRhIGltcGxlbWVudHMgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSwgQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUge1xuICBydW50aW1lOiBUeXBlO1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xuICBtb2R1bGVVcmw6IHN0cmluZztcbiAgaXNIb3N0OiBib29sZWFuO1xuICB2YWx1ZTogYW55O1xuICBkaURlcHM6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YVtdO1xuXG4gIGNvbnN0cnVjdG9yKHtydW50aW1lLCBuYW1lLCBtb2R1bGVVcmwsIHByZWZpeCwgaXNIb3N0LCB2YWx1ZSwgZGlEZXBzfToge1xuICAgIHJ1bnRpbWU/OiBUeXBlLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgbW9kdWxlVXJsPzogc3RyaW5nLFxuICAgIHByZWZpeD86IHN0cmluZyxcbiAgICBpc0hvc3Q/OiBib29sZWFuLFxuICAgIHZhbHVlPzogYW55LFxuICAgIGRpRGVwcz86IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YVtdXG4gIH0gPSB7fSkge1xuICAgIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1vZHVsZVVybCA9IG1vZHVsZVVybDtcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICB0aGlzLmlzSG9zdCA9IG5vcm1hbGl6ZUJvb2woaXNIb3N0KTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5kaURlcHMgPSBfbm9ybWFsaXplQXJyYXkoZGlEZXBzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVUeXBlTWV0YWRhdGEge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZVR5cGVNZXRhZGF0YSh7XG4gICAgICBuYW1lOiBkYXRhWyduYW1lJ10sXG4gICAgICBtb2R1bGVVcmw6IGRhdGFbJ21vZHVsZVVybCddLFxuICAgICAgcHJlZml4OiBkYXRhWydwcmVmaXgnXSxcbiAgICAgIGlzSG9zdDogZGF0YVsnaXNIb3N0J10sXG4gICAgICB2YWx1ZTogZGF0YVsndmFsdWUnXSxcbiAgICAgIGRpRGVwczogX2FycmF5RnJvbUpzb24oZGF0YVsnZGlEZXBzJ10sIENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YS5mcm9tSnNvbilcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpZGVudGlmaWVyKCk6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgeyByZXR1cm4gdGhpczsgfVxuICBnZXQgdHlwZSgpOiBDb21waWxlVHlwZU1ldGFkYXRhIHsgcmV0dXJuIHRoaXM7IH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBOb3RlOiBSdW50aW1lIHR5cGUgY2FuJ3QgYmUgc2VyaWFsaXplZC4uLlxuICAgICAgJ2NsYXNzJzogJ1R5cGUnLFxuICAgICAgJ25hbWUnOiB0aGlzLm5hbWUsXG4gICAgICAnbW9kdWxlVXJsJzogdGhpcy5tb2R1bGVVcmwsXG4gICAgICAncHJlZml4JzogdGhpcy5wcmVmaXgsXG4gICAgICAnaXNIb3N0JzogdGhpcy5pc0hvc3QsXG4gICAgICAndmFsdWUnOiB0aGlzLnZhbHVlLFxuICAgICAgJ2RpRGVwcyc6IF9hcnJheVRvSnNvbih0aGlzLmRpRGVwcylcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlUXVlcnlNZXRhZGF0YSB7XG4gIHNlbGVjdG9yczogQXJyYXk8Q29tcGlsZVRva2VuTWV0YWRhdGE+O1xuICBkZXNjZW5kYW50czogYm9vbGVhbjtcbiAgZmlyc3Q6IGJvb2xlYW47XG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuICByZWFkOiBDb21waWxlVG9rZW5NZXRhZGF0YTtcblxuICBjb25zdHJ1Y3Rvcih7c2VsZWN0b3JzLCBkZXNjZW5kYW50cywgZmlyc3QsIHByb3BlcnR5TmFtZSwgcmVhZH06IHtcbiAgICBzZWxlY3RvcnM/OiBBcnJheTxDb21waWxlVG9rZW5NZXRhZGF0YT4sXG4gICAgZGVzY2VuZGFudHM/OiBib29sZWFuLFxuICAgIGZpcnN0PzogYm9vbGVhbixcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgcmVhZD86IENvbXBpbGVUb2tlbk1ldGFkYXRhXG4gIH0gPSB7fSkge1xuICAgIHRoaXMuc2VsZWN0b3JzID0gc2VsZWN0b3JzO1xuICAgIHRoaXMuZGVzY2VuZGFudHMgPSBub3JtYWxpemVCb29sKGRlc2NlbmRhbnRzKTtcbiAgICB0aGlzLmZpcnN0ID0gbm9ybWFsaXplQm9vbChmaXJzdCk7XG4gICAgdGhpcy5wcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7XG4gICAgdGhpcy5yZWFkID0gcmVhZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVRdWVyeU1ldGFkYXRhIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVRdWVyeU1ldGFkYXRhKHtcbiAgICAgIHNlbGVjdG9yczogX2FycmF5RnJvbUpzb24oZGF0YVsnc2VsZWN0b3JzJ10sIENvbXBpbGVUb2tlbk1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIGRlc2NlbmRhbnRzOiBkYXRhWydkZXNjZW5kYW50cyddLFxuICAgICAgZmlyc3Q6IGRhdGFbJ2ZpcnN0J10sXG4gICAgICBwcm9wZXJ0eU5hbWU6IGRhdGFbJ3Byb3BlcnR5TmFtZSddLFxuICAgICAgcmVhZDogX29iakZyb21Kc29uKGRhdGFbJ3JlYWQnXSwgQ29tcGlsZVRva2VuTWV0YWRhdGEuZnJvbUpzb24pXG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAnc2VsZWN0b3JzJzogX2FycmF5VG9Kc29uKHRoaXMuc2VsZWN0b3JzKSxcbiAgICAgICdkZXNjZW5kYW50cyc6IHRoaXMuZGVzY2VuZGFudHMsXG4gICAgICAnZmlyc3QnOiB0aGlzLmZpcnN0LFxuICAgICAgJ3Byb3BlcnR5TmFtZSc6IHRoaXMucHJvcGVydHlOYW1lLFxuICAgICAgJ3JlYWQnOiBfb2JqVG9Kc29uKHRoaXMucmVhZClcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogTWV0YWRhdGEgcmVnYXJkaW5nIGNvbXBpbGF0aW9uIG9mIGEgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSB7XG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICB0ZW1wbGF0ZVVybDogc3RyaW5nO1xuICBzdHlsZXM6IHN0cmluZ1tdO1xuICBzdHlsZVVybHM6IHN0cmluZ1tdO1xuICBuZ0NvbnRlbnRTZWxlY3RvcnM6IHN0cmluZ1tdO1xuICBjb25zdHJ1Y3Rvcih7ZW5jYXBzdWxhdGlvbiwgdGVtcGxhdGUsIHRlbXBsYXRlVXJsLCBzdHlsZXMsIHN0eWxlVXJscywgbmdDb250ZW50U2VsZWN0b3JzfToge1xuICAgIGVuY2Fwc3VsYXRpb24/OiBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICB0ZW1wbGF0ZT86IHN0cmluZyxcbiAgICB0ZW1wbGF0ZVVybD86IHN0cmluZyxcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgICBuZ0NvbnRlbnRTZWxlY3RvcnM/OiBzdHJpbmdbXVxuICB9ID0ge30pIHtcbiAgICB0aGlzLmVuY2Fwc3VsYXRpb24gPSBpc1ByZXNlbnQoZW5jYXBzdWxhdGlvbikgPyBlbmNhcHN1bGF0aW9uIDogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQ7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSB0ZW1wbGF0ZVVybDtcbiAgICB0aGlzLnN0eWxlcyA9IGlzUHJlc2VudChzdHlsZXMpID8gc3R5bGVzIDogW107XG4gICAgdGhpcy5zdHlsZVVybHMgPSBpc1ByZXNlbnQoc3R5bGVVcmxzKSA/IHN0eWxlVXJscyA6IFtdO1xuICAgIHRoaXMubmdDb250ZW50U2VsZWN0b3JzID0gaXNQcmVzZW50KG5nQ29udGVudFNlbGVjdG9ycykgPyBuZ0NvbnRlbnRTZWxlY3RvcnMgOiBbXTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhKHtcbiAgICAgIGVuY2Fwc3VsYXRpb246IGlzUHJlc2VudChkYXRhWydlbmNhcHN1bGF0aW9uJ10pID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBWSUVXX0VOQ0FQU1VMQVRJT05fVkFMVUVTW2RhdGFbJ2VuY2Fwc3VsYXRpb24nXV0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2VuY2Fwc3VsYXRpb24nXSxcbiAgICAgIHRlbXBsYXRlOiBkYXRhWyd0ZW1wbGF0ZSddLFxuICAgICAgdGVtcGxhdGVVcmw6IGRhdGFbJ3RlbXBsYXRlVXJsJ10sXG4gICAgICBzdHlsZXM6IGRhdGFbJ3N0eWxlcyddLFxuICAgICAgc3R5bGVVcmxzOiBkYXRhWydzdHlsZVVybHMnXSxcbiAgICAgIG5nQ29udGVudFNlbGVjdG9yczogZGF0YVsnbmdDb250ZW50U2VsZWN0b3JzJ11cbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdlbmNhcHN1bGF0aW9uJzpcbiAgICAgICAgICBpc1ByZXNlbnQodGhpcy5lbmNhcHN1bGF0aW9uKSA/IHNlcmlhbGl6ZUVudW0odGhpcy5lbmNhcHN1bGF0aW9uKSA6IHRoaXMuZW5jYXBzdWxhdGlvbixcbiAgICAgICd0ZW1wbGF0ZSc6IHRoaXMudGVtcGxhdGUsXG4gICAgICAndGVtcGxhdGVVcmwnOiB0aGlzLnRlbXBsYXRlVXJsLFxuICAgICAgJ3N0eWxlcyc6IHRoaXMuc3R5bGVzLFxuICAgICAgJ3N0eWxlVXJscyc6IHRoaXMuc3R5bGVVcmxzLFxuICAgICAgJ25nQ29udGVudFNlbGVjdG9ycyc6IHRoaXMubmdDb250ZW50U2VsZWN0b3JzXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE1ldGFkYXRhIHJlZ2FyZGluZyBjb21waWxhdGlvbiBvZiBhIGRpcmVjdGl2ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSBpbXBsZW1lbnRzIENvbXBpbGVNZXRhZGF0YVdpdGhUeXBlIHtcbiAgc3RhdGljIGNyZWF0ZSh7dHlwZSwgaXNDb21wb25lbnQsIHNlbGVjdG9yLCBleHBvcnRBcywgY2hhbmdlRGV0ZWN0aW9uLCBpbnB1dHMsIG91dHB1dHMsIGhvc3QsXG4gICAgICAgICAgICAgICAgIGxpZmVjeWNsZUhvb2tzLCBwcm92aWRlcnMsIHZpZXdQcm92aWRlcnMsIHF1ZXJpZXMsIHZpZXdRdWVyaWVzLCB0ZW1wbGF0ZX06IHtcbiAgICB0eXBlPzogQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgICBpc0NvbXBvbmVudD86IGJvb2xlYW4sXG4gICAgc2VsZWN0b3I/OiBzdHJpbmcsXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uPzogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgaW5wdXRzPzogc3RyaW5nW10sXG4gICAgb3V0cHV0cz86IHN0cmluZ1tdLFxuICAgIGhvc3Q/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBsaWZlY3ljbGVIb29rcz86IExpZmVjeWNsZUhvb2tzW10sXG4gICAgcHJvdmlkZXJzPzpcbiAgICAgICAgQXJyYXk8Q29tcGlsZVByb3ZpZGVyTWV0YWRhdGEgfCBDb21waWxlVHlwZU1ldGFkYXRhIHwgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB8IGFueVtdPixcbiAgICB2aWV3UHJvdmlkZXJzPzpcbiAgICAgICAgQXJyYXk8Q29tcGlsZVByb3ZpZGVyTWV0YWRhdGEgfCBDb21waWxlVHlwZU1ldGFkYXRhIHwgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB8IGFueVtdPixcbiAgICBxdWVyaWVzPzogQ29tcGlsZVF1ZXJ5TWV0YWRhdGFbXSxcbiAgICB2aWV3UXVlcmllcz86IENvbXBpbGVRdWVyeU1ldGFkYXRhW10sXG4gICAgdGVtcGxhdGU/OiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YVxuICB9ID0ge30pOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICAgIHZhciBob3N0TGlzdGVuZXJzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICAgIHZhciBob3N0UHJvcGVydGllczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICB2YXIgaG9zdEF0dHJpYnV0ZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG4gICAgaWYgKGlzUHJlc2VudChob3N0KSkge1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKGhvc3QsICh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChIT1NUX1JFR19FWFAsIGtleSk7XG4gICAgICAgIGlmIChpc0JsYW5rKG1hdGNoZXMpKSB7XG4gICAgICAgICAgaG9zdEF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChtYXRjaGVzWzFdKSkge1xuICAgICAgICAgIGhvc3RQcm9wZXJ0aWVzW21hdGNoZXNbMV1dID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KG1hdGNoZXNbMl0pKSB7XG4gICAgICAgICAgaG9zdExpc3RlbmVyc1ttYXRjaGVzWzJdXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdmFyIGlucHV0c01hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICBpZiAoaXNQcmVzZW50KGlucHV0cykpIHtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChiaW5kQ29uZmlnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gY2Fub25pY2FsIHN5bnRheDogYGRpclByb3A6IGVsUHJvcGBcbiAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gYDpgLCB1c2UgZGlyUHJvcCA9IGVsUHJvcFxuICAgICAgICB2YXIgcGFydHMgPSBzcGxpdEF0Q29sb24oYmluZENvbmZpZywgW2JpbmRDb25maWcsIGJpbmRDb25maWddKTtcbiAgICAgICAgaW5wdXRzTWFwW3BhcnRzWzBdXSA9IHBhcnRzWzFdO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciBvdXRwdXRzTWFwOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICAgIGlmIChpc1ByZXNlbnQob3V0cHV0cykpIHtcbiAgICAgIG91dHB1dHMuZm9yRWFjaCgoYmluZENvbmZpZzogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIGNhbm9uaWNhbCBzeW50YXg6IGBkaXJQcm9wOiBlbFByb3BgXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGA6YCwgdXNlIGRpclByb3AgPSBlbFByb3BcbiAgICAgICAgdmFyIHBhcnRzID0gc3BsaXRBdENvbG9uKGJpbmRDb25maWcsIFtiaW5kQ29uZmlnLCBiaW5kQ29uZmlnXSk7XG4gICAgICAgIG91dHB1dHNNYXBbcGFydHNbMF1dID0gcGFydHNbMV07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSh7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgaXNDb21wb25lbnQ6IG5vcm1hbGl6ZUJvb2woaXNDb21wb25lbnQpLFxuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgICAgZXhwb3J0QXM6IGV4cG9ydEFzLFxuICAgICAgY2hhbmdlRGV0ZWN0aW9uOiBjaGFuZ2VEZXRlY3Rpb24sXG4gICAgICBpbnB1dHM6IGlucHV0c01hcCxcbiAgICAgIG91dHB1dHM6IG91dHB1dHNNYXAsXG4gICAgICBob3N0TGlzdGVuZXJzOiBob3N0TGlzdGVuZXJzLFxuICAgICAgaG9zdFByb3BlcnRpZXM6IGhvc3RQcm9wZXJ0aWVzLFxuICAgICAgaG9zdEF0dHJpYnV0ZXM6IGhvc3RBdHRyaWJ1dGVzLFxuICAgICAgbGlmZWN5Y2xlSG9va3M6IGlzUHJlc2VudChsaWZlY3ljbGVIb29rcykgPyBsaWZlY3ljbGVIb29rcyA6IFtdLFxuICAgICAgcHJvdmlkZXJzOiBwcm92aWRlcnMsXG4gICAgICB2aWV3UHJvdmlkZXJzOiB2aWV3UHJvdmlkZXJzLFxuICAgICAgcXVlcmllczogcXVlcmllcyxcbiAgICAgIHZpZXdRdWVyaWVzOiB2aWV3UXVlcmllcyxcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZVxuICAgIH0pO1xuICB9XG4gIHR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGE7XG4gIGlzQ29tcG9uZW50OiBib29sZWFuO1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuICBleHBvcnRBczogc3RyaW5nO1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5O1xuICBpbnB1dHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICBvdXRwdXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgaG9zdExpc3RlbmVyczoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gIGhvc3RQcm9wZXJ0aWVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgaG9zdEF0dHJpYnV0ZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICBsaWZlY3ljbGVIb29rczogTGlmZWN5Y2xlSG9va3NbXTtcbiAgcHJvdmlkZXJzOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YVtdO1xuICB2aWV3UHJvdmlkZXJzOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YVtdO1xuICBxdWVyaWVzOiBDb21waWxlUXVlcnlNZXRhZGF0YVtdO1xuICB2aWV3UXVlcmllczogQ29tcGlsZVF1ZXJ5TWV0YWRhdGFbXTtcblxuICB0ZW1wbGF0ZTogQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGE7XG4gIGNvbnN0cnVjdG9yKHt0eXBlLCBpc0NvbXBvbmVudCwgc2VsZWN0b3IsIGV4cG9ydEFzLCBjaGFuZ2VEZXRlY3Rpb24sIGlucHV0cywgb3V0cHV0cyxcbiAgICAgICAgICAgICAgIGhvc3RMaXN0ZW5lcnMsIGhvc3RQcm9wZXJ0aWVzLCBob3N0QXR0cmlidXRlcywgbGlmZWN5Y2xlSG9va3MsIHByb3ZpZGVycyxcbiAgICAgICAgICAgICAgIHZpZXdQcm92aWRlcnMsIHF1ZXJpZXMsIHZpZXdRdWVyaWVzLCB0ZW1wbGF0ZX06IHtcbiAgICB0eXBlPzogQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgICBpc0NvbXBvbmVudD86IGJvb2xlYW4sXG4gICAgc2VsZWN0b3I/OiBzdHJpbmcsXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uPzogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgaW5wdXRzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgb3V0cHV0cz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIGhvc3RMaXN0ZW5lcnM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBob3N0UHJvcGVydGllcz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIGhvc3RBdHRyaWJ1dGVzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgbGlmZWN5Y2xlSG9va3M/OiBMaWZlY3ljbGVIb29rc1tdLFxuICAgIHByb3ZpZGVycz86XG4gICAgICAgIEFycmF5PENvbXBpbGVQcm92aWRlck1ldGFkYXRhIHwgQ29tcGlsZVR5cGVNZXRhZGF0YSB8IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgfCBhbnlbXT4sXG4gICAgdmlld1Byb3ZpZGVycz86XG4gICAgICAgIEFycmF5PENvbXBpbGVQcm92aWRlck1ldGFkYXRhIHwgQ29tcGlsZVR5cGVNZXRhZGF0YSB8IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgfCBhbnlbXT4sXG4gICAgcXVlcmllcz86IENvbXBpbGVRdWVyeU1ldGFkYXRhW10sXG4gICAgdmlld1F1ZXJpZXM/OiBDb21waWxlUXVlcnlNZXRhZGF0YVtdLFxuICAgIHRlbXBsYXRlPzogQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGFcbiAgfSA9IHt9KSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmlzQ29tcG9uZW50ID0gaXNDb21wb25lbnQ7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMuZXhwb3J0QXMgPSBleHBvcnRBcztcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbiA9IGNoYW5nZURldGVjdGlvbjtcbiAgICB0aGlzLmlucHV0cyA9IGlucHV0cztcbiAgICB0aGlzLm91dHB1dHMgPSBvdXRwdXRzO1xuICAgIHRoaXMuaG9zdExpc3RlbmVycyA9IGhvc3RMaXN0ZW5lcnM7XG4gICAgdGhpcy5ob3N0UHJvcGVydGllcyA9IGhvc3RQcm9wZXJ0aWVzO1xuICAgIHRoaXMuaG9zdEF0dHJpYnV0ZXMgPSBob3N0QXR0cmlidXRlcztcbiAgICB0aGlzLmxpZmVjeWNsZUhvb2tzID0gX25vcm1hbGl6ZUFycmF5KGxpZmVjeWNsZUhvb2tzKTtcbiAgICB0aGlzLnByb3ZpZGVycyA9IF9ub3JtYWxpemVBcnJheShwcm92aWRlcnMpO1xuICAgIHRoaXMudmlld1Byb3ZpZGVycyA9IF9ub3JtYWxpemVBcnJheSh2aWV3UHJvdmlkZXJzKTtcbiAgICB0aGlzLnF1ZXJpZXMgPSBfbm9ybWFsaXplQXJyYXkocXVlcmllcyk7XG4gICAgdGhpcy52aWV3UXVlcmllcyA9IF9ub3JtYWxpemVBcnJheSh2aWV3UXVlcmllcyk7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGlkZW50aWZpZXIoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB0aGlzLnR5cGU7IH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKHtcbiAgICAgIGlzQ29tcG9uZW50OiBkYXRhWydpc0NvbXBvbmVudCddLFxuICAgICAgc2VsZWN0b3I6IGRhdGFbJ3NlbGVjdG9yJ10sXG4gICAgICBleHBvcnRBczogZGF0YVsnZXhwb3J0QXMnXSxcbiAgICAgIHR5cGU6IGlzUHJlc2VudChkYXRhWyd0eXBlJ10pID8gQ29tcGlsZVR5cGVNZXRhZGF0YS5mcm9tSnNvbihkYXRhWyd0eXBlJ10pIDogZGF0YVsndHlwZSddLFxuICAgICAgY2hhbmdlRGV0ZWN0aW9uOiBpc1ByZXNlbnQoZGF0YVsnY2hhbmdlRGV0ZWN0aW9uJ10pID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1lfVkFMVUVTW2RhdGFbJ2NoYW5nZURldGVjdGlvbiddXSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjaGFuZ2VEZXRlY3Rpb24nXSxcbiAgICAgIGlucHV0czogZGF0YVsnaW5wdXRzJ10sXG4gICAgICBvdXRwdXRzOiBkYXRhWydvdXRwdXRzJ10sXG4gICAgICBob3N0TGlzdGVuZXJzOiBkYXRhWydob3N0TGlzdGVuZXJzJ10sXG4gICAgICBob3N0UHJvcGVydGllczogZGF0YVsnaG9zdFByb3BlcnRpZXMnXSxcbiAgICAgIGhvc3RBdHRyaWJ1dGVzOiBkYXRhWydob3N0QXR0cmlidXRlcyddLFxuICAgICAgbGlmZWN5Y2xlSG9va3M6XG4gICAgICAgICAgKDxhbnlbXT5kYXRhWydsaWZlY3ljbGVIb29rcyddKS5tYXAoaG9va1ZhbHVlID0+IExJRkVDWUNMRV9IT09LU19WQUxVRVNbaG9va1ZhbHVlXSksXG4gICAgICB0ZW1wbGF0ZTogaXNQcmVzZW50KGRhdGFbJ3RlbXBsYXRlJ10pID8gQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEuZnJvbUpzb24oZGF0YVsndGVtcGxhdGUnXSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3RlbXBsYXRlJ10sXG4gICAgICBwcm92aWRlcnM6IF9hcnJheUZyb21Kc29uKGRhdGFbJ3Byb3ZpZGVycyddLCBtZXRhZGF0YUZyb21Kc29uKSxcbiAgICAgIHZpZXdQcm92aWRlcnM6IF9hcnJheUZyb21Kc29uKGRhdGFbJ3ZpZXdQcm92aWRlcnMnXSwgbWV0YWRhdGFGcm9tSnNvbiksXG4gICAgICBxdWVyaWVzOiBfYXJyYXlGcm9tSnNvbihkYXRhWydxdWVyaWVzJ10sIENvbXBpbGVRdWVyeU1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIHZpZXdRdWVyaWVzOiBfYXJyYXlGcm9tSnNvbihkYXRhWyd2aWV3UXVlcmllcyddLCBDb21waWxlUXVlcnlNZXRhZGF0YS5mcm9tSnNvbilcbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjbGFzcyc6ICdEaXJlY3RpdmUnLFxuICAgICAgJ2lzQ29tcG9uZW50JzogdGhpcy5pc0NvbXBvbmVudCxcbiAgICAgICdzZWxlY3Rvcic6IHRoaXMuc2VsZWN0b3IsXG4gICAgICAnZXhwb3J0QXMnOiB0aGlzLmV4cG9ydEFzLFxuICAgICAgJ3R5cGUnOiBpc1ByZXNlbnQodGhpcy50eXBlKSA/IHRoaXMudHlwZS50b0pzb24oKSA6IHRoaXMudHlwZSxcbiAgICAgICdjaGFuZ2VEZXRlY3Rpb24nOiBpc1ByZXNlbnQodGhpcy5jaGFuZ2VEZXRlY3Rpb24pID8gc2VyaWFsaXplRW51bSh0aGlzLmNoYW5nZURldGVjdGlvbikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbixcbiAgICAgICdpbnB1dHMnOiB0aGlzLmlucHV0cyxcbiAgICAgICdvdXRwdXRzJzogdGhpcy5vdXRwdXRzLFxuICAgICAgJ2hvc3RMaXN0ZW5lcnMnOiB0aGlzLmhvc3RMaXN0ZW5lcnMsXG4gICAgICAnaG9zdFByb3BlcnRpZXMnOiB0aGlzLmhvc3RQcm9wZXJ0aWVzLFxuICAgICAgJ2hvc3RBdHRyaWJ1dGVzJzogdGhpcy5ob3N0QXR0cmlidXRlcyxcbiAgICAgICdsaWZlY3ljbGVIb29rcyc6IHRoaXMubGlmZWN5Y2xlSG9va3MubWFwKGhvb2sgPT4gc2VyaWFsaXplRW51bShob29rKSksXG4gICAgICAndGVtcGxhdGUnOiBpc1ByZXNlbnQodGhpcy50ZW1wbGF0ZSkgPyB0aGlzLnRlbXBsYXRlLnRvSnNvbigpIDogdGhpcy50ZW1wbGF0ZSxcbiAgICAgICdwcm92aWRlcnMnOiBfYXJyYXlUb0pzb24odGhpcy5wcm92aWRlcnMpLFxuICAgICAgJ3ZpZXdQcm92aWRlcnMnOiBfYXJyYXlUb0pzb24odGhpcy52aWV3UHJvdmlkZXJzKSxcbiAgICAgICdxdWVyaWVzJzogX2FycmF5VG9Kc29uKHRoaXMucXVlcmllcyksXG4gICAgICAndmlld1F1ZXJpZXMnOiBfYXJyYXlUb0pzb24odGhpcy52aWV3UXVlcmllcylcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0IHtAbGluayBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGF9IGZyb20ge0BsaW5rIENvbXBvbmVudFR5cGVNZXRhZGF0YX0gYW5kIGEgc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIb3N0Q29tcG9uZW50TWV0YShjb21wb25lbnRUeXBlOiBDb21waWxlVHlwZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFNlbGVjdG9yOiBzdHJpbmcpOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICB2YXIgdGVtcGxhdGUgPSBDc3NTZWxlY3Rvci5wYXJzZShjb21wb25lbnRTZWxlY3RvcilbMF0uZ2V0TWF0Y2hpbmdFbGVtZW50VGVtcGxhdGUoKTtcbiAgcmV0dXJuIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YS5jcmVhdGUoe1xuICAgIHR5cGU6IG5ldyBDb21waWxlVHlwZU1ldGFkYXRhKHtcbiAgICAgIHJ1bnRpbWU6IE9iamVjdCxcbiAgICAgIG5hbWU6IGAke2NvbXBvbmVudFR5cGUubmFtZX1fSG9zdGAsXG4gICAgICBtb2R1bGVVcmw6IGNvbXBvbmVudFR5cGUubW9kdWxlVXJsLFxuICAgICAgaXNIb3N0OiB0cnVlXG4gICAgfSksXG4gICAgdGVtcGxhdGU6IG5ldyBDb21waWxlVGVtcGxhdGVNZXRhZGF0YShcbiAgICAgICAge3RlbXBsYXRlOiB0ZW1wbGF0ZSwgdGVtcGxhdGVVcmw6ICcnLCBzdHlsZXM6IFtdLCBzdHlsZVVybHM6IFtdLCBuZ0NvbnRlbnRTZWxlY3RvcnM6IFtdfSksXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGlucHV0czogW10sXG4gICAgb3V0cHV0czogW10sXG4gICAgaG9zdDoge30sXG4gICAgbGlmZWN5Y2xlSG9va3M6IFtdLFxuICAgIGlzQ29tcG9uZW50OiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnKicsXG4gICAgcHJvdmlkZXJzOiBbXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbXSxcbiAgICBxdWVyaWVzOiBbXSxcbiAgICB2aWV3UXVlcmllczogW11cbiAgfSk7XG59XG5cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVQaXBlTWV0YWRhdGEgaW1wbGVtZW50cyBDb21waWxlTWV0YWRhdGFXaXRoVHlwZSB7XG4gIHR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGE7XG4gIG5hbWU6IHN0cmluZztcbiAgcHVyZTogYm9vbGVhbjtcbiAgbGlmZWN5Y2xlSG9va3M6IExpZmVjeWNsZUhvb2tzW107XG5cbiAgY29uc3RydWN0b3Ioe3R5cGUsIG5hbWUsIHB1cmUsIGxpZmVjeWNsZUhvb2tzfToge1xuICAgIHR5cGU/OiBDb21waWxlVHlwZU1ldGFkYXRhLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgcHVyZT86IGJvb2xlYW4sXG4gICAgbGlmZWN5Y2xlSG9va3M/OiBMaWZlY3ljbGVIb29rc1tdXG4gIH0gPSB7fSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnB1cmUgPSBub3JtYWxpemVCb29sKHB1cmUpO1xuICAgIHRoaXMubGlmZWN5Y2xlSG9va3MgPSBfbm9ybWFsaXplQXJyYXkobGlmZWN5Y2xlSG9va3MpO1xuICB9XG4gIGdldCBpZGVudGlmaWVyKCk6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgeyByZXR1cm4gdGhpcy50eXBlOyB9XG5cbiAgc3RhdGljIGZyb21Kc29uKGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ29tcGlsZVBpcGVNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlUGlwZU1ldGFkYXRhKHtcbiAgICAgIHR5cGU6IGlzUHJlc2VudChkYXRhWyd0eXBlJ10pID8gQ29tcGlsZVR5cGVNZXRhZGF0YS5mcm9tSnNvbihkYXRhWyd0eXBlJ10pIDogZGF0YVsndHlwZSddLFxuICAgICAgbmFtZTogZGF0YVsnbmFtZSddLFxuICAgICAgcHVyZTogZGF0YVsncHVyZSddXG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAnY2xhc3MnOiAnUGlwZScsXG4gICAgICAndHlwZSc6IGlzUHJlc2VudCh0aGlzLnR5cGUpID8gdGhpcy50eXBlLnRvSnNvbigpIDogbnVsbCxcbiAgICAgICduYW1lJzogdGhpcy5uYW1lLFxuICAgICAgJ3B1cmUnOiB0aGlzLnB1cmVcbiAgICB9O1xuICB9XG59XG5cbnZhciBfQ09NUElMRV9NRVRBREFUQV9GUk9NX0pTT04gPSB7XG4gICdEaXJlY3RpdmUnOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEuZnJvbUpzb24sXG4gICdQaXBlJzogQ29tcGlsZVBpcGVNZXRhZGF0YS5mcm9tSnNvbixcbiAgJ1R5cGUnOiBDb21waWxlVHlwZU1ldGFkYXRhLmZyb21Kc29uLFxuICAnUHJvdmlkZXInOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YS5mcm9tSnNvbixcbiAgJ0lkZW50aWZpZXInOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLmZyb21Kc29uLFxuICAnRmFjdG9yeSc6IENvbXBpbGVGYWN0b3J5TWV0YWRhdGEuZnJvbUpzb25cbn07XG5cbmZ1bmN0aW9uIF9hcnJheUZyb21Kc29uKG9iajogYW55W10sIGZuOiAoYToge1trZXk6IHN0cmluZ106IGFueX0pID0+IGFueSk6IGFueSB7XG4gIHJldHVybiBpc0JsYW5rKG9iaikgPyBudWxsIDogb2JqLm1hcChvID0+IF9vYmpGcm9tSnNvbihvLCBmbikpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlUb0pzb24ob2JqOiBhbnlbXSk6IHN0cmluZyB8IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgcmV0dXJuIGlzQmxhbmsob2JqKSA/IG51bGwgOiBvYmoubWFwKF9vYmpUb0pzb24pO1xufVxuXG5mdW5jdGlvbiBfb2JqRnJvbUpzb24ob2JqOiBhbnksIGZuOiAoYToge1trZXk6IHN0cmluZ106IGFueX0pID0+IGFueSk6IGFueSB7XG4gIGlmIChpc0FycmF5KG9iaikpIHJldHVybiBfYXJyYXlGcm9tSnNvbihvYmosIGZuKTtcbiAgaWYgKGlzU3RyaW5nKG9iaikgfHwgaXNCbGFuayhvYmopIHx8IGlzQm9vbGVhbihvYmopIHx8IGlzTnVtYmVyKG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBmbihvYmopO1xufVxuXG5mdW5jdGlvbiBfb2JqVG9Kc29uKG9iajogYW55KTogc3RyaW5nIHwge1trZXk6IHN0cmluZ106IGFueX0ge1xuICBpZiAoaXNBcnJheShvYmopKSByZXR1cm4gX2FycmF5VG9Kc29uKG9iaik7XG4gIGlmIChpc1N0cmluZyhvYmopIHx8IGlzQmxhbmsob2JqKSB8fCBpc0Jvb2xlYW4ob2JqKSB8fCBpc051bWJlcihvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gb2JqLnRvSnNvbigpO1xufVxuXG5mdW5jdGlvbiBfbm9ybWFsaXplQXJyYXkob2JqOiBhbnlbXSk6IGFueVtdIHtcbiAgcmV0dXJuIGlzUHJlc2VudChvYmopID8gb2JqIDogW107XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar compile_metadata_1 = require('./compile_metadata');\r\nvar view_1 = require('angular2/src/core/linker/view');\r\nvar debug_context_1 = require('angular2/src/core/linker/debug_context');\r\nvar view_utils_1 = require('angular2/src/core/linker/view_utils');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar element_1 = require('angular2/src/core/linker/element');\r\nvar element_ref_1 = require('angular2/src/core/linker/element_ref');\r\nvar view_container_ref_1 = require('angular2/src/core/linker/view_container_ref');\r\nvar api_1 = require('angular2/src/core/render/api');\r\nvar view_2 = require('angular2/src/core/metadata/view');\r\nvar view_type_1 = require('angular2/src/core/linker/view_type');\r\nvar linker_1 = require('angular2/src/core/linker');\r\nvar injector_1 = require('angular2/src/core/di/injector');\r\nvar template_ref_1 = require('angular2/src/core/linker/template_ref');\r\nvar util_1 = require('./util');\r\nvar APP_VIEW_MODULE_URL = 'asset:angular2/lib/src/core/linker/view' + util_1.MODULE_SUFFIX;\r\nvar VIEW_UTILS_MODULE_URL = 'asset:angular2/lib/src/core/linker/view_utils' + util_1.MODULE_SUFFIX;\r\nvar CD_MODULE_URL = 'asset:angular2/lib/src/core/change_detection/change_detection' + util_1.MODULE_SUFFIX;\r\n// Reassign the imports to different variables so we can\r\n// define static variables with the name of the import.\r\n// (only needed for Dart).\r\nvar impViewUtils = view_utils_1.ViewUtils;\r\nvar impAppView = view_1.AppView;\r\nvar impDebugContext = debug_context_1.DebugContext;\r\nvar impAppElement = element_1.AppElement;\r\nvar impElementRef = element_ref_1.ElementRef;\r\nvar impViewContainerRef = view_container_ref_1.ViewContainerRef;\r\nvar impChangeDetectorRef = change_detection_1.ChangeDetectorRef;\r\nvar impRenderComponentType = api_1.RenderComponentType;\r\nvar impQueryList = linker_1.QueryList;\r\nvar impTemplateRef = template_ref_1.TemplateRef;\r\nvar impTemplateRef_ = template_ref_1.TemplateRef_;\r\nvar impValueUnwrapper = change_detection_1.ValueUnwrapper;\r\nvar impInjector = injector_1.Injector;\r\nvar impViewEncapsulation = view_2.ViewEncapsulation;\r\nvar impViewType = view_type_1.ViewType;\r\nvar impChangeDetectionStrategy = change_detection_1.ChangeDetectionStrategy;\r\nvar impStaticNodeDebugInfo = debug_context_1.StaticNodeDebugInfo;\r\nvar impRenderer = api_1.Renderer;\r\nvar impSimpleChange = change_detection_1.SimpleChange;\r\nvar impUninitialized = change_detection_1.uninitialized;\r\nvar impChangeDetectorState = change_detection_1.ChangeDetectorState;\r\nvar impFlattenNestedViewRenderNodes = view_utils_1.flattenNestedViewRenderNodes;\r\nvar impDevModeEqual = change_detection_1.devModeEqual;\r\nvar impInterpolate = view_utils_1.interpolate;\r\nvar impCheckBinding = view_utils_1.checkBinding;\r\nvar impCastByValue = view_utils_1.castByValue;\r\nvar Identifiers = (function () {\r\n function Identifiers() {\r\n }\r\n Identifiers.ViewUtils = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ViewUtils',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/view_utils' + util_1.MODULE_SUFFIX,\r\n runtime: impViewUtils\r\n });\r\n Identifiers.AppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impAppView });\r\n Identifiers.AppElement = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'AppElement',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/element' + util_1.MODULE_SUFFIX,\r\n runtime: impAppElement\r\n });\r\n Identifiers.ElementRef = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ElementRef',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/element_ref' + util_1.MODULE_SUFFIX,\r\n runtime: impElementRef\r\n });\r\n Identifiers.ViewContainerRef = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ViewContainerRef',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/view_container_ref' + util_1.MODULE_SUFFIX,\r\n runtime: impViewContainerRef\r\n });\r\n Identifiers.ChangeDetectorRef = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ChangeDetectorRef',\r\n moduleUrl: 'asset:angular2/lib/src/core/change_detection/change_detector_ref' + util_1.MODULE_SUFFIX,\r\n runtime: impChangeDetectorRef\r\n });\r\n Identifiers.RenderComponentType = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'RenderComponentType',\r\n moduleUrl: 'asset:angular2/lib/src/core/render/api' + util_1.MODULE_SUFFIX,\r\n runtime: impRenderComponentType\r\n });\r\n Identifiers.QueryList = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'QueryList',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/query_list' + util_1.MODULE_SUFFIX,\r\n runtime: impQueryList\r\n });\r\n Identifiers.TemplateRef = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'TemplateRef',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/template_ref' + util_1.MODULE_SUFFIX,\r\n runtime: impTemplateRef\r\n });\r\n Identifiers.TemplateRef_ = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'TemplateRef_',\r\n moduleUrl: 'asset:angular2/lib/src/core/linker/template_ref' + util_1.MODULE_SUFFIX,\r\n runtime: impTemplateRef_\r\n });\r\n Identifiers.ValueUnwrapper = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ValueUnwrapper', moduleUrl: CD_MODULE_URL, runtime: impValueUnwrapper });\r\n Identifiers.Injector = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'Injector',\r\n moduleUrl: \"asset:angular2/lib/src/core/di/injector\" + util_1.MODULE_SUFFIX,\r\n runtime: impInjector\r\n });\r\n Identifiers.ViewEncapsulation = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ViewEncapsulation',\r\n moduleUrl: 'asset:angular2/lib/src/core/metadata/view' + util_1.MODULE_SUFFIX,\r\n runtime: impViewEncapsulation\r\n });\r\n Identifiers.ViewType = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ViewType',\r\n moduleUrl: \"asset:angular2/lib/src/core/linker/view_type\" + util_1.MODULE_SUFFIX,\r\n runtime: impViewType\r\n });\r\n Identifiers.ChangeDetectionStrategy = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'ChangeDetectionStrategy',\r\n moduleUrl: CD_MODULE_URL,\r\n runtime: impChangeDetectionStrategy\r\n });\r\n Identifiers.StaticNodeDebugInfo = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'StaticNodeDebugInfo',\r\n moduleUrl: \"asset:angular2/lib/src/core/linker/debug_context\" + util_1.MODULE_SUFFIX,\r\n runtime: impStaticNodeDebugInfo\r\n });\r\n Identifiers.DebugContext = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'DebugContext',\r\n moduleUrl: \"asset:angular2/lib/src/core/linker/debug_context\" + util_1.MODULE_SUFFIX,\r\n runtime: impDebugContext\r\n });\r\n Identifiers.Renderer = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'Renderer',\r\n moduleUrl: 'asset:angular2/lib/src/core/render/api' + util_1.MODULE_SUFFIX,\r\n runtime: impRenderer\r\n });\r\n Identifiers.SimpleChange = new compile_metadata_1.CompileIdentifierMetadata({ name: 'SimpleChange', moduleUrl: CD_MODULE_URL, runtime: impSimpleChange });\r\n Identifiers.uninitialized = new compile_metadata_1.CompileIdentifierMetadata({ name: 'uninitialized', moduleUrl: CD_MODULE_URL, runtime: impUninitialized });\r\n Identifiers.ChangeDetectorState = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ChangeDetectorState', moduleUrl: CD_MODULE_URL, runtime: impChangeDetectorState });\r\n Identifiers.checkBinding = new compile_metadata_1.CompileIdentifierMetadata({ name: 'checkBinding', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCheckBinding });\r\n Identifiers.flattenNestedViewRenderNodes = new compile_metadata_1.CompileIdentifierMetadata({\r\n name: 'flattenNestedViewRenderNodes',\r\n moduleUrl: VIEW_UTILS_MODULE_URL,\r\n runtime: impFlattenNestedViewRenderNodes\r\n });\r\n Identifiers.devModeEqual = new compile_metadata_1.CompileIdentifierMetadata({ name: 'devModeEqual', moduleUrl: CD_MODULE_URL, runtime: impDevModeEqual });\r\n Identifiers.interpolate = new compile_metadata_1.CompileIdentifierMetadata({ name: 'interpolate', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impInterpolate });\r\n Identifiers.castByValue = new compile_metadata_1.CompileIdentifierMetadata({ name: 'castByValue', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCastByValue });\r\n Identifiers.pureProxies = [\r\n null,\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy1', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy1 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy2 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy3', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy3 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy4', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy4 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy5', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy5 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy6', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy6 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy7', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy7 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy8', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy8 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy9', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy9 }),\r\n new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy10', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: view_utils_1.pureProxy10 }),\r\n ];\r\n return Identifiers;\r\n}());\r\nexports.Identifiers = Identifiers;\r\nfunction identifierToken(identifier) {\r\n return new compile_metadata_1.CompileTokenMetadata({ identifier: identifier });\r\n}\r\nexports.identifierToken = identifierToken;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvaWRlbnRpZmllcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUE4RCxvQkFBb0IsQ0FBQyxDQUFBO0FBQ25GLHFCQUFzQiwrQkFBK0IsQ0FBQyxDQUFBO0FBQ3RELDhCQUFnRCx3Q0FBd0MsQ0FBQyxDQUFBO0FBQ3pGLDJCQWdCTyxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzdDLGlDQVFPLHFEQUFxRCxDQUFDLENBQUE7QUFDN0Qsd0JBQXlCLGtDQUFrQyxDQUFDLENBQUE7QUFDNUQsNEJBQXlCLHNDQUFzQyxDQUFDLENBQUE7QUFDaEUsbUNBQStCLDZDQUE2QyxDQUFDLENBQUE7QUFDN0Usb0JBQTZELDhCQUE4QixDQUFDLENBQUE7QUFDNUYscUJBQWdDLGlDQUFpQyxDQUFDLENBQUE7QUFDbEUsMEJBQXVCLG9DQUFvQyxDQUFDLENBQUE7QUFDNUQsdUJBQXdCLDBCQUEwQixDQUFDLENBQUE7QUFDbkQseUJBQXVCLCtCQUErQixDQUFDLENBQUE7QUFDdkQsNkJBQXdDLHVDQUF1QyxDQUFDLENBQUE7QUFDaEYscUJBQTRCLFFBQVEsQ0FBQyxDQUFBO0FBRXJDLElBQUksbUJBQW1CLEdBQUcseUNBQXlDLEdBQUcsb0JBQWEsQ0FBQztBQUNwRixJQUFJLHFCQUFxQixHQUFHLCtDQUErQyxHQUFHLG9CQUFhLENBQUM7QUFDNUYsSUFBSSxhQUFhLEdBQUcsK0RBQStELEdBQUcsb0JBQWEsQ0FBQztBQUVwRyx3REFBd0Q7QUFDeEQsdURBQXVEO0FBQ3ZELDBCQUEwQjtBQUMxQixJQUFJLFlBQVksR0FBRyxzQkFBUyxDQUFDO0FBQzdCLElBQUksVUFBVSxHQUFHLGNBQU8sQ0FBQztBQUN6QixJQUFJLGVBQWUsR0FBRyw0QkFBWSxDQUFDO0FBQ25DLElB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LEVBQUMsQ0FBQztRQUNoRixJQUFJLDRDQUF5QixDQUN6QixFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSx1QkFBVSxFQUFDLENBQUM7UUFDaEYsSUFBSSw0Q0FBeUIsQ0FDekIsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsdUJBQVUsRUFBQyxDQUFDO1FBQ2hGLElBQUksNENBQXlCLENBQ3pCLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLHVCQUFVLEVBQUMsQ0FBQztRQUNoRixJQUFJLDRDQUF5QixDQUN6QixFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSx3QkFBVyxFQUFDLENBQUM7S0FDbkYsQ0FBQztJQUNKLGtCQUFDO0FBQUQsQ0FBQyxBQS9IRCxJQStIQztBQS9IWSxtQkFBVyxjQStIdkIsQ0FBQTtBQUVELHlCQUFnQyxVQUFxQztJQUNuRSxNQUFNLENBQUMsSUFBSSx1Q0FBb0IsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFGZSx1QkFBZSxrQkFFOUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSwgQ29tcGlsZVRva2VuTWV0YWRhdGF9IGZyb20gJy4vY29tcGlsZV9tZXRhZGF0YSc7XG5pbXBvcnQge0FwcFZpZXd9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3JztcbmltcG9ydCB7U3RhdGljTm9kZURlYnVnSW5mbywgRGVidWdDb250ZXh0fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZGVidWdfY29udGV4dCc7XG5pbXBvcnQge1xuICBWaWV3VXRpbHMsXG4gIGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMsXG4gIGludGVycG9sYXRlLFxuICBjaGVja0JpbmRpbmcsXG4gIGNhc3RCeVZhbHVlLFxuICBwdXJlUHJveHkxLFxuICBwdXJlUHJveHkyLFxuICBwdXJlUHJveHkzLFxuICBwdXJlUHJveHk0LFxuICBwdXJlUHJveHk1LFxuICBwdXJlUHJveHk2LFxuICBwdXJlUHJveHk3LFxuICBwdXJlUHJveHk4LFxuICBwdXJlUHJveHk5LFxuICBwdXJlUHJveHkxMFxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld191dGlscyc7XG5pbXBvcnQge1xuICB1bmluaXRpYWxpemVkLFxuICBkZXZNb2RlRXF1YWwsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmFsdWVVbndyYXBwZXIsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDaGFuZ2VEZXRlY3RvclN0YXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtBcHBFbGVtZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZWxlbWVudCc7XG5pbXBvcnQge0VsZW1lbnRSZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50X3JlZic7XG5pbXBvcnQge1ZpZXdDb250YWluZXJSZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X2NvbnRhaW5lcl9yZWYnO1xuaW1wb3J0IHtSZW5kZXJlciwgUmVuZGVyQ29tcG9uZW50VHlwZSwgUmVuZGVyRGVidWdJbmZvfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZW5kZXIvYXBpJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtWaWV3VHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfdHlwZSc7XG5pbXBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyJztcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL2luamVjdG9yJztcbmltcG9ydCB7VGVtcGxhdGVSZWYsIFRlbXBsYXRlUmVmX30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3RlbXBsYXRlX3JlZic7XG5pbXBvcnQge01PRFVMRV9TVUZGSVh9IGZyb20gJy4vdXRpbCc7XG5cbnZhciBBUFBfVklFV19NT0RVTEVfVVJMID0gJ2Fzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9saW5rZXIvdmlldycgKyBNT0RVTEVfU1VGRklYO1xudmFyIFZJRVdfVVRJTFNfTU9EVUxFX1VSTCA9ICdhc3NldDphbmd1bGFyMi9saWIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfdXRpbHMnICsgTU9EVUxFX1NVRkZJWDtcbnZhciBDRF9NT0RVTEVfVVJMID0gJ2Fzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nICsgTU9EVUxFX1NVRkZJWDtcblxuLy8gUmVhc3NpZ24gdGhlIGltcG9ydHMgdG8gZGlmZmVyZW50IHZhcmlhYmxlcyBzbyB3ZSBjYW5cbi8vIGRlZmluZSBzdGF0aWMgdmFyaWFibGVzIHdpdGggdGhlIG5hbWUgb2YgdGhlIGltcG9ydC5cbi8vIChvbmx5IG5lZWRlZCBmb3IgRGFydCkuXG52YXIgaW1wVmlld1V0aWxzID0gVmlld1V0aWxzO1xudmFyIGltcEFwcFZpZXcgPSBBcHBWaWV3O1xudmFyIGltcERlYnVnQ29udGV4dCA9IERlYnVnQ29udGV4dDtcbnZhciBpbXBBcHBFbGVtZW50ID0gQXBwRWxlbWVudDtcbnZhciBpbXBFbGVtZW50UmVmID0gRWxlbWVudFJlZjtcbnZhciBpbXBWaWV3Q29udGFpbmVyUmVmID0gVmlld0NvbnRhaW5lclJlZjtcbnZhciBpbXBDaGFuZ2VEZXRlY3RvclJlZiA9IENoYW5nZURldGVjdG9yUmVmO1xudmFyIGltcFJlbmRlckNvbXBvbmVudFR5cGUgPSBSZW5kZXJDb21wb25lbnRUeXBlO1xudmFyIGltcFF1ZXJ5TGlzdCA9IFF1ZXJ5TGlzdDtcbnZhciBpbXBUZW1wbGF0ZVJlZiA9IFRlbXBsYXRlUmVmO1xudmFyIGltcFRlbXBsYXRlUmVmXyA9IFRlbXBsYXRlUmVmXztcbnZhciBpbXBWYWx1ZVVud3JhcHBlciA9IFZhbHVlVW53cmFwcGVyO1xudmFyIGltcEluamVjdG9yID0gSW5qZWN0b3I7XG52YXIgaW1wVmlld0VuY2Fwc3VsYXRpb24gPSBWaWV3RW5jYXBzdWxhdGlvbjtcbnZhciBpbXBWaWV3VHlwZSA9IFZpZXdUeXBlO1xudmFyIGltcENoYW5nZURldGVjdGlvblN0cmF0ZWd5ID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3k7XG52YXIgaW1wU3RhdGljTm9kZURlYnVnSW5mbyA9IFN0YXRpY05vZGVEZWJ1Z0luZm87XG52YXIgaW1wUmVuZGVyZXIgPSBSZW5kZXJlcjtcbnZhciBpbXBTaW1wbGVDaGFuZ2UgPSBTaW1wbGVDaGFuZ2U7XG52YXIgaW1wVW5pbml0aWFsaXplZCA9IHVuaW5pdGlhbGl6ZWQ7XG52YXIgaW1wQ2hhbmdlRGV0ZWN0b3JTdGF0ZSA9IENoYW5nZURldGVjdG9yU3RhdGU7XG52YXIgaW1wRmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2RlcyA9IGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXM7XG52YXIgaW1wRGV2TW9kZUVxdWFsID0gZGV2TW9kZUVxdWFsO1xudmFyIGltcEludGVycG9sYXRlID0gaW50ZXJwb2xhdGU7XG52YXIgaW1wQ2hlY2tCaW5kaW5nID0gY2hlY2tCaW5kaW5nO1xudmFyIGltcENhc3RCeVZhbHVlID0gY2FzdEJ5VmFsdWU7XG5cbmV4cG9ydCBjbGFzcyBJZGVudGlmaWVycyB7XG4gIHN0YXRpYyBWaWV3VXRpbHMgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ1ZpZXdVdGlscycsXG4gICAgbW9kdWxlVXJsOiAnYXNzZXQ6YW5ndWxhcjIvbGliL3NyYy9jb3JlL2xpbmtlci92aWV3X3V0aWxzJyArIE1PRFVMRV9TVUZGSVgsXG4gICAgcnVudGltZTogaW1wVmlld1V0aWxzXG4gIH0pO1xuICBzdGF0aWMgQXBwVmlldyA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKFxuICAgICAge25hbWU6ICdBcHBWaWV3JywgbW9kdWxlVXJsOiBBUFBfVklFV19NT0RVTEVfVVJMLCBydW50aW1lOiBpbXBBcHBWaWV3fSk7XG4gIHN0YXRpYyBBcHBFbGVtZW50ID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoe1xuICAgIG5hbWU6ICdBcHBFbGVtZW50JyxcbiAgICBtb2R1bGVVcmw6ICdhc3NldDphbmd1bGFyMi9saWIvc3JjL2NvcmUvbGlua2VyL2VsZW1lbnQnICsgTU9EVUxFX1NVRkZJWCxcbiAgICBydW50aW1lOiBpbXBBcHBFbGVtZW50XG4gIH0pO1xuICBzdGF0aWMgRWxlbWVudFJlZiA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnRWxlbWVudFJlZicsXG4gICAgbW9kdWxlVXJsOiAnYXNzZXQ6YW5ndWxhcjIvbGliL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50X3JlZicgKyBNT0RVTEVfU1VGRklYLFxuICAgIHJ1bnRpbWU6IGltcEVsZW1lbnRSZWZcbiAgfSk7XG4gIHN0YXRpYyBWaWV3Q29udGFpbmVyUmVmID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoe1xuICAgIG5hbWU6ICdWaWV3Q29udGFpbmVyUmVmJyxcbiAgICBtb2R1bGVVcmw6ICdhc3NldDphbmd1bGFyMi9saWIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfY29udGFpbmVyX3JlZicgKyBNT0RVTEVfU1VGRklYLFxuICAgIHJ1bnRpbWU6IGltcFZpZXdDb250YWluZXJSZWZcbiAgfSk7XG4gIHN0YXRpYyBDaGFuZ2VEZXRlY3RvclJlZiA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnQ2hhbmdlRGV0ZWN0b3JSZWYnLFxuICAgIG1vZHVsZVVybDogJ2Fzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnICsgTU9EVUxFX1NVRkZJWCxcbiAgICBydW50aW1lOiBpbXBDaGFuZ2VEZXRlY3RvclJlZlxuICB9KTtcbiAgc3RhdGljIFJlbmRlckNvbXBvbmVudFR5cGUgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ1JlbmRlckNvbXBvbmVudFR5cGUnLFxuICAgIG1vZHVsZVVybDogJ2Fzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9yZW5kZXIvYXBpJyArIE1PRFVMRV9TVUZGSVgsXG4gICAgcnVudGltZTogaW1wUmVuZGVyQ29tcG9uZW50VHlwZVxuICB9KTtcbiAgc3RhdGljIFF1ZXJ5TGlzdCA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnUXVlcnlMaXN0JyxcbiAgICBtb2R1bGVVcmw6ICdhc3NldDphbmd1bGFyMi9saWIvc3JjL2NvcmUvbGlua2VyL3F1ZXJ5X2xpc3QnICsgTU9EVUxFX1NVRkZJWCxcbiAgICBydW50aW1lOiBpbXBRdWVyeUxpc3RcbiAgfSk7XG4gIHN0YXRpYyBUZW1wbGF0ZVJlZiA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnVGVtcGxhdGVSZWYnLFxuICAgIG1vZHVsZVVybDogJ2Fzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9saW5rZXIvdGVtcGxhdGVfcmVmJyArIE1PRFVMRV9TVUZGSVgsXG4gICAgcnVudGltZTogaW1wVGVtcGxhdGVSZWZcbiAgfSk7XG4gIHN0YXRpYyBUZW1wbGF0ZVJlZl8gPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ1RlbXBsYXRlUmVmXycsXG4gICAgbW9kdWxlVXJsOiAnYXNzZXQ6YW5ndWxhcjIvbGliL3NyYy9jb3JlL2xpbmtlci90ZW1wbGF0ZV9yZWYnICsgTU9EVUxFX1NVRkZJWCxcbiAgICBydW50aW1lOiBpbXBUZW1wbGF0ZVJlZl9cbiAgfSk7XG4gIHN0YXRpYyBWYWx1ZVVud3JhcHBlciA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKFxuICAgICAge25hbWU6ICdWYWx1ZVVud3JhcHBlcicsIG1vZHVsZVVybDogQ0RfTU9EVUxFX1VSTCwgcnVudGltZTogaW1wVmFsdWVVbndyYXBwZXJ9KTtcbiAgc3RhdGljIEluamVjdG9yID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoe1xuICAgIG5hbWU6ICdJbmplY3RvcicsXG4gICAgbW9kdWxlVXJsOiBgYXNzZXQ6YW5ndWxhcjIvbGliL3NyYy9jb3JlL2RpL2luamVjdG9yJHtNT0RVTEVfU1VGRklYfWAsXG4gICAgcnVudGltZTogaW1wSW5qZWN0b3JcbiAgfSk7XG4gIHN0YXRpYyBWaWV3RW5jYXBzdWxhdGlvbiA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnVmlld0VuY2Fwc3VsYXRpb24nLFxuICAgIG1vZHVsZVVybDogJ2Fzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9tZXRhZGF0YS92aWV3JyArIE1PRFVMRV9TVUZGSVgsXG4gICAgcnVudGltZTogaW1wVmlld0VuY2Fwc3VsYXRpb25cbiAgfSk7XG4gIHN0YXRpYyBWaWV3VHlwZSA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnVmlld1R5cGUnLFxuICAgIG1vZHVsZVVybDogYGFzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9saW5rZXIvdmlld190eXBlJHtNT0RVTEVfU1VGRklYfWAsXG4gICAgcnVudGltZTogaW1wVmlld1R5cGVcbiAgfSk7XG4gIHN0YXRpYyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICBuYW1lOiAnQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3knLFxuICAgIG1vZHVsZVVybDogQ0RfTU9EVUxFX1VSTCxcbiAgICBydW50aW1lOiBpbXBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxuICB9KTtcbiAgc3RhdGljIFN0YXRpY05vZGVEZWJ1Z0luZm8gPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ1N0YXRpY05vZGVEZWJ1Z0luZm8nLFxuICAgIG1vZHVsZVVybDogYGFzc2V0OmFuZ3VsYXIyL2xpYi9zcmMvY29yZS9saW5rZXIvZGVidWdfY29udGV4dCR7TU9EVUxFX1NVRkZJWH1gLFxuICAgIHJ1bnRpbWU6IGltcFN0YXRpY05vZGVEZWJ1Z0luZm9cbiAgfSk7XG4gIHN0YXRpYyBEZWJ1Z0NvbnRleHQgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ0RlYnVnQ29udGV4dCcsXG4gICAgbW9kdWxlVXJsOiBgYXNzZXQ6YW5ndWxhcjIvbGliL3NyYy9jb3JlL2xpbmtlci9kZWJ1Z19jb250ZXh0JHtNT0RVTEVfU1VGRklYfWAsXG4gICAgcnVudGltZTogaW1wRGVidWdDb250ZXh0XG4gIH0pO1xuICBzdGF0aWMgUmVuZGVyZXIgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ1JlbmRlcmVyJyxcbiAgICBtb2R1bGVVcmw6ICdhc3NldDphbmd1bGFyMi9saWIvc3JjL2NvcmUvcmVuZGVyL2FwaScgKyBNT0RVTEVfU1VGRklYLFxuICAgIHJ1bnRpbWU6IGltcFJlbmRlcmVyXG4gIH0pO1xuICBzdGF0aWMgU2ltcGxlQ2hhbmdlID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoXG4gICAgICB7bmFtZTogJ1NpbXBsZUNoYW5nZScsIG1vZHVsZVVybDogQ0RfTU9EVUxFX1VSTCwgcnVudGltZTogaW1wU2ltcGxlQ2hhbmdlfSk7XG4gIHN0YXRpYyB1bmluaXRpYWxpemVkID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoXG4gICAgICB7bmFtZTogJ3VuaW5pdGlhbGl6ZWQnLCBtb2R1bGVVcmw6IENEX01PRFVMRV9VUkwsIHJ1bnRpbWU6IGltcFVuaW5pdGlhbGl6ZWR9KTtcbiAgc3RhdGljIENoYW5nZURldGVjdG9yU3RhdGUgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgIHtuYW1lOiAnQ2hhbmdlRGV0ZWN0b3JTdGF0ZScsIG1vZHVsZVVybDogQ0RfTU9EVUxFX1VSTCwgcnVudGltZTogaW1wQ2hhbmdlRGV0ZWN0b3JTdGF0ZX0pO1xuICBzdGF0aWMgY2hlY2tCaW5kaW5nID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoXG4gICAgICB7bmFtZTogJ2NoZWNrQmluZGluZycsIG1vZHVsZVVybDogVklFV19VVElMU19NT0RVTEVfVVJMLCBydW50aW1lOiBpbXBDaGVja0JpbmRpbmd9KTtcbiAgc3RhdGljIGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSh7XG4gICAgbmFtZTogJ2ZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMnLFxuICAgIG1vZHVsZVVybDogVklFV19VVElMU19NT0RVTEVfVVJMLFxuICAgIHJ1bnRpbWU6IGltcEZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXNcbiAgfSk7XG4gIHN0YXRpYyBkZXZNb2RlRXF1YWwgPSBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgIHtuYW1lOiAnZGV2TW9kZUVxdWFsJywgbW9kdWxlVXJsOiBDRF9NT0RVTEVfVVJMLCBydW50aW1lOiBpbXBEZXZNb2RlRXF1YWx9KTtcbiAgc3RhdGljIGludGVycG9sYXRlID0gbmV3IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEoXG4gICAgICB7bmFtZTogJ2ludGVycG9sYXRlJywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IGltcEludGVycG9sYXRlfSk7XG4gIHN0YXRpYyBjYXN0QnlWYWx1ZSA9IG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKFxuICAgICAge25hbWU6ICdjYXN0QnlWYWx1ZScsIG1vZHVsZVVybDogVklFV19VVElMU19NT0RVTEVfVVJMLCBydW50aW1lOiBpbXBDYXN0QnlWYWx1ZX0pO1xuICBzdGF0aWMgcHVyZVByb3hpZXMgPSBbXG4gICAgbnVsbCxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHkxJywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTF9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHkyJywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTJ9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHkzJywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTN9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHk0JywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTR9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHk1JywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTV9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHk2JywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTZ9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHk3JywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTd9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHk4JywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTh9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHk5JywgbW9kdWxlVXJsOiBWSUVXX1VUSUxTX01PRFVMRV9VUkwsIHJ1bnRpbWU6IHB1cmVQcm94eTl9KSxcbiAgICBuZXcgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YShcbiAgICAgICAge25hbWU6ICdwdXJlUHJveHkxMCcsIG1vZHVsZVVybDogVklFV19VVElMU19NT0RVTEVfVVJMLCBydW50aW1lOiBwdXJlUHJveHkxMH0pLFxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllclRva2VuKGlkZW50aWZpZXI6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEpOiBDb21waWxlVG9rZW5NZXRhZGF0YSB7XG4gIHJldHVybiBuZXcgQ29tcGlsZVRva2VuTWV0YWRhdGEoe2lkZW50aWZpZXI6IGlkZW50aWZpZXJ9KTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar identifiers_1 = require('./identifiers');\r\nvar CompilerConfig = (function () {\r\n function CompilerConfig(genDebugInfo, logBindingUpdate, useJit, renderTypes) {\r\n if (renderTypes === void 0) { renderTypes = null; }\r\n this.genDebugInfo = genDebugInfo;\r\n this.logBindingUpdate = logBindingUpdate;\r\n this.useJit = useJit;\r\n if (lang_1.isBlank(renderTypes)) {\r\n renderTypes = new DefaultRenderTypes();\r\n }\r\n this.renderTypes = renderTypes;\r\n }\r\n return CompilerConfig;\r\n}());\r\nexports.CompilerConfig = CompilerConfig;\r\n/**\r\n * Types used for the renderer.\r\n * Can be replaced to specialize the generated output to a specific renderer\r\n * to help tree shaking.\r\n */\r\nvar RenderTypes = (function () {\r\n function RenderTypes() {\r\n }\r\n Object.defineProperty(RenderTypes.prototype, \"renderer\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderTypes.prototype, \"renderText\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderTypes.prototype, \"renderElement\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderTypes.prototype, \"renderComment\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderTypes.prototype, \"renderNode\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderTypes.prototype, \"renderEvent\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RenderTypes;\r\n}());\r\nexports.RenderTypes = RenderTypes;\r\nvar DefaultRenderTypes = (function () {\r\n function DefaultRenderTypes() {\r\n this.renderer = identifiers_1.Identifiers.Renderer;\r\n this.renderText = null;\r\n this.renderElement = null;\r\n this.renderComment = null;\r\n this.renderNode = null;\r\n this.renderEvent = null;\r\n }\r\n return DefaultRenderTypes;\r\n}());\r\nexports.DefaultRenderTypes = DefaultRenderTypes;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQXNCLDBCQUEwQixDQUFDLENBQUE7QUFDakQsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0QsNEJBQTBCLGVBQWUsQ0FBQyxDQUFBO0FBRzFDO0lBRUUsd0JBQW1CLFlBQXFCLEVBQVMsZ0JBQXlCLEVBQ3ZELE1BQWUsRUFBRSxXQUErQjtRQUEvQiwyQkFBK0IsR0FBL0Isa0JBQStCO1FBRGhELGlCQUFZLEdBQVosWUFBWSxDQUFTO1FBQVMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFTO1FBQ3ZELFdBQU0sR0FBTixNQUFNLENBQVM7UUFDaEMsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixXQUFXLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBQ0gscUJBQUM7QUFBRCxDQUFDLEFBVEQsSUFTQztBQVRZLHNCQUFjLGlCQVMxQixDQUFBO0FBRUQ7Ozs7R0FJRztBQUNIO0lBQUE7SUFPQSxDQUFDO0lBTkMsc0JBQUksaUNBQVE7YUFBWixjQUE0QyxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDckUsc0JBQUksbUNBQVU7YUFBZCxjQUE4QyxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDdkUsc0JBQUksc0NBQWE7YUFBakIsY0FBaUQsTUFBTSxDQUFDLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQzFFLHNCQUFJLHNDQUFhO2FBQWpCLGNBQWlELE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUMxRSxzQkFBSSxtQ0FBVTthQUFkLGNBQThDLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUN2RSxzQkFBSSxvQ0FBVzthQUFmLGNBQStDLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUMxRSxrQkFBQztBQUFELENBQUMsQUFQRCxJQU9DO0FBUHFCLG1CQUFXLGNBT2hDLENBQUE7QUFFRDtJQUFBO1FBQ0UsYUFBUSxHQUFHLHlCQUFXLENBQUMsUUFBUSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixnQkFBVyxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBQUQseUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLDBCQUFrQixxQkFPOUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7dW5pbXBsZW1lbnRlZH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7SWRlbnRpZmllcnN9IGZyb20gJy4vaWRlbnRpZmllcnMnO1xuaW1wb3J0IHtDb21waWxlSWRlbnRpZmllck1ldGFkYXRhfSBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZXJDb25maWcge1xuICBwdWJsaWMgcmVuZGVyVHlwZXM6IFJlbmRlclR5cGVzO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ2VuRGVidWdJbmZvOiBib29sZWFuLCBwdWJsaWMgbG9nQmluZGluZ1VwZGF0ZTogYm9vbGVhbixcbiAgICAgICAgICAgICAgcHVibGljIHVzZUppdDogYm9vbGVhbiwgcmVuZGVyVHlwZXM6IFJlbmRlclR5cGVzID0gbnVsbCkge1xuICAgIGlmIChpc0JsYW5rKHJlbmRlclR5cGVzKSkge1xuICAgICAgcmVuZGVyVHlwZXMgPSBuZXcgRGVmYXVsdFJlbmRlclR5cGVzKCk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyVHlwZXMgPSByZW5kZXJUeXBlcztcbiAgfVxufVxuXG4vKipcbiAqIFR5cGVzIHVzZWQgZm9yIHRoZSByZW5kZXJlci5cbiAqIENhbiBiZSByZXBsYWNlZCB0byBzcGVjaWFsaXplIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IHRvIGEgc3BlY2lmaWMgcmVuZGVyZXJcbiAqIHRvIGhlbHAgdHJlZSBzaGFraW5nLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVuZGVyVHlwZXMge1xuICBnZXQgcmVuZGVyZXIoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IHJlbmRlclRleHQoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IHJlbmRlckVsZW1lbnQoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IHJlbmRlckNvbW1lbnQoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IHJlbmRlck5vZGUoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IHJlbmRlckV2ZW50KCk6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgeyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0UmVuZGVyVHlwZXMgaW1wbGVtZW50cyBSZW5kZXJUeXBlcyB7XG4gIHJlbmRlcmVyID0gSWRlbnRpZmllcnMuUmVuZGVyZXI7XG4gIHJlbmRlclRleHQgPSBudWxsO1xuICByZW5kZXJFbGVtZW50ID0gbnVsbDtcbiAgcmVuZGVyQ29tbWVudCA9IG51bGw7XG4gIHJlbmRlck5vZGUgPSBudWxsO1xuICByZW5kZXJFdmVudCA9IG51bGw7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar o = require('./output_ast');\r\nvar abstract_emitter_1 = require('./abstract_emitter');\r\nvar AbstractJsEmitterVisitor = (function (_super) {\r\n __extends(AbstractJsEmitterVisitor, _super);\r\n function AbstractJsEmitterVisitor() {\r\n _super.call(this, false);\r\n }\r\n AbstractJsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\r\n var _this = this;\r\n ctx.pushClass(stmt);\r\n this._visitClassConstructor(stmt, ctx);\r\n if (lang_1.isPresent(stmt.parent)) {\r\n ctx.print(stmt.name + \".prototype = Object.create(\");\r\n stmt.parent.visitExpression(this, ctx);\r\n ctx.println(\".prototype);\");\r\n }\r\n stmt.getters.forEach(function (getter) { return _this._visitClassGetter(stmt, getter, ctx); });\r\n stmt.methods.forEach(function (method) { return _this._visitClassMethod(stmt, method, ctx); });\r\n ctx.popClass();\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\r\n ctx.print(\"function \" + stmt.name + \"(\");\r\n if (lang_1.isPresent(stmt.constructorMethod)) {\r\n this._visitParams(stmt.constructorMethod.params, ctx);\r\n }\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n if (lang_1.isPresent(stmt.constructorMethod)) {\r\n if (stmt.constructorMethod.body.length > 0) {\r\n ctx.println(\"var self = this;\");\r\n this.visitAllStatements(stmt.constructorMethod.body, ctx);\r\n }\r\n }\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n AbstractJsEmitterVisitor.prototype._visitClassGetter = function (stmt, getter, ctx) {\r\n ctx.println(\"Object.defineProperty(\" + stmt.name + \".prototype, '\" + getter.name + \"', { get: function() {\");\r\n ctx.incIndent();\r\n if (getter.body.length > 0) {\r\n ctx.println(\"var self = this;\");\r\n this.visitAllStatements(getter.body, ctx);\r\n }\r\n ctx.decIndent();\r\n ctx.println(\"}});\");\r\n };\r\n AbstractJsEmitterVisitor.prototype._visitClassMethod = function (stmt, method, ctx) {\r\n ctx.print(stmt.name + \".prototype.\" + method.name + \" = function(\");\r\n this._visitParams(method.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n if (method.body.length > 0) {\r\n ctx.println(\"var self = this;\");\r\n this.visitAllStatements(method.body, ctx);\r\n }\r\n ctx.decIndent();\r\n ctx.println(\"};\");\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {\r\n if (ast.builtin === o.BuiltinVar.This) {\r\n ctx.print('self');\r\n }\r\n else if (ast.builtin === o.BuiltinVar.Super) {\r\n throw new exceptions_1.BaseException(\"'super' needs to be handled at a parent ast node, not at the variable level!\");\r\n }\r\n else {\r\n _super.prototype.visitReadVarExpr.call(this, ast, ctx);\r\n }\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\r\n ctx.print(\"var \" + stmt.name + \" = \");\r\n stmt.value.visitExpression(this, ctx);\r\n ctx.println(\";\");\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\r\n ast.value.visitExpression(this, ctx);\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {\r\n var fnExpr = expr.fn;\r\n if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) {\r\n ctx.currentClass.parent.visitExpression(this, ctx);\r\n ctx.print(\".call(this\");\r\n if (expr.args.length > 0) {\r\n ctx.print(\", \");\r\n this.visitAllExpressions(expr.args, ctx, ',');\r\n }\r\n ctx.print(\")\");\r\n }\r\n else {\r\n _super.prototype.visitInvokeFunctionExpr.call(this, expr, ctx);\r\n }\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\r\n ctx.print(\"function(\");\r\n this._visitParams(ast.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(ast.statements, ctx);\r\n ctx.decIndent();\r\n ctx.print(\"}\");\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\r\n ctx.print(\"function \" + stmt.name + \"(\");\r\n this._visitParams(stmt.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.statements, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\r\n ctx.println(\"try {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.bodyStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"} catch (\" + abstract_emitter_1.CATCH_ERROR_VAR.name + \") {\");\r\n ctx.incIndent();\r\n var catchStmts = [\r\n abstract_emitter_1.CATCH_STACK_VAR.set(abstract_emitter_1.CATCH_ERROR_VAR.prop('stack'))\r\n .toDeclStmt(null, [o.StmtModifier.Final])\r\n ].concat(stmt.catchStmts);\r\n this.visitAllStatements(catchStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n AbstractJsEmitterVisitor.prototype._visitParams = function (params, ctx) {\r\n this.visitAllObjects(function (param) { return ctx.print(param.name); }, params, ctx, ',');\r\n };\r\n AbstractJsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\r\n var name;\r\n switch (method) {\r\n case o.BuiltinMethod.ConcatArray:\r\n name = 'concat';\r\n break;\r\n case o.BuiltinMethod.SubscribeObservable:\r\n name = 'subscribe';\r\n break;\r\n case o.BuiltinMethod.bind:\r\n name = 'bind';\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown builtin method: \" + method);\r\n }\r\n return name;\r\n };\r\n return AbstractJsEmitterVisitor;\r\n}(abstract_emitter_1.AbstractEmitterVisitor));\r\nexports.AbstractJsEmitterVisitor = AbstractJsEmitterVisitor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RfanNfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9vdXRwdXQvYWJzdHJhY3RfanNfZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQkFBd0IsMEJBQTBCLENBQUMsQ0FBQTtBQUNuRCwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCxJQUFZLENBQUMsV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUNsQyxpQ0FLTyxvQkFBb0IsQ0FBQyxDQUFBO0FBRTVCO0lBQXVELDRDQUFzQjtJQUMzRTtRQUFnQixrQkFBTSxLQUFLLENBQUMsQ0FBQztJQUFDLENBQUM7SUFDL0Isd0RBQXFCLEdBQXJCLFVBQXNCLElBQWlCLEVBQUUsR0FBMEI7UUFBbkUsaUJBYUM7UUFaQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdkMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUksSUFBSSxDQUFDLElBQUksZ0NBQTZCLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQyxNQUFNLElBQUssT0FBQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBekMsQ0FBeUMsQ0FBQyxD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LENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNILCtCQUFDO0FBQUQsQ0FBQyxBQXpKRCxDQUF1RCx5Q0FBc0IsR0F5SjVFO0FBekpxQixnQ0FBd0IsMkJBeUo3QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBvIGZyb20gJy4vb3V0cHV0X2FzdCc7XG5pbXBvcnQge1xuICBFbWl0dGVyVmlzaXRvckNvbnRleHQsXG4gIEFic3RyYWN0RW1pdHRlclZpc2l0b3IsXG4gIENBVENIX0VSUk9SX1ZBUixcbiAgQ0FUQ0hfU1RBQ0tfVkFSXG59IGZyb20gJy4vYWJzdHJhY3RfZW1pdHRlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEpzRW1pdHRlclZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdEVtaXR0ZXJWaXNpdG9yIHtcbiAgY29uc3RydWN0b3IoKSB7IHN1cGVyKGZhbHNlKTsgfVxuICB2aXNpdERlY2xhcmVDbGFzc1N0bXQoc3RtdDogby5DbGFzc1N0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHVzaENsYXNzKHN0bXQpO1xuICAgIHRoaXMuX3Zpc2l0Q2xhc3NDb25zdHJ1Y3RvcihzdG10LCBjdHgpO1xuXG4gICAgaWYgKGlzUHJlc2VudChzdG10LnBhcmVudCkpIHtcbiAgICAgIGN0eC5wcmludChgJHtzdG10Lm5hbWV9LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYCk7XG4gICAgICBzdG10LnBhcmVudC52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICAgIGN0eC5wcmludGxuKGAucHJvdG90eXBlKTtgKTtcbiAgICB9XG4gICAgc3RtdC5nZXR0ZXJzLmZvckVhY2goKGdldHRlcikgPT4gdGhpcy5fdmlzaXRDbGFzc0dldHRlcihzdG10LCBnZXR0ZXIsIGN0eCkpO1xuICAgIHN0bXQubWV0aG9kcy5mb3JFYWNoKChtZXRob2QpID0+IHRoaXMuX3Zpc2l0Q2xhc3NNZXRob2Qoc3RtdCwgbWV0aG9kLCBjdHgpKTtcbiAgICBjdHgucG9wQ2xhc3MoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NDb25zdHJ1Y3RvcihzdG10OiBvLkNsYXNzU3RtdCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpIHtcbiAgICBjdHgucHJpbnQoYGZ1bmN0aW9uICR7c3RtdC5uYW1lfShgKTtcbiAgICBpZiAoaXNQcmVzZW50KHN0bXQuY29uc3RydWN0b3JNZXRob2QpKSB7XG4gICAgICB0aGlzLl92aXNpdFBhcmFtcyhzdG10LmNvbnN0cnVjdG9yTWV0aG9kLnBhcmFtcywgY3R4KTtcbiAgICB9XG4gICAgY3R4LnByaW50bG4oYCkge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICBpZiAoaXNQcmVzZW50KHN0bXQuY29uc3RydWN0b3JNZXRob2QpKSB7XG4gICAgICBpZiAoc3RtdC5jb25zdHJ1Y3Rvck1ldGhvZC5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY3R4LnByaW50bG4oYHZhciBzZWxmID0gdGhpcztgKTtcbiAgICAgICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5jb25zdHJ1Y3Rvck1ldGhvZC5ib2R5LCBjdHgpO1xuICAgICAgfVxuICAgIH1cbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50bG4oYH1gKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NHZXR0ZXIoc3RtdDogby5DbGFzc1N0bXQsIGdldHRlcjogby5DbGFzc0dldHRlciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpIHtcbiAgICBjdHgucHJpbnRsbihcbiAgICAgICAgYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgke3N0bXQubmFtZX0ucHJvdG90eXBlLCAnJHtnZXR0ZXIubmFtZX0nLCB7IGdldDogZnVuY3Rpb24oKSB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIGlmIChnZXR0ZXIuYm9keS5sZW5ndGggPiAwKSB7XG4gICAgICBjdHgucHJpbnRsbihgdmFyIHNlbGYgPSB0aGlzO2ApO1xuICAgICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoZ2V0dGVyLmJvZHksIGN0eCk7XG4gICAgfVxuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfX0pO2ApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRDbGFzc01ldGhvZChzdG10OiBvLkNsYXNzU3RtdCwgbWV0aG9kOiBvLkNsYXNzTWV0aG9kLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCkge1xuICAgIGN0eC5wcmludChgJHtzdG10Lm5hbWV9LnByb3RvdHlwZS4ke21ldGhvZC5uYW1lfSA9IGZ1bmN0aW9uKGApO1xuICAgIHRoaXMuX3Zpc2l0UGFyYW1zKG1ldGhvZC5wYXJhbXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oYCkge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICBpZiAobWV0aG9kLmJvZHkubGVuZ3RoID4gMCkge1xuICAgICAgY3R4LnByaW50bG4oYHZhciBzZWxmID0gdGhpcztgKTtcbiAgICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKG1ldGhvZC5ib2R5LCBjdHgpO1xuICAgIH1cbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50bG4oYH07YCk7XG4gIH1cblxuICB2aXNpdFJlYWRWYXJFeHByKGFzdDogby5SZWFkVmFyRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBzdHJpbmcge1xuICAgIGlmIChhc3QuYnVpbHRpbiA9PT0gby5CdWlsdGluVmFyLlRoaXMpIHtcbiAgICAgIGN0eC5wcmludCgnc2VsZicpO1xuICAgIH0gZWxzZSBpZiAoYXN0LmJ1aWx0aW4gPT09IG8uQnVpbHRpblZhci5TdXBlcikge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgYCdzdXBlcicgbmVlZHMgdG8gYmUgaGFuZGxlZCBhdCBhIHBhcmVudCBhc3Qgbm9kZSwgbm90IGF0IHRoZSB2YXJpYWJsZSBsZXZlbCFgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VwZXIudmlzaXRSZWFkVmFyRXhwcihhc3QsIGN0eCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGVjbGFyZVZhclN0bXQoc3RtdDogby5EZWNsYXJlVmFyU3RtdCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgdmFyICR7c3RtdC5uYW1lfSA9IGApO1xuICAgIHN0bXQudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oYDtgKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdENhc3RFeHByKGFzdDogby5DYXN0RXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGFzdC52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEludm9rZUZ1bmN0aW9uRXhwcihleHByOiBvLkludm9rZUZ1bmN0aW9uRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBzdHJpbmcge1xuICAgIHZhciBmbkV4cHIgPSBleHByLmZuO1xuICAgIGlmIChmbkV4cHIgaW5zdGFuY2VvZiBvLlJlYWRWYXJFeHByICYmIGZuRXhwci5idWlsdGluID09PSBvLkJ1aWx0aW5WYXIuU3VwZXIpIHtcbiAgICAgIGN0eC5jdXJyZW50Q2xhc3MucGFyZW50LnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgICAgY3R4LnByaW50KGAuY2FsbCh0aGlzYCk7XG4gICAgICBpZiAoZXhwci5hcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY3R4LnByaW50KGAsIGApO1xuICAgICAgICB0aGlzLnZpc2l0QWxsRXhwcmVzc2lvbnMoZXhwci5hcmdzLCBjdHgsICcsJyk7XG4gICAgICB9XG4gICAgICBjdHgucHJpbnQoYClgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VwZXIudmlzaXRJbnZva2VGdW5jdGlvbkV4cHIoZXhwciwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRGdW5jdGlvbkV4cHIoYXN0OiBvLkZ1bmN0aW9uRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgZnVuY3Rpb24oYCk7XG4gICAgdGhpcy5fdmlzaXRQYXJhbXMoYXN0LnBhcmFtcywgY3R4KTtcbiAgICBjdHgucHJpbnRsbihgKSB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKGFzdC5zdGF0ZW1lbnRzLCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnQoYH1gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdERlY2xhcmVGdW5jdGlvblN0bXQoc3RtdDogby5EZWNsYXJlRnVuY3Rpb25TdG10LCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgY3R4LnByaW50KGBmdW5jdGlvbiAke3N0bXQubmFtZX0oYCk7XG4gICAgdGhpcy5fdmlzaXRQYXJhbXMoc3RtdC5wYXJhbXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oYCkge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LnN0YXRlbWVudHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludGxuKGB9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRUcnlDYXRjaFN0bXQoc3RtdDogby5UcnlDYXRjaFN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnRsbihgdHJ5IHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5ib2R5U3RtdHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludGxuKGB9IGNhdGNoICgke0NBVENIX0VSUk9SX1ZBUi5uYW1lfSkge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB2YXIgY2F0Y2hTdG10cyA9IFtcbiAgICAgIDxvLlN0YXRlbWVudD5DQVRDSF9TVEFDS19WQVIuc2V0KENBVENIX0VSUk9SX1ZBUi5wcm9wKCdzdGFjaycpKVxuICAgICAgICAgIC50b0RlY2xTdG10KG51bGwsIFtvLlN0bXRNb2RpZmllci5GaW5hbF0pXG4gICAgXS5jb25jYXQoc3RtdC5jYXRjaFN0bXRzKTtcbiAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhjYXRjaFN0bXRzLCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRQYXJhbXMocGFyYW1zOiBvLkZuUGFyYW1bXSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0QWxsT2JqZWN0cygocGFyYW0pID0+IGN0eC5wcmludChwYXJhbS5uYW1lKSwgcGFyYW1zLCBjdHgsICcsJyk7XG4gIH1cblxuICBnZXRCdWlsdGluTWV0aG9kTmFtZShtZXRob2Q6IG8uQnVpbHRpbk1ldGhvZCk6IHN0cmluZyB7XG4gICAgdmFyIG5hbWU7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2Ugby5CdWlsdGluTWV0aG9kLkNvbmNhdEFycmF5OlxuICAgICAgICBuYW1lID0gJ2NvbmNhdCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5NZXRob2QuU3Vic2NyaWJlT2JzZXJ2YWJsZTpcbiAgICAgICAgbmFtZSA9ICdzdWJzY3JpYmUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CdWlsdGluTWV0aG9kLmJpbmQ6XG4gICAgICAgIG5hbWUgPSAnYmluZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYFVua25vd24gYnVpbHRpbiBtZXRob2Q6ICR7bWV0aG9kfWApO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.MODULE_SUFFIX = lang_1.IS_DART ? '.dart' : '';\r\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\r\nvar DASH_CASE_REGEXP = /-([a-z])/g;\r\nfunction camelCaseToDashCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });\r\n}\r\nexports.camelCaseToDashCase = camelCaseToDashCase;\r\nfunction dashCaseToCamelCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });\r\n}\r\nexports.dashCaseToCamelCase = dashCaseToCamelCase;\r\nfunction splitAtColon(input, defaultValues) {\r\n var parts = lang_1.StringWrapper.split(input.trim(), /\\s*:\\s*/g);\r\n if (parts.length > 1) {\r\n return parts;\r\n }\r\n else {\r\n return defaultValues;\r\n }\r\n}\r\nexports.splitAtColon = splitAtColon;\r\nfunction sanitizeIdentifier(name) {\r\n return lang_1.StringWrapper.replaceAll(name, /\\W/g, '_');\r\n}\r\nexports.sanitizeIdentifier = sanitizeIdentifier;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBb0QsMEJBQTBCLENBQUMsQ0FBQTtBQUVwRSxxQkFBYSxHQUFHLGNBQU8sR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBRWxELElBQUksaUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBQ25DLElBQUksZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0FBRW5DLDZCQUFvQyxLQUFhO0lBQy9DLE1BQU0sQ0FBQyxvQkFBYSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFDeEIsVUFBQyxDQUFDLElBQU8sTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBSGUsMkJBQW1CLHNCQUdsQyxDQUFBO0FBRUQsNkJBQW9DLEtBQWE7SUFDL0MsTUFBTSxDQUFDLG9CQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUN2QixVQUFDLENBQUMsSUFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUhlLDJCQUFtQixzQkFHbEMsQ0FBQTtBQUVELHNCQUE2QixLQUFhLEVBQUUsYUFBdUI7SUFDakUsSUFBSSxLQUFLLEdBQUcsb0JBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFELEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUN2QixDQUFDO0FBQ0gsQ0FBQztBQVBlLG9CQUFZLGVBTzNCLENBQUE7QUFFRCw0QkFBbUMsSUFBWTtJQUM3QyxNQUFNLENBQUMsb0JBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRmUsMEJBQWtCLHFCQUVqQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJU19EQVJULCBTdHJpbmdXcmFwcGVyLCBNYXRoLCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5leHBvcnQgdmFyIE1PRFVMRV9TVUZGSVggPSBJU19EQVJUID8gJy5kYXJ0JyA6ICcnO1xuXG52YXIgQ0FNRUxfQ0FTRV9SRUdFWFAgPSAvKFtBLVpdKS9nO1xudmFyIERBU0hfQ0FTRV9SRUdFWFAgPSAvLShbYS16XSkvZztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsQ2FzZVRvRGFzaENhc2UoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoaW5wdXQsIENBTUVMX0NBU0VfUkVHRVhQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiB7IHJldHVybiAnLScgKyBtWzFdLnRvTG93ZXJDYXNlKCk7IH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGFzaENhc2VUb0NhbWVsQ2FzZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChpbnB1dCwgREFTSF9DQVNFX1JFR0VYUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSkgPT4geyByZXR1cm4gbVsxXS50b1VwcGVyQ2FzZSgpOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0QXRDb2xvbihpbnB1dDogc3RyaW5nLCBkZWZhdWx0VmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgdmFyIHBhcnRzID0gU3RyaW5nV3JhcHBlci5zcGxpdChpbnB1dC50cmltKCksIC9cXHMqOlxccyovZyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUlkZW50aWZpZXIobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChuYW1lLCAvXFxXL2csICdfJyk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar abstract_emitter_1 = require('./abstract_emitter');\r\nvar abstract_js_emitter_1 = require('./abstract_js_emitter');\r\nvar util_1 = require('../util');\r\nfunction jitStatements(sourceUrl, statements, resultVar) {\r\n var converter = new JitEmitterVisitor();\r\n var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot([resultVar]);\r\n converter.visitAllStatements(statements, ctx);\r\n return lang_1.evalExpression(sourceUrl, resultVar, ctx.toSource(), converter.getArgs());\r\n}\r\nexports.jitStatements = jitStatements;\r\nvar JitEmitterVisitor = (function (_super) {\r\n __extends(JitEmitterVisitor, _super);\r\n function JitEmitterVisitor() {\r\n _super.apply(this, arguments);\r\n this._evalArgNames = [];\r\n this._evalArgValues = [];\r\n }\r\n JitEmitterVisitor.prototype.getArgs = function () {\r\n var result = {};\r\n for (var i = 0; i < this._evalArgNames.length; i++) {\r\n result[this._evalArgNames[i]] = this._evalArgValues[i];\r\n }\r\n return result;\r\n };\r\n JitEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\r\n var value = ast.value.runtime;\r\n var id = this._evalArgValues.indexOf(value);\r\n if (id === -1) {\r\n id = this._evalArgValues.length;\r\n this._evalArgValues.push(value);\r\n var name = lang_1.isPresent(ast.value.name) ? util_1.sanitizeIdentifier(ast.value.name) : 'val';\r\n this._evalArgNames.push(util_1.sanitizeIdentifier(\"jit_\" + name + id));\r\n }\r\n ctx.print(this._evalArgNames[id]);\r\n return null;\r\n };\r\n return JitEmitterVisitor;\r\n}(abstract_js_emitter_1.AbstractJsEmitterVisitor));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0X2ppdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9vdXRwdXQvb3V0cHV0X2ppdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxDLGlDQUFvQyxvQkFBb0IsQ0FBQyxDQUFBO0FBQ3pELG9DQUF1Qyx1QkFBdUIsQ0FBQyxDQUFBO0FBQy9ELHFCQUFpQyxTQUFTLENBQUMsQ0FBQTtBQUUzQyx1QkFBOEIsU0FBaUIsRUFBRSxVQUF5QixFQUM1QyxTQUFpQjtJQUM3QyxJQUFJLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQUcsd0NBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4RCxTQUFTLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxxQkFBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFOZSxxQkFBYSxnQkFNNUIsQ0FBQTtBQUVEO0lBQWdDLHFDQUF3QjtJQUF4RDtRQUFnQyw4QkFBd0I7UUFDOUMsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDN0IsbUJBQWMsR0FBVSxFQUFFLENBQUM7SUFzQnJDLENBQUM7SUFwQkMsbUNBQU8sR0FBUDtRQUNFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw2Q0FBaUIsR0FBakIsVUFBa0IsR0FBbUIsRUFBRSxHQUEwQjtRQUMvRCxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2QsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksSUFBSSxHQUFHLGdCQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyx5QkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNsRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx5QkFBa0IsQ0FBQyxTQUFPLElBQUksR0FBRyxFQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNILHdCQUFDO0FBQUQsQ0FBQyxBQXhCRCxDQUFnQyw4Q0FBd0IsR0F3QnZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBpc1N0cmluZyxcbiAgZXZhbEV4cHJlc3Npb24sXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIFN0cmluZ1dyYXBwZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi9vdXRwdXRfYXN0JztcbmltcG9ydCB7RW1pdHRlclZpc2l0b3JDb250ZXh0fSBmcm9tICcuL2Fic3RyYWN0X2VtaXR0ZXInO1xuaW1wb3J0IHtBYnN0cmFjdEpzRW1pdHRlclZpc2l0b3J9IGZyb20gJy4vYWJzdHJhY3RfanNfZW1pdHRlcic7XG5pbXBvcnQge3Nhbml0aXplSWRlbnRpZmllcn0gZnJvbSAnLi4vdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBqaXRTdGF0ZW1lbnRzKHNvdXJjZVVybDogc3RyaW5nLCBzdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0VmFyOiBzdHJpbmcpOiBhbnkge1xuICB2YXIgY29udmVydGVyID0gbmV3IEppdEVtaXR0ZXJWaXNpdG9yKCk7XG4gIHZhciBjdHggPSBFbWl0dGVyVmlzaXRvckNvbnRleHQuY3JlYXRlUm9vdChbcmVzdWx0VmFyXSk7XG4gIGNvbnZlcnRlci52aXNpdEFsbFN0YXRlbWVudHMoc3RhdGVtZW50cywgY3R4KTtcbiAgcmV0dXJuIGV2YWxFeHByZXNzaW9uKHNvdXJjZVVybCwgcmVzdWx0VmFyLCBjdHgudG9Tb3VyY2UoKSwgY29udmVydGVyLmdldEFyZ3MoKSk7XG59XG5cbmNsYXNzIEppdEVtaXR0ZXJWaXNpdG9yIGV4dGVuZHMgQWJzdHJhY3RKc0VtaXR0ZXJWaXNpdG9yIHtcbiAgcHJpdmF0ZSBfZXZhbEFyZ05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9ldmFsQXJnVmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gIGdldEFyZ3MoKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2V2YWxBcmdOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W3RoaXMuX2V2YWxBcmdOYW1lc1tpXV0gPSB0aGlzLl9ldmFsQXJnVmFsdWVzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgdmlzaXRFeHRlcm5hbEV4cHIoYXN0OiBvLkV4dGVybmFsRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIHZhciB2YWx1ZSA9IGFzdC52YWx1ZS5ydW50aW1lO1xuICAgIHZhciBpZCA9IHRoaXMuX2V2YWxBcmdWYWx1ZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgaWYgKGlkID09PSAtMSkge1xuICAgICAgaWQgPSB0aGlzLl9ldmFsQXJnVmFsdWVzLmxlbmd0aDtcbiAgICAgIHRoaXMuX2V2YWxBcmdWYWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICB2YXIgbmFtZSA9IGlzUHJlc2VudChhc3QudmFsdWUubmFtZSkgPyBzYW5pdGl6ZUlkZW50aWZpZXIoYXN0LnZhbHVlLm5hbWUpIDogJ3ZhbCc7XG4gICAgICB0aGlzLl9ldmFsQXJnTmFtZXMucHVzaChzYW5pdGl6ZUlkZW50aWZpZXIoYGppdF8ke25hbWV9JHtpZH1gKSk7XG4gICAgfVxuICAgIGN0eC5wcmludCh0aGlzLl9ldmFsQXJnTmFtZXNbaWRdKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar o = require('./output_ast');\r\nvar abstract_emitter_1 = require('./abstract_emitter');\r\nvar path_util_1 = require('./path_util');\r\nvar _debugModuleUrl = 'asset://debug/lib';\r\nfunction debugOutputAstAsDart(ast) {\r\n var converter = new _DartEmitterVisitor(_debugModuleUrl);\r\n var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot([]);\r\n var asts;\r\n if (lang_1.isArray(ast)) {\r\n asts = ast;\r\n }\r\n else {\r\n asts = [ast];\r\n }\r\n asts.forEach(function (ast) {\r\n if (ast instanceof o.Statement) {\r\n ast.visitStatement(converter, ctx);\r\n }\r\n else if (ast instanceof o.Expression) {\r\n ast.visitExpression(converter, ctx);\r\n }\r\n else if (ast instanceof o.Type) {\r\n ast.visitType(converter, ctx);\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Don't know how to print debug info for \" + ast);\r\n }\r\n });\r\n return ctx.toSource();\r\n}\r\nexports.debugOutputAstAsDart = debugOutputAstAsDart;\r\nvar DartEmitter = (function () {\r\n function DartEmitter() {\r\n }\r\n DartEmitter.prototype.emitStatements = function (moduleUrl, stmts, exportedVars) {\r\n var srcParts = [];\r\n // Note: We are not creating a library here as Dart does not need it.\r\n // Dart analzyer might complain about it though.\r\n var converter = new _DartEmitterVisitor(moduleUrl);\r\n var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot(exportedVars);\r\n converter.visitAllStatements(stmts, ctx);\r\n converter.importsWithPrefixes.forEach(function (prefix, importedModuleUrl) {\r\n srcParts.push(\"import '\" + path_util_1.getImportModulePath(moduleUrl, importedModuleUrl, path_util_1.ImportEnv.Dart) + \"' as \" + prefix + \";\");\r\n });\r\n srcParts.push(ctx.toSource());\r\n return srcParts.join('\\n');\r\n };\r\n return DartEmitter;\r\n}());\r\nexports.DartEmitter = DartEmitter;\r\nvar _DartEmitterVisitor = (function (_super) {\r\n __extends(_DartEmitterVisitor, _super);\r\n function _DartEmitterVisitor(_moduleUrl) {\r\n _super.call(this, true);\r\n this._moduleUrl = _moduleUrl;\r\n this.importsWithPrefixes = new Map();\r\n }\r\n _DartEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\r\n this._visitIdentifier(ast.value, ast.typeParams, ctx);\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\r\n if (stmt.hasModifier(o.StmtModifier.Final)) {\r\n if (isConstType(stmt.type)) {\r\n ctx.print(\"const \");\r\n }\r\n else {\r\n ctx.print(\"final \");\r\n }\r\n }\r\n else if (lang_1.isBlank(stmt.type)) {\r\n ctx.print(\"var \");\r\n }\r\n if (lang_1.isPresent(stmt.type)) {\r\n stmt.type.visitType(this, ctx);\r\n ctx.print(\" \");\r\n }\r\n ctx.print(stmt.name + \" = \");\r\n stmt.value.visitExpression(this, ctx);\r\n ctx.println(\";\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\r\n ctx.print(\"(\");\r\n ast.value.visitExpression(this, ctx);\r\n ctx.print(\" as \");\r\n ast.type.visitType(this, ctx);\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\r\n var _this = this;\r\n ctx.pushClass(stmt);\r\n ctx.print(\"class \" + stmt.name);\r\n if (lang_1.isPresent(stmt.parent)) {\r\n ctx.print(\" extends \");\r\n stmt.parent.visitExpression(this, ctx);\r\n }\r\n ctx.println(\" {\");\r\n ctx.incIndent();\r\n stmt.fields.forEach(function (field) { return _this._visitClassField(field, ctx); });\r\n if (lang_1.isPresent(stmt.constructorMethod)) {\r\n this._visitClassConstructor(stmt, ctx);\r\n }\r\n stmt.getters.forEach(function (getter) { return _this._visitClassGetter(getter, ctx); });\r\n stmt.methods.forEach(function (method) { return _this._visitClassMethod(method, ctx); });\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n ctx.popClass();\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype._visitClassField = function (field, ctx) {\r\n if (field.hasModifier(o.StmtModifier.Final)) {\r\n ctx.print(\"final \");\r\n }\r\n else if (lang_1.isBlank(field.type)) {\r\n ctx.print(\"var \");\r\n }\r\n if (lang_1.isPresent(field.type)) {\r\n field.type.visitType(this, ctx);\r\n ctx.print(\" \");\r\n }\r\n ctx.println(field.name + \";\");\r\n };\r\n _DartEmitterVisitor.prototype._visitClassGetter = function (getter, ctx) {\r\n if (lang_1.isPresent(getter.type)) {\r\n getter.type.visitType(this, ctx);\r\n ctx.print(\" \");\r\n }\r\n ctx.println(\"get \" + getter.name + \" {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(getter.body, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n _DartEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\r\n ctx.print(stmt.name + \"(\");\r\n this._visitParams(stmt.constructorMethod.params, ctx);\r\n ctx.print(\")\");\r\n var ctorStmts = stmt.constructorMethod.body;\r\n var superCtorExpr = ctorStmts.length > 0 ? getSuperConstructorCallExpr(ctorStmts[0]) : null;\r\n if (lang_1.isPresent(superCtorExpr)) {\r\n ctx.print(\": \");\r\n superCtorExpr.visitExpression(this, ctx);\r\n ctorStmts = ctorStmts.slice(1);\r\n }\r\n ctx.println(\" {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(ctorStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n _DartEmitterVisitor.prototype._visitClassMethod = function (method, ctx) {\r\n if (lang_1.isPresent(method.type)) {\r\n method.type.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"void\");\r\n }\r\n ctx.print(\" \" + method.name + \"(\");\r\n this._visitParams(method.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(method.body, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n _DartEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\r\n ctx.print(\"(\");\r\n this._visitParams(ast.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(ast.statements, ctx);\r\n ctx.decIndent();\r\n ctx.print(\"}\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\r\n if (lang_1.isPresent(stmt.type)) {\r\n stmt.type.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"void\");\r\n }\r\n ctx.print(\" \" + stmt.name + \"(\");\r\n this._visitParams(stmt.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.statements, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\r\n var name;\r\n switch (method) {\r\n case o.BuiltinMethod.ConcatArray:\r\n name = '.addAll';\r\n break;\r\n case o.BuiltinMethod.SubscribeObservable:\r\n name = 'listen';\r\n break;\r\n case o.BuiltinMethod.bind:\r\n name = null;\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown builtin method: \" + method);\r\n }\r\n return name;\r\n };\r\n _DartEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\r\n ctx.println(\"try {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.bodyStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"} catch (\" + abstract_emitter_1.CATCH_ERROR_VAR.name + \", \" + abstract_emitter_1.CATCH_STACK_VAR.name + \") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.catchStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\r\n switch (ast.operator) {\r\n case o.BinaryOperator.Identical:\r\n ctx.print(\"identical(\");\r\n ast.lhs.visitExpression(this, ctx);\r\n ctx.print(\", \");\r\n ast.rhs.visitExpression(this, ctx);\r\n ctx.print(\")\");\r\n break;\r\n case o.BinaryOperator.NotIdentical:\r\n ctx.print(\"!identical(\");\r\n ast.lhs.visitExpression(this, ctx);\r\n ctx.print(\", \");\r\n ast.rhs.visitExpression(this, ctx);\r\n ctx.print(\")\");\r\n break;\r\n default:\r\n _super.prototype.visitBinaryOperatorExpr.call(this, ast, ctx);\r\n }\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {\r\n if (isConstType(ast.type)) {\r\n ctx.print(\"const \");\r\n }\r\n return _super.prototype.visitLiteralArrayExpr.call(this, ast, ctx);\r\n };\r\n _DartEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {\r\n if (isConstType(ast.type)) {\r\n ctx.print(\"const \");\r\n }\r\n if (lang_1.isPresent(ast.valueType)) {\r\n ctx.print(\"<String, \");\r\n ast.valueType.visitType(this, ctx);\r\n ctx.print(\">\");\r\n }\r\n return _super.prototype.visitLiteralMapExpr.call(this, ast, ctx);\r\n };\r\n _DartEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {\r\n ctx.print(isConstType(ast.type) ? \"const\" : \"new\");\r\n ctx.print(' ');\r\n ast.classExpr.visitExpression(this, ctx);\r\n ctx.print(\"(\");\r\n this.visitAllExpressions(ast.args, ctx, \",\");\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {\r\n var typeStr;\r\n switch (type.name) {\r\n case o.BuiltinTypeName.Bool:\r\n typeStr = 'bool';\r\n break;\r\n case o.BuiltinTypeName.Dynamic:\r\n typeStr = 'dynamic';\r\n break;\r\n case o.BuiltinTypeName.Function:\r\n typeStr = 'Function';\r\n break;\r\n case o.BuiltinTypeName.Number:\r\n typeStr = 'num';\r\n break;\r\n case o.BuiltinTypeName.Int:\r\n typeStr = 'int';\r\n break;\r\n case o.BuiltinTypeName.String:\r\n typeStr = 'String';\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unsupported builtin type \" + type.name);\r\n }\r\n ctx.print(typeStr);\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitExternalType = function (ast, ctx) {\r\n this._visitIdentifier(ast.value, ast.typeParams, ctx);\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitArrayType = function (type, ctx) {\r\n ctx.print(\"List<\");\r\n if (lang_1.isPresent(type.of)) {\r\n type.of.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"dynamic\");\r\n }\r\n ctx.print(\">\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype.visitMapType = function (type, ctx) {\r\n ctx.print(\"Map<String, \");\r\n if (lang_1.isPresent(type.valueType)) {\r\n type.valueType.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"dynamic\");\r\n }\r\n ctx.print(\">\");\r\n return null;\r\n };\r\n _DartEmitterVisitor.prototype._visitParams = function (params, ctx) {\r\n var _this = this;\r\n this.visitAllObjects(function (param) {\r\n if (lang_1.isPresent(param.type)) {\r\n param.type.visitType(_this, ctx);\r\n ctx.print(' ');\r\n }\r\n ctx.print(param.name);\r\n }, params, ctx, ',');\r\n };\r\n _DartEmitterVisitor.prototype._visitIdentifier = function (value, typeParams, ctx) {\r\n var _this = this;\r\n if (lang_1.isPresent(value.moduleUrl) && value.moduleUrl != this._moduleUrl) {\r\n var prefix = this.importsWithPrefixes.get(value.moduleUrl);\r\n if (lang_1.isBlank(prefix)) {\r\n prefix = \"import\" + this.importsWithPrefixes.size;\r\n this.importsWithPrefixes.set(value.moduleUrl, prefix);\r\n }\r\n ctx.print(prefix + \".\");\r\n }\r\n ctx.print(value.name);\r\n if (lang_1.isPresent(typeParams) && typeParams.length > 0) {\r\n ctx.print(\"<\");\r\n this.visitAllObjects(function (type) { return type.visitType(_this, ctx); }, typeParams, ctx, ',');\r\n ctx.print(\">\");\r\n }\r\n };\r\n return _DartEmitterVisitor;\r\n}(abstract_emitter_1.AbstractEmitterVisitor));\r\nfunction getSuperConstructorCallExpr(stmt) {\r\n if (stmt instanceof o.ExpressionStatement) {\r\n var expr = stmt.expr;\r\n if (expr instanceof o.InvokeFunctionExpr) {\r\n var fn = expr.fn;\r\n if (fn instanceof o.ReadVarExpr) {\r\n if (fn.builtin === o.BuiltinVar.Super) {\r\n return expr;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\nfunction isConstType(type) {\r\n return lang_1.isPresent(type) && type.hasModifier(o.TypeModifier.Const);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFydF9lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL291dHB1dC9kYXJ0X2VtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscUJBUU8sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQywyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUU3RCxJQUFZLENBQUMsV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUNsQyxpQ0FPTyxvQkFBb0IsQ0FBQyxDQUFBO0FBQzVCLDBCQUE2QyxhQUFhLENBQUMsQ0FBQTtBQUUzRCxJQUFJLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQztBQUUxQyw4QkFBcUMsR0FBZ0Q7SUFDbkYsSUFBSSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RCxJQUFJLEdBQUcsR0FBRyx3Q0FBcUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxJQUFXLENBQUM7SUFDaEIsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLEdBQVUsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFHO1FBQ2YsRUFBRSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMs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O0lBQ0gsMEJBQUM7QUFBRCxDQUFDLEFBclNELENBQWtDLHlDQUFzQixHQXFTdkQ7QUFFRCxxQ0FBcUMsSUFBaUI7SUFDcEQsRUFBRSxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQscUJBQXFCLElBQVk7SUFDL0IsTUFBTSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdHJpbmdXcmFwcGVyLFxuICBSZWdFeHBXcmFwcGVyLFxuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIE1hdGgsXG4gIGlzU3RyaW5nLFxuICBpc0FycmF5XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtDb21waWxlSWRlbnRpZmllck1ldGFkYXRhfSBmcm9tICcuLi9jb21waWxlX21ldGFkYXRhJztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi9vdXRwdXRfYXN0JztcbmltcG9ydCB7XG4gIE91dHB1dEVtaXR0ZXIsXG4gIEVtaXR0ZXJWaXNpdG9yQ29udGV4dCxcbiAgQWJzdHJhY3RFbWl0dGVyVmlzaXRvcixcbiAgQ0FUQ0hfRVJST1JfVkFSLFxuICBDQVRDSF9TVEFDS19WQVIsXG4gIGVzY2FwZVNpbmdsZVF1b3RlU3RyaW5nXG59IGZyb20gJy4vYWJzdHJhY3RfZW1pdHRlcic7XG5pbXBvcnQge2dldEltcG9ydE1vZHVsZVBhdGgsIEltcG9ydEVudn0gZnJvbSAnLi9wYXRoX3V0aWwnO1xuXG52YXIgX2RlYnVnTW9kdWxlVXJsID0gJ2Fzc2V0Oi8vZGVidWcvbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnT3V0cHV0QXN0QXNEYXJ0KGFzdDogby5TdGF0ZW1lbnQgfCBvLkV4cHJlc3Npb24gfCBvLlR5cGUgfCBhbnlbXSk6IHN0cmluZyB7XG4gIHZhciBjb252ZXJ0ZXIgPSBuZXcgX0RhcnRFbWl0dGVyVmlzaXRvcihfZGVidWdNb2R1bGVVcmwpO1xuICB2YXIgY3R4ID0gRW1pdHRlclZpc2l0b3JDb250ZXh0LmNyZWF0ZVJvb3QoW10pO1xuICB2YXIgYXN0czogYW55W107XG4gIGlmIChpc0FycmF5KGFzdCkpIHtcbiAgICBhc3RzID0gPGFueVtdPmFzdDtcbiAgfSBlbHNlIHtcbiAgICBhc3RzID0gW2FzdF07XG4gIH1cbiAgYXN0cy5mb3JFYWNoKChhc3QpID0+IHtcbiAgICBpZiAoYXN0IGluc3RhbmNlb2Ygby5TdGF0ZW1lbnQpIHtcbiAgICAgIGFzdC52aXNpdFN0YXRlbWVudChjb252ZXJ0ZXIsIGN0eCk7XG4gICAgfSBlbHNlIGlmIChhc3QgaW5zdGFuY2VvZiBvLkV4cHJlc3Npb24pIHtcbiAgICAgIGFzdC52aXNpdEV4cHJlc3Npb24oY29udmVydGVyLCBjdHgpO1xuICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2Ygby5UeXBlKSB7XG4gICAgICBhc3QudmlzaXRUeXBlKGNvbnZlcnRlciwgY3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYERvbid0IGtub3cgaG93IHRvIHByaW50IGRlYnVnIGluZm8gZm9yICR7YXN0fWApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjdHgudG9Tb3VyY2UoKTtcbn1cblxuZXhwb3J0IGNsYXNzIERhcnRFbWl0dGVyIGltcGxlbWVudHMgT3V0cHV0RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgZW1pdFN0YXRlbWVudHMobW9kdWxlVXJsOiBzdHJpbmcsIHN0bXRzOiBvLlN0YXRlbWVudFtdLCBleHBvcnRlZFZhcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICB2YXIgc3JjUGFydHMgPSBbXTtcbiAgICAvLyBOb3RlOiBXZSBhcmUgbm90IGNyZWF0aW5nIGEgbGlicmFyeSBoZXJlIGFzIERhcnQgZG9lcyBub3QgbmVlZCBpdC5cbiAgICAvLyBEYXJ0IGFuYWx6eWVyIG1pZ2h0IGNvbXBsYWluIGFib3V0IGl0IHRob3VnaC5cblxuICAgIHZhciBjb252ZXJ0ZXIgPSBuZXcgX0RhcnRFbWl0dGVyVmlzaXRvcihtb2R1bGVVcmwpO1xuICAgIHZhciBjdHggPSBFbWl0dGVyVmlzaXRvckNvbnRleHQuY3JlYXRlUm9vdChleHBvcnRlZFZhcnMpO1xuICAgIGNvbnZlcnRlci52aXNpdEFsbFN0YXRlbWVudHMoc3RtdHMsIGN0eCk7XG5cbiAgICBjb252ZXJ0ZXIuaW1wb3J0c1dpdGhQcmVmaXhlcy5mb3JFYWNoKChwcmVmaXgsIGltcG9ydGVkTW9kdWxlVXJsKSA9PiB7XG4gICAgICBzcmNQYXJ0cy5wdXNoKFxuICAgICAgICAgIGBpbXBvcnQgJyR7Z2V0SW1wb3J0TW9kdWxlUGF0aChtb2R1bGVVcmwsIGltcG9ydGVkTW9kdWxlVXJsLCBJbXBvcnRFbnYuRGFydCl9JyBhcyAke3ByZWZpeH07YCk7XG4gICAgfSk7XG4gICAgc3JjUGFydHMucHVzaChjdHgudG9Tb3VyY2UoKSk7XG4gICAgcmV0dXJuIHNyY1BhcnRzLmpvaW4oJ1xcbicpO1xuICB9XG59XG5cbmNsYXNzIF9EYXJ0RW1pdHRlclZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdEVtaXR0ZXJWaXNpdG9yIGltcGxlbWVudHMgby5UeXBlVmlzaXRvciB7XG4gIGltcG9ydHNXaXRoUHJlZml4ZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZHVsZVVybDogc3RyaW5nKSB7IHN1cGVyKHRydWUpOyB9XG5cbiAgdmlzaXRFeHRlcm5hbEV4cHIoYXN0OiBvLkV4dGVybmFsRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIHRoaXMuX3Zpc2l0SWRlbnRpZmllcihhc3QudmFsdWUsIGFzdC50eXBlUGFyYW1zLCBjdHgpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGVjbGFyZVZhclN0bXQoc3RtdDogby5EZWNsYXJlVmFyU3RtdCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGlmIChzdG10Lmhhc01vZGlmaWVyKG8uU3RtdE1vZGlmaWVyLkZpbmFsKSkge1xuICAgICAgaWYgKGlzQ29uc3RUeXBlKHN0bXQudHlwZSkpIHtcbiAgICAgICAgY3R4LnByaW50KGBjb25zdCBgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0eC5wcmludChgZmluYWwgYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0JsYW5rKHN0bXQudHlwZSkpIHtcbiAgICAgIGN0eC5wcmludChgdmFyIGApO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHN0bXQudHlwZSkpIHtcbiAgICAgIHN0bXQudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICAgIGN0eC5wcmludChgIGApO1xuICAgIH1cbiAgICBjdHgucHJpbnQoYCR7c3RtdC5uYW1lfSA9IGApO1xuICAgIHN0bXQudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oYDtgKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdENhc3RFeHByKGFzdDogby5DYXN0RXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgKGApO1xuICAgIGFzdC52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICBjdHgucHJpbnQoYCBhcyBgKTtcbiAgICBhc3QudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICBjdHgucHJpbnQoYClgKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdERlY2xhcmVDbGFzc1N0bXQoc3RtdDogby5DbGFzc1N0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHVzaENsYXNzKHN0bXQpO1xuICAgIGN0eC5wcmludChgY2xhc3MgJHtzdG10Lm5hbWV9YCk7XG4gICAgaWYgKGlzUHJlc2VudChzdG10LnBhcmVudCkpIHtcbiAgICAgIGN0eC5wcmludChgIGV4dGVuZHMgYCk7XG4gICAgICBzdG10LnBhcmVudC52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB9XG4gICAgY3R4LnByaW50bG4oYCB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHN0bXQuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB0aGlzLl92aXNpdENsYXNzRmllbGQoZmllbGQsIGN0eCkpO1xuICAgIGlmIChpc1ByZXNlbnQoc3RtdC5jb25zdHJ1Y3Rvck1ldGhvZCkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0Q2xhc3NDb25zdHJ1Y3RvcihzdG10LCBjdHgpO1xuICAgIH1cbiAgICBzdG10LmdldHRlcnMuZm9yRWFjaCgoZ2V0dGVyKSA9PiB0aGlzLl92aXNpdENsYXNzR2V0dGVyKGdldHRlciwgY3R4KSk7XG4gICAgc3RtdC5tZXRob2RzLmZvckVhY2goKG1ldGhvZCkgPT4gdGhpcy5fdmlzaXRDbGFzc01ldGhvZChtZXRob2QsIGN0eCkpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICAgIGN0eC5wb3BDbGFzcygpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NGaWVsZChmaWVsZDogby5DbGFzc0ZpZWxkLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCkge1xuICAgIGlmIChmaWVsZC5oYXNNb2RpZmllcihvLlN0bXRNb2RpZmllci5GaW5hbCkpIHtcbiAgICAgIGN0eC5wcmludChgZmluYWwgYCk7XG4gICAgfSBlbHNlIGlmIChpc0JsYW5rKGZpZWxkLnR5cGUpKSB7XG4gICAgICBjdHgucHJpbnQoYHZhciBgKTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChmaWVsZC50eXBlKSkge1xuICAgICAgZmllbGQudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICAgIGN0eC5wcmludChgIGApO1xuICAgIH1cbiAgICBjdHgucHJpbnRsbihgJHtmaWVsZC5uYW1lfTtgKTtcbiAgfVxuICBwcml2YXRlIF92aXNpdENsYXNzR2V0dGVyKGdldHRlcjogby5DbGFzc0dldHRlciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpIHtcbiAgICBpZiAoaXNQcmVzZW50KGdldHRlci50eXBlKSkge1xuICAgICAgZ2V0dGVyLnR5cGUudmlzaXRUeXBlKHRoaXMsIGN0eCk7XG4gICAgICBjdHgucHJpbnQoYCBgKTtcbiAgICB9XG4gICAgY3R4LnByaW50bG4oYGdldCAke2dldHRlci5uYW1lfSB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKGdldHRlci5ib2R5LCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICB9XG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NDb25zdHJ1Y3RvcihzdG10OiBvLkNsYXNzU3RtdCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpIHtcbiAgICBjdHgucHJpbnQoYCR7c3RtdC5uYW1lfShgKTtcbiAgICB0aGlzLl92aXNpdFBhcmFtcyhzdG10LmNvbnN0cnVjdG9yTWV0aG9kLnBhcmFtcywgY3R4KTtcbiAgICBjdHgucHJpbnQoYClgKTtcblxuICAgIHZhciBjdG9yU3RtdHMgPSBzdG10LmNvbnN0cnVjdG9yTWV0aG9kLmJvZHk7XG4gICAgdmFyIHN1cGVyQ3RvckV4cHIgPSBjdG9yU3RtdHMubGVuZ3RoID4gMCA/IGdldFN1cGVyQ29uc3RydWN0b3JDYWxsRXhwcihjdG9yU3RtdHNbMF0pIDogbnVsbDtcbiAgICBpZiAoaXNQcmVzZW50KHN1cGVyQ3RvckV4cHIpKSB7XG4gICAgICBjdHgucHJpbnQoYDogYCk7XG4gICAgICBzdXBlckN0b3JFeHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgICAgY3RvclN0bXRzID0gY3RvclN0bXRzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBjdHgucHJpbnRsbihgIHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoY3RvclN0bXRzLCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICB9XG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NNZXRob2QobWV0aG9kOiBvLkNsYXNzTWV0aG9kLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCkge1xuICAgIGlmIChpc1ByZXNlbnQobWV0aG9kLnR5cGUpKSB7XG4gICAgICBtZXRob2QudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnByaW50KGB2b2lkYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgICR7bWV0aG9kLm5hbWV9KGApO1xuICAgIHRoaXMuX3Zpc2l0UGFyYW1zKG1ldGhvZC5wYXJhbXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oYCkge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhtZXRob2QuYm9keSwgY3R4KTtcbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50bG4oYH1gKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25FeHByKGFzdDogby5GdW5jdGlvbkV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnQoYChgKTtcbiAgICB0aGlzLl92aXNpdFBhcmFtcyhhc3QucGFyYW1zLCBjdHgpO1xuICAgIGN0eC5wcmludGxuKGApIHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoYXN0LnN0YXRlbWVudHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludChgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGVjbGFyZUZ1bmN0aW9uU3RtdChzdG10OiBvLkRlY2xhcmVGdW5jdGlvblN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBpZiAoaXNQcmVzZW50KHN0bXQudHlwZSkpIHtcbiAgICAgIHN0bXQudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnByaW50KGB2b2lkYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgICR7c3RtdC5uYW1lfShgKTtcbiAgICB0aGlzLl92aXNpdFBhcmFtcyhzdG10LnBhcmFtcywgY3R4KTtcbiAgICBjdHgucHJpbnRsbihgKSB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQuc3RhdGVtZW50cywgY3R4KTtcbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50bG4oYH1gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEJ1aWx0aW5NZXRob2ROYW1lKG1ldGhvZDogby5CdWlsdGluTWV0aG9kKTogc3RyaW5nIHtcbiAgICB2YXIgbmFtZTtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSBvLkJ1aWx0aW5NZXRob2QuQ29uY2F0QXJyYXk6XG4gICAgICAgIG5hbWUgPSAnLmFkZEFsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5NZXRob2QuU3Vic2NyaWJlT2JzZXJ2YWJsZTpcbiAgICAgICAgbmFtZSA9ICdsaXN0ZW4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CdWlsdGluTWV0aG9kLmJpbmQ6XG4gICAgICAgIG5hbWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbmtub3duIGJ1aWx0aW4gbWV0aG9kOiAke21ldGhvZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbiAgdmlzaXRUcnlDYXRjaFN0bXQoc3RtdDogby5UcnlDYXRjaFN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnRsbihgdHJ5IHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5ib2R5U3RtdHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludGxuKGB9IGNhdGNoICgke0NBVENIX0VSUk9SX1ZBUi5uYW1lfSwgJHtDQVRDSF9TVEFDS19WQVIubmFtZX0pIHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5jYXRjaFN0bXRzLCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKGFzdDogby5CaW5hcnlPcGVyYXRvckV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBzd2l0Y2ggKGFzdC5vcGVyYXRvcikge1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLklkZW50aWNhbDpcbiAgICAgICAgY3R4LnByaW50KGBpZGVudGljYWwoYCk7XG4gICAgICAgIGFzdC5saHMudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgICAgIGN0eC5wcmludChgLCBgKTtcbiAgICAgICAgYXN0LnJocy52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICAgICAgY3R4LnByaW50KGApYCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLk5vdElkZW50aWNhbDpcbiAgICAgICAgY3R4LnByaW50KGAhaWRlbnRpY2FsKGApO1xuICAgICAgICBhc3QubGhzLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgICAgICBjdHgucHJpbnQoYCwgYCk7XG4gICAgICAgIGFzdC5yaHMudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgICAgIGN0eC5wcmludChgKWApO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN1cGVyLnZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKGFzdCwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRMaXRlcmFsQXJyYXlFeHByKGFzdDogby5MaXRlcmFsQXJyYXlFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgaWYgKGlzQ29uc3RUeXBlKGFzdC50eXBlKSkge1xuICAgICAgY3R4LnByaW50KGBjb25zdCBgKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnZpc2l0TGl0ZXJhbEFycmF5RXhwcihhc3QsIGN0eCk7XG4gIH1cbiAgdmlzaXRMaXRlcmFsTWFwRXhwcihhc3Q6IG8uTGl0ZXJhbE1hcEV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBpZiAoaXNDb25zdFR5cGUoYXN0LnR5cGUpKSB7XG4gICAgICBjdHgucHJpbnQoYGNvbnN0IGApO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KGFzdC52YWx1ZVR5cGUpKSB7XG4gICAgICBjdHgucHJpbnQoYDxTdHJpbmcsIGApO1xuICAgICAgYXN0LnZhbHVlVHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICAgIGN0eC5wcmludChgPmApO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIudmlzaXRMaXRlcmFsTWFwRXhwcihhc3QsIGN0eCk7XG4gIH1cbiAgdmlzaXRJbnN0YW50aWF0ZUV4cHIoYXN0OiBvLkluc3RhbnRpYXRlRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChpc0NvbnN0VHlwZShhc3QudHlwZSkgPyBgY29uc3RgIDogYG5ld2ApO1xuICAgIGN0eC5wcmludCgnICcpO1xuICAgIGFzdC5jbGFzc0V4cHIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGAoYCk7XG4gICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5hcmdzLCBjdHgsIGAsYCk7XG4gICAgY3R4LnByaW50KGApYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRCdWlsdGludFR5cGUodHlwZTogby5CdWlsdGluVHlwZSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIHZhciB0eXBlU3RyO1xuICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICBjYXNlIG8uQnVpbHRpblR5cGVOYW1lLkJvb2w6XG4gICAgICAgIHR5cGVTdHIgPSAnYm9vbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5EeW5hbWljOlxuICAgICAgICB0eXBlU3RyID0gJ2R5bmFtaWMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CdWlsdGluVHlwZU5hbWUuRnVuY3Rpb246XG4gICAgICAgIHR5cGVTdHIgPSAnRnVuY3Rpb24nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CdWlsdGluVHlwZU5hbWUuTnVtYmVyOlxuICAgICAgICB0eXBlU3RyID0gJ251bSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5JbnQ6XG4gICAgICAgIHR5cGVTdHIgPSAnaW50JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQnVpbHRpblR5cGVOYW1lLlN0cmluZzpcbiAgICAgICAgdHlwZVN0ciA9ICdTdHJpbmcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbnN1cHBvcnRlZCBidWlsdGluIHR5cGUgJHt0eXBlLm5hbWV9YCk7XG4gICAgfVxuICAgIGN0eC5wcmludCh0eXBlU3RyKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEV4dGVybmFsVHlwZShhc3Q6IG8uRXh0ZXJuYWxUeXBlLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgdGhpcy5fdmlzaXRJZGVudGlmaWVyKGFzdC52YWx1ZSwgYXN0LnR5cGVQYXJhbXMsIGN0eCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRBcnJheVR5cGUodHlwZTogby5BcnJheVR5cGUsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnQoYExpc3Q8YCk7XG4gICAgaWYgKGlzUHJlc2VudCh0eXBlLm9mKSkge1xuICAgICAgdHlwZS5vZi52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnByaW50KGBkeW5hbWljYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgPmApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0TWFwVHlwZSh0eXBlOiBvLk1hcFR5cGUsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnQoYE1hcDxTdHJpbmcsIGApO1xuICAgIGlmIChpc1ByZXNlbnQodHlwZS52YWx1ZVR5cGUpKSB7XG4gICAgICB0eXBlLnZhbHVlVHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnByaW50KGBkeW5hbWljYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgPmApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRQYXJhbXMocGFyYW1zOiBvLkZuUGFyYW1bXSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0QWxsT2JqZWN0cygocGFyYW0pID0+IHtcbiAgICAgIGlmIChpc1ByZXNlbnQocGFyYW0udHlwZSkpIHtcbiAgICAgICAgcGFyYW0udHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICAgICAgY3R4LnByaW50KCcgJyk7XG4gICAgICB9XG4gICAgICBjdHgucHJpbnQocGFyYW0ubmFtZSk7XG4gICAgfSwgcGFyYW1zLCBjdHgsICcsJyk7XG4gIH1cblxuICBwcml2YXRlIF92aXNpdElkZW50aWZpZXIodmFsdWU6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEsIHR5cGVQYXJhbXM6IG8uVHlwZVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoaXNQcmVzZW50KHZhbHVlLm1vZHVsZVVybCkgJiYgdmFsdWUubW9kdWxlVXJsICE9IHRoaXMuX21vZHVsZVVybCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuaW1wb3J0c1dpdGhQcmVmaXhlcy5nZXQodmFsdWUubW9kdWxlVXJsKTtcbiAgICAgIGlmIChpc0JsYW5rKHByZWZpeCkpIHtcbiAgICAgICAgcHJlZml4ID0gYGltcG9ydCR7dGhpcy5pbXBvcnRzV2l0aFByZWZpeGVzLnNpemV9YDtcbiAgICAgICAgdGhpcy5pbXBvcnRzV2l0aFByZWZpeGVzLnNldCh2YWx1ZS5tb2R1bGVVcmwsIHByZWZpeCk7XG4gICAgICB9XG4gICAgICBjdHgucHJpbnQoYCR7cHJlZml4fS5gKTtcbiAgICB9XG4gICAgY3R4LnByaW50KHZhbHVlLm5hbWUpO1xuICAgIGlmIChpc1ByZXNlbnQodHlwZVBhcmFtcykgJiYgdHlwZVBhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjdHgucHJpbnQoYDxgKTtcbiAgICAgIHRoaXMudmlzaXRBbGxPYmplY3RzKCh0eXBlKSA9PiB0eXBlLnZpc2l0VHlwZSh0aGlzLCBjdHgpLCB0eXBlUGFyYW1zLCBjdHgsICcsJyk7XG4gICAgICBjdHgucHJpbnQoYD5gKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U3VwZXJDb25zdHJ1Y3RvckNhbGxFeHByKHN0bXQ6IG8uU3RhdGVtZW50KTogby5FeHByZXNzaW9uIHtcbiAgaWYgKHN0bXQgaW5zdGFuY2VvZiBvLkV4cHJlc3Npb25TdGF0ZW1lbnQpIHtcbiAgICB2YXIgZXhwciA9IHN0bXQuZXhwcjtcbiAgICBpZiAoZXhwciBpbnN0YW5jZW9mIG8uSW52b2tlRnVuY3Rpb25FeHByKSB7XG4gICAgICB2YXIgZm4gPSBleHByLmZuO1xuICAgICAgaWYgKGZuIGluc3RhbmNlb2Ygby5SZWFkVmFyRXhwcikge1xuICAgICAgICBpZiAoZm4uYnVpbHRpbiA9PT0gby5CdWlsdGluVmFyLlN1cGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzQ29uc3RUeXBlKHR5cGU6IG8uVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNQcmVzZW50KHR5cGUpICYmIHR5cGUuaGFzTW9kaWZpZXIoby5UeXBlTW9kaWZpZXIuQ29uc3QpO1xufSJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n//// Types\r\n(function (TypeModifier) {\r\n TypeModifier[TypeModifier[\"Const\"] = 0] = \"Const\";\r\n})(exports.TypeModifier || (exports.TypeModifier = {}));\r\nvar TypeModifier = exports.TypeModifier;\r\nvar Type = (function () {\r\n function Type(modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n this.modifiers = modifiers;\r\n if (lang_1.isBlank(modifiers)) {\r\n this.modifiers = [];\r\n }\r\n }\r\n Type.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\r\n return Type;\r\n}());\r\nexports.Type = Type;\r\n(function (BuiltinTypeName) {\r\n BuiltinTypeName[BuiltinTypeName[\"Dynamic\"] = 0] = \"Dynamic\";\r\n BuiltinTypeName[BuiltinTypeName[\"Bool\"] = 1] = \"Bool\";\r\n BuiltinTypeName[BuiltinTypeName[\"String\"] = 2] = \"String\";\r\n BuiltinTypeName[BuiltinTypeName[\"Int\"] = 3] = \"Int\";\r\n BuiltinTypeName[BuiltinTypeName[\"Number\"] = 4] = \"Number\";\r\n BuiltinTypeName[BuiltinTypeName[\"Function\"] = 5] = \"Function\";\r\n})(exports.BuiltinTypeName || (exports.BuiltinTypeName = {}));\r\nvar BuiltinTypeName = exports.BuiltinTypeName;\r\nvar BuiltinType = (function (_super) {\r\n __extends(BuiltinType, _super);\r\n function BuiltinType(name, modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.name = name;\r\n }\r\n BuiltinType.prototype.visitType = function (visitor, context) {\r\n return visitor.visitBuiltintType(this, context);\r\n };\r\n return BuiltinType;\r\n}(Type));\r\nexports.BuiltinType = BuiltinType;\r\nvar ExternalType = (function (_super) {\r\n __extends(ExternalType, _super);\r\n function ExternalType(value, typeParams, modifiers) {\r\n if (typeParams === void 0) { typeParams = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.value = value;\r\n this.typeParams = typeParams;\r\n }\r\n ExternalType.prototype.visitType = function (visitor, context) {\r\n return visitor.visitExternalType(this, context);\r\n };\r\n return ExternalType;\r\n}(Type));\r\nexports.ExternalType = ExternalType;\r\nvar ArrayType = (function (_super) {\r\n __extends(ArrayType, _super);\r\n function ArrayType(of, modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.of = of;\r\n }\r\n ArrayType.prototype.visitType = function (visitor, context) {\r\n return visitor.visitArrayType(this, context);\r\n };\r\n return ArrayType;\r\n}(Type));\r\nexports.ArrayType = ArrayType;\r\nvar MapType = (function (_super) {\r\n __extends(MapType, _super);\r\n function MapType(valueType, modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.valueType = valueType;\r\n }\r\n MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); };\r\n return MapType;\r\n}(Type));\r\nexports.MapType = MapType;\r\nexports.DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\r\nexports.BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\r\nexports.INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\r\nexports.NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\r\nexports.STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\r\nexports.FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\r\n///// Expressions\r\n(function (BinaryOperator) {\r\n BinaryOperator[BinaryOperator[\"Equals\"] = 0] = \"Equals\";\r\n BinaryOperator[BinaryOperator[\"NotEquals\"] = 1] = \"NotEquals\";\r\n BinaryOperator[BinaryOperator[\"Identical\"] = 2] = \"Identical\";\r\n BinaryOperator[BinaryOperator[\"NotIdentical\"] = 3] = \"NotIdentical\";\r\n BinaryOperator[BinaryOperator[\"Minus\"] = 4] = \"Minus\";\r\n BinaryOperator[BinaryOperator[\"Plus\"] = 5] = \"Plus\";\r\n BinaryOperator[BinaryOperator[\"Divide\"] = 6] = \"Divide\";\r\n BinaryOperator[BinaryOperator[\"Multiply\"] = 7] = \"Multiply\";\r\n BinaryOperator[BinaryOperator[\"Modulo\"] = 8] = \"Modulo\";\r\n BinaryOperator[BinaryOperator[\"And\"] = 9] = \"And\";\r\n BinaryOperator[BinaryOperator[\"Or\"] = 10] = \"Or\";\r\n BinaryOperator[BinaryOperator[\"Lower\"] = 11] = \"Lower\";\r\n BinaryOperator[BinaryOperator[\"LowerEquals\"] = 12] = \"LowerEquals\";\r\n BinaryOperator[BinaryOperator[\"Bigger\"] = 13] = \"Bigger\";\r\n BinaryOperator[BinaryOperator[\"BiggerEquals\"] = 14] = \"BiggerEquals\";\r\n})(exports.BinaryOperator || (exports.BinaryOperator = {}));\r\nvar BinaryOperator = exports.BinaryOperator;\r\nvar Expression = (function () {\r\n function Expression(type) {\r\n this.type = type;\r\n }\r\n Expression.prototype.prop = function (name) { return new ReadPropExpr(this, name); };\r\n Expression.prototype.key = function (index, type) {\r\n if (type === void 0) { type = null; }\r\n return new ReadKeyExpr(this, index, type);\r\n };\r\n Expression.prototype.callMethod = function (name, params) {\r\n return new InvokeMethodExpr(this, name, params);\r\n };\r\n Expression.prototype.callFn = function (params) { return new InvokeFunctionExpr(this, params); };\r\n Expression.prototype.instantiate = function (params, type) {\r\n if (type === void 0) { type = null; }\r\n return new InstantiateExpr(this, params, type);\r\n };\r\n Expression.prototype.conditional = function (trueCase, falseCase) {\r\n if (falseCase === void 0) { falseCase = null; }\r\n return new ConditionalExpr(this, trueCase, falseCase);\r\n };\r\n Expression.prototype.equals = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs);\r\n };\r\n Expression.prototype.notEquals = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs);\r\n };\r\n Expression.prototype.identical = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs);\r\n };\r\n Expression.prototype.notIdentical = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs);\r\n };\r\n Expression.prototype.minus = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs);\r\n };\r\n Expression.prototype.plus = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs);\r\n };\r\n Expression.prototype.divide = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs);\r\n };\r\n Expression.prototype.multiply = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs);\r\n };\r\n Expression.prototype.modulo = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs);\r\n };\r\n Expression.prototype.and = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.And, this, rhs);\r\n };\r\n Expression.prototype.or = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs);\r\n };\r\n Expression.prototype.lower = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs);\r\n };\r\n Expression.prototype.lowerEquals = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs);\r\n };\r\n Expression.prototype.bigger = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs);\r\n };\r\n Expression.prototype.biggerEquals = function (rhs) {\r\n return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs);\r\n };\r\n Expression.prototype.isBlank = function () {\r\n // Note: We use equals by purpose here to compare to null and undefined in JS.\r\n return this.equals(exports.NULL_EXPR);\r\n };\r\n Expression.prototype.cast = function (type) { return new CastExpr(this, type); };\r\n Expression.prototype.toStmt = function () { return new ExpressionStatement(this); };\r\n return Expression;\r\n}());\r\nexports.Expression = Expression;\r\n(function (BuiltinVar) {\r\n BuiltinVar[BuiltinVar[\"This\"] = 0] = \"This\";\r\n BuiltinVar[BuiltinVar[\"Super\"] = 1] = \"Super\";\r\n BuiltinVar[BuiltinVar[\"CatchError\"] = 2] = \"CatchError\";\r\n BuiltinVar[BuiltinVar[\"CatchStack\"] = 3] = \"CatchStack\";\r\n})(exports.BuiltinVar || (exports.BuiltinVar = {}));\r\nvar BuiltinVar = exports.BuiltinVar;\r\nvar ReadVarExpr = (function (_super) {\r\n __extends(ReadVarExpr, _super);\r\n function ReadVarExpr(name, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n if (lang_1.isString(name)) {\r\n this.name = name;\r\n this.builtin = null;\r\n }\r\n else {\r\n this.name = null;\r\n this.builtin = name;\r\n }\r\n }\r\n ReadVarExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitReadVarExpr(this, context);\r\n };\r\n ReadVarExpr.prototype.set = function (value) { return new WriteVarExpr(this.name, value); };\r\n return ReadVarExpr;\r\n}(Expression));\r\nexports.ReadVarExpr = ReadVarExpr;\r\nvar WriteVarExpr = (function (_super) {\r\n __extends(WriteVarExpr, _super);\r\n function WriteVarExpr(name, value, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, lang_1.isPresent(type) ? type : value.type);\r\n this.name = name;\r\n this.value = value;\r\n }\r\n WriteVarExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitWriteVarExpr(this, context);\r\n };\r\n WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n return new DeclareVarStmt(this.name, this.value, type, modifiers);\r\n };\r\n return WriteVarExpr;\r\n}(Expression));\r\nexports.WriteVarExpr = WriteVarExpr;\r\nvar WriteKeyExpr = (function (_super) {\r\n __extends(WriteKeyExpr, _super);\r\n function WriteKeyExpr(receiver, index, value, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, lang_1.isPresent(type) ? type : value.type);\r\n this.receiver = receiver;\r\n this.index = index;\r\n this.value = value;\r\n }\r\n WriteKeyExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitWriteKeyExpr(this, context);\r\n };\r\n return WriteKeyExpr;\r\n}(Expression));\r\nexports.WriteKeyExpr = WriteKeyExpr;\r\nvar WritePropExpr = (function (_super) {\r\n __extends(WritePropExpr, _super);\r\n function WritePropExpr(receiver, name, value, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, lang_1.isPresent(type) ? type : value.type);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.value = value;\r\n }\r\n WritePropExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitWritePropExpr(this, context);\r\n };\r\n return WritePropExpr;\r\n}(Expression));\r\nexports.WritePropExpr = WritePropExpr;\r\n(function (BuiltinMethod) {\r\n BuiltinMethod[BuiltinMethod[\"ConcatArray\"] = 0] = \"ConcatArray\";\r\n BuiltinMethod[BuiltinMethod[\"SubscribeObservable\"] = 1] = \"SubscribeObservable\";\r\n BuiltinMethod[BuiltinMethod[\"bind\"] = 2] = \"bind\";\r\n})(exports.BuiltinMethod || (exports.BuiltinMethod = {}));\r\nvar BuiltinMethod = exports.BuiltinMethod;\r\nvar InvokeMethodExpr = (function (_super) {\r\n __extends(InvokeMethodExpr, _super);\r\n function InvokeMethodExpr(receiver, method, args, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.receiver = receiver;\r\n this.args = args;\r\n if (lang_1.isString(method)) {\r\n this.name = method;\r\n this.builtin = null;\r\n }\r\n else {\r\n this.name = null;\r\n this.builtin = method;\r\n }\r\n }\r\n InvokeMethodExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitInvokeMethodExpr(this, context);\r\n };\r\n return InvokeMethodExpr;\r\n}(Expression));\r\nexports.InvokeMethodExpr = InvokeMethodExpr;\r\nvar InvokeFunctionExpr = (function (_super) {\r\n __extends(InvokeFunctionExpr, _super);\r\n function InvokeFunctionExpr(fn, args, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.fn = fn;\r\n this.args = args;\r\n }\r\n InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitInvokeFunctionExpr(this, context);\r\n };\r\n return InvokeFunctionExpr;\r\n}(Expression));\r\nexports.InvokeFunctionExpr = InvokeFunctionExpr;\r\nvar InstantiateExpr = (function (_super) {\r\n __extends(InstantiateExpr, _super);\r\n function InstantiateExpr(classExpr, args, type) {\r\n _super.call(this, type);\r\n this.classExpr = classExpr;\r\n this.args = args;\r\n }\r\n InstantiateExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitInstantiateExpr(this, context);\r\n };\r\n return InstantiateExpr;\r\n}(Expression));\r\nexports.InstantiateExpr = InstantiateExpr;\r\nvar LiteralExpr = (function (_super) {\r\n __extends(LiteralExpr, _super);\r\n function LiteralExpr(value, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.value = value;\r\n }\r\n LiteralExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitLiteralExpr(this, context);\r\n };\r\n return LiteralExpr;\r\n}(Expression));\r\nexports.LiteralExpr = LiteralExpr;\r\nvar ExternalExpr = (function (_super) {\r\n __extends(ExternalExpr, _super);\r\n function ExternalExpr(value, type, typeParams) {\r\n if (type === void 0) { type = null; }\r\n if (typeParams === void 0) { typeParams = null; }\r\n _super.call(this, type);\r\n this.value = value;\r\n this.typeParams = typeParams;\r\n }\r\n ExternalExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitExternalExpr(this, context);\r\n };\r\n return ExternalExpr;\r\n}(Expression));\r\nexports.ExternalExpr = ExternalExpr;\r\nvar ConditionalExpr = (function (_super) {\r\n __extends(ConditionalExpr, _super);\r\n function ConditionalExpr(condition, trueCase, falseCase, type) {\r\n if (falseCase === void 0) { falseCase = null; }\r\n if (type === void 0) { type = null; }\r\n _super.call(this, lang_1.isPresent(type) ? type : trueCase.type);\r\n this.condition = condition;\r\n this.falseCase = falseCase;\r\n this.trueCase = trueCase;\r\n }\r\n ConditionalExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitConditionalExpr(this, context);\r\n };\r\n return ConditionalExpr;\r\n}(Expression));\r\nexports.ConditionalExpr = ConditionalExpr;\r\nvar NotExpr = (function (_super) {\r\n __extends(NotExpr, _super);\r\n function NotExpr(condition) {\r\n _super.call(this, exports.BOOL_TYPE);\r\n this.condition = condition;\r\n }\r\n NotExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitNotExpr(this, context);\r\n };\r\n return NotExpr;\r\n}(Expression));\r\nexports.NotExpr = NotExpr;\r\nvar CastExpr = (function (_super) {\r\n __extends(CastExpr, _super);\r\n function CastExpr(value, type) {\r\n _super.call(this, type);\r\n this.value = value;\r\n }\r\n CastExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitCastExpr(this, context);\r\n };\r\n return CastExpr;\r\n}(Expression));\r\nexports.CastExpr = CastExpr;\r\nvar FnParam = (function () {\r\n function FnParam(name, type) {\r\n if (type === void 0) { type = null; }\r\n this.name = name;\r\n this.type = type;\r\n }\r\n return FnParam;\r\n}());\r\nexports.FnParam = FnParam;\r\nvar FunctionExpr = (function (_super) {\r\n __extends(FunctionExpr, _super);\r\n function FunctionExpr(params, statements, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.params = params;\r\n this.statements = statements;\r\n }\r\n FunctionExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitFunctionExpr(this, context);\r\n };\r\n FunctionExpr.prototype.toDeclStmt = function (name, modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers);\r\n };\r\n return FunctionExpr;\r\n}(Expression));\r\nexports.FunctionExpr = FunctionExpr;\r\nvar BinaryOperatorExpr = (function (_super) {\r\n __extends(BinaryOperatorExpr, _super);\r\n function BinaryOperatorExpr(operator, lhs, rhs, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, lang_1.isPresent(type) ? type : lhs.type);\r\n this.operator = operator;\r\n this.rhs = rhs;\r\n this.lhs = lhs;\r\n }\r\n BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitBinaryOperatorExpr(this, context);\r\n };\r\n return BinaryOperatorExpr;\r\n}(Expression));\r\nexports.BinaryOperatorExpr = BinaryOperatorExpr;\r\nvar ReadPropExpr = (function (_super) {\r\n __extends(ReadPropExpr, _super);\r\n function ReadPropExpr(receiver, name, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.receiver = receiver;\r\n this.name = name;\r\n }\r\n ReadPropExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitReadPropExpr(this, context);\r\n };\r\n ReadPropExpr.prototype.set = function (value) {\r\n return new WritePropExpr(this.receiver, this.name, value);\r\n };\r\n return ReadPropExpr;\r\n}(Expression));\r\nexports.ReadPropExpr = ReadPropExpr;\r\nvar ReadKeyExpr = (function (_super) {\r\n __extends(ReadKeyExpr, _super);\r\n function ReadKeyExpr(receiver, index, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.receiver = receiver;\r\n this.index = index;\r\n }\r\n ReadKeyExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitReadKeyExpr(this, context);\r\n };\r\n ReadKeyExpr.prototype.set = function (value) {\r\n return new WriteKeyExpr(this.receiver, this.index, value);\r\n };\r\n return ReadKeyExpr;\r\n}(Expression));\r\nexports.ReadKeyExpr = ReadKeyExpr;\r\nvar LiteralArrayExpr = (function (_super) {\r\n __extends(LiteralArrayExpr, _super);\r\n function LiteralArrayExpr(entries, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.entries = entries;\r\n }\r\n LiteralArrayExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitLiteralArrayExpr(this, context);\r\n };\r\n return LiteralArrayExpr;\r\n}(Expression));\r\nexports.LiteralArrayExpr = LiteralArrayExpr;\r\nvar LiteralMapExpr = (function (_super) {\r\n __extends(LiteralMapExpr, _super);\r\n function LiteralMapExpr(entries, type) {\r\n if (type === void 0) { type = null; }\r\n _super.call(this, type);\r\n this.entries = entries;\r\n this.valueType = null;\r\n if (lang_1.isPresent(type)) {\r\n this.valueType = type.valueType;\r\n }\r\n }\r\n ;\r\n LiteralMapExpr.prototype.visitExpression = function (visitor, context) {\r\n return visitor.visitLiteralMapExpr(this, context);\r\n };\r\n return LiteralMapExpr;\r\n}(Expression));\r\nexports.LiteralMapExpr = LiteralMapExpr;\r\nexports.THIS_EXPR = new ReadVarExpr(BuiltinVar.This);\r\nexports.SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super);\r\nexports.CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError);\r\nexports.CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack);\r\nexports.NULL_EXPR = new LiteralExpr(null, null);\r\n//// Statements\r\n(function (StmtModifier) {\r\n StmtModifier[StmtModifier[\"Final\"] = 0] = \"Final\";\r\n StmtModifier[StmtModifier[\"Private\"] = 1] = \"Private\";\r\n})(exports.StmtModifier || (exports.StmtModifier = {}));\r\nvar StmtModifier = exports.StmtModifier;\r\nvar Statement = (function () {\r\n function Statement(modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n this.modifiers = modifiers;\r\n if (lang_1.isBlank(modifiers)) {\r\n this.modifiers = [];\r\n }\r\n }\r\n Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\r\n return Statement;\r\n}());\r\nexports.Statement = Statement;\r\nvar DeclareVarStmt = (function (_super) {\r\n __extends(DeclareVarStmt, _super);\r\n function DeclareVarStmt(name, value, type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.name = name;\r\n this.value = value;\r\n this.type = lang_1.isPresent(type) ? type : value.type;\r\n }\r\n DeclareVarStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitDeclareVarStmt(this, context);\r\n };\r\n return DeclareVarStmt;\r\n}(Statement));\r\nexports.DeclareVarStmt = DeclareVarStmt;\r\nvar DeclareFunctionStmt = (function (_super) {\r\n __extends(DeclareFunctionStmt, _super);\r\n function DeclareFunctionStmt(name, params, statements, type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.name = name;\r\n this.params = params;\r\n this.statements = statements;\r\n this.type = type;\r\n }\r\n DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitDeclareFunctionStmt(this, context);\r\n };\r\n return DeclareFunctionStmt;\r\n}(Statement));\r\nexports.DeclareFunctionStmt = DeclareFunctionStmt;\r\nvar ExpressionStatement = (function (_super) {\r\n __extends(ExpressionStatement, _super);\r\n function ExpressionStatement(expr) {\r\n _super.call(this);\r\n this.expr = expr;\r\n }\r\n ExpressionStatement.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitExpressionStmt(this, context);\r\n };\r\n return ExpressionStatement;\r\n}(Statement));\r\nexports.ExpressionStatement = ExpressionStatement;\r\nvar ReturnStatement = (function (_super) {\r\n __extends(ReturnStatement, _super);\r\n function ReturnStatement(value) {\r\n _super.call(this);\r\n this.value = value;\r\n }\r\n ReturnStatement.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitReturnStmt(this, context);\r\n };\r\n return ReturnStatement;\r\n}(Statement));\r\nexports.ReturnStatement = ReturnStatement;\r\nvar AbstractClassPart = (function () {\r\n function AbstractClassPart(type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n this.type = type;\r\n this.modifiers = modifiers;\r\n if (lang_1.isBlank(modifiers)) {\r\n this.modifiers = [];\r\n }\r\n }\r\n AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\r\n return AbstractClassPart;\r\n}());\r\nexports.AbstractClassPart = AbstractClassPart;\r\nvar ClassField = (function (_super) {\r\n __extends(ClassField, _super);\r\n function ClassField(name, type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, type, modifiers);\r\n this.name = name;\r\n }\r\n return ClassField;\r\n}(AbstractClassPart));\r\nexports.ClassField = ClassField;\r\nvar ClassMethod = (function (_super) {\r\n __extends(ClassMethod, _super);\r\n function ClassMethod(name, params, body, type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, type, modifiers);\r\n this.name = name;\r\n this.params = params;\r\n this.body = body;\r\n }\r\n return ClassMethod;\r\n}(AbstractClassPart));\r\nexports.ClassMethod = ClassMethod;\r\nvar ClassGetter = (function (_super) {\r\n __extends(ClassGetter, _super);\r\n function ClassGetter(name, body, type, modifiers) {\r\n if (type === void 0) { type = null; }\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, type, modifiers);\r\n this.name = name;\r\n this.body = body;\r\n }\r\n return ClassGetter;\r\n}(AbstractClassPart));\r\nexports.ClassGetter = ClassGetter;\r\nvar ClassStmt = (function (_super) {\r\n __extends(ClassStmt, _super);\r\n function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers) {\r\n if (modifiers === void 0) { modifiers = null; }\r\n _super.call(this, modifiers);\r\n this.name = name;\r\n this.parent = parent;\r\n this.fields = fields;\r\n this.getters = getters;\r\n this.constructorMethod = constructorMethod;\r\n this.methods = methods;\r\n }\r\n ClassStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitDeclareClassStmt(this, context);\r\n };\r\n return ClassStmt;\r\n}(Statement));\r\nexports.ClassStmt = ClassStmt;\r\nvar IfStmt = (function (_super) {\r\n __extends(IfStmt, _super);\r\n function IfStmt(condition, trueCase, falseCase) {\r\n if (falseCase === void 0) { falseCase = lang_1.CONST_EXPR([]); }\r\n _super.call(this);\r\n this.condition = condition;\r\n this.trueCase = trueCase;\r\n this.falseCase = falseCase;\r\n }\r\n IfStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitIfStmt(this, context);\r\n };\r\n return IfStmt;\r\n}(Statement));\r\nexports.IfStmt = IfStmt;\r\nvar CommentStmt = (function (_super) {\r\n __extends(CommentStmt, _super);\r\n function CommentStmt(comment) {\r\n _super.call(this);\r\n this.comment = comment;\r\n }\r\n CommentStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitCommentStmt(this, context);\r\n };\r\n return CommentStmt;\r\n}(Statement));\r\nexports.CommentStmt = CommentStmt;\r\nvar TryCatchStmt = (function (_super) {\r\n __extends(TryCatchStmt, _super);\r\n function TryCatchStmt(bodyStmts, catchStmts) {\r\n _super.call(this);\r\n this.bodyStmts = bodyStmts;\r\n this.catchStmts = catchStmts;\r\n }\r\n TryCatchStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitTryCatchStmt(this, context);\r\n };\r\n return TryCatchStmt;\r\n}(Statement));\r\nexports.TryCatchStmt = TryCatchStmt;\r\nvar ThrowStmt = (function (_super) {\r\n __extends(ThrowStmt, _super);\r\n function ThrowStmt(error) {\r\n _super.call(this);\r\n this.error = error;\r\n }\r\n ThrowStmt.prototype.visitStatement = function (visitor, context) {\r\n return visitor.visitThrowStmt(this, context);\r\n };\r\n return ThrowStmt;\r\n}(Statement));\r\nexports.ThrowStmt = ThrowStmt;\r\nvar ExpressionTransformer = (function () {\r\n function ExpressionTransformer() {\r\n }\r\n ExpressionTransformer.prototype.visitReadVarExpr = function (ast, context) { return ast; };\r\n ExpressionTransformer.prototype.visitWriteVarExpr = function (expr, context) {\r\n return new WriteVarExpr(expr.name, expr.value.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitWriteKeyExpr = function (expr, context) {\r\n return new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitWritePropExpr = function (expr, context) {\r\n return new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitInvokeMethodExpr = function (ast, context) {\r\n var method = lang_1.isPresent(ast.builtin) ? ast.builtin : ast.name;\r\n return new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type);\r\n };\r\n ExpressionTransformer.prototype.visitInvokeFunctionExpr = function (ast, context) {\r\n return new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type);\r\n };\r\n ExpressionTransformer.prototype.visitInstantiateExpr = function (ast, context) {\r\n return new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type);\r\n };\r\n ExpressionTransformer.prototype.visitLiteralExpr = function (ast, context) { return ast; };\r\n ExpressionTransformer.prototype.visitExternalExpr = function (ast, context) { return ast; };\r\n ExpressionTransformer.prototype.visitConditionalExpr = function (ast, context) {\r\n return new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitNotExpr = function (ast, context) {\r\n return new NotExpr(ast.condition.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitCastExpr = function (ast, context) {\r\n return new CastExpr(ast.value.visitExpression(this, context), context);\r\n };\r\n ExpressionTransformer.prototype.visitFunctionExpr = function (ast, context) {\r\n // Don't descend into nested functions\r\n return ast;\r\n };\r\n ExpressionTransformer.prototype.visitBinaryOperatorExpr = function (ast, context) {\r\n return new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type);\r\n };\r\n ExpressionTransformer.prototype.visitReadPropExpr = function (ast, context) {\r\n return new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type);\r\n };\r\n ExpressionTransformer.prototype.visitReadKeyExpr = function (ast, context) {\r\n return new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type);\r\n };\r\n ExpressionTransformer.prototype.visitLiteralArrayExpr = function (ast, context) {\r\n return new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context));\r\n };\r\n ExpressionTransformer.prototype.visitLiteralMapExpr = function (ast, context) {\r\n var _this = this;\r\n return new LiteralMapExpr(ast.entries.map(function (entry) { return [entry[0], entry[1].visitExpression(_this, context)]; }));\r\n };\r\n ExpressionTransformer.prototype.visitAllExpressions = function (exprs, context) {\r\n var _this = this;\r\n return exprs.map(function (expr) { return expr.visitExpression(_this, context); });\r\n };\r\n ExpressionTransformer.prototype.visitDeclareVarStmt = function (stmt, context) {\r\n return new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers);\r\n };\r\n ExpressionTransformer.prototype.visitDeclareFunctionStmt = function (stmt, context) {\r\n // Don't descend into nested functions\r\n return stmt;\r\n };\r\n ExpressionTransformer.prototype.visitExpressionStmt = function (stmt, context) {\r\n return new ExpressionStatement(stmt.expr.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitReturnStmt = function (stmt, context) {\r\n return new ReturnStatement(stmt.value.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitDeclareClassStmt = function (stmt, context) {\r\n // Don't descend into nested functions\r\n return stmt;\r\n };\r\n ExpressionTransformer.prototype.visitIfStmt = function (stmt, context) {\r\n return new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context));\r\n };\r\n ExpressionTransformer.prototype.visitTryCatchStmt = function (stmt, context) {\r\n return new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context));\r\n };\r\n ExpressionTransformer.prototype.visitThrowStmt = function (stmt, context) {\r\n return new ThrowStmt(stmt.error.visitExpression(this, context));\r\n };\r\n ExpressionTransformer.prototype.visitCommentStmt = function (stmt, context) { return stmt; };\r\n ExpressionTransformer.prototype.visitAllStatements = function (stmts, context) {\r\n var _this = this;\r\n return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); });\r\n };\r\n return ExpressionTransformer;\r\n}());\r\nexports.ExpressionTransformer = ExpressionTransformer;\r\nvar RecursiveExpressionVisitor = (function () {\r\n function RecursiveExpressionVisitor() {\r\n }\r\n RecursiveExpressionVisitor.prototype.visitReadVarExpr = function (ast, context) { return ast; };\r\n RecursiveExpressionVisitor.prototype.visitWriteVarExpr = function (expr, context) {\r\n expr.value.visitExpression(this, context);\r\n return expr;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitWriteKeyExpr = function (expr, context) {\r\n expr.receiver.visitExpression(this, context);\r\n expr.index.visitExpression(this, context);\r\n expr.value.visitExpression(this, context);\r\n return expr;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitWritePropExpr = function (expr, context) {\r\n expr.receiver.visitExpression(this, context);\r\n expr.value.visitExpression(this, context);\r\n return expr;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitInvokeMethodExpr = function (ast, context) {\r\n ast.receiver.visitExpression(this, context);\r\n this.visitAllExpressions(ast.args, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitInvokeFunctionExpr = function (ast, context) {\r\n ast.fn.visitExpression(this, context);\r\n this.visitAllExpressions(ast.args, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitInstantiateExpr = function (ast, context) {\r\n ast.classExpr.visitExpression(this, context);\r\n this.visitAllExpressions(ast.args, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitLiteralExpr = function (ast, context) { return ast; };\r\n RecursiveExpressionVisitor.prototype.visitExternalExpr = function (ast, context) { return ast; };\r\n RecursiveExpressionVisitor.prototype.visitConditionalExpr = function (ast, context) {\r\n ast.condition.visitExpression(this, context);\r\n ast.trueCase.visitExpression(this, context);\r\n ast.falseCase.visitExpression(this, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitNotExpr = function (ast, context) {\r\n ast.condition.visitExpression(this, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitCastExpr = function (ast, context) {\r\n ast.value.visitExpression(this, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitFunctionExpr = function (ast, context) { return ast; };\r\n RecursiveExpressionVisitor.prototype.visitBinaryOperatorExpr = function (ast, context) {\r\n ast.lhs.visitExpression(this, context);\r\n ast.rhs.visitExpression(this, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitReadPropExpr = function (ast, context) {\r\n ast.receiver.visitExpression(this, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitReadKeyExpr = function (ast, context) {\r\n ast.receiver.visitExpression(this, context);\r\n ast.index.visitExpression(this, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitLiteralArrayExpr = function (ast, context) {\r\n this.visitAllExpressions(ast.entries, context);\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitLiteralMapExpr = function (ast, context) {\r\n var _this = this;\r\n ast.entries.forEach(function (entry) { return entry[1].visitExpression(_this, context); });\r\n return ast;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitAllExpressions = function (exprs, context) {\r\n var _this = this;\r\n exprs.forEach(function (expr) { return expr.visitExpression(_this, context); });\r\n };\r\n RecursiveExpressionVisitor.prototype.visitDeclareVarStmt = function (stmt, context) {\r\n stmt.value.visitExpression(this, context);\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) {\r\n // Don't descend into nested functions\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitExpressionStmt = function (stmt, context) {\r\n stmt.expr.visitExpression(this, context);\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitReturnStmt = function (stmt, context) {\r\n stmt.value.visitExpression(this, context);\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitDeclareClassStmt = function (stmt, context) {\r\n // Don't descend into nested functions\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitIfStmt = function (stmt, context) {\r\n stmt.condition.visitExpression(this, context);\r\n this.visitAllStatements(stmt.trueCase, context);\r\n this.visitAllStatements(stmt.falseCase, context);\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitTryCatchStmt = function (stmt, context) {\r\n this.visitAllStatements(stmt.bodyStmts, context);\r\n this.visitAllStatements(stmt.catchStmts, context);\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitThrowStmt = function (stmt, context) {\r\n stmt.error.visitExpression(this, context);\r\n return stmt;\r\n };\r\n RecursiveExpressionVisitor.prototype.visitCommentStmt = function (stmt, context) { return stmt; };\r\n RecursiveExpressionVisitor.prototype.visitAllStatements = function (stmts, context) {\r\n var _this = this;\r\n stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); });\r\n };\r\n return RecursiveExpressionVisitor;\r\n}());\r\nexports.RecursiveExpressionVisitor = RecursiveExpressionVisitor;\r\nfunction replaceVarInExpression(varName, newValue, expression) {\r\n var transformer = new _ReplaceVariableTransformer(varName, newValue);\r\n return expression.visitExpression(transformer, null);\r\n}\r\nexports.replaceVarInExpression = replaceVarInExpression;\r\nvar _ReplaceVariableTransformer = (function (_super) {\r\n __extends(_ReplaceVariableTransformer, _super);\r\n function _ReplaceVariableTransformer(_varName, _newValue) {\r\n _super.call(this);\r\n this._varName = _varName;\r\n this._newValue = _newValue;\r\n }\r\n _ReplaceVariableTransformer.prototype.visitReadVarExpr = function (ast, context) {\r\n return ast.name == this._varName ? this._newValue : ast;\r\n };\r\n return _ReplaceVariableTransformer;\r\n}(ExpressionTransformer));\r\nfunction findReadVarNames(stmts) {\r\n var finder = new _VariableFinder();\r\n finder.visitAllStatements(stmts, null);\r\n return finder.varNames;\r\n}\r\nexports.findReadVarNames = findReadVarNames;\r\nvar _VariableFinder = (function (_super) {\r\n __extends(_VariableFinder, _super);\r\n function _VariableFinder() {\r\n _super.apply(this, arguments);\r\n this.varNames = new Set();\r\n }\r\n _VariableFinder.prototype.visitReadVarExpr = function (ast, context) {\r\n this.varNames.add(ast.name);\r\n return null;\r\n };\r\n return _VariableFinder;\r\n}(RecursiveExpressionVisitor));\r\nfunction variable(name, type) {\r\n if (type === void 0) { type = null; }\r\n return new ReadVarExpr(name, type);\r\n}\r\nexports.variable = variable;\r\nfunction importExpr(id, typeParams) {\r\n if (typeParams === void 0) { typeParams = null; }\r\n return new ExternalExpr(id, null, typeParams);\r\n}\r\nexports.importExpr = importExpr;\r\nfunction importType(id, typeParams, typeModifiers) {\r\n if (typeParams === void 0) { typeParams = null; }\r\n if (typeModifiers === void 0) { typeModifiers = null; }\r\n return lang_1.isPresent(id) ? new ExternalType(id, typeParams, typeModifiers) : null;\r\n}\r\nexports.importType = importType;\r\nfunction literal(value, type) {\r\n if (type === void 0) { type = null; }\r\n return new LiteralExpr(value, type);\r\n}\r\nexports.literal = literal;\r\nfunction literalArr(values, type) {\r\n if (type === void 0) { type = null; }\r\n return new LiteralArrayExpr(values, type);\r\n}\r\nexports.literalArr = literalArr;\r\nfunction literalMap(values, type) {\r\n if (type === void 0) { type = null; }\r\n return new LiteralMapExpr(values, type);\r\n}\r\nexports.literalMap = literalMap;\r\nfunction not(expr) {\r\n return new NotExpr(expr);\r\n}\r\nexports.not = not;\r\nfunction fn(params, body, type) {\r\n if (type === void 0) { type = null; }\r\n return new FunctionExpr(params, body, type);\r\n}\r\nexports.fn = fn;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0X2FzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9vdXRwdXQvb3V0cHV0X2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQkFBdUQsMEJBQTBCLENBQUMsQ0FBQTtBQUdsRixVQUFVO0FBQ1YsV0FBWSxZQUFZO0lBQ3RCLGlEQUFLLENBQUE7QUFDUCxDQUFDLEVBRlcsb0JBQVksS0FBWixvQkFBWSxRQUV2QjtBQUZELElBQVksWUFBWSxHQUFaLG9CQUVYLENBQUE7QUFFRDtJQUNFLGNBQW1CLFNBQWdDO1FBQXZDLHlCQUF1QyxHQUF2QyxnQkFBdUM7UUFBaEMsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDakQsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUdELDBCQUFXLEdBQVgsVUFBWSxRQUFzQixJQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsV0FBQztBQUFELENBQUMsQUFURCxJQVNDO0FBVHFCLFlBQUksT0FTekIsQ0FBQTtBQUVELFdBQVksZUFBZTtJQUN6QiwyREFBTyxDQUFBO0lBQ1AscURBQUksQ0FBQTtJQUNKLHlEQUFNLENBQUE7SUFDTixtREFBRyxDQUFBO0lBQ0gseURBQU0sQ0FBQTtJQUNOLDZEQUFRLENBQUE7QUFDVixDQUFDLEVBUFcsdUJBQWUsS0FBZix1QkFBZSxRQU8xQjtBQVBELElBQVksZUFBZSxHQUFmLHVCQU9YLENBQUE7QUFFRDtJQUFpQywrQkFBSTtJQUNuQyxxQkFBbUIsSUFBcUIsRUFB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QXBCLG9CQUFvQixHQUFwQixXQUFvQjtJQUM3QyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFIZSxrQkFBVSxhQUd6QixDQUFBO0FBRUQsYUFBb0IsSUFBZ0I7SUFDbEMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFGZSxXQUFHLE1BRWxCLENBQUE7QUFFRCxZQUFtQixNQUFpQixFQUFFLElBQWlCLEVBQUUsSUFBaUI7SUFBakIsb0JBQWlCLEdBQWpCLFdBQWlCO0lBQ3hFLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFGZSxVQUFFLEtBRWpCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNUX0VYUFIsIGlzU3RyaW5nLCBpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0NvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGF9IGZyb20gJy4uL2NvbXBpbGVfbWV0YWRhdGEnO1xuXG4vLy8vIFR5cGVzXG5leHBvcnQgZW51bSBUeXBlTW9kaWZpZXIge1xuICBDb25zdFxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHlwZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RpZmllcnM6IFR5cGVNb2RpZmllcltdID0gbnVsbCkge1xuICAgIGlmIChpc0JsYW5rKG1vZGlmaWVycykpIHtcbiAgICAgIHRoaXMubW9kaWZpZXJzID0gW107XG4gICAgfVxuICB9XG4gIGFic3RyYWN0IHZpc2l0VHlwZSh2aXNpdG9yOiBUeXBlVmlzaXRvciwgY29udGV4dDogYW55KTogYW55O1xuXG4gIGhhc01vZGlmaWVyKG1vZGlmaWVyOiBUeXBlTW9kaWZpZXIpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubW9kaWZpZXJzLmluZGV4T2YobW9kaWZpZXIpICE9PSAtMTsgfVxufVxuXG5leHBvcnQgZW51bSBCdWlsdGluVHlwZU5hbWUge1xuICBEeW5hbWljLFxuICBCb29sLFxuICBTdHJpbmcsXG4gIEludCxcbiAgTnVtYmVyLFxuICBGdW5jdGlvblxufVxuXG5leHBvcnQgY2xhc3MgQnVpbHRpblR5cGUgZXh0ZW5kcyBUeXBlIHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IEJ1aWx0aW5UeXBlTmFtZSwgbW9kaWZpZXJzOiBUeXBlTW9kaWZpZXJbXSA9IG51bGwpIHsgc3VwZXIobW9kaWZpZXJzKTsgfVxuICB2aXNpdFR5cGUodmlzaXRvcjogVHlwZVZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRCdWlsdGludFR5cGUodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4dGVybmFsVHlwZSBleHRlbmRzIFR5cGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEsIHB1YmxpYyB0eXBlUGFyYW1zOiBUeXBlW10gPSBudWxsLFxuICAgICAgICAgICAgICBtb2RpZmllcnM6IFR5cGVNb2RpZmllcltdID0gbnVsbCkge1xuICAgIHN1cGVyKG1vZGlmaWVycyk7XG4gIH1cbiAgdmlzaXRUeXBlKHZpc2l0b3I6IFR5cGVWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXh0ZXJuYWxUeXBlKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEFycmF5VHlwZSBleHRlbmRzIFR5cGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb2Y6IFR5cGUsIG1vZGlmaWVyczogVHlwZU1vZGlmaWVyW10gPSBudWxsKSB7IHN1cGVyKG1vZGlmaWVycyk7IH1cbiAgdmlzaXRUeXBlKHZpc2l0b3I6IFR5cGVWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QXJyYXlUeXBlKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIE1hcFR5cGUgZXh0ZW5kcyBUeXBlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHZhbHVlVHlwZTogVHlwZSwgbW9kaWZpZXJzOiBUeXBlTW9kaWZpZXJbXSA9IG51bGwpIHsgc3VwZXIobW9kaWZpZXJzKTsgfVxuICB2aXNpdFR5cGUodmlzaXRvcjogVHlwZVZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0TWFwVHlwZSh0aGlzLCBjb250ZXh0KTsgfVxufVxuXG5leHBvcnQgdmFyIERZTkFNSUNfVFlQRSA9IG5ldyBCdWlsdGluVHlwZShCdWlsdGluVHlwZU5hbWUuRHluYW1pYyk7XG5leHBvcnQgdmFyIEJPT0xfVFlQRSA9IG5ldyBCdWlsdGluVHlwZShCdWlsdGluVHlwZU5hbWUuQm9vbCk7XG5leHBvcnQgdmFyIElOVF9UWVBFID0gbmV3IEJ1aWx0aW5UeXBlKEJ1aWx0aW5UeXBlTmFtZS5JbnQpO1xuZXhwb3J0IHZhciBOVU1CRVJfVFlQRSA9IG5ldyBCdWlsdGluVHlwZShCdWlsdGluVHlwZU5hbWUuTnVtYmVyKTtcbmV4cG9ydCB2YXIgU1RSSU5HX1RZUEUgPSBuZXcgQnVpbHRpblR5cGUoQnVpbHRpblR5cGVOYW1lLlN0cmluZyk7XG5leHBvcnQgdmFyIEZVTkNUSU9OX1RZUEUgPSBuZXcgQnVpbHRpblR5cGUoQnVpbHRpblR5cGVOYW1lLkZ1bmN0aW9uKTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVWaXNpdG9yIHtcbiAgdmlzaXRCdWlsdGludFR5cGUodHlwZTogQnVpbHRpblR5cGUsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRFeHRlcm5hbFR5cGUodHlwZTogRXh0ZXJuYWxUeXBlLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QXJyYXlUeXBlKHR5cGU6IEFycmF5VHlwZSwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdE1hcFR5cGUodHlwZTogTWFwVHlwZSwgY29udGV4dDogYW55KTogYW55O1xufVxuXG4vLy8vLyBFeHByZXNzaW9uc1xuXG5leHBvcnQgZW51bSBCaW5hcnlPcGVyYXRvciB7XG4gIEVxdWFscyxcbiAgTm90RXF1YWxzLFxuICBJZGVudGljYWwsXG4gIE5vdElkZW50aWNhbCxcbiAgTWludXMsXG4gIFBsdXMsXG4gIERpdmlkZSxcbiAgTXVsdGlwbHksXG4gIE1vZHVsbyxcbiAgQW5kLFxuICBPcixcbiAgTG93ZXIsXG4gIExvd2VyRXF1YWxzLFxuICBCaWdnZXIsXG4gIEJpZ2dlckVxdWFsc1xufVxuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIHR5cGU6IFR5cGUpIHt9XG5cbiAgYWJzdHJhY3QgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnk7XG5cbiAgcHJvcChuYW1lOiBzdHJpbmcpOiBSZWFkUHJvcEV4cHIgeyByZXR1cm4gbmV3IFJlYWRQcm9wRXhwcih0aGlzLCBuYW1lKTsgfVxuXG4gIGtleShpbmRleDogRXhwcmVzc2lvbiwgdHlwZTogVHlwZSA9IG51bGwpOiBSZWFkS2V5RXhwciB7XG4gICAgcmV0dXJuIG5ldyBSZWFkS2V5RXhwcih0aGlzLCBpbmRleCwgdHlwZSk7XG4gIH1cblxuICBjYWxsTWV0aG9kKG5hbWU6IHN0cmluZyB8IEJ1aWx0aW5NZXRob2QsIHBhcmFtczogRXhwcmVzc2lvbltdKTogSW52b2tlTWV0aG9kRXhwciB7XG4gICAgcmV0dXJuIG5ldyBJbnZva2VNZXRob2RFeHByKHRoaXMsIG5hbWUsIHBhcmFtcyk7XG4gIH1cblxuICBjYWxsRm4ocGFyYW1zOiBFeHByZXNzaW9uW10pOiBJbnZva2VGdW5jdGlvbkV4cHIgeyByZXR1cm4gbmV3IEludm9rZUZ1bmN0aW9uRXhwcih0aGlzLCBwYXJhbXMpOyB9XG5cbiAgaW5zdGFudGlhdGUocGFyYW1zOiBFeHByZXNzaW9uW10sIHR5cGU6IFR5cGUgPSBudWxsKTogSW5zdGFudGlhdGVFeHByIHtcbiAgICByZXR1cm4gbmV3IEluc3RhbnRpYXRlRXhwcih0aGlzLCBwYXJhbXMsIHR5cGUpO1xuICB9XG5cbiAgY29uZGl0aW9uYWwodHJ1ZUNhc2U6IEV4cHJlc3Npb24sIGZhbHNlQ2FzZTogRXhwcmVzc2lvbiA9IG51bGwpOiBDb25kaXRpb25hbEV4cHIge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uYWxFeHByKHRoaXMsIHRydWVDYXNlLCBmYWxzZUNhc2UpO1xuICB9XG5cbiAgZXF1YWxzKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuRXF1YWxzLCB0aGlzLCByaHMpO1xuICB9XG4gIG5vdEVxdWFscyhyaHM6IEV4cHJlc3Npb24pOiBCaW5hcnlPcGVyYXRvckV4cHIge1xuICAgIHJldHVybiBuZXcgQmluYXJ5T3BlcmF0b3JFeHByKEJpbmFyeU9wZXJhdG9yLk5vdEVxdWFscywgdGhpcywgcmhzKTtcbiAgfVxuICBpZGVudGljYWwocmhzOiBFeHByZXNzaW9uKTogQmluYXJ5T3BlcmF0b3JFeHByIHtcbiAgICByZXR1cm4gbmV3IEJpbmFyeU9wZXJhdG9yRXhwcihCaW5hcnlPcGVyYXRvci5JZGVudGljYWwsIHRoaXMsIHJocyk7XG4gIH1cbiAgbm90SWRlbnRpY2FsKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuTm90SWRlbnRpY2FsLCB0aGlzLCByaHMpO1xuICB9XG4gIG1pbnVzKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuTWludXMsIHRoaXMsIHJocyk7XG4gIH1cbiAgcGx1cyhyaHM6IEV4cHJlc3Npb24pOiBCaW5hcnlPcGVyYXRvckV4cHIge1xuICAgIHJldHVybiBuZXcgQmluYXJ5T3BlcmF0b3JFeHByKEJpbmFyeU9wZXJhdG9yLlBsdXMsIHRoaXMsIHJocyk7XG4gIH1cbiAgZGl2aWRlKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuRGl2aWRlLCB0aGlzLCByaHMpO1xuICB9XG4gIG11bHRpcGx5KHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuTXVsdGlwbHksIHRoaXMsIHJocyk7XG4gIH1cbiAgbW9kdWxvKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuTW9kdWxvLCB0aGlzLCByaHMpO1xuICB9XG4gIGFuZChyaHM6IEV4cHJlc3Npb24pOiBCaW5hcnlPcGVyYXRvckV4cHIge1xuICAgIHJldHVybiBuZXcgQmluYXJ5T3BlcmF0b3JFeHByKEJpbmFyeU9wZXJhdG9yLkFuZCwgdGhpcywgcmhzKTtcbiAgfVxuICBvcihyaHM6IEV4cHJlc3Npb24pOiBCaW5hcnlPcGVyYXRvckV4cHIge1xuICAgIHJldHVybiBuZXcgQmluYXJ5T3BlcmF0b3JFeHByKEJpbmFyeU9wZXJhdG9yLk9yLCB0aGlzLCByaHMpO1xuICB9XG4gIGxvd2VyKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuTG93ZXIsIHRoaXMsIHJocyk7XG4gIH1cbiAgbG93ZXJFcXVhbHMocmhzOiBFeHByZXNzaW9uKTogQmluYXJ5T3BlcmF0b3JFeHByIHtcbiAgICByZXR1cm4gbmV3IEJpbmFyeU9wZXJhdG9yRXhwcihCaW5hcnlPcGVyYXRvci5Mb3dlckVxdWFscywgdGhpcywgcmhzKTtcbiAgfVxuICBiaWdnZXIocmhzOiBFeHByZXNzaW9uKTogQmluYXJ5T3BlcmF0b3JFeHByIHtcbiAgICByZXR1cm4gbmV3IEJpbmFyeU9wZXJhdG9yRXhwcihCaW5hcnlPcGVyYXRvci5CaWdnZXIsIHRoaXMsIHJocyk7XG4gIH1cbiAgYmlnZ2VyRXF1YWxzKHJoczogRXhwcmVzc2lvbik6IEJpbmFyeU9wZXJhdG9yRXhwciB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlPcGVyYXRvckV4cHIoQmluYXJ5T3BlcmF0b3IuQmlnZ2VyRXF1YWxzLCB0aGlzLCByaHMpO1xuICB9XG4gIGlzQmxhbmsoKTogRXhwcmVzc2lvbiB7XG4gICAgLy8gTm90ZTogV2UgdXNlIGVxdWFscyBieSBwdXJwb3NlIGhlcmUgdG8gY29tcGFyZSB0byBudWxsIGFuZCB1bmRlZmluZWQgaW4gSlMuXG4gICAgcmV0dXJuIHRoaXMuZXF1YWxzKE5VTExfRVhQUik7XG4gIH1cbiAgY2FzdCh0eXBlOiBUeXBlKTogRXhwcmVzc2lvbiB7IHJldHVybiBuZXcgQ2FzdEV4cHIodGhpcywgdHlwZSk7IH1cbiAgdG9TdG10KCk6IFN0YXRlbWVudCB7IHJldHVybiBuZXcgRXhwcmVzc2lvblN0YXRlbWVudCh0aGlzKTsgfVxufVxuXG5leHBvcnQgZW51bSBCdWlsdGluVmFyIHtcbiAgVGhpcyxcbiAgU3VwZXIsXG4gIENhdGNoRXJyb3IsXG4gIENhdGNoU3RhY2tcbn1cblxuZXhwb3J0IGNsYXNzIFJlYWRWYXJFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIHB1YmxpYyBuYW1lO1xuICBwdWJsaWMgYnVpbHRpbjogQnVpbHRpblZhcjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcgfCBCdWlsdGluVmFyLCB0eXBlOiBUeXBlID0gbnVsbCkge1xuICAgIHN1cGVyKHR5cGUpO1xuICAgIGlmIChpc1N0cmluZyhuYW1lKSkge1xuICAgICAgdGhpcy5uYW1lID0gPHN0cmluZz5uYW1lO1xuICAgICAgdGhpcy5idWlsdGluID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYW1lID0gbnVsbDtcbiAgICAgIHRoaXMuYnVpbHRpbiA9IDxCdWlsdGluVmFyPm5hbWU7XG4gICAgfVxuICB9XG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFJlYWRWYXJFeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG5cbiAgc2V0KHZhbHVlOiBFeHByZXNzaW9uKTogV3JpdGVWYXJFeHByIHsgcmV0dXJuIG5ldyBXcml0ZVZhckV4cHIodGhpcy5uYW1lLCB2YWx1ZSk7IH1cbn1cblxuXG5leHBvcnQgY2xhc3MgV3JpdGVWYXJFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIHB1YmxpYyB2YWx1ZTogRXhwcmVzc2lvbjtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgdmFsdWU6IEV4cHJlc3Npb24sIHR5cGU6IFR5cGUgPSBudWxsKSB7XG4gICAgc3VwZXIoaXNQcmVzZW50KHR5cGUpID8gdHlwZSA6IHZhbHVlLnR5cGUpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFdyaXRlVmFyRXhwcih0aGlzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHRvRGVjbFN0bXQodHlwZTogVHlwZSA9IG51bGwsIG1vZGlmaWVyczogU3RtdE1vZGlmaWVyW10gPSBudWxsKTogRGVjbGFyZVZhclN0bXQge1xuICAgIHJldHVybiBuZXcgRGVjbGFyZVZhclN0bXQodGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0eXBlLCBtb2RpZmllcnMpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFdyaXRlS2V5RXhwciBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBwdWJsaWMgdmFsdWU6IEV4cHJlc3Npb247XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWNlaXZlcjogRXhwcmVzc2lvbiwgcHVibGljIGluZGV4OiBFeHByZXNzaW9uLCB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgdHlwZTogVHlwZSA9IG51bGwpIHtcbiAgICBzdXBlcihpc1ByZXNlbnQodHlwZSkgPyB0eXBlIDogdmFsdWUudHlwZSk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFdyaXRlS2V5RXhwcih0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBXcml0ZVByb3BFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIHB1YmxpYyB2YWx1ZTogRXhwcmVzc2lvbjtcbiAgY29uc3RydWN0b3IocHVibGljIHJlY2VpdmVyOiBFeHByZXNzaW9uLCBwdWJsaWMgbmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgdHlwZTogVHlwZSA9IG51bGwpIHtcbiAgICBzdXBlcihpc1ByZXNlbnQodHlwZSkgPyB0eXBlIDogdmFsdWUudHlwZSk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFdyaXRlUHJvcEV4cHIodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gQnVpbHRpbk1ldGhvZCB7XG4gIENvbmNhdEFycmF5LFxuICBTdWJzY3JpYmVPYnNlcnZhYmxlLFxuICBiaW5kXG59XG5cbmV4cG9ydCBjbGFzcyBJbnZva2VNZXRob2RFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBidWlsdGluOiBCdWlsdGluTWV0aG9kO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVjZWl2ZXI6IEV4cHJlc3Npb24sIG1ldGhvZDogc3RyaW5nIHwgQnVpbHRpbk1ldGhvZCxcbiAgICAgICAgICAgICAgcHVibGljIGFyZ3M6IEV4cHJlc3Npb25bXSwgdHlwZTogVHlwZSA9IG51bGwpIHtcbiAgICBzdXBlcih0eXBlKTtcbiAgICBpZiAoaXNTdHJpbmcobWV0aG9kKSkge1xuICAgICAgdGhpcy5uYW1lID0gPHN0cmluZz5tZXRob2Q7XG4gICAgICB0aGlzLmJ1aWx0aW4gPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWUgPSBudWxsO1xuICAgICAgdGhpcy5idWlsdGluID0gPEJ1aWx0aW5NZXRob2Q+bWV0aG9kO1xuICAgIH1cbiAgfVxuICB2aXNpdEV4cHJlc3Npb24odmlzaXRvcjogRXhwcmVzc2lvblZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRJbnZva2VNZXRob2RFeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEludm9rZUZ1bmN0aW9uRXhwciBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm46IEV4cHJlc3Npb24sIHB1YmxpYyBhcmdzOiBFeHByZXNzaW9uW10sIHR5cGU6IFR5cGUgPSBudWxsKSB7IHN1cGVyKHR5cGUpOyB9XG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEludm9rZUZ1bmN0aW9uRXhwcih0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBJbnN0YW50aWF0ZUV4cHIgZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNsYXNzRXhwcjogRXhwcmVzc2lvbiwgcHVibGljIGFyZ3M6IEV4cHJlc3Npb25bXSwgdHlwZT86IFR5cGUpIHsgc3VwZXIodHlwZSk7IH1cbiAgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0SW5zdGFudGlhdGVFeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIExpdGVyYWxFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogYW55LCB0eXBlOiBUeXBlID0gbnVsbCkgeyBzdXBlcih0eXBlKTsgfVxuICB2aXNpdEV4cHJlc3Npb24odmlzaXRvcjogRXhwcmVzc2lvblZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRMaXRlcmFsRXhwcih0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBFeHRlcm5hbEV4cHIgZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLCB0eXBlOiBUeXBlID0gbnVsbCxcbiAgICAgICAgICAgICAgcHVibGljIHR5cGVQYXJhbXM6IFR5cGVbXSA9IG51bGwpIHtcbiAgICBzdXBlcih0eXBlKTtcbiAgfVxuICB2aXNpdEV4cHJlc3Npb24odmlzaXRvcjogRXhwcmVzc2lvblZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRFeHRlcm5hbEV4cHIodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIHB1YmxpYyB0cnVlQ2FzZTogRXhwcmVzc2lvbjtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbmRpdGlvbjogRXhwcmVzc2lvbiwgdHJ1ZUNhc2U6IEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIHB1YmxpYyBmYWxzZUNhc2U6IEV4cHJlc3Npb24gPSBudWxsLCB0eXBlOiBUeXBlID0gbnVsbCkge1xuICAgIHN1cGVyKGlzUHJlc2VudCh0eXBlKSA/IHR5cGUgOiB0cnVlQ2FzZS50eXBlKTtcbiAgICB0aGlzLnRydWVDYXNlID0gdHJ1ZUNhc2U7XG4gIH1cbiAgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29uZGl0aW9uYWxFeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIE5vdEV4cHIgZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbmRpdGlvbjogRXhwcmVzc2lvbikgeyBzdXBlcihCT09MX1RZUEUpOyB9XG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdE5vdEV4cHIodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhc3RFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogRXhwcmVzc2lvbiwgdHlwZTogVHlwZSkgeyBzdXBlcih0eXBlKTsgfVxuICB2aXNpdEV4cHJlc3Npb24odmlzaXRvcjogRXhwcmVzc2lvblZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDYXN0RXhwcih0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBGblBhcmFtIHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIHR5cGU6IFR5cGUgPSBudWxsKSB7fVxufVxuXG5cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkV4cHIgZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhcmFtczogRm5QYXJhbVtdLCBwdWJsaWMgc3RhdGVtZW50czogU3RhdGVtZW50W10sIHR5cGU6IFR5cGUgPSBudWxsKSB7XG4gICAgc3VwZXIodHlwZSk7XG4gIH1cbiAgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RnVuY3Rpb25FeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdG9EZWNsU3RtdChuYW1lOiBzdHJpbmcsIG1vZGlmaWVyczogU3RtdE1vZGlmaWVyW10gPSBudWxsKTogRGVjbGFyZUZ1bmN0aW9uU3RtdCB7XG4gICAgcmV0dXJuIG5ldyBEZWNsYXJlRnVuY3Rpb25TdG10KG5hbWUsIHRoaXMucGFyYW1zLCB0aGlzLnN0YXRlbWVudHMsIHRoaXMudHlwZSwgbW9kaWZpZXJzKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBCaW5hcnlPcGVyYXRvckV4cHIgZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAgcHVibGljIGxoczogRXhwcmVzc2lvbjtcbiAgY29uc3RydWN0b3IocHVibGljIG9wZXJhdG9yOiBCaW5hcnlPcGVyYXRvciwgbGhzOiBFeHByZXNzaW9uLCBwdWJsaWMgcmhzOiBFeHByZXNzaW9uLFxuICAgICAgICAgICAgICB0eXBlOiBUeXBlID0gbnVsbCkge1xuICAgIHN1cGVyKGlzUHJlc2VudCh0eXBlKSA/IHR5cGUgOiBsaHMudHlwZSk7XG4gICAgdGhpcy5saHMgPSBsaHM7XG4gIH1cbiAgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlYWRQcm9wRXhwciBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVjZWl2ZXI6IEV4cHJlc3Npb24sIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHR5cGU6IFR5cGUgPSBudWxsKSB7IHN1cGVyKHR5cGUpOyB9XG4gIHZpc2l0RXhwcmVzc2lvbih2aXNpdG9yOiBFeHByZXNzaW9uVmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFJlYWRQcm9wRXhwcih0aGlzLCBjb250ZXh0KTtcbiAgfVxuICBzZXQodmFsdWU6IEV4cHJlc3Npb24pOiBXcml0ZVByb3BFeHByIHtcbiAgICByZXR1cm4gbmV3IFdyaXRlUHJvcEV4cHIodGhpcy5yZWNlaXZlciwgdGhpcy5uYW1lLCB2YWx1ZSk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVhZEtleUV4cHIgZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlY2VpdmVyOiBFeHByZXNzaW9uLCBwdWJsaWMgaW5kZXg6IEV4cHJlc3Npb24sIHR5cGU6IFR5cGUgPSBudWxsKSB7XG4gICAgc3VwZXIodHlwZSk7XG4gIH1cbiAgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UmVhZEtleUV4cHIodGhpcywgY29udGV4dCk7XG4gIH1cbiAgc2V0KHZhbHVlOiBFeHByZXNzaW9uKTogV3JpdGVLZXlFeHByIHtcbiAgICByZXR1cm4gbmV3IFdyaXRlS2V5RXhwcih0aGlzLnJlY2VpdmVyLCB0aGlzLmluZGV4LCB2YWx1ZSk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgTGl0ZXJhbEFycmF5RXhwciBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBwdWJsaWMgZW50cmllczogRXhwcmVzc2lvbltdO1xuICBjb25zdHJ1Y3RvcihlbnRyaWVzOiBFeHByZXNzaW9uW10sIHR5cGU6IFR5cGUgPSBudWxsKSB7XG4gICAgc3VwZXIodHlwZSk7XG4gICAgdGhpcy5lbnRyaWVzID0gZW50cmllcztcbiAgfVxuICB2aXNpdEV4cHJlc3Npb24odmlzaXRvcjogRXhwcmVzc2lvblZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRMaXRlcmFsQXJyYXlFeHByKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIExpdGVyYWxNYXBFeHByIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIHB1YmxpYyB2YWx1ZVR5cGU6IFR5cGUgPSBudWxsO1xuICA7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnRyaWVzOiBBcnJheTxBcnJheTxzdHJpbmcgfCBFeHByZXNzaW9uPj4sIHR5cGU6IE1hcFR5cGUgPSBudWxsKSB7XG4gICAgc3VwZXIodHlwZSk7XG4gICAgaWYgKGlzUHJlc2VudCh0eXBlKSkge1xuICAgICAgdGhpcy52YWx1ZVR5cGUgPSB0eXBlLnZhbHVlVHlwZTtcbiAgICB9XG4gIH1cbiAgdmlzaXRFeHByZXNzaW9uKHZpc2l0b3I6IEV4cHJlc3Npb25WaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TGl0ZXJhbE1hcEV4cHIodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHByZXNzaW9uVmlzaXRvciB7XG4gIHZpc2l0UmVhZFZhckV4cHIoYXN0OiBSZWFkVmFyRXhwciwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFdyaXRlVmFyRXhwcihleHByOiBXcml0ZVZhckV4cHIsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRXcml0ZUtleUV4cHIoZXhwcjogV3JpdGVLZXlFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0V3JpdGVQcm9wRXhwcihleHByOiBXcml0ZVByb3BFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0SW52b2tlTWV0aG9kRXhwcihhc3Q6IEludm9rZU1ldGhvZEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRJbnZva2VGdW5jdGlvbkV4cHIoYXN0OiBJbnZva2VGdW5jdGlvbkV4cHIsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRJbnN0YW50aWF0ZUV4cHIoYXN0OiBJbnN0YW50aWF0ZUV4cHIsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRMaXRlcmFsRXhwcihhc3Q6IExpdGVyYWxFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RXh0ZXJuYWxFeHByKGFzdDogRXh0ZXJuYWxFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0Q29uZGl0aW9uYWxFeHByKGFzdDogQ29uZGl0aW9uYWxFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0Tm90RXhwcihhc3Q6IE5vdEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRDYXN0RXhwcihhc3Q6IENhc3RFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RnVuY3Rpb25FeHByKGFzdDogRnVuY3Rpb25FeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKGFzdDogQmluYXJ5T3BlcmF0b3JFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UmVhZFByb3BFeHByKGFzdDogUmVhZFByb3BFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UmVhZEtleUV4cHIoYXN0OiBSZWFkS2V5RXhwciwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdExpdGVyYWxBcnJheUV4cHIoYXN0OiBMaXRlcmFsQXJyYXlFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0TGl0ZXJhbE1hcEV4cHIoYXN0OiBMaXRlcmFsTWFwRXhwciwgY29udGV4dDogYW55KTogYW55O1xufVxuXG5leHBvcnQgdmFyIFRISVNfRVhQUiA9IG5ldyBSZWFkVmFyRXhwcihCdWlsdGluVmFyLlRoaXMpO1xuZXhwb3J0IHZhciBTVVBFUl9FWFBSID0gbmV3IFJlYWRWYXJFeHByKEJ1aWx0aW5WYXIuU3VwZXIpO1xuZXhwb3J0IHZhciBDQVRDSF9FUlJPUl9WQVIgPSBuZXcgUmVhZFZhckV4cHIoQnVpbHRpblZhci5DYXRjaEVycm9yKTtcbmV4cG9ydCB2YXIgQ0FUQ0hfU1RBQ0tfVkFSID0gbmV3IFJlYWRWYXJFeHByKEJ1aWx0aW5WYXIuQ2F0Y2hTdGFjayk7XG5leHBvcnQgdmFyIE5VTExfRVhQUiA9IG5ldyBMaXRlcmFsRXhwcihudWxsLCBudWxsKTtcblxuLy8vLyBTdGF0ZW1lbnRzXG5leHBvcnQgZW51bSBTdG10TW9kaWZpZXIge1xuICBGaW5hbCxcbiAgUHJpdmF0ZVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGVtZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGlmaWVyczogU3RtdE1vZGlmaWVyW10gPSBudWxsKSB7XG4gICAgaWYgKGlzQmxhbmsobW9kaWZpZXJzKSkge1xuICAgICAgdGhpcy5tb2RpZmllcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCB2aXNpdFN0YXRlbWVudCh2aXNpdG9yOiBTdGF0ZW1lbnRWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnk7XG5cbiAgaGFzTW9kaWZpZXIobW9kaWZpZXI6IFN0bXRNb2RpZmllcik6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5tb2RpZmllcnMuaW5kZXhPZihtb2RpZmllcikgIT09IC0xOyB9XG59XG5cblxuZXhwb3J0IGNsYXNzIERlY2xhcmVWYXJTdG10IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgcHVibGljIHR5cGU6IFR5cGU7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogRXhwcmVzc2lvbiwgdHlwZTogVHlwZSA9IG51bGwsXG4gICAgICAgICAgICAgIG1vZGlmaWVyczogU3RtdE1vZGlmaWVyW10gPSBudWxsKSB7XG4gICAgc3VwZXIobW9kaWZpZXJzKTtcbiAgICB0aGlzLnR5cGUgPSBpc1ByZXNlbnQodHlwZSkgPyB0eXBlIDogdmFsdWUudHlwZTtcbiAgfVxuXG4gIHZpc2l0U3RhdGVtZW50KHZpc2l0b3I6IFN0YXRlbWVudFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREZWNsYXJlVmFyU3RtdCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVjbGFyZUZ1bmN0aW9uU3RtdCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBwYXJhbXM6IEZuUGFyYW1bXSwgcHVibGljIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgdHlwZTogVHlwZSA9IG51bGwsIG1vZGlmaWVyczogU3RtdE1vZGlmaWVyW10gPSBudWxsKSB7XG4gICAgc3VwZXIobW9kaWZpZXJzKTtcbiAgfVxuXG4gIHZpc2l0U3RhdGVtZW50KHZpc2l0b3I6IFN0YXRlbWVudFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREZWNsYXJlRnVuY3Rpb25TdG10KHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeHByZXNzaW9uU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIGV4cHI6IEV4cHJlc3Npb24pIHsgc3VwZXIoKTsgfVxuXG4gIHZpc2l0U3RhdGVtZW50KHZpc2l0b3I6IFN0YXRlbWVudFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRFeHByZXNzaW9uU3RtdCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBSZXR1cm5TdGF0ZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IEV4cHJlc3Npb24pIHsgc3VwZXIoKTsgfVxuICB2aXNpdFN0YXRlbWVudCh2aXNpdG9yOiBTdGF0ZW1lbnRWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UmV0dXJuU3RtdCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RDbGFzc1BhcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHlwZTogVHlwZSA9IG51bGwsIHB1YmxpYyBtb2RpZmllcnM6IFN0bXRNb2RpZmllcltdKSB7XG4gICAgaWYgKGlzQmxhbmsobW9kaWZpZXJzKSkge1xuICAgICAgdGhpcy5tb2RpZmllcnMgPSBbXTtcbiAgICB9XG4gIH1cbiAgaGFzTW9kaWZpZXIobW9kaWZpZXI6IFN0bXRNb2RpZmllcik6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5tb2RpZmllcnMuaW5kZXhPZihtb2RpZmllcikgIT09IC0xOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc0ZpZWxkIGV4dGVuZHMgQWJzdHJhY3RDbGFzc1BhcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCB0eXBlOiBUeXBlID0gbnVsbCwgbW9kaWZpZXJzOiBTdG10TW9kaWZpZXJbXSA9IG51bGwpIHtcbiAgICBzdXBlcih0eXBlLCBtb2RpZmllcnMpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIENsYXNzTWV0aG9kIGV4dGVuZHMgQWJzdHJhY3RDbGFzc1BhcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgcGFyYW1zOiBGblBhcmFtW10sIHB1YmxpYyBib2R5OiBTdGF0ZW1lbnRbXSxcbiAgICAgICAgICAgICAgdHlwZTogVHlwZSA9IG51bGwsIG1vZGlmaWVyczogU3RtdE1vZGlmaWVyW10gPSBudWxsKSB7XG4gICAgc3VwZXIodHlwZSwgbW9kaWZpZXJzKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBDbGFzc0dldHRlciBleHRlbmRzIEFic3RyYWN0Q2xhc3NQYXJ0IHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGJvZHk6IFN0YXRlbWVudFtdLCB0eXBlOiBUeXBlID0gbnVsbCxcbiAgICAgICAgICAgICAgbW9kaWZpZXJzOiBTdG10TW9kaWZpZXJbXSA9IG51bGwpIHtcbiAgICBzdXBlcih0eXBlLCBtb2RpZmllcnMpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIENsYXNzU3RtdCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBwYXJlbnQ6IEV4cHJlc3Npb24sIHB1YmxpYyBmaWVsZHM6IENsYXNzRmllbGRbXSxcbiAgICAgICAgICAgICAgcHVibGljIGdldHRlcnM6IENsYXNzR2V0dGVyW10sIHB1YmxpYyBjb25zdHJ1Y3Rvck1ldGhvZDogQ2xhc3NNZXRob2QsXG4gICAgICAgICAgICAgIHB1YmxpYyBtZXRob2RzOiBDbGFzc01ldGhvZFtdLCBtb2RpZmllcnM6IFN0bXRNb2RpZmllcltdID0gbnVsbCkge1xuICAgIHN1cGVyKG1vZGlmaWVycyk7XG4gIH1cbiAgdmlzaXRTdGF0ZW1lbnQodmlzaXRvcjogU3RhdGVtZW50VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdERlY2xhcmVDbGFzc1N0bXQodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgSWZTdG10IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbmRpdGlvbjogRXhwcmVzc2lvbiwgcHVibGljIHRydWVDYXNlOiBTdGF0ZW1lbnRbXSxcbiAgICAgICAgICAgICAgcHVibGljIGZhbHNlQ2FzZTogU3RhdGVtZW50W10gPSBDT05TVF9FWFBSKFtdKSkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgdmlzaXRTdGF0ZW1lbnQodmlzaXRvcjogU3RhdGVtZW50VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdElmU3RtdCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBDb21tZW50U3RtdCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tZW50OiBzdHJpbmcpIHsgc3VwZXIoKTsgfVxuICB2aXNpdFN0YXRlbWVudCh2aXNpdG9yOiBTdGF0ZW1lbnRWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29tbWVudFN0bXQodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgVHJ5Q2F0Y2hTdG10IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIGJvZHlTdG10czogU3RhdGVtZW50W10sIHB1YmxpYyBjYXRjaFN0bXRzOiBTdGF0ZW1lbnRbXSkgeyBzdXBlcigpOyB9XG4gIHZpc2l0U3RhdGVtZW50KHZpc2l0b3I6IFN0YXRlbWVudFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRUcnlDYXRjaFN0bXQodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgVGhyb3dTdG10IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIGVycm9yOiBFeHByZXNzaW9uKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXRTdGF0ZW1lbnQodmlzaXRvcjogU3RhdGVtZW50VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFRocm93U3RtdCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlbWVudFZpc2l0b3Ige1xuICB2aXNpdERlY2xhcmVWYXJTdG10KHN0bXQ6IERlY2xhcmVWYXJTdG10LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RGVjbGFyZUZ1bmN0aW9uU3RtdChzdG10OiBEZWNsYXJlRnVuY3Rpb25TdG10LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RXhwcmVzc2lvblN0bXQoc3RtdDogRXhwcmVzc2lvblN0YXRlbWVudCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFJldHVyblN0bXQoc3RtdDogUmV0dXJuU3RhdGVtZW50LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RGVjbGFyZUNsYXNzU3RtdChzdG10OiBDbGFzc1N0bXQsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRJZlN0bXQoc3RtdDogSWZTdG10LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0VHJ5Q2F0Y2hTdG10KHN0bXQ6IFRyeUNhdGNoU3RtdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFRocm93U3RtdChzdG10OiBUaHJvd1N0bXQsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRDb21tZW50U3RtdChzdG10OiBDb21tZW50U3RtdCwgY29udGV4dDogYW55KTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblRyYW5zZm9ybWVyIGltcGxlbWVudHMgU3RhdGVtZW50VmlzaXRvciwgRXhwcmVzc2lvblZpc2l0b3Ige1xuICB2aXNpdFJlYWRWYXJFeHByKGFzdDogUmVhZFZhckV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBhc3Q7IH1cbiAgdmlzaXRXcml0ZVZhckV4cHIoZXhwcjogV3JpdGVWYXJFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgV3JpdGVWYXJFeHByKGV4cHIubmFtZSwgZXhwci52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCkpO1xuICB9XG4gIHZpc2l0V3JpdGVLZXlFeHByKGV4cHI6IFdyaXRlS2V5RXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IFdyaXRlS2V5RXhwcihleHByLnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByLmluZGV4LnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByLnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSk7XG4gIH1cbiAgdmlzaXRXcml0ZVByb3BFeHByKGV4cHI6IFdyaXRlUHJvcEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBXcml0ZVByb3BFeHByKGV4cHIucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpLCBleHByLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgfVxuICB2aXNpdEludm9rZU1ldGhvZEV4cHIoYXN0OiBJbnZva2VNZXRob2RFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHZhciBtZXRob2QgPSBpc1ByZXNlbnQoYXN0LmJ1aWx0aW4pID8gYXN0LmJ1aWx0aW4gOiBhc3QubmFtZTtcbiAgICByZXR1cm4gbmV3IEludm9rZU1ldGhvZEV4cHIoYXN0LnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSwgbWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2l0QWxsRXhwcmVzc2lvbnMoYXN0LmFyZ3MsIGNvbnRleHQpLCBhc3QudHlwZSk7XG4gIH1cbiAgdmlzaXRJbnZva2VGdW5jdGlvbkV4cHIoYXN0OiBJbnZva2VGdW5jdGlvbkV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBJbnZva2VGdW5jdGlvbkV4cHIoYXN0LmZuLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2l0QWxsRXhwcmVzc2lvbnMoYXN0LmFyZ3MsIGNvbnRleHQpLCBhc3QudHlwZSk7XG4gIH1cbiAgdmlzaXRJbnN0YW50aWF0ZUV4cHIoYXN0OiBJbnN0YW50aWF0ZUV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBJbnN0YW50aWF0ZUV4cHIoYXN0LmNsYXNzRXhwci52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5hcmdzLCBjb250ZXh0KSwgYXN0LnR5cGUpO1xuICB9XG4gIHZpc2l0TGl0ZXJhbEV4cHIoYXN0OiBMaXRlcmFsRXhwciwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIGFzdDsgfVxuICB2aXNpdEV4dGVybmFsRXhwcihhc3Q6IEV4dGVybmFsRXhwciwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIGFzdDsgfVxuICB2aXNpdENvbmRpdGlvbmFsRXhwcihhc3Q6IENvbmRpdGlvbmFsRXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsRXhwcihhc3QuY29uZGl0aW9uLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QudHJ1ZUNhc2UudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5mYWxzZUNhc2UudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgfVxuICB2aXNpdE5vdEV4cHIoYXN0OiBOb3RFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgTm90RXhwcihhc3QuY29uZGl0aW9uLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSk7XG4gIH1cbiAgdmlzaXRDYXN0RXhwcihhc3Q6IENhc3RFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgQ2FzdEV4cHIoYXN0LnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSwgY29udGV4dCk7XG4gIH1cbiAgdmlzaXRGdW5jdGlvbkV4cHIoYXN0OiBGdW5jdGlvbkV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgLy8gRG9uJ3QgZGVzY2VuZCBpbnRvIG5lc3RlZCBmdW5jdGlvbnNcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKGFzdDogQmluYXJ5T3BlcmF0b3JFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgQmluYXJ5T3BlcmF0b3JFeHByKGFzdC5vcGVyYXRvciwgYXN0Lmxocy52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LnJocy52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCksIGFzdC50eXBlKTtcbiAgfVxuICB2aXNpdFJlYWRQcm9wRXhwcihhc3Q6IFJlYWRQcm9wRXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IFJlYWRQcm9wRXhwcihhc3QucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpLCBhc3QubmFtZSwgYXN0LnR5cGUpO1xuICB9XG4gIHZpc2l0UmVhZEtleUV4cHIoYXN0OiBSZWFkS2V5RXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IFJlYWRLZXlFeHByKGFzdC5yZWNlaXZlci52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuaW5kZXgudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpLCBhc3QudHlwZSk7XG4gIH1cbiAgdmlzaXRMaXRlcmFsQXJyYXlFeHByKGFzdDogTGl0ZXJhbEFycmF5RXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IExpdGVyYWxBcnJheUV4cHIodGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5lbnRyaWVzLCBjb250ZXh0KSk7XG4gIH1cbiAgdmlzaXRMaXRlcmFsTWFwRXhwcihhc3Q6IExpdGVyYWxNYXBFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgTGl0ZXJhbE1hcEV4cHIoYXN0LmVudHJpZXMubWFwKFxuICAgICAgICAoZW50cnkpID0+IFtlbnRyeVswXSwgKDxFeHByZXNzaW9uPmVudHJ5WzFdKS52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCldKSk7XG4gIH1cbiAgdmlzaXRBbGxFeHByZXNzaW9ucyhleHByczogRXhwcmVzc2lvbltdLCBjb250ZXh0OiBhbnkpOiBFeHByZXNzaW9uW10ge1xuICAgIHJldHVybiBleHBycy5tYXAoZXhwciA9PiBleHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSk7XG4gIH1cblxuICB2aXNpdERlY2xhcmVWYXJTdG10KHN0bXQ6IERlY2xhcmVWYXJTdG10LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgRGVjbGFyZVZhclN0bXQoc3RtdC5uYW1lLCBzdG10LnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSwgc3RtdC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdC5tb2RpZmllcnMpO1xuICB9XG4gIHZpc2l0RGVjbGFyZUZ1bmN0aW9uU3RtdChzdG10OiBEZWNsYXJlRnVuY3Rpb25TdG10LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIC8vIERvbid0IGRlc2NlbmQgaW50byBuZXN0ZWQgZnVuY3Rpb25zXG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cbiAgdmlzaXRFeHByZXNzaW9uU3RtdChzdG10OiBFeHByZXNzaW9uU3RhdGVtZW50LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvblN0YXRlbWVudChzdG10LmV4cHIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgfVxuICB2aXNpdFJldHVyblN0bXQoc3RtdDogUmV0dXJuU3RhdGVtZW50LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgUmV0dXJuU3RhdGVtZW50KHN0bXQudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgfVxuICB2aXNpdERlY2xhcmVDbGFzc1N0bXQoc3RtdDogQ2xhc3NTdG10LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIC8vIERvbid0IGRlc2NlbmQgaW50byBuZXN0ZWQgZnVuY3Rpb25zXG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cbiAgdmlzaXRJZlN0bXQoc3RtdDogSWZTdG10LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgSWZTdG10KHN0bXQuY29uZGl0aW9uLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LnRydWVDYXNlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LmZhbHNlQ2FzZSwgY29udGV4dCkpO1xuICB9XG4gIHZpc2l0VHJ5Q2F0Y2hTdG10KHN0bXQ6IFRyeUNhdGNoU3RtdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IFRyeUNhdGNoU3RtdCh0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LmJvZHlTdG10cywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5jYXRjaFN0bXRzLCBjb250ZXh0KSk7XG4gIH1cbiAgdmlzaXRUaHJvd1N0bXQoc3RtdDogVGhyb3dTdG10LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgVGhyb3dTdG10KHN0bXQuZXJyb3IudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgfVxuICB2aXNpdENvbW1lbnRTdG10KHN0bXQ6IENvbW1lbnRTdG10LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gc3RtdDsgfVxuICB2aXNpdEFsbFN0YXRlbWVudHMoc3RtdHM6IFN0YXRlbWVudFtdLCBjb250ZXh0OiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgcmV0dXJuIHN0bXRzLm1hcChzdG10ID0+IHN0bXQudmlzaXRTdGF0ZW1lbnQodGhpcywgY29udGV4dCkpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlY3Vyc2l2ZUV4cHJlc3Npb25WaXNpdG9yIGltcGxlbWVudHMgU3RhdGVtZW50VmlzaXRvciwgRXhwcmVzc2lvblZpc2l0b3Ige1xuICB2aXNpdFJlYWRWYXJFeHByKGFzdDogUmVhZFZhckV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBhc3Q7IH1cbiAgdmlzaXRXcml0ZVZhckV4cHIoZXhwcjogV3JpdGVWYXJFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGV4cHIudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIHJldHVybiBleHByO1xuICB9XG4gIHZpc2l0V3JpdGVLZXlFeHByKGV4cHI6IFdyaXRlS2V5RXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBleHByLnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICBleHByLmluZGV4LnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICBleHByLnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuICB2aXNpdFdyaXRlUHJvcEV4cHIoZXhwcjogV3JpdGVQcm9wRXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBleHByLnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICBleHByLnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuICB2aXNpdEludm9rZU1ldGhvZEV4cHIoYXN0OiBJbnZva2VNZXRob2RFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5yZWNlaXZlci52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCk7XG4gICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5hcmdzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0SW52b2tlRnVuY3Rpb25FeHByKGFzdDogSW52b2tlRnVuY3Rpb25FeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5mbi52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCk7XG4gICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5hcmdzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0SW5zdGFudGlhdGVFeHByKGFzdDogSW5zdGFudGlhdGVFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5jbGFzc0V4cHIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIHRoaXMudmlzaXRBbGxFeHByZXNzaW9ucyhhc3QuYXJncywgY29udGV4dCk7XG4gICAgcmV0dXJuIGFzdDtcbiAgfVxuICB2aXNpdExpdGVyYWxFeHByKGFzdDogTGl0ZXJhbEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBhc3Q7IH1cbiAgdmlzaXRFeHRlcm5hbEV4cHIoYXN0OiBFeHRlcm5hbEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBhc3Q7IH1cbiAgdmlzaXRDb25kaXRpb25hbEV4cHIoYXN0OiBDb25kaXRpb25hbEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LmNvbmRpdGlvbi52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCk7XG4gICAgYXN0LnRydWVDYXNlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICBhc3QuZmFsc2VDYXNlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0Tm90RXhwcihhc3Q6IE5vdEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LmNvbmRpdGlvbi52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCk7XG4gICAgcmV0dXJuIGFzdDtcbiAgfVxuICB2aXNpdENhc3RFeHByKGFzdDogQ2FzdEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0RnVuY3Rpb25FeHByKGFzdDogRnVuY3Rpb25FeHByLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gYXN0OyB9XG4gIHZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKGFzdDogQmluYXJ5T3BlcmF0b3JFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5saHMudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIGFzdC5yaHMudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIHJldHVybiBhc3Q7XG4gIH1cbiAgdmlzaXRSZWFkUHJvcEV4cHIoYXN0OiBSZWFkUHJvcEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0UmVhZEtleUV4cHIoYXN0OiBSZWFkS2V5RXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBhc3QucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIGFzdC5pbmRleC52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCk7XG4gICAgcmV0dXJuIGFzdDtcbiAgfVxuICB2aXNpdExpdGVyYWxBcnJheUV4cHIoYXN0OiBMaXRlcmFsQXJyYXlFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHRoaXMudmlzaXRBbGxFeHByZXNzaW9ucyhhc3QuZW50cmllcywgY29udGV4dCk7XG4gICAgcmV0dXJuIGFzdDtcbiAgfVxuICB2aXNpdExpdGVyYWxNYXBFeHByKGFzdDogTGl0ZXJhbE1hcEV4cHIsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LmVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+ICg8RXhwcmVzc2lvbj5lbnRyeVsxXSkudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgICByZXR1cm4gYXN0O1xuICB9XG4gIHZpc2l0QWxsRXhwcmVzc2lvbnMoZXhwcnM6IEV4cHJlc3Npb25bXSwgY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgZXhwcnMuZm9yRWFjaChleHByID0+IGV4cHIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpKTtcbiAgfVxuXG4gIHZpc2l0RGVjbGFyZVZhclN0bXQoc3RtdDogRGVjbGFyZVZhclN0bXQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgc3RtdC52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY29udGV4dCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cbiAgdmlzaXREZWNsYXJlRnVuY3Rpb25TdG10KHN0bXQ6IERlY2xhcmVGdW5jdGlvblN0bXQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgLy8gRG9uJ3QgZGVzY2VuZCBpbnRvIG5lc3RlZCBmdW5jdGlvbnNcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuICB2aXNpdEV4cHJlc3Npb25TdG10KHN0bXQ6IEV4cHJlc3Npb25TdGF0ZW1lbnQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgc3RtdC5leHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuICB2aXNpdFJldHVyblN0bXQoc3RtdDogUmV0dXJuU3RhdGVtZW50LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHN0bXQudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIHJldHVybiBzdG10O1xuICB9XG4gIHZpc2l0RGVjbGFyZUNsYXNzU3RtdChzdG10OiBDbGFzc1N0bXQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgLy8gRG9uJ3QgZGVzY2VuZCBpbnRvIG5lc3RlZCBmdW5jdGlvbnNcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuICB2aXNpdElmU3RtdChzdG10OiBJZlN0bXQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgc3RtdC5jb25kaXRpb24udmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQudHJ1ZUNhc2UsIGNvbnRleHQpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQuZmFsc2VDYXNlLCBjb250ZXh0KTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuICB2aXNpdFRyeUNhdGNoU3RtdChzdG10OiBUcnlDYXRjaFN0bXQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5ib2R5U3RtdHMsIGNvbnRleHQpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQuY2F0Y2hTdG10cywgY29udGV4dCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cbiAgdmlzaXRUaHJvd1N0bXQoc3RtdDogVGhyb3dTdG10LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHN0bXQuZXJyb3IudmlzaXRFeHByZXNzaW9uKHRoaXMsIGNvbnRleHQpO1xuICAgIHJldHVybiBzdG10O1xuICB9XG4gIHZpc2l0Q29tbWVudFN0bXQoc3RtdDogQ29tbWVudFN0bXQsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBzdG10OyB9XG4gIHZpc2l0QWxsU3RhdGVtZW50cyhzdG10czogU3RhdGVtZW50W10sIGNvbnRleHQ6IGFueSk6IHZvaWQge1xuICAgIHN0bXRzLmZvckVhY2goc3RtdCA9PiBzdG10LnZpc2l0U3RhdGVtZW50KHRoaXMsIGNvbnRleHQpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVZhckluRXhwcmVzc2lvbih2YXJOYW1lOiBzdHJpbmcsIG5ld1ZhbHVlOiBFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbik6IEV4cHJlc3Npb24ge1xuICB2YXIgdHJhbnNmb3JtZXIgPSBuZXcgX1JlcGxhY2VWYXJpYWJsZVRyYW5zZm9ybWVyKHZhck5hbWUsIG5ld1ZhbHVlKTtcbiAgcmV0dXJuIGV4cHJlc3Npb24udmlzaXRFeHByZXNzaW9uKHRyYW5zZm9ybWVyLCBudWxsKTtcbn1cblxuY2xhc3MgX1JlcGxhY2VWYXJpYWJsZVRyYW5zZm9ybWVyIGV4dGVuZHMgRXhwcmVzc2lvblRyYW5zZm9ybWVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmFyTmFtZTogc3RyaW5nLCBwcml2YXRlIF9uZXdWYWx1ZTogRXhwcmVzc2lvbikgeyBzdXBlcigpOyB9XG4gIHZpc2l0UmVhZFZhckV4cHIoYXN0OiBSZWFkVmFyRXhwciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gYXN0Lm5hbWUgPT0gdGhpcy5fdmFyTmFtZSA/IHRoaXMuX25ld1ZhbHVlIDogYXN0O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVhZFZhck5hbWVzKHN0bXRzOiBTdGF0ZW1lbnRbXSk6IFNldDxzdHJpbmc+IHtcbiAgdmFyIGZpbmRlciA9IG5ldyBfVmFyaWFibGVGaW5kZXIoKTtcbiAgZmluZGVyLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10cywgbnVsbCk7XG4gIHJldHVybiBmaW5kZXIudmFyTmFtZXM7XG59XG5cbmNsYXNzIF9WYXJpYWJsZUZpbmRlciBleHRlbmRzIFJlY3Vyc2l2ZUV4cHJlc3Npb25WaXNpdG9yIHtcbiAgdmFyTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgdmlzaXRSZWFkVmFyRXhwcihhc3Q6IFJlYWRWYXJFeHByLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHRoaXMudmFyTmFtZXMuYWRkKGFzdC5uYW1lKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGUobmFtZTogc3RyaW5nLCB0eXBlOiBUeXBlID0gbnVsbCk6IFJlYWRWYXJFeHByIHtcbiAgcmV0dXJuIG5ldyBSZWFkVmFyRXhwcihuYW1lLCB0eXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydEV4cHIoaWQ6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEsIHR5cGVQYXJhbXM6IFR5cGVbXSA9IG51bGwpOiBFeHRlcm5hbEV4cHIge1xuICByZXR1cm4gbmV3IEV4dGVybmFsRXhwcihpZCwgbnVsbCwgdHlwZVBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRUeXBlKGlkOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLCB0eXBlUGFyYW1zOiBUeXBlW10gPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZU1vZGlmaWVyczogVHlwZU1vZGlmaWVyW10gPSBudWxsKTogRXh0ZXJuYWxUeXBlIHtcbiAgcmV0dXJuIGlzUHJlc2VudChpZCkgPyBuZXcgRXh0ZXJuYWxUeXBlKGlkLCB0eXBlUGFyYW1zLCB0eXBlTW9kaWZpZXJzKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlOiBhbnksIHR5cGU6IFR5cGUgPSBudWxsKTogTGl0ZXJhbEV4cHIge1xuICByZXR1cm4gbmV3IExpdGVyYWxFeHByKHZhbHVlLCB0eXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpdGVyYWxBcnIodmFsdWVzOiBFeHByZXNzaW9uW10sIHR5cGU6IFR5cGUgPSBudWxsKTogTGl0ZXJhbEFycmF5RXhwciB7XG4gIHJldHVybiBuZXcgTGl0ZXJhbEFycmF5RXhwcih2YWx1ZXMsIHR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbE1hcCh2YWx1ZXM6IEFycmF5PEFycmF5PHN0cmluZyB8IEV4cHJlc3Npb24+PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1hcFR5cGUgPSBudWxsKTogTGl0ZXJhbE1hcEV4cHIge1xuICByZXR1cm4gbmV3IExpdGVyYWxNYXBFeHByKHZhbHVlcywgdHlwZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3QoZXhwcjogRXhwcmVzc2lvbik6IE5vdEV4cHIge1xuICByZXR1cm4gbmV3IE5vdEV4cHIoZXhwcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbihwYXJhbXM6IEZuUGFyYW1bXSwgYm9keTogU3RhdGVtZW50W10sIHR5cGU6IFR5cGUgPSBudWxsKTogRnVuY3Rpb25FeHByIHtcbiAgcmV0dXJuIG5ldyBGdW5jdGlvbkV4cHIocGFyYW1zLCBib2R5LCB0eXBlKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar o = require('./output_ast');\r\nvar _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\r\nexports.CATCH_ERROR_VAR = o.variable('error');\r\nexports.CATCH_STACK_VAR = o.variable('stack');\r\nvar OutputEmitter = (function () {\r\n function OutputEmitter() {\r\n }\r\n return OutputEmitter;\r\n}());\r\nexports.OutputEmitter = OutputEmitter;\r\nvar _EmittedLine = (function () {\r\n function _EmittedLine(indent) {\r\n this.indent = indent;\r\n this.parts = [];\r\n }\r\n return _EmittedLine;\r\n}());\r\nvar EmitterVisitorContext = (function () {\r\n function EmitterVisitorContext(_exportedVars, _indent) {\r\n this._exportedVars = _exportedVars;\r\n this._indent = _indent;\r\n this._classes = [];\r\n this._lines = [new _EmittedLine(_indent)];\r\n }\r\n EmitterVisitorContext.createRoot = function (exportedVars) {\r\n return new EmitterVisitorContext(exportedVars, 0);\r\n };\r\n Object.defineProperty(EmitterVisitorContext.prototype, \"_currentLine\", {\r\n get: function () { return this._lines[this._lines.length - 1]; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EmitterVisitorContext.prototype.isExportedVar = function (varName) { return this._exportedVars.indexOf(varName) !== -1; };\r\n EmitterVisitorContext.prototype.println = function (lastPart) {\r\n if (lastPart === void 0) { lastPart = ''; }\r\n this.print(lastPart, true);\r\n };\r\n EmitterVisitorContext.prototype.lineIsEmpty = function () { return this._currentLine.parts.length === 0; };\r\n EmitterVisitorContext.prototype.print = function (part, newLine) {\r\n if (newLine === void 0) { newLine = false; }\r\n if (part.length > 0) {\r\n this._currentLine.parts.push(part);\r\n }\r\n if (newLine) {\r\n this._lines.push(new _EmittedLine(this._indent));\r\n }\r\n };\r\n EmitterVisitorContext.prototype.removeEmptyLastLine = function () {\r\n if (this.lineIsEmpty()) {\r\n this._lines.pop();\r\n }\r\n };\r\n EmitterVisitorContext.prototype.incIndent = function () {\r\n this._indent++;\r\n this._currentLine.indent = this._indent;\r\n };\r\n EmitterVisitorContext.prototype.decIndent = function () {\r\n this._indent--;\r\n this._currentLine.indent = this._indent;\r\n };\r\n EmitterVisitorContext.prototype.pushClass = function (clazz) { this._classes.push(clazz); };\r\n EmitterVisitorContext.prototype.popClass = function () { return this._classes.pop(); };\r\n Object.defineProperty(EmitterVisitorContext.prototype, \"currentClass\", {\r\n get: function () {\r\n return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EmitterVisitorContext.prototype.toSource = function () {\r\n var lines = this._lines;\r\n if (lines[lines.length - 1].parts.length === 0) {\r\n lines = lines.slice(0, lines.length - 1);\r\n }\r\n return lines.map(function (line) {\r\n if (line.parts.length > 0) {\r\n return _createIndent(line.indent) + line.parts.join('');\r\n }\r\n else {\r\n return '';\r\n }\r\n })\r\n .join('\\n');\r\n };\r\n return EmitterVisitorContext;\r\n}());\r\nexports.EmitterVisitorContext = EmitterVisitorContext;\r\nvar AbstractEmitterVisitor = (function () {\r\n function AbstractEmitterVisitor(_escapeDollarInStrings) {\r\n this._escapeDollarInStrings = _escapeDollarInStrings;\r\n }\r\n AbstractEmitterVisitor.prototype.visitExpressionStmt = function (stmt, ctx) {\r\n stmt.expr.visitExpression(this, ctx);\r\n ctx.println(';');\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitReturnStmt = function (stmt, ctx) {\r\n ctx.print(\"return \");\r\n stmt.value.visitExpression(this, ctx);\r\n ctx.println(';');\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitIfStmt = function (stmt, ctx) {\r\n ctx.print(\"if (\");\r\n stmt.condition.visitExpression(this, ctx);\r\n ctx.print(\") {\");\r\n var hasElseCase = lang_1.isPresent(stmt.falseCase) && stmt.falseCase.length > 0;\r\n if (stmt.trueCase.length <= 1 && !hasElseCase) {\r\n ctx.print(\" \");\r\n this.visitAllStatements(stmt.trueCase, ctx);\r\n ctx.removeEmptyLastLine();\r\n ctx.print(\" \");\r\n }\r\n else {\r\n ctx.println();\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.trueCase, ctx);\r\n ctx.decIndent();\r\n if (hasElseCase) {\r\n ctx.println(\"} else {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.falseCase, ctx);\r\n ctx.decIndent();\r\n }\r\n }\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitThrowStmt = function (stmt, ctx) {\r\n ctx.print(\"throw \");\r\n stmt.error.visitExpression(this, ctx);\r\n ctx.println(\";\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitCommentStmt = function (stmt, ctx) {\r\n var lines = stmt.comment.split('\\n');\r\n lines.forEach(function (line) { ctx.println(\"// \" + line); });\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitWriteVarExpr = function (expr, ctx) {\r\n var lineWasEmpty = ctx.lineIsEmpty();\r\n if (!lineWasEmpty) {\r\n ctx.print('(');\r\n }\r\n ctx.print(expr.name + \" = \");\r\n expr.value.visitExpression(this, ctx);\r\n if (!lineWasEmpty) {\r\n ctx.print(')');\r\n }\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitWriteKeyExpr = function (expr, ctx) {\r\n var lineWasEmpty = ctx.lineIsEmpty();\r\n if (!lineWasEmpty) {\r\n ctx.print('(');\r\n }\r\n expr.receiver.visitExpression(this, ctx);\r\n ctx.print(\"[\");\r\n expr.index.visitExpression(this, ctx);\r\n ctx.print(\"] = \");\r\n expr.value.visitExpression(this, ctx);\r\n if (!lineWasEmpty) {\r\n ctx.print(')');\r\n }\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitWritePropExpr = function (expr, ctx) {\r\n var lineWasEmpty = ctx.lineIsEmpty();\r\n if (!lineWasEmpty) {\r\n ctx.print('(');\r\n }\r\n expr.receiver.visitExpression(this, ctx);\r\n ctx.print(\".\" + expr.name + \" = \");\r\n expr.value.visitExpression(this, ctx);\r\n if (!lineWasEmpty) {\r\n ctx.print(')');\r\n }\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitInvokeMethodExpr = function (expr, ctx) {\r\n expr.receiver.visitExpression(this, ctx);\r\n var name = expr.name;\r\n if (lang_1.isPresent(expr.builtin)) {\r\n name = this.getBuiltinMethodName(expr.builtin);\r\n if (lang_1.isBlank(name)) {\r\n // some builtins just mean to skip the call.\r\n // e.g. `bind` in Dart.\r\n return null;\r\n }\r\n }\r\n ctx.print(\".\" + name + \"(\");\r\n this.visitAllExpressions(expr.args, ctx, \",\");\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {\r\n expr.fn.visitExpression(this, ctx);\r\n ctx.print(\"(\");\r\n this.visitAllExpressions(expr.args, ctx, ',');\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {\r\n var varName = ast.name;\r\n if (lang_1.isPresent(ast.builtin)) {\r\n switch (ast.builtin) {\r\n case o.BuiltinVar.Super:\r\n varName = 'super';\r\n break;\r\n case o.BuiltinVar.This:\r\n varName = 'this';\r\n break;\r\n case o.BuiltinVar.CatchError:\r\n varName = exports.CATCH_ERROR_VAR.name;\r\n break;\r\n case o.BuiltinVar.CatchStack:\r\n varName = exports.CATCH_STACK_VAR.name;\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown builtin variable \" + ast.builtin);\r\n }\r\n }\r\n ctx.print(varName);\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {\r\n ctx.print(\"new \");\r\n ast.classExpr.visitExpression(this, ctx);\r\n ctx.print(\"(\");\r\n this.visitAllExpressions(ast.args, ctx, ',');\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {\r\n var value = ast.value;\r\n if (lang_1.isString(value)) {\r\n ctx.print(escapeSingleQuoteString(value, this._escapeDollarInStrings));\r\n }\r\n else if (lang_1.isBlank(value)) {\r\n ctx.print('null');\r\n }\r\n else {\r\n ctx.print(\"\" + value);\r\n }\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitConditionalExpr = function (ast, ctx) {\r\n ctx.print(\"(\");\r\n ast.condition.visitExpression(this, ctx);\r\n ctx.print('? ');\r\n ast.trueCase.visitExpression(this, ctx);\r\n ctx.print(': ');\r\n ast.falseCase.visitExpression(this, ctx);\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitNotExpr = function (ast, ctx) {\r\n ctx.print('!');\r\n ast.condition.visitExpression(this, ctx);\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\r\n var opStr;\r\n switch (ast.operator) {\r\n case o.BinaryOperator.Equals:\r\n opStr = '==';\r\n break;\r\n case o.BinaryOperator.Identical:\r\n opStr = '===';\r\n break;\r\n case o.BinaryOperator.NotEquals:\r\n opStr = '!=';\r\n break;\r\n case o.BinaryOperator.NotIdentical:\r\n opStr = '!==';\r\n break;\r\n case o.BinaryOperator.And:\r\n opStr = '&&';\r\n break;\r\n case o.BinaryOperator.Or:\r\n opStr = '||';\r\n break;\r\n case o.BinaryOperator.Plus:\r\n opStr = '+';\r\n break;\r\n case o.BinaryOperator.Minus:\r\n opStr = '-';\r\n break;\r\n case o.BinaryOperator.Divide:\r\n opStr = '/';\r\n break;\r\n case o.BinaryOperator.Multiply:\r\n opStr = '*';\r\n break;\r\n case o.BinaryOperator.Modulo:\r\n opStr = '%';\r\n break;\r\n case o.BinaryOperator.Lower:\r\n opStr = '<';\r\n break;\r\n case o.BinaryOperator.LowerEquals:\r\n opStr = '<=';\r\n break;\r\n case o.BinaryOperator.Bigger:\r\n opStr = '>';\r\n break;\r\n case o.BinaryOperator.BiggerEquals:\r\n opStr = '>=';\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown operator \" + ast.operator);\r\n }\r\n ctx.print(\"(\");\r\n ast.lhs.visitExpression(this, ctx);\r\n ctx.print(\" \" + opStr + \" \");\r\n ast.rhs.visitExpression(this, ctx);\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitReadPropExpr = function (ast, ctx) {\r\n ast.receiver.visitExpression(this, ctx);\r\n ctx.print(\".\");\r\n ctx.print(ast.name);\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitReadKeyExpr = function (ast, ctx) {\r\n ast.receiver.visitExpression(this, ctx);\r\n ctx.print(\"[\");\r\n ast.index.visitExpression(this, ctx);\r\n ctx.print(\"]\");\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {\r\n var useNewLine = ast.entries.length > 1;\r\n ctx.print(\"[\", useNewLine);\r\n ctx.incIndent();\r\n this.visitAllExpressions(ast.entries, ctx, ',', useNewLine);\r\n ctx.decIndent();\r\n ctx.print(\"]\", useNewLine);\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {\r\n var _this = this;\r\n var useNewLine = ast.entries.length > 1;\r\n ctx.print(\"{\", useNewLine);\r\n ctx.incIndent();\r\n this.visitAllObjects(function (entry) {\r\n ctx.print(escapeSingleQuoteString(entry[0], _this._escapeDollarInStrings) + \": \");\r\n entry[1].visitExpression(_this, ctx);\r\n }, ast.entries, ctx, ',', useNewLine);\r\n ctx.decIndent();\r\n ctx.print(\"}\", useNewLine);\r\n return null;\r\n };\r\n AbstractEmitterVisitor.prototype.visitAllExpressions = function (expressions, ctx, separator, newLine) {\r\n var _this = this;\r\n if (newLine === void 0) { newLine = false; }\r\n this.visitAllObjects(function (expr) { return expr.visitExpression(_this, ctx); }, expressions, ctx, separator, newLine);\r\n };\r\n AbstractEmitterVisitor.prototype.visitAllObjects = function (handler, expressions, ctx, separator, newLine) {\r\n if (newLine === void 0) { newLine = false; }\r\n for (var i = 0; i < expressions.length; i++) {\r\n if (i > 0) {\r\n ctx.print(separator, newLine);\r\n }\r\n handler(expressions[i]);\r\n }\r\n if (newLine) {\r\n ctx.println();\r\n }\r\n };\r\n AbstractEmitterVisitor.prototype.visitAllStatements = function (statements, ctx) {\r\n var _this = this;\r\n statements.forEach(function (stmt) { return stmt.visitStatement(_this, ctx); });\r\n };\r\n return AbstractEmitterVisitor;\r\n}());\r\nexports.AbstractEmitterVisitor = AbstractEmitterVisitor;\r\nfunction escapeSingleQuoteString(input, escapeDollar) {\r\n if (lang_1.isBlank(input)) {\r\n return null;\r\n }\r\n var body = lang_1.StringWrapper.replaceAllMapped(input, _SINGLE_QUOTE_ESCAPE_STRING_RE, function (match) {\r\n if (match[0] == '$') {\r\n return escapeDollar ? '\\\\$' : '$';\r\n }\r\n else if (match[0] == '\\n') {\r\n return '\\\\n';\r\n }\r\n else if (match[0] == '\\r') {\r\n return '\\\\r';\r\n }\r\n else {\r\n return \"\\\\\" + match[0];\r\n }\r\n });\r\n return \"'\" + body + \"'\";\r\n}\r\nexports.escapeSingleQuoteString = escapeSingleQuoteString;\r\nfunction _createIndent(count) {\r\n var res = '';\r\n for (var i = 0; i < count; i++) {\r\n res += ' ';\r\n }\r\n return res;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9vdXRwdXQvYWJzdHJhY3RfZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBT08sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQywyQkFBMkMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM1RSxJQUFZLENBQUMsV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUVsQyxJQUFJLDhCQUE4QixHQUFHLGdCQUFnQixDQUFDO0FBQzNDLHVCQUFlLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0Qyx1QkFBZSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFakQ7SUFBQTtJQUVBLENBQUM7SUFBRCxvQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRnFCLHFCQUFhLGdCQUVsQyxDQUFBO0FBRUQ7SUFFRSxzQkFBbUIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFEakMsVUFBSyxHQUFhLEVBQUUsQ0FBQztJQUNlLENBQUM7SUFDdkMsbUJBQUM7QUFBRCxDQUFDLEFBSEQsSUFHQztBQUVEO0lBUUUsK0JBQW9CLGFBQXVCLEVBQVUsT0FBZTtRQUFoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBVTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFGNUQsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQVRNLGdDQUFVLEdBQWpCLFVBQWtCLFlBQXNCO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxD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Q0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHO2dCQUN2QixLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNiLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNiLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJO2dCQUN4QixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLO2dCQUN6QixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNO2dCQUMxQixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRO2dCQUM1QixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNO2dCQUMxQixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLO2dCQUN6QixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXO2dCQUMvQixLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNiLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNO2dCQUMxQixLQUFLLEdBQUcsR0FBRyxDQUFDO2dCQUNaLEtBQUssQ0FBQztZQUNSLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZO2dCQUNoQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNiLEtBQUssQ0FBQztZQUNSO2dCQUNFLE1BQU0sSUFBSSwwQkFBYSxDQUFDLHNCQUFv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UUFDL0IsR0FBRyxJQUFJLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgaXNTdHJpbmcsXG4gIGV2YWxFeHByZXNzaW9uLFxuICBSZWdFeHBXcmFwcGVyLFxuICBTdHJpbmdXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCB1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuL291dHB1dF9hc3QnO1xuXG52YXIgX1NJTkdMRV9RVU9URV9FU0NBUEVfU1RSSU5HX1JFID0gLyd8XFxcXHxcXG58XFxyfFxcJC9nO1xuZXhwb3J0IHZhciBDQVRDSF9FUlJPUl9WQVIgPSBvLnZhcmlhYmxlKCdlcnJvcicpO1xuZXhwb3J0IHZhciBDQVRDSF9TVEFDS19WQVIgPSBvLnZhcmlhYmxlKCdzdGFjaycpO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT3V0cHV0RW1pdHRlciB7XG4gIGFic3RyYWN0IGVtaXRTdGF0ZW1lbnRzKG1vZHVsZVVybDogc3RyaW5nLCBzdG10czogby5TdGF0ZW1lbnRbXSwgZXhwb3J0ZWRWYXJzOiBzdHJpbmdbXSk6IHN0cmluZztcbn1cblxuY2xhc3MgX0VtaXR0ZWRMaW5lIHtcbiAgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmRlbnQ6IG51bWJlcikge31cbn1cblxuZXhwb3J0IGNsYXNzIEVtaXR0ZXJWaXNpdG9yQ29udGV4dCB7XG4gIHN0YXRpYyBjcmVhdGVSb290KGV4cG9ydGVkVmFyczogc3RyaW5nW10pOiBFbWl0dGVyVmlzaXRvckNvbnRleHQge1xuICAgIHJldHVybiBuZXcgRW1pdHRlclZpc2l0b3JDb250ZXh0KGV4cG9ydGVkVmFycywgMCk7XG4gIH1cblxuICBwcml2YXRlIF9saW5lczogX0VtaXR0ZWRMaW5lW107XG4gIHByaXZhdGUgX2NsYXNzZXM6IG8uQ2xhc3NTdG10W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9leHBvcnRlZFZhcnM6IHN0cmluZ1tdLCBwcml2YXRlIF9pbmRlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuX2xpbmVzID0gW25ldyBfRW1pdHRlZExpbmUoX2luZGVudCldO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2N1cnJlbnRMaW5lKCk6IF9FbWl0dGVkTGluZSB7IHJldHVybiB0aGlzLl9saW5lc1t0aGlzLl9saW5lcy5sZW5ndGggLSAxXTsgfVxuXG4gIGlzRXhwb3J0ZWRWYXIodmFyTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9leHBvcnRlZFZhcnMuaW5kZXhPZih2YXJOYW1lKSAhPT0gLTE7IH1cblxuICBwcmludGxuKGxhc3RQYXJ0OiBzdHJpbmcgPSAnJyk6IHZvaWQgeyB0aGlzLnByaW50KGxhc3RQYXJ0LCB0cnVlKTsgfVxuXG4gIGxpbmVJc0VtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fY3VycmVudExpbmUucGFydHMubGVuZ3RoID09PSAwOyB9XG5cbiAgcHJpbnQocGFydDogc3RyaW5nLCBuZXdMaW5lOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAocGFydC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TGluZS5wYXJ0cy5wdXNoKHBhcnQpO1xuICAgIH1cbiAgICBpZiAobmV3TGluZSkge1xuICAgICAgdGhpcy5fbGluZXMucHVzaChuZXcgX0VtaXR0ZWRMaW5lKHRoaXMuX2luZGVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUVtcHR5TGFzdExpbmUoKSB7XG4gICAgaWYgKHRoaXMubGluZUlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5fbGluZXMucG9wKCk7XG4gICAgfVxuICB9XG5cbiAgaW5jSW5kZW50KCkge1xuICAgIHRoaXMuX2luZGVudCsrO1xuICAgIHRoaXMuX2N1cnJlbnRMaW5lLmluZGVudCA9IHRoaXMuX2luZGVudDtcbiAgfVxuXG4gIGRlY0luZGVudCgpIHtcbiAgICB0aGlzLl9pbmRlbnQtLTtcbiAgICB0aGlzLl9jdXJyZW50TGluZS5pbmRlbnQgPSB0aGlzLl9pbmRlbnQ7XG4gIH1cblxuICBwdXNoQ2xhc3MoY2xheno6IG8uQ2xhc3NTdG10KSB7IHRoaXMuX2NsYXNzZXMucHVzaChjbGF6eik7IH1cblxuICBwb3BDbGFzcygpOiBvLkNsYXNzU3RtdCB7IHJldHVybiB0aGlzLl9jbGFzc2VzLnBvcCgpOyB9XG5cbiAgZ2V0IGN1cnJlbnRDbGFzcygpOiBvLkNsYXNzU3RtdCB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzZXMubGVuZ3RoID4gMCA/IHRoaXMuX2NsYXNzZXNbdGhpcy5fY2xhc3Nlcy5sZW5ndGggLSAxXSA6IG51bGw7XG4gIH1cblxuICB0b1NvdXJjZSgpOiBhbnkge1xuICAgIHZhciBsaW5lcyA9IHRoaXMuX2xpbmVzO1xuICAgIGlmIChsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5wYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxpbmVzID0gbGluZXMuc2xpY2UoMCwgbGluZXMubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChsaW5lLnBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jcmVhdGVJbmRlbnQobGluZS5pbmRlbnQpICsgbGluZS5wYXJ0cy5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAuam9pbignXFxuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RW1pdHRlclZpc2l0b3IgaW1wbGVtZW50cyBvLlN0YXRlbWVudFZpc2l0b3IsIG8uRXhwcmVzc2lvblZpc2l0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lc2NhcGVEb2xsYXJJblN0cmluZ3M6IGJvb2xlYW4pIHt9XG5cbiAgdmlzaXRFeHByZXNzaW9uU3RtdChzdG10OiBvLkV4cHJlc3Npb25TdGF0ZW1lbnQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBzdG10LmV4cHIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oJzsnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZpc2l0UmV0dXJuU3RtdChzdG10OiBvLlJldHVyblN0YXRlbWVudCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgcmV0dXJuIGApO1xuICAgIHN0bXQudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oJzsnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFic3RyYWN0IHZpc2l0Q2FzdEV4cHIoYXN0OiBvLkNhc3RFeHByLCBjb250ZXh0OiBhbnkpOiBhbnk7XG5cbiAgYWJzdHJhY3QgdmlzaXREZWNsYXJlQ2xhc3NTdG10KHN0bXQ6IG8uQ2xhc3NTdG10LCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueTtcblxuICB2aXNpdElmU3RtdChzdG10OiBvLklmU3RtdCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgaWYgKGApO1xuICAgIHN0bXQuY29uZGl0aW9uLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludChgKSB7YCk7XG4gICAgdmFyIGhhc0Vsc2VDYXNlID0gaXNQcmVzZW50KHN0bXQuZmFsc2VDYXNlKSAmJiBzdG10LmZhbHNlQ2FzZS5sZW5ndGggPiAwO1xuICAgIGlmIChzdG10LnRydWVDYXNlLmxlbmd0aCA8PSAxICYmICFoYXNFbHNlQ2FzZSkge1xuICAgICAgY3R4LnByaW50KGAgYCk7XG4gICAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LnRydWVDYXNlLCBjdHgpO1xuICAgICAgY3R4LnJlbW92ZUVtcHR5TGFzdExpbmUoKTtcbiAgICAgIGN0eC5wcmludChgIGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHgucHJpbnRsbigpO1xuICAgICAgY3R4LmluY0luZGVudCgpO1xuICAgICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC50cnVlQ2FzZSwgY3R4KTtcbiAgICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICAgIGlmIChoYXNFbHNlQ2FzZSkge1xuICAgICAgICBjdHgucHJpbnRsbihgfSBlbHNlIHtgKTtcbiAgICAgICAgY3R4LmluY0luZGVudCgpO1xuICAgICAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LmZhbHNlQ2FzZSwgY3R4KTtcbiAgICAgICAgY3R4LmRlY0luZGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBjdHgucHJpbnRsbihgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYWJzdHJhY3QgdmlzaXRUcnlDYXRjaFN0bXQoc3RtdDogby5UcnlDYXRjaFN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55O1xuXG4gIHZpc2l0VGhyb3dTdG10KHN0bXQ6IG8uVGhyb3dTdG10LCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgY3R4LnByaW50KGB0aHJvdyBgKTtcbiAgICBzdG10LmVycm9yLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludGxuKGA7YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRDb21tZW50U3RtdChzdG10OiBvLkNvbW1lbnRTdG10LCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIGxpbmVzID0gc3RtdC5jb21tZW50LnNwbGl0KCdcXG4nKTtcbiAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7IGN0eC5wcmludGxuKGAvLyAke2xpbmV9YCk7IH0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGFic3RyYWN0IHZpc2l0RGVjbGFyZVZhclN0bXQoc3RtdDogby5EZWNsYXJlVmFyU3RtdCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnk7XG4gIHZpc2l0V3JpdGVWYXJFeHByKGV4cHI6IG8uV3JpdGVWYXJFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIGxpbmVXYXNFbXB0eSA9IGN0eC5saW5lSXNFbXB0eSgpO1xuICAgIGlmICghbGluZVdhc0VtcHR5KSB7XG4gICAgICBjdHgucHJpbnQoJygnKTtcbiAgICB9XG4gICAgY3R4LnByaW50KGAke2V4cHIubmFtZX0gPSBgKTtcbiAgICBleHByLnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGlmICghbGluZVdhc0VtcHR5KSB7XG4gICAgICBjdHgucHJpbnQoJyknKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRXcml0ZUtleUV4cHIoZXhwcjogby5Xcml0ZUtleUV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICB2YXIgbGluZVdhc0VtcHR5ID0gY3R4LmxpbmVJc0VtcHR5KCk7XG4gICAgaWYgKCFsaW5lV2FzRW1wdHkpIHtcbiAgICAgIGN0eC5wcmludCgnKCcpO1xuICAgIH1cbiAgICBleHByLnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludChgW2ApO1xuICAgIGV4cHIuaW5kZXgudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGBdID0gYCk7XG4gICAgZXhwci52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICBpZiAoIWxpbmVXYXNFbXB0eSkge1xuICAgICAgY3R4LnByaW50KCcpJyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0V3JpdGVQcm9wRXhwcihleHByOiBvLldyaXRlUHJvcEV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICB2YXIgbGluZVdhc0VtcHR5ID0gY3R4LmxpbmVJc0VtcHR5KCk7XG4gICAgaWYgKCFsaW5lV2FzRW1wdHkpIHtcbiAgICAgIGN0eC5wcmludCgnKCcpO1xuICAgIH1cbiAgICBleHByLnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludChgLiR7ZXhwci5uYW1lfSA9IGApO1xuICAgIGV4cHIudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgaWYgKCFsaW5lV2FzRW1wdHkpIHtcbiAgICAgIGN0eC5wcmludCgnKScpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEludm9rZU1ldGhvZEV4cHIoZXhwcjogby5JbnZva2VNZXRob2RFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgZXhwci5yZWNlaXZlci52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB2YXIgbmFtZSA9IGV4cHIubmFtZTtcbiAgICBpZiAoaXNQcmVzZW50KGV4cHIuYnVpbHRpbikpIHtcbiAgICAgIG5hbWUgPSB0aGlzLmdldEJ1aWx0aW5NZXRob2ROYW1lKGV4cHIuYnVpbHRpbik7XG4gICAgICBpZiAoaXNCbGFuayhuYW1lKSkge1xuICAgICAgICAvLyBzb21lIGJ1aWx0aW5zIGp1c3QgbWVhbiB0byBza2lwIHRoZSBjYWxsLlxuICAgICAgICAvLyBlLmcuIGBiaW5kYCBpbiBEYXJ0LlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgY3R4LnByaW50KGAuJHtuYW1lfShgKTtcbiAgICB0aGlzLnZpc2l0QWxsRXhwcmVzc2lvbnMoZXhwci5hcmdzLCBjdHgsIGAsYCk7XG4gICAgY3R4LnByaW50KGApYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhYnN0cmFjdCBnZXRCdWlsdGluTWV0aG9kTmFtZShtZXRob2Q6IG8uQnVpbHRpbk1ldGhvZCk6IHN0cmluZztcblxuICB2aXNpdEludm9rZUZ1bmN0aW9uRXhwcihleHByOiBvLkludm9rZUZ1bmN0aW9uRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGV4cHIuZm4udmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGAoYCk7XG4gICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGV4cHIuYXJncywgY3R4LCAnLCcpO1xuICAgIGN0eC5wcmludChgKWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0UmVhZFZhckV4cHIoYXN0OiBvLlJlYWRWYXJFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIHZhck5hbWUgPSBhc3QubmFtZTtcbiAgICBpZiAoaXNQcmVzZW50KGFzdC5idWlsdGluKSkge1xuICAgICAgc3dpdGNoIChhc3QuYnVpbHRpbikge1xuICAgICAgICBjYXNlIG8uQnVpbHRpblZhci5TdXBlcjpcbiAgICAgICAgICB2YXJOYW1lID0gJ3N1cGVyJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvLkJ1aWx0aW5WYXIuVGhpczpcbiAgICAgICAgICB2YXJOYW1lID0gJ3RoaXMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG8uQnVpbHRpblZhci5DYXRjaEVycm9yOlxuICAgICAgICAgIHZhck5hbWUgPSBDQVRDSF9FUlJPUl9WQVIubmFtZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvLkJ1aWx0aW5WYXIuQ2F0Y2hTdGFjazpcbiAgICAgICAgICB2YXJOYW1lID0gQ0FUQ0hfU1RBQ0tfVkFSLm5hbWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYFVua25vd24gYnVpbHRpbiB2YXJpYWJsZSAke2FzdC5idWlsdGlufWApO1xuICAgICAgfVxuICAgIH1cbiAgICBjdHgucHJpbnQodmFyTmFtZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRJbnN0YW50aWF0ZUV4cHIoYXN0OiBvLkluc3RhbnRpYXRlRXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgbmV3IGApO1xuICAgIGFzdC5jbGFzc0V4cHIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGAoYCk7XG4gICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5hcmdzLCBjdHgsICcsJyk7XG4gICAgY3R4LnByaW50KGApYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRMaXRlcmFsRXhwcihhc3Q6IG8uTGl0ZXJhbEV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICB2YXIgdmFsdWUgPSBhc3QudmFsdWU7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgY3R4LnByaW50KGVzY2FwZVNpbmdsZVF1b3RlU3RyaW5nKHZhbHVlLCB0aGlzLl9lc2NhcGVEb2xsYXJJblN0cmluZ3MpKTtcbiAgICB9IGVsc2UgaWYgKGlzQmxhbmsodmFsdWUpKSB7XG4gICAgICBjdHgucHJpbnQoJ251bGwnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnByaW50KGAke3ZhbHVlfWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFic3RyYWN0IHZpc2l0RXh0ZXJuYWxFeHByKGFzdDogby5FeHRlcm5hbEV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55O1xuXG4gIHZpc2l0Q29uZGl0aW9uYWxFeHByKGFzdDogby5Db25kaXRpb25hbEV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnQoYChgKTtcbiAgICBhc3QuY29uZGl0aW9uLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludCgnPyAnKTtcbiAgICBhc3QudHJ1ZUNhc2UudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KCc6ICcpO1xuICAgIGFzdC5mYWxzZUNhc2UudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGApYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXROb3RFeHByKGFzdDogby5Ob3RFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgY3R4LnByaW50KCchJyk7XG4gICAgYXN0LmNvbmRpdGlvbi52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBhYnN0cmFjdCB2aXNpdEZ1bmN0aW9uRXhwcihhc3Q6IG8uRnVuY3Rpb25FeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueTtcbiAgYWJzdHJhY3QgdmlzaXREZWNsYXJlRnVuY3Rpb25TdG10KHN0bXQ6IG8uRGVjbGFyZUZ1bmN0aW9uU3RtdCwgY29udGV4dDogYW55KTogYW55O1xuXG4gIHZpc2l0QmluYXJ5T3BlcmF0b3JFeHByKGFzdDogby5CaW5hcnlPcGVyYXRvckV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICB2YXIgb3BTdHI7XG4gICAgc3dpdGNoIChhc3Qub3BlcmF0b3IpIHtcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5FcXVhbHM6XG4gICAgICAgIG9wU3RyID0gJz09JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsOlxuICAgICAgICBvcFN0ciA9ICc9PT0nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5Ob3RFcXVhbHM6XG4gICAgICAgIG9wU3RyID0gJyE9JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuTm90SWRlbnRpY2FsOlxuICAgICAgICBvcFN0ciA9ICchPT0nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5BbmQ6XG4gICAgICAgIG9wU3RyID0gJyYmJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuT3I6XG4gICAgICAgIG9wU3RyID0gJ3x8JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuUGx1czpcbiAgICAgICAgb3BTdHIgPSAnKyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLk1pbnVzOlxuICAgICAgICBvcFN0ciA9ICctJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuRGl2aWRlOlxuICAgICAgICBvcFN0ciA9ICcvJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuTXVsdGlwbHk6XG4gICAgICAgIG9wU3RyID0gJyonO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5Nb2R1bG86XG4gICAgICAgIG9wU3RyID0gJyUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5Mb3dlcjpcbiAgICAgICAgb3BTdHIgPSAnPCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLkxvd2VyRXF1YWxzOlxuICAgICAgICBvcFN0ciA9ICc8PSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLkJpZ2dlcjpcbiAgICAgICAgb3BTdHIgPSAnPic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLkJpZ2dlckVxdWFsczpcbiAgICAgICAgb3BTdHIgPSAnPj0nO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbmtub3duIG9wZXJhdG9yICR7YXN0Lm9wZXJhdG9yfWApO1xuICAgIH1cbiAgICBjdHgucHJpbnQoYChgKTtcbiAgICBhc3QubGhzLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludChgICR7b3BTdHJ9IGApO1xuICAgIGFzdC5yaHMudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGApYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdFJlYWRQcm9wRXhwcihhc3Q6IG8uUmVhZFByb3BFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludChgLmApO1xuICAgIGN0eC5wcmludChhc3QubmFtZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRSZWFkS2V5RXhwcihhc3Q6IG8uUmVhZEtleUV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBhc3QucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGBbYCk7XG4gICAgYXN0LmluZGV4LnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGN0eC5wcmludChgXWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0TGl0ZXJhbEFycmF5RXhwcihhc3Q6IG8uTGl0ZXJhbEFycmF5RXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIHZhciB1c2VOZXdMaW5lID0gYXN0LmVudHJpZXMubGVuZ3RoID4gMTtcbiAgICBjdHgucHJpbnQoYFtgLCB1c2VOZXdMaW5lKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbEV4cHJlc3Npb25zKGFzdC5lbnRyaWVzLCBjdHgsICcsJywgdXNlTmV3TGluZSk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludChgXWAsIHVzZU5ld0xpbmUpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0TGl0ZXJhbE1hcEV4cHIoYXN0OiBvLkxpdGVyYWxNYXBFeHByLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIHVzZU5ld0xpbmUgPSBhc3QuZW50cmllcy5sZW5ndGggPiAxO1xuICAgIGN0eC5wcmludChge2AsIHVzZU5ld0xpbmUpO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB0aGlzLnZpc2l0QWxsT2JqZWN0cygoZW50cnkpID0+IHtcbiAgICAgIGN0eC5wcmludChgJHtlc2NhcGVTaW5nbGVRdW90ZVN0cmluZyhlbnRyeVswXSwgdGhpcy5fZXNjYXBlRG9sbGFySW5TdHJpbmdzKX06IGApO1xuICAgICAgZW50cnlbMV0udmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgfSwgYXN0LmVudHJpZXMsIGN0eCwgJywnLCB1c2VOZXdMaW5lKTtcbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50KGB9YCwgdXNlTmV3TGluZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdEFsbEV4cHJlc3Npb25zKGV4cHJlc3Npb25zOiBvLkV4cHJlc3Npb25bXSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQsIHNlcGFyYXRvcjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXRBbGxPYmplY3RzKChleHByKSA9PiBleHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpLCBleHByZXNzaW9ucywgY3R4LCBzZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGluZSk7XG4gIH1cblxuICB2aXNpdEFsbE9iamVjdHMoaGFuZGxlcjogRnVuY3Rpb24sIGV4cHJlc3Npb25zOiBhbnksIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcsIG5ld0xpbmU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBjdHgucHJpbnQoc2VwYXJhdG9yLCBuZXdMaW5lKTtcbiAgICAgIH1cbiAgICAgIGhhbmRsZXIoZXhwcmVzc2lvbnNbaV0pO1xuICAgIH1cbiAgICBpZiAobmV3TGluZSkge1xuICAgICAgY3R4LnByaW50bG4oKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEFsbFN0YXRlbWVudHMoc3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiB2b2lkIHtcbiAgICBzdGF0ZW1lbnRzLmZvckVhY2goKHN0bXQpID0+IHsgcmV0dXJuIHN0bXQudmlzaXRTdGF0ZW1lbnQodGhpcywgY3R4KTsgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVNpbmdsZVF1b3RlU3RyaW5nKGlucHV0OiBzdHJpbmcsIGVzY2FwZURvbGxhcjogYm9vbGVhbik6IGFueSB7XG4gIGlmIChpc0JsYW5rKGlucHV0KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBib2R5ID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCBfU0lOR0xFX1FVT1RFX0VTQ0FQRV9TVFJJTkdfUkUsIChtYXRjaCkgPT4ge1xuICAgIGlmIChtYXRjaFswXSA9PSAnJCcpIHtcbiAgICAgIHJldHVybiBlc2NhcGVEb2xsYXIgPyAnXFxcXCQnIDogJyQnO1xuICAgIH0gZWxzZSBpZiAobWF0Y2hbMF0gPT0gJ1xcbicpIHtcbiAgICAgIHJldHVybiAnXFxcXG4nO1xuICAgIH0gZWxzZSBpZiAobWF0Y2hbMF0gPT0gJ1xccicpIHtcbiAgICAgIHJldHVybiAnXFxcXHInO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYFxcXFwke21hdGNoWzBdfWA7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGAnJHtib2R5fSdgO1xufVxuXG5mdW5jdGlvbiBfY3JlYXRlSW5kZW50KGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgIHJlcyArPSAnICAnO1xuICB9XG4gIHJldHVybiByZXM7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n// asset:<package-name>/<realm>/<path-to-module>\r\nvar _ASSET_URL_RE = /asset:([^\\/]+)\\/([^\\/]+)\\/(.+)/g;\r\nvar _PATH_SEP = '/';\r\nvar _PATH_SEP_RE = /\\//g;\r\n(function (ImportEnv) {\r\n ImportEnv[ImportEnv[\"Dart\"] = 0] = \"Dart\";\r\n ImportEnv[ImportEnv[\"JS\"] = 1] = \"JS\";\r\n})(exports.ImportEnv || (exports.ImportEnv = {}));\r\nvar ImportEnv = exports.ImportEnv;\r\n/**\r\n * Returns the module path to use for an import.\r\n */\r\nfunction getImportModulePath(moduleUrlStr, importedUrlStr, importEnv) {\r\n var absolutePathPrefix = importEnv === ImportEnv.Dart ? \"package:\" : '';\r\n var moduleUrl = _AssetUrl.parse(moduleUrlStr, false);\r\n var importedUrl = _AssetUrl.parse(importedUrlStr, true);\r\n if (lang_1.isBlank(importedUrl)) {\r\n return importedUrlStr;\r\n }\r\n // Try to create a relative path first\r\n if (moduleUrl.firstLevelDir == importedUrl.firstLevelDir &&\r\n moduleUrl.packageName == importedUrl.packageName) {\r\n return getRelativePath(moduleUrl.modulePath, importedUrl.modulePath, importEnv);\r\n }\r\n else if (importedUrl.firstLevelDir == 'lib') {\r\n return \"\" + absolutePathPrefix + importedUrl.packageName + \"/\" + importedUrl.modulePath;\r\n }\r\n throw new exceptions_1.BaseException(\"Can't import url \" + importedUrlStr + \" from \" + moduleUrlStr);\r\n}\r\nexports.getImportModulePath = getImportModulePath;\r\nvar _AssetUrl = (function () {\r\n function _AssetUrl(packageName, firstLevelDir, modulePath) {\r\n this.packageName = packageName;\r\n this.firstLevelDir = firstLevelDir;\r\n this.modulePath = modulePath;\r\n }\r\n _AssetUrl.parse = function (url, allowNonMatching) {\r\n var match = lang_1.RegExpWrapper.firstMatch(_ASSET_URL_RE, url);\r\n if (lang_1.isPresent(match)) {\r\n return new _AssetUrl(match[1], match[2], match[3]);\r\n }\r\n if (allowNonMatching) {\r\n return null;\r\n }\r\n throw new exceptions_1.BaseException(\"Url \" + url + \" is not a valid asset: url\");\r\n };\r\n return _AssetUrl;\r\n}());\r\nfunction getRelativePath(modulePath, importedPath, importEnv) {\r\n var moduleParts = modulePath.split(_PATH_SEP_RE);\r\n var importedParts = importedPath.split(_PATH_SEP_RE);\r\n var longestPrefix = getLongestPathSegmentPrefix(moduleParts, importedParts);\r\n var resultParts = [];\r\n var goParentCount = moduleParts.length - 1 - longestPrefix;\r\n for (var i = 0; i < goParentCount; i++) {\r\n resultParts.push('..');\r\n }\r\n if (goParentCount <= 0 && importEnv === ImportEnv.JS) {\r\n resultParts.push('.');\r\n }\r\n for (var i = longestPrefix; i < importedParts.length; i++) {\r\n resultParts.push(importedParts[i]);\r\n }\r\n return resultParts.join(_PATH_SEP);\r\n}\r\nexports.getRelativePath = getRelativePath;\r\nfunction getLongestPathSegmentPrefix(arr1, arr2) {\r\n var prefixSize = 0;\r\n var minLen = lang_1.Math.min(arr1.length, arr2.length);\r\n while (prefixSize < minLen && arr1[prefixSize] == arr2[prefixSize]) {\r\n prefixSize++;\r\n }\r\n return prefixSize;\r\n}\r\nexports.getLongestPathSegmentPrefix = getLongestPathSegmentPrefix;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aF91dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL291dHB1dC9wYXRoX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELHFCQUFzRCwwQkFBMEIsQ0FBQyxDQUFBO0FBRWpGLGdEQUFnRDtBQUNoRCxJQUFJLGFBQWEsR0FBRyxpQ0FBaUMsQ0FBQztBQUV0RCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFDcEIsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBRXpCLFdBQVksU0FBUztJQUNuQix5Q0FBSSxDQUFBO0lBQ0oscUNBQUUsQ0FBQTtBQUNKLENBQUMsRUFIVyxpQkFBUyxLQUFULGlCQUFTLFFBR3BCO0FBSEQsSUFBWSxTQUFTLEdBQVQsaUJBR1gsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsNkJBQW9DLFlBQW9CLEVBQUUsY0FBc0IsRUFDNUMsU0FBb0I7SUFDdEQsSUFBSSxrQkFBa0IsR0FBVyxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hGLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksV0FBVyxDQUFDLGFBQWE7UUFDcEQsU0FBUyxDQUFDLFdB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QyxJQUFjLEVBQUUsSUFBYztJQUN4RSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxNQUFNLEdBQUcsV0FBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxPQUFPLFVBQVUsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ25FLFVBQVUsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQVBlLG1DQUEyQiw4QkFPMUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBSZWdFeHBXcmFwcGVyLCBNYXRofSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vLyBhc3NldDo8cGFja2FnZS1uYW1lPi88cmVhbG0+LzxwYXRoLXRvLW1vZHVsZT5cbnZhciBfQVNTRVRfVVJMX1JFID0gL2Fzc2V0OihbXlxcL10rKVxcLyhbXlxcL10rKVxcLyguKykvZztcblxudmFyIF9QQVRIX1NFUCA9ICcvJztcbnZhciBfUEFUSF9TRVBfUkUgPSAvXFwvL2c7XG5cbmV4cG9ydCBlbnVtIEltcG9ydEVudiB7XG4gIERhcnQsXG4gIEpTXG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbW9kdWxlIHBhdGggdG8gdXNlIGZvciBhbiBpbXBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbXBvcnRNb2R1bGVQYXRoKG1vZHVsZVVybFN0cjogc3RyaW5nLCBpbXBvcnRlZFVybFN0cjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0RW52OiBJbXBvcnRFbnYpOiBzdHJpbmcge1xuICB2YXIgYWJzb2x1dGVQYXRoUHJlZml4OiBzdHJpbmcgPSBpbXBvcnRFbnYgPT09IEltcG9ydEVudi5EYXJ0ID8gYHBhY2thZ2U6YCA6ICcnO1xuICB2YXIgbW9kdWxlVXJsID0gX0Fzc2V0VXJsLnBhcnNlKG1vZHVsZVVybFN0ciwgZmFsc2UpO1xuICB2YXIgaW1wb3J0ZWRVcmwgPSBfQXNzZXRVcmwucGFyc2UoaW1wb3J0ZWRVcmxTdHIsIHRydWUpO1xuICBpZiAoaXNCbGFuayhpbXBvcnRlZFVybCkpIHtcbiAgICByZXR1cm4gaW1wb3J0ZWRVcmxTdHI7XG4gIH1cblxuICAvLyBUcnkgdG8gY3JlYXRlIGEgcmVsYXRpdmUgcGF0aCBmaXJzdFxuICBpZiAobW9kdWxlVXJsLmZpcnN0TGV2ZWxEaXIgPT0gaW1wb3J0ZWRVcmwuZmlyc3RMZXZlbERpciAmJlxuICAgICAgbW9kdWxlVXJsLnBhY2thZ2VOYW1lID09IGltcG9ydGVkVXJsLnBhY2thZ2VOYW1lKSB7XG4gICAgcmV0dXJuIGdldFJlbGF0aXZlUGF0aChtb2R1bGVVcmwubW9kdWxlUGF0aCwgaW1wb3J0ZWRVcmwubW9kdWxlUGF0aCwgaW1wb3J0RW52KTtcbiAgfSBlbHNlIGlmIChpbXBvcnRlZFVybC5maXJzdExldmVsRGlyID09ICdsaWInKSB7XG4gICAgcmV0dXJuIGAke2Fic29sdXRlUGF0aFByZWZpeH0ke2ltcG9ydGVkVXJsLnBhY2thZ2VOYW1lfS8ke2ltcG9ydGVkVXJsLm1vZHVsZVBhdGh9YDtcbiAgfVxuICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ2FuJ3QgaW1wb3J0IHVybCAke2ltcG9ydGVkVXJsU3RyfSBmcm9tICR7bW9kdWxlVXJsU3RyfWApO1xufVxuXG5jbGFzcyBfQXNzZXRVcmwge1xuICBzdGF0aWMgcGFyc2UodXJsOiBzdHJpbmcsIGFsbG93Tm9uTWF0Y2hpbmc6IGJvb2xlYW4pOiBfQXNzZXRVcmwge1xuICAgIHZhciBtYXRjaCA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChfQVNTRVRfVVJMX1JFLCB1cmwpO1xuICAgIGlmIChpc1ByZXNlbnQobWF0Y2gpKSB7XG4gICAgICByZXR1cm4gbmV3IF9Bc3NldFVybChtYXRjaFsxXSwgbWF0Y2hbMl0sIG1hdGNoWzNdKTtcbiAgICB9XG4gICAgaWYgKGFsbG93Tm9uTWF0Y2hpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVXJsICR7dXJsfSBpcyBub3QgYSB2YWxpZCBhc3NldDogdXJsYCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFja2FnZU5hbWU6IHN0cmluZywgcHVibGljIGZpcnN0TGV2ZWxEaXI6IHN0cmluZywgcHVibGljIG1vZHVsZVBhdGg6IHN0cmluZykge1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxhdGl2ZVBhdGgobW9kdWxlUGF0aDogc3RyaW5nLCBpbXBvcnRlZFBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0RW52OiBJbXBvcnRFbnYpOiBzdHJpbmcge1xuICB2YXIgbW9kdWxlUGFydHMgPSBtb2R1bGVQYXRoLnNwbGl0KF9QQVRIX1NFUF9SRSk7XG4gIHZhciBpbXBvcnRlZFBhcnRzID0gaW1wb3J0ZWRQYXRoLnNwbGl0KF9QQVRIX1NFUF9SRSk7XG4gIHZhciBsb25nZXN0UHJlZml4ID0gZ2V0TG9uZ2VzdFBhdGhTZWdtZW50UHJlZml4KG1vZHVsZVBhcnRzLCBpbXBvcnRlZFBhcnRzKTtcblxuICB2YXIgcmVzdWx0UGFydHMgPSBbXTtcbiAgdmFyIGdvUGFyZW50Q291bnQgPSBtb2R1bGVQYXJ0cy5sZW5ndGggLSAxIC0gbG9uZ2VzdFByZWZpeDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBnb1BhcmVudENvdW50OyBpKyspIHtcbiAgICByZXN1bHRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG4gIGlmIChnb1BhcmVudENvdW50IDw9IDAgJiYgaW1wb3J0RW52ID09PSBJbXBvcnRFbnYuSlMpIHtcbiAgICByZXN1bHRQYXJ0cy5wdXNoKCcuJyk7XG4gIH1cbiAgZm9yICh2YXIgaSA9IGxvbmdlc3RQcmVmaXg7IGkgPCBpbXBvcnRlZFBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzdWx0UGFydHMucHVzaChpbXBvcnRlZFBhcnRzW2ldKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0UGFydHMuam9pbihfUEFUSF9TRVApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9uZ2VzdFBhdGhTZWdtZW50UHJlZml4KGFycjE6IHN0cmluZ1tdLCBhcnIyOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gIHZhciBwcmVmaXhTaXplID0gMDtcbiAgdmFyIG1pbkxlbiA9IE1hdGgubWluKGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XG4gIHdoaWxlIChwcmVmaXhTaXplIDwgbWluTGVuICYmIGFycjFbcHJlZml4U2l6ZV0gPT0gYXJyMltwcmVmaXhTaXplXSkge1xuICAgIHByZWZpeFNpemUrKztcbiAgfVxuICByZXR1cm4gcHJlZml4U2l6ZTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar o = require('./output_ast');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar abstract_emitter_1 = require('./abstract_emitter');\r\nvar path_util_1 = require('./path_util');\r\nvar _debugModuleUrl = 'asset://debug/lib';\r\nfunction debugOutputAstAsTypeScript(ast) {\r\n var converter = new _TsEmitterVisitor(_debugModuleUrl);\r\n var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot([]);\r\n var asts;\r\n if (lang_1.isArray(ast)) {\r\n asts = ast;\r\n }\r\n else {\r\n asts = [ast];\r\n }\r\n asts.forEach(function (ast) {\r\n if (ast instanceof o.Statement) {\r\n ast.visitStatement(converter, ctx);\r\n }\r\n else if (ast instanceof o.Expression) {\r\n ast.visitExpression(converter, ctx);\r\n }\r\n else if (ast instanceof o.Type) {\r\n ast.visitType(converter, ctx);\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Don't know how to print debug info for \" + ast);\r\n }\r\n });\r\n return ctx.toSource();\r\n}\r\nexports.debugOutputAstAsTypeScript = debugOutputAstAsTypeScript;\r\nvar TypeScriptEmitter = (function () {\r\n function TypeScriptEmitter() {\r\n }\r\n TypeScriptEmitter.prototype.emitStatements = function (moduleUrl, stmts, exportedVars) {\r\n var converter = new _TsEmitterVisitor(moduleUrl);\r\n var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot(exportedVars);\r\n converter.visitAllStatements(stmts, ctx);\r\n var srcParts = [];\r\n converter.importsWithPrefixes.forEach(function (prefix, importedModuleUrl) {\r\n // Note: can't write the real word for import as it screws up system.js auto detection...\r\n srcParts.push(\"imp\" +\r\n (\"ort * as \" + prefix + \" from '\" + path_util_1.getImportModulePath(moduleUrl, importedModuleUrl, path_util_1.ImportEnv.JS) + \"';\"));\r\n });\r\n srcParts.push(ctx.toSource());\r\n return srcParts.join('\\n');\r\n };\r\n return TypeScriptEmitter;\r\n}());\r\nexports.TypeScriptEmitter = TypeScriptEmitter;\r\nvar _TsEmitterVisitor = (function (_super) {\r\n __extends(_TsEmitterVisitor, _super);\r\n function _TsEmitterVisitor(_moduleUrl) {\r\n _super.call(this, false);\r\n this._moduleUrl = _moduleUrl;\r\n this.importsWithPrefixes = new Map();\r\n }\r\n _TsEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\r\n this._visitIdentifier(ast.value, ast.typeParams, ctx);\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\r\n if (ctx.isExportedVar(stmt.name)) {\r\n ctx.print(\"export \");\r\n }\r\n if (stmt.hasModifier(o.StmtModifier.Final)) {\r\n ctx.print(\"const\");\r\n }\r\n else {\r\n ctx.print(\"var\");\r\n }\r\n ctx.print(\" \" + stmt.name);\r\n if (lang_1.isPresent(stmt.type)) {\r\n ctx.print(\":\");\r\n stmt.type.visitType(this, ctx);\r\n }\r\n ctx.print(\" = \");\r\n stmt.value.visitExpression(this, ctx);\r\n ctx.println(\";\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\r\n ctx.print(\"(<\");\r\n ast.type.visitType(this, ctx);\r\n ctx.print(\">\");\r\n ast.value.visitExpression(this, ctx);\r\n ctx.print(\")\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\r\n var _this = this;\r\n ctx.pushClass(stmt);\r\n if (ctx.isExportedVar(stmt.name)) {\r\n ctx.print(\"export \");\r\n }\r\n ctx.print(\"class \" + stmt.name);\r\n if (lang_1.isPresent(stmt.parent)) {\r\n ctx.print(\" extends \");\r\n stmt.parent.visitExpression(this, ctx);\r\n }\r\n ctx.println(\" {\");\r\n ctx.incIndent();\r\n stmt.fields.forEach(function (field) { return _this._visitClassField(field, ctx); });\r\n if (lang_1.isPresent(stmt.constructorMethod)) {\r\n this._visitClassConstructor(stmt, ctx);\r\n }\r\n stmt.getters.forEach(function (getter) { return _this._visitClassGetter(getter, ctx); });\r\n stmt.methods.forEach(function (method) { return _this._visitClassMethod(method, ctx); });\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n ctx.popClass();\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype._visitClassField = function (field, ctx) {\r\n if (field.hasModifier(o.StmtModifier.Private)) {\r\n ctx.print(\"private \");\r\n }\r\n ctx.print(field.name);\r\n if (lang_1.isPresent(field.type)) {\r\n ctx.print(\":\");\r\n field.type.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\": any\");\r\n }\r\n ctx.println(\";\");\r\n };\r\n _TsEmitterVisitor.prototype._visitClassGetter = function (getter, ctx) {\r\n if (getter.hasModifier(o.StmtModifier.Private)) {\r\n ctx.print(\"private \");\r\n }\r\n ctx.print(\"get \" + getter.name + \"()\");\r\n if (lang_1.isPresent(getter.type)) {\r\n ctx.print(\":\");\r\n getter.type.visitType(this, ctx);\r\n }\r\n ctx.println(\" {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(getter.body, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n _TsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\r\n ctx.print(\"constructor(\");\r\n this._visitParams(stmt.constructorMethod.params, ctx);\r\n ctx.println(\") {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.constructorMethod.body, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n _TsEmitterVisitor.prototype._visitClassMethod = function (method, ctx) {\r\n if (method.hasModifier(o.StmtModifier.Private)) {\r\n ctx.print(\"private \");\r\n }\r\n ctx.print(method.name + \"(\");\r\n this._visitParams(method.params, ctx);\r\n ctx.print(\"):\");\r\n if (lang_1.isPresent(method.type)) {\r\n method.type.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"void\");\r\n }\r\n ctx.println(\" {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(method.body, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n };\r\n _TsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\r\n ctx.print(\"(\");\r\n this._visitParams(ast.params, ctx);\r\n ctx.print(\"):\");\r\n if (lang_1.isPresent(ast.type)) {\r\n ast.type.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"void\");\r\n }\r\n ctx.println(\" => {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(ast.statements, ctx);\r\n ctx.decIndent();\r\n ctx.print(\"}\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\r\n if (ctx.isExportedVar(stmt.name)) {\r\n ctx.print(\"export \");\r\n }\r\n ctx.print(\"function \" + stmt.name + \"(\");\r\n this._visitParams(stmt.params, ctx);\r\n ctx.print(\"):\");\r\n if (lang_1.isPresent(stmt.type)) {\r\n stmt.type.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"void\");\r\n }\r\n ctx.println(\" {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.statements, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\r\n ctx.println(\"try {\");\r\n ctx.incIndent();\r\n this.visitAllStatements(stmt.bodyStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"} catch (\" + abstract_emitter_1.CATCH_ERROR_VAR.name + \") {\");\r\n ctx.incIndent();\r\n var catchStmts = [\r\n abstract_emitter_1.CATCH_STACK_VAR.set(abstract_emitter_1.CATCH_ERROR_VAR.prop('stack'))\r\n .toDeclStmt(null, [o.StmtModifier.Final])\r\n ].concat(stmt.catchStmts);\r\n this.visitAllStatements(catchStmts, ctx);\r\n ctx.decIndent();\r\n ctx.println(\"}\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {\r\n var typeStr;\r\n switch (type.name) {\r\n case o.BuiltinTypeName.Bool:\r\n typeStr = 'boolean';\r\n break;\r\n case o.BuiltinTypeName.Dynamic:\r\n typeStr = 'any';\r\n break;\r\n case o.BuiltinTypeName.Function:\r\n typeStr = 'Function';\r\n break;\r\n case o.BuiltinTypeName.Number:\r\n typeStr = 'number';\r\n break;\r\n case o.BuiltinTypeName.Int:\r\n typeStr = 'number';\r\n break;\r\n case o.BuiltinTypeName.String:\r\n typeStr = 'string';\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unsupported builtin type \" + type.name);\r\n }\r\n ctx.print(typeStr);\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitExternalType = function (ast, ctx) {\r\n this._visitIdentifier(ast.value, ast.typeParams, ctx);\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitArrayType = function (type, ctx) {\r\n if (lang_1.isPresent(type.of)) {\r\n type.of.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"any\");\r\n }\r\n ctx.print(\"[]\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.visitMapType = function (type, ctx) {\r\n ctx.print(\"{[key: string]:\");\r\n if (lang_1.isPresent(type.valueType)) {\r\n type.valueType.visitType(this, ctx);\r\n }\r\n else {\r\n ctx.print(\"any\");\r\n }\r\n ctx.print(\"}\");\r\n return null;\r\n };\r\n _TsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\r\n var name;\r\n switch (method) {\r\n case o.BuiltinMethod.ConcatArray:\r\n name = 'concat';\r\n break;\r\n case o.BuiltinMethod.SubscribeObservable:\r\n name = 'subscribe';\r\n break;\r\n case o.BuiltinMethod.bind:\r\n name = 'bind';\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown builtin method: \" + method);\r\n }\r\n return name;\r\n };\r\n _TsEmitterVisitor.prototype._visitParams = function (params, ctx) {\r\n var _this = this;\r\n this.visitAllObjects(function (param) {\r\n ctx.print(param.name);\r\n if (lang_1.isPresent(param.type)) {\r\n ctx.print(\":\");\r\n param.type.visitType(_this, ctx);\r\n }\r\n }, params, ctx, ',');\r\n };\r\n _TsEmitterVisitor.prototype._visitIdentifier = function (value, typeParams, ctx) {\r\n var _this = this;\r\n if (lang_1.isPresent(value.moduleUrl) && value.moduleUrl != this._moduleUrl) {\r\n var prefix = this.importsWithPrefixes.get(value.moduleUrl);\r\n if (lang_1.isBlank(prefix)) {\r\n prefix = \"import\" + this.importsWithPrefixes.size;\r\n this.importsWithPrefixes.set(value.moduleUrl, prefix);\r\n }\r\n ctx.print(prefix + \".\");\r\n }\r\n ctx.print(value.name);\r\n if (lang_1.isPresent(typeParams) && typeParams.length > 0) {\r\n ctx.print(\"<\");\r\n this.visitAllObjects(function (type) { return type.visitType(_this, ctx); }, typeParams, ctx, ',');\r\n ctx.print(\">\");\r\n }\r\n };\r\n return _TsEmitterVisitor;\r\n}(abstract_emitter_1.AbstractEmitterVisitor));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9vdXRwdXQvdHNfZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFZLENBQUMsV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUNsQyxxQkFRTywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELGlDQU1PLG9CQUFvQixDQUFDLENBQUE7QUFDNUIsMEJBQTZDLGFBQWEsQ0FBQyxDQUFBO0FBRTNELElBQUksZUFBZSxHQUFHLG1CQUFtQixDQUFDO0FBRTFDLG9DQUEyQyxHQUNLO0lBQzlDLElBQUksU0FBUyxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkQsSUFBSSxHQUFHLEdBQUcsd0NBQXFCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksSUFBVyxDQUFDO0lBQ2hCLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsSUFBSSxHQUFVLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRztRQUNmLEVBQUUsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvQixHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMs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TSxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUNELEdBQUcsQ0FBQyxLQUFLLENBQUksTUFBTSxNQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUksRUFBRSxHQUFHLENBQUMsRUFBekIsQ0FBeUIsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hGLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUF2UUQsQ0FBZ0MseUNBQXNCLEdBdVFyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG8gZnJvbSAnLi9vdXRwdXRfYXN0JztcbmltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgaXNTdHJpbmcsXG4gIGV2YWxFeHByZXNzaW9uLFxuICBSZWdFeHBXcmFwcGVyLFxuICBTdHJpbmdXcmFwcGVyLFxuICBpc0FycmF5XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0NvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGF9IGZyb20gJy4uL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtcbiAgT3V0cHV0RW1pdHRlcixcbiAgRW1pdHRlclZpc2l0b3JDb250ZXh0LFxuICBBYnN0cmFjdEVtaXR0ZXJWaXNpdG9yLFxuICBDQVRDSF9FUlJPUl9WQVIsXG4gIENBVENIX1NUQUNLX1ZBUlxufSBmcm9tICcuL2Fic3RyYWN0X2VtaXR0ZXInO1xuaW1wb3J0IHtnZXRJbXBvcnRNb2R1bGVQYXRoLCBJbXBvcnRFbnZ9IGZyb20gJy4vcGF0aF91dGlsJztcblxudmFyIF9kZWJ1Z01vZHVsZVVybCA9ICdhc3NldDovL2RlYnVnL2xpYic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z091dHB1dEFzdEFzVHlwZVNjcmlwdChhc3Q6IG8uU3RhdGVtZW50IHwgby5FeHByZXNzaW9uIHwgby5UeXBlIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnlbXSk6IHN0cmluZyB7XG4gIHZhciBjb252ZXJ0ZXIgPSBuZXcgX1RzRW1pdHRlclZpc2l0b3IoX2RlYnVnTW9kdWxlVXJsKTtcbiAgdmFyIGN0eCA9IEVtaXR0ZXJWaXNpdG9yQ29udGV4dC5jcmVhdGVSb290KFtdKTtcbiAgdmFyIGFzdHM6IGFueVtdO1xuICBpZiAoaXNBcnJheShhc3QpKSB7XG4gICAgYXN0cyA9IDxhbnlbXT5hc3Q7XG4gIH0gZWxzZSB7XG4gICAgYXN0cyA9IFthc3RdO1xuICB9XG4gIGFzdHMuZm9yRWFjaCgoYXN0KSA9PiB7XG4gICAgaWYgKGFzdCBpbnN0YW5jZW9mIG8uU3RhdGVtZW50KSB7XG4gICAgICBhc3QudmlzaXRTdGF0ZW1lbnQoY29udmVydGVyLCBjdHgpO1xuICAgIH0gZWxzZSBpZiAoYXN0IGluc3RhbmNlb2Ygby5FeHByZXNzaW9uKSB7XG4gICAgICBhc3QudmlzaXRFeHByZXNzaW9uKGNvbnZlcnRlciwgY3R4KTtcbiAgICB9IGVsc2UgaWYgKGFzdCBpbnN0YW5jZW9mIG8uVHlwZSkge1xuICAgICAgYXN0LnZpc2l0VHlwZShjb252ZXJ0ZXIsIGN0eCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBEb24ndCBrbm93IGhvdyB0byBwcmludCBkZWJ1ZyBpbmZvIGZvciAke2FzdH1gKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY3R4LnRvU291cmNlKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0RW1pdHRlciBpbXBsZW1lbnRzIE91dHB1dEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcigpIHt9XG4gIGVtaXRTdGF0ZW1lbnRzKG1vZHVsZVVybDogc3RyaW5nLCBzdG10czogby5TdGF0ZW1lbnRbXSwgZXhwb3J0ZWRWYXJzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgdmFyIGNvbnZlcnRlciA9IG5ldyBfVHNFbWl0dGVyVmlzaXRvcihtb2R1bGVVcmwpO1xuICAgIHZhciBjdHggPSBFbWl0dGVyVmlzaXRvckNvbnRleHQuY3JlYXRlUm9vdChleHBvcnRlZFZhcnMpO1xuICAgIGNvbnZlcnRlci52aXNpdEFsbFN0YXRlbWVudHMoc3RtdHMsIGN0eCk7XG4gICAgdmFyIHNyY1BhcnRzID0gW107XG4gICAgY29udmVydGVyLmltcG9ydHNXaXRoUHJlZml4ZXMuZm9yRWFjaCgocHJlZml4LCBpbXBvcnRlZE1vZHVsZVVybCkgPT4ge1xuICAgICAgLy8gTm90ZTogY2FuJ3Qgd3JpdGUgdGhlIHJlYWwgd29yZCBmb3IgaW1wb3J0IGFzIGl0IHNjcmV3cyB1cCBzeXN0ZW0uanMgYXV0byBkZXRlY3Rpb24uLi5cbiAgICAgIHNyY1BhcnRzLnB1c2goXG4gICAgICAgICAgYGltcGAgK1xuICAgICAgICAgIGBvcnQgKiBhcyAke3ByZWZpeH0gZnJvbSAnJHtnZXRJbXBvcnRNb2R1bGVQYXRoKG1vZHVsZVVybCwgaW1wb3J0ZWRNb2R1bGVVcmwsIEltcG9ydEVudi5KUyl9JztgKTtcbiAgICB9KTtcbiAgICBzcmNQYXJ0cy5wdXNoKGN0eC50b1NvdXJjZSgpKTtcbiAgICByZXR1cm4gc3JjUGFydHMuam9pbignXFxuJyk7XG4gIH1cbn1cblxuY2xhc3MgX1RzRW1pdHRlclZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdEVtaXR0ZXJWaXNpdG9yIGltcGxlbWVudHMgby5UeXBlVmlzaXRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZHVsZVVybDogc3RyaW5nKSB7IHN1cGVyKGZhbHNlKTsgfVxuXG4gIGltcG9ydHNXaXRoUHJlZml4ZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIHZpc2l0RXh0ZXJuYWxFeHByKGFzdDogby5FeHRlcm5hbEV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICB0aGlzLl92aXNpdElkZW50aWZpZXIoYXN0LnZhbHVlLCBhc3QudHlwZVBhcmFtcywgY3R4KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdERlY2xhcmVWYXJTdG10KHN0bXQ6IG8uRGVjbGFyZVZhclN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBpZiAoY3R4LmlzRXhwb3J0ZWRWYXIoc3RtdC5uYW1lKSkge1xuICAgICAgY3R4LnByaW50KGBleHBvcnQgYCk7XG4gICAgfVxuICAgIGlmIChzdG10Lmhhc01vZGlmaWVyKG8uU3RtdE1vZGlmaWVyLkZpbmFsKSkge1xuICAgICAgY3R4LnByaW50KGBjb25zdGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHgucHJpbnQoYHZhcmApO1xuICAgIH1cbiAgICBjdHgucHJpbnQoYCAke3N0bXQubmFtZX1gKTtcbiAgICBpZiAoaXNQcmVzZW50KHN0bXQudHlwZSkpIHtcbiAgICAgIGN0eC5wcmludChgOmApO1xuICAgICAgc3RtdC50eXBlLnZpc2l0VHlwZSh0aGlzLCBjdHgpO1xuICAgIH1cbiAgICBjdHgucHJpbnQoYCA9IGApO1xuICAgIHN0bXQudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50bG4oYDtgKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdENhc3RFeHByKGFzdDogby5DYXN0RXhwciwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGN0eC5wcmludChgKDxgKTtcbiAgICBhc3QudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICBjdHgucHJpbnQoYD5gKTtcbiAgICBhc3QudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgY3R4LnByaW50KGApYCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXREZWNsYXJlQ2xhc3NTdG10KHN0bXQ6IG8uQ2xhc3NTdG10LCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgY3R4LnB1c2hDbGFzcyhzdG10KTtcbiAgICBpZiAoY3R4LmlzRXhwb3J0ZWRWYXIoc3RtdC5uYW1lKSkge1xuICAgICAgY3R4LnByaW50KGBleHBvcnQgYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgY2xhc3MgJHtzdG10Lm5hbWV9YCk7XG4gICAgaWYgKGlzUHJlc2VudChzdG10LnBhcmVudCkpIHtcbiAgICAgIGN0eC5wcmludChgIGV4dGVuZHMgYCk7XG4gICAgICBzdG10LnBhcmVudC52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB9XG4gICAgY3R4LnByaW50bG4oYCB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHN0bXQuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB0aGlzLl92aXNpdENsYXNzRmllbGQoZmllbGQsIGN0eCkpO1xuICAgIGlmIChpc1ByZXNlbnQoc3RtdC5jb25zdHJ1Y3Rvck1ldGhvZCkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0Q2xhc3NDb25zdHJ1Y3RvcihzdG10LCBjdHgpO1xuICAgIH1cbiAgICBzdG10LmdldHRlcnMuZm9yRWFjaCgoZ2V0dGVyKSA9PiB0aGlzLl92aXNpdENsYXNzR2V0dGVyKGdldHRlciwgY3R4KSk7XG4gICAgc3RtdC5tZXRob2RzLmZvckVhY2goKG1ldGhvZCkgPT4gdGhpcy5fdmlzaXRDbGFzc01ldGhvZChtZXRob2QsIGN0eCkpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICAgIGN0eC5wb3BDbGFzcygpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NGaWVsZChmaWVsZDogby5DbGFzc0ZpZWxkLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCkge1xuICAgIGlmIChmaWVsZC5oYXNNb2RpZmllcihvLlN0bXRNb2RpZmllci5Qcml2YXRlKSkge1xuICAgICAgY3R4LnByaW50KGBwcml2YXRlIGApO1xuICAgIH1cbiAgICBjdHgucHJpbnQoZmllbGQubmFtZSk7XG4gICAgaWYgKGlzUHJlc2VudChmaWVsZC50eXBlKSkge1xuICAgICAgY3R4LnByaW50KGA6YCk7XG4gICAgICBmaWVsZC50eXBlLnZpc2l0VHlwZSh0aGlzLCBjdHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHgucHJpbnQoYDogYW55YCk7XG4gICAgfVxuICAgIGN0eC5wcmludGxuKGA7YCk7XG4gIH1cbiAgcHJpdmF0ZSBfdmlzaXRDbGFzc0dldHRlcihnZXR0ZXI6IG8uQ2xhc3NHZXR0ZXIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KSB7XG4gICAgaWYgKGdldHRlci5oYXNNb2RpZmllcihvLlN0bXRNb2RpZmllci5Qcml2YXRlKSkge1xuICAgICAgY3R4LnByaW50KGBwcml2YXRlIGApO1xuICAgIH1cbiAgICBjdHgucHJpbnQoYGdldCAke2dldHRlci5uYW1lfSgpYCk7XG4gICAgaWYgKGlzUHJlc2VudChnZXR0ZXIudHlwZSkpIHtcbiAgICAgIGN0eC5wcmludChgOmApO1xuICAgICAgZ2V0dGVyLnR5cGUudmlzaXRUeXBlKHRoaXMsIGN0eCk7XG4gICAgfVxuICAgIGN0eC5wcmludGxuKGAge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhnZXR0ZXIuYm9keSwgY3R4KTtcbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50bG4oYH1gKTtcbiAgfVxuICBwcml2YXRlIF92aXNpdENsYXNzQ29uc3RydWN0b3Ioc3RtdDogby5DbGFzc1N0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KSB7XG4gICAgY3R4LnByaW50KGBjb25zdHJ1Y3RvcihgKTtcbiAgICB0aGlzLl92aXNpdFBhcmFtcyhzdG10LmNvbnN0cnVjdG9yTWV0aG9kLnBhcmFtcywgY3R4KTtcbiAgICBjdHgucHJpbnRsbihgKSB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQuY29uc3RydWN0b3JNZXRob2QuYm9keSwgY3R4KTtcbiAgICBjdHguZGVjSW5kZW50KCk7XG4gICAgY3R4LnByaW50bG4oYH1gKTtcbiAgfVxuICBwcml2YXRlIF92aXNpdENsYXNzTWV0aG9kKG1ldGhvZDogby5DbGFzc01ldGhvZCwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpIHtcbiAgICBpZiAobWV0aG9kLmhhc01vZGlmaWVyKG8uU3RtdE1vZGlmaWVyLlByaXZhdGUpKSB7XG4gICAgICBjdHgucHJpbnQoYHByaXZhdGUgYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgJHttZXRob2QubmFtZX0oYCk7XG4gICAgdGhpcy5fdmlzaXRQYXJhbXMobWV0aG9kLnBhcmFtcywgY3R4KTtcbiAgICBjdHgucHJpbnQoYCk6YCk7XG4gICAgaWYgKGlzUHJlc2VudChtZXRob2QudHlwZSkpIHtcbiAgICAgIG1ldGhvZC50eXBlLnZpc2l0VHlwZSh0aGlzLCBjdHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHgucHJpbnQoYHZvaWRgKTtcbiAgICB9XG4gICAgY3R4LnByaW50bG4oYCB7YCk7XG4gICAgY3R4LmluY0luZGVudCgpO1xuICAgIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKG1ldGhvZC5ib2R5LCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICB9XG4gIHZpc2l0RnVuY3Rpb25FeHByKGFzdDogby5GdW5jdGlvbkV4cHIsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnQoYChgKTtcbiAgICB0aGlzLl92aXNpdFBhcmFtcyhhc3QucGFyYW1zLCBjdHgpO1xuICAgIGN0eC5wcmludChgKTpgKTtcbiAgICBpZiAoaXNQcmVzZW50KGFzdC50eXBlKSkge1xuICAgICAgYXN0LnR5cGUudmlzaXRUeXBlKHRoaXMsIGN0eCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN0eC5wcmludChgdm9pZGApO1xuICAgIH1cbiAgICBjdHgucHJpbnRsbihgID0+IHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoYXN0LnN0YXRlbWVudHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludChgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGVjbGFyZUZ1bmN0aW9uU3RtdChzdG10OiBvLkRlY2xhcmVGdW5jdGlvblN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBpZiAoY3R4LmlzRXhwb3J0ZWRWYXIoc3RtdC5uYW1lKSkge1xuICAgICAgY3R4LnByaW50KGBleHBvcnQgYCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgZnVuY3Rpb24gJHtzdG10Lm5hbWV9KGApO1xuICAgIHRoaXMuX3Zpc2l0UGFyYW1zKHN0bXQucGFyYW1zLCBjdHgpO1xuICAgIGN0eC5wcmludChgKTpgKTtcbiAgICBpZiAoaXNQcmVzZW50KHN0bXQudHlwZSkpIHtcbiAgICAgIHN0bXQudHlwZS52aXNpdFR5cGUodGhpcywgY3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3R4LnByaW50KGB2b2lkYCk7XG4gICAgfVxuICAgIGN0eC5wcmludGxuKGAge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhzdG10LnN0YXRlbWVudHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludGxuKGB9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRUcnlDYXRjaFN0bXQoc3RtdDogby5UcnlDYXRjaFN0bXQsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICBjdHgucHJpbnRsbihgdHJ5IHtgKTtcbiAgICBjdHguaW5jSW5kZW50KCk7XG4gICAgdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5ib2R5U3RtdHMsIGN0eCk7XG4gICAgY3R4LmRlY0luZGVudCgpO1xuICAgIGN0eC5wcmludGxuKGB9IGNhdGNoICgke0NBVENIX0VSUk9SX1ZBUi5uYW1lfSkge2ApO1xuICAgIGN0eC5pbmNJbmRlbnQoKTtcbiAgICB2YXIgY2F0Y2hTdG10cyA9IFtcbiAgICAgIDxvLlN0YXRlbWVudD5DQVRDSF9TVEFDS19WQVIuc2V0KENBVENIX0VSUk9SX1ZBUi5wcm9wKCdzdGFjaycpKVxuICAgICAgICAgIC50b0RlY2xTdG10KG51bGwsIFtvLlN0bXRNb2RpZmllci5GaW5hbF0pXG4gICAgXS5jb25jYXQoc3RtdC5jYXRjaFN0bXRzKTtcbiAgICB0aGlzLnZpc2l0QWxsU3RhdGVtZW50cyhjYXRjaFN0bXRzLCBjdHgpO1xuICAgIGN0eC5kZWNJbmRlbnQoKTtcbiAgICBjdHgucHJpbnRsbihgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRCdWlsdGludFR5cGUodHlwZTogby5CdWlsdGluVHlwZSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIHZhciB0eXBlU3RyO1xuICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICBjYXNlIG8uQnVpbHRpblR5cGVOYW1lLkJvb2w6XG4gICAgICAgIHR5cGVTdHIgPSAnYm9vbGVhbic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5EeW5hbWljOlxuICAgICAgICB0eXBlU3RyID0gJ2FueSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5GdW5jdGlvbjpcbiAgICAgICAgdHlwZVN0ciA9ICdGdW5jdGlvbic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5OdW1iZXI6XG4gICAgICAgIHR5cGVTdHIgPSAnbnVtYmVyJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQnVpbHRpblR5cGVOYW1lLkludDpcbiAgICAgICAgdHlwZVN0ciA9ICdudW1iZXInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CdWlsdGluVHlwZU5hbWUuU3RyaW5nOlxuICAgICAgICB0eXBlU3RyID0gJ3N0cmluZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYFVuc3VwcG9ydGVkIGJ1aWx0aW4gdHlwZSAke3R5cGUubmFtZX1gKTtcbiAgICB9XG4gICAgY3R4LnByaW50KHR5cGVTdHIpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RXh0ZXJuYWxUeXBlKGFzdDogby5FeHRlcm5hbFR5cGUsIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogYW55IHtcbiAgICB0aGlzLl92aXNpdElkZW50aWZpZXIoYXN0LnZhbHVlLCBhc3QudHlwZVBhcmFtcywgY3R4KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEFycmF5VHlwZSh0eXBlOiBvLkFycmF5VHlwZSwgY3R4OiBFbWl0dGVyVmlzaXRvckNvbnRleHQpOiBhbnkge1xuICAgIGlmIChpc1ByZXNlbnQodHlwZS5vZikpIHtcbiAgICAgIHR5cGUub2YudmlzaXRUeXBlKHRoaXMsIGN0eCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN0eC5wcmludChgYW55YCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgW11gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdE1hcFR5cGUodHlwZTogby5NYXBUeXBlLCBjdHg6IEVtaXR0ZXJWaXNpdG9yQ29udGV4dCk6IGFueSB7XG4gICAgY3R4LnByaW50KGB7W2tleTogc3RyaW5nXTpgKTtcbiAgICBpZiAoaXNQcmVzZW50KHR5cGUudmFsdWVUeXBlKSkge1xuICAgICAgdHlwZS52YWx1ZVR5cGUudmlzaXRUeXBlKHRoaXMsIGN0eCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN0eC5wcmludChgYW55YCk7XG4gICAgfVxuICAgIGN0eC5wcmludChgfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0QnVpbHRpbk1ldGhvZE5hbWUobWV0aG9kOiBvLkJ1aWx0aW5NZXRob2QpOiBzdHJpbmcge1xuICAgIHZhciBuYW1lO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlIG8uQnVpbHRpbk1ldGhvZC5Db25jYXRBcnJheTpcbiAgICAgICAgbmFtZSA9ICdjb25jYXQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugby5CdWlsdGluTWV0aG9kLlN1YnNjcmliZU9ic2VydmFibGU6XG4gICAgICAgIG5hbWUgPSAnc3Vic2NyaWJlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG8uQnVpbHRpbk1ldGhvZC5iaW5kOlxuICAgICAgICBuYW1lID0gJ2JpbmQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbmtub3duIGJ1aWx0aW4gbWV0aG9kOiAke21ldGhvZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuXG4gIHByaXZhdGUgX3Zpc2l0UGFyYW1zKHBhcmFtczogby5GblBhcmFtW10sIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdEFsbE9iamVjdHMoKHBhcmFtKSA9PiB7XG4gICAgICBjdHgucHJpbnQocGFyYW0ubmFtZSk7XG4gICAgICBpZiAoaXNQcmVzZW50KHBhcmFtLnR5cGUpKSB7XG4gICAgICAgIGN0eC5wcmludChgOmApO1xuICAgICAgICBwYXJhbS50eXBlLnZpc2l0VHlwZSh0aGlzLCBjdHgpO1xuICAgICAgfVxuICAgIH0sIHBhcmFtcywgY3R4LCAnLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRJZGVudGlmaWVyKHZhbHVlOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLCB0eXBlUGFyYW1zOiBvLlR5cGVbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDogRW1pdHRlclZpc2l0b3JDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh2YWx1ZS5tb2R1bGVVcmwpICYmIHZhbHVlLm1vZHVsZVVybCAhPSB0aGlzLl9tb2R1bGVVcmwpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmltcG9ydHNXaXRoUHJlZml4ZXMuZ2V0KHZhbHVlLm1vZHVsZVVybCk7XG4gICAgICBpZiAoaXNCbGFuayhwcmVmaXgpKSB7XG4gICAgICAgIHByZWZpeCA9IGBpbXBvcnQke3RoaXMuaW1wb3J0c1dpdGhQcmVmaXhlcy5zaXplfWA7XG4gICAgICAgIHRoaXMuaW1wb3J0c1dpdGhQcmVmaXhlcy5zZXQodmFsdWUubW9kdWxlVXJsLCBwcmVmaXgpO1xuICAgICAgfVxuICAgICAgY3R4LnByaW50KGAke3ByZWZpeH0uYCk7XG4gICAgfVxuICAgIGN0eC5wcmludCh2YWx1ZS5uYW1lKTtcbiAgICBpZiAoaXNQcmVzZW50KHR5cGVQYXJhbXMpICYmIHR5cGVQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgY3R4LnByaW50KGA8YCk7XG4gICAgICB0aGlzLnZpc2l0QWxsT2JqZWN0cygodHlwZSkgPT4gdHlwZS52aXNpdFR5cGUodGhpcywgY3R4KSwgdHlwZVBhcmFtcywgY3R4LCAnLCcpO1xuICAgICAgY3R4LnByaW50KGA+YCk7XG4gICAgfVxuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar o = require('./output_ast');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dart_emitter_1 = require('./dart_emitter');\r\nvar ts_emitter_1 = require('./ts_emitter');\r\nfunction interpretStatements(statements, resultVar, instanceFactory) {\r\n var stmtsWithReturn = statements.concat([new o.ReturnStatement(o.variable(resultVar))]);\r\n var ctx = new _ExecutionContext(null, null, null, null, new Map(), new Map(), new Map(), new Map(), instanceFactory);\r\n var visitor = new StatementInterpreter();\r\n var result = visitor.visitAllStatements(stmtsWithReturn, ctx);\r\n return lang_1.isPresent(result) ? result.value : null;\r\n}\r\nexports.interpretStatements = interpretStatements;\r\nvar DynamicInstance = (function () {\r\n function DynamicInstance() {\r\n }\r\n Object.defineProperty(DynamicInstance.prototype, \"props\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DynamicInstance.prototype, \"getters\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DynamicInstance.prototype, \"methods\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DynamicInstance.prototype, \"clazz\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DynamicInstance;\r\n}());\r\nexports.DynamicInstance = DynamicInstance;\r\nfunction isDynamicInstance(instance) {\r\n if (lang_1.IS_DART) {\r\n return instance instanceof DynamicInstance;\r\n }\r\n else {\r\n return lang_1.isPresent(instance) && lang_1.isPresent(instance.props) && lang_1.isPresent(instance.getters) &&\r\n lang_1.isPresent(instance.methods);\r\n }\r\n}\r\nfunction _executeFunctionStatements(varNames, varValues, statements, ctx, visitor) {\r\n var childCtx = ctx.createChildWihtLocalVars();\r\n for (var i = 0; i < varNames.length; i++) {\r\n childCtx.vars.set(varNames[i], varValues[i]);\r\n }\r\n var result = visitor.visitAllStatements(statements, childCtx);\r\n return lang_1.isPresent(result) ? result.value : null;\r\n}\r\nvar _ExecutionContext = (function () {\r\n function _ExecutionContext(parent, superClass, superInstance, className, vars, props, getters, methods, instanceFactory) {\r\n this.parent = parent;\r\n this.superClass = superClass;\r\n this.superInstance = superInstance;\r\n this.className = className;\r\n this.vars = vars;\r\n this.props = props;\r\n this.getters = getters;\r\n this.methods = methods;\r\n this.instanceFactory = instanceFactory;\r\n }\r\n _ExecutionContext.prototype.createChildWihtLocalVars = function () {\r\n return new _ExecutionContext(this, this.superClass, this.superInstance, this.className, new Map(), this.props, this.getters, this.methods, this.instanceFactory);\r\n };\r\n return _ExecutionContext;\r\n}());\r\nvar ReturnValue = (function () {\r\n function ReturnValue(value) {\r\n this.value = value;\r\n }\r\n return ReturnValue;\r\n}());\r\nvar _DynamicClass = (function () {\r\n function _DynamicClass(_classStmt, _ctx, _visitor) {\r\n this._classStmt = _classStmt;\r\n this._ctx = _ctx;\r\n this._visitor = _visitor;\r\n }\r\n _DynamicClass.prototype.instantiate = function (args) {\r\n var _this = this;\r\n var props = new Map();\r\n var getters = new Map();\r\n var methods = new Map();\r\n var superClass = this._classStmt.parent.visitExpression(this._visitor, this._ctx);\r\n var instanceCtx = new _ExecutionContext(this._ctx, superClass, null, this._classStmt.name, this._ctx.vars, props, getters, methods, this._ctx.instanceFactory);\r\n this._classStmt.fields.forEach(function (field) { props.set(field.name, null); });\r\n this._classStmt.getters.forEach(function (getter) {\r\n getters.set(getter.name, function () { return _executeFunctionStatements([], [], getter.body, instanceCtx, _this._visitor); });\r\n });\r\n this._classStmt.methods.forEach(function (method) {\r\n var paramNames = method.params.map(function (param) { return param.name; });\r\n methods.set(method.name, _declareFn(paramNames, method.body, instanceCtx, _this._visitor));\r\n });\r\n var ctorParamNames = this._classStmt.constructorMethod.params.map(function (param) { return param.name; });\r\n _executeFunctionStatements(ctorParamNames, args, this._classStmt.constructorMethod.body, instanceCtx, this._visitor);\r\n return instanceCtx.superInstance;\r\n };\r\n _DynamicClass.prototype.debugAst = function () { return this._visitor.debugAst(this._classStmt); };\r\n return _DynamicClass;\r\n}());\r\nvar StatementInterpreter = (function () {\r\n function StatementInterpreter() {\r\n }\r\n StatementInterpreter.prototype.debugAst = function (ast) {\r\n return lang_1.IS_DART ? dart_emitter_1.debugOutputAstAsDart(ast) : ts_emitter_1.debugOutputAstAsTypeScript(ast);\r\n };\r\n StatementInterpreter.prototype.visitDeclareVarStmt = function (stmt, ctx) {\r\n ctx.vars.set(stmt.name, stmt.value.visitExpression(this, ctx));\r\n return null;\r\n };\r\n StatementInterpreter.prototype.visitWriteVarExpr = function (expr, ctx) {\r\n var value = expr.value.visitExpression(this, ctx);\r\n var currCtx = ctx;\r\n while (currCtx != null) {\r\n if (currCtx.vars.has(expr.name)) {\r\n currCtx.vars.set(expr.name, value);\r\n return value;\r\n }\r\n currCtx = currCtx.parent;\r\n }\r\n throw new exceptions_1.BaseException(\"Not declared variable \" + expr.name);\r\n };\r\n StatementInterpreter.prototype.visitReadVarExpr = function (ast, ctx) {\r\n var varName = ast.name;\r\n if (lang_1.isPresent(ast.builtin)) {\r\n switch (ast.builtin) {\r\n case o.BuiltinVar.Super:\r\n case o.BuiltinVar.This:\r\n return ctx.superInstance;\r\n case o.BuiltinVar.CatchError:\r\n varName = CATCH_ERROR_VAR;\r\n break;\r\n case o.BuiltinVar.CatchStack:\r\n varName = CATCH_STACK_VAR;\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown builtin variable \" + ast.builtin);\r\n }\r\n }\r\n var currCtx = ctx;\r\n while (currCtx != null) {\r\n if (currCtx.vars.has(varName)) {\r\n return currCtx.vars.get(varName);\r\n }\r\n currCtx = currCtx.parent;\r\n }\r\n throw new exceptions_1.BaseException(\"Not declared variable \" + varName);\r\n };\r\n StatementInterpreter.prototype.visitWriteKeyExpr = function (expr, ctx) {\r\n var receiver = expr.receiver.visitExpression(this, ctx);\r\n var index = expr.index.visitExpression(this, ctx);\r\n var value = expr.value.visitExpression(this, ctx);\r\n receiver[index] = value;\r\n return value;\r\n };\r\n StatementInterpreter.prototype.visitWritePropExpr = function (expr, ctx) {\r\n var receiver = expr.receiver.visitExpression(this, ctx);\r\n var value = expr.value.visitExpression(this, ctx);\r\n if (isDynamicInstance(receiver)) {\r\n var di = receiver;\r\n if (di.props.has(expr.name)) {\r\n di.props.set(expr.name, value);\r\n }\r\n else {\r\n reflection_1.reflector.setter(expr.name)(receiver, value);\r\n }\r\n }\r\n else {\r\n reflection_1.reflector.setter(expr.name)(receiver, value);\r\n }\r\n return value;\r\n };\r\n StatementInterpreter.prototype.visitInvokeMethodExpr = function (expr, ctx) {\r\n var receiver = expr.receiver.visitExpression(this, ctx);\r\n var args = this.visitAllExpressions(expr.args, ctx);\r\n var result;\r\n if (lang_1.isPresent(expr.builtin)) {\r\n switch (expr.builtin) {\r\n case o.BuiltinMethod.ConcatArray:\r\n result = collection_1.ListWrapper.concat(receiver, args[0]);\r\n break;\r\n case o.BuiltinMethod.SubscribeObservable:\r\n result = async_1.ObservableWrapper.subscribe(receiver, args[0]);\r\n break;\r\n case o.BuiltinMethod.bind:\r\n if (lang_1.IS_DART) {\r\n result = receiver;\r\n }\r\n else {\r\n result = receiver.bind(args[0]);\r\n }\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown builtin method \" + expr.builtin);\r\n }\r\n }\r\n else if (isDynamicInstance(receiver)) {\r\n var di = receiver;\r\n if (di.methods.has(expr.name)) {\r\n result = lang_1.FunctionWrapper.apply(di.methods.get(expr.name), args);\r\n }\r\n else {\r\n result = reflection_1.reflector.method(expr.name)(receiver, args);\r\n }\r\n }\r\n else {\r\n result = reflection_1.reflector.method(expr.name)(receiver, args);\r\n }\r\n return result;\r\n };\r\n StatementInterpreter.prototype.visitInvokeFunctionExpr = function (stmt, ctx) {\r\n var args = this.visitAllExpressions(stmt.args, ctx);\r\n var fnExpr = stmt.fn;\r\n if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) {\r\n ctx.superInstance = ctx.instanceFactory.createInstance(ctx.superClass, ctx.className, args, ctx.props, ctx.getters, ctx.methods);\r\n ctx.parent.superInstance = ctx.superInstance;\r\n return null;\r\n }\r\n else {\r\n var fn = stmt.fn.visitExpression(this, ctx);\r\n return lang_1.FunctionWrapper.apply(fn, args);\r\n }\r\n };\r\n StatementInterpreter.prototype.visitReturnStmt = function (stmt, ctx) {\r\n return new ReturnValue(stmt.value.visitExpression(this, ctx));\r\n };\r\n StatementInterpreter.prototype.visitDeclareClassStmt = function (stmt, ctx) {\r\n var clazz = new _DynamicClass(stmt, ctx, this);\r\n ctx.vars.set(stmt.name, clazz);\r\n return null;\r\n };\r\n StatementInterpreter.prototype.visitExpressionStmt = function (stmt, ctx) {\r\n return stmt.expr.visitExpression(this, ctx);\r\n };\r\n StatementInterpreter.prototype.visitIfStmt = function (stmt, ctx) {\r\n var condition = stmt.condition.visitExpression(this, ctx);\r\n if (condition) {\r\n return this.visitAllStatements(stmt.trueCase, ctx);\r\n }\r\n else if (lang_1.isPresent(stmt.falseCase)) {\r\n return this.visitAllStatements(stmt.falseCase, ctx);\r\n }\r\n return null;\r\n };\r\n StatementInterpreter.prototype.visitTryCatchStmt = function (stmt, ctx) {\r\n try {\r\n return this.visitAllStatements(stmt.bodyStmts, ctx);\r\n }\r\n catch (e) {\r\n var childCtx = ctx.createChildWihtLocalVars();\r\n childCtx.vars.set(CATCH_ERROR_VAR, e);\r\n childCtx.vars.set(CATCH_STACK_VAR, e.stack);\r\n return this.visitAllStatements(stmt.catchStmts, childCtx);\r\n }\r\n };\r\n StatementInterpreter.prototype.visitThrowStmt = function (stmt, ctx) {\r\n throw stmt.error.visitExpression(this, ctx);\r\n };\r\n StatementInterpreter.prototype.visitCommentStmt = function (stmt, context) { return null; };\r\n StatementInterpreter.prototype.visitInstantiateExpr = function (ast, ctx) {\r\n var args = this.visitAllExpressions(ast.args, ctx);\r\n var clazz = ast.classExpr.visitExpression(this, ctx);\r\n if (clazz instanceof _DynamicClass) {\r\n return clazz.instantiate(args);\r\n }\r\n else {\r\n return lang_1.FunctionWrapper.apply(reflection_1.reflector.factory(clazz), args);\r\n }\r\n };\r\n StatementInterpreter.prototype.visitLiteralExpr = function (ast, ctx) { return ast.value; };\r\n StatementInterpreter.prototype.visitExternalExpr = function (ast, ctx) { return ast.value.runtime; };\r\n StatementInterpreter.prototype.visitConditionalExpr = function (ast, ctx) {\r\n if (ast.condition.visitExpression(this, ctx)) {\r\n return ast.trueCase.visitExpression(this, ctx);\r\n }\r\n else if (lang_1.isPresent(ast.falseCase)) {\r\n return ast.falseCase.visitExpression(this, ctx);\r\n }\r\n return null;\r\n };\r\n StatementInterpreter.prototype.visitNotExpr = function (ast, ctx) {\r\n return !ast.condition.visitExpression(this, ctx);\r\n };\r\n StatementInterpreter.prototype.visitCastExpr = function (ast, ctx) {\r\n return ast.value.visitExpression(this, ctx);\r\n };\r\n StatementInterpreter.prototype.visitFunctionExpr = function (ast, ctx) {\r\n var paramNames = ast.params.map(function (param) { return param.name; });\r\n return _declareFn(paramNames, ast.statements, ctx, this);\r\n };\r\n StatementInterpreter.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\r\n var paramNames = stmt.params.map(function (param) { return param.name; });\r\n ctx.vars.set(stmt.name, _declareFn(paramNames, stmt.statements, ctx, this));\r\n return null;\r\n };\r\n StatementInterpreter.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\r\n var _this = this;\r\n var lhs = function () { return ast.lhs.visitExpression(_this, ctx); };\r\n var rhs = function () { return ast.rhs.visitExpression(_this, ctx); };\r\n switch (ast.operator) {\r\n case o.BinaryOperator.Equals:\r\n return lhs() == rhs();\r\n case o.BinaryOperator.Identical:\r\n return lhs() === rhs();\r\n case o.BinaryOperator.NotEquals:\r\n return lhs() != rhs();\r\n case o.BinaryOperator.NotIdentical:\r\n return lhs() !== rhs();\r\n case o.BinaryOperator.And:\r\n return lhs() && rhs();\r\n case o.BinaryOperator.Or:\r\n return lhs() || rhs();\r\n case o.BinaryOperator.Plus:\r\n return lhs() + rhs();\r\n case o.BinaryOperator.Minus:\r\n return lhs() - rhs();\r\n case o.BinaryOperator.Divide:\r\n return lhs() / rhs();\r\n case o.BinaryOperator.Multiply:\r\n return lhs() * rhs();\r\n case o.BinaryOperator.Modulo:\r\n return lhs() % rhs();\r\n case o.BinaryOperator.Lower:\r\n return lhs() < rhs();\r\n case o.BinaryOperator.LowerEquals:\r\n return lhs() <= rhs();\r\n case o.BinaryOperator.Bigger:\r\n return lhs() > rhs();\r\n case o.BinaryOperator.BiggerEquals:\r\n return lhs() >= rhs();\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown operator \" + ast.operator);\r\n }\r\n };\r\n StatementInterpreter.prototype.visitReadPropExpr = function (ast, ctx) {\r\n var result;\r\n var receiver = ast.receiver.visitExpression(this, ctx);\r\n if (isDynamicInstance(receiver)) {\r\n var di = receiver;\r\n if (di.props.has(ast.name)) {\r\n result = di.props.get(ast.name);\r\n }\r\n else if (di.getters.has(ast.name)) {\r\n result = di.getters.get(ast.name)();\r\n }\r\n else if (di.methods.has(ast.name)) {\r\n result = di.methods.get(ast.name);\r\n }\r\n else {\r\n result = reflection_1.reflector.getter(ast.name)(receiver);\r\n }\r\n }\r\n else {\r\n result = reflection_1.reflector.getter(ast.name)(receiver);\r\n }\r\n return result;\r\n };\r\n StatementInterpreter.prototype.visitReadKeyExpr = function (ast, ctx) {\r\n var receiver = ast.receiver.visitExpression(this, ctx);\r\n var prop = ast.index.visitExpression(this, ctx);\r\n return receiver[prop];\r\n };\r\n StatementInterpreter.prototype.visitLiteralArrayExpr = function (ast, ctx) {\r\n return this.visitAllExpressions(ast.entries, ctx);\r\n };\r\n StatementInterpreter.prototype.visitLiteralMapExpr = function (ast, ctx) {\r\n var _this = this;\r\n var result = {};\r\n ast.entries.forEach(function (entry) { return result[entry[0]] =\r\n entry[1].visitExpression(_this, ctx); });\r\n return result;\r\n };\r\n StatementInterpreter.prototype.visitAllExpressions = function (expressions, ctx) {\r\n var _this = this;\r\n return expressions.map(function (expr) { return expr.visitExpression(_this, ctx); });\r\n };\r\n StatementInterpreter.prototype.visitAllStatements = function (statements, ctx) {\r\n for (var i = 0; i < statements.length; i++) {\r\n var stmt = statements[i];\r\n var val = stmt.visitStatement(this, ctx);\r\n if (val instanceof ReturnValue) {\r\n return val;\r\n }\r\n }\r\n return null;\r\n };\r\n return StatementInterpreter;\r\n}());\r\nfunction _declareFn(varNames, statements, ctx, visitor) {\r\n switch (varNames.length) {\r\n case 0:\r\n return function () { return _executeFunctionStatements(varNames, [], statements, ctx, visitor); };\r\n case 1:\r\n return function (d0) { return _executeFunctionStatements(varNames, [d0], statements, ctx, visitor); };\r\n case 2:\r\n return function (d0, d1) { return _executeFunctionStatements(varNames, [d0, d1], statements, ctx, visitor); };\r\n case 3:\r\n return function (d0, d1, d2) {\r\n return _executeFunctionStatements(varNames, [d0, d1, d2], statements, ctx, visitor);\r\n };\r\n case 4:\r\n return function (d0, d1, d2, d3) {\r\n return _executeFunctionStatements(varNames, [d0, d1, d2, d3], statements, ctx, visitor);\r\n };\r\n case 5:\r\n return function (d0, d1, d2, d3, d4) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4], statements, ctx, visitor); };\r\n case 6:\r\n return function (d0, d1, d2, d3, d4, d5) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5], statements, ctx, visitor); };\r\n case 7:\r\n return function (d0, d1, d2, d3, d4, d5, d6) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6], statements, ctx, visitor); };\r\n case 8:\r\n return function (d0, d1, d2, d3, d4, d5, d6, d7) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6, d7], statements, ctx, visitor); };\r\n case 9:\r\n return function (d0, d1, d2, d3, d4, d5, d6, d7, d8) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6, d7, d8], statements, ctx, visitor); };\r\n case 10:\r\n return function (d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6, d7, d8, d9], statements, ctx, visitor); };\r\n default:\r\n throw new exceptions_1.BaseException('Declaring functions with more than 10 arguments is not supported right now');\r\n }\r\n}\r\nvar CATCH_ERROR_VAR = 'error';\r\nvar CATCH_STACK_VAR = 'stack';\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0X2ludGVycHJldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL291dHB1dC9vdXRwdXRfaW50ZXJwcmV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsc0JBQWdDLDJCQUEyQixDQUFDLENBQUE7QUFDNUQsSUFBWSxDQUFDLFdBQU0sY0FBYyxDQUFDLENBQUE7QUFDbEMsMkJBQXdCLHlDQUF5QyxDQUFDLENBQUE7QUFDbEUsMkJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFDNUUsMkJBQXNDLGdDQUFnQyxDQUFDLENBQUE7QUFDdkUsNkJBQW1DLGdCQUFnQixDQUFDLENBQUE7QUFDcEQsMkJBQXlDLGNBQWMsQ0FBQyxDQUFBO0FBRXhELDZCQUFvQyxVQUF5QixFQUFFLFNBQWlCLEVBQzVDLGVBQWdDO0lBQ2xFLElBQUksZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixJQUFJLEdBQUcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBZSxFQUM5QyxJQUFJLEdBQUcsRUFBZSxFQUFFLElBQUksR0FBRyxFQUFvQixFQUNuRCxJQUFJLEdBQUcsRUFBb0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM5RSxJQUFJLE9BQU8sR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFDekMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5RCxNQUFN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RUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSyxPQUFBLDBCQUEwQixDQUNsRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBRHJDLENBQ3FDLENBQUM7UUFDM0UsS0FBSyxDQUFDO1lBQ0osTUFBTSxDQUFDLFVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFLLE9BQUEsMEJBQTBCLENBQ3RELFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBRHJDLENBQ3FDLENBQUM7UUFDL0UsS0FBSyxDQUFDO1lBQ0osTUFBTSxDQUFDLFVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSyxPQUFBLDBCQUEwQixDQUMxRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFEckMsQ0FDcUMsQ0FBQztRQUNuRixLQUFLLENBQUM7WUFDSixNQUFNLENBQUMsVUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSyxPQUFBLDBCQUEwQixDQUM5RCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBRHJDLENBQ3FDLENBQUM7UUFDdkYsS0FBSyxFQUFFO1lBQ0wsTUFBTSxDQUFDLFVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFLLE9BQUEsMEJBQTBCLENBQ2xFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBRHJDLENBQ3FDLENBQUM7UUFDM0Y7WUFDRSxNQUFNLElBQUksMEJBQWEsQ0FDbkIsNEVBQTRFLENBQUMsQ0FBQztJQUN0RixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUM5QixJQUFJLGVBQWUsR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIGlzU3RyaW5nLFxuICBldmFsRXhwcmVzc2lvbixcbiAgSVNfREFSVCxcbiAgRnVuY3Rpb25XcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge09ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi9vdXRwdXRfYXN0JztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCB1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7ZGVidWdPdXRwdXRBc3RBc0RhcnR9IGZyb20gJy4vZGFydF9lbWl0dGVyJztcbmltcG9ydCB7ZGVidWdPdXRwdXRBc3RBc1R5cGVTY3JpcHR9IGZyb20gJy4vdHNfZW1pdHRlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnByZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10sIHJlc3VsdFZhcjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VGYWN0b3J5OiBJbnN0YW5jZUZhY3RvcnkpOiBhbnkge1xuICB2YXIgc3RtdHNXaXRoUmV0dXJuID0gc3RhdGVtZW50cy5jb25jYXQoW25ldyBvLlJldHVyblN0YXRlbWVudChvLnZhcmlhYmxlKHJlc3VsdFZhcikpXSk7XG4gIHZhciBjdHggPSBuZXcgX0V4ZWN1dGlvbkNvbnRleHQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PigpLCBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPigpLCBpbnN0YW5jZUZhY3RvcnkpO1xuICB2YXIgdmlzaXRvciA9IG5ldyBTdGF0ZW1lbnRJbnRlcnByZXRlcigpO1xuICB2YXIgcmVzdWx0ID0gdmlzaXRvci52aXNpdEFsbFN0YXRlbWVudHMoc3RtdHNXaXRoUmV0dXJuLCBjdHgpO1xuICByZXR1cm4gaXNQcmVzZW50KHJlc3VsdCkgPyByZXN1bHQudmFsdWUgOiBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlRmFjdG9yeSB7XG4gIGNyZWF0ZUluc3RhbmNlKHN1cGVyQ2xhc3M6IGFueSwgY2xheno6IGFueSwgY29uc3RydWN0b3JBcmdzOiBhbnlbXSwgcHJvcHM6IE1hcDxzdHJpbmcsIGFueT4sXG4gICAgICAgICAgICAgICAgIGdldHRlcnM6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPiwgbWV0aG9kczogTWFwPHN0cmluZywgRnVuY3Rpb24+KTogRHluYW1pY0luc3RhbmNlO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0luc3RhbmNlIHtcbiAgZ2V0IHByb3BzKCk6IE1hcDxzdHJpbmcsIGFueT4geyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG4gIGdldCBnZXR0ZXJzKCk6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPiB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IG1ldGhvZHMoKTogTWFwPHN0cmluZywgYW55PiB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IGNsYXp6KCk6IGFueSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cbn1cblxuZnVuY3Rpb24gaXNEeW5hbWljSW5zdGFuY2UoaW5zdGFuY2U6IGFueSk6IGFueSB7XG4gIGlmIChJU19EQVJUKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlIGluc3RhbmNlb2YgRHluYW1pY0luc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpc1ByZXNlbnQoaW5zdGFuY2UpICYmIGlzUHJlc2VudChpbnN0YW5jZS5wcm9wcykgJiYgaXNQcmVzZW50KGluc3RhbmNlLmdldHRlcnMpICYmXG4gICAgICAgICAgIGlzUHJlc2VudChpbnN0YW5jZS5tZXRob2RzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZXhlY3V0ZUZ1bmN0aW9uU3RhdGVtZW50cyh2YXJOYW1lczogc3RyaW5nW10sIHZhclZhbHVlczogYW55W10sIHN0YXRlbWVudHM6IG8uU3RhdGVtZW50W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHg6IF9FeGVjdXRpb25Db250ZXh0LCB2aXNpdG9yOiBTdGF0ZW1lbnRJbnRlcnByZXRlcik6IGFueSB7XG4gIHZhciBjaGlsZEN0eCA9IGN0eC5jcmVhdGVDaGlsZFdpaHRMb2NhbFZhcnMoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YXJOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIGNoaWxkQ3R4LnZhcnMuc2V0KHZhck5hbWVzW2ldLCB2YXJWYWx1ZXNbaV0pO1xuICB9XG4gIHZhciByZXN1bHQgPSB2aXNpdG9yLnZpc2l0QWxsU3RhdGVtZW50cyhzdGF0ZW1lbnRzLCBjaGlsZEN0eCk7XG4gIHJldHVybiBpc1ByZXNlbnQocmVzdWx0KSA/IHJlc3VsdC52YWx1ZSA6IG51bGw7XG59XG5cbmNsYXNzIF9FeGVjdXRpb25Db250ZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhcmVudDogX0V4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBzdXBlckNsYXNzOiBhbnksIHB1YmxpYyBzdXBlckluc3RhbmNlOiBhbnksXG4gICAgICAgICAgICAgIHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZywgcHVibGljIHZhcnM6IE1hcDxzdHJpbmcsIGFueT4sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm9wczogTWFwPHN0cmluZywgYW55PiwgcHVibGljIGdldHRlcnM6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPixcbiAgICAgICAgICAgICAgcHVibGljIG1ldGhvZHM6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPiwgcHVibGljIGluc3RhbmNlRmFjdG9yeTogSW5zdGFuY2VGYWN0b3J5KSB7fVxuXG4gIGNyZWF0ZUNoaWxkV2lodExvY2FsVmFycygpOiBfRXhlY3V0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIG5ldyBfRXhlY3V0aW9uQ29udGV4dCh0aGlzLCB0aGlzLnN1cGVyQ2xhc3MsIHRoaXMuc3VwZXJJbnN0YW5jZSwgdGhpcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PigpLCB0aGlzLnByb3BzLCB0aGlzLmdldHRlcnMsIHRoaXMubWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VGYWN0b3J5KTtcbiAgfVxufVxuXG5jbGFzcyBSZXR1cm5WYWx1ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogYW55KSB7fVxufVxuXG5jbGFzcyBfRHluYW1pY0NsYXNzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2xhc3NTdG10OiBvLkNsYXNzU3RtdCwgcHJpdmF0ZSBfY3R4OiBfRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlzaXRvcjogU3RhdGVtZW50SW50ZXJwcmV0ZXIpIHt9XG5cbiAgaW5zdGFudGlhdGUoYXJnczogYW55W10pOiBEeW5hbWljSW5zdGFuY2Uge1xuICAgIHZhciBwcm9wcyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgdmFyIGdldHRlcnMgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KCk7XG4gICAgdmFyIG1ldGhvZHMgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KCk7XG4gICAgdmFyIHN1cGVyQ2xhc3MgPSB0aGlzLl9jbGFzc1N0bXQucGFyZW50LnZpc2l0RXhwcmVzc2lvbih0aGlzLl92aXNpdG9yLCB0aGlzLl9jdHgpO1xuICAgIHZhciBpbnN0YW5jZUN0eCA9XG4gICAgICAgIG5ldyBfRXhlY3V0aW9uQ29udGV4dCh0aGlzLl9jdHgsIHN1cGVyQ2xhc3MsIG51bGwsIHRoaXMuX2NsYXNzU3RtdC5uYW1lLCB0aGlzLl9jdHgudmFycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLCBnZXR0ZXJzLCBtZXRob2RzLCB0aGlzLl9jdHguaW5zdGFuY2VGYWN0b3J5KTtcblxuICAgIHRoaXMuX2NsYXNzU3RtdC5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IG8uQ2xhc3NGaWVsZCkgPT4geyBwcm9wcy5zZXQoZmllbGQubmFtZSwgbnVsbCk7IH0pO1xuICAgIHRoaXMuX2NsYXNzU3RtdC5nZXR0ZXJzLmZvckVhY2goKGdldHRlcjogby5DbGFzc0dldHRlcikgPT4ge1xuICAgICAgZ2V0dGVycy5zZXQoZ2V0dGVyLm5hbWUsICgpID0+IF9leGVjdXRlRnVuY3Rpb25TdGF0ZW1lbnRzKFtdLCBbXSwgZ2V0dGVyLmJvZHksIGluc3RhbmNlQ3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Zpc2l0b3IpKTtcbiAgICB9KTtcbiAgICB0aGlzLl9jbGFzc1N0bXQubWV0aG9kcy5mb3JFYWNoKChtZXRob2Q6IG8uQ2xhc3NNZXRob2QpID0+IHtcbiAgICAgIHZhciBwYXJhbU5hbWVzID0gbWV0aG9kLnBhcmFtcy5tYXAocGFyYW0gPT4gcGFyYW0ubmFtZSk7XG4gICAgICBtZXRob2RzLnNldChtZXRob2QubmFtZSwgX2RlY2xhcmVGbihwYXJhbU5hbWVzLCBtZXRob2QuYm9keSwgaW5zdGFuY2VDdHgsIHRoaXMuX3Zpc2l0b3IpKTtcbiAgICB9KTtcblxuICAgIHZhciBjdG9yUGFyYW1OYW1lcyA9IHRoaXMuX2NsYXNzU3RtdC5jb25zdHJ1Y3Rvck1ldGhvZC5wYXJhbXMubWFwKHBhcmFtID0+IHBhcmFtLm5hbWUpO1xuICAgIF9leGVjdXRlRnVuY3Rpb25TdGF0ZW1lbnRzKGN0b3JQYXJhbU5hbWVzLCBhcmdzLCB0aGlzLl9jbGFzc1N0bXQuY29uc3RydWN0b3JNZXRob2QuYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUN0eCwgdGhpcy5fdmlzaXRvcik7XG4gICAgcmV0dXJuIGluc3RhbmNlQ3R4LnN1cGVySW5zdGFuY2U7XG4gIH1cblxuICBkZWJ1Z0FzdCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fdmlzaXRvci5kZWJ1Z0FzdCh0aGlzLl9jbGFzc1N0bXQpOyB9XG59XG5cbmNsYXNzIFN0YXRlbWVudEludGVycHJldGVyIGltcGxlbWVudHMgby5TdGF0ZW1lbnRWaXNpdG9yLCBvLkV4cHJlc3Npb25WaXNpdG9yIHtcbiAgZGVidWdBc3QoYXN0OiBvLkV4cHJlc3Npb24gfCBvLlN0YXRlbWVudCB8IG8uVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIElTX0RBUlQgPyBkZWJ1Z091dHB1dEFzdEFzRGFydChhc3QpIDogZGVidWdPdXRwdXRBc3RBc1R5cGVTY3JpcHQoYXN0KTtcbiAgfVxuXG4gIHZpc2l0RGVjbGFyZVZhclN0bXQoc3RtdDogby5EZWNsYXJlVmFyU3RtdCwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgY3R4LnZhcnMuc2V0KHN0bXQubmFtZSwgc3RtdC52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRXcml0ZVZhckV4cHIoZXhwcjogby5Xcml0ZVZhckV4cHIsIGN0eDogX0V4ZWN1dGlvbkNvbnRleHQpOiBhbnkge1xuICAgIHZhciB2YWx1ZSA9IGV4cHIudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgdmFyIGN1cnJDdHggPSBjdHg7XG4gICAgd2hpbGUgKGN1cnJDdHggIT0gbnVsbCkge1xuICAgICAgaWYgKGN1cnJDdHgudmFycy5oYXMoZXhwci5uYW1lKSkge1xuICAgICAgICBjdXJyQ3R4LnZhcnMuc2V0KGV4cHIubmFtZSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBjdXJyQ3R4ID0gY3VyckN0eC5wYXJlbnQ7XG4gICAgfVxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBOb3QgZGVjbGFyZWQgdmFyaWFibGUgJHtleHByLm5hbWV9YCk7XG4gIH1cbiAgdmlzaXRSZWFkVmFyRXhwcihhc3Q6IG8uUmVhZFZhckV4cHIsIGN0eDogX0V4ZWN1dGlvbkNvbnRleHQpOiBhbnkge1xuICAgIHZhciB2YXJOYW1lID0gYXN0Lm5hbWU7XG4gICAgaWYgKGlzUHJlc2VudChhc3QuYnVpbHRpbikpIHtcbiAgICAgIHN3aXRjaCAoYXN0LmJ1aWx0aW4pIHtcbiAgICAgICAgY2FzZSBvLkJ1aWx0aW5WYXIuU3VwZXI6XG4gICAgICAgIGNhc2Ugby5CdWlsdGluVmFyLlRoaXM6XG4gICAgICAgICAgcmV0dXJuIGN0eC5zdXBlckluc3RhbmNlO1xuICAgICAgICBjYXNlIG8uQnVpbHRpblZhci5DYXRjaEVycm9yOlxuICAgICAgICAgIHZhck5hbWUgPSBDQVRDSF9FUlJPUl9WQVI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugby5CdWlsdGluVmFyLkNhdGNoU3RhY2s6XG4gICAgICAgICAgdmFyTmFtZSA9IENBVENIX1NUQUNLX1ZBUjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVW5rbm93biBidWlsdGluIHZhcmlhYmxlICR7YXN0LmJ1aWx0aW59YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjdXJyQ3R4ID0gY3R4O1xuICAgIHdoaWxlIChjdXJyQ3R4ICE9IG51bGwpIHtcbiAgICAgIGlmIChjdXJyQ3R4LnZhcnMuaGFzKHZhck5hbWUpKSB7XG4gICAgICAgIHJldHVybiBjdXJyQ3R4LnZhcnMuZ2V0KHZhck5hbWUpO1xuICAgICAgfVxuICAgICAgY3VyckN0eCA9IGN1cnJDdHgucGFyZW50O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgTm90IGRlY2xhcmVkIHZhcmlhYmxlICR7dmFyTmFtZX1gKTtcbiAgfVxuICB2aXNpdFdyaXRlS2V5RXhwcihleHByOiBvLldyaXRlS2V5RXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIHJlY2VpdmVyID0gZXhwci5yZWNlaXZlci52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB2YXIgaW5kZXggPSBleHByLmluZGV4LnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIHZhciB2YWx1ZSA9IGV4cHIudmFsdWUudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgcmVjZWl2ZXJbaW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZpc2l0V3JpdGVQcm9wRXhwcihleHByOiBvLldyaXRlUHJvcEV4cHIsIGN0eDogX0V4ZWN1dGlvbkNvbnRleHQpOiBhbnkge1xuICAgIHZhciByZWNlaXZlciA9IGV4cHIucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgdmFyIHZhbHVlID0gZXhwci52YWx1ZS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICBpZiAoaXNEeW5hbWljSW5zdGFuY2UocmVjZWl2ZXIpKSB7XG4gICAgICB2YXIgZGkgPSA8RHluYW1pY0luc3RhbmNlPnJlY2VpdmVyO1xuICAgICAgaWYgKGRpLnByb3BzLmhhcyhleHByLm5hbWUpKSB7XG4gICAgICAgIGRpLnByb3BzLnNldChleHByLm5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZmxlY3Rvci5zZXR0ZXIoZXhwci5uYW1lKShyZWNlaXZlciwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWZsZWN0b3Iuc2V0dGVyKGV4cHIubmFtZSkocmVjZWl2ZXIsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdmlzaXRJbnZva2VNZXRob2RFeHByKGV4cHI6IG8uSW52b2tlTWV0aG9kRXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIHJlY2VpdmVyID0gZXhwci5yZWNlaXZlci52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB2YXIgYXJncyA9IHRoaXMudmlzaXRBbGxFeHByZXNzaW9ucyhleHByLmFyZ3MsIGN0eCk7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAoaXNQcmVzZW50KGV4cHIuYnVpbHRpbikpIHtcbiAgICAgIHN3aXRjaCAoZXhwci5idWlsdGluKSB7XG4gICAgICAgIGNhc2Ugby5CdWlsdGluTWV0aG9kLkNvbmNhdEFycmF5OlxuICAgICAgICAgIHJlc3VsdCA9IExpc3RXcmFwcGVyLmNvbmNhdChyZWNlaXZlciwgYXJnc1swXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugby5CdWlsdGluTWV0aG9kLlN1YnNjcmliZU9ic2VydmFibGU6XG4gICAgICAgICAgcmVzdWx0ID0gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHJlY2VpdmVyLCBhcmdzWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvLkJ1aWx0aW5NZXRob2QuYmluZDpcbiAgICAgICAgICBpZiAoSVNfREFSVCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVjZWl2ZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlY2VpdmVyLmJpbmQoYXJnc1swXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbmtub3duIGJ1aWx0aW4gbWV0aG9kICR7ZXhwci5idWlsdGlufWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNEeW5hbWljSW5zdGFuY2UocmVjZWl2ZXIpKSB7XG4gICAgICB2YXIgZGkgPSA8RHluYW1pY0luc3RhbmNlPnJlY2VpdmVyO1xuICAgICAgaWYgKGRpLm1ldGhvZHMuaGFzKGV4cHIubmFtZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gRnVuY3Rpb25XcmFwcGVyLmFwcGx5KGRpLm1ldGhvZHMuZ2V0KGV4cHIubmFtZSksIGFyZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gcmVmbGVjdG9yLm1ldGhvZChleHByLm5hbWUpKHJlY2VpdmVyLCBhcmdzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gcmVmbGVjdG9yLm1ldGhvZChleHByLm5hbWUpKHJlY2VpdmVyLCBhcmdzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB2aXNpdEludm9rZUZ1bmN0aW9uRXhwcihzdG10OiBvLkludm9rZUZ1bmN0aW9uRXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLnZpc2l0QWxsRXhwcmVzc2lvbnMoc3RtdC5hcmdzLCBjdHgpO1xuICAgIHZhciBmbkV4cHIgPSBzdG10LmZuO1xuICAgIGlmIChmbkV4cHIgaW5zdGFuY2VvZiBvLlJlYWRWYXJFeHByICYmIGZuRXhwci5idWlsdGluID09PSBvLkJ1aWx0aW5WYXIuU3VwZXIpIHtcbiAgICAgIGN0eC5zdXBlckluc3RhbmNlID0gY3R4Lmluc3RhbmNlRmFjdG9yeS5jcmVhdGVJbnN0YW5jZShjdHguc3VwZXJDbGFzcywgY3R4LmNsYXNzTmFtZSwgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgucHJvcHMsIGN0eC5nZXR0ZXJzLCBjdHgubWV0aG9kcyk7XG4gICAgICBjdHgucGFyZW50LnN1cGVySW5zdGFuY2UgPSBjdHguc3VwZXJJbnN0YW5jZTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZm4gPSBzdG10LmZuLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgICAgcmV0dXJuIEZ1bmN0aW9uV3JhcHBlci5hcHBseShmbiwgYXJncyk7XG4gICAgfVxuICB9XG4gIHZpc2l0UmV0dXJuU3RtdChzdG10OiBvLlJldHVyblN0YXRlbWVudCwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBSZXR1cm5WYWx1ZShzdG10LnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpKTtcbiAgfVxuICB2aXNpdERlY2xhcmVDbGFzc1N0bXQoc3RtdDogby5DbGFzc1N0bXQsIGN0eDogX0V4ZWN1dGlvbkNvbnRleHQpOiBhbnkge1xuICAgIHZhciBjbGF6eiA9IG5ldyBfRHluYW1pY0NsYXNzKHN0bXQsIGN0eCwgdGhpcyk7XG4gICAgY3R4LnZhcnMuc2V0KHN0bXQubmFtZSwgY2xhenopO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RXhwcmVzc2lvblN0bXQoc3RtdDogby5FeHByZXNzaW9uU3RhdGVtZW50LCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICByZXR1cm4gc3RtdC5leHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICB9XG4gIHZpc2l0SWZTdG10KHN0bXQ6IG8uSWZTdG10LCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICB2YXIgY29uZGl0aW9uID0gc3RtdC5jb25kaXRpb24udmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQudHJ1ZUNhc2UsIGN0eCk7XG4gICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoc3RtdC5mYWxzZUNhc2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy52aXNpdEFsbFN0YXRlbWVudHMoc3RtdC5mYWxzZUNhc2UsIGN0eCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0VHJ5Q2F0Y2hTdG10KHN0bXQ6IG8uVHJ5Q2F0Y2hTdG10LCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQuYm9keVN0bXRzLCBjdHgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciBjaGlsZEN0eCA9IGN0eC5jcmVhdGVDaGlsZFdpaHRMb2NhbFZhcnMoKTtcbiAgICAgIGNoaWxkQ3R4LnZhcnMuc2V0KENBVENIX0VSUk9SX1ZBUiwgZSk7XG4gICAgICBjaGlsZEN0eC52YXJzLnNldChDQVRDSF9TVEFDS19WQVIsIGUuc3RhY2spO1xuICAgICAgcmV0dXJuIHRoaXMudmlzaXRBbGxTdGF0ZW1lbnRzKHN0bXQuY2F0Y2hTdG10cywgY2hpbGRDdHgpO1xuICAgIH1cbiAgfVxuICB2aXNpdFRocm93U3RtdChzdG10OiBvLlRocm93U3RtdCwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgdGhyb3cgc3RtdC5lcnJvci52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgfVxuICB2aXNpdENvbW1lbnRTdG10KHN0bXQ6IG8uQ29tbWVudFN0bXQsIGNvbnRleHQ/OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEluc3RhbnRpYXRlRXhwcihhc3Q6IG8uSW5zdGFudGlhdGVFeHByLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICB2YXIgYXJncyA9IHRoaXMudmlzaXRBbGxFeHByZXNzaW9ucyhhc3QuYXJncywgY3R4KTtcbiAgICB2YXIgY2xhenogPSBhc3QuY2xhc3NFeHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICAgIGlmIChjbGF6eiBpbnN0YW5jZW9mIF9EeW5hbWljQ2xhc3MpIHtcbiAgICAgIHJldHVybiBjbGF6ei5pbnN0YW50aWF0ZShhcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEZ1bmN0aW9uV3JhcHBlci5hcHBseShyZWZsZWN0b3IuZmFjdG9yeShjbGF6eiksIGFyZ3MpO1xuICAgIH1cbiAgfVxuICB2aXNpdExpdGVyYWxFeHByKGFzdDogby5MaXRlcmFsRXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7IHJldHVybiBhc3QudmFsdWU7IH1cbiAgdmlzaXRFeHRlcm5hbEV4cHIoYXN0OiBvLkV4dGVybmFsRXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7IHJldHVybiBhc3QudmFsdWUucnVudGltZTsgfVxuICB2aXNpdENvbmRpdGlvbmFsRXhwcihhc3Q6IG8uQ29uZGl0aW9uYWxFeHByLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICBpZiAoYXN0LmNvbmRpdGlvbi52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KSkge1xuICAgICAgcmV0dXJuIGFzdC50cnVlQ2FzZS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChhc3QuZmFsc2VDYXNlKSkge1xuICAgICAgcmV0dXJuIGFzdC5mYWxzZUNhc2UudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0Tm90RXhwcihhc3Q6IG8uTm90RXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgcmV0dXJuICFhc3QuY29uZGl0aW9uLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICB9XG4gIHZpc2l0Q2FzdEV4cHIoYXN0OiBvLkNhc3RFeHByLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICByZXR1cm4gYXN0LnZhbHVlLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpO1xuICB9XG4gIHZpc2l0RnVuY3Rpb25FeHByKGFzdDogby5GdW5jdGlvbkV4cHIsIGN0eDogX0V4ZWN1dGlvbkNvbnRleHQpOiBhbnkge1xuICAgIHZhciBwYXJhbU5hbWVzID0gYXN0LnBhcmFtcy5tYXAoKHBhcmFtKSA9PiBwYXJhbS5uYW1lKTtcbiAgICByZXR1cm4gX2RlY2xhcmVGbihwYXJhbU5hbWVzLCBhc3Quc3RhdGVtZW50cywgY3R4LCB0aGlzKTtcbiAgfVxuICB2aXNpdERlY2xhcmVGdW5jdGlvblN0bXQoc3RtdDogby5EZWNsYXJlRnVuY3Rpb25TdG10LCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICB2YXIgcGFyYW1OYW1lcyA9IHN0bXQucGFyYW1zLm1hcCgocGFyYW0pID0+IHBhcmFtLm5hbWUpO1xuICAgIGN0eC52YXJzLnNldChzdG10Lm5hbWUsIF9kZWNsYXJlRm4ocGFyYW1OYW1lcywgc3RtdC5zdGF0ZW1lbnRzLCBjdHgsIHRoaXMpKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEJpbmFyeU9wZXJhdG9yRXhwcihhc3Q6IG8uQmluYXJ5T3BlcmF0b3JFeHByLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICB2YXIgbGhzID0gKCkgPT4gYXN0Lmxocy52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcbiAgICB2YXIgcmhzID0gKCkgPT4gYXN0LnJocy52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KTtcblxuICAgIHN3aXRjaCAoYXN0Lm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuRXF1YWxzOlxuICAgICAgICByZXR1cm4gbGhzKCkgPT0gcmhzKCk7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsOlxuICAgICAgICByZXR1cm4gbGhzKCkgPT09IHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLk5vdEVxdWFsczpcbiAgICAgICAgcmV0dXJuIGxocygpICE9IHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLk5vdElkZW50aWNhbDpcbiAgICAgICAgcmV0dXJuIGxocygpICE9PSByaHMoKTtcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5BbmQ6XG4gICAgICAgIHJldHVybiBsaHMoKSAmJiByaHMoKTtcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5PcjpcbiAgICAgICAgcmV0dXJuIGxocygpIHx8IHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLlBsdXM6XG4gICAgICAgIHJldHVybiBsaHMoKSArIHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLk1pbnVzOlxuICAgICAgICByZXR1cm4gbGhzKCkgLSByaHMoKTtcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5EaXZpZGU6XG4gICAgICAgIHJldHVybiBsaHMoKSAvIHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLk11bHRpcGx5OlxuICAgICAgICByZXR1cm4gbGhzKCkgKiByaHMoKTtcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5Nb2R1bG86XG4gICAgICAgIHJldHVybiBsaHMoKSAlIHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLkxvd2VyOlxuICAgICAgICByZXR1cm4gbGhzKCkgPCByaHMoKTtcbiAgICAgIGNhc2Ugby5CaW5hcnlPcGVyYXRvci5Mb3dlckVxdWFsczpcbiAgICAgICAgcmV0dXJuIGxocygpIDw9IHJocygpO1xuICAgICAgY2FzZSBvLkJpbmFyeU9wZXJhdG9yLkJpZ2dlcjpcbiAgICAgICAgcmV0dXJuIGxocygpID4gcmhzKCk7XG4gICAgICBjYXNlIG8uQmluYXJ5T3BlcmF0b3IuQmlnZ2VyRXF1YWxzOlxuICAgICAgICByZXR1cm4gbGhzKCkgPj0gcmhzKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVW5rbm93biBvcGVyYXRvciAke2FzdC5vcGVyYXRvcn1gKTtcbiAgICB9XG4gIH1cbiAgdmlzaXRSZWFkUHJvcEV4cHIoYXN0OiBvLlJlYWRQcm9wRXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICB2YXIgcmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgaWYgKGlzRHluYW1pY0luc3RhbmNlKHJlY2VpdmVyKSkge1xuICAgICAgdmFyIGRpID0gPER5bmFtaWNJbnN0YW5jZT5yZWNlaXZlcjtcbiAgICAgIGlmIChkaS5wcm9wcy5oYXMoYXN0Lm5hbWUpKSB7XG4gICAgICAgIHJlc3VsdCA9IGRpLnByb3BzLmdldChhc3QubmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGRpLmdldHRlcnMuaGFzKGFzdC5uYW1lKSkge1xuICAgICAgICByZXN1bHQgPSBkaS5nZXR0ZXJzLmdldChhc3QubmFtZSkoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGkubWV0aG9kcy5oYXMoYXN0Lm5hbWUpKSB7XG4gICAgICAgIHJlc3VsdCA9IGRpLm1ldGhvZHMuZ2V0KGFzdC5uYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHJlZmxlY3Rvci5nZXR0ZXIoYXN0Lm5hbWUpKHJlY2VpdmVyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gcmVmbGVjdG9yLmdldHRlcihhc3QubmFtZSkocmVjZWl2ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZpc2l0UmVhZEtleUV4cHIoYXN0OiBvLlJlYWRLZXlFeHByLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICB2YXIgcmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgdmFyIHByb3AgPSBhc3QuaW5kZXgudmlzaXRFeHByZXNzaW9uKHRoaXMsIGN0eCk7XG4gICAgcmV0dXJuIHJlY2VpdmVyW3Byb3BdO1xuICB9XG4gIHZpc2l0TGl0ZXJhbEFycmF5RXhwcihhc3Q6IG8uTGl0ZXJhbEFycmF5RXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaXRBbGxFeHByZXNzaW9ucyhhc3QuZW50cmllcywgY3R4KTtcbiAgfVxuICB2aXNpdExpdGVyYWxNYXBFeHByKGFzdDogby5MaXRlcmFsTWFwRXhwciwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCk6IGFueSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGFzdC5lbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiByZXN1bHRbPHN0cmluZz5lbnRyeVswXV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8by5FeHByZXNzaW9uPmVudHJ5WzFdKS52aXNpdEV4cHJlc3Npb24odGhpcywgY3R4KSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZpc2l0QWxsRXhwcmVzc2lvbnMoZXhwcmVzc2lvbnM6IG8uRXhwcmVzc2lvbltdLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogYW55IHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbnMubWFwKChleHByKSA9PiBleHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjdHgpKTtcbiAgfVxuXG4gIHZpc2l0QWxsU3RhdGVtZW50cyhzdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdLCBjdHg6IF9FeGVjdXRpb25Db250ZXh0KTogUmV0dXJuVmFsdWUge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHN0bXQgPSBzdGF0ZW1lbnRzW2ldO1xuICAgICAgdmFyIHZhbCA9IHN0bXQudmlzaXRTdGF0ZW1lbnQodGhpcywgY3R4KTtcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBSZXR1cm5WYWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVjbGFyZUZuKHZhck5hbWVzOiBzdHJpbmdbXSwgc3RhdGVtZW50czogby5TdGF0ZW1lbnRbXSwgY3R4OiBfRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaXRvcjogU3RhdGVtZW50SW50ZXJwcmV0ZXIpOiBGdW5jdGlvbiB7XG4gIHN3aXRjaCAodmFyTmFtZXMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuICgpID0+IF9leGVjdXRlRnVuY3Rpb25TdGF0ZW1lbnRzKHZhck5hbWVzLCBbXSwgc3RhdGVtZW50cywgY3R4LCB2aXNpdG9yKTtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gKGQwKSA9PiBfZXhlY3V0ZUZ1bmN0aW9uU3RhdGVtZW50cyh2YXJOYW1lcywgW2QwXSwgc3RhdGVtZW50cywgY3R4LCB2aXNpdG9yKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gKGQwLCBkMSkgPT4gX2V4ZWN1dGVGdW5jdGlvblN0YXRlbWVudHModmFyTmFtZXMsIFtkMCwgZDFdLCBzdGF0ZW1lbnRzLCBjdHgsIHZpc2l0b3IpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiAoZDAsIGQxLCBkMikgPT5cbiAgICAgICAgICAgICAgICAgX2V4ZWN1dGVGdW5jdGlvblN0YXRlbWVudHModmFyTmFtZXMsIFtkMCwgZDEsIGQyXSwgc3RhdGVtZW50cywgY3R4LCB2aXNpdG9yKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gKGQwLCBkMSwgZDIsIGQzKSA9PlxuICAgICAgICAgICAgICAgICBfZXhlY3V0ZUZ1bmN0aW9uU3RhdGVtZW50cyh2YXJOYW1lcywgW2QwLCBkMSwgZDIsIGQzXSwgc3RhdGVtZW50cywgY3R4LCB2aXNpdG9yKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gKGQwLCBkMSwgZDIsIGQzLCBkNCkgPT4gX2V4ZWN1dGVGdW5jdGlvblN0YXRlbWVudHModmFyTmFtZXMsIFtkMCwgZDEsIGQyLCBkMywgZDRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMsIGN0eCwgdmlzaXRvcik7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIChkMCwgZDEsIGQyLCBkMywgZDQsIGQ1KSA9PiBfZXhlY3V0ZUZ1bmN0aW9uU3RhdGVtZW50cyhcbiAgICAgICAgICAgICAgICAgdmFyTmFtZXMsIFtkMCwgZDEsIGQyLCBkMywgZDQsIGQ1XSwgc3RhdGVtZW50cywgY3R4LCB2aXNpdG9yKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gKGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2KSA9PiBfZXhlY3V0ZUZ1bmN0aW9uU3RhdGVtZW50cyhcbiAgICAgICAgICAgICAgICAgdmFyTmFtZXMsIFtkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNl0sIHN0YXRlbWVudHMsIGN0eCwgdmlzaXRvcik7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIChkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcpID0+IF9leGVjdXRlRnVuY3Rpb25TdGF0ZW1lbnRzKFxuICAgICAgICAgICAgICAgICB2YXJOYW1lcywgW2QwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkN10sIHN0YXRlbWVudHMsIGN0eCwgdmlzaXRvcik7XG4gICAgY2FzZSA5OlxuICAgICAgcmV0dXJuIChkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4KSA9PiBfZXhlY3V0ZUZ1bmN0aW9uU3RhdGVtZW50cyhcbiAgICAgICAgICAgICAgICAgdmFyTmFtZXMsIFtkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4XSwgc3RhdGVtZW50cywgY3R4LCB2aXNpdG9yKTtcbiAgICBjYXNlIDEwOlxuICAgICAgcmV0dXJuIChkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4LCBkOSkgPT4gX2V4ZWN1dGVGdW5jdGlvblN0YXRlbWVudHMoXG4gICAgICAgICAgICAgICAgIHZhck5hbWVzLCBbZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDldLCBzdGF0ZW1lbnRzLCBjdHgsIHZpc2l0b3IpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICAnRGVjbGFyaW5nIGZ1bmN0aW9ucyB3aXRoIG1vcmUgdGhhbiAxMCBhcmd1bWVudHMgaXMgbm90IHN1cHBvcnRlZCByaWdodCBub3cnKTtcbiAgfVxufVxuXG52YXIgQ0FUQ0hfRVJST1JfVkFSID0gJ2Vycm9yJztcbnZhciBDQVRDSF9TVEFDS19WQVIgPSAnc3RhY2snOyJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar view_type_1 = require('./view_type');\r\nvar StaticNodeDebugInfo = (function () {\r\n function StaticNodeDebugInfo(providerTokens, componentToken, refTokens) {\r\n this.providerTokens = providerTokens;\r\n this.componentToken = componentToken;\r\n this.refTokens = refTokens;\r\n }\r\n StaticNodeDebugInfo = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Array, Object, Object])\r\n ], StaticNodeDebugInfo);\r\n return StaticNodeDebugInfo;\r\n}());\r\nexports.StaticNodeDebugInfo = StaticNodeDebugInfo;\r\nvar DebugContext = (function () {\r\n function DebugContext(_view, _nodeIndex, _tplRow, _tplCol) {\r\n this._view = _view;\r\n this._nodeIndex = _nodeIndex;\r\n this._tplRow = _tplRow;\r\n this._tplCol = _tplCol;\r\n }\r\n Object.defineProperty(DebugContext.prototype, \"_staticNodeInfo\", {\r\n get: function () {\r\n return lang_1.isPresent(this._nodeIndex) ? this._view.staticNodeDebugInfos[this._nodeIndex] : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"context\", {\r\n get: function () { return this._view.context; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"component\", {\r\n get: function () {\r\n var staticNodeInfo = this._staticNodeInfo;\r\n if (lang_1.isPresent(staticNodeInfo) && lang_1.isPresent(staticNodeInfo.componentToken)) {\r\n return this.injector.get(staticNodeInfo.componentToken);\r\n }\r\n return null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"componentRenderElement\", {\r\n get: function () {\r\n var componentView = this._view;\r\n while (lang_1.isPresent(componentView.declarationAppElement) &&\r\n componentView.type !== view_type_1.ViewType.COMPONENT) {\r\n componentView = componentView.declarationAppElement.parentView;\r\n }\r\n return lang_1.isPresent(componentView.declarationAppElement) ?\r\n componentView.declarationAppElement.nativeElement :\r\n null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"injector\", {\r\n get: function () { return this._view.injector(this._nodeIndex); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"renderNode\", {\r\n get: function () {\r\n if (lang_1.isPresent(this._nodeIndex) && lang_1.isPresent(this._view.allNodes)) {\r\n return this._view.allNodes[this._nodeIndex];\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"providerTokens\", {\r\n get: function () {\r\n var staticNodeInfo = this._staticNodeInfo;\r\n return lang_1.isPresent(staticNodeInfo) ? staticNodeInfo.providerTokens : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"source\", {\r\n get: function () {\r\n return this._view.componentType.templateUrl + \":\" + this._tplRow + \":\" + this._tplCol;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugContext.prototype, \"locals\", {\r\n get: function () {\r\n var _this = this;\r\n var varValues = {};\r\n // TODO(tbosch): right now, the semantics of debugNode.locals are\r\n // that it contains the variables of all elements, not just\r\n // the given one. We preserve this for now to not have a breaking\r\n // change, but should change this later!\r\n collection_1.ListWrapper.forEachWithIndex(this._view.staticNodeDebugInfos, function (staticNodeInfo, nodeIndex) {\r\n var refs = staticNodeInfo.refTokens;\r\n collection_1.StringMapWrapper.forEach(refs, function (refToken, refName) {\r\n var varValue;\r\n if (lang_1.isBlank(refToken)) {\r\n varValue = lang_1.isPresent(_this._view.allNodes) ? _this._view.allNodes[nodeIndex] : null;\r\n }\r\n else {\r\n varValue = _this._view.injectorGet(refToken, nodeIndex, null);\r\n }\r\n varValues[refName] = varValue;\r\n });\r\n });\r\n collection_1.StringMapWrapper.forEach(this._view.locals, function (localValue, localName) { varValues[localName] = localValue; });\r\n return varValues;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DebugContext;\r\n}());\r\nexports.DebugContext = DebugContext;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdfY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9kZWJ1Z19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBd0MsMEJBQTBCLENBQUMsQ0FBQTtBQUNuRSwyQkFBNEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUk3RSwwQkFBdUIsYUFBYSxDQUFDLENBQUE7QUFHckM7SUFDRSw2QkFBbUIsY0FBcUIsRUFBUyxjQUFtQixFQUNqRCxTQUErQjtRQUQvQixtQkFBYyxHQUFkLGNBQWMsQ0FBTztRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFLO1FBQ2pELGNBQVMsR0FBVCxTQUFTLENBQXNCO0lBQUcsQ0FBQztJQUh4RDtRQUFDLFlBQUssRUFBRTs7MkJBQUE7SUFJUiwwQkFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksMkJBQW1CLHNCQUcvQixDQUFBO0FBRUQ7SUFDRSxzQkFBb0IsS0FBbUIsRUFBVSxVQUFrQixFQUFVLE9BQWUsRUFDeEUsT0FBZTtRQURmLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUN4RSxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQztJQUV2QyxzQkFBWSx5Q0FBZTthQUEzQjtZQUNFLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUYsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxpQ0FBTzthQUFYLGNBQWdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENB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QUMsR0FBRyxJQUFJLENBQUM7b0JBQ3BGLENBQUM7b0JBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ04sUUFBUSxHQUFHLEtBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQy9ELENBQUM7b0JBQ0QsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLDZCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFDakIsVUFBQyxVQUFVLEVBQUUsU0FBUyxJQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RixNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25CLENBQUM7OztPQUFBO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBakVELElBaUVDO0FBakVZLG9CQUFZLGVBaUV4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIENPTlNUfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7UmVuZGVyRGVidWdJbmZvfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZW5kZXIvYXBpJztcbmltcG9ydCB7QXBwVmlld30gZnJvbSAnLi92aWV3JztcbmltcG9ydCB7Vmlld1R5cGV9IGZyb20gJy4vdmlld190eXBlJztcblxuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBTdGF0aWNOb2RlRGVidWdJbmZvIHtcbiAgY29uc3RydWN0b3IocHVibGljIHByb3ZpZGVyVG9rZW5zOiBhbnlbXSwgcHVibGljIGNvbXBvbmVudFRva2VuOiBhbnksXG4gICAgICAgICAgICAgIHB1YmxpYyByZWZUb2tlbnM6IHtba2V5OiBzdHJpbmddOiBhbnl9KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgRGVidWdDb250ZXh0IGltcGxlbWVudHMgUmVuZGVyRGVidWdJbmZvIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlldzogQXBwVmlldzxhbnk+LCBwcml2YXRlIF9ub2RlSW5kZXg6IG51bWJlciwgcHJpdmF0ZSBfdHBsUm93OiBudW1iZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RwbENvbDogbnVtYmVyKSB7fVxuXG4gIHByaXZhdGUgZ2V0IF9zdGF0aWNOb2RlSW5mbygpOiBTdGF0aWNOb2RlRGVidWdJbmZvIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX25vZGVJbmRleCkgPyB0aGlzLl92aWV3LnN0YXRpY05vZGVEZWJ1Z0luZm9zW3RoaXMuX25vZGVJbmRleF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbnRleHQoKSB7IHJldHVybiB0aGlzLl92aWV3LmNvbnRleHQ7IH1cbiAgZ2V0IGNvbXBvbmVudCgpIHtcbiAgICB2YXIgc3RhdGljTm9kZUluZm8gPSB0aGlzLl9zdGF0aWNOb2RlSW5mbztcbiAgICBpZiAoaXNQcmVzZW50KHN0YXRpY05vZGVJbmZvKSAmJiBpc1ByZXNlbnQoc3RhdGljTm9kZUluZm8uY29tcG9uZW50VG9rZW4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoc3RhdGljTm9kZUluZm8uY29tcG9uZW50VG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXQgY29tcG9uZW50UmVuZGVyRWxlbWVudCgpIHtcbiAgICB2YXIgY29tcG9uZW50VmlldyA9IHRoaXMuX3ZpZXc7XG4gICAgd2hpbGUgKGlzUHJlc2VudChjb21wb25lbnRWaWV3LmRlY2xhcmF0aW9uQXBwRWxlbWVudCkgJiZcbiAgICAgICAgICAgY29tcG9uZW50Vmlldy50eXBlICE9PSBWaWV3VHlwZS5DT01QT05FTlQpIHtcbiAgICAgIGNvbXBvbmVudFZpZXcgPSBjb21wb25lbnRWaWV3LmRlY2xhcmF0aW9uQXBwRWxlbWVudC5wYXJlbnRWaWV3O1xuICAgIH1cbiAgICByZXR1cm4gaXNQcmVzZW50KGNvbXBvbmVudFZpZXcuZGVjbGFyYXRpb25BcHBFbGVtZW50KSA/XG4gICAgICAgICAgICAgICBjb21wb25lbnRWaWV3LmRlY2xhcmF0aW9uQXBwRWxlbWVudC5uYXRpdmVFbGVtZW50IDpcbiAgICAgICAgICAgICAgIG51bGw7XG4gIH1cbiAgZ2V0IGluamVjdG9yKCk6IEluamVjdG9yIHsgcmV0dXJuIHRoaXMuX3ZpZXcuaW5qZWN0b3IodGhpcy5fbm9kZUluZGV4KTsgfVxuICBnZXQgcmVuZGVyTm9kZSgpOiBhbnkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fbm9kZUluZGV4KSAmJiBpc1ByZXNlbnQodGhpcy5fdmlldy5hbGxOb2RlcykpIHtcbiAgICAgIHJldHVybiB0aGlzLl92aWV3LmFsbE5vZGVzW3RoaXMuX25vZGVJbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICBnZXQgcHJvdmlkZXJUb2tlbnMoKTogYW55W10ge1xuICAgIHZhciBzdGF0aWNOb2RlSW5mbyA9IHRoaXMuX3N0YXRpY05vZGVJbmZvO1xuICAgIHJldHVybiBpc1ByZXNlbnQoc3RhdGljTm9kZUluZm8pID8gc3RhdGljTm9kZUluZm8ucHJvdmlkZXJUb2tlbnMgOiBudWxsO1xuICB9XG4gIGdldCBzb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fdmlldy5jb21wb25lbnRUeXBlLnRlbXBsYXRlVXJsfToke3RoaXMuX3RwbFJvd306JHt0aGlzLl90cGxDb2x9YDtcbiAgfVxuICBnZXQgbG9jYWxzKCk6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9IHtcbiAgICB2YXIgdmFyVmFsdWVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICAgIC8vIFRPRE8odGJvc2NoKTogcmlnaHQgbm93LCB0aGUgc2VtYW50aWNzIG9mIGRlYnVnTm9kZS5sb2NhbHMgYXJlXG4gICAgLy8gdGhhdCBpdCBjb250YWlucyB0aGUgdmFyaWFibGVzIG9mIGFsbCBlbGVtZW50cywgbm90IGp1c3RcbiAgICAvLyB0aGUgZ2l2ZW4gb25lLiBXZSBwcmVzZXJ2ZSB0aGlzIGZvciBub3cgdG8gbm90IGhhdmUgYSBicmVha2luZ1xuICAgIC8vIGNoYW5nZSwgYnV0IHNob3VsZCBjaGFuZ2UgdGhpcyBsYXRlciFcbiAgICBMaXN0V3JhcHBlci5mb3JFYWNoV2l0aEluZGV4KFxuICAgICAgICB0aGlzLl92aWV3LnN0YXRpY05vZGVEZWJ1Z0luZm9zLFxuICAgICAgICAoc3RhdGljTm9kZUluZm86IFN0YXRpY05vZGVEZWJ1Z0luZm8sIG5vZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdmFyIHJlZnMgPSBzdGF0aWNOb2RlSW5mby5yZWZUb2tlbnM7XG4gICAgICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKHJlZnMsIChyZWZUb2tlbiwgcmVmTmFtZSkgPT4ge1xuICAgICAgICAgICAgdmFyIHZhclZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzQmxhbmsocmVmVG9rZW4pKSB7XG4gICAgICAgICAgICAgIHZhclZhbHVlID0gaXNQcmVzZW50KHRoaXMuX3ZpZXcuYWxsTm9kZXMpID8gdGhpcy5fdmlldy5hbGxOb2Rlc1tub2RlSW5kZXhdIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhclZhbHVlID0gdGhpcy5fdmlldy5pbmplY3RvckdldChyZWZUb2tlbiwgbm9kZUluZGV4LCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhclZhbHVlc1tyZWZOYW1lXSA9IHZhclZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2godGhpcy5fdmlldy5sb2NhbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhbFZhbHVlLCBsb2NhbE5hbWUpID0+IHsgdmFyVmFsdWVzW2xvY2FsTmFtZV0gPSBsb2NhbFZhbHVlOyB9KTtcbiAgICByZXR1cm4gdmFyVmFsdWVzO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar injector_1 = require('angular2/src/core/di/injector');\r\nvar _UNDEFINED = lang_1.CONST_EXPR(new Object());\r\nvar ElementInjector = (function (_super) {\r\n __extends(ElementInjector, _super);\r\n function ElementInjector(_view, _nodeIndex) {\r\n _super.call(this);\r\n this._view = _view;\r\n this._nodeIndex = _nodeIndex;\r\n }\r\n ElementInjector.prototype.get = function (token, notFoundValue) {\r\n if (notFoundValue === void 0) { notFoundValue = injector_1.THROW_IF_NOT_FOUND; }\r\n var result = _UNDEFINED;\r\n if (result === _UNDEFINED) {\r\n result = this._view.injectorGet(token, this._nodeIndex, _UNDEFINED);\r\n }\r\n if (result === _UNDEFINED) {\r\n result = this._view.parentInjector.get(token, notFoundValue);\r\n }\r\n return result;\r\n };\r\n return ElementInjector;\r\n}(injector_1.Injector));\r\nexports.ElementInjector = ElementInjector;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9pbmplY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50X2luamVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFCQUE2QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ3hFLHlCQUEyQywrQkFBK0IsQ0FBQyxDQUFBO0FBRzNFLElBQU0sVUFBVSxHQUFHLGlCQUFVLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTVDO0lBQXFDLG1DQUFRO0lBQzNDLHlCQUFvQixLQUFtQixFQUFVLFVBQWtCO1FBQUksaUJBQU8sQ0FBQztRQUEzRCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtJQUFhLENBQUM7SUFFakYsNkJBQUcsR0FBSCxVQUFJLEtBQVUsRUFBRSxhQUF1QztRQUF2Qyw2QkFBdUMsR0FBdkMsNkNBQXVDO1FBQ3JELElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN4QixFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFiRCxDQUFxQyxtQkFBUSxHQWE1QztBQWJZLHVCQUFlLGtCQWEzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBzdHJpbmdpZnksIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0luamVjdG9yLCBUSFJPV19JRl9OT1RfRk9VTkR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL2luamVjdG9yJztcbmltcG9ydCB7QXBwVmlld30gZnJvbSAnLi92aWV3JztcblxuY29uc3QgX1VOREVGSU5FRCA9IENPTlNUX0VYUFIobmV3IE9iamVjdCgpKTtcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRJbmplY3RvciBleHRlbmRzIEluamVjdG9yIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlldzogQXBwVmlldzxhbnk+LCBwcml2YXRlIF9ub2RlSW5kZXg6IG51bWJlcikgeyBzdXBlcigpOyB9XG5cbiAgZ2V0KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU6IGFueSA9IFRIUk9XX0lGX05PVF9GT1VORCk6IGFueSB7XG4gICAgdmFyIHJlc3VsdCA9IF9VTkRFRklORUQ7XG4gICAgaWYgKHJlc3VsdCA9PT0gX1VOREVGSU5FRCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fdmlldy5pbmplY3RvckdldCh0b2tlbiwgdGhpcy5fbm9kZUluZGV4LCBfVU5ERUZJTkVEKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCA9PT0gX1VOREVGSU5FRCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fdmlldy5wYXJlbnRJbmplY3Rvci5nZXQodG9rZW4sIG5vdEZvdW5kVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar element_1 = require('./element');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar view_ref_1 = require('./view_ref');\r\nvar view_type_1 = require('./view_type');\r\nvar view_utils_1 = require('./view_utils');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar profile_1 = require('../profile/profile');\r\nvar exceptions_1 = require('./exceptions');\r\nvar debug_context_1 = require('./debug_context');\r\nvar element_injector_1 = require('./element_injector');\r\nvar EMPTY_CONTEXT = lang_1.CONST_EXPR(new Object());\r\nvar _scope_check = profile_1.wtfCreateScope(\"AppView#check(ascii id)\");\r\n/**\r\n * Cost of making objects: http://jsperf.com/instantiate-size-of-object\r\n *\r\n */\r\nvar AppView = (function () {\r\n function AppView(clazz, componentType, type, locals, viewUtils, parentInjector, declarationAppElement, cdMode, staticNodeDebugInfos) {\r\n this.clazz = clazz;\r\n this.componentType = componentType;\r\n this.type = type;\r\n this.locals = locals;\r\n this.viewUtils = viewUtils;\r\n this.parentInjector = parentInjector;\r\n this.declarationAppElement = declarationAppElement;\r\n this.cdMode = cdMode;\r\n this.staticNodeDebugInfos = staticNodeDebugInfos;\r\n this.contentChildren = [];\r\n this.viewChildren = [];\r\n this.viewContainerElement = null;\r\n // The names of the below fields must be kept in sync with codegen_name_util.ts or\r\n // change detection will fail.\r\n this.cdState = change_detection_1.ChangeDetectorState.NeverChecked;\r\n /**\r\n * The context against which data-binding expressions in this view are evaluated against.\r\n * This is always a component instance.\r\n */\r\n this.context = null;\r\n this.destroyed = false;\r\n this._currentDebugContext = null;\r\n this.ref = new view_ref_1.ViewRef_(this);\r\n if (type === view_type_1.ViewType.COMPONENT || type === view_type_1.ViewType.HOST) {\r\n this.renderer = viewUtils.renderComponent(componentType);\r\n }\r\n else {\r\n this.renderer = declarationAppElement.parentView.renderer;\r\n }\r\n }\r\n AppView.prototype.create = function (givenProjectableNodes, rootSelectorOrNode) {\r\n var context;\r\n var projectableNodes;\r\n switch (this.type) {\r\n case view_type_1.ViewType.COMPONENT:\r\n context = this.declarationAppElement.component;\r\n projectableNodes = view_utils_1.ensureSlotCount(givenProjectableNodes, this.componentType.slotCount);\r\n break;\r\n case view_type_1.ViewType.EMBEDDED:\r\n context = this.declarationAppElement.parentView.context;\r\n projectableNodes = this.declarationAppElement.parentView.projectableNodes;\r\n break;\r\n case view_type_1.ViewType.HOST:\r\n context = EMPTY_CONTEXT;\r\n // Note: Don't ensure the slot count for the projectableNodes as we store\r\n // them only for the contained component view (which will later check the slot count...)\r\n projectableNodes = givenProjectableNodes;\r\n break;\r\n }\r\n this._hasExternalHostElement = lang_1.isPresent(rootSelectorOrNode);\r\n this.context = context;\r\n this.projectableNodes = projectableNodes;\r\n if (this.debugMode) {\r\n this._resetDebug();\r\n try {\r\n return this.createInternal(rootSelectorOrNode);\r\n }\r\n catch (e) {\r\n this._rethrowWithContext(e, e.stack);\r\n throw e;\r\n }\r\n }\r\n else {\r\n return this.createInternal(rootSelectorOrNode);\r\n }\r\n };\r\n /**\r\n * Overwritten by implementations.\r\n * Returns the AppElement for the host element for ViewType.HOST.\r\n */\r\n AppView.prototype.createInternal = function (rootSelectorOrNode) { return null; };\r\n AppView.prototype.init = function (rootNodesOrAppElements, allNodes, disposables, subscriptions) {\r\n this.rootNodesOrAppElements = rootNodesOrAppElements;\r\n this.allNodes = allNodes;\r\n this.disposables = disposables;\r\n this.subscriptions = subscriptions;\r\n if (this.type === view_type_1.ViewType.COMPONENT) {\r\n // Note: the render nodes have been attached to their host element\r\n // in the ViewFactory already.\r\n this.declarationAppElement.parentView.viewChildren.push(this);\r\n this.renderParent = this.declarationAppElement.parentView;\r\n this.dirtyParentQueriesInternal();\r\n }\r\n };\r\n AppView.prototype.selectOrCreateHostElement = function (elementName, rootSelectorOrNode, debugCtx) {\r\n var hostElement;\r\n if (lang_1.isPresent(rootSelectorOrNode)) {\r\n hostElement = this.renderer.selectRootElement(rootSelectorOrNode, debugCtx);\r\n }\r\n else {\r\n hostElement = this.renderer.createElement(null, elementName, debugCtx);\r\n }\r\n return hostElement;\r\n };\r\n AppView.prototype.injectorGet = function (token, nodeIndex, notFoundResult) {\r\n if (this.debugMode) {\r\n this._resetDebug();\r\n try {\r\n return this.injectorGetInternal(token, nodeIndex, notFoundResult);\r\n }\r\n catch (e) {\r\n this._rethrowWithContext(e, e.stack);\r\n throw e;\r\n }\r\n }\r\n else {\r\n return this.injectorGetInternal(token, nodeIndex, notFoundResult);\r\n }\r\n };\r\n /**\r\n * Overwritten by implementations\r\n */\r\n AppView.prototype.injectorGetInternal = function (token, nodeIndex, notFoundResult) {\r\n return notFoundResult;\r\n };\r\n AppView.prototype.injector = function (nodeIndex) {\r\n if (lang_1.isPresent(nodeIndex)) {\r\n return new element_injector_1.ElementInjector(this, nodeIndex);\r\n }\r\n else {\r\n return this.parentInjector;\r\n }\r\n };\r\n AppView.prototype.destroy = function () {\r\n if (this._hasExternalHostElement) {\r\n this.renderer.detachView(this.flatRootNodes);\r\n }\r\n else if (lang_1.isPresent(this.viewContainerElement)) {\r\n this.viewContainerElement.detachView(this.viewContainerElement.nestedViews.indexOf(this));\r\n }\r\n this._destroyRecurse();\r\n };\r\n AppView.prototype._destroyRecurse = function () {\r\n if (this.destroyed) {\r\n return;\r\n }\r\n var children = this.contentChildren;\r\n for (var i = 0; i < children.length; i++) {\r\n children[i]._destroyRecurse();\r\n }\r\n children = this.viewChildren;\r\n for (var i = 0; i < children.length; i++) {\r\n children[i]._destroyRecurse();\r\n }\r\n if (this.debugMode) {\r\n this._resetDebug();\r\n try {\r\n this._destroyLocal();\r\n }\r\n catch (e) {\r\n this._rethrowWithContext(e, e.stack);\r\n throw e;\r\n }\r\n }\r\n else {\r\n this._destroyLocal();\r\n }\r\n this.destroyed = true;\r\n };\r\n AppView.prototype._destroyLocal = function () {\r\n var hostElement = this.type === view_type_1.ViewType.COMPONENT ? this.declarationAppElement.nativeElement : null;\r\n for (var i = 0; i < this.disposables.length; i++) {\r\n this.disposables[i]();\r\n }\r\n for (var i = 0; i < this.subscriptions.length; i++) {\r\n async_1.ObservableWrapper.dispose(this.subscriptions[i]);\r\n }\r\n this.destroyInternal();\r\n if (this._hasExternalHostElement) {\r\n this.renderer.detachView(this.flatRootNodes);\r\n }\r\n else if (lang_1.isPresent(this.viewContainerElement)) {\r\n this.viewContainerElement.detachView(this.viewContainerElement.nestedViews.indexOf(this));\r\n }\r\n else {\r\n this.dirtyParentQueriesInternal();\r\n }\r\n this.renderer.destroyView(hostElement, this.allNodes);\r\n };\r\n /**\r\n * Overwritten by implementations\r\n */\r\n AppView.prototype.destroyInternal = function () { };\r\n Object.defineProperty(AppView.prototype, \"debugMode\", {\r\n get: function () { return lang_1.isPresent(this.staticNodeDebugInfos); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppView.prototype, \"changeDetectorRef\", {\r\n get: function () { return this.ref; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppView.prototype, \"parent\", {\r\n get: function () {\r\n return lang_1.isPresent(this.declarationAppElement) ? this.declarationAppElement.parentView : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppView.prototype, \"flatRootNodes\", {\r\n get: function () { return view_utils_1.flattenNestedViewRenderNodes(this.rootNodesOrAppElements); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppView.prototype, \"lastRootNode\", {\r\n get: function () {\r\n var lastNode = this.rootNodesOrAppElements.length > 0 ?\r\n this.rootNodesOrAppElements[this.rootNodesOrAppElements.length - 1] :\r\n null;\r\n return _findLastRenderNode(lastNode);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AppView.prototype.hasLocal = function (contextName) {\r\n return collection_1.StringMapWrapper.contains(this.locals, contextName);\r\n };\r\n AppView.prototype.setLocal = function (contextName, value) { this.locals[contextName] = value; };\r\n /**\r\n * Overwritten by implementations\r\n */\r\n AppView.prototype.dirtyParentQueriesInternal = function () { };\r\n AppView.prototype.addRenderContentChild = function (view) {\r\n this.contentChildren.push(view);\r\n view.renderParent = this;\r\n view.dirtyParentQueriesInternal();\r\n };\r\n AppView.prototype.removeContentChild = function (view) {\r\n collection_1.ListWrapper.remove(this.contentChildren, view);\r\n view.dirtyParentQueriesInternal();\r\n view.renderParent = null;\r\n };\r\n AppView.prototype.detectChanges = function (throwOnChange) {\r\n var s = _scope_check(this.clazz);\r\n if (this.cdMode === change_detection_1.ChangeDetectionStrategy.Detached ||\r\n this.cdMode === change_detection_1.ChangeDetectionStrategy.Checked ||\r\n this.cdState === change_detection_1.ChangeDetectorState.Errored)\r\n return;\r\n if (this.destroyed) {\r\n this.throwDestroyedError('detectChanges');\r\n }\r\n if (this.debugMode) {\r\n this._resetDebug();\r\n try {\r\n this.detectChangesInternal(throwOnChange);\r\n }\r\n catch (e) {\r\n this._rethrowWithContext(e, e.stack);\r\n throw e;\r\n }\r\n }\r\n else {\r\n this.detectChangesInternal(throwOnChange);\r\n }\r\n if (this.cdMode === change_detection_1.ChangeDetectionStrategy.CheckOnce)\r\n this.cdMode = change_detection_1.ChangeDetectionStrategy.Checked;\r\n this.cdState = change_detection_1.ChangeDetectorState.CheckedBefore;\r\n profile_1.wtfLeave(s);\r\n };\r\n /**\r\n * Overwritten by implementations\r\n */\r\n AppView.prototype.detectChangesInternal = function (throwOnChange) {\r\n this.detectContentChildrenChanges(throwOnChange);\r\n this.detectViewChildrenChanges(throwOnChange);\r\n };\r\n AppView.prototype.detectContentChildrenChanges = function (throwOnChange) {\r\n for (var i = 0; i < this.contentChildren.length; ++i) {\r\n this.contentChildren[i].detectChanges(throwOnChange);\r\n }\r\n };\r\n AppView.prototype.detectViewChildrenChanges = function (throwOnChange) {\r\n for (var i = 0; i < this.viewChildren.length; ++i) {\r\n this.viewChildren[i].detectChanges(throwOnChange);\r\n }\r\n };\r\n AppView.prototype.addToContentChildren = function (renderAppElement) {\r\n renderAppElement.parentView.contentChildren.push(this);\r\n this.viewContainerElement = renderAppElement;\r\n this.dirtyParentQueriesInternal();\r\n };\r\n AppView.prototype.removeFromContentChildren = function (renderAppElement) {\r\n collection_1.ListWrapper.remove(renderAppElement.parentView.contentChildren, this);\r\n this.dirtyParentQueriesInternal();\r\n this.viewContainerElement = null;\r\n };\r\n AppView.prototype.markAsCheckOnce = function () { this.cdMode = change_detection_1.ChangeDetectionStrategy.CheckOnce; };\r\n AppView.prototype.markPathToRootAsCheckOnce = function () {\r\n var c = this;\r\n while (lang_1.isPresent(c) && c.cdMode !== change_detection_1.ChangeDetectionStrategy.Detached) {\r\n if (c.cdMode === change_detection_1.ChangeDetectionStrategy.Checked) {\r\n c.cdMode = change_detection_1.ChangeDetectionStrategy.CheckOnce;\r\n }\r\n c = c.renderParent;\r\n }\r\n };\r\n AppView.prototype._resetDebug = function () { this._currentDebugContext = null; };\r\n AppView.prototype.debug = function (nodeIndex, rowNum, colNum) {\r\n return this._currentDebugContext = new debug_context_1.DebugContext(this, nodeIndex, rowNum, colNum);\r\n };\r\n AppView.prototype._rethrowWithContext = function (e, stack) {\r\n if (!(e instanceof exceptions_1.ViewWrappedException)) {\r\n if (!(e instanceof exceptions_1.ExpressionChangedAfterItHasBeenCheckedException)) {\r\n this.cdState = change_detection_1.ChangeDetectorState.Errored;\r\n }\r\n if (lang_1.isPresent(this._currentDebugContext)) {\r\n throw new exceptions_1.ViewWrappedException(e, stack, this._currentDebugContext);\r\n }\r\n }\r\n };\r\n AppView.prototype.eventHandler = function (cb) {\r\n var _this = this;\r\n if (this.debugMode) {\r\n return function (event) {\r\n _this._resetDebug();\r\n try {\r\n return cb(event);\r\n }\r\n catch (e) {\r\n _this._rethrowWithContext(e, e.stack);\r\n throw e;\r\n }\r\n };\r\n }\r\n else {\r\n return cb;\r\n }\r\n };\r\n AppView.prototype.throwDestroyedError = function (details) { throw new exceptions_1.ViewDestroyedException(details); };\r\n return AppView;\r\n}());\r\nexports.AppView = AppView;\r\nfunction _findLastRenderNode(node) {\r\n var lastNode;\r\n if (node instanceof element_1.AppElement) {\r\n var appEl = node;\r\n lastNode = appEl.nativeElement;\r\n if (lang_1.isPresent(appEl.nestedViews)) {\r\n // Note: Views might have no root nodes at all!\r\n for (var i = appEl.nestedViews.length - 1; i >= 0; i--) {\r\n var nestedView = appEl.nestedViews[i];\r\n if (nestedView.rootNodesOrAppElements.length > 0) {\r\n lastNode = _findLastRenderNode(nestedView.rootNodesOrAppElements[nestedView.rootNodesOrAppElements.length - 1]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n lastNode = node;\r\n }\r\n return lastNode;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQkFPTyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBR3hDLHdCQUF5QixXQUFXLENBQUMsQ0FBQTtBQUNyQyxxQkFZTywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxDLHNCQUFnQywyQkFBMkIsQ0FBQyxDQUFBO0FBRTVELHlCQUF1QixZQUFZLENBQUMsQ0FBQTtBQUVwQywwQkFBdUIsYUFBYSxDQUFDLENBQUE7QUFDckMsMkJBTU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsaUNBTU8scURBQXFELENBQUMsQ0FBQTtBQUM3RCx3QkFBbUQsb0JBQW9CLENBQUMsQ0FBQTtBQUN4RSwyQkFJTyxjQUFjLENBQUMsQ0FBQTtBQUN0Qiw4QkFBZ0QsaUJBQWlCLENBQUMsQ0FBQTtBQUNsRSxpQ0FBOEIsb0JBQW9CLENBQUMsQ0FBQTtBQUVuRCxJQUFNLGFBQWEsR0FBRyxpQkFBVSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUvQyxJQUFJLFlBQVksR0FBZSx3QkFBYyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFekU7OztHQUdHO0FBQ0g7SUErQkUsaUJBQW1CLEtBQVUsRUFBUyxhQUFrQyxFQUFTLElBQWMsRUFDNUUsTUFBNEIsRUFBUyxTQUFvQixFQUN6RCxjQUF3QixFQUFTLHFCQUFpQyxFQUNsRSxNQUErQixFQUMvQixvQkFBMkM7UUFKM0MsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQVU7UUFDNUUsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3pELG1CQUFjLEdBQWQsY0FBYyxDQUFV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QUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELFFBQVEsR0FBRyxtQkFBbUIsQ0FDMUIsVUFBVSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sUUFBUSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTGlzdFdyYXBwZXIsXG4gIE1hcFdyYXBwZXIsXG4gIE1hcCxcbiAgU3RyaW5nTWFwV3JhcHBlcixcbiAgaXNMaXN0TGlrZUl0ZXJhYmxlLFxuICBhcmVJdGVyYWJsZXNFcXVhbFxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5pbXBvcnQge0luamVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge0FwcEVsZW1lbnR9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQge1xuICBhc3NlcnRpb25zRW5hYmxlZCxcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBUeXBlLFxuICBpc0FycmF5LFxuICBpc051bWJlcixcbiAgQ09OU1QsXG4gIENPTlNUX0VYUFIsXG4gIHN0cmluZ2lmeSxcbiAgaXNQcmltaXRpdmUsXG4gIGlzU3RyaW5nXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtSZW5kZXJlciwgUm9vdFJlbmRlcmVyLCBSZW5kZXJDb21wb25lbnRUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZW5kZXIvYXBpJztcbmltcG9ydCB7Vmlld1JlZl99IGZyb20gJy4vdmlld19yZWYnO1xuXG5pbXBvcnQge1ZpZXdUeXBlfSBmcm9tICcuL3ZpZXdfdHlwZSc7XG5pbXBvcnQge1xuICBWaWV3VXRpbHMsXG4gIGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMsXG4gIGVuc3VyZVNsb3RDb3VudCxcbiAgYXJyYXlMb29zZUlkZW50aWNhbCxcbiAgbWFwTG9vc2VJZGVudGljYWxcbn0gZnJvbSAnLi92aWV3X3V0aWxzJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JTdGF0ZSxcbiAgaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGRldk1vZGVFcXVhbFxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHt3dGZDcmVhdGVTY29wZSwgd3RmTGVhdmUsIFd0ZlNjb3BlRm59IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZSc7XG5pbXBvcnQge1xuICBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvbixcbiAgVmlld0Rlc3Ryb3llZEV4Y2VwdGlvbixcbiAgVmlld1dyYXBwZWRFeGNlcHRpb25cbn0gZnJvbSAnLi9leGNlcHRpb25zJztcbmltcG9ydCB7U3RhdGljTm9kZURlYnVnSW5mbywgRGVidWdDb250ZXh0fSBmcm9tICcuL2RlYnVnX2NvbnRleHQnO1xuaW1wb3J0IHtFbGVtZW50SW5qZWN0b3J9IGZyb20gJy4vZWxlbWVudF9pbmplY3Rvcic7XG5cbmNvbnN0IEVNUFRZX0NPTlRFWFQgPSBDT05TVF9FWFBSKG5ldyBPYmplY3QoKSk7XG5cbnZhciBfc2NvcGVfY2hlY2s6IFd0ZlNjb3BlRm4gPSB3dGZDcmVhdGVTY29wZShgQXBwVmlldyNjaGVjayhhc2NpaSBpZClgKTtcblxuLyoqXG4gKiBDb3N0IG9mIG1ha2luZyBvYmplY3RzOiBodHRwOi8vanNwZXJmLmNvbS9pbnN0YW50aWF0ZS1zaXplLW9mLW9iamVjdFxuICpcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcFZpZXc8VD4ge1xuICByZWY6IFZpZXdSZWZfO1xuICByb290Tm9kZXNPckFwcEVsZW1lbnRzOiBhbnlbXTtcbiAgYWxsTm9kZXM6IGFueVtdO1xuICBkaXNwb3NhYmxlczogRnVuY3Rpb25bXTtcbiAgc3Vic2NyaXB0aW9uczogYW55W107XG4gIGNvbnRlbnRDaGlsZHJlbjogQXBwVmlldzxhbnk+W10gPSBbXTtcbiAgdmlld0NoaWxkcmVuOiBBcHBWaWV3PGFueT5bXSA9IFtdO1xuICByZW5kZXJQYXJlbnQ6IEFwcFZpZXc8YW55PjtcbiAgdmlld0NvbnRhaW5lckVsZW1lbnQ6IEFwcEVsZW1lbnQgPSBudWxsO1xuXG4gIC8vIFRoZSBuYW1lcyBvZiB0aGUgYmVsb3cgZmllbGRzIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggY29kZWdlbl9uYW1lX3V0aWwudHMgb3JcbiAgLy8gY2hhbmdlIGRldGVjdGlvbiB3aWxsIGZhaWwuXG4gIGNkU3RhdGU6IENoYW5nZURldGVjdG9yU3RhdGUgPSBDaGFuZ2VEZXRlY3RvclN0YXRlLk5ldmVyQ2hlY2tlZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgYWdhaW5zdCB3aGljaCBkYXRhLWJpbmRpbmcgZXhwcmVzc2lvbnMgaW4gdGhpcyB2aWV3IGFyZSBldmFsdWF0ZWQgYWdhaW5zdC5cbiAgICogVGhpcyBpcyBhbHdheXMgYSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqL1xuICBjb250ZXh0OiBUID0gbnVsbDtcblxuICBwcm9qZWN0YWJsZU5vZGVzOiBBcnJheTxhbnkgfCBhbnlbXT47XG5cbiAgZGVzdHJveWVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVuZGVyZXI6IFJlbmRlcmVyO1xuXG4gIHByaXZhdGUgX2N1cnJlbnREZWJ1Z0NvbnRleHQ6IERlYnVnQ29udGV4dCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfaGFzRXh0ZXJuYWxIb3N0RWxlbWVudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2xheno6IGFueSwgcHVibGljIGNvbXBvbmVudFR5cGU6IFJlbmRlckNvbXBvbmVudFR5cGUsIHB1YmxpYyB0eXBlOiBWaWV3VHlwZSxcbiAgICAgICAgICAgICAgcHVibGljIGxvY2Fsczoge1trZXk6IHN0cmluZ106IGFueX0sIHB1YmxpYyB2aWV3VXRpbHM6IFZpZXdVdGlscyxcbiAgICAgICAgICAgICAgcHVibGljIHBhcmVudEluamVjdG9yOiBJbmplY3RvciwgcHVibGljIGRlY2xhcmF0aW9uQXBwRWxlbWVudDogQXBwRWxlbWVudCxcbiAgICAgICAgICAgICAgcHVibGljIGNkTW9kZTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWNOb2RlRGVidWdJbmZvczogU3RhdGljTm9kZURlYnVnSW5mb1tdKSB7XG4gICAgdGhpcy5yZWYgPSBuZXcgVmlld1JlZl8odGhpcyk7XG4gICAgaWYgKHR5cGUgPT09IFZpZXdUeXBlLkNPTVBPTkVOVCB8fCB0eXBlID09PSBWaWV3VHlwZS5IT1NUKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyID0gdmlld1V0aWxzLnJlbmRlckNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlciA9IGRlY2xhcmF0aW9uQXBwRWxlbWVudC5wYXJlbnRWaWV3LnJlbmRlcmVyO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZShnaXZlblByb2plY3RhYmxlTm9kZXM6IEFycmF5PGFueSB8IGFueVtdPiwgcm9vdFNlbGVjdG9yT3JOb2RlOiBzdHJpbmcgfCBhbnkpOiBBcHBFbGVtZW50IHtcbiAgICB2YXIgY29udGV4dDtcbiAgICB2YXIgcHJvamVjdGFibGVOb2RlcztcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBWaWV3VHlwZS5DT01QT05FTlQ6XG4gICAgICAgIGNvbnRleHQgPSB0aGlzLmRlY2xhcmF0aW9uQXBwRWxlbWVudC5jb21wb25lbnQ7XG4gICAgICAgIHByb2plY3RhYmxlTm9kZXMgPSBlbnN1cmVTbG90Q291bnQoZ2l2ZW5Qcm9qZWN0YWJsZU5vZGVzLCB0aGlzLmNvbXBvbmVudFR5cGUuc2xvdENvdW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZpZXdUeXBlLkVNQkVEREVEOlxuICAgICAgICBjb250ZXh0ID0gdGhpcy5kZWNsYXJhdGlvbkFwcEVsZW1lbnQucGFyZW50Vmlldy5jb250ZXh0O1xuICAgICAgICBwcm9qZWN0YWJsZU5vZGVzID0gdGhpcy5kZWNsYXJhdGlvbkFwcEVsZW1lbnQucGFyZW50Vmlldy5wcm9qZWN0YWJsZU5vZGVzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmlld1R5cGUuSE9TVDpcbiAgICAgICAgY29udGV4dCA9IEVNUFRZX0NPTlRFWFQ7XG4gICAgICAgIC8vIE5vdGU6IERvbid0IGVuc3VyZSB0aGUgc2xvdCBjb3VudCBmb3IgdGhlIHByb2plY3RhYmxlTm9kZXMgYXMgd2Ugc3RvcmVcbiAgICAgICAgLy8gdGhlbSBvbmx5IGZvciB0aGUgY29udGFpbmVkIGNvbXBvbmVudCB2aWV3ICh3aGljaCB3aWxsIGxhdGVyIGNoZWNrIHRoZSBzbG90IGNvdW50Li4uKVxuICAgICAgICBwcm9qZWN0YWJsZU5vZGVzID0gZ2l2ZW5Qcm9qZWN0YWJsZU5vZGVzO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5faGFzRXh0ZXJuYWxIb3N0RWxlbWVudCA9IGlzUHJlc2VudChyb290U2VsZWN0b3JPck5vZGUpO1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5wcm9qZWN0YWJsZU5vZGVzID0gcHJvamVjdGFibGVOb2RlcztcbiAgICBpZiAodGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgIHRoaXMuX3Jlc2V0RGVidWcoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUludGVybmFsKHJvb3RTZWxlY3Rvck9yTm9kZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMuX3JldGhyb3dXaXRoQ29udGV4dChlLCBlLnN0YWNrKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSW50ZXJuYWwocm9vdFNlbGVjdG9yT3JOb2RlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3ZlcndyaXR0ZW4gYnkgaW1wbGVtZW50YXRpb25zLlxuICAgKiBSZXR1cm5zIHRoZSBBcHBFbGVtZW50IGZvciB0aGUgaG9zdCBlbGVtZW50IGZvciBWaWV3VHlwZS5IT1NULlxuICAgKi9cbiAgY3JlYXRlSW50ZXJuYWwocm9vdFNlbGVjdG9yT3JOb2RlOiBzdHJpbmcgfCBhbnkpOiBBcHBFbGVtZW50IHsgcmV0dXJuIG51bGw7IH1cblxuICBpbml0KHJvb3ROb2Rlc09yQXBwRWxlbWVudHM6IGFueVtdLCBhbGxOb2RlczogYW55W10sIGRpc3Bvc2FibGVzOiBGdW5jdGlvbltdLFxuICAgICAgIHN1YnNjcmlwdGlvbnM6IGFueVtdKSB7XG4gICAgdGhpcy5yb290Tm9kZXNPckFwcEVsZW1lbnRzID0gcm9vdE5vZGVzT3JBcHBFbGVtZW50cztcbiAgICB0aGlzLmFsbE5vZGVzID0gYWxsTm9kZXM7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IGRpc3Bvc2FibGVzO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHN1YnNjcmlwdGlvbnM7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgICAvLyBOb3RlOiB0aGUgcmVuZGVyIG5vZGVzIGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGVpciBob3N0IGVsZW1lbnRcbiAgICAgIC8vIGluIHRoZSBWaWV3RmFjdG9yeSBhbHJlYWR5LlxuICAgICAgdGhpcy5kZWNsYXJhdGlvbkFwcEVsZW1lbnQucGFyZW50Vmlldy52aWV3Q2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgICAgIHRoaXMucmVuZGVyUGFyZW50ID0gdGhpcy5kZWNsYXJhdGlvbkFwcEVsZW1lbnQucGFyZW50VmlldztcbiAgICAgIHRoaXMuZGlydHlQYXJlbnRRdWVyaWVzSW50ZXJuYWwoKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RPckNyZWF0ZUhvc3RFbGVtZW50KGVsZW1lbnROYW1lOiBzdHJpbmcsIHJvb3RTZWxlY3Rvck9yTm9kZTogc3RyaW5nIHwgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnQ3R4OiBEZWJ1Z0NvbnRleHQpOiBhbnkge1xuICAgIHZhciBob3N0RWxlbWVudDtcbiAgICBpZiAoaXNQcmVzZW50KHJvb3RTZWxlY3Rvck9yTm9kZSkpIHtcbiAgICAgIGhvc3RFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudChyb290U2VsZWN0b3JPck5vZGUsIGRlYnVnQ3R4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaG9zdEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQobnVsbCwgZWxlbWVudE5hbWUsIGRlYnVnQ3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIGhvc3RFbGVtZW50O1xuICB9XG5cbiAgaW5qZWN0b3JHZXQodG9rZW46IGFueSwgbm9kZUluZGV4OiBudW1iZXIsIG5vdEZvdW5kUmVzdWx0OiBhbnkpOiBhbnkge1xuICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgdGhpcy5fcmVzZXREZWJ1ZygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3JHZXRJbnRlcm5hbCh0b2tlbiwgbm9kZUluZGV4LCBub3RGb3VuZFJlc3VsdCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMuX3JldGhyb3dXaXRoQ29udGV4dChlLCBlLnN0YWNrKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3JHZXRJbnRlcm5hbCh0b2tlbiwgbm9kZUluZGV4LCBub3RGb3VuZFJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0dGVuIGJ5IGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgaW5qZWN0b3JHZXRJbnRlcm5hbCh0b2tlbjogYW55LCBub2RlSW5kZXg6IG51bWJlciwgbm90Rm91bmRSZXN1bHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIG5vdEZvdW5kUmVzdWx0O1xuICB9XG5cbiAgaW5qZWN0b3Iobm9kZUluZGV4OiBudW1iZXIpOiBJbmplY3RvciB7XG4gICAgaWYgKGlzUHJlc2VudChub2RlSW5kZXgpKSB7XG4gICAgICByZXR1cm4gbmV3IEVsZW1lbnRJbmplY3Rvcih0aGlzLCBub2RlSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRJbmplY3RvcjtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9oYXNFeHRlcm5hbEhvc3RFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmRldGFjaFZpZXcodGhpcy5mbGF0Um9vdE5vZGVzKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJlc2VudCh0aGlzLnZpZXdDb250YWluZXJFbGVtZW50KSkge1xuICAgICAgdGhpcy52aWV3Q29udGFpbmVyRWxlbWVudC5kZXRhY2hWaWV3KHRoaXMudmlld0NvbnRhaW5lckVsZW1lbnQubmVzdGVkVmlld3MuaW5kZXhPZih0aGlzKSk7XG4gICAgfVxuICAgIHRoaXMuX2Rlc3Ryb3lSZWN1cnNlKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95UmVjdXJzZSgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jb250ZW50Q2hpbGRyZW47XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRyZW5baV0uX2Rlc3Ryb3lSZWN1cnNlKCk7XG4gICAgfVxuICAgIGNoaWxkcmVuID0gdGhpcy52aWV3Q2hpbGRyZW47XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRyZW5baV0uX2Rlc3Ryb3lSZWN1cnNlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlYnVnTW9kZSkge1xuICAgICAgdGhpcy5fcmVzZXREZWJ1ZygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUxvY2FsKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMuX3JldGhyb3dXaXRoQ29udGV4dChlLCBlLnN0YWNrKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGVzdHJveUxvY2FsKCk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveUxvY2FsKCkge1xuICAgIHZhciBob3N0RWxlbWVudCA9XG4gICAgICAgIHRoaXMudHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UID8gdGhpcy5kZWNsYXJhdGlvbkFwcEVsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpc3Bvc2FibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmRpc3Bvc2FibGVzW2ldKCk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBPYnNlcnZhYmxlV3JhcHBlci5kaXNwb3NlKHRoaXMuc3Vic2NyaXB0aW9uc1tpXSk7XG4gICAgfVxuICAgIHRoaXMuZGVzdHJveUludGVybmFsKCk7XG4gICAgaWYgKHRoaXMuX2hhc0V4dGVybmFsSG9zdEVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuZGV0YWNoVmlldyh0aGlzLmZsYXRSb290Tm9kZXMpO1xuICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KHRoaXMudmlld0NvbnRhaW5lckVsZW1lbnQpKSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXJFbGVtZW50LmRldGFjaFZpZXcodGhpcy52aWV3Q29udGFpbmVyRWxlbWVudC5uZXN0ZWRWaWV3cy5pbmRleE9mKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXJ0eVBhcmVudFF1ZXJpZXNJbnRlcm5hbCgpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLmRlc3Ryb3lWaWV3KGhvc3RFbGVtZW50LCB0aGlzLmFsbE5vZGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVyd3JpdHRlbiBieSBpbXBsZW1lbnRhdGlvbnNcbiAgICovXG4gIGRlc3Ryb3lJbnRlcm5hbCgpOiB2b2lkIHt9XG5cbiAgZ2V0IGRlYnVnTW9kZSgpOiBib29sZWFuIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLnN0YXRpY05vZGVEZWJ1Z0luZm9zKTsgfVxuXG4gIGdldCBjaGFuZ2VEZXRlY3RvclJlZigpOiBDaGFuZ2VEZXRlY3RvclJlZiB7IHJldHVybiB0aGlzLnJlZjsgfVxuXG4gIGdldCBwYXJlbnQoKTogQXBwVmlldzxhbnk+IHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuZGVjbGFyYXRpb25BcHBFbGVtZW50KSA/IHRoaXMuZGVjbGFyYXRpb25BcHBFbGVtZW50LnBhcmVudFZpZXcgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGZsYXRSb290Tm9kZXMoKTogYW55W10geyByZXR1cm4gZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyh0aGlzLnJvb3ROb2Rlc09yQXBwRWxlbWVudHMpOyB9XG5cbiAgZ2V0IGxhc3RSb290Tm9kZSgpOiBhbnkge1xuICAgIHZhciBsYXN0Tm9kZSA9IHRoaXMucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb290Tm9kZXNPckFwcEVsZW1lbnRzW3RoaXMucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5sZW5ndGggLSAxXSA6XG4gICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gICAgcmV0dXJuIF9maW5kTGFzdFJlbmRlck5vZGUobGFzdE5vZGUpO1xuICB9XG5cbiAgaGFzTG9jYWwoY29udGV4dE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKHRoaXMubG9jYWxzLCBjb250ZXh0TmFtZSk7XG4gIH1cblxuICBzZXRMb2NhbChjb250ZXh0TmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7IHRoaXMubG9jYWxzW2NvbnRleHROYW1lXSA9IHZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0dGVuIGJ5IGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgZGlydHlQYXJlbnRRdWVyaWVzSW50ZXJuYWwoKTogdm9pZCB7fVxuXG4gIGFkZFJlbmRlckNvbnRlbnRDaGlsZCh2aWV3OiBBcHBWaWV3PGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRDaGlsZHJlbi5wdXNoKHZpZXcpO1xuICAgIHZpZXcucmVuZGVyUGFyZW50ID0gdGhpcztcbiAgICB2aWV3LmRpcnR5UGFyZW50UXVlcmllc0ludGVybmFsKCk7XG4gIH1cblxuICByZW1vdmVDb250ZW50Q2hpbGQodmlldzogQXBwVmlldzxhbnk+KTogdm9pZCB7XG4gICAgTGlzdFdyYXBwZXIucmVtb3ZlKHRoaXMuY29udGVudENoaWxkcmVuLCB2aWV3KTtcbiAgICB2aWV3LmRpcnR5UGFyZW50UXVlcmllc0ludGVybmFsKCk7XG4gICAgdmlldy5yZW5kZXJQYXJlbnQgPSBudWxsO1xuICB9XG5cbiAgZGV0ZWN0Q2hhbmdlcyh0aHJvd09uQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdmFyIHMgPSBfc2NvcGVfY2hlY2sodGhpcy5jbGF6eik7XG4gICAgaWYgKHRoaXMuY2RNb2RlID09PSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZXRhY2hlZCB8fFxuICAgICAgICB0aGlzLmNkTW9kZSA9PT0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tlZCB8fFxuICAgICAgICB0aGlzLmNkU3RhdGUgPT09IENoYW5nZURldGVjdG9yU3RhdGUuRXJyb3JlZClcbiAgICAgIHJldHVybjtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMudGhyb3dEZXN0cm95ZWRFcnJvcignZGV0ZWN0Q2hhbmdlcycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWJ1Z01vZGUpIHtcbiAgICAgIHRoaXMuX3Jlc2V0RGVidWcoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc0ludGVybmFsKHRocm93T25DaGFuZ2UpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLl9yZXRocm93V2l0aENvbnRleHQoZSwgZS5zdGFjayk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc0ludGVybmFsKHRocm93T25DaGFuZ2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jZE1vZGUgPT09IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZSlcbiAgICAgIHRoaXMuY2RNb2RlID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tlZDtcblxuICAgIHRoaXMuY2RTdGF0ZSA9IENoYW5nZURldGVjdG9yU3RhdGUuQ2hlY2tlZEJlZm9yZTtcbiAgICB3dGZMZWF2ZShzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVyd3JpdHRlbiBieSBpbXBsZW1lbnRhdGlvbnNcbiAgICovXG4gIGRldGVjdENoYW5nZXNJbnRlcm5hbCh0aHJvd09uQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZXRlY3RDb250ZW50Q2hpbGRyZW5DaGFuZ2VzKHRocm93T25DaGFuZ2UpO1xuICAgIHRoaXMuZGV0ZWN0Vmlld0NoaWxkcmVuQ2hhbmdlcyh0aHJvd09uQ2hhbmdlKTtcbiAgfVxuXG4gIGRldGVjdENvbnRlbnRDaGlsZHJlbkNoYW5nZXModGhyb3dPbkNoYW5nZTogYm9vbGVhbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb250ZW50Q2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgIHRoaXMuY29udGVudENoaWxkcmVuW2ldLmRldGVjdENoYW5nZXModGhyb3dPbkNoYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgZGV0ZWN0Vmlld0NoaWxkcmVuQ2hhbmdlcyh0aHJvd09uQ2hhbmdlOiBib29sZWFuKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnZpZXdDaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgdGhpcy52aWV3Q2hpbGRyZW5baV0uZGV0ZWN0Q2hhbmdlcyh0aHJvd09uQ2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBhZGRUb0NvbnRlbnRDaGlsZHJlbihyZW5kZXJBcHBFbGVtZW50OiBBcHBFbGVtZW50KTogdm9pZCB7XG4gICAgcmVuZGVyQXBwRWxlbWVudC5wYXJlbnRWaWV3LmNvbnRlbnRDaGlsZHJlbi5wdXNoKHRoaXMpO1xuICAgIHRoaXMudmlld0NvbnRhaW5lckVsZW1lbnQgPSByZW5kZXJBcHBFbGVtZW50O1xuICAgIHRoaXMuZGlydHlQYXJlbnRRdWVyaWVzSW50ZXJuYWwoKTtcbiAgfVxuXG4gIHJlbW92ZUZyb21Db250ZW50Q2hpbGRyZW4ocmVuZGVyQXBwRWxlbWVudDogQXBwRWxlbWVudCk6IHZvaWQge1xuICAgIExpc3RXcmFwcGVyLnJlbW92ZShyZW5kZXJBcHBFbGVtZW50LnBhcmVudFZpZXcuY29udGVudENoaWxkcmVuLCB0aGlzKTtcbiAgICB0aGlzLmRpcnR5UGFyZW50UXVlcmllc0ludGVybmFsKCk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBtYXJrQXNDaGVja09uY2UoKTogdm9pZCB7IHRoaXMuY2RNb2RlID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tPbmNlOyB9XG5cbiAgbWFya1BhdGhUb1Jvb3RBc0NoZWNrT25jZSgpOiB2b2lkIHtcbiAgICB2YXIgYzogQXBwVmlldzxhbnk+ID0gdGhpcztcbiAgICB3aGlsZSAoaXNQcmVzZW50KGMpICYmIGMuY2RNb2RlICE9PSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZXRhY2hlZCkge1xuICAgICAgaWYgKGMuY2RNb2RlID09PSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja2VkKSB7XG4gICAgICAgIGMuY2RNb2RlID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tPbmNlO1xuICAgICAgfVxuICAgICAgYyA9IGMucmVuZGVyUGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0RGVidWcoKSB7IHRoaXMuX2N1cnJlbnREZWJ1Z0NvbnRleHQgPSBudWxsOyB9XG5cbiAgZGVidWcobm9kZUluZGV4OiBudW1iZXIsIHJvd051bTogbnVtYmVyLCBjb2xOdW06IG51bWJlcik6IERlYnVnQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnREZWJ1Z0NvbnRleHQgPSBuZXcgRGVidWdDb250ZXh0KHRoaXMsIG5vZGVJbmRleCwgcm93TnVtLCBjb2xOdW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmV0aHJvd1dpdGhDb250ZXh0KGU6IGFueSwgc3RhY2s6IGFueSkge1xuICAgIGlmICghKGUgaW5zdGFuY2VvZiBWaWV3V3JhcHBlZEV4Y2VwdGlvbikpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvbikpIHtcbiAgICAgICAgdGhpcy5jZFN0YXRlID0gQ2hhbmdlRGV0ZWN0b3JTdGF0ZS5FcnJvcmVkO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLl9jdXJyZW50RGVidWdDb250ZXh0KSkge1xuICAgICAgICB0aHJvdyBuZXcgVmlld1dyYXBwZWRFeGNlcHRpb24oZSwgc3RhY2ssIHRoaXMuX2N1cnJlbnREZWJ1Z0NvbnRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV2ZW50SGFuZGxlcihjYjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgaWYgKHRoaXMuZGVidWdNb2RlKSB7XG4gICAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuX3Jlc2V0RGVidWcoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gY2IoZXZlbnQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5fcmV0aHJvd1dpdGhDb250ZXh0KGUsIGUuc3RhY2spO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYjtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Rlc3Ryb3llZEVycm9yKGRldGFpbHM6IHN0cmluZyk6IHZvaWQgeyB0aHJvdyBuZXcgVmlld0Rlc3Ryb3llZEV4Y2VwdGlvbihkZXRhaWxzKTsgfVxufVxuXG5mdW5jdGlvbiBfZmluZExhc3RSZW5kZXJOb2RlKG5vZGU6IGFueSk6IGFueSB7XG4gIHZhciBsYXN0Tm9kZTtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBcHBFbGVtZW50KSB7XG4gICAgdmFyIGFwcEVsID0gPEFwcEVsZW1lbnQ+bm9kZTtcbiAgICBsYXN0Tm9kZSA9IGFwcEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGlzUHJlc2VudChhcHBFbC5uZXN0ZWRWaWV3cykpIHtcbiAgICAgIC8vIE5vdGU6IFZpZXdzIG1pZ2h0IGhhdmUgbm8gcm9vdCBub2RlcyBhdCBhbGwhXG4gICAgICBmb3IgKHZhciBpID0gYXBwRWwubmVzdGVkVmlld3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIG5lc3RlZFZpZXcgPSBhcHBFbC5uZXN0ZWRWaWV3c1tpXTtcbiAgICAgICAgaWYgKG5lc3RlZFZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGFzdE5vZGUgPSBfZmluZExhc3RSZW5kZXJOb2RlKFxuICAgICAgICAgICAgICBuZXN0ZWRWaWV3LnJvb3ROb2Rlc09yQXBwRWxlbWVudHNbbmVzdGVkVmlldy5yb290Tm9kZXNPckFwcEVsZW1lbnRzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsYXN0Tm9kZSA9IG5vZGU7XG4gIH1cbiAgcmV0dXJuIGxhc3ROb2RlO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar view_1 = require('angular2/src/core/linker/view');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar InterpretiveAppViewInstanceFactory = (function () {\r\n function InterpretiveAppViewInstanceFactory() {\r\n }\r\n InterpretiveAppViewInstanceFactory.prototype.createInstance = function (superClass, clazz, args, props, getters, methods) {\r\n if (superClass === view_1.AppView) {\r\n return new _InterpretiveAppView(args, props, getters, methods);\r\n }\r\n throw new exceptions_1.BaseException(\"Can't instantiate class \" + superClass + \" in interpretative mode\");\r\n };\r\n return InterpretiveAppViewInstanceFactory;\r\n}());\r\nexports.InterpretiveAppViewInstanceFactory = InterpretiveAppViewInstanceFactory;\r\nvar _InterpretiveAppView = (function (_super) {\r\n __extends(_InterpretiveAppView, _super);\r\n function _InterpretiveAppView(args, props, getters, methods) {\r\n _super.call(this, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);\r\n this.props = props;\r\n this.getters = getters;\r\n this.methods = methods;\r\n }\r\n _InterpretiveAppView.prototype.createInternal = function (rootSelector) {\r\n var m = this.methods.get('createInternal');\r\n if (lang_1.isPresent(m)) {\r\n return m(rootSelector);\r\n }\r\n else {\r\n return _super.prototype.createInternal.call(this, rootSelector);\r\n }\r\n };\r\n _InterpretiveAppView.prototype.injectorGetInternal = function (token, nodeIndex, notFoundResult) {\r\n var m = this.methods.get('injectorGetInternal');\r\n if (lang_1.isPresent(m)) {\r\n return m(token, nodeIndex, notFoundResult);\r\n }\r\n else {\r\n return _super.prototype.injectorGet.call(this, token, nodeIndex, notFoundResult);\r\n }\r\n };\r\n _InterpretiveAppView.prototype.destroyInternal = function () {\r\n var m = this.methods.get('destroyInternal');\r\n if (lang_1.isPresent(m)) {\r\n return m();\r\n }\r\n else {\r\n return _super.prototype.destroyInternal.call(this);\r\n }\r\n };\r\n _InterpretiveAppView.prototype.dirtyParentQueriesInternal = function () {\r\n var m = this.methods.get('dirtyParentQueriesInternal');\r\n if (lang_1.isPresent(m)) {\r\n return m();\r\n }\r\n else {\r\n return _super.prototype.dirtyParentQueriesInternal.call(this);\r\n }\r\n };\r\n _InterpretiveAppView.prototype.detectChangesInternal = function (throwOnChange) {\r\n var m = this.methods.get('detectChangesInternal');\r\n if (lang_1.isPresent(m)) {\r\n return m(throwOnChange);\r\n }\r\n else {\r\n return _super.prototype.detectChangesInternal.call(this, throwOnChange);\r\n }\r\n };\r\n return _InterpretiveAppView;\r\n}(view_1.AppView));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJwcmV0aXZlX3ZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvb3V0cHV0L2ludGVycHJldGl2ZV92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ25ELHFCQUFzQiwrQkFBK0IsQ0FBQyxDQUFBO0FBRXRELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRzdEO0lBQUE7SUFRQSxDQUFDO0lBUEMsMkRBQWMsR0FBZCxVQUFlLFVBQWUsRUFBRSxLQUFVLEVBQUUsSUFBVyxFQUFFLEtBQXVCLEVBQ2pFLE9BQThCLEVBQUUsT0FBOEI7UUFDM0UsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLGNBQU8sQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE1BQU0sSUFBSSwwQkFBYSxDQUFDLDZCQUEyQixVQUFVLDRCQUF5QixDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNILHlDQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFSWSwwQ0FBa0MscUNBUTlDLENBQUE7QUFFRDtJQUFtQyx3Q0FBWTtJQUM3Qyw4QkFBWSxJQUFXLEVBQVMsS0FBdUIsRUFBUyxPQUE4QixFQUMzRSxPQUE4QjtRQUMvQyxrQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRnpELFVBQUssR0FBTCxLQUFLLENBQWtCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDM0UsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFFakQsQ0FBQztJQUNELDZDQUFjLEdBQWQsVUFBZSxZQUEwQjtRQUN2QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLGdCQUFLLENBQUMsY0FBYyxZQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBQ0Qsa0RBQW1CLEdBQW5CLFVBQW9CLEtBQVUsRUFBRSxTQUFpQixFQUFFLGNBQW1CO1FBQ3BFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxnQkFBSyxDQUFDLFdBQVcsWUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBQ0QsOENBQWUsR0FBZjtRQUNFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLGdCQUFLLENBQUMsZUFBZSxXQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFDRCx5REFBMEIsR0FBMUI7UUFDRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3ZELEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNiLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxnQkFBSyxDQUFDLDBCQUEwQixXQUFFLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFDRCxvREFBcUIsR0FBckIsVUFBc0IsYUFBc0I7UUFDMUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNsRCxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxnQkFBSyxDQUFDLHFCQUFxQixZQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBQ0gsMkJBQUM7QUFBRCxDQUFDLEFBN0NELENBQW1DLGNBQU8sR0E2Q3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0FwcFZpZXd9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3JztcbmltcG9ydCB7QXBwRWxlbWVudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2VsZW1lbnQnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtJbnN0YW5jZUZhY3RvcnksIER5bmFtaWNJbnN0YW5jZX0gZnJvbSAnLi9vdXRwdXRfaW50ZXJwcmV0ZXInO1xuXG5leHBvcnQgY2xhc3MgSW50ZXJwcmV0aXZlQXBwVmlld0luc3RhbmNlRmFjdG9yeSBpbXBsZW1lbnRzIEluc3RhbmNlRmFjdG9yeSB7XG4gIGNyZWF0ZUluc3RhbmNlKHN1cGVyQ2xhc3M6IGFueSwgY2xheno6IGFueSwgYXJnczogYW55W10sIHByb3BzOiBNYXA8c3RyaW5nLCBhbnk+LFxuICAgICAgICAgICAgICAgICBnZXR0ZXJzOiBNYXA8c3RyaW5nLCBGdW5jdGlvbj4sIG1ldGhvZHM6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPik6IGFueSB7XG4gICAgaWYgKHN1cGVyQ2xhc3MgPT09IEFwcFZpZXcpIHtcbiAgICAgIHJldHVybiBuZXcgX0ludGVycHJldGl2ZUFwcFZpZXcoYXJncywgcHJvcHMsIGdldHRlcnMsIG1ldGhvZHMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ2FuJ3QgaW5zdGFudGlhdGUgY2xhc3MgJHtzdXBlckNsYXNzfSBpbiBpbnRlcnByZXRhdGl2ZSBtb2RlYCk7XG4gIH1cbn1cblxuY2xhc3MgX0ludGVycHJldGl2ZUFwcFZpZXcgZXh0ZW5kcyBBcHBWaWV3PGFueT4gaW1wbGVtZW50cyBEeW5hbWljSW5zdGFuY2Uge1xuICBjb25zdHJ1Y3RvcihhcmdzOiBhbnlbXSwgcHVibGljIHByb3BzOiBNYXA8c3RyaW5nLCBhbnk+LCBwdWJsaWMgZ2V0dGVyczogTWFwPHN0cmluZywgRnVuY3Rpb24+LFxuICAgICAgICAgICAgICBwdWJsaWMgbWV0aG9kczogTWFwPHN0cmluZywgRnVuY3Rpb24+KSB7XG4gICAgc3VwZXIoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSwgYXJnc1s3XSwgYXJnc1s4XSk7XG4gIH1cbiAgY3JlYXRlSW50ZXJuYWwocm9vdFNlbGVjdG9yOiBzdHJpbmcgfCBhbnkpOiBBcHBFbGVtZW50IHtcbiAgICB2YXIgbSA9IHRoaXMubWV0aG9kcy5nZXQoJ2NyZWF0ZUludGVybmFsJyk7XG4gICAgaWYgKGlzUHJlc2VudChtKSkge1xuICAgICAgcmV0dXJuIG0ocm9vdFNlbGVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmNyZWF0ZUludGVybmFsKHJvb3RTZWxlY3Rvcik7XG4gICAgfVxuICB9XG4gIGluamVjdG9yR2V0SW50ZXJuYWwodG9rZW46IGFueSwgbm9kZUluZGV4OiBudW1iZXIsIG5vdEZvdW5kUmVzdWx0OiBhbnkpOiBhbnkge1xuICAgIHZhciBtID0gdGhpcy5tZXRob2RzLmdldCgnaW5qZWN0b3JHZXRJbnRlcm5hbCcpO1xuICAgIGlmIChpc1ByZXNlbnQobSkpIHtcbiAgICAgIHJldHVybiBtKHRva2VuLCBub2RlSW5kZXgsIG5vdEZvdW5kUmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmluamVjdG9yR2V0KHRva2VuLCBub2RlSW5kZXgsIG5vdEZvdW5kUmVzdWx0KTtcbiAgICB9XG4gIH1cbiAgZGVzdHJveUludGVybmFsKCk6IHZvaWQge1xuICAgIHZhciBtID0gdGhpcy5tZXRob2RzLmdldCgnZGVzdHJveUludGVybmFsJyk7XG4gICAgaWYgKGlzUHJlc2VudChtKSkge1xuICAgICAgcmV0dXJuIG0oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmRlc3Ryb3lJbnRlcm5hbCgpO1xuICAgIH1cbiAgfVxuICBkaXJ0eVBhcmVudFF1ZXJpZXNJbnRlcm5hbCgpOiB2b2lkIHtcbiAgICB2YXIgbSA9IHRoaXMubWV0aG9kcy5nZXQoJ2RpcnR5UGFyZW50UXVlcmllc0ludGVybmFsJyk7XG4gICAgaWYgKGlzUHJlc2VudChtKSkge1xuICAgICAgcmV0dXJuIG0oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmRpcnR5UGFyZW50UXVlcmllc0ludGVybmFsKCk7XG4gICAgfVxuICB9XG4gIGRldGVjdENoYW5nZXNJbnRlcm5hbCh0aHJvd09uQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdmFyIG0gPSB0aGlzLm1ldGhvZHMuZ2V0KCdkZXRlY3RDaGFuZ2VzSW50ZXJuYWwnKTtcbiAgICBpZiAoaXNQcmVzZW50KG0pKSB7XG4gICAgICByZXR1cm4gbSh0aHJvd09uQ2hhbmdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmRldGVjdENoYW5nZXNJbnRlcm5hbCh0aHJvd09uQ2hhbmdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar compile_metadata_1 = require('./compile_metadata');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar style_compiler_1 = require('./style_compiler');\r\nvar view_compiler_1 = require('./view_compiler/view_compiler');\r\nvar template_parser_1 = require('./template_parser');\r\nvar directive_normalizer_1 = require('./directive_normalizer');\r\nvar runtime_metadata_1 = require('./runtime_metadata');\r\nvar component_factory_1 = require('angular2/src/core/linker/component_factory');\r\nvar config_1 = require('./config');\r\nvar ir = require('./output/output_ast');\r\nvar output_jit_1 = require('./output/output_jit');\r\nvar output_interpreter_1 = require('./output/output_interpreter');\r\nvar interpretive_view_1 = require('./output/interpretive_view');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\n/**\r\n * An internal module of the Angular compiler that begins with component types,\r\n * extracts templates, and eventually produces a compiled version of the component\r\n * ready for linking into an application.\r\n */\r\nvar RuntimeCompiler = (function () {\r\n function RuntimeCompiler(_runtimeMetadataResolver, _templateNormalizer, _templateParser, _styleCompiler, _viewCompiler, _xhr, _genConfig) {\r\n this._runtimeMetadataResolver = _runtimeMetadataResolver;\r\n this._templateNormalizer = _templateNormalizer;\r\n this._templateParser = _templateParser;\r\n this._styleCompiler = _styleCompiler;\r\n this._viewCompiler = _viewCompiler;\r\n this._xhr = _xhr;\r\n this._genConfig = _genConfig;\r\n this._styleCache = new Map();\r\n this._hostCacheKeys = new Map();\r\n this._compiledTemplateCache = new Map();\r\n this._compiledTemplateDone = new Map();\r\n }\r\n RuntimeCompiler.prototype.resolveComponent = function (componentType) {\r\n var compMeta = this._runtimeMetadataResolver.getDirectiveMetadata(componentType);\r\n var hostCacheKey = this._hostCacheKeys.get(componentType);\r\n if (lang_1.isBlank(hostCacheKey)) {\r\n hostCacheKey = new Object();\r\n this._hostCacheKeys.set(componentType, hostCacheKey);\r\n assertComponent(compMeta);\r\n var hostMeta = compile_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);\r\n this._loadAndCompileComponent(hostCacheKey, hostMeta, [compMeta], [], []);\r\n }\r\n return this._compiledTemplateDone.get(hostCacheKey)\r\n .then(function (compiledTemplate) { return new component_factory_1.ComponentFactory(compMeta.selector, compiledTemplate.viewFactory, componentType); });\r\n };\r\n RuntimeCompiler.prototype.clearCache = function () {\r\n this._styleCache.clear();\r\n this._compiledTemplateCache.clear();\r\n this._compiledTemplateDone.clear();\r\n this._hostCacheKeys.clear();\r\n };\r\n RuntimeCompiler.prototype._loadAndCompileComponent = function (cacheKey, compMeta, viewDirectives, pipes, compilingComponentsPath) {\r\n var _this = this;\r\n var compiledTemplate = this._compiledTemplateCache.get(cacheKey);\r\n var done = this._compiledTemplateDone.get(cacheKey);\r\n if (lang_1.isBlank(compiledTemplate)) {\r\n compiledTemplate = new CompiledTemplate();\r\n this._compiledTemplateCache.set(cacheKey, compiledTemplate);\r\n done =\r\n async_1.PromiseWrapper.all([this._compileComponentStyles(compMeta)].concat(viewDirectives.map(function (dirMeta) { return _this._templateNormalizer.normalizeDirective(dirMeta); })))\r\n .then(function (stylesAndNormalizedViewDirMetas) {\r\n var normalizedViewDirMetas = stylesAndNormalizedViewDirMetas.slice(1);\r\n var styles = stylesAndNormalizedViewDirMetas[0];\r\n var parsedTemplate = _this._templateParser.parse(compMeta, compMeta.template.template, normalizedViewDirMetas, pipes, compMeta.type.name);\r\n var childPromises = [];\r\n compiledTemplate.init(_this._compileComponent(compMeta, parsedTemplate, styles, pipes, compilingComponentsPath, childPromises));\r\n return async_1.PromiseWrapper.all(childPromises).then(function (_) { return compiledTemplate; });\r\n });\r\n this._compiledTemplateDone.set(cacheKey, done);\r\n }\r\n return compiledTemplate;\r\n };\r\n RuntimeCompiler.prototype._compileComponent = function (compMeta, parsedTemplate, styles, pipes, compilingComponentsPath, childPromises) {\r\n var _this = this;\r\n var compileResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, new ir.ExternalExpr(new compile_metadata_1.CompileIdentifierMetadata({ runtime: styles })), pipes);\r\n compileResult.dependencies.forEach(function (dep) {\r\n var childCompilingComponentsPath = collection_1.ListWrapper.clone(compilingComponentsPath);\r\n var childCacheKey = dep.comp.type.runtime;\r\n var childViewDirectives = _this._runtimeMetadataResolver.getViewDirectivesMetadata(dep.comp.type.runtime);\r\n var childViewPipes = _this._runtimeMetadataResolver.getViewPipesMetadata(dep.comp.type.runtime);\r\n var childIsRecursive = collection_1.ListWrapper.contains(childCompilingComponentsPath, childCacheKey);\r\n childCompilingComponentsPath.push(childCacheKey);\r\n var childComp = _this._loadAndCompileComponent(dep.comp.type.runtime, dep.comp, childViewDirectives, childViewPipes, childCompilingComponentsPath);\r\n dep.factoryPlaceholder.runtime = childComp.proxyViewFactory;\r\n dep.factoryPlaceholder.name = \"viewFactory_\" + dep.comp.type.name;\r\n if (!childIsRecursive) {\r\n // Only wait for a child if it is not a cycle\r\n childPromises.push(_this._compiledTemplateDone.get(childCacheKey));\r\n }\r\n });\r\n var factory;\r\n if (lang_1.IS_DART || !this._genConfig.useJit) {\r\n factory = output_interpreter_1.interpretStatements(compileResult.statements, compileResult.viewFactoryVar, new interpretive_view_1.InterpretiveAppViewInstanceFactory());\r\n }\r\n else {\r\n factory = output_jit_1.jitStatements(compMeta.type.name + \".template.js\", compileResult.statements, compileResult.viewFactoryVar);\r\n }\r\n return factory;\r\n };\r\n RuntimeCompiler.prototype._compileComponentStyles = function (compMeta) {\r\n var compileResult = this._styleCompiler.compileComponent(compMeta);\r\n return this._resolveStylesCompileResult(compMeta.type.name, compileResult);\r\n };\r\n RuntimeCompiler.prototype._resolveStylesCompileResult = function (sourceUrl, result) {\r\n var _this = this;\r\n var promises = result.dependencies.map(function (dep) { return _this._loadStylesheetDep(dep); });\r\n return async_1.PromiseWrapper.all(promises)\r\n .then(function (cssTexts) {\r\n var nestedCompileResultPromises = [];\r\n for (var i = 0; i < result.dependencies.length; i++) {\r\n var dep = result.dependencies[i];\r\n var cssText = cssTexts[i];\r\n var nestedCompileResult = _this._styleCompiler.compileStylesheet(dep.sourceUrl, cssText, dep.isShimmed);\r\n nestedCompileResultPromises.push(_this._resolveStylesCompileResult(dep.sourceUrl, nestedCompileResult));\r\n }\r\n return async_1.PromiseWrapper.all(nestedCompileResultPromises);\r\n })\r\n .then(function (nestedStylesArr) {\r\n for (var i = 0; i < result.dependencies.length; i++) {\r\n var dep = result.dependencies[i];\r\n dep.valuePlaceholder.runtime = nestedStylesArr[i];\r\n dep.valuePlaceholder.name = \"importedStyles\" + i;\r\n }\r\n if (lang_1.IS_DART || !_this._genConfig.useJit) {\r\n return output_interpreter_1.interpretStatements(result.statements, result.stylesVar, new interpretive_view_1.InterpretiveAppViewInstanceFactory());\r\n }\r\n else {\r\n return output_jit_1.jitStatements(sourceUrl + \".css.js\", result.statements, result.stylesVar);\r\n }\r\n });\r\n };\r\n RuntimeCompiler.prototype._loadStylesheetDep = function (dep) {\r\n var cacheKey = \"\" + dep.sourceUrl + (dep.isShimmed ? '.shim' : '');\r\n var cssTextPromise = this._styleCache.get(cacheKey);\r\n if (lang_1.isBlank(cssTextPromise)) {\r\n cssTextPromise = this._xhr.get(dep.sourceUrl);\r\n this._styleCache.set(cacheKey, cssTextPromise);\r\n }\r\n return cssTextPromise;\r\n };\r\n RuntimeCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [runtime_metadata_1.RuntimeMetadataResolver, directive_normalizer_1.DirectiveNormalizer, template_parser_1.TemplateParser, style_compiler_1.StyleCompiler, view_compiler_1.ViewCompiler, xhr_1.XHR, config_1.CompilerConfig])\r\n ], RuntimeCompiler);\r\n return RuntimeCompiler;\r\n}());\r\nexports.RuntimeCompiler = RuntimeCompiler;\r\nvar CompiledTemplate = (function () {\r\n function CompiledTemplate() {\r\n var _this = this;\r\n this.viewFactory = null;\r\n this.proxyViewFactory = function (viewUtils, childInjector, contextEl) {\r\n return _this.viewFactory(viewUtils, childInjector, contextEl);\r\n };\r\n }\r\n CompiledTemplate.prototype.init = function (viewFactory) { this.viewFactory = viewFactory; };\r\n return CompiledTemplate;\r\n}());\r\nfunction assertComponent(meta) {\r\n if (!meta.isComponent) {\r\n throw new exceptions_1.BaseException(\"Could not compile '\" + meta.type.name + \"' because it is not a component.\");\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZV9jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21waWxlci9ydW50aW1lX2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFRTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUtPLGdDQUFnQyxDQUFDLENBQUE7QUFDeEMsc0JBQTZCLDJCQUEyQixDQUFDLENBQUE7QUFDekQsaUNBUU8sb0JBQW9CLENBQUMsQ0FBQTtBQWdCNUIsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsK0JBQTBFLGtCQUFrQixDQUFDLENBQUE7QUFDN0YsOEJBQTJCLCtCQUErQixDQUFDLENBQUE7QUFDM0QsZ0NBQTZCLG1CQUFtQixDQUFDLENBQUE7QUFDakQscUNBQWtDLHdCQUF3QixDQUFDLENBQUE7QUFDM0QsaUNBQXNDLG9CQUFvQixDQUFDLENBQUE7QUFDM0Qsa0NBQStCLDRDQUE0QyxDQUFDLENBQUE7QUFNNUUsdUJBQTZCLFVBQVUsQ0FBQyxDQUFBO0FBQ3hDLElBQVksRUFBRSxXQUFNLHFCQUFxQixDQUFDLENBQUE7QUFDMUMsMkJBQTRCLHFCQUFxQixDQUFDLENBQUE7QUFDbEQsbUNBQWtDLDZCQUE2QixDQUFDLENBQUE7QUFDaEUsa0NBQWlELDRCQUE0QixDQUFDLENBQUE7QUFFOUUsb0JBQWtCLDJCQUEyQixDQUFDLENBQUE7QUFFOUM7Ozs7R0FJRztBQUVIO0lBTUUseUJBQW9CLHdCQUFpRCxFQUNqRCxtQkFBd0MsRUFDeEMsZUFBK0IsRUFBVSxjQUE2QixFQUN0RSxhQUEyQixFQUFVLElBQVMsRUFDOUMsVUFBMEI7UUFKMUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQUNqRCx3QkFBbUIsR0FBbkIsbUJB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QUFDO1FBRzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUztZQUN4RCxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUM7UUFBckQsQ0FBcUQsQ0FBQztJQUM1RCxDQUFDO0lBRUQsK0JBQUksR0FBSixVQUFLLFdBQXFCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLHVCQUFDO0FBQUQsQ0FBQyxBQVRELElBU0M7QUFFRCx5QkFBeUIsSUFBOEI7SUFDckQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN0QixNQUFNLElBQUksMEJBQWEsQ0FBQyx3QkFBc0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUFrQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJU19EQVJULFxuICBUeXBlLFxuICBKc29uLFxuICBpc0JsYW5rLFxuICBpc1ByZXNlbnQsXG4gIHN0cmluZ2lmeSxcbiAgZXZhbEV4cHJlc3Npb25cbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7XG4gIExpc3RXcmFwcGVyLFxuICBTZXRXcmFwcGVyLFxuICBNYXBXcmFwcGVyLFxuICBTdHJpbmdNYXBXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7XG4gIGNyZWF0ZUhvc3RDb21wb25lbnRNZXRhLFxuICBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gIENvbXBpbGVUeXBlTWV0YWRhdGEsXG4gIENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhLFxuICBDb21waWxlUGlwZU1ldGFkYXRhLFxuICBDb21waWxlTWV0YWRhdGFXaXRoVHlwZSxcbiAgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YVxufSBmcm9tICcuL2NvbXBpbGVfbWV0YWRhdGEnO1xuaW1wb3J0IHtcbiAgVGVtcGxhdGVBc3QsXG4gIFRlbXBsYXRlQXN0VmlzaXRvcixcbiAgTmdDb250ZW50QXN0LFxuICBFbWJlZGRlZFRlbXBsYXRlQXN0LFxuICBFbGVtZW50QXN0LFxuICBCb3VuZEV2ZW50QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQXR0ckFzdCxcbiAgQm91bmRUZXh0QXN0LFxuICBUZXh0QXN0LFxuICBEaXJlY3RpdmVBc3QsXG4gIEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsXG4gIHRlbXBsYXRlVmlzaXRBbGxcbn0gZnJvbSAnLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1N0eWxlQ29tcGlsZXIsIFN0eWxlc0NvbXBpbGVEZXBlbmRlbmN5LCBTdHlsZXNDb21waWxlUmVzdWx0fSBmcm9tICcuL3N0eWxlX2NvbXBpbGVyJztcbmltcG9ydCB7Vmlld0NvbXBpbGVyfSBmcm9tICcuL3ZpZXdfY29tcGlsZXIvdmlld19jb21waWxlcic7XG5pbXBvcnQge1RlbXBsYXRlUGFyc2VyfSBmcm9tICcuL3RlbXBsYXRlX3BhcnNlcic7XG5pbXBvcnQge0RpcmVjdGl2ZU5vcm1hbGl6ZXJ9IGZyb20gJy4vZGlyZWN0aXZlX25vcm1hbGl6ZXInO1xuaW1wb3J0IHtSdW50aW1lTWV0YWRhdGFSZXNvbHZlcn0gZnJvbSAnLi9ydW50aW1lX21ldGFkYXRhJztcbmltcG9ydCB7Q29tcG9uZW50RmFjdG9yeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5JztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlc29sdmVyLFxuICBSZWZsZWN0b3JDb21wb25lbnRSZXNvbHZlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvY29tcG9uZW50X3Jlc29sdmVyJztcblxuaW1wb3J0IHtDb21waWxlckNvbmZpZ30gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge2ppdFN0YXRlbWVudHN9IGZyb20gJy4vb3V0cHV0L291dHB1dF9qaXQnO1xuaW1wb3J0IHtpbnRlcnByZXRTdGF0ZW1lbnRzfSBmcm9tICcuL291dHB1dC9vdXRwdXRfaW50ZXJwcmV0ZXInO1xuaW1wb3J0IHtJbnRlcnByZXRpdmVBcHBWaWV3SW5zdGFuY2VGYWN0b3J5fSBmcm9tICcuL291dHB1dC9pbnRlcnByZXRpdmVfdmlldyc7XG5cbmltcG9ydCB7WEhSfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIveGhyJztcblxuLyoqXG4gKiBBbiBpbnRlcm5hbCBtb2R1bGUgb2YgdGhlIEFuZ3VsYXIgY29tcGlsZXIgdGhhdCBiZWdpbnMgd2l0aCBjb21wb25lbnQgdHlwZXMsXG4gKiBleHRyYWN0cyB0ZW1wbGF0ZXMsIGFuZCBldmVudHVhbGx5IHByb2R1Y2VzIGEgY29tcGlsZWQgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50XG4gKiByZWFkeSBmb3IgbGlua2luZyBpbnRvIGFuIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbXBpbGVyIGltcGxlbWVudHMgQ29tcG9uZW50UmVzb2x2ZXIge1xuICBwcml2YXRlIF9zdHlsZUNhY2hlOiBNYXA8c3RyaW5nLCBQcm9taXNlPHN0cmluZz4+ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8c3RyaW5nPj4oKTtcbiAgcHJpdmF0ZSBfaG9zdENhY2hlS2V5cyA9IG5ldyBNYXA8VHlwZSwgYW55PigpO1xuICBwcml2YXRlIF9jb21waWxlZFRlbXBsYXRlQ2FjaGUgPSBuZXcgTWFwPGFueSwgQ29tcGlsZWRUZW1wbGF0ZT4oKTtcbiAgcHJpdmF0ZSBfY29tcGlsZWRUZW1wbGF0ZURvbmUgPSBuZXcgTWFwPGFueSwgUHJvbWlzZTxDb21waWxlZFRlbXBsYXRlPj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ydW50aW1lTWV0YWRhdGFSZXNvbHZlcjogUnVudGltZU1ldGFkYXRhUmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RlbXBsYXRlTm9ybWFsaXplcjogRGlyZWN0aXZlTm9ybWFsaXplcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdGVtcGxhdGVQYXJzZXI6IFRlbXBsYXRlUGFyc2VyLCBwcml2YXRlIF9zdHlsZUNvbXBpbGVyOiBTdHlsZUNvbXBpbGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3Q29tcGlsZXI6IFZpZXdDb21waWxlciwgcHJpdmF0ZSBfeGhyOiBYSFIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2dlbkNvbmZpZzogQ29tcGlsZXJDb25maWcpIHt9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChjb21wb25lbnRUeXBlOiBUeXBlKTogUHJvbWlzZTxDb21wb25lbnRGYWN0b3J5PiB7XG4gICAgdmFyIGNvbXBNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEgPVxuICAgICAgICB0aGlzLl9ydW50aW1lTWV0YWRhdGFSZXNvbHZlci5nZXREaXJlY3RpdmVNZXRhZGF0YShjb21wb25lbnRUeXBlKTtcbiAgICB2YXIgaG9zdENhY2hlS2V5ID0gdGhpcy5faG9zdENhY2hlS2V5cy5nZXQoY29tcG9uZW50VHlwZSk7XG4gICAgaWYgKGlzQmxhbmsoaG9zdENhY2hlS2V5KSkge1xuICAgICAgaG9zdENhY2hlS2V5ID0gbmV3IE9iamVjdCgpO1xuICAgICAgdGhpcy5faG9zdENhY2hlS2V5cy5zZXQoY29tcG9uZW50VHlwZSwgaG9zdENhY2hlS2V5KTtcbiAgICAgIGFzc2VydENvbXBvbmVudChjb21wTWV0YSk7XG4gICAgICB2YXIgaG9zdE1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSA9XG4gICAgICAgICAgY3JlYXRlSG9zdENvbXBvbmVudE1ldGEoY29tcE1ldGEudHlwZSwgY29tcE1ldGEuc2VsZWN0b3IpO1xuXG4gICAgICB0aGlzLl9sb2FkQW5kQ29tcGlsZUNvbXBvbmVudChob3N0Q2FjaGVLZXksIGhvc3RNZXRhLCBbY29tcE1ldGFdLCBbXSwgW10pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29tcGlsZWRUZW1wbGF0ZURvbmUuZ2V0KGhvc3RDYWNoZUtleSlcbiAgICAgICAgLnRoZW4oKGNvbXBpbGVkVGVtcGxhdGU6IENvbXBpbGVkVGVtcGxhdGUpID0+IG5ldyBDb21wb25lbnRGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgY29tcE1ldGEuc2VsZWN0b3IsIGNvbXBpbGVkVGVtcGxhdGUudmlld0ZhY3RvcnksIGNvbXBvbmVudFR5cGUpKTtcbiAgfVxuXG4gIGNsZWFyQ2FjaGUoKSB7XG4gICAgdGhpcy5fc3R5bGVDYWNoZS5jbGVhcigpO1xuICAgIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVDYWNoZS5jbGVhcigpO1xuICAgIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVEb25lLmNsZWFyKCk7XG4gICAgdGhpcy5faG9zdENhY2hlS2V5cy5jbGVhcigpO1xuICB9XG5cblxuICBwcml2YXRlIF9sb2FkQW5kQ29tcGlsZUNvbXBvbmVudChjYWNoZUtleTogYW55LCBjb21wTWV0YTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3RGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGluZ0NvbXBvbmVudHNQYXRoOiBhbnlbXSk6IENvbXBpbGVkVGVtcGxhdGUge1xuICAgIHZhciBjb21waWxlZFRlbXBsYXRlID0gdGhpcy5fY29tcGlsZWRUZW1wbGF0ZUNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgdmFyIGRvbmUgPSB0aGlzLl9jb21waWxlZFRlbXBsYXRlRG9uZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChpc0JsYW5rKGNvbXBpbGVkVGVtcGxhdGUpKSB7XG4gICAgICBjb21waWxlZFRlbXBsYXRlID0gbmV3IENvbXBpbGVkVGVtcGxhdGUoKTtcbiAgICAgIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVDYWNoZS5zZXQoY2FjaGVLZXksIGNvbXBpbGVkVGVtcGxhdGUpO1xuICAgICAgZG9uZSA9XG4gICAgICAgICAgUHJvbWlzZVdyYXBwZXIuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs8YW55PnRoaXMuX2NvbXBpbGVDb21wb25lbnRTdHlsZXMoY29tcE1ldGEpXS5jb25jYXQodmlld0RpcmVjdGl2ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJNZXRhID0+IHRoaXMuX3RlbXBsYXRlTm9ybWFsaXplci5ub3JtYWxpemVEaXJlY3RpdmUoZGlyTWV0YSkpKSlcbiAgICAgICAgICAgICAgLnRoZW4oKHN0eWxlc0FuZE5vcm1hbGl6ZWRWaWV3RGlyTWV0YXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIG5vcm1hbGl6ZWRWaWV3RGlyTWV0YXMgPSBzdHlsZXNBbmROb3JtYWxpemVkVmlld0Rpck1ldGFzLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIHZhciBzdHlsZXMgPSBzdHlsZXNBbmROb3JtYWxpemVkVmlld0Rpck1ldGFzWzBdO1xuICAgICAgICAgICAgICAgIHZhciBwYXJzZWRUZW1wbGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlUGFyc2VyLnBhcnNlKGNvbXBNZXRhLCBjb21wTWV0YS50ZW1wbGF0ZS50ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZpZXdEaXJNZXRhcywgcGlwZXMsIGNvbXBNZXRhLnR5cGUubmFtZSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRQcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbXBpbGVkVGVtcGxhdGUuaW5pdCh0aGlzLl9jb21waWxlQ29tcG9uZW50KGNvbXBNZXRhLCBwYXJzZWRUZW1wbGF0ZSwgc3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVzLCBjb21waWxpbmdDb21wb25lbnRzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFByb21pc2VzKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLmFsbChjaGlsZFByb21pc2VzKS50aGVuKChfKSA9PiB7IHJldHVybiBjb21waWxlZFRlbXBsYXRlOyB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICB0aGlzLl9jb21waWxlZFRlbXBsYXRlRG9uZS5zZXQoY2FjaGVLZXksIGRvbmUpO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGlsZWRUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBpbGVDb21wb25lbnQoY29tcE1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgcGFyc2VkVGVtcGxhdGU6IFRlbXBsYXRlQXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzdHJpbmdbXSwgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxpbmdDb21wb25lbnRzUGF0aDogYW55W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9taXNlczogUHJvbWlzZTxhbnk+W10pOiBGdW5jdGlvbiB7XG4gICAgdmFyIGNvbXBpbGVSZXN1bHQgPSB0aGlzLl92aWV3Q29tcGlsZXIuY29tcGlsZUNvbXBvbmVudChcbiAgICAgICAgY29tcE1ldGEsIHBhcnNlZFRlbXBsYXRlLFxuICAgICAgICBuZXcgaXIuRXh0ZXJuYWxFeHByKG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtydW50aW1lOiBzdHlsZXN9KSksIHBpcGVzKTtcbiAgICBjb21waWxlUmVzdWx0LmRlcGVuZGVuY2llcy5mb3JFYWNoKChkZXApID0+IHtcbiAgICAgIHZhciBjaGlsZENvbXBpbGluZ0NvbXBvbmVudHNQYXRoID0gTGlzdFdyYXBwZXIuY2xvbmUoY29tcGlsaW5nQ29tcG9uZW50c1BhdGgpO1xuXG4gICAgICB2YXIgY2hpbGRDYWNoZUtleSA9IGRlcC5jb21wLnR5cGUucnVudGltZTtcbiAgICAgIHZhciBjaGlsZFZpZXdEaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSA9XG4gICAgICAgICAgdGhpcy5fcnVudGltZU1ldGFkYXRhUmVzb2x2ZXIuZ2V0Vmlld0RpcmVjdGl2ZXNNZXRhZGF0YShkZXAuY29tcC50eXBlLnJ1bnRpbWUpO1xuICAgICAgdmFyIGNoaWxkVmlld1BpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10gPVxuICAgICAgICAgIHRoaXMuX3J1bnRpbWVNZXRhZGF0YVJlc29sdmVyLmdldFZpZXdQaXBlc01ldGFkYXRhKGRlcC5jb21wLnR5cGUucnVudGltZSk7XG4gICAgICB2YXIgY2hpbGRJc1JlY3Vyc2l2ZSA9IExpc3RXcmFwcGVyLmNvbnRhaW5zKGNoaWxkQ29tcGlsaW5nQ29tcG9uZW50c1BhdGgsIGNoaWxkQ2FjaGVLZXkpO1xuICAgICAgY2hpbGRDb21waWxpbmdDb21wb25lbnRzUGF0aC5wdXNoKGNoaWxkQ2FjaGVLZXkpO1xuXG4gICAgICB2YXIgY2hpbGRDb21wID1cbiAgICAgICAgICB0aGlzLl9sb2FkQW5kQ29tcGlsZUNvbXBvbmVudChkZXAuY29tcC50eXBlLnJ1bnRpbWUsIGRlcC5jb21wLCBjaGlsZFZpZXdEaXJlY3RpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkVmlld1BpcGVzLCBjaGlsZENvbXBpbGluZ0NvbXBvbmVudHNQYXRoKTtcbiAgICAgIGRlcC5mYWN0b3J5UGxhY2Vob2xkZXIucnVudGltZSA9IGNoaWxkQ29tcC5wcm94eVZpZXdGYWN0b3J5O1xuICAgICAgZGVwLmZhY3RvcnlQbGFjZWhvbGRlci5uYW1lID0gYHZpZXdGYWN0b3J5XyR7ZGVwLmNvbXAudHlwZS5uYW1lfWA7XG4gICAgICBpZiAoIWNoaWxkSXNSZWN1cnNpdmUpIHtcbiAgICAgICAgLy8gT25seSB3YWl0IGZvciBhIGNoaWxkIGlmIGl0IGlzIG5vdCBhIGN5Y2xlXG4gICAgICAgIGNoaWxkUHJvbWlzZXMucHVzaCh0aGlzLl9jb21waWxlZFRlbXBsYXRlRG9uZS5nZXQoY2hpbGRDYWNoZUtleSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmYWN0b3J5O1xuICAgIGlmIChJU19EQVJUIHx8ICF0aGlzLl9nZW5Db25maWcudXNlSml0KSB7XG4gICAgICBmYWN0b3J5ID0gaW50ZXJwcmV0U3RhdGVtZW50cyhjb21waWxlUmVzdWx0LnN0YXRlbWVudHMsIGNvbXBpbGVSZXN1bHQudmlld0ZhY3RvcnlWYXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZXJwcmV0aXZlQXBwVmlld0luc3RhbmNlRmFjdG9yeSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmFjdG9yeSA9IGppdFN0YXRlbWVudHMoYCR7Y29tcE1ldGEudHlwZS5uYW1lfS50ZW1wbGF0ZS5qc2AsIGNvbXBpbGVSZXN1bHQuc3RhdGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVSZXN1bHQudmlld0ZhY3RvcnlWYXIpO1xuICAgIH1cbiAgICByZXR1cm4gZmFjdG9yeTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBpbGVDb21wb25lbnRTdHlsZXMoY29tcE1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICB2YXIgY29tcGlsZVJlc3VsdCA9IHRoaXMuX3N0eWxlQ29tcGlsZXIuY29tcGlsZUNvbXBvbmVudChjb21wTWV0YSk7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVTdHlsZXNDb21waWxlUmVzdWx0KGNvbXBNZXRhLnR5cGUubmFtZSwgY29tcGlsZVJlc3VsdCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNvbHZlU3R5bGVzQ29tcGlsZVJlc3VsdChzb3VyY2VVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBTdHlsZXNDb21waWxlUmVzdWx0KTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHZhciBwcm9taXNlcyA9IHJlc3VsdC5kZXBlbmRlbmNpZXMubWFwKChkZXApID0+IHRoaXMuX2xvYWRTdHlsZXNoZWV0RGVwKGRlcCkpO1xuICAgIHJldHVybiBQcm9taXNlV3JhcHBlci5hbGwocHJvbWlzZXMpXG4gICAgICAgIC50aGVuKChjc3NUZXh0cykgPT4ge1xuICAgICAgICAgIHZhciBuZXN0ZWRDb21waWxlUmVzdWx0UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBkZXAgPSByZXN1bHQuZGVwZW5kZW5jaWVzW2ldO1xuICAgICAgICAgICAgdmFyIGNzc1RleHQgPSBjc3NUZXh0c1tpXTtcbiAgICAgICAgICAgIHZhciBuZXN0ZWRDb21waWxlUmVzdWx0ID1cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZUNvbXBpbGVyLmNvbXBpbGVTdHlsZXNoZWV0KGRlcC5zb3VyY2VVcmwsIGNzc1RleHQsIGRlcC5pc1NoaW1tZWQpO1xuICAgICAgICAgICAgbmVzdGVkQ29tcGlsZVJlc3VsdFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZVN0eWxlc0NvbXBpbGVSZXN1bHQoZGVwLnNvdXJjZVVybCwgbmVzdGVkQ29tcGlsZVJlc3VsdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZVdyYXBwZXIuYWxsKG5lc3RlZENvbXBpbGVSZXN1bHRQcm9taXNlcyk7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChuZXN0ZWRTdHlsZXNBcnIpID0+IHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBkZXAgPSByZXN1bHQuZGVwZW5kZW5jaWVzW2ldO1xuICAgICAgICAgICAgZGVwLnZhbHVlUGxhY2Vob2xkZXIucnVudGltZSA9IG5lc3RlZFN0eWxlc0FycltpXTtcbiAgICAgICAgICAgIGRlcC52YWx1ZVBsYWNlaG9sZGVyLm5hbWUgPSBgaW1wb3J0ZWRTdHlsZXMke2l9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKElTX0RBUlQgfHwgIXRoaXMuX2dlbkNvbmZpZy51c2VKaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcnByZXRTdGF0ZW1lbnRzKHJlc3VsdC5zdGF0ZW1lbnRzLCByZXN1bHQuc3R5bGVzVmFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVycHJldGl2ZUFwcFZpZXdJbnN0YW5jZUZhY3RvcnkoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBqaXRTdGF0ZW1lbnRzKGAke3NvdXJjZVVybH0uY3NzLmpzYCwgcmVzdWx0LnN0YXRlbWVudHMsIHJlc3VsdC5zdHlsZXNWYXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkU3R5bGVzaGVldERlcChkZXA6IFN0eWxlc0NvbXBpbGVEZXBlbmRlbmN5KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB2YXIgY2FjaGVLZXkgPSBgJHtkZXAuc291cmNlVXJsfSR7ZGVwLmlzU2hpbW1lZCA/ICcuc2hpbScgOiAnJ31gO1xuICAgIHZhciBjc3NUZXh0UHJvbWlzZSA9IHRoaXMuX3N0eWxlQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAoaXNCbGFuayhjc3NUZXh0UHJvbWlzZSkpIHtcbiAgICAgIGNzc1RleHRQcm9taXNlID0gdGhpcy5feGhyLmdldChkZXAuc291cmNlVXJsKTtcbiAgICAgIHRoaXMuX3N0eWxlQ2FjaGUuc2V0KGNhY2hlS2V5LCBjc3NUZXh0UHJvbWlzZSk7XG4gICAgfVxuICAgIHJldHVybiBjc3NUZXh0UHJvbWlzZTtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlZFRlbXBsYXRlIHtcbiAgdmlld0ZhY3Rvcnk6IEZ1bmN0aW9uID0gbnVsbDtcbiAgcHJveHlWaWV3RmFjdG9yeTogRnVuY3Rpb247XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucHJveHlWaWV3RmFjdG9yeSA9ICh2aWV3VXRpbHMsIGNoaWxkSW5qZWN0b3IsIGNvbnRleHRFbCkgPT5cbiAgICAgICAgdGhpcy52aWV3RmFjdG9yeSh2aWV3VXRpbHMsIGNoaWxkSW5qZWN0b3IsIGNvbnRleHRFbCk7XG4gIH1cblxuICBpbml0KHZpZXdGYWN0b3J5OiBGdW5jdGlvbikgeyB0aGlzLnZpZXdGYWN0b3J5ID0gdmlld0ZhY3Rvcnk7IH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0Q29tcG9uZW50KG1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSkge1xuICBpZiAoIW1ldGEuaXNDb21wb25lbnQpIHtcbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ291bGQgbm90IGNvbXBpbGUgJyR7bWV0YS50eXBlLm5hbWV9JyBiZWNhdXNlIGl0IGlzIG5vdCBhIGNvbXBvbmVudC5gKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.DOM = null;\r\nfunction setRootDomAdapter(adapter) {\r\n if (lang_1.isBlank(exports.DOM)) {\r\n exports.DOM = adapter;\r\n }\r\n}\r\nexports.setRootDomAdapter = setRootDomAdapter;\r\n/* tslint:disable:requireParameterType */\r\n/**\r\n * Provides DOM operations in an environment-agnostic way.\r\n */\r\nvar DomAdapter = (function () {\r\n function DomAdapter() {\r\n }\r\n Object.defineProperty(DomAdapter.prototype, \"attrToPropMap\", {\r\n /**\r\n * Maps attribute names to their corresponding property names for cases\r\n * where attribute name doesn't match property name.\r\n */\r\n get: function () { return this._attrToPropMap; },\r\n set: function (value) { this._attrToPropMap = value; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n ;\r\n return DomAdapter;\r\n}());\r\nexports.DomAdapter = DomAdapter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBNEIsMEJBQTBCLENBQUMsQ0FBQTtBQUU1QyxXQUFHLEdBQWUsSUFBSSxDQUFDO0FBRWxDLDJCQUFrQyxPQUFtQjtJQUNuRCxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsV0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLFdBQUcsR0FBRyxPQUFPLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUM7QUFKZSx5QkFBaUIsb0JBSWhDLENBQUE7QUFFRCx5Q0FBeUM7QUFDekM7O0dBRUc7QUFDSDtJQUFBO0lBZ0lBLENBQUM7SUE5R0Msc0JBQUkscUNBQWE7UUFKakI7OztXQUdHO2FBQ0gsY0FBK0MsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2FBQzVFLFVBQWtCLEtBQThCLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDOzs7T0FETjs7O0lBOEc5RSxpQkFBQztBQUFELENBQUMsQUFoSUQsSUFnSUM7QUFoSXFCLGtCQUFVLGFBZ0kvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5leHBvcnQgdmFyIERPTTogRG9tQWRhcHRlciA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSb290RG9tQWRhcHRlcihhZGFwdGVyOiBEb21BZGFwdGVyKSB7XG4gIGlmIChpc0JsYW5rKERPTSkpIHtcbiAgICBET00gPSBhZGFwdGVyO1xuICB9XG59XG5cbi8qIHRzbGludDpkaXNhYmxlOnJlcXVpcmVQYXJhbWV0ZXJUeXBlICovXG4vKipcbiAqIFByb3ZpZGVzIERPTSBvcGVyYXRpb25zIGluIGFuIGVudmlyb25tZW50LWFnbm9zdGljIHdheS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERvbUFkYXB0ZXIge1xuICBhYnN0cmFjdCBoYXNQcm9wZXJ0eShlbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBzZXRQcm9wZXJ0eShlbDogRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTtcbiAgYWJzdHJhY3QgZ2V0UHJvcGVydHkoZWw6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGFueTtcbiAgYWJzdHJhY3QgaW52b2tlKGVsOiBFbGVtZW50LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogYW55O1xuXG4gIGFic3RyYWN0IGxvZ0Vycm9yKGVycm9yKTtcbiAgYWJzdHJhY3QgbG9nKGVycm9yKTtcbiAgYWJzdHJhY3QgbG9nR3JvdXAoZXJyb3IpO1xuICBhYnN0cmFjdCBsb2dHcm91cEVuZCgpO1xuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBhYnN0cmFjdCBnZXRYSFIoKTogVHlwZTtcblxuICAvKipcbiAgICogTWFwcyBhdHRyaWJ1dGUgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcyBmb3IgY2FzZXNcbiAgICogd2hlcmUgYXR0cmlidXRlIG5hbWUgZG9lc24ndCBtYXRjaCBwcm9wZXJ0eSBuYW1lLlxuICAgKi9cbiAgZ2V0IGF0dHJUb1Byb3BNYXAoKToge1trZXk6IHN0cmluZ106IHN0cmluZ30geyByZXR1cm4gdGhpcy5fYXR0clRvUHJvcE1hcDsgfTtcbiAgc2V0IGF0dHJUb1Byb3BNYXAodmFsdWU6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSB7IHRoaXMuX2F0dHJUb1Byb3BNYXAgPSB2YWx1ZTsgfTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYXR0clRvUHJvcE1hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cbiAgYWJzdHJhY3QgcGFyc2UodGVtcGxhdGVIdG1sOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBxdWVyeShzZWxlY3Rvcjogc3RyaW5nKTogYW55O1xuICBhYnN0cmFjdCBxdWVyeVNlbGVjdG9yKGVsLCBzZWxlY3Rvcjogc3RyaW5nKTogSFRNTEVsZW1lbnQ7XG4gIGFic3RyYWN0IHF1ZXJ5U2VsZWN0b3JBbGwoZWwsIHNlbGVjdG9yOiBzdHJpbmcpOiBhbnlbXTtcbiAgYWJzdHJhY3Qgb24oZWwsIGV2dCwgbGlzdGVuZXIpO1xuICBhYnN0cmFjdCBvbkFuZENhbmNlbChlbCwgZXZ0LCBsaXN0ZW5lcik6IEZ1bmN0aW9uO1xuICBhYnN0cmFjdCBkaXNwYXRjaEV2ZW50KGVsLCBldnQpO1xuICBhYnN0cmFjdCBjcmVhdGVNb3VzZUV2ZW50KGV2ZW50VHlwZSk6IGFueTtcbiAgYWJzdHJhY3QgY3JlYXRlRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcpOiBhbnk7XG4gIGFic3RyYWN0IHByZXZlbnREZWZhdWx0KGV2dCk7XG4gIGFic3RyYWN0IGlzUHJldmVudGVkKGV2dCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldElubmVySFRNTChlbCk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0T3V0ZXJIVE1MKGVsKTogc3RyaW5nO1xuICBhYnN0cmFjdCBub2RlTmFtZShub2RlKTogc3RyaW5nO1xuICBhYnN0cmFjdCBub2RlVmFsdWUobm9kZSk6IHN0cmluZztcbiAgYWJzdHJhY3QgdHlwZShub2RlKTogc3RyaW5nO1xuICBhYnN0cmFjdCBjb250ZW50KG5vZGUpOiBhbnk7XG4gIGFic3RyYWN0IGZpcnN0Q2hpbGQoZWwpOiBOb2RlO1xuICBhYnN0cmFjdCBuZXh0U2libGluZyhlbCk6IE5vZGU7XG4gIGFic3RyYWN0IHBhcmVudEVsZW1lbnQoZWwpOiBOb2RlO1xuICBhYnN0cmFjdCBjaGlsZE5vZGVzKGVsKTogTm9kZVtdO1xuICBhYnN0cmFjdCBjaGlsZE5vZGVzQXNMaXN0KGVsKTogTm9kZVtdO1xuICBhYnN0cmFjdCBjbGVhck5vZGVzKGVsKTtcbiAgYWJzdHJhY3QgYXBwZW5kQ2hpbGQoZWwsIG5vZGUpO1xuICBhYnN0cmFjdCByZW1vdmVDaGlsZChlbCwgbm9kZSk7XG4gIGFic3RyYWN0IHJlcGxhY2VDaGlsZChlbCwgbmV3Tm9kZSwgb2xkTm9kZSk7XG4gIGFic3RyYWN0IHJlbW92ZShlbCk6IE5vZGU7XG4gIGFic3RyYWN0IGluc2VydEJlZm9yZShlbCwgbm9kZSk7XG4gIGFic3RyYWN0IGluc2VydEFsbEJlZm9yZShlbCwgbm9kZXMpO1xuICBhYnN0cmFjdCBpbnNlcnRBZnRlcihlbCwgbm9kZSk7XG4gIGFic3RyYWN0IHNldElubmVySFRNTChlbCwgdmFsdWUpO1xuICBhYnN0cmFjdCBnZXRUZXh0KGVsKTogc3RyaW5nO1xuICBhYnN0cmFjdCBzZXRUZXh0KGVsLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgZ2V0VmFsdWUoZWwpOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNldFZhbHVlKGVsLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgZ2V0Q2hlY2tlZChlbCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHNldENoZWNrZWQoZWwsIHZhbHVlOiBib29sZWFuKTtcbiAgYWJzdHJhY3QgY3JlYXRlQ29tbWVudCh0ZXh0OiBzdHJpbmcpOiBhbnk7XG4gIGFic3RyYWN0IGNyZWF0ZVRlbXBsYXRlKGh0bWwpOiBIVE1MRWxlbWVudDtcbiAgYWJzdHJhY3QgY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBkb2M/KTogSFRNTEVsZW1lbnQ7XG4gIGFic3RyYWN0IGNyZWF0ZUVsZW1lbnROUyhuczogc3RyaW5nLCB0YWdOYW1lOiBzdHJpbmcsIGRvYz8pOiBFbGVtZW50O1xuICBhYnN0cmFjdCBjcmVhdGVUZXh0Tm9kZSh0ZXh0OiBzdHJpbmcsIGRvYz8pOiBUZXh0O1xuICBhYnN0cmFjdCBjcmVhdGVTY3JpcHRUYWcoYXR0ck5hbWU6IHN0cmluZywgYXR0clZhbHVlOiBzdHJpbmcsIGRvYz8pOiBIVE1MRWxlbWVudDtcbiAgYWJzdHJhY3QgY3JlYXRlU3R5bGVFbGVtZW50KGNzczogc3RyaW5nLCBkb2M/KTogSFRNTFN0eWxlRWxlbWVudDtcbiAgYWJzdHJhY3QgY3JlYXRlU2hhZG93Um9vdChlbCk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0U2hhZG93Um9vdChlbCk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0SG9zdChlbCk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0RGlzdHJpYnV0ZWROb2RlcyhlbCk6IE5vZGVbXTtcbiAgYWJzdHJhY3QgY2xvbmUgLyo8VCBleHRlbmRzIE5vZGU+Ki8gKG5vZGU6IE5vZGUgLypUKi8pOiBOb2RlIC8qVCovO1xuICBhYnN0cmFjdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50W107XG4gIGFic3RyYWN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50W107XG4gIGFic3RyYWN0IGNsYXNzTGlzdChlbGVtZW50KTogYW55W107XG4gIGFic3RyYWN0IGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHNldFN0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZTogc3RyaW5nLCBzdHlsZVZhbHVlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCByZW1vdmVTdHlsZShlbGVtZW50LCBzdHlsZU5hbWU6IHN0cmluZyk7XG4gIGFic3RyYWN0IGdldFN0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZTogc3RyaW5nKTogc3RyaW5nO1xuICBhYnN0cmFjdCBoYXNTdHlsZShlbGVtZW50LCBzdHlsZU5hbWU6IHN0cmluZywgc3R5bGVWYWx1ZT86IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHRhZ05hbWUoZWxlbWVudCk6IHN0cmluZztcbiAgYWJzdHJhY3QgYXR0cmlidXRlTWFwKGVsZW1lbnQpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICBhYnN0cmFjdCBoYXNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBoYXNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZyk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbnM6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBzZXRBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCByZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk7XG4gIGFic3RyYWN0IHRlbXBsYXRlQXdhcmVSb290KGVsKTtcbiAgYWJzdHJhY3QgY3JlYXRlSHRtbERvY3VtZW50KCk6IEhUTUxEb2N1bWVudDtcbiAgYWJzdHJhY3QgZGVmYXVsdERvYygpOiBIVE1MRG9jdW1lbnQ7XG4gIGFic3RyYWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbCk7XG4gIGFic3RyYWN0IGdldFRpdGxlKCk6IHN0cmluZztcbiAgYWJzdHJhY3Qgc2V0VGl0bGUobmV3VGl0bGU6IHN0cmluZyk7XG4gIGFic3RyYWN0IGVsZW1lbnRNYXRjaGVzKG4sIHNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBpc1RlbXBsYXRlRWxlbWVudChlbDogYW55KTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNUZXh0Tm9kZShub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNDb21tZW50Tm9kZShub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNFbGVtZW50Tm9kZShub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaGFzU2hhZG93Um9vdChub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNTaGFkb3dSb290KG5vZGUpOiBib29sZWFuO1xuICBhYnN0cmFjdCBpbXBvcnRJbnRvRG9jIC8qPFQgZXh0ZW5kcyBOb2RlPiovIChub2RlOiBOb2RlIC8qVCovKTogTm9kZSAvKlQqLztcbiAgYWJzdHJhY3QgYWRvcHROb2RlIC8qPFQgZXh0ZW5kcyBOb2RlPiovIChub2RlOiBOb2RlIC8qVCovKTogTm9kZSAvKlQqLztcbiAgYWJzdHJhY3QgZ2V0SHJlZihlbGVtZW50KTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXRFdmVudEtleShldmVudCk6IHN0cmluZztcbiAgYWJzdHJhY3QgcmVzb2x2ZUFuZFNldEhyZWYoZWxlbWVudCwgYmFzZVVybDogc3RyaW5nLCBocmVmOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBzdXBwb3J0c0RPTUV2ZW50cygpOiBib29sZWFuO1xuICBhYnN0cmFjdCBzdXBwb3J0c05hdGl2ZVNoYWRvd0RPTSgpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXRHbG9iYWxFdmVudFRhcmdldCh0YXJnZXQ6IHN0cmluZyk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0SGlzdG9yeSgpOiBIaXN0b3J5O1xuICBhYnN0cmFjdCBnZXRMb2NhdGlvbigpOiBMb2NhdGlvbjtcbiAgYWJzdHJhY3QgZ2V0QmFzZUhyZWYoKTogc3RyaW5nO1xuICBhYnN0cmFjdCByZXNldEJhc2VFbGVtZW50KCk6IHZvaWQ7XG4gIGFic3RyYWN0IGdldFVzZXJBZ2VudCgpOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNldERhdGEoZWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTogYW55O1xuICBhYnN0cmFjdCBnZXREYXRhKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZztcbiAgYWJzdHJhY3Qgc2V0R2xvYmFsVmFyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk7XG4gIGFic3RyYWN0IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk6IG51bWJlcjtcbiAgYWJzdHJhY3QgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICBhYnN0cmFjdCBwZXJmb3JtYW5jZU5vdygpOiBudW1iZXI7XG4gIGFic3RyYWN0IGdldEFuaW1hdGlvblByZWZpeCgpOiBzdHJpbmc7XG4gIGFic3RyYWN0IGdldFRyYW5zaXRpb25FbmQoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBzdXBwb3J0c0FuaW1hdGlvbigpOiBib29sZWFuO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n// see http://www.w3.org/TR/html51/syntax.html#named-character-references\r\n// see https://html.spec.whatwg.org/multipage/entities.json\r\n// This list is not exhaustive to keep the compiler footprint low.\r\n// The `{` / `ƫ` syntax should be used when the named character reference does not exist.\r\nexports.NAMED_ENTITIES = lang_1.CONST_EXPR({\r\n 'Aacute': '\\u00C1',\r\n 'aacute': '\\u00E1',\r\n 'Acirc': '\\u00C2',\r\n 'acirc': '\\u00E2',\r\n 'acute': '\\u00B4',\r\n 'AElig': '\\u00C6',\r\n 'aelig': '\\u00E6',\r\n 'Agrave': '\\u00C0',\r\n 'agrave': '\\u00E0',\r\n 'alefsym': '\\u2135',\r\n 'Alpha': '\\u0391',\r\n 'alpha': '\\u03B1',\r\n 'amp': '&',\r\n 'and': '\\u2227',\r\n 'ang': '\\u2220',\r\n 'apos': '\\u0027',\r\n 'Aring': '\\u00C5',\r\n 'aring': '\\u00E5',\r\n 'asymp': '\\u2248',\r\n 'Atilde': '\\u00C3',\r\n 'atilde': '\\u00E3',\r\n 'Auml': '\\u00C4',\r\n 'auml': '\\u00E4',\r\n 'bdquo': '\\u201E',\r\n 'Beta': '\\u0392',\r\n 'beta': '\\u03B2',\r\n 'brvbar': '\\u00A6',\r\n 'bull': '\\u2022',\r\n 'cap': '\\u2229',\r\n 'Ccedil': '\\u00C7',\r\n 'ccedil': '\\u00E7',\r\n 'cedil': '\\u00B8',\r\n 'cent': '\\u00A2',\r\n 'Chi': '\\u03A7',\r\n 'chi': '\\u03C7',\r\n 'circ': '\\u02C6',\r\n 'clubs': '\\u2663',\r\n 'cong': '\\u2245',\r\n 'copy': '\\u00A9',\r\n 'crarr': '\\u21B5',\r\n 'cup': '\\u222A',\r\n 'curren': '\\u00A4',\r\n 'dagger': '\\u2020',\r\n 'Dagger': '\\u2021',\r\n 'darr': '\\u2193',\r\n 'dArr': '\\u21D3',\r\n 'deg': '\\u00B0',\r\n 'Delta': '\\u0394',\r\n 'delta': '\\u03B4',\r\n 'diams': '\\u2666',\r\n 'divide': '\\u00F7',\r\n 'Eacute': '\\u00C9',\r\n 'eacute': '\\u00E9',\r\n 'Ecirc': '\\u00CA',\r\n 'ecirc': '\\u00EA',\r\n 'Egrave': '\\u00C8',\r\n 'egrave': '\\u00E8',\r\n 'empty': '\\u2205',\r\n 'emsp': '\\u2003',\r\n 'ensp': '\\u2002',\r\n 'Epsilon': '\\u0395',\r\n 'epsilon': '\\u03B5',\r\n 'equiv': '\\u2261',\r\n 'Eta': '\\u0397',\r\n 'eta': '\\u03B7',\r\n 'ETH': '\\u00D0',\r\n 'eth': '\\u00F0',\r\n 'Euml': '\\u00CB',\r\n 'euml': '\\u00EB',\r\n 'euro': '\\u20AC',\r\n 'exist': '\\u2203',\r\n 'fnof': '\\u0192',\r\n 'forall': '\\u2200',\r\n 'frac12': '\\u00BD',\r\n 'frac14': '\\u00BC',\r\n 'frac34': '\\u00BE',\r\n 'frasl': '\\u2044',\r\n 'Gamma': '\\u0393',\r\n 'gamma': '\\u03B3',\r\n 'ge': '\\u2265',\r\n 'gt': '>',\r\n 'harr': '\\u2194',\r\n 'hArr': '\\u21D4',\r\n 'hearts': '\\u2665',\r\n 'hellip': '\\u2026',\r\n 'Iacute': '\\u00CD',\r\n 'iacute': '\\u00ED',\r\n 'Icirc': '\\u00CE',\r\n 'icirc': '\\u00EE',\r\n 'iexcl': '\\u00A1',\r\n 'Igrave': '\\u00CC',\r\n 'igrave': '\\u00EC',\r\n 'image': '\\u2111',\r\n 'infin': '\\u221E',\r\n 'int': '\\u222B',\r\n 'Iota': '\\u0399',\r\n 'iota': '\\u03B9',\r\n 'iquest': '\\u00BF',\r\n 'isin': '\\u2208',\r\n 'Iuml': '\\u00CF',\r\n 'iuml': '\\u00EF',\r\n 'Kappa': '\\u039A',\r\n 'kappa': '\\u03BA',\r\n 'Lambda': '\\u039B',\r\n 'lambda': '\\u03BB',\r\n 'lang': '\\u27E8',\r\n 'laquo': '\\u00AB',\r\n 'larr': '\\u2190',\r\n 'lArr': '\\u21D0',\r\n 'lceil': '\\u2308',\r\n 'ldquo': '\\u201C',\r\n 'le': '\\u2264',\r\n 'lfloor': '\\u230A',\r\n 'lowast': '\\u2217',\r\n 'loz': '\\u25CA',\r\n 'lrm': '\\u200E',\r\n 'lsaquo': '\\u2039',\r\n 'lsquo': '\\u2018',\r\n 'lt': '<',\r\n 'macr': '\\u00AF',\r\n 'mdash': '\\u2014',\r\n 'micro': '\\u00B5',\r\n 'middot': '\\u00B7',\r\n 'minus': '\\u2212',\r\n 'Mu': '\\u039C',\r\n 'mu': '\\u03BC',\r\n 'nabla': '\\u2207',\r\n 'nbsp': '\\u00A0',\r\n 'ndash': '\\u2013',\r\n 'ne': '\\u2260',\r\n 'ni': '\\u220B',\r\n 'not': '\\u00AC',\r\n 'notin': '\\u2209',\r\n 'nsub': '\\u2284',\r\n 'Ntilde': '\\u00D1',\r\n 'ntilde': '\\u00F1',\r\n 'Nu': '\\u039D',\r\n 'nu': '\\u03BD',\r\n 'Oacute': '\\u00D3',\r\n 'oacute': '\\u00F3',\r\n 'Ocirc': '\\u00D4',\r\n 'ocirc': '\\u00F4',\r\n 'OElig': '\\u0152',\r\n 'oelig': '\\u0153',\r\n 'Ograve': '\\u00D2',\r\n 'ograve': '\\u00F2',\r\n 'oline': '\\u203E',\r\n 'Omega': '\\u03A9',\r\n 'omega': '\\u03C9',\r\n 'Omicron': '\\u039F',\r\n 'omicron': '\\u03BF',\r\n 'oplus': '\\u2295',\r\n 'or': '\\u2228',\r\n 'ordf': '\\u00AA',\r\n 'ordm': '\\u00BA',\r\n 'Oslash': '\\u00D8',\r\n 'oslash': '\\u00F8',\r\n 'Otilde': '\\u00D5',\r\n 'otilde': '\\u00F5',\r\n 'otimes': '\\u2297',\r\n 'Ouml': '\\u00D6',\r\n 'ouml': '\\u00F6',\r\n 'para': '\\u00B6',\r\n 'permil': '\\u2030',\r\n 'perp': '\\u22A5',\r\n 'Phi': '\\u03A6',\r\n 'phi': '\\u03C6',\r\n 'Pi': '\\u03A0',\r\n 'pi': '\\u03C0',\r\n 'piv': '\\u03D6',\r\n 'plusmn': '\\u00B1',\r\n 'pound': '\\u00A3',\r\n 'prime': '\\u2032',\r\n 'Prime': '\\u2033',\r\n 'prod': '\\u220F',\r\n 'prop': '\\u221D',\r\n 'Psi': '\\u03A8',\r\n 'psi': '\\u03C8',\r\n 'quot': '\\u0022',\r\n 'radic': '\\u221A',\r\n 'rang': '\\u27E9',\r\n 'raquo': '\\u00BB',\r\n 'rarr': '\\u2192',\r\n 'rArr': '\\u21D2',\r\n 'rceil': '\\u2309',\r\n 'rdquo': '\\u201D',\r\n 'real': '\\u211C',\r\n 'reg': '\\u00AE',\r\n 'rfloor': '\\u230B',\r\n 'Rho': '\\u03A1',\r\n 'rho': '\\u03C1',\r\n 'rlm': '\\u200F',\r\n 'rsaquo': '\\u203A',\r\n 'rsquo': '\\u2019',\r\n 'sbquo': '\\u201A',\r\n 'Scaron': '\\u0160',\r\n 'scaron': '\\u0161',\r\n 'sdot': '\\u22C5',\r\n 'sect': '\\u00A7',\r\n 'shy': '\\u00AD',\r\n 'Sigma': '\\u03A3',\r\n 'sigma': '\\u03C3',\r\n 'sigmaf': '\\u03C2',\r\n 'sim': '\\u223C',\r\n 'spades': '\\u2660',\r\n 'sub': '\\u2282',\r\n 'sube': '\\u2286',\r\n 'sum': '\\u2211',\r\n 'sup': '\\u2283',\r\n 'sup1': '\\u00B9',\r\n 'sup2': '\\u00B2',\r\n 'sup3': '\\u00B3',\r\n 'supe': '\\u2287',\r\n 'szlig': '\\u00DF',\r\n 'Tau': '\\u03A4',\r\n 'tau': '\\u03C4',\r\n 'there4': '\\u2234',\r\n 'Theta': '\\u0398',\r\n 'theta': '\\u03B8',\r\n 'thetasym': '\\u03D1',\r\n 'thinsp': '\\u2009',\r\n 'THORN': '\\u00DE',\r\n 'thorn': '\\u00FE',\r\n 'tilde': '\\u02DC',\r\n 'times': '\\u00D7',\r\n 'trade': '\\u2122',\r\n 'Uacute': '\\u00DA',\r\n 'uacute': '\\u00FA',\r\n 'uarr': '\\u2191',\r\n 'uArr': '\\u21D1',\r\n 'Ucirc': '\\u00DB',\r\n 'ucirc': '\\u00FB',\r\n 'Ugrave': '\\u00D9',\r\n 'ugrave': '\\u00F9',\r\n 'uml': '\\u00A8',\r\n 'upsih': '\\u03D2',\r\n 'Upsilon': '\\u03A5',\r\n 'upsilon': '\\u03C5',\r\n 'Uuml': '\\u00DC',\r\n 'uuml': '\\u00FC',\r\n 'weierp': '\\u2118',\r\n 'Xi': '\\u039E',\r\n 'xi': '\\u03BE',\r\n 'Yacute': '\\u00DD',\r\n 'yacute': '\\u00FD',\r\n 'yen': '\\u00A5',\r\n 'yuml': '\\u00FF',\r\n 'Yuml': '\\u0178',\r\n 'Zeta': '\\u0396',\r\n 'zeta': '\\u03B6',\r\n 'zwj': '\\u200D',\r\n 'zwnj': '\\u200C',\r\n});\r\n(function (HtmlTagContentType) {\r\n HtmlTagContentType[HtmlTagContentType[\"RAW_TEXT\"] = 0] = \"RAW_TEXT\";\r\n HtmlTagContentType[HtmlTagContentType[\"ESCAPABLE_RAW_TEXT\"] = 1] = \"ESCAPABLE_RAW_TEXT\";\r\n HtmlTagContentType[HtmlTagContentType[\"PARSABLE_DATA\"] = 2] = \"PARSABLE_DATA\";\r\n})(exports.HtmlTagContentType || (exports.HtmlTagContentType = {}));\r\nvar HtmlTagContentType = exports.HtmlTagContentType;\r\nvar HtmlTagDefinition = (function () {\r\n function HtmlTagDefinition(_a) {\r\n var _this = this;\r\n var _b = _a === void 0 ? {} : _a, closedByChildren = _b.closedByChildren, requiredParents = _b.requiredParents, implicitNamespacePrefix = _b.implicitNamespacePrefix, contentType = _b.contentType, closedByParent = _b.closedByParent, isVoid = _b.isVoid, ignoreFirstLf = _b.ignoreFirstLf;\r\n this.closedByChildren = {};\r\n this.closedByParent = false;\r\n if (lang_1.isPresent(closedByChildren) && closedByChildren.length > 0) {\r\n closedByChildren.forEach(function (tagName) { return _this.closedByChildren[tagName] = true; });\r\n }\r\n this.isVoid = lang_1.normalizeBool(isVoid);\r\n this.closedByParent = lang_1.normalizeBool(closedByParent) || this.isVoid;\r\n if (lang_1.isPresent(requiredParents) && requiredParents.length > 0) {\r\n this.requiredParents = {};\r\n this.parentToAdd = requiredParents[0];\r\n requiredParents.forEach(function (tagName) { return _this.requiredParents[tagName] = true; });\r\n }\r\n this.implicitNamespacePrefix = implicitNamespacePrefix;\r\n this.contentType = lang_1.isPresent(contentType) ? contentType : HtmlTagContentType.PARSABLE_DATA;\r\n this.ignoreFirstLf = lang_1.normalizeBool(ignoreFirstLf);\r\n }\r\n HtmlTagDefinition.prototype.requireExtraParent = function (currentParent) {\r\n if (lang_1.isBlank(this.requiredParents)) {\r\n return false;\r\n }\r\n if (lang_1.isBlank(currentParent)) {\r\n return true;\r\n }\r\n var lcParent = currentParent.toLowerCase();\r\n return this.requiredParents[lcParent] != true && lcParent != 'template';\r\n };\r\n HtmlTagDefinition.prototype.isClosedByChild = function (name) {\r\n return this.isVoid || lang_1.normalizeBool(this.closedByChildren[name.toLowerCase()]);\r\n };\r\n return HtmlTagDefinition;\r\n}());\r\nexports.HtmlTagDefinition = HtmlTagDefinition;\r\n// see http://www.w3.org/TR/html51/syntax.html#optional-tags\r\n// This implementation does not fully conform to the HTML5 spec.\r\nvar TAG_DEFINITIONS = {\r\n 'base': new HtmlTagDefinition({ isVoid: true }),\r\n 'meta': new HtmlTagDefinition({ isVoid: true }),\r\n 'area': new HtmlTagDefinition({ isVoid: true }),\r\n 'embed': new HtmlTagDefinition({ isVoid: true }),\r\n 'link': new HtmlTagDefinition({ isVoid: true }),\r\n 'img': new HtmlTagDefinition({ isVoid: true }),\r\n 'input': new HtmlTagDefinition({ isVoid: true }),\r\n 'param': new HtmlTagDefinition({ isVoid: true }),\r\n 'hr': new HtmlTagDefinition({ isVoid: true }),\r\n 'br': new HtmlTagDefinition({ isVoid: true }),\r\n 'source': new HtmlTagDefinition({ isVoid: true }),\r\n 'track': new HtmlTagDefinition({ isVoid: true }),\r\n 'wbr': new HtmlTagDefinition({ isVoid: true }),\r\n 'p': new HtmlTagDefinition({\r\n closedByChildren: [\r\n 'address',\r\n 'article',\r\n 'aside',\r\n 'blockquote',\r\n 'div',\r\n 'dl',\r\n 'fieldset',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'main',\r\n 'nav',\r\n 'ol',\r\n 'p',\r\n 'pre',\r\n 'section',\r\n 'table',\r\n 'ul'\r\n ],\r\n closedByParent: true\r\n }),\r\n 'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),\r\n 'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),\r\n 'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),\r\n 'tr': new HtmlTagDefinition({\r\n closedByChildren: ['tr'],\r\n requiredParents: ['tbody', 'tfoot', 'thead'],\r\n closedByParent: true\r\n }),\r\n 'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\r\n 'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\r\n 'col': new HtmlTagDefinition({ requiredParents: ['colgroup'], isVoid: true }),\r\n 'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),\r\n 'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),\r\n 'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),\r\n 'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),\r\n 'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),\r\n 'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\r\n 'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\r\n 'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),\r\n 'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\r\n 'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),\r\n 'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),\r\n 'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),\r\n 'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),\r\n 'style': new HtmlTagDefinition({ contentType: HtmlTagContentType.RAW_TEXT }),\r\n 'script': new HtmlTagDefinition({ contentType: HtmlTagContentType.RAW_TEXT }),\r\n 'title': new HtmlTagDefinition({ contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT }),\r\n 'textarea': new HtmlTagDefinition({ contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),\r\n};\r\nvar DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();\r\nfunction getHtmlTagDefinition(tagName) {\r\n var result = TAG_DEFINITIONS[tagName.toLowerCase()];\r\n return lang_1.isPresent(result) ? result : DEFAULT_TAG_DEFINITION;\r\n}\r\nexports.getHtmlTagDefinition = getHtmlTagDefinition;\r\nvar NS_PREFIX_RE = /^@([^:]+):(.+)/g;\r\nfunction splitNsName(elementName) {\r\n if (elementName[0] != '@') {\r\n return [null, elementName];\r\n }\r\n var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, elementName);\r\n return [match[1], match[2]];\r\n}\r\nexports.splitNsName = splitNsName;\r\nfunction getNsPrefix(elementName) {\r\n return splitNsName(elementName)[0];\r\n}\r\nexports.getNsPrefix = getNsPrefix;\r\nfunction mergeNsAndName(prefix, localName) {\r\n return lang_1.isPresent(prefix) ? \"@\" + prefix + \":\" + localName : localName;\r\n}\r\nexports.mergeNsAndName = mergeNsAndName;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF90YWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2h0bWxfdGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBTU8sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQyx5RUFBeUU7QUFDekUsMkRBQTJEO0FBQzNELGtFQUFrRTtBQUNsRSxvR0FBb0c7QUFDdkYsc0JBQWMsR0FBRyxpQkFBVSxDQUFDO0lBQ3ZDLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFNBQVMsRUFBRSxRQUFRO0lBQ25CLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxRQUFRO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLFFBQVE7SUFDZixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsUUFBUTtJQUNuQixTQUFTLEVBQUUsUUFBUTtJQUNuQixPQUFPLEVBQUUsUUFBUTtJQUNqQixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLElBQUksRUFBRSxRQUFRO0lBQ2QsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsUUFBUTtJQUNkLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsUUFBUTtJQUNmLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixTQUFTLEVBQUUsUUFBUTtJQUNuQixTQUFTLEVBQUUsUUFBUTtJQUNuQixPQUFPLEVBQUUsUUFBUTtJQUNqQixJQUFJLEVBQUUsUUFBUTtJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsUUFBUTtJQUNsQixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsUUFBUTtJQUNmLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEtBQUssRUFBRSxRQUFRO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsS0FBSyxFQUFFLFFBQVE7SUFDZixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFFBQVE7SUFDakIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsUUFBUTtJQUNkLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEtBQUssRUFBRSxRQUFRO0lB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O0FBRXJELDhCQUFxQyxPQUFlO0lBQ2xELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsc0JBQXNCLENBQUM7QUFDN0QsQ0FBQztBQUhlLDRCQUFvQix1QkFHbkMsQ0FBQTtBQUVELElBQUksWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBRXJDLHFCQUE0QixXQUFtQjtJQUM3QyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLG9CQUFhLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQU5lLG1CQUFXLGNBTTFCLENBQUE7QUFFRCxxQkFBNEIsV0FBbUI7SUFDN0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRmUsbUJBQVcsY0FFMUIsQ0FBQTtBQUVELHdCQUErQixNQUFjLEVBQUUsU0FBaUI7SUFDOUQsTUFBTSxDQUFDLGdCQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBSSxNQUFNLFNBQUksU0FBVyxHQUFHLFNBQVMsQ0FBQztBQUNuRSxDQUFDO0FBRmUsc0JBQWMsaUJBRTdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIG5vcm1hbGl6ZUJvb2wsXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIENPTlNUX0VYUFJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLy8gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1MS9zeW50YXguaHRtbCNuYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlc1xuLy8gc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VudGl0aWVzLmpzb25cbi8vIFRoaXMgbGlzdCBpcyBub3QgZXhoYXVzdGl2ZSB0byBrZWVwIHRoZSBjb21waWxlciBmb290cHJpbnQgbG93LlxuLy8gVGhlIGAmIzEyMztgIC8gYCYjeDFhYjtgIHN5bnRheCBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlIGRvZXMgbm90IGV4aXN0LlxuZXhwb3J0IGNvbnN0IE5BTUVEX0VOVElUSUVTID0gQ09OU1RfRVhQUih7XG4gICdBYWN1dGUnOiAnXFx1MDBDMScsXG4gICdhYWN1dGUnOiAnXFx1MDBFMScsXG4gICdBY2lyYyc6ICdcXHUwMEMyJyxcbiAgJ2FjaXJjJzogJ1xcdTAwRTInLFxuICAnYWN1dGUnOiAnXFx1MDBCNCcsXG4gICdBRWxpZyc6ICdcXHUwMEM2JyxcbiAgJ2FlbGlnJzogJ1xcdTAwRTYnLFxuICAnQWdyYXZlJzogJ1xcdTAwQzAnLFxuICAnYWdyYXZlJzogJ1xcdTAwRTAnLFxuICAnYWxlZnN5bSc6ICdcXHUyMTM1JyxcbiAgJ0FscGhhJzogJ1xcdTAzOTEnLFxuICAnYWxwaGEnOiAnXFx1MDNCMScsXG4gICdhbXAnOiAnJicsXG4gICdhbmQnOiAnXFx1MjIyNycsXG4gICdhbmcnOiAnXFx1MjIyMCcsXG4gICdhcG9zJzogJ1xcdTAwMjcnLFxuICAnQXJpbmcnOiAnXFx1MDBDNScsXG4gICdhcmluZyc6ICdcXHUwMEU1JyxcbiAgJ2FzeW1wJzogJ1xcdTIyNDgnLFxuICAnQXRpbGRlJzogJ1xcdTAwQzMnLFxuICAnYXRpbGRlJzogJ1xcdTAwRTMnLFxuICAnQXVtbCc6ICdcXHUwMEM0JyxcbiAgJ2F1bWwnOiAnXFx1MDBFNCcsXG4gICdiZHF1byc6ICdcXHUyMDFFJyxcbiAgJ0JldGEnOiAnXFx1MDM5MicsXG4gICdiZXRhJzogJ1xcdTAzQjInLFxuICAnYnJ2YmFyJzogJ1xcdTAwQTYnLFxuICAnYnVsbCc6ICdcXHUyMDIyJyxcbiAgJ2NhcCc6ICdcXHUyMjI5JyxcbiAgJ0NjZWRpbCc6ICdcXHUwMEM3JyxcbiAgJ2NjZWRpbCc6ICdcXHUwMEU3JyxcbiAgJ2NlZGlsJzogJ1xcdTAwQjgnLFxuICAnY2VudCc6ICdcXHUwMEEyJyxcbiAgJ0NoaSc6ICdcXHUwM0E3JyxcbiAgJ2NoaSc6ICdcXHUwM0M3JyxcbiAgJ2NpcmMnOiAnXFx1MDJDNicsXG4gICdjbHVicyc6ICdcXHUyNjYzJyxcbiAgJ2NvbmcnOiAnXFx1MjI0NScsXG4gICdjb3B5JzogJ1xcdTAwQTknLFxuICAnY3JhcnInOiAnXFx1MjFCNScsXG4gICdjdXAnOiAnXFx1MjIyQScsXG4gICdjdXJyZW4nOiAnXFx1MDBBNCcsXG4gICdkYWdnZXInOiAnXFx1MjAyMCcsXG4gICdEYWdnZXInOiAnXFx1MjAyMScsXG4gICdkYXJyJzogJ1xcdTIxOTMnLFxuICAnZEFycic6ICdcXHUyMUQzJyxcbiAgJ2RlZyc6ICdcXHUwMEIwJyxcbiAgJ0RlbHRhJzogJ1xcdTAzOTQnLFxuICAnZGVsdGEnOiAnXFx1MDNCNCcsXG4gICdkaWFtcyc6ICdcXHUyNjY2JyxcbiAgJ2RpdmlkZSc6ICdcXHUwMEY3JyxcbiAgJ0VhY3V0ZSc6ICdcXHUwMEM5JyxcbiAgJ2VhY3V0ZSc6ICdcXHUwMEU5JyxcbiAgJ0VjaXJjJzogJ1xcdTAwQ0EnLFxuICAnZWNpcmMnOiAnXFx1MDBFQScsXG4gICdFZ3JhdmUnOiAnXFx1MDBDOCcsXG4gICdlZ3JhdmUnOiAnXFx1MDBFOCcsXG4gICdlbXB0eSc6ICdcXHUyMjA1JyxcbiAgJ2Vtc3AnOiAnXFx1MjAwMycsXG4gICdlbnNwJzogJ1xcdTIwMDInLFxuICAnRXBzaWxvbic6ICdcXHUwMzk1JyxcbiAgJ2Vwc2lsb24nOiAnXFx1MDNCNScsXG4gICdlcXVpdic6ICdcXHUyMjYxJyxcbiAgJ0V0YSc6ICdcXHUwMzk3JyxcbiAgJ2V0YSc6ICdcXHUwM0I3JyxcbiAgJ0VUSCc6ICdcXHUwMEQwJyxcbiAgJ2V0aCc6ICdcXHUwMEYwJyxcbiAgJ0V1bWwnOiAnXFx1MDBDQicsXG4gICdldW1sJzogJ1xcdTAwRUInLFxuICAnZXVybyc6ICdcXHUyMEFDJyxcbiAgJ2V4aXN0JzogJ1xcdTIyMDMnLFxuICAnZm5vZic6ICdcXHUwMTkyJyxcbiAgJ2ZvcmFsbCc6ICdcXHUyMjAwJyxcbiAgJ2ZyYWMxMic6ICdcXHUwMEJEJyxcbiAgJ2ZyYWMxNCc6ICdcXHUwMEJDJyxcbiAgJ2ZyYWMzNCc6ICdcXHUwMEJFJyxcbiAgJ2ZyYXNsJzogJ1xcdTIwNDQnLFxuICAnR2FtbWEnOiAnXFx1MDM5MycsXG4gICdnYW1tYSc6ICdcXHUwM0IzJyxcbiAgJ2dlJzogJ1xcdTIyNjUnLFxuICAnZ3QnOiAnPicsXG4gICdoYXJyJzogJ1xcdTIxOTQnLFxuICAnaEFycic6ICdcXHUyMUQ0JyxcbiAgJ2hlYXJ0cyc6ICdcXHUyNjY1JyxcbiAgJ2hlbGxpcCc6ICdcXHUyMDI2JyxcbiAgJ0lhY3V0ZSc6ICdcXHUwMENEJyxcbiAgJ2lhY3V0ZSc6ICdcXHUwMEVEJyxcbiAgJ0ljaXJjJzogJ1xcdTAwQ0UnLFxuICAnaWNpcmMnOiAnXFx1MDBFRScsXG4gICdpZXhjbCc6ICdcXHUwMEExJyxcbiAgJ0lncmF2ZSc6ICdcXHUwMENDJyxcbiAgJ2lncmF2ZSc6ICdcXHUwMEVDJyxcbiAgJ2ltYWdlJzogJ1xcdTIxMTEnLFxuICAnaW5maW4nOiAnXFx1MjIxRScsXG4gICdpbnQnOiAnXFx1MjIyQicsXG4gICdJb3RhJzogJ1xcdTAzOTknLFxuICAnaW90YSc6ICdcXHUwM0I5JyxcbiAgJ2lxdWVzdCc6ICdcXHUwMEJGJyxcbiAgJ2lzaW4nOiAnXFx1MjIwOCcsXG4gICdJdW1sJzogJ1xcdTAwQ0YnLFxuICAnaXVtbCc6ICdcXHUwMEVGJyxcbiAgJ0thcHBhJzogJ1xcdTAzOUEnLFxuICAna2FwcGEnOiAnXFx1MDNCQScsXG4gICdMYW1iZGEnOiAnXFx1MDM5QicsXG4gICdsYW1iZGEnOiAnXFx1MDNCQicsXG4gICdsYW5nJzogJ1xcdTI3RTgnLFxuICAnbGFxdW8nOiAnXFx1MDBBQicsXG4gICdsYXJyJzogJ1xcdTIxOTAnLFxuICAnbEFycic6ICdcXHUyMUQwJyxcbiAgJ2xjZWlsJzogJ1xcdTIzMDgnLFxuICAnbGRxdW8nOiAnXFx1MjAxQycsXG4gICdsZSc6ICdcXHUyMjY0JyxcbiAgJ2xmbG9vcic6ICdcXHUyMzBBJyxcbiAgJ2xvd2FzdCc6ICdcXHUyMjE3JyxcbiAgJ2xveic6ICdcXHUyNUNBJyxcbiAgJ2xybSc6ICdcXHUyMDBFJyxcbiAgJ2xzYXF1byc6ICdcXHUyMDM5JyxcbiAgJ2xzcXVvJzogJ1xcdTIwMTgnLFxuICAnbHQnOiAnPCcsXG4gICdtYWNyJzogJ1xcdTAwQUYnLFxuICAnbWRhc2gnOiAnXFx1MjAxNCcsXG4gICdtaWNybyc6ICdcXHUwMEI1JyxcbiAgJ21pZGRvdCc6ICdcXHUwMEI3JyxcbiAgJ21pbnVzJzogJ1xcdTIyMTInLFxuICAnTXUnOiAnXFx1MDM5QycsXG4gICdtdSc6ICdcXHUwM0JDJyxcbiAgJ25hYmxhJzogJ1xcdTIyMDcnLFxuICAnbmJzcCc6ICdcXHUwMEEwJyxcbiAgJ25kYXNoJzogJ1xcdTIwMTMnLFxuICAnbmUnOiAnXFx1MjI2MCcsXG4gICduaSc6ICdcXHUyMjBCJyxcbiAgJ25vdCc6ICdcXHUwMEFDJyxcbiAgJ25vdGluJzogJ1xcdTIyMDknLFxuICAnbnN1Yic6ICdcXHUyMjg0JyxcbiAgJ050aWxkZSc6ICdcXHUwMEQxJyxcbiAgJ250aWxkZSc6ICdcXHUwMEYxJyxcbiAgJ051JzogJ1xcdTAzOUQnLFxuICAnbnUnOiAnXFx1MDNCRCcsXG4gICdPYWN1dGUnOiAnXFx1MDBEMycsXG4gICdvYWN1dGUnOiAnXFx1MDBGMycsXG4gICdPY2lyYyc6ICdcXHUwMEQ0JyxcbiAgJ29jaXJjJzogJ1xcdTAwRjQnLFxuICAnT0VsaWcnOiAnXFx1MDE1MicsXG4gICdvZWxpZyc6ICdcXHUwMTUzJyxcbiAgJ09ncmF2ZSc6ICdcXHUwMEQyJyxcbiAgJ29ncmF2ZSc6ICdcXHUwMEYyJyxcbiAgJ29saW5lJzogJ1xcdTIwM0UnLFxuICAnT21lZ2EnOiAnXFx1MDNBOScsXG4gICdvbWVnYSc6ICdcXHUwM0M5JyxcbiAgJ09taWNyb24nOiAnXFx1MDM5RicsXG4gICdvbWljcm9uJzogJ1xcdTAzQkYnLFxuICAnb3BsdXMnOiAnXFx1MjI5NScsXG4gICdvcic6ICdcXHUyMjI4JyxcbiAgJ29yZGYnOiAnXFx1MDBBQScsXG4gICdvcmRtJzogJ1xcdTAwQkEnLFxuICAnT3NsYXNoJzogJ1xcdTAwRDgnLFxuICAnb3NsYXNoJzogJ1xcdTAwRjgnLFxuICAnT3RpbGRlJzogJ1xcdTAwRDUnLFxuICAnb3RpbGRlJzogJ1xcdTAwRjUnLFxuICAnb3RpbWVzJzogJ1xcdTIyOTcnLFxuICAnT3VtbCc6ICdcXHUwMEQ2JyxcbiAgJ291bWwnOiAnXFx1MDBGNicsXG4gICdwYXJhJzogJ1xcdTAwQjYnLFxuICAncGVybWlsJzogJ1xcdTIwMzAnLFxuICAncGVycCc6ICdcXHUyMkE1JyxcbiAgJ1BoaSc6ICdcXHUwM0E2JyxcbiAgJ3BoaSc6ICdcXHUwM0M2JyxcbiAgJ1BpJzogJ1xcdTAzQTAnLFxuICAncGknOiAnXFx1MDNDMCcsXG4gICdwaXYnOiAnXFx1MDNENicsXG4gICdwbHVzbW4nOiAnXFx1MDBCMScsXG4gICdwb3VuZCc6ICdcXHUwMEEzJyxcbiAgJ3ByaW1lJzogJ1xcdTIwMzInLFxuICAnUHJpbWUnOiAnXFx1MjAzMycsXG4gICdwcm9kJzogJ1xcdTIyMEYnLFxuICAncHJvcCc6ICdcXHUyMjFEJyxcbiAgJ1BzaSc6ICdcXHUwM0E4JyxcbiAgJ3BzaSc6ICdcXHUwM0M4JyxcbiAgJ3F1b3QnOiAnXFx1MDAyMicsXG4gICdyYWRpYyc6ICdcXHUyMjFBJyxcbiAgJ3JhbmcnOiAnXFx1MjdFOScsXG4gICdyYXF1byc6ICdcXHUwMEJCJyxcbiAgJ3JhcnInOiAnXFx1MjE5MicsXG4gICdyQXJyJzogJ1xcdTIxRDInLFxuICAncmNlaWwnOiAnXFx1MjMwOScsXG4gICdyZHF1byc6ICdcXHUyMDFEJyxcbiAgJ3JlYWwnOiAnXFx1MjExQycsXG4gICdyZWcnOiAnXFx1MDBBRScsXG4gICdyZmxvb3InOiAnXFx1MjMwQicsXG4gICdSaG8nOiAnXFx1MDNBMScsXG4gICdyaG8nOiAnXFx1MDNDMScsXG4gICdybG0nOiAnXFx1MjAwRicsXG4gICdyc2FxdW8nOiAnXFx1MjAzQScsXG4gICdyc3F1byc6ICdcXHUyMDE5JyxcbiAgJ3NicXVvJzogJ1xcdTIwMUEnLFxuICAnU2Nhcm9uJzogJ1xcdTAxNjAnLFxuICAnc2Nhcm9uJzogJ1xcdTAxNjEnLFxuICAnc2RvdCc6ICdcXHUyMkM1JyxcbiAgJ3NlY3QnOiAnXFx1MDBBNycsXG4gICdzaHknOiAnXFx1MDBBRCcsXG4gICdTaWdtYSc6ICdcXHUwM0EzJyxcbiAgJ3NpZ21hJzogJ1xcdTAzQzMnLFxuICAnc2lnbWFmJzogJ1xcdTAzQzInLFxuICAnc2ltJzogJ1xcdTIyM0MnLFxuICAnc3BhZGVzJzogJ1xcdTI2NjAnLFxuICAnc3ViJzogJ1xcdTIyODInLFxuICAnc3ViZSc6ICdcXHUyMjg2JyxcbiAgJ3N1bSc6ICdcXHUyMjExJyxcbiAgJ3N1cCc6ICdcXHUyMjgzJyxcbiAgJ3N1cDEnOiAnXFx1MDBCOScsXG4gICdzdXAyJzogJ1xcdTAwQjInLFxuICAnc3VwMyc6ICdcXHUwMEIzJyxcbiAgJ3N1cGUnOiAnXFx1MjI4NycsXG4gICdzemxpZyc6ICdcXHUwMERGJyxcbiAgJ1RhdSc6ICdcXHUwM0E0JyxcbiAgJ3RhdSc6ICdcXHUwM0M0JyxcbiAgJ3RoZXJlNCc6ICdcXHUyMjM0JyxcbiAgJ1RoZXRhJzogJ1xcdTAzOTgnLFxuICAndGhldGEnOiAnXFx1MDNCOCcsXG4gICd0aGV0YXN5bSc6ICdcXHUwM0QxJyxcbiAgJ3RoaW5zcCc6ICdcXHUyMDA5JyxcbiAgJ1RIT1JOJzogJ1xcdTAwREUnLFxuICAndGhvcm4nOiAnXFx1MDBGRScsXG4gICd0aWxkZSc6ICdcXHUwMkRDJyxcbiAgJ3RpbWVzJzogJ1xcdTAwRDcnLFxuICAndHJhZGUnOiAnXFx1MjEyMicsXG4gICdVYWN1dGUnOiAnXFx1MDBEQScsXG4gICd1YWN1dGUnOiAnXFx1MDBGQScsXG4gICd1YXJyJzogJ1xcdTIxOTEnLFxuICAndUFycic6ICdcXHUyMUQxJyxcbiAgJ1VjaXJjJzogJ1xcdTAwREInLFxuICAndWNpcmMnOiAnXFx1MDBGQicsXG4gICdVZ3JhdmUnOiAnXFx1MDBEOScsXG4gICd1Z3JhdmUnOiAnXFx1MDBGOScsXG4gICd1bWwnOiAnXFx1MDBBOCcsXG4gICd1cHNpaCc6ICdcXHUwM0QyJyxcbiAgJ1Vwc2lsb24nOiAnXFx1MDNBNScsXG4gICd1cHNpbG9uJzogJ1xcdTAzQzUnLFxuICAnVXVtbCc6ICdcXHUwMERDJyxcbiAgJ3V1bWwnOiAnXFx1MDBGQycsXG4gICd3ZWllcnAnOiAnXFx1MjExOCcsXG4gICdYaSc6ICdcXHUwMzlFJyxcbiAgJ3hpJzogJ1xcdTAzQkUnLFxuICAnWWFjdXRlJzogJ1xcdTAwREQnLFxuICAneWFjdXRlJzogJ1xcdTAwRkQnLFxuICAneWVuJzogJ1xcdTAwQTUnLFxuICAneXVtbCc6ICdcXHUwMEZGJyxcbiAgJ1l1bWwnOiAnXFx1MDE3OCcsXG4gICdaZXRhJzogJ1xcdTAzOTYnLFxuICAnemV0YSc6ICdcXHUwM0I2JyxcbiAgJ3p3aic6ICdcXHUyMDBEJyxcbiAgJ3p3bmonOiAnXFx1MjAwQycsXG59KTtcblxuZXhwb3J0IGVudW0gSHRtbFRhZ0NvbnRlbnRUeXBlIHtcbiAgUkFXX1RFWFQsXG4gIEVTQ0FQQUJMRV9SQVdfVEVYVCxcbiAgUEFSU0FCTEVfREFUQVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbFRhZ0RlZmluaXRpb24ge1xuICBwcml2YXRlIGNsb3NlZEJ5Q2hpbGRyZW46IHtba2V5OiBzdHJpbmddOiBib29sZWFufSA9IHt9O1xuICBwdWJsaWMgY2xvc2VkQnlQYXJlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHJlcXVpcmVkUGFyZW50czoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBwdWJsaWMgcGFyZW50VG9BZGQ6IHN0cmluZztcbiAgcHVibGljIGltcGxpY2l0TmFtZXNwYWNlUHJlZml4OiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50VHlwZTogSHRtbFRhZ0NvbnRlbnRUeXBlO1xuICBwdWJsaWMgaXNWb2lkOiBib29sZWFuO1xuICBwdWJsaWMgaWdub3JlRmlyc3RMZjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7Y2xvc2VkQnlDaGlsZHJlbiwgcmVxdWlyZWRQYXJlbnRzLCBpbXBsaWNpdE5hbWVzcGFjZVByZWZpeCwgY29udGVudFR5cGUsXG4gICAgICAgICAgICAgICBjbG9zZWRCeVBhcmVudCwgaXNWb2lkLCBpZ25vcmVGaXJzdExmfToge1xuICAgIGNsb3NlZEJ5Q2hpbGRyZW4/OiBzdHJpbmdbXSxcbiAgICBjbG9zZWRCeVBhcmVudD86IGJvb2xlYW4sXG4gICAgcmVxdWlyZWRQYXJlbnRzPzogc3RyaW5nW10sXG4gICAgaW1wbGljaXROYW1lc3BhY2VQcmVmaXg/OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBIdG1sVGFnQ29udGVudFR5cGUsXG4gICAgaXNWb2lkPzogYm9vbGVhbixcbiAgICBpZ25vcmVGaXJzdExmPzogYm9vbGVhblxuICB9ID0ge30pIHtcbiAgICBpZiAoaXNQcmVzZW50KGNsb3NlZEJ5Q2hpbGRyZW4pICYmIGNsb3NlZEJ5Q2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY2xvc2VkQnlDaGlsZHJlbi5mb3JFYWNoKHRhZ05hbWUgPT4gdGhpcy5jbG9zZWRCeUNoaWxkcmVuW3RhZ05hbWVdID0gdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuaXNWb2lkID0gbm9ybWFsaXplQm9vbChpc1ZvaWQpO1xuICAgIHRoaXMuY2xvc2VkQnlQYXJlbnQgPSBub3JtYWxpemVCb29sKGNsb3NlZEJ5UGFyZW50KSB8fCB0aGlzLmlzVm9pZDtcbiAgICBpZiAoaXNQcmVzZW50KHJlcXVpcmVkUGFyZW50cykgJiYgcmVxdWlyZWRQYXJlbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVxdWlyZWRQYXJlbnRzID0ge307XG4gICAgICB0aGlzLnBhcmVudFRvQWRkID0gcmVxdWlyZWRQYXJlbnRzWzBdO1xuICAgICAgcmVxdWlyZWRQYXJlbnRzLmZvckVhY2godGFnTmFtZSA9PiB0aGlzLnJlcXVpcmVkUGFyZW50c1t0YWdOYW1lXSA9IHRydWUpO1xuICAgIH1cbiAgICB0aGlzLmltcGxpY2l0TmFtZXNwYWNlUHJlZml4ID0gaW1wbGljaXROYW1lc3BhY2VQcmVmaXg7XG4gICAgdGhpcy5jb250ZW50VHlwZSA9IGlzUHJlc2VudChjb250ZW50VHlwZSkgPyBjb250ZW50VHlwZSA6IEh0bWxUYWdDb250ZW50VHlwZS5QQVJTQUJMRV9EQVRBO1xuICAgIHRoaXMuaWdub3JlRmlyc3RMZiA9IG5vcm1hbGl6ZUJvb2woaWdub3JlRmlyc3RMZik7XG4gIH1cblxuICByZXF1aXJlRXh0cmFQYXJlbnQoY3VycmVudFBhcmVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQmxhbmsodGhpcy5yZXF1aXJlZFBhcmVudHMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzQmxhbmsoY3VycmVudFBhcmVudCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGxldCBsY1BhcmVudCA9IGN1cnJlbnRQYXJlbnQudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFBhcmVudHNbbGNQYXJlbnRdICE9IHRydWUgJiYgbGNQYXJlbnQgIT0gJ3RlbXBsYXRlJztcbiAgfVxuXG4gIGlzQ2xvc2VkQnlDaGlsZChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZvaWQgfHwgbm9ybWFsaXplQm9vbCh0aGlzLmNsb3NlZEJ5Q2hpbGRyZW5bbmFtZS50b0xvd2VyQ2FzZSgpXSk7XG4gIH1cbn1cblxuLy8gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1MS9zeW50YXguaHRtbCNvcHRpb25hbC10YWdzXG4vLyBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGZ1bGx5IGNvbmZvcm0gdG8gdGhlIEhUTUw1IHNwZWMuXG52YXIgVEFHX0RFRklOSVRJT05TOiB7W2tleTogc3RyaW5nXTogSHRtbFRhZ0RlZmluaXRpb259ID0ge1xuICAnYmFzZSc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdtZXRhJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpc1ZvaWQ6IHRydWV9KSxcbiAgJ2FyZWEnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnZW1iZWQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnbGluayc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdpbWcnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnaW5wdXQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAncGFyYW0nOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnaHInOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnYnInOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnc291cmNlJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpc1ZvaWQ6IHRydWV9KSxcbiAgJ3RyYWNrJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpc1ZvaWQ6IHRydWV9KSxcbiAgJ3dicic6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdwJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtcbiAgICBjbG9zZWRCeUNoaWxkcmVuOiBbXG4gICAgICAnYWRkcmVzcycsXG4gICAgICAnYXJ0aWNsZScsXG4gICAgICAnYXNpZGUnLFxuICAgICAgJ2Jsb2NrcXVvdGUnLFxuICAgICAgJ2RpdicsXG4gICAgICAnZGwnLFxuICAgICAgJ2ZpZWxkc2V0JyxcbiAgICAgICdmb290ZXInLFxuICAgICAgJ2Zvcm0nLFxuICAgICAgJ2gxJyxcbiAgICAgICdoMicsXG4gICAgICAnaDMnLFxuICAgICAgJ2g0JyxcbiAgICAgICdoNScsXG4gICAgICAnaDYnLFxuICAgICAgJ2hlYWRlcicsXG4gICAgICAnaGdyb3VwJyxcbiAgICAgICdocicsXG4gICAgICAnbWFpbicsXG4gICAgICAnbmF2JyxcbiAgICAgICdvbCcsXG4gICAgICAncCcsXG4gICAgICAncHJlJyxcbiAgICAgICdzZWN0aW9uJyxcbiAgICAgICd0YWJsZScsXG4gICAgICAndWwnXG4gICAgXSxcbiAgICBjbG9zZWRCeVBhcmVudDogdHJ1ZVxuICB9KSxcbiAgJ3RoZWFkJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3Rib2R5JywgJ3Rmb290J119KSxcbiAgJ3Rib2R5JzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3Rib2R5JywgJ3Rmb290J10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICd0Zm9vdCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y2xvc2VkQnlDaGlsZHJlbjogWyd0Ym9keSddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAndHInOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe1xuICAgIGNsb3NlZEJ5Q2hpbGRyZW46IFsndHInXSxcbiAgICByZXF1aXJlZFBhcmVudHM6IFsndGJvZHknLCAndGZvb3QnLCAndGhlYWQnXSxcbiAgICBjbG9zZWRCeVBhcmVudDogdHJ1ZVxuICB9KSxcbiAgJ3RkJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3RkJywgJ3RoJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICd0aCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y2xvc2VkQnlDaGlsZHJlbjogWyd0ZCcsICd0aCddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAnY29sJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtyZXF1aXJlZFBhcmVudHM6IFsnY29sZ3JvdXAnXSwgaXNWb2lkOiB0cnVlfSksXG4gICdzdmcnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2ltcGxpY2l0TmFtZXNwYWNlUHJlZml4OiAnc3ZnJ30pLFxuICAnbWF0aCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aW1wbGljaXROYW1lc3BhY2VQcmVmaXg6ICdtYXRoJ30pLFxuICAnbGknOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsnbGknXSwgY2xvc2VkQnlQYXJlbnQ6IHRydWV9KSxcbiAgJ2R0JzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ2R0JywgJ2RkJ119KSxcbiAgJ2RkJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ2R0JywgJ2RkJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdyYic6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y2xvc2VkQnlDaGlsZHJlbjogWydyYicsICdydCcsICdydGMnLCAncnAnXSwgY2xvc2VkQnlQYXJlbnQ6IHRydWV9KSxcbiAgJ3J0JzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3JiJywgJ3J0JywgJ3J0YycsICdycCddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAncnRjJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3JiJywgJ3J0YycsICdycCddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAncnAnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsncmInLCAncnQnLCAncnRjJywgJ3JwJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdvcHRncm91cCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y2xvc2VkQnlDaGlsZHJlbjogWydvcHRncm91cCddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAnb3B0aW9uJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ29wdGlvbicsICdvcHRncm91cCddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAncHJlJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpZ25vcmVGaXJzdExmOiB0cnVlfSksXG4gICdsaXN0aW5nJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpZ25vcmVGaXJzdExmOiB0cnVlfSksXG4gICdzdHlsZSc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y29udGVudFR5cGU6IEh0bWxUYWdDb250ZW50VHlwZS5SQVdfVEVYVH0pLFxuICAnc2NyaXB0JzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjb250ZW50VHlwZTogSHRtbFRhZ0NvbnRlbnRUeXBlLlJBV19URVhUfSksXG4gICd0aXRsZSc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y29udGVudFR5cGU6IEh0bWxUYWdDb250ZW50VHlwZS5FU0NBUEFCTEVfUkFXX1RFWFR9KSxcbiAgJ3RleHRhcmVhJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKFxuICAgICAge2NvbnRlbnRUeXBlOiBIdG1sVGFnQ29udGVudFR5cGUuRVNDQVBBQkxFX1JBV19URVhULCBpZ25vcmVGaXJzdExmOiB0cnVlfSksXG59O1xuXG52YXIgREVGQVVMVF9UQUdfREVGSU5JVElPTiA9IG5ldyBIdG1sVGFnRGVmaW5pdGlvbigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SHRtbFRhZ0RlZmluaXRpb24odGFnTmFtZTogc3RyaW5nKTogSHRtbFRhZ0RlZmluaXRpb24ge1xuICB2YXIgcmVzdWx0ID0gVEFHX0RFRklOSVRJT05TW3RhZ05hbWUudG9Mb3dlckNhc2UoKV07XG4gIHJldHVybiBpc1ByZXNlbnQocmVzdWx0KSA/IHJlc3VsdCA6IERFRkFVTFRfVEFHX0RFRklOSVRJT047XG59XG5cbnZhciBOU19QUkVGSVhfUkUgPSAvXkAoW146XSspOiguKykvZztcblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0TnNOYW1lKGVsZW1lbnROYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGlmIChlbGVtZW50TmFtZVswXSAhPSAnQCcpIHtcbiAgICByZXR1cm4gW251bGwsIGVsZW1lbnROYW1lXTtcbiAgfVxuICBsZXQgbWF0Y2ggPSBSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2goTlNfUFJFRklYX1JFLCBlbGVtZW50TmFtZSk7XG4gIHJldHVybiBbbWF0Y2hbMV0sIG1hdGNoWzJdXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5zUHJlZml4KGVsZW1lbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3BsaXROc05hbWUoZWxlbWVudE5hbWUpWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VOc0FuZE5hbWUocHJlZml4OiBzdHJpbmcsIGxvY2FsTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzUHJlc2VudChwcmVmaXgpID8gYEAke3ByZWZpeH06JHtsb2NhbE5hbWV9YCA6IGxvY2FsTmFtZTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar ElementSchemaRegistry = (function () {\r\n function ElementSchemaRegistry() {\r\n }\r\n ElementSchemaRegistry.prototype.hasProperty = function (tagName, propName) { return true; };\r\n ElementSchemaRegistry.prototype.getMappedPropName = function (propName) { return propName; };\r\n return ElementSchemaRegistry;\r\n}());\r\nexports.ElementSchemaRegistry = ElementSchemaRegistry;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9zY2hlbWFfcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvc2NoZW1hL2VsZW1lbnRfc2NoZW1hX3JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUFBO0lBR0EsQ0FBQztJQUZDLDJDQUFXLEdBQVgsVUFBWSxPQUFlLEVBQUUsUUFBZ0IsSUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RSxpREFBaUIsR0FBakIsVUFBa0IsUUFBZ0IsSUFBWSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRSw0QkFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksNkJBQXFCLHdCQUdqQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEVsZW1lbnRTY2hlbWFSZWdpc3RyeSB7XG4gIGhhc1Byb3BlcnR5KHRhZ05hbWU6IHN0cmluZywgcHJvcE5hbWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdHJ1ZTsgfVxuICBnZXRNYXBwZWRQcm9wTmFtZShwcm9wTmFtZTogc3RyaW5nKTogc3RyaW5nIHsgcmV0dXJuIHByb3BOYW1lOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar html_tags_1 = require('angular2/src/compiler/html_tags');\r\nvar element_schema_registry_1 = require('./element_schema_registry');\r\nvar NAMESPACE_URIS = lang_1.CONST_EXPR({ 'xlink': 'http://www.w3.org/1999/xlink', 'svg': 'http://www.w3.org/2000/svg' });\r\nvar DomElementSchemaRegistry = (function (_super) {\r\n __extends(DomElementSchemaRegistry, _super);\r\n function DomElementSchemaRegistry() {\r\n _super.apply(this, arguments);\r\n this._protoElements = new Map();\r\n }\r\n DomElementSchemaRegistry.prototype._getProtoElement = function (tagName) {\r\n var element = this._protoElements.get(tagName);\r\n if (lang_1.isBlank(element)) {\r\n var nsAndName = html_tags_1.splitNsName(tagName);\r\n element = lang_1.isPresent(nsAndName[0]) ?\r\n dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) :\r\n dom_adapter_1.DOM.createElement(nsAndName[1]);\r\n this._protoElements.set(tagName, element);\r\n }\r\n return element;\r\n };\r\n DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName) {\r\n if (tagName.indexOf('-') !== -1) {\r\n // can't tell now as we don't know which properties a custom element will get\r\n // once it is instantiated\r\n return true;\r\n }\r\n else {\r\n var elm = this._getProtoElement(tagName);\r\n return dom_adapter_1.DOM.hasProperty(elm, propName);\r\n }\r\n };\r\n DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) {\r\n var mappedPropName = collection_1.StringMapWrapper.get(dom_adapter_1.DOM.attrToPropMap, propName);\r\n return lang_1.isPresent(mappedPropName) ? mappedPropName : propName;\r\n };\r\n DomElementSchemaRegistry = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DomElementSchemaRegistry);\r\n return DomElementSchemaRegistry;\r\n}(element_schema_registry_1.ElementSchemaRegistry));\r\nexports.DomElementSchemaRegistry = DomElementSchemaRegistry;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX2VsZW1lbnRfc2NoZW1hX3JlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NjaGVtYS9kb21fZWxlbWVudF9zY2hlbWFfcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQscUJBQTZDLDBCQUEwQixDQUFDLENBQUE7QUFDeEUsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFDaEUsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQsMEJBQTBCLGlDQUFpQyxDQUFDLENBQUE7QUFFNUQsd0NBQW9DLDJCQUEyQixDQUFDLENBQUE7QUFFaEUsSUFBTSxjQUFjLEdBQ2hCLGlCQUFVLENBQUMsRUFBQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFDLENBQUMsQ0FBQztBQUcvRjtJQUE4Qyw0Q0FBcUI7SUFBbkU7UUFBOEMsOEJBQXFCO1FBQ3pELG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUE2QnRELENBQUM7SUEzQlMsbURBQWdCLEdBQXhCLFVBQXlCLE9BQWU7UUFDdEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLFNBQVMsR0FBRyx1QkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxnQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkIsaUJBQUcsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsaUJBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCw4Q0FBVyxHQUFYLFVBQVksT0FBZSxFQUFFLFFBQWdCO1FBQzNDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLDZFQUE2RTtZQUM3RSwwQkFBMEI7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsaUJBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0RBQWlCLEdBQWpCLFVBQWtCLFFBQWdCO1FBQ2hDLElBQUksY0FBYyxHQUFHLDZCQUFnQixDQUFDLEdBQUcsQ0FBQyxpQkFBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQy9ELENBQUM7SUE5Qkg7UUFBQyxlQUFVLEVBQUU7O2dDQUFBO0lBK0JiLCtCQUFDO0FBQUQsQ0FBQyxBQTlCRCxDQUE4QywrQ0FBcUIsR0E4QmxFO0FBOUJZLGdDQUF3QiwyQkE4QnBDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuaW1wb3J0IHtzcGxpdE5zTmFtZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2h0bWxfdGFncyc7XG5cbmltcG9ydCB7RWxlbWVudFNjaGVtYVJlZ2lzdHJ5fSBmcm9tICcuL2VsZW1lbnRfc2NoZW1hX3JlZ2lzdHJ5JztcblxuY29uc3QgTkFNRVNQQUNFX1VSSVMgPVxuICAgIENPTlNUX0VYUFIoeyd4bGluayc6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywgJ3N2Zyc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyd9KTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvbUVsZW1lbnRTY2hlbWFSZWdpc3RyeSBleHRlbmRzIEVsZW1lbnRTY2hlbWFSZWdpc3RyeSB7XG4gIHByaXZhdGUgX3Byb3RvRWxlbWVudHMgPSBuZXcgTWFwPHN0cmluZywgRWxlbWVudD4oKTtcblxuICBwcml2YXRlIF9nZXRQcm90b0VsZW1lbnQodGFnTmFtZTogc3RyaW5nKTogRWxlbWVudCB7XG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9wcm90b0VsZW1lbnRzLmdldCh0YWdOYW1lKTtcbiAgICBpZiAoaXNCbGFuayhlbGVtZW50KSkge1xuICAgICAgdmFyIG5zQW5kTmFtZSA9IHNwbGl0TnNOYW1lKHRhZ05hbWUpO1xuICAgICAgZWxlbWVudCA9IGlzUHJlc2VudChuc0FuZE5hbWVbMF0pID9cbiAgICAgICAgICAgICAgICAgICAgRE9NLmNyZWF0ZUVsZW1lbnROUyhOQU1FU1BBQ0VfVVJJU1tuc0FuZE5hbWVbMF1dLCBuc0FuZE5hbWVbMV0pIDpcbiAgICAgICAgICAgICAgICAgICAgRE9NLmNyZWF0ZUVsZW1lbnQobnNBbmROYW1lWzFdKTtcbiAgICAgIHRoaXMuX3Byb3RvRWxlbWVudHMuc2V0KHRhZ05hbWUsIGVsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIGhhc1Byb3BlcnR5KHRhZ05hbWU6IHN0cmluZywgcHJvcE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0YWdOYW1lLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICAgIC8vIGNhbid0IHRlbGwgbm93IGFzIHdlIGRvbid0IGtub3cgd2hpY2ggcHJvcGVydGllcyBhIGN1c3RvbSBlbGVtZW50IHdpbGwgZ2V0XG4gICAgICAvLyBvbmNlIGl0IGlzIGluc3RhbnRpYXRlZFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlbG0gPSB0aGlzLl9nZXRQcm90b0VsZW1lbnQodGFnTmFtZSk7XG4gICAgICByZXR1cm4gRE9NLmhhc1Byb3BlcnR5KGVsbSwgcHJvcE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldE1hcHBlZFByb3BOYW1lKHByb3BOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHZhciBtYXBwZWRQcm9wTmFtZSA9IFN0cmluZ01hcFdyYXBwZXIuZ2V0KERPTS5hdHRyVG9Qcm9wTWFwLCBwcm9wTmFtZSk7XG4gICAgcmV0dXJuIGlzUHJlc2VudChtYXBwZWRQcm9wTmFtZSkgPyBtYXBwZWRQcm9wTmFtZSA6IHByb3BOYW1lO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require(\"angular2/src/facade/collection\");\r\nvar AST = (function () {\r\n function AST() {\r\n }\r\n AST.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return null;\r\n };\r\n AST.prototype.toString = function () { return \"AST\"; };\r\n return AST;\r\n}());\r\nexports.AST = AST;\r\n/**\r\n * Represents a quoted expression of the form:\r\n *\r\n * quote = prefix `:` uninterpretedExpression\r\n * prefix = identifier\r\n * uninterpretedExpression = arbitrary string\r\n *\r\n * A quoted expression is meant to be pre-processed by an AST transformer that\r\n * converts it into another AST that no longer contains quoted expressions.\r\n * It is meant to allow third-party developers to extend Angular template\r\n * expression language. The `uninterpretedExpression` part of the quote is\r\n * therefore not interpreted by the Angular's own expression parser.\r\n */\r\nvar Quote = (function (_super) {\r\n __extends(Quote, _super);\r\n function Quote(prefix, uninterpretedExpression, location) {\r\n _super.call(this);\r\n this.prefix = prefix;\r\n this.uninterpretedExpression = uninterpretedExpression;\r\n this.location = location;\r\n }\r\n Quote.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitQuote(this, context);\r\n };\r\n Quote.prototype.toString = function () { return \"Quote\"; };\r\n return Quote;\r\n}(AST));\r\nexports.Quote = Quote;\r\nvar EmptyExpr = (function (_super) {\r\n __extends(EmptyExpr, _super);\r\n function EmptyExpr() {\r\n _super.apply(this, arguments);\r\n }\r\n EmptyExpr.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n // do nothing\r\n };\r\n return EmptyExpr;\r\n}(AST));\r\nexports.EmptyExpr = EmptyExpr;\r\nvar ImplicitReceiver = (function (_super) {\r\n __extends(ImplicitReceiver, _super);\r\n function ImplicitReceiver() {\r\n _super.apply(this, arguments);\r\n }\r\n ImplicitReceiver.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitImplicitReceiver(this, context);\r\n };\r\n return ImplicitReceiver;\r\n}(AST));\r\nexports.ImplicitReceiver = ImplicitReceiver;\r\n/**\r\n * Multiple expressions separated by a semicolon.\r\n */\r\nvar Chain = (function (_super) {\r\n __extends(Chain, _super);\r\n function Chain(expressions) {\r\n _super.call(this);\r\n this.expressions = expressions;\r\n }\r\n Chain.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitChain(this, context);\r\n };\r\n return Chain;\r\n}(AST));\r\nexports.Chain = Chain;\r\nvar Conditional = (function (_super) {\r\n __extends(Conditional, _super);\r\n function Conditional(condition, trueExp, falseExp) {\r\n _super.call(this);\r\n this.condition = condition;\r\n this.trueExp = trueExp;\r\n this.falseExp = falseExp;\r\n }\r\n Conditional.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitConditional(this, context);\r\n };\r\n return Conditional;\r\n}(AST));\r\nexports.Conditional = Conditional;\r\nvar PropertyRead = (function (_super) {\r\n __extends(PropertyRead, _super);\r\n function PropertyRead(receiver, name) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n }\r\n PropertyRead.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitPropertyRead(this, context);\r\n };\r\n return PropertyRead;\r\n}(AST));\r\nexports.PropertyRead = PropertyRead;\r\nvar PropertyWrite = (function (_super) {\r\n __extends(PropertyWrite, _super);\r\n function PropertyWrite(receiver, name, value) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.value = value;\r\n }\r\n PropertyWrite.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitPropertyWrite(this, context);\r\n };\r\n return PropertyWrite;\r\n}(AST));\r\nexports.PropertyWrite = PropertyWrite;\r\nvar SafePropertyRead = (function (_super) {\r\n __extends(SafePropertyRead, _super);\r\n function SafePropertyRead(receiver, name) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n }\r\n SafePropertyRead.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitSafePropertyRead(this, context);\r\n };\r\n return SafePropertyRead;\r\n}(AST));\r\nexports.SafePropertyRead = SafePropertyRead;\r\nvar KeyedRead = (function (_super) {\r\n __extends(KeyedRead, _super);\r\n function KeyedRead(obj, key) {\r\n _super.call(this);\r\n this.obj = obj;\r\n this.key = key;\r\n }\r\n KeyedRead.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitKeyedRead(this, context);\r\n };\r\n return KeyedRead;\r\n}(AST));\r\nexports.KeyedRead = KeyedRead;\r\nvar KeyedWrite = (function (_super) {\r\n __extends(KeyedWrite, _super);\r\n function KeyedWrite(obj, key, value) {\r\n _super.call(this);\r\n this.obj = obj;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n KeyedWrite.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitKeyedWrite(this, context);\r\n };\r\n return KeyedWrite;\r\n}(AST));\r\nexports.KeyedWrite = KeyedWrite;\r\nvar BindingPipe = (function (_super) {\r\n __extends(BindingPipe, _super);\r\n function BindingPipe(exp, name, args) {\r\n _super.call(this);\r\n this.exp = exp;\r\n this.name = name;\r\n this.args = args;\r\n }\r\n BindingPipe.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitPipe(this, context);\r\n };\r\n return BindingPipe;\r\n}(AST));\r\nexports.BindingPipe = BindingPipe;\r\nvar LiteralPrimitive = (function (_super) {\r\n __extends(LiteralPrimitive, _super);\r\n function LiteralPrimitive(value) {\r\n _super.call(this);\r\n this.value = value;\r\n }\r\n LiteralPrimitive.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitLiteralPrimitive(this, context);\r\n };\r\n return LiteralPrimitive;\r\n}(AST));\r\nexports.LiteralPrimitive = LiteralPrimitive;\r\nvar LiteralArray = (function (_super) {\r\n __extends(LiteralArray, _super);\r\n function LiteralArray(expressions) {\r\n _super.call(this);\r\n this.expressions = expressions;\r\n }\r\n LiteralArray.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitLiteralArray(this, context);\r\n };\r\n return LiteralArray;\r\n}(AST));\r\nexports.LiteralArray = LiteralArray;\r\nvar LiteralMap = (function (_super) {\r\n __extends(LiteralMap, _super);\r\n function LiteralMap(keys, values) {\r\n _super.call(this);\r\n this.keys = keys;\r\n this.values = values;\r\n }\r\n LiteralMap.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitLiteralMap(this, context);\r\n };\r\n return LiteralMap;\r\n}(AST));\r\nexports.LiteralMap = LiteralMap;\r\nvar Interpolation = (function (_super) {\r\n __extends(Interpolation, _super);\r\n function Interpolation(strings, expressions) {\r\n _super.call(this);\r\n this.strings = strings;\r\n this.expressions = expressions;\r\n }\r\n Interpolation.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitInterpolation(this, context);\r\n };\r\n return Interpolation;\r\n}(AST));\r\nexports.Interpolation = Interpolation;\r\nvar Binary = (function (_super) {\r\n __extends(Binary, _super);\r\n function Binary(operation, left, right) {\r\n _super.call(this);\r\n this.operation = operation;\r\n this.left = left;\r\n this.right = right;\r\n }\r\n Binary.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitBinary(this, context);\r\n };\r\n return Binary;\r\n}(AST));\r\nexports.Binary = Binary;\r\nvar PrefixNot = (function (_super) {\r\n __extends(PrefixNot, _super);\r\n function PrefixNot(expression) {\r\n _super.call(this);\r\n this.expression = expression;\r\n }\r\n PrefixNot.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitPrefixNot(this, context);\r\n };\r\n return PrefixNot;\r\n}(AST));\r\nexports.PrefixNot = PrefixNot;\r\nvar MethodCall = (function (_super) {\r\n __extends(MethodCall, _super);\r\n function MethodCall(receiver, name, args) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.args = args;\r\n }\r\n MethodCall.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitMethodCall(this, context);\r\n };\r\n return MethodCall;\r\n}(AST));\r\nexports.MethodCall = MethodCall;\r\nvar SafeMethodCall = (function (_super) {\r\n __extends(SafeMethodCall, _super);\r\n function SafeMethodCall(receiver, name, args) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.args = args;\r\n }\r\n SafeMethodCall.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitSafeMethodCall(this, context);\r\n };\r\n return SafeMethodCall;\r\n}(AST));\r\nexports.SafeMethodCall = SafeMethodCall;\r\nvar FunctionCall = (function (_super) {\r\n __extends(FunctionCall, _super);\r\n function FunctionCall(target, args) {\r\n _super.call(this);\r\n this.target = target;\r\n this.args = args;\r\n }\r\n FunctionCall.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return visitor.visitFunctionCall(this, context);\r\n };\r\n return FunctionCall;\r\n}(AST));\r\nexports.FunctionCall = FunctionCall;\r\nvar ASTWithSource = (function (_super) {\r\n __extends(ASTWithSource, _super);\r\n function ASTWithSource(ast, source, location) {\r\n _super.call(this);\r\n this.ast = ast;\r\n this.source = source;\r\n this.location = location;\r\n }\r\n ASTWithSource.prototype.visit = function (visitor, context) {\r\n if (context === void 0) { context = null; }\r\n return this.ast.visit(visitor, context);\r\n };\r\n ASTWithSource.prototype.toString = function () { return this.source + \" in \" + this.location; };\r\n return ASTWithSource;\r\n}(AST));\r\nexports.ASTWithSource = ASTWithSource;\r\nvar TemplateBinding = (function () {\r\n function TemplateBinding(key, keyIsVar, name, expression) {\r\n this.key = key;\r\n this.keyIsVar = keyIsVar;\r\n this.name = name;\r\n this.expression = expression;\r\n }\r\n return TemplateBinding;\r\n}());\r\nexports.TemplateBinding = TemplateBinding;\r\nvar RecursiveAstVisitor = (function () {\r\n function RecursiveAstVisitor() {\r\n }\r\n RecursiveAstVisitor.prototype.visitBinary = function (ast, context) {\r\n ast.left.visit(this);\r\n ast.right.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitChain = function (ast, context) { return this.visitAll(ast.expressions, context); };\r\n RecursiveAstVisitor.prototype.visitConditional = function (ast, context) {\r\n ast.condition.visit(this);\r\n ast.trueExp.visit(this);\r\n ast.falseExp.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitPipe = function (ast, context) {\r\n ast.exp.visit(this);\r\n this.visitAll(ast.args, context);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitFunctionCall = function (ast, context) {\r\n ast.target.visit(this);\r\n this.visitAll(ast.args, context);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitImplicitReceiver = function (ast, context) { return null; };\r\n RecursiveAstVisitor.prototype.visitInterpolation = function (ast, context) {\r\n return this.visitAll(ast.expressions, context);\r\n };\r\n RecursiveAstVisitor.prototype.visitKeyedRead = function (ast, context) {\r\n ast.obj.visit(this);\r\n ast.key.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitKeyedWrite = function (ast, context) {\r\n ast.obj.visit(this);\r\n ast.key.visit(this);\r\n ast.value.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitLiteralArray = function (ast, context) {\r\n return this.visitAll(ast.expressions, context);\r\n };\r\n RecursiveAstVisitor.prototype.visitLiteralMap = function (ast, context) { return this.visitAll(ast.values, context); };\r\n RecursiveAstVisitor.prototype.visitLiteralPrimitive = function (ast, context) { return null; };\r\n RecursiveAstVisitor.prototype.visitMethodCall = function (ast, context) {\r\n ast.receiver.visit(this);\r\n return this.visitAll(ast.args, context);\r\n };\r\n RecursiveAstVisitor.prototype.visitPrefixNot = function (ast, context) {\r\n ast.expression.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitPropertyRead = function (ast, context) {\r\n ast.receiver.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitPropertyWrite = function (ast, context) {\r\n ast.receiver.visit(this);\r\n ast.value.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitSafePropertyRead = function (ast, context) {\r\n ast.receiver.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitSafeMethodCall = function (ast, context) {\r\n ast.receiver.visit(this);\r\n return this.visitAll(ast.args, context);\r\n };\r\n RecursiveAstVisitor.prototype.visitAll = function (asts, context) {\r\n var _this = this;\r\n asts.forEach(function (ast) { return ast.visit(_this, context); });\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitQuote = function (ast, context) { return null; };\r\n return RecursiveAstVisitor;\r\n}());\r\nexports.RecursiveAstVisitor = RecursiveAstVisitor;\r\nvar AstTransformer = (function () {\r\n function AstTransformer() {\r\n }\r\n AstTransformer.prototype.visitImplicitReceiver = function (ast, context) { return ast; };\r\n AstTransformer.prototype.visitInterpolation = function (ast, context) {\r\n return new Interpolation(ast.strings, this.visitAll(ast.expressions));\r\n };\r\n AstTransformer.prototype.visitLiteralPrimitive = function (ast, context) {\r\n return new LiteralPrimitive(ast.value);\r\n };\r\n AstTransformer.prototype.visitPropertyRead = function (ast, context) {\r\n return new PropertyRead(ast.receiver.visit(this), ast.name);\r\n };\r\n AstTransformer.prototype.visitPropertyWrite = function (ast, context) {\r\n return new PropertyWrite(ast.receiver.visit(this), ast.name, ast.value);\r\n };\r\n AstTransformer.prototype.visitSafePropertyRead = function (ast, context) {\r\n return new SafePropertyRead(ast.receiver.visit(this), ast.name);\r\n };\r\n AstTransformer.prototype.visitMethodCall = function (ast, context) {\r\n return new MethodCall(ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitSafeMethodCall = function (ast, context) {\r\n return new SafeMethodCall(ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitFunctionCall = function (ast, context) {\r\n return new FunctionCall(ast.target.visit(this), this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitLiteralArray = function (ast, context) {\r\n return new LiteralArray(this.visitAll(ast.expressions));\r\n };\r\n AstTransformer.prototype.visitLiteralMap = function (ast, context) {\r\n return new LiteralMap(ast.keys, this.visitAll(ast.values));\r\n };\r\n AstTransformer.prototype.visitBinary = function (ast, context) {\r\n return new Binary(ast.operation, ast.left.visit(this), ast.right.visit(this));\r\n };\r\n AstTransformer.prototype.visitPrefixNot = function (ast, context) {\r\n return new PrefixNot(ast.expression.visit(this));\r\n };\r\n AstTransformer.prototype.visitConditional = function (ast, context) {\r\n return new Conditional(ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));\r\n };\r\n AstTransformer.prototype.visitPipe = function (ast, context) {\r\n return new BindingPipe(ast.exp.visit(this), ast.name, this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitKeyedRead = function (ast, context) {\r\n return new KeyedRead(ast.obj.visit(this), ast.key.visit(this));\r\n };\r\n AstTransformer.prototype.visitKeyedWrite = function (ast, context) {\r\n return new KeyedWrite(ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));\r\n };\r\n AstTransformer.prototype.visitAll = function (asts) {\r\n var res = collection_1.ListWrapper.createFixedSize(asts.length);\r\n for (var i = 0; i < asts.length; ++i) {\r\n res[i] = asts[i].visit(this);\r\n }\r\n return res;\r\n };\r\n AstTransformer.prototype.visitChain = function (ast, context) { return new Chain(this.visitAll(ast.expressions)); };\r\n AstTransformer.prototype.visitQuote = function (ast, context) {\r\n return new Quote(ast.prefix, ast.uninterpretedExpression, ast.location);\r\n };\r\n return AstTransformer;\r\n}());\r\nexports.AstTransformer = AstTransformer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2V4cHJlc3Npb25fcGFyc2VyL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUUzRDtJQUFBO0lBR0EsQ0FBQztJQUZDLG1CQUFLLEdBQUwsVUFBTSxPQUFtQixFQUFFLE9BQW1CO1FBQW5CLHVCQUFtQixHQUFuQixjQUFtQjtRQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFBQyxDQUFDO0lBQ3JFLHNCQUFRLEdBQVIsY0FBcUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEMsVUFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksV0FBRyxNQUdmLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSDtJQUEyQix5QkFBRztJQUM1QixlQUFtQixNQUFjLEVBQVMsdUJBQStCLEVBQVMsUUFBYTtRQUM3RixpQkFBTyxDQUFDO1FBRFMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBUTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQUs7SUFFL0YsQ0FBQztJQUNELHFCQUFLLEdBQUwsVUFBTSxPQUFtQixFQUFFLE9BQW1CO1FBQW5CLHVCQUFtQixHQUFuQixjQUFtQjtRQUFTLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUFDLENBQUM7SUFDbEcsd0JBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4QyxZQUFDO0FBQUQsQ0FBQyxBQU5ELENBQTJCLEdBQUcsR0FNN0I7QUFOWSxhQUFLLFFBTWpCLENBQUE7QUFFRDtJQUErQiw2QkFBRztJQUFsQztRQUErQiw4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QVIsVUFBUyxJQUFXO1FBQ2xCLElBQUksR0FBRyxHQUFHLHdCQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxtQ0FBVSxHQUFWLFVBQVcsR0FBVSxFQUFFLE9BQVksSUFBUyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0YsbUNBQVUsR0FBVixVQUFXLEdBQVUsRUFBRSxPQUFZO1FBQ2pDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQWpGRCxJQWlGQztBQWpGWSxzQkFBYyxpQkFpRjFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBBU1Qge1xuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIFwiQVNUXCI7IH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcXVvdGVkIGV4cHJlc3Npb24gb2YgdGhlIGZvcm06XG4gKlxuICogcXVvdGUgPSBwcmVmaXggYDpgIHVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uXG4gKiBwcmVmaXggPSBpZGVudGlmaWVyXG4gKiB1bmludGVycHJldGVkRXhwcmVzc2lvbiA9IGFyYml0cmFyeSBzdHJpbmdcbiAqXG4gKiBBIHF1b3RlZCBleHByZXNzaW9uIGlzIG1lYW50IHRvIGJlIHByZS1wcm9jZXNzZWQgYnkgYW4gQVNUIHRyYW5zZm9ybWVyIHRoYXRcbiAqIGNvbnZlcnRzIGl0IGludG8gYW5vdGhlciBBU1QgdGhhdCBubyBsb25nZXIgY29udGFpbnMgcXVvdGVkIGV4cHJlc3Npb25zLlxuICogSXQgaXMgbWVhbnQgdG8gYWxsb3cgdGhpcmQtcGFydHkgZGV2ZWxvcGVycyB0byBleHRlbmQgQW5ndWxhciB0ZW1wbGF0ZVxuICogZXhwcmVzc2lvbiBsYW5ndWFnZS4gVGhlIGB1bmludGVycHJldGVkRXhwcmVzc2lvbmAgcGFydCBvZiB0aGUgcXVvdGUgaXNcbiAqIHRoZXJlZm9yZSBub3QgaW50ZXJwcmV0ZWQgYnkgdGhlIEFuZ3VsYXIncyBvd24gZXhwcmVzc2lvbiBwYXJzZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdW90ZSBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcmVmaXg6IHN0cmluZywgcHVibGljIHVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uOiBzdHJpbmcsIHB1YmxpYyBsb2NhdGlvbjogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRRdW90ZSh0aGlzLCBjb250ZXh0KTsgfVxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gXCJRdW90ZVwiOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbXB0eUV4cHIgZXh0ZW5kcyBBU1Qge1xuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKSB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBsaWNpdFJlY2VpdmVyIGV4dGVuZHMgQVNUIHtcbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRJbXBsaWNpdFJlY2VpdmVyKHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cbi8qKlxuICogTXVsdGlwbGUgZXhwcmVzc2lvbnMgc2VwYXJhdGVkIGJ5IGEgc2VtaWNvbG9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2hhaW4gZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXhwcmVzc2lvbnM6IGFueVtdKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hhaW4odGhpcywgY29udGV4dCk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbmFsIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbmRpdGlvbjogQVNULCBwdWJsaWMgdHJ1ZUV4cDogQVNULCBwdWJsaWMgZmFsc2VFeHA6IEFTVCkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29uZGl0aW9uYWwodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3BlcnR5UmVhZCBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWNlaXZlcjogQVNULCBwdWJsaWMgbmFtZTogc3RyaW5nKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcm9wZXJ0eVJlYWQodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3BlcnR5V3JpdGUgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVjZWl2ZXI6IEFTVCwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIHZhbHVlOiBBU1QpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFByb3BlcnR5V3JpdGUodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNhZmVQcm9wZXJ0eVJlYWQgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVjZWl2ZXI6IEFTVCwgcHVibGljIG5hbWU6IHN0cmluZykgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U2FmZVByb3BlcnR5UmVhZCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5ZWRSZWFkIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIG9iajogQVNULCBwdWJsaWMga2V5OiBBU1QpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEtleWVkUmVhZCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5ZWRXcml0ZSBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvYmo6IEFTVCwgcHVibGljIGtleTogQVNULCBwdWJsaWMgdmFsdWU6IEFTVCkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0S2V5ZWRXcml0ZSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmluZGluZ1BpcGUgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXhwOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBhcmdzOiBhbnlbXSkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdFBpcGUodGhpcywgY29udGV4dCk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIExpdGVyYWxQcmltaXRpdmUgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWUpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdExpdGVyYWxQcmltaXRpdmUodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpdGVyYWxBcnJheSBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBleHByZXNzaW9uczogYW55W10pIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdExpdGVyYWxBcnJheSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGl0ZXJhbE1hcCBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXlzOiBhbnlbXSwgcHVibGljIHZhbHVlczogYW55W10pIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdExpdGVyYWxNYXAodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVycG9sYXRpb24gZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RyaW5nczogYW55W10sIHB1YmxpYyBleHByZXNzaW9uczogYW55W10pIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEludGVycG9sYXRpb24odGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbmFyeSBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcGVyYXRpb246IHN0cmluZywgcHVibGljIGxlZnQ6IEFTVCwgcHVibGljIHJpZ2h0OiBBU1QpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpbmFyeSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4Tm90IGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIGV4cHJlc3Npb246IEFTVCkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHJlZml4Tm90KHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRob2RDYWxsIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlY2VpdmVyOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBhcmdzOiBhbnlbXSkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWV0aG9kQ2FsbCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2FmZU1ldGhvZENhbGwgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVjZWl2ZXI6IEFTVCwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGFyZ3M6IGFueVtdKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTYWZlTWV0aG9kQ2FsbCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25DYWxsIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRhcmdldDogQVNULCBwdWJsaWMgYXJnczogYW55W10pIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEZ1bmN0aW9uQ2FsbCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQVNUV2l0aFNvdXJjZSBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhc3Q6IEFTVCwgcHVibGljIHNvdXJjZTogc3RyaW5nLCBwdWJsaWMgbG9jYXRpb246IHN0cmluZykgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkgeyByZXR1cm4gdGhpcy5hc3QudmlzaXQodmlzaXRvciwgY29udGV4dCk7IH1cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGAke3RoaXMuc291cmNlfSBpbiAke3RoaXMubG9jYXRpb259YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCaW5kaW5nIHtcbiAgY29uc3RydWN0b3IocHVibGljIGtleTogc3RyaW5nLCBwdWJsaWMga2V5SXNWYXI6IGJvb2xlYW4sIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBleHByZXNzaW9uOiBBU1RXaXRoU291cmNlKSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzdFZpc2l0b3Ige1xuICB2aXNpdEJpbmFyeShhc3Q6IEJpbmFyeSwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdENoYWluKGFzdDogQ2hhaW4sIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRDb25kaXRpb25hbChhc3Q6IENvbmRpdGlvbmFsLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogRnVuY3Rpb25DYWxsLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0SW1wbGljaXRSZWNlaXZlcihhc3Q6IEltcGxpY2l0UmVjZWl2ZXIsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogSW50ZXJwb2xhdGlvbiwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEtleWVkUmVhZChhc3Q6IEtleWVkUmVhZCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEtleWVkV3JpdGUoYXN0OiBLZXllZFdyaXRlLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0TGl0ZXJhbEFycmF5KGFzdDogTGl0ZXJhbEFycmF5LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0TGl0ZXJhbE1hcChhc3Q6IExpdGVyYWxNYXAsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRMaXRlcmFsUHJpbWl0aXZlKGFzdDogTGl0ZXJhbFByaW1pdGl2ZSwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UGlwZShhc3Q6IEJpbmRpbmdQaXBlLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UHJlZml4Tm90KGFzdDogUHJlZml4Tm90LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UHJvcGVydHlSZWFkKGFzdDogUHJvcGVydHlSZWFkLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UHJvcGVydHlXcml0ZShhc3Q6IFByb3BlcnR5V3JpdGUsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRRdW90ZShhc3Q6IFF1b3RlLCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0U2FmZU1ldGhvZENhbGwoYXN0OiBTYWZlTWV0aG9kQ2FsbCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFNhZmVQcm9wZXJ0eVJlYWQoYXN0OiBTYWZlUHJvcGVydHlSZWFkLCBjb250ZXh0OiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBSZWN1cnNpdmVBc3RWaXNpdG9yIGltcGxlbWVudHMgQXN0VmlzaXRvciB7XG4gIHZpc2l0QmluYXJ5KGFzdDogQmluYXJ5LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5sZWZ0LnZpc2l0KHRoaXMpO1xuICAgIGFzdC5yaWdodC52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdENoYWluKGFzdDogQ2hhaW4sIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucywgY29udGV4dCk7IH1cbiAgdmlzaXRDb25kaXRpb25hbChhc3Q6IENvbmRpdGlvbmFsLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5jb25kaXRpb24udmlzaXQodGhpcyk7XG4gICAgYXN0LnRydWVFeHAudmlzaXQodGhpcyk7XG4gICAgYXN0LmZhbHNlRXhwLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0UGlwZShhc3Q6IEJpbmRpbmdQaXBlLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC5leHAudmlzaXQodGhpcyk7XG4gICAgdGhpcy52aXNpdEFsbChhc3QuYXJncywgY29udGV4dCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRGdW5jdGlvbkNhbGwoYXN0OiBGdW5jdGlvbkNhbGwsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LnRhcmdldC52aXNpdCh0aGlzKTtcbiAgICB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzLCBjb250ZXh0KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEltcGxpY2l0UmVjZWl2ZXIoYXN0OiBJbXBsaWNpdFJlY2VpdmVyLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEludGVycG9sYXRpb24oYXN0OiBJbnRlcnBvbGF0aW9uLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucywgY29udGV4dCk7XG4gIH1cbiAgdmlzaXRLZXllZFJlYWQoYXN0OiBLZXllZFJlYWQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0Lm9iai52aXNpdCh0aGlzKTtcbiAgICBhc3Qua2V5LnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0S2V5ZWRXcml0ZShhc3Q6IEtleWVkV3JpdGUsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0Lm9iai52aXNpdCh0aGlzKTtcbiAgICBhc3Qua2V5LnZpc2l0KHRoaXMpO1xuICAgIGFzdC52YWx1ZS52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdExpdGVyYWxBcnJheShhc3Q6IExpdGVyYWxBcnJheSwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMsIGNvbnRleHQpO1xuICB9XG4gIHZpc2l0TGl0ZXJhbE1hcChhc3Q6IExpdGVyYWxNYXAsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC52YWx1ZXMsIGNvbnRleHQpOyB9XG4gIHZpc2l0TGl0ZXJhbFByaW1pdGl2ZShhc3Q6IExpdGVyYWxQcmltaXRpdmUsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0TWV0aG9kQ2FsbChhc3Q6IE1ldGhvZENhbGwsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzLCBjb250ZXh0KTtcbiAgfVxuICB2aXNpdFByZWZpeE5vdChhc3Q6IFByZWZpeE5vdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBhc3QuZXhwcmVzc2lvbi52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdFByb3BlcnR5UmVhZChhc3Q6IFByb3BlcnR5UmVhZCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRQcm9wZXJ0eVdyaXRlKGFzdDogUHJvcGVydHlXcml0ZSwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgYXN0LnZhbHVlLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0U2FmZVByb3BlcnR5UmVhZChhc3Q6IFNhZmVQcm9wZXJ0eVJlYWQsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0U2FmZU1ldGhvZENhbGwoYXN0OiBTYWZlTWV0aG9kQ2FsbCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmFyZ3MsIGNvbnRleHQpO1xuICB9XG4gIHZpc2l0QWxsKGFzdHM6IEFTVFtdLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdHMuZm9yRWFjaChhc3QgPT4gYXN0LnZpc2l0KHRoaXMsIGNvbnRleHQpKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdFF1b3RlKGFzdDogUXVvdGUsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3RUcmFuc2Zvcm1lciBpbXBsZW1lbnRzIEFzdFZpc2l0b3Ige1xuICB2aXNpdEltcGxpY2l0UmVjZWl2ZXIoYXN0OiBJbXBsaWNpdFJlY2VpdmVyLCBjb250ZXh0OiBhbnkpOiBBU1QgeyByZXR1cm4gYXN0OyB9XG5cbiAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogSW50ZXJwb2xhdGlvbiwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEludGVycG9sYXRpb24oYXN0LnN0cmluZ3MsIHRoaXMudmlzaXRBbGwoYXN0LmV4cHJlc3Npb25zKSk7XG4gIH1cblxuICB2aXNpdExpdGVyYWxQcmltaXRpdmUoYXN0OiBMaXRlcmFsUHJpbWl0aXZlLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xuICAgIHJldHVybiBuZXcgTGl0ZXJhbFByaW1pdGl2ZShhc3QudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRQcm9wZXJ0eVJlYWQoYXN0OiBQcm9wZXJ0eVJlYWQsIGNvbnRleHQ6IGFueSk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVJlYWQoYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpLCBhc3QubmFtZSk7XG4gIH1cblxuICB2aXNpdFByb3BlcnR5V3JpdGUoYXN0OiBQcm9wZXJ0eVdyaXRlLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xuICAgIHJldHVybiBuZXcgUHJvcGVydHlXcml0ZShhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lLCBhc3QudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTYWZlUHJvcGVydHlSZWFkKGFzdDogU2FmZVByb3BlcnR5UmVhZCwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IFNhZmVQcm9wZXJ0eVJlYWQoYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpLCBhc3QubmFtZSk7XG4gIH1cblxuICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xuICAgIHJldHVybiBuZXcgTWV0aG9kQ2FsbChhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XG4gIH1cblxuICB2aXNpdFNhZmVNZXRob2RDYWxsKGFzdDogU2FmZU1ldGhvZENhbGwsIGNvbnRleHQ6IGFueSk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBTYWZlTWV0aG9kQ2FsbChhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uQ2FsbChhc3Q6IEZ1bmN0aW9uQ2FsbCwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbChhc3QudGFyZ2V0LnZpc2l0KHRoaXMpLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XG4gIH1cblxuICB2aXNpdExpdGVyYWxBcnJheShhc3Q6IExpdGVyYWxBcnJheSwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IExpdGVyYWxBcnJheSh0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucykpO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsTWFwKGFzdDogTGl0ZXJhbE1hcCwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IExpdGVyYWxNYXAoYXN0LmtleXMsIHRoaXMudmlzaXRBbGwoYXN0LnZhbHVlcykpO1xuICB9XG5cbiAgdmlzaXRCaW5hcnkoYXN0OiBCaW5hcnksIGNvbnRleHQ6IGFueSk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnkoYXN0Lm9wZXJhdGlvbiwgYXN0LmxlZnQudmlzaXQodGhpcyksIGFzdC5yaWdodC52aXNpdCh0aGlzKSk7XG4gIH1cblxuICB2aXNpdFByZWZpeE5vdChhc3Q6IFByZWZpeE5vdCwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IFByZWZpeE5vdChhc3QuZXhwcmVzc2lvbi52aXNpdCh0aGlzKSk7XG4gIH1cblxuICB2aXNpdENvbmRpdGlvbmFsKGFzdDogQ29uZGl0aW9uYWwsIGNvbnRleHQ6IGFueSk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbChhc3QuY29uZGl0aW9uLnZpc2l0KHRoaXMpLCBhc3QudHJ1ZUV4cC52aXNpdCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5mYWxzZUV4cC52aXNpdCh0aGlzKSk7XG4gIH1cblxuICB2aXNpdFBpcGUoYXN0OiBCaW5kaW5nUGlwZSwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdQaXBlKGFzdC5leHAudmlzaXQodGhpcyksIGFzdC5uYW1lLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XG4gIH1cblxuICB2aXNpdEtleWVkUmVhZChhc3Q6IEtleWVkUmVhZCwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEtleWVkUmVhZChhc3Qub2JqLnZpc2l0KHRoaXMpLCBhc3Qua2V5LnZpc2l0KHRoaXMpKTtcbiAgfVxuXG4gIHZpc2l0S2V5ZWRXcml0ZShhc3Q6IEtleWVkV3JpdGUsIGNvbnRleHQ6IGFueSk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBLZXllZFdyaXRlKGFzdC5vYmoudmlzaXQodGhpcyksIGFzdC5rZXkudmlzaXQodGhpcyksIGFzdC52YWx1ZS52aXNpdCh0aGlzKSk7XG4gIH1cblxuICB2aXNpdEFsbChhc3RzOiBhbnlbXSk6IGFueVtdIHtcbiAgICB2YXIgcmVzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKGFzdHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHJlc1tpXSA9IGFzdHNbaV0udmlzaXQodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB2aXNpdENoYWluKGFzdDogQ2hhaW4sIGNvbnRleHQ6IGFueSk6IEFTVCB7IHJldHVybiBuZXcgQ2hhaW4odGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpKTsgfVxuXG4gIHZpc2l0UXVvdGUoYXN0OiBRdW90ZSwgY29udGV4dDogYW55KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IFF1b3RlKGFzdC5wcmVmaXgsIGFzdC51bmludGVycHJldGVkRXhwcmVzc2lvbiwgYXN0LmxvY2F0aW9uKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar decorators_1 = require('angular2/src/core/di/decorators');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lexer_1 = require('./lexer');\r\nvar ast_1 = require('./ast');\r\nvar _implicitReceiver = new ast_1.ImplicitReceiver();\r\n// TODO(tbosch): Cannot make this const/final right now because of the transpiler...\r\nvar INTERPOLATION_REGEXP = /\\{\\{([\\s\\S]*?)\\}\\}/g;\r\nvar ParseException = (function (_super) {\r\n __extends(ParseException, _super);\r\n function ParseException(message, input, errLocation, ctxLocation) {\r\n _super.call(this, \"Parser Error: \" + message + \" \" + errLocation + \" [\" + input + \"] in \" + ctxLocation);\r\n }\r\n return ParseException;\r\n}(exceptions_1.BaseException));\r\nvar SplitInterpolation = (function () {\r\n function SplitInterpolation(strings, expressions) {\r\n this.strings = strings;\r\n this.expressions = expressions;\r\n }\r\n return SplitInterpolation;\r\n}());\r\nexports.SplitInterpolation = SplitInterpolation;\r\nvar TemplateBindingParseResult = (function () {\r\n function TemplateBindingParseResult(templateBindings, warnings) {\r\n this.templateBindings = templateBindings;\r\n this.warnings = warnings;\r\n }\r\n return TemplateBindingParseResult;\r\n}());\r\nexports.TemplateBindingParseResult = TemplateBindingParseResult;\r\nvar Parser = (function () {\r\n function Parser(/** @internal */ _lexer) {\r\n this._lexer = _lexer;\r\n }\r\n Parser.prototype.parseAction = function (input, location) {\r\n this._checkNoInterpolation(input, location);\r\n var tokens = this._lexer.tokenize(this._stripComments(input));\r\n var ast = new _ParseAST(input, location, tokens, true).parseChain();\r\n return new ast_1.ASTWithSource(ast, input, location);\r\n };\r\n Parser.prototype.parseBinding = function (input, location) {\r\n var ast = this._parseBindingAst(input, location);\r\n return new ast_1.ASTWithSource(ast, input, location);\r\n };\r\n Parser.prototype.parseSimpleBinding = function (input, location) {\r\n var ast = this._parseBindingAst(input, location);\r\n if (!SimpleExpressionChecker.check(ast)) {\r\n throw new ParseException('Host binding expression can only contain field access and constants', input, location);\r\n }\r\n return new ast_1.ASTWithSource(ast, input, location);\r\n };\r\n Parser.prototype._parseBindingAst = function (input, location) {\r\n // Quotes expressions use 3rd-party expression language. We don't want to use\r\n // our lexer or parser for that, so we check for that ahead of time.\r\n var quote = this._parseQuote(input, location);\r\n if (lang_1.isPresent(quote)) {\r\n return quote;\r\n }\r\n this._checkNoInterpolation(input, location);\r\n var tokens = this._lexer.tokenize(this._stripComments(input));\r\n return new _ParseAST(input, location, tokens, false).parseChain();\r\n };\r\n Parser.prototype._parseQuote = function (input, location) {\r\n if (lang_1.isBlank(input))\r\n return null;\r\n var prefixSeparatorIndex = input.indexOf(':');\r\n if (prefixSeparatorIndex == -1)\r\n return null;\r\n var prefix = input.substring(0, prefixSeparatorIndex).trim();\r\n if (!lexer_1.isIdentifier(prefix))\r\n return null;\r\n var uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);\r\n return new ast_1.Quote(prefix, uninterpretedExpression, location);\r\n };\r\n Parser.prototype.parseTemplateBindings = function (input, location) {\r\n var tokens = this._lexer.tokenize(input);\r\n return new _ParseAST(input, location, tokens, false).parseTemplateBindings();\r\n };\r\n Parser.prototype.parseInterpolation = function (input, location) {\r\n var split = this.splitInterpolation(input, location);\r\n if (split == null)\r\n return null;\r\n var expressions = [];\r\n for (var i = 0; i < split.expressions.length; ++i) {\r\n var tokens = this._lexer.tokenize(this._stripComments(split.expressions[i]));\r\n var ast = new _ParseAST(input, location, tokens, false).parseChain();\r\n expressions.push(ast);\r\n }\r\n return new ast_1.ASTWithSource(new ast_1.Interpolation(split.strings, expressions), input, location);\r\n };\r\n Parser.prototype.splitInterpolation = function (input, location) {\r\n var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);\r\n if (parts.length <= 1) {\r\n return null;\r\n }\r\n var strings = [];\r\n var expressions = [];\r\n for (var i = 0; i < parts.length; i++) {\r\n var part = parts[i];\r\n if (i % 2 === 0) {\r\n // fixed string\r\n strings.push(part);\r\n }\r\n else if (part.trim().length > 0) {\r\n expressions.push(part);\r\n }\r\n else {\r\n throw new ParseException('Blank expressions are not allowed in interpolated strings', input, \"at column \" + this._findInterpolationErrorColumn(parts, i) + \" in\", location);\r\n }\r\n }\r\n return new SplitInterpolation(strings, expressions);\r\n };\r\n Parser.prototype.wrapLiteralPrimitive = function (input, location) {\r\n return new ast_1.ASTWithSource(new ast_1.LiteralPrimitive(input), input, location);\r\n };\r\n Parser.prototype._stripComments = function (input) {\r\n var i = this._commentStart(input);\r\n return lang_1.isPresent(i) ? input.substring(0, i).trim() : input;\r\n };\r\n Parser.prototype._commentStart = function (input) {\r\n var outerQuote = null;\r\n for (var i = 0; i < input.length - 1; i++) {\r\n var char = lang_1.StringWrapper.charCodeAt(input, i);\r\n var nextChar = lang_1.StringWrapper.charCodeAt(input, i + 1);\r\n if (char === lexer_1.$SLASH && nextChar == lexer_1.$SLASH && lang_1.isBlank(outerQuote))\r\n return i;\r\n if (outerQuote === char) {\r\n outerQuote = null;\r\n }\r\n else if (lang_1.isBlank(outerQuote) && lexer_1.isQuote(char)) {\r\n outerQuote = char;\r\n }\r\n }\r\n return null;\r\n };\r\n Parser.prototype._checkNoInterpolation = function (input, location) {\r\n var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);\r\n if (parts.length > 1) {\r\n throw new ParseException('Got interpolation ({{}}) where expression was expected', input, \"at column \" + this._findInterpolationErrorColumn(parts, 1) + \" in\", location);\r\n }\r\n };\r\n Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx) {\r\n var errLocation = '';\r\n for (var j = 0; j < partInErrIdx; j++) {\r\n errLocation += j % 2 === 0 ? parts[j] : \"{{\" + parts[j] + \"}}\";\r\n }\r\n return errLocation.length;\r\n };\r\n Parser = __decorate([\r\n decorators_1.Injectable(), \r\n __metadata('design:paramtypes', [lexer_1.Lexer])\r\n ], Parser);\r\n return Parser;\r\n}());\r\nexports.Parser = Parser;\r\nvar _ParseAST = (function () {\r\n function _ParseAST(input, location, tokens, parseAction) {\r\n this.input = input;\r\n this.location = location;\r\n this.tokens = tokens;\r\n this.parseAction = parseAction;\r\n this.index = 0;\r\n }\r\n _ParseAST.prototype.peek = function (offset) {\r\n var i = this.index + offset;\r\n return i < this.tokens.length ? this.tokens[i] : lexer_1.EOF;\r\n };\r\n Object.defineProperty(_ParseAST.prototype, \"next\", {\r\n get: function () { return this.peek(0); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(_ParseAST.prototype, \"inputIndex\", {\r\n get: function () {\r\n return (this.index < this.tokens.length) ? this.next.index : this.input.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n _ParseAST.prototype.advance = function () { this.index++; };\r\n _ParseAST.prototype.optionalCharacter = function (code) {\r\n if (this.next.isCharacter(code)) {\r\n this.advance();\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n _ParseAST.prototype.peekKeywordLet = function () { return this.next.isKeywordLet(); };\r\n _ParseAST.prototype.peekDeprecatedKeywordVar = function () { return this.next.isKeywordDeprecatedVar(); };\r\n _ParseAST.prototype.peekDeprecatedOperatorHash = function () { return this.next.isOperator('#'); };\r\n _ParseAST.prototype.expectCharacter = function (code) {\r\n if (this.optionalCharacter(code))\r\n return;\r\n this.error(\"Missing expected \" + lang_1.StringWrapper.fromCharCode(code));\r\n };\r\n _ParseAST.prototype.optionalOperator = function (op) {\r\n if (this.next.isOperator(op)) {\r\n this.advance();\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n _ParseAST.prototype.expectOperator = function (operator) {\r\n if (this.optionalOperator(operator))\r\n return;\r\n this.error(\"Missing expected operator \" + operator);\r\n };\r\n _ParseAST.prototype.expectIdentifierOrKeyword = function () {\r\n var n = this.next;\r\n if (!n.isIdentifier() && !n.isKeyword()) {\r\n this.error(\"Unexpected token \" + n + \", expected identifier or keyword\");\r\n }\r\n this.advance();\r\n return n.toString();\r\n };\r\n _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () {\r\n var n = this.next;\r\n if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\r\n this.error(\"Unexpected token \" + n + \", expected identifier, keyword, or string\");\r\n }\r\n this.advance();\r\n return n.toString();\r\n };\r\n _ParseAST.prototype.parseChain = function () {\r\n var exprs = [];\r\n while (this.index < this.tokens.length) {\r\n var expr = this.parsePipe();\r\n exprs.push(expr);\r\n if (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n if (!this.parseAction) {\r\n this.error(\"Binding expression cannot contain chained expression\");\r\n }\r\n while (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n } // read all semicolons\r\n }\r\n else if (this.index < this.tokens.length) {\r\n this.error(\"Unexpected token '\" + this.next + \"'\");\r\n }\r\n }\r\n if (exprs.length == 0)\r\n return new ast_1.EmptyExpr();\r\n if (exprs.length == 1)\r\n return exprs[0];\r\n return new ast_1.Chain(exprs);\r\n };\r\n _ParseAST.prototype.parsePipe = function () {\r\n var result = this.parseExpression();\r\n if (this.optionalOperator(\"|\")) {\r\n if (this.parseAction) {\r\n this.error(\"Cannot have a pipe in an action expression\");\r\n }\r\n do {\r\n var name = this.expectIdentifierOrKeyword();\r\n var args = [];\r\n while (this.optionalCharacter(lexer_1.$COLON)) {\r\n args.push(this.parseExpression());\r\n }\r\n result = new ast_1.BindingPipe(result, name, args);\r\n } while (this.optionalOperator(\"|\"));\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); };\r\n _ParseAST.prototype.parseConditional = function () {\r\n var start = this.inputIndex;\r\n var result = this.parseLogicalOr();\r\n if (this.optionalOperator('?')) {\r\n var yes = this.parsePipe();\r\n if (!this.optionalCharacter(lexer_1.$COLON)) {\r\n var end = this.inputIndex;\r\n var expression = this.input.substring(start, end);\r\n this.error(\"Conditional expression \" + expression + \" requires all 3 expressions\");\r\n }\r\n var no = this.parsePipe();\r\n return new ast_1.Conditional(result, yes, no);\r\n }\r\n else {\r\n return result;\r\n }\r\n };\r\n _ParseAST.prototype.parseLogicalOr = function () {\r\n // '||'\r\n var result = this.parseLogicalAnd();\r\n while (this.optionalOperator('||')) {\r\n result = new ast_1.Binary('||', result, this.parseLogicalAnd());\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseLogicalAnd = function () {\r\n // '&&'\r\n var result = this.parseEquality();\r\n while (this.optionalOperator('&&')) {\r\n result = new ast_1.Binary('&&', result, this.parseEquality());\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseEquality = function () {\r\n // '==','!=','===','!=='\r\n var result = this.parseRelational();\r\n while (true) {\r\n if (this.optionalOperator('==')) {\r\n result = new ast_1.Binary('==', result, this.parseRelational());\r\n }\r\n else if (this.optionalOperator('===')) {\r\n result = new ast_1.Binary('===', result, this.parseRelational());\r\n }\r\n else if (this.optionalOperator('!=')) {\r\n result = new ast_1.Binary('!=', result, this.parseRelational());\r\n }\r\n else if (this.optionalOperator('!==')) {\r\n result = new ast_1.Binary('!==', result, this.parseRelational());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parseRelational = function () {\r\n // '<', '>', '<=', '>='\r\n var result = this.parseAdditive();\r\n while (true) {\r\n if (this.optionalOperator('<')) {\r\n result = new ast_1.Binary('<', result, this.parseAdditive());\r\n }\r\n else if (this.optionalOperator('>')) {\r\n result = new ast_1.Binary('>', result, this.parseAdditive());\r\n }\r\n else if (this.optionalOperator('<=')) {\r\n result = new ast_1.Binary('<=', result, this.parseAdditive());\r\n }\r\n else if (this.optionalOperator('>=')) {\r\n result = new ast_1.Binary('>=', result, this.parseAdditive());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parseAdditive = function () {\r\n // '+', '-'\r\n var result = this.parseMultiplicative();\r\n while (true) {\r\n if (this.optionalOperator('+')) {\r\n result = new ast_1.Binary('+', result, this.parseMultiplicative());\r\n }\r\n else if (this.optionalOperator('-')) {\r\n result = new ast_1.Binary('-', result, this.parseMultiplicative());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parseMultiplicative = function () {\r\n // '*', '%', '/'\r\n var result = this.parsePrefix();\r\n while (true) {\r\n if (this.optionalOperator('*')) {\r\n result = new ast_1.Binary('*', result, this.parsePrefix());\r\n }\r\n else if (this.optionalOperator('%')) {\r\n result = new ast_1.Binary('%', result, this.parsePrefix());\r\n }\r\n else if (this.optionalOperator('/')) {\r\n result = new ast_1.Binary('/', result, this.parsePrefix());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parsePrefix = function () {\r\n if (this.optionalOperator('+')) {\r\n return this.parsePrefix();\r\n }\r\n else if (this.optionalOperator('-')) {\r\n return new ast_1.Binary('-', new ast_1.LiteralPrimitive(0), this.parsePrefix());\r\n }\r\n else if (this.optionalOperator('!')) {\r\n return new ast_1.PrefixNot(this.parsePrefix());\r\n }\r\n else {\r\n return this.parseCallChain();\r\n }\r\n };\r\n _ParseAST.prototype.parseCallChain = function () {\r\n var result = this.parsePrimary();\r\n while (true) {\r\n if (this.optionalCharacter(lexer_1.$PERIOD)) {\r\n result = this.parseAccessMemberOrMethodCall(result, false);\r\n }\r\n else if (this.optionalOperator('?.')) {\r\n result = this.parseAccessMemberOrMethodCall(result, true);\r\n }\r\n else if (this.optionalCharacter(lexer_1.$LBRACKET)) {\r\n var key = this.parsePipe();\r\n this.expectCharacter(lexer_1.$RBRACKET);\r\n if (this.optionalOperator(\"=\")) {\r\n var value = this.parseConditional();\r\n result = new ast_1.KeyedWrite(result, key, value);\r\n }\r\n else {\r\n result = new ast_1.KeyedRead(result, key);\r\n }\r\n }\r\n else if (this.optionalCharacter(lexer_1.$LPAREN)) {\r\n var args = this.parseCallArguments();\r\n this.expectCharacter(lexer_1.$RPAREN);\r\n result = new ast_1.FunctionCall(result, args);\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parsePrimary = function () {\r\n if (this.optionalCharacter(lexer_1.$LPAREN)) {\r\n var result = this.parsePipe();\r\n this.expectCharacter(lexer_1.$RPAREN);\r\n return result;\r\n }\r\n else if (this.next.isKeywordNull() || this.next.isKeywordUndefined()) {\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(null);\r\n }\r\n else if (this.next.isKeywordTrue()) {\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(true);\r\n }\r\n else if (this.next.isKeywordFalse()) {\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(false);\r\n }\r\n else if (this.optionalCharacter(lexer_1.$LBRACKET)) {\r\n var elements = this.parseExpressionList(lexer_1.$RBRACKET);\r\n this.expectCharacter(lexer_1.$RBRACKET);\r\n return new ast_1.LiteralArray(elements);\r\n }\r\n else if (this.next.isCharacter(lexer_1.$LBRACE)) {\r\n return this.parseLiteralMap();\r\n }\r\n else if (this.next.isIdentifier()) {\r\n return this.parseAccessMemberOrMethodCall(_implicitReceiver, false);\r\n }\r\n else if (this.next.isNumber()) {\r\n var value = this.next.toNumber();\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(value);\r\n }\r\n else if (this.next.isString()) {\r\n var literalValue = this.next.toString();\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(literalValue);\r\n }\r\n else if (this.index >= this.tokens.length) {\r\n this.error(\"Unexpected end of expression: \" + this.input);\r\n }\r\n else {\r\n this.error(\"Unexpected token \" + this.next);\r\n }\r\n // error() throws, so we don't reach here.\r\n throw new exceptions_1.BaseException(\"Fell through all cases in parsePrimary\");\r\n };\r\n _ParseAST.prototype.parseExpressionList = function (terminator) {\r\n var result = [];\r\n if (!this.next.isCharacter(terminator)) {\r\n do {\r\n result.push(this.parsePipe());\r\n } while (this.optionalCharacter(lexer_1.$COMMA));\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseLiteralMap = function () {\r\n var keys = [];\r\n var values = [];\r\n this.expectCharacter(lexer_1.$LBRACE);\r\n if (!this.optionalCharacter(lexer_1.$RBRACE)) {\r\n do {\r\n var key = this.expectIdentifierOrKeywordOrString();\r\n keys.push(key);\r\n this.expectCharacter(lexer_1.$COLON);\r\n values.push(this.parsePipe());\r\n } while (this.optionalCharacter(lexer_1.$COMMA));\r\n this.expectCharacter(lexer_1.$RBRACE);\r\n }\r\n return new ast_1.LiteralMap(keys, values);\r\n };\r\n _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) {\r\n if (isSafe === void 0) { isSafe = false; }\r\n var id = this.expectIdentifierOrKeyword();\r\n if (this.optionalCharacter(lexer_1.$LPAREN)) {\r\n var args = this.parseCallArguments();\r\n this.expectCharacter(lexer_1.$RPAREN);\r\n return isSafe ? new ast_1.SafeMethodCall(receiver, id, args) : new ast_1.MethodCall(receiver, id, args);\r\n }\r\n else {\r\n if (isSafe) {\r\n if (this.optionalOperator(\"=\")) {\r\n this.error(\"The '?.' operator cannot be used in the assignment\");\r\n }\r\n else {\r\n return new ast_1.SafePropertyRead(receiver, id);\r\n }\r\n }\r\n else {\r\n if (this.optionalOperator(\"=\")) {\r\n if (!this.parseAction) {\r\n this.error(\"Bindings cannot contain assignments\");\r\n }\r\n var value = this.parseConditional();\r\n return new ast_1.PropertyWrite(receiver, id, value);\r\n }\r\n else {\r\n return new ast_1.PropertyRead(receiver, id);\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n _ParseAST.prototype.parseCallArguments = function () {\r\n if (this.next.isCharacter(lexer_1.$RPAREN))\r\n return [];\r\n var positionals = [];\r\n do {\r\n positionals.push(this.parsePipe());\r\n } while (this.optionalCharacter(lexer_1.$COMMA));\r\n return positionals;\r\n };\r\n _ParseAST.prototype.parseBlockContent = function () {\r\n if (!this.parseAction) {\r\n this.error(\"Binding expression cannot contain chained expression\");\r\n }\r\n var exprs = [];\r\n while (this.index < this.tokens.length && !this.next.isCharacter(lexer_1.$RBRACE)) {\r\n var expr = this.parseExpression();\r\n exprs.push(expr);\r\n if (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n while (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n } // read all semicolons\r\n }\r\n }\r\n if (exprs.length == 0)\r\n return new ast_1.EmptyExpr();\r\n if (exprs.length == 1)\r\n return exprs[0];\r\n return new ast_1.Chain(exprs);\r\n };\r\n /**\r\n * An identifier, a keyword, a string with an optional `-` inbetween.\r\n */\r\n _ParseAST.prototype.expectTemplateBindingKey = function () {\r\n var result = '';\r\n var operatorFound = false;\r\n do {\r\n result += this.expectIdentifierOrKeywordOrString();\r\n operatorFound = this.optionalOperator('-');\r\n if (operatorFound) {\r\n result += '-';\r\n }\r\n } while (operatorFound);\r\n return result.toString();\r\n };\r\n _ParseAST.prototype.parseTemplateBindings = function () {\r\n var bindings = [];\r\n var prefix = null;\r\n var warnings = [];\r\n while (this.index < this.tokens.length) {\r\n var keyIsVar = this.peekKeywordLet();\r\n if (!keyIsVar && this.peekDeprecatedKeywordVar()) {\r\n keyIsVar = true;\r\n warnings.push(\"\\\"var\\\" inside of expressions is deprecated. Use \\\"let\\\" instead!\");\r\n }\r\n if (!keyIsVar && this.peekDeprecatedOperatorHash()) {\r\n keyIsVar = true;\r\n warnings.push(\"\\\"#\\\" inside of expressions is deprecated. Use \\\"let\\\" instead!\");\r\n }\r\n if (keyIsVar) {\r\n this.advance();\r\n }\r\n var key = this.expectTemplateBindingKey();\r\n if (!keyIsVar) {\r\n if (prefix == null) {\r\n prefix = key;\r\n }\r\n else {\r\n key = prefix + key[0].toUpperCase() + key.substring(1);\r\n }\r\n }\r\n this.optionalCharacter(lexer_1.$COLON);\r\n var name = null;\r\n var expression = null;\r\n if (keyIsVar) {\r\n if (this.optionalOperator(\"=\")) {\r\n name = this.expectTemplateBindingKey();\r\n }\r\n else {\r\n name = '\\$implicit';\r\n }\r\n }\r\n else if (this.next !== lexer_1.EOF && !this.peekKeywordLet() && !this.peekDeprecatedKeywordVar() &&\r\n !this.peekDeprecatedOperatorHash()) {\r\n var start = this.inputIndex;\r\n var ast = this.parsePipe();\r\n var source = this.input.substring(start, this.inputIndex);\r\n expression = new ast_1.ASTWithSource(ast, source, this.location);\r\n }\r\n bindings.push(new ast_1.TemplateBinding(key, keyIsVar, name, expression));\r\n if (!this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n this.optionalCharacter(lexer_1.$COMMA);\r\n }\r\n }\r\n return new TemplateBindingParseResult(bindings, warnings);\r\n };\r\n _ParseAST.prototype.error = function (message, index) {\r\n if (index === void 0) { index = null; }\r\n if (lang_1.isBlank(index))\r\n index = this.index;\r\n var location = (index < this.tokens.length) ? \"at column \" + (this.tokens[index].index + 1) + \" in\" :\r\n \"at the end of the expression\";\r\n throw new ParseException(message, this.input, location, this.location);\r\n };\r\n return _ParseAST;\r\n}());\r\nexports._ParseAST = _ParseAST;\r\nvar SimpleExpressionChecker = (function () {\r\n function SimpleExpressionChecker() {\r\n this.simple = true;\r\n }\r\n SimpleExpressionChecker.check = function (ast) {\r\n var s = new SimpleExpressionChecker();\r\n ast.visit(s);\r\n return s.simple;\r\n };\r\n SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast, context) { };\r\n SimpleExpressionChecker.prototype.visitInterpolation = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast, context) { };\r\n SimpleExpressionChecker.prototype.visitPropertyRead = function (ast, context) { };\r\n SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitMethodCall = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitFunctionCall = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitLiteralArray = function (ast, context) { this.visitAll(ast.expressions); };\r\n SimpleExpressionChecker.prototype.visitLiteralMap = function (ast, context) { this.visitAll(ast.values); };\r\n SimpleExpressionChecker.prototype.visitBinary = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitPrefixNot = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitConditional = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitPipe = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitKeyedRead = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitAll = function (asts) {\r\n var res = collection_1.ListWrapper.createFixedSize(asts.length);\r\n for (var i = 0; i < asts.length; ++i) {\r\n res[i] = asts[i].visit(this);\r\n }\r\n return res;\r\n };\r\n SimpleExpressionChecker.prototype.visitChain = function (ast, context) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitQuote = function (ast, context) { this.simple = false; };\r\n return SimpleExpressionChecker;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2V4cHJlc3Npb25fcGFyc2VyL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUIsaUNBQWlDLENBQUMsQ0FBQTtBQUMzRCxxQkFBZ0QsMEJBQTBCLENBQUMsQ0FBQTtBQUMzRSwyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUMvRSwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMzRCxzQkFpQk8sU0FBUyxDQUFDLENBQUE7QUFDakIsb0JBeUJPLE9BQU8sQ0FBQyxDQUFBO0FBR2YsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLHNCQUFnQixFQUFFLENBQUM7QUFDL0Msb0ZBQW9GO0FBQ3BGLElBQUksb0JBQW9CLEdBQUcscUJBQXFCLENBQUM7QUFFakQ7SUFBNkIsa0NBQWE7SUFDeEMsd0JBQVksT0FBZSxFQUFFLEtBQWEsRUFBRSxXQUFtQixFQUFFLFdBQWlCO1FBQ2hGLGtCQUFNLG1CQUFpQixPQUFPLFNBQUksV0FBVyxVQUFLLEtBQUssYUFBUSxXQUFhLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0gscUJBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBNkIsMEJBQWEsR0FJekM7QUFFRDtJQUNFLDRCQUFtQixPQUFpQixFQUFTLFdBQXFCO1FBQS9DLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBVTtJQUFHLENBQUM7SUFDeEUseUJBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUZZLDBCQUFrQixxQkFFOUIsQ0FBQTtBQUVEO0lBQ0Usb0NBQW1CLGdCQUFtQyxFQUFTLFFBQWtCO1FBQTlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcs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O0lBRTdELDRDQUFVLEdBQVYsVUFBVyxHQUFVLEVBQUUsT0FBWSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRCw4QkFBQztBQUFELENBQUMsQUF0REQsSUFzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL2RlY29yYXRvcnMnO1xuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIFN0cmluZ1dyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgTGV4ZXIsXG4gIEVPRixcbiAgaXNJZGVudGlmaWVyLFxuICBpc1F1b3RlLFxuICBUb2tlbixcbiAgJFBFUklPRCxcbiAgJENPTE9OLFxuICAkU0VNSUNPTE9OLFxuICAkTEJSQUNLRVQsXG4gICRSQlJBQ0tFVCxcbiAgJENPTU1BLFxuICAkTEJSQUNFLFxuICAkUkJSQUNFLFxuICAkTFBBUkVOLFxuICAkUlBBUkVOLFxuICAkU0xBU0hcbn0gZnJvbSAnLi9sZXhlcic7XG5pbXBvcnQge1xuICBBU1QsXG4gIEVtcHR5RXhwcixcbiAgSW1wbGljaXRSZWNlaXZlcixcbiAgUHJvcGVydHlSZWFkLFxuICBQcm9wZXJ0eVdyaXRlLFxuICBTYWZlUHJvcGVydHlSZWFkLFxuICBMaXRlcmFsUHJpbWl0aXZlLFxuICBCaW5hcnksXG4gIFByZWZpeE5vdCxcbiAgQ29uZGl0aW9uYWwsXG4gIEJpbmRpbmdQaXBlLFxuICBDaGFpbixcbiAgS2V5ZWRSZWFkLFxuICBLZXllZFdyaXRlLFxuICBMaXRlcmFsQXJyYXksXG4gIExpdGVyYWxNYXAsXG4gIEludGVycG9sYXRpb24sXG4gIE1ldGhvZENhbGwsXG4gIFNhZmVNZXRob2RDYWxsLFxuICBGdW5jdGlvbkNhbGwsXG4gIFRlbXBsYXRlQmluZGluZyxcbiAgQVNUV2l0aFNvdXJjZSxcbiAgQXN0VmlzaXRvcixcbiAgUXVvdGVcbn0gZnJvbSAnLi9hc3QnO1xuXG5cbnZhciBfaW1wbGljaXRSZWNlaXZlciA9IG5ldyBJbXBsaWNpdFJlY2VpdmVyKCk7XG4vLyBUT0RPKHRib3NjaCk6IENhbm5vdCBtYWtlIHRoaXMgY29uc3QvZmluYWwgcmlnaHQgbm93IGJlY2F1c2Ugb2YgdGhlIHRyYW5zcGlsZXIuLi5cbnZhciBJTlRFUlBPTEFUSU9OX1JFR0VYUCA9IC9cXHtcXHsoW1xcc1xcU10qPylcXH1cXH0vZztcblxuY2xhc3MgUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBpbnB1dDogc3RyaW5nLCBlcnJMb2NhdGlvbjogc3RyaW5nLCBjdHhMb2NhdGlvbj86IGFueSkge1xuICAgIHN1cGVyKGBQYXJzZXIgRXJyb3I6ICR7bWVzc2FnZX0gJHtlcnJMb2NhdGlvbn0gWyR7aW5wdXR9XSBpbiAke2N0eExvY2F0aW9ufWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTcGxpdEludGVycG9sYXRpb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RyaW5nczogc3RyaW5nW10sIHB1YmxpYyBleHByZXNzaW9uczogc3RyaW5nW10pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJpbmRpbmdQYXJzZVJlc3VsdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZUJpbmRpbmdzOiBUZW1wbGF0ZUJpbmRpbmdbXSwgcHVibGljIHdhcm5pbmdzOiBzdHJpbmdbXSkge31cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBhcnNlciB7XG4gIGNvbnN0cnVjdG9yKC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgICAgICAgcHVibGljIF9sZXhlcjogTGV4ZXIpIHt9XG5cbiAgcGFyc2VBY3Rpb24oaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IEFTVFdpdGhTb3VyY2Uge1xuICAgIHRoaXMuX2NoZWNrTm9JbnRlcnBvbGF0aW9uKGlucHV0LCBsb2NhdGlvbik7XG4gICAgdmFyIHRva2VucyA9IHRoaXMuX2xleGVyLnRva2VuaXplKHRoaXMuX3N0cmlwQ29tbWVudHMoaW5wdXQpKTtcbiAgICB2YXIgYXN0ID0gbmV3IF9QYXJzZUFTVChpbnB1dCwgbG9jYXRpb24sIHRva2VucywgdHJ1ZSkucGFyc2VDaGFpbigpO1xuICAgIHJldHVybiBuZXcgQVNUV2l0aFNvdXJjZShhc3QsIGlucHV0LCBsb2NhdGlvbik7XG4gIH1cblxuICBwYXJzZUJpbmRpbmcoaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IEFTVFdpdGhTb3VyY2Uge1xuICAgIHZhciBhc3QgPSB0aGlzLl9wYXJzZUJpbmRpbmdBc3QoaW5wdXQsIGxvY2F0aW9uKTtcbiAgICByZXR1cm4gbmV3IEFTVFdpdGhTb3VyY2UoYXN0LCBpbnB1dCwgbG9jYXRpb24pO1xuICB9XG5cbiAgcGFyc2VTaW1wbGVCaW5kaW5nKGlucHV0OiBzdHJpbmcsIGxvY2F0aW9uOiBzdHJpbmcpOiBBU1RXaXRoU291cmNlIHtcbiAgICB2YXIgYXN0ID0gdGhpcy5fcGFyc2VCaW5kaW5nQXN0KGlucHV0LCBsb2NhdGlvbik7XG4gICAgaWYgKCFTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci5jaGVjayhhc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oXG4gICAgICAgICAgJ0hvc3QgYmluZGluZyBleHByZXNzaW9uIGNhbiBvbmx5IGNvbnRhaW4gZmllbGQgYWNjZXNzIGFuZCBjb25zdGFudHMnLCBpbnB1dCwgbG9jYXRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFTVFdpdGhTb3VyY2UoYXN0LCBpbnB1dCwgbG9jYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VCaW5kaW5nQXN0KGlucHV0OiBzdHJpbmcsIGxvY2F0aW9uOiBzdHJpbmcpOiBBU1Qge1xuICAgIC8vIFF1b3RlcyBleHByZXNzaW9ucyB1c2UgM3JkLXBhcnR5IGV4cHJlc3Npb24gbGFuZ3VhZ2UuIFdlIGRvbid0IHdhbnQgdG8gdXNlXG4gICAgLy8gb3VyIGxleGVyIG9yIHBhcnNlciBmb3IgdGhhdCwgc28gd2UgY2hlY2sgZm9yIHRoYXQgYWhlYWQgb2YgdGltZS5cbiAgICB2YXIgcXVvdGUgPSB0aGlzLl9wYXJzZVF1b3RlKGlucHV0LCBsb2NhdGlvbik7XG5cbiAgICBpZiAoaXNQcmVzZW50KHF1b3RlKSkge1xuICAgICAgcmV0dXJuIHF1b3RlO1xuICAgIH1cblxuICAgIHRoaXMuX2NoZWNrTm9JbnRlcnBvbGF0aW9uKGlucHV0LCBsb2NhdGlvbik7XG4gICAgdmFyIHRva2VucyA9IHRoaXMuX2xleGVyLnRva2VuaXplKHRoaXMuX3N0cmlwQ29tbWVudHMoaW5wdXQpKTtcbiAgICByZXR1cm4gbmV3IF9QYXJzZUFTVChpbnB1dCwgbG9jYXRpb24sIHRva2VucywgZmFsc2UpLnBhcnNlQ2hhaW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlUXVvdGUoaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IEFTVCB7XG4gICAgaWYgKGlzQmxhbmsoaW5wdXQpKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgcHJlZml4U2VwYXJhdG9ySW5kZXggPSBpbnB1dC5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKHByZWZpeFNlcGFyYXRvckluZGV4ID09IC0xKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgcHJlZml4ID0gaW5wdXQuc3Vic3RyaW5nKDAsIHByZWZpeFNlcGFyYXRvckluZGV4KS50cmltKCk7XG4gICAgaWYgKCFpc0lkZW50aWZpZXIocHJlZml4KSkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uID0gaW5wdXQuc3Vic3RyaW5nKHByZWZpeFNlcGFyYXRvckluZGV4ICsgMSk7XG4gICAgcmV0dXJuIG5ldyBRdW90ZShwcmVmaXgsIHVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uLCBsb2NhdGlvbik7XG4gIH1cblxuICBwYXJzZVRlbXBsYXRlQmluZGluZ3MoaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IFRlbXBsYXRlQmluZGluZ1BhcnNlUmVzdWx0IHtcbiAgICB2YXIgdG9rZW5zID0gdGhpcy5fbGV4ZXIudG9rZW5pemUoaW5wdXQpO1xuICAgIHJldHVybiBuZXcgX1BhcnNlQVNUKGlucHV0LCBsb2NhdGlvbiwgdG9rZW5zLCBmYWxzZSkucGFyc2VUZW1wbGF0ZUJpbmRpbmdzKCk7XG4gIH1cblxuICBwYXJzZUludGVycG9sYXRpb24oaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IEFTVFdpdGhTb3VyY2Uge1xuICAgIGxldCBzcGxpdCA9IHRoaXMuc3BsaXRJbnRlcnBvbGF0aW9uKGlucHV0LCBsb2NhdGlvbik7XG4gICAgaWYgKHNwbGl0ID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gICAgbGV0IGV4cHJlc3Npb25zID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0LmV4cHJlc3Npb25zLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgdG9rZW5zID0gdGhpcy5fbGV4ZXIudG9rZW5pemUodGhpcy5fc3RyaXBDb21tZW50cyhzcGxpdC5leHByZXNzaW9uc1tpXSkpO1xuICAgICAgdmFyIGFzdCA9IG5ldyBfUGFyc2VBU1QoaW5wdXQsIGxvY2F0aW9uLCB0b2tlbnMsIGZhbHNlKS5wYXJzZUNoYWluKCk7XG4gICAgICBleHByZXNzaW9ucy5wdXNoKGFzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBU1RXaXRoU291cmNlKG5ldyBJbnRlcnBvbGF0aW9uKHNwbGl0LnN0cmluZ3MsIGV4cHJlc3Npb25zKSwgaW5wdXQsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIHNwbGl0SW50ZXJwb2xhdGlvbihpbnB1dDogc3RyaW5nLCBsb2NhdGlvbjogc3RyaW5nKTogU3BsaXRJbnRlcnBvbGF0aW9uIHtcbiAgICB2YXIgcGFydHMgPSBTdHJpbmdXcmFwcGVyLnNwbGl0KGlucHV0LCBJTlRFUlBPTEFUSU9OX1JFR0VYUCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHN0cmluZ3MgPSBbXTtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwYXJ0OiBzdHJpbmcgPSBwYXJ0c1tpXTtcbiAgICAgIGlmIChpICUgMiA9PT0gMCkge1xuICAgICAgICAvLyBmaXhlZCBzdHJpbmdcbiAgICAgICAgc3RyaW5ncy5wdXNoKHBhcnQpO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV4cHJlc3Npb25zLnB1c2gocGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oJ0JsYW5rIGV4cHJlc3Npb25zIGFyZSBub3QgYWxsb3dlZCBpbiBpbnRlcnBvbGF0ZWQgc3RyaW5ncycsIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGF0IGNvbHVtbiAke3RoaXMuX2ZpbmRJbnRlcnBvbGF0aW9uRXJyb3JDb2x1bW4ocGFydHMsIGkpfSBpbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgU3BsaXRJbnRlcnBvbGF0aW9uKHN0cmluZ3MsIGV4cHJlc3Npb25zKTtcbiAgfVxuXG4gIHdyYXBMaXRlcmFsUHJpbWl0aXZlKGlucHV0OiBzdHJpbmcsIGxvY2F0aW9uOiBhbnkpOiBBU1RXaXRoU291cmNlIHtcbiAgICByZXR1cm4gbmV3IEFTVFdpdGhTb3VyY2UobmV3IExpdGVyYWxQcmltaXRpdmUoaW5wdXQpLCBpbnB1dCwgbG9jYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RyaXBDb21tZW50cyhpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaSA9IHRoaXMuX2NvbW1lbnRTdGFydChpbnB1dCk7XG4gICAgcmV0dXJuIGlzUHJlc2VudChpKSA/IGlucHV0LnN1YnN0cmluZygwLCBpKS50cmltKCkgOiBpbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbW1lbnRTdGFydChpbnB1dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB2YXIgb3V0ZXJRdW90ZSA9IG51bGw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGxldCBjaGFyID0gU3RyaW5nV3JhcHBlci5jaGFyQ29kZUF0KGlucHV0LCBpKTtcbiAgICAgIGxldCBuZXh0Q2hhciA9IFN0cmluZ1dyYXBwZXIuY2hhckNvZGVBdChpbnB1dCwgaSArIDEpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gJFNMQVNIICYmIG5leHRDaGFyID09ICRTTEFTSCAmJiBpc0JsYW5rKG91dGVyUXVvdGUpKSByZXR1cm4gaTtcblxuICAgICAgaWYgKG91dGVyUXVvdGUgPT09IGNoYXIpIHtcbiAgICAgICAgb3V0ZXJRdW90ZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGlzQmxhbmsob3V0ZXJRdW90ZSkgJiYgaXNRdW90ZShjaGFyKSkge1xuICAgICAgICBvdXRlclF1b3RlID0gY2hhcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja05vSW50ZXJwb2xhdGlvbihpbnB1dDogc3RyaW5nLCBsb2NhdGlvbjogYW55KTogdm9pZCB7XG4gICAgdmFyIHBhcnRzID0gU3RyaW5nV3JhcHBlci5zcGxpdChpbnB1dCwgSU5URVJQT0xBVElPTl9SRUdFWFApO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oJ0dvdCBpbnRlcnBvbGF0aW9uICh7e319KSB3aGVyZSBleHByZXNzaW9uIHdhcyBleHBlY3RlZCcsIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBhdCBjb2x1bW4gJHt0aGlzLl9maW5kSW50ZXJwb2xhdGlvbkVycm9yQ29sdW1uKHBhcnRzLCAxKX0gaW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maW5kSW50ZXJwb2xhdGlvbkVycm9yQ29sdW1uKHBhcnRzOiBzdHJpbmdbXSwgcGFydEluRXJySWR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHZhciBlcnJMb2NhdGlvbiA9ICcnO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFydEluRXJySWR4OyBqKyspIHtcbiAgICAgIGVyckxvY2F0aW9uICs9IGogJSAyID09PSAwID8gcGFydHNbal0gOiBge3ske3BhcnRzW2pdfX19YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyTG9jYXRpb24ubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBfUGFyc2VBU1Qge1xuICBpbmRleDogbnVtYmVyID0gMDtcbiAgY29uc3RydWN0b3IocHVibGljIGlucHV0OiBzdHJpbmcsIHB1YmxpYyBsb2NhdGlvbjogYW55LCBwdWJsaWMgdG9rZW5zOiBhbnlbXSxcbiAgICAgICAgICAgICAgcHVibGljIHBhcnNlQWN0aW9uOiBib29sZWFuKSB7fVxuXG4gIHBlZWsob2Zmc2V0OiBudW1iZXIpOiBUb2tlbiB7XG4gICAgdmFyIGkgPSB0aGlzLmluZGV4ICsgb2Zmc2V0O1xuICAgIHJldHVybiBpIDwgdGhpcy50b2tlbnMubGVuZ3RoID8gdGhpcy50b2tlbnNbaV0gOiBFT0Y7XG4gIH1cblxuICBnZXQgbmV4dCgpOiBUb2tlbiB7IHJldHVybiB0aGlzLnBlZWsoMCk7IH1cblxuICBnZXQgaW5wdXRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5pbmRleCA8IHRoaXMudG9rZW5zLmxlbmd0aCkgPyB0aGlzLm5leHQuaW5kZXggOiB0aGlzLmlucHV0Lmxlbmd0aDtcbiAgfVxuXG4gIGFkdmFuY2UoKSB7IHRoaXMuaW5kZXgrKzsgfVxuXG4gIG9wdGlvbmFsQ2hhcmFjdGVyKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5leHQuaXNDaGFyYWN0ZXIoY29kZSkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwZWVrS2V5d29yZExldCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubmV4dC5pc0tleXdvcmRMZXQoKTsgfVxuXG4gIHBlZWtEZXByZWNhdGVkS2V5d29yZFZhcigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubmV4dC5pc0tleXdvcmREZXByZWNhdGVkVmFyKCk7IH1cblxuICBwZWVrRGVwcmVjYXRlZE9wZXJhdG9ySGFzaCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubmV4dC5pc09wZXJhdG9yKCcjJyk7IH1cblxuICBleHBlY3RDaGFyYWN0ZXIoY29kZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoY29kZSkpIHJldHVybjtcbiAgICB0aGlzLmVycm9yKGBNaXNzaW5nIGV4cGVjdGVkICR7U3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUoY29kZSl9YCk7XG4gIH1cblxuXG4gIG9wdGlvbmFsT3BlcmF0b3Iob3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5leHQuaXNPcGVyYXRvcihvcCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBleHBlY3RPcGVyYXRvcihvcGVyYXRvcjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcihvcGVyYXRvcikpIHJldHVybjtcbiAgICB0aGlzLmVycm9yKGBNaXNzaW5nIGV4cGVjdGVkIG9wZXJhdG9yICR7b3BlcmF0b3J9YCk7XG4gIH1cblxuICBleHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkKCk6IHN0cmluZyB7XG4gICAgdmFyIG4gPSB0aGlzLm5leHQ7XG4gICAgaWYgKCFuLmlzSWRlbnRpZmllcigpICYmICFuLmlzS2V5d29yZCgpKSB7XG4gICAgICB0aGlzLmVycm9yKGBVbmV4cGVjdGVkIHRva2VuICR7bn0sIGV4cGVjdGVkIGlkZW50aWZpZXIgb3Iga2V5d29yZGApO1xuICAgIH1cbiAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICByZXR1cm4gbi50b1N0cmluZygpO1xuICB9XG5cbiAgZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZE9yU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIG4gPSB0aGlzLm5leHQ7XG4gICAgaWYgKCFuLmlzSWRlbnRpZmllcigpICYmICFuLmlzS2V5d29yZCgpICYmICFuLmlzU3RyaW5nKCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoYFVuZXhwZWN0ZWQgdG9rZW4gJHtufSwgZXhwZWN0ZWQgaWRlbnRpZmllciwga2V5d29yZCwgb3Igc3RyaW5nYCk7XG4gICAgfVxuICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgIHJldHVybiBuLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwYXJzZUNoYWluKCk6IEFTVCB7XG4gICAgdmFyIGV4cHJzID0gW107XG4gICAgd2hpbGUgKHRoaXMuaW5kZXggPCB0aGlzLnRva2Vucy5sZW5ndGgpIHtcbiAgICAgIHZhciBleHByID0gdGhpcy5wYXJzZVBpcGUoKTtcbiAgICAgIGV4cHJzLnB1c2goZXhwcik7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRTRU1JQ09MT04pKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJzZUFjdGlvbikge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXCJCaW5kaW5nIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gY2hhaW5lZCBleHByZXNzaW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRTRU1JQ09MT04pKSB7XG4gICAgICAgIH0gIC8vIHJlYWQgYWxsIHNlbWljb2xvbnNcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmRleCA8IHRoaXMudG9rZW5zLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmVycm9yKGBVbmV4cGVjdGVkIHRva2VuICcke3RoaXMubmV4dH0nYCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChleHBycy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBFbXB0eUV4cHIoKTtcbiAgICBpZiAoZXhwcnMubGVuZ3RoID09IDEpIHJldHVybiBleHByc1swXTtcbiAgICByZXR1cm4gbmV3IENoYWluKGV4cHJzKTtcbiAgfVxuXG4gIHBhcnNlUGlwZSgpOiBBU1Qge1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbigpO1xuICAgIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoXCJ8XCIpKSB7XG4gICAgICBpZiAodGhpcy5wYXJzZUFjdGlvbikge1xuICAgICAgICB0aGlzLmVycm9yKFwiQ2Fubm90IGhhdmUgYSBwaXBlIGluIGFuIGFjdGlvbiBleHByZXNzaW9uXCIpO1xuICAgICAgfVxuXG4gICAgICBkbyB7XG4gICAgICAgIHZhciBuYW1lID0gdGhpcy5leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkKCk7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIHdoaWxlICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRDT0xPTikpIHtcbiAgICAgICAgICBhcmdzLnB1c2godGhpcy5wYXJzZUV4cHJlc3Npb24oKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmRpbmdQaXBlKHJlc3VsdCwgbmFtZSwgYXJncyk7XG4gICAgICB9IHdoaWxlICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoXCJ8XCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcGFyc2VFeHByZXNzaW9uKCk6IEFTVCB7IHJldHVybiB0aGlzLnBhcnNlQ29uZGl0aW9uYWwoKTsgfVxuXG4gIHBhcnNlQ29uZGl0aW9uYWwoKTogQVNUIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLmlucHV0SW5kZXg7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VMb2dpY2FsT3IoKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJz8nKSkge1xuICAgICAgdmFyIHllcyA9IHRoaXMucGFyc2VQaXBlKCk7XG4gICAgICBpZiAoIXRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTE9OKSkge1xuICAgICAgICB2YXIgZW5kID0gdGhpcy5pbnB1dEluZGV4O1xuICAgICAgICB2YXIgZXhwcmVzc2lvbiA9IHRoaXMuaW5wdXQuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xuICAgICAgICB0aGlzLmVycm9yKGBDb25kaXRpb25hbCBleHByZXNzaW9uICR7ZXhwcmVzc2lvbn0gcmVxdWlyZXMgYWxsIDMgZXhwcmVzc2lvbnNgKTtcbiAgICAgIH1cbiAgICAgIHZhciBubyA9IHRoaXMucGFyc2VQaXBlKCk7XG4gICAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsKHJlc3VsdCwgeWVzLCBubyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VMb2dpY2FsT3IoKTogQVNUIHtcbiAgICAvLyAnfHwnXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VMb2dpY2FsQW5kKCk7XG4gICAgd2hpbGUgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignfHwnKSkge1xuICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnfHwnLCByZXN1bHQsIHRoaXMucGFyc2VMb2dpY2FsQW5kKCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcGFyc2VMb2dpY2FsQW5kKCk6IEFTVCB7XG4gICAgLy8gJyYmJ1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlRXF1YWxpdHkoKTtcbiAgICB3aGlsZSAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCcmJicpKSB7XG4gICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCcmJicsIHJlc3VsdCwgdGhpcy5wYXJzZUVxdWFsaXR5KCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcGFyc2VFcXVhbGl0eSgpOiBBU1Qge1xuICAgIC8vICc9PScsJyE9JywnPT09JywnIT09J1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlUmVsYXRpb25hbCgpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCc9PScpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJz09JywgcmVzdWx0LCB0aGlzLnBhcnNlUmVsYXRpb25hbCgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCc9PT0nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCc9PT0nLCByZXN1bHQsIHRoaXMucGFyc2VSZWxhdGlvbmFsKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJyE9JykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnIT0nLCByZXN1bHQsIHRoaXMucGFyc2VSZWxhdGlvbmFsKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJyE9PScpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJyE9PScsIHJlc3VsdCwgdGhpcy5wYXJzZVJlbGF0aW9uYWwoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlUmVsYXRpb25hbCgpOiBBU1Qge1xuICAgIC8vICc8JywgJz4nLCAnPD0nLCAnPj0nXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VBZGRpdGl2ZSgpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCc8JykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnPCcsIHJlc3VsdCwgdGhpcy5wYXJzZUFkZGl0aXZlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJz4nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCc+JywgcmVzdWx0LCB0aGlzLnBhcnNlQWRkaXRpdmUoKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignPD0nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCc8PScsIHJlc3VsdCwgdGhpcy5wYXJzZUFkZGl0aXZlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJz49JykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnPj0nLCByZXN1bHQsIHRoaXMucGFyc2VBZGRpdGl2ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyc2VBZGRpdGl2ZSgpOiBBU1Qge1xuICAgIC8vICcrJywgJy0nXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VNdWx0aXBsaWNhdGl2ZSgpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCcrJykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnKycsIHJlc3VsdCwgdGhpcy5wYXJzZU11bHRpcGxpY2F0aXZlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJy0nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCctJywgcmVzdWx0LCB0aGlzLnBhcnNlTXVsdGlwbGljYXRpdmUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlTXVsdGlwbGljYXRpdmUoKTogQVNUIHtcbiAgICAvLyAnKicsICclJywgJy8nXG4gICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyc2VQcmVmaXgoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignKicpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJyonLCByZXN1bHQsIHRoaXMucGFyc2VQcmVmaXgoKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignJScpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJyUnLCByZXN1bHQsIHRoaXMucGFyc2VQcmVmaXgoKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignLycpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJy8nLCByZXN1bHQsIHRoaXMucGFyc2VQcmVmaXgoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlUHJlZml4KCk6IEFTVCB7XG4gICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignKycpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVByZWZpeCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCctJykpIHtcbiAgICAgIHJldHVybiBuZXcgQmluYXJ5KCctJywgbmV3IExpdGVyYWxQcmltaXRpdmUoMCksIHRoaXMucGFyc2VQcmVmaXgoKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJyEnKSkge1xuICAgICAgcmV0dXJuIG5ldyBQcmVmaXhOb3QodGhpcy5wYXJzZVByZWZpeCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDYWxsQ2hhaW4oKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUNhbGxDaGFpbigpOiBBU1Qge1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlUHJpbWFyeSgpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkUEVSSU9EKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnBhcnNlQWNjZXNzTWVtYmVyT3JNZXRob2RDYWxsKHJlc3VsdCwgZmFsc2UpO1xuXG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignPy4nKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnBhcnNlQWNjZXNzTWVtYmVyT3JNZXRob2RDYWxsKHJlc3VsdCwgdHJ1ZSk7XG5cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkTEJSQUNLRVQpKSB7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLnBhcnNlUGlwZSgpO1xuICAgICAgICB0aGlzLmV4cGVjdENoYXJhY3RlcigkUkJSQUNLRVQpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwiPVwiKSkge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucGFyc2VDb25kaXRpb25hbCgpO1xuICAgICAgICAgIHJlc3VsdCA9IG5ldyBLZXllZFdyaXRlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gbmV3IEtleWVkUmVhZChyZXN1bHQsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRMUEFSRU4pKSB7XG4gICAgICAgIHZhciBhcmdzID0gdGhpcy5wYXJzZUNhbGxBcmd1bWVudHMoKTtcbiAgICAgICAgdGhpcy5leHBlY3RDaGFyYWN0ZXIoJFJQQVJFTik7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBGdW5jdGlvbkNhbGwocmVzdWx0LCBhcmdzKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZVByaW1hcnkoKTogQVNUIHtcbiAgICBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkTFBBUkVOKSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMucGFyc2VQaXBlKCk7XG4gICAgICB0aGlzLmV4cGVjdENoYXJhY3RlcigkUlBBUkVOKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHQuaXNLZXl3b3JkTnVsbCgpIHx8IHRoaXMubmV4dC5pc0tleXdvcmRVbmRlZmluZWQoKSkge1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gbmV3IExpdGVyYWxQcmltaXRpdmUobnVsbCk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMubmV4dC5pc0tleXdvcmRUcnVlKCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIG5ldyBMaXRlcmFsUHJpbWl0aXZlKHRydWUpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHQuaXNLZXl3b3JkRmFsc2UoKSkge1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gbmV3IExpdGVyYWxQcmltaXRpdmUoZmFsc2UpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRMQlJBQ0tFVCkpIHtcbiAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMucGFyc2VFeHByZXNzaW9uTGlzdCgkUkJSQUNLRVQpO1xuICAgICAgdGhpcy5leHBlY3RDaGFyYWN0ZXIoJFJCUkFDS0VUKTtcbiAgICAgIHJldHVybiBuZXcgTGl0ZXJhbEFycmF5KGVsZW1lbnRzKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0LmlzQ2hhcmFjdGVyKCRMQlJBQ0UpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUxpdGVyYWxNYXAoKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0LmlzSWRlbnRpZmllcigpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUFjY2Vzc01lbWJlck9yTWV0aG9kQ2FsbChfaW1wbGljaXRSZWNlaXZlciwgZmFsc2UpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHQuaXNOdW1iZXIoKSkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5uZXh0LnRvTnVtYmVyKCk7XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgIHJldHVybiBuZXcgTGl0ZXJhbFByaW1pdGl2ZSh2YWx1ZSk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMubmV4dC5pc1N0cmluZygpKSB7XG4gICAgICB2YXIgbGl0ZXJhbFZhbHVlID0gdGhpcy5uZXh0LnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgIHJldHVybiBuZXcgTGl0ZXJhbFByaW1pdGl2ZShsaXRlcmFsVmFsdWUpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLmluZGV4ID49IHRoaXMudG9rZW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5lcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgZXhwcmVzc2lvbjogJHt0aGlzLmlucHV0fWApO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXJyb3IoYFVuZXhwZWN0ZWQgdG9rZW4gJHt0aGlzLm5leHR9YCk7XG4gICAgfVxuICAgIC8vIGVycm9yKCkgdGhyb3dzLCBzbyB3ZSBkb24ndCByZWFjaCBoZXJlLlxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFwiRmVsbCB0aHJvdWdoIGFsbCBjYXNlcyBpbiBwYXJzZVByaW1hcnlcIik7XG4gIH1cblxuICBwYXJzZUV4cHJlc3Npb25MaXN0KHRlcm1pbmF0b3I6IG51bWJlcik6IGFueVtdIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgaWYgKCF0aGlzLm5leHQuaXNDaGFyYWN0ZXIodGVybWluYXRvcikpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5wYXJzZVBpcGUoKSk7XG4gICAgICB9IHdoaWxlICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRDT01NQSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcGFyc2VMaXRlcmFsTWFwKCk6IExpdGVyYWxNYXAge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHRoaXMuZXhwZWN0Q2hhcmFjdGVyKCRMQlJBQ0UpO1xuICAgIGlmICghdGhpcy5vcHRpb25hbENoYXJhY3RlcigkUkJSQUNFKSkge1xuICAgICAgZG8ge1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkT3JTdHJpbmcoKTtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIHRoaXMuZXhwZWN0Q2hhcmFjdGVyKCRDT0xPTik7XG4gICAgICAgIHZhbHVlcy5wdXNoKHRoaXMucGFyc2VQaXBlKCkpO1xuICAgICAgfSB3aGlsZSAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkQ09NTUEpKTtcbiAgICAgIHRoaXMuZXhwZWN0Q2hhcmFjdGVyKCRSQlJBQ0UpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IExpdGVyYWxNYXAoa2V5cywgdmFsdWVzKTtcbiAgfVxuXG4gIHBhcnNlQWNjZXNzTWVtYmVyT3JNZXRob2RDYWxsKHJlY2VpdmVyOiBBU1QsIGlzU2FmZTogYm9vbGVhbiA9IGZhbHNlKTogQVNUIHtcbiAgICBsZXQgaWQgPSB0aGlzLmV4cGVjdElkZW50aWZpZXJPcktleXdvcmQoKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRMUEFSRU4pKSB7XG4gICAgICBsZXQgYXJncyA9IHRoaXMucGFyc2VDYWxsQXJndW1lbnRzKCk7XG4gICAgICB0aGlzLmV4cGVjdENoYXJhY3RlcigkUlBBUkVOKTtcbiAgICAgIHJldHVybiBpc1NhZmUgPyBuZXcgU2FmZU1ldGhvZENhbGwocmVjZWl2ZXIsIGlkLCBhcmdzKSA6IG5ldyBNZXRob2RDYWxsKHJlY2VpdmVyLCBpZCwgYXJncyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzU2FmZSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwiPVwiKSkge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXCJUaGUgJz8uJyBvcGVyYXRvciBjYW5ub3QgYmUgdXNlZCBpbiB0aGUgYXNzaWdubWVudFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNhZmVQcm9wZXJ0eVJlYWQocmVjZWl2ZXIsIGlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcihcIj1cIikpIHtcbiAgICAgICAgICBpZiAoIXRoaXMucGFyc2VBY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IoXCJCaW5kaW5ncyBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50c1wiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBhcnNlQ29uZGl0aW9uYWwoKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BlcnR5V3JpdGUocmVjZWl2ZXIsIGlkLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVJlYWQocmVjZWl2ZXIsIGlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcGFyc2VDYWxsQXJndW1lbnRzKCk6IEJpbmRpbmdQaXBlW10ge1xuICAgIGlmICh0aGlzLm5leHQuaXNDaGFyYWN0ZXIoJFJQQVJFTikpIHJldHVybiBbXTtcbiAgICB2YXIgcG9zaXRpb25hbHMgPSBbXTtcbiAgICBkbyB7XG4gICAgICBwb3NpdGlvbmFscy5wdXNoKHRoaXMucGFyc2VQaXBlKCkpO1xuICAgIH0gd2hpbGUgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTU1BKSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uYWxzO1xuICB9XG5cbiAgcGFyc2VCbG9ja0NvbnRlbnQoKTogQVNUIHtcbiAgICBpZiAoIXRoaXMucGFyc2VBY3Rpb24pIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJCaW5kaW5nIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gY2hhaW5lZCBleHByZXNzaW9uXCIpO1xuICAgIH1cbiAgICB2YXIgZXhwcnMgPSBbXTtcbiAgICB3aGlsZSAodGhpcy5pbmRleCA8IHRoaXMudG9rZW5zLmxlbmd0aCAmJiAhdGhpcy5uZXh0LmlzQ2hhcmFjdGVyKCRSQlJBQ0UpKSB7XG4gICAgICB2YXIgZXhwciA9IHRoaXMucGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICBleHBycy5wdXNoKGV4cHIpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICB3aGlsZSAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICB9ICAvLyByZWFkIGFsbCBzZW1pY29sb25zXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChleHBycy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBFbXB0eUV4cHIoKTtcbiAgICBpZiAoZXhwcnMubGVuZ3RoID09IDEpIHJldHVybiBleHByc1swXTtcblxuICAgIHJldHVybiBuZXcgQ2hhaW4oZXhwcnMpO1xuICB9XG5cblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciwgYSBrZXl3b3JkLCBhIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIGAtYCBpbmJldHdlZW4uXG4gICAqL1xuICBleHBlY3RUZW1wbGF0ZUJpbmRpbmdLZXkoKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIG9wZXJhdG9yRm91bmQgPSBmYWxzZTtcbiAgICBkbyB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkT3JTdHJpbmcoKTtcbiAgICAgIG9wZXJhdG9yRm91bmQgPSB0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJy0nKTtcbiAgICAgIGlmIChvcGVyYXRvckZvdW5kKSB7XG4gICAgICAgIHJlc3VsdCArPSAnLSc7XG4gICAgICB9XG4gICAgfSB3aGlsZSAob3BlcmF0b3JGb3VuZCk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7XG4gIH1cblxuICBwYXJzZVRlbXBsYXRlQmluZGluZ3MoKTogVGVtcGxhdGVCaW5kaW5nUGFyc2VSZXN1bHQge1xuICAgIHZhciBiaW5kaW5nczogVGVtcGxhdGVCaW5kaW5nW10gPSBbXTtcbiAgICB2YXIgcHJlZml4ID0gbnVsbDtcbiAgICB2YXIgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG4gICAgd2hpbGUgKHRoaXMuaW5kZXggPCB0aGlzLnRva2Vucy5sZW5ndGgpIHtcbiAgICAgIHZhciBrZXlJc1ZhcjogYm9vbGVhbiA9IHRoaXMucGVla0tleXdvcmRMZXQoKTtcbiAgICAgIGlmICgha2V5SXNWYXIgJiYgdGhpcy5wZWVrRGVwcmVjYXRlZEtleXdvcmRWYXIoKSkge1xuICAgICAgICBrZXlJc1ZhciA9IHRydWU7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYFwidmFyXCIgaW5zaWRlIG9mIGV4cHJlc3Npb25zIGlzIGRlcHJlY2F0ZWQuIFVzZSBcImxldFwiIGluc3RlYWQhYCk7XG4gICAgICB9XG4gICAgICBpZiAoIWtleUlzVmFyICYmIHRoaXMucGVla0RlcHJlY2F0ZWRPcGVyYXRvckhhc2goKSkge1xuICAgICAgICBrZXlJc1ZhciA9IHRydWU7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYFwiI1wiIGluc2lkZSBvZiBleHByZXNzaW9ucyBpcyBkZXByZWNhdGVkLiBVc2UgXCJsZXRcIiBpbnN0ZWFkIWApO1xuICAgICAgfVxuICAgICAgaWYgKGtleUlzVmFyKSB7XG4gICAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHRoaXMuZXhwZWN0VGVtcGxhdGVCaW5kaW5nS2V5KCk7XG4gICAgICBpZiAoIWtleUlzVmFyKSB7XG4gICAgICAgIGlmIChwcmVmaXggPT0gbnVsbCkge1xuICAgICAgICAgIHByZWZpeCA9IGtleTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrZXkgPSBwcmVmaXggKyBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTE9OKTtcbiAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgIHZhciBleHByZXNzaW9uID0gbnVsbDtcbiAgICAgIGlmIChrZXlJc1Zhcikge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwiPVwiKSkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLmV4cGVjdFRlbXBsYXRlQmluZGluZ0tleSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5hbWUgPSAnXFwkaW1wbGljaXQnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmV4dCAhPT0gRU9GICYmICF0aGlzLnBlZWtLZXl3b3JkTGV0KCkgJiYgIXRoaXMucGVla0RlcHJlY2F0ZWRLZXl3b3JkVmFyKCkgJiZcbiAgICAgICAgICAgICAgICAgIXRoaXMucGVla0RlcHJlY2F0ZWRPcGVyYXRvckhhc2goKSkge1xuICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLmlucHV0SW5kZXg7XG4gICAgICAgIHZhciBhc3QgPSB0aGlzLnBhcnNlUGlwZSgpO1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMuaW5wdXRJbmRleCk7XG4gICAgICAgIGV4cHJlc3Npb24gPSBuZXcgQVNUV2l0aFNvdXJjZShhc3QsIHNvdXJjZSwgdGhpcy5sb2NhdGlvbik7XG4gICAgICB9XG4gICAgICBiaW5kaW5ncy5wdXNoKG5ldyBUZW1wbGF0ZUJpbmRpbmcoa2V5LCBrZXlJc1ZhciwgbmFtZSwgZXhwcmVzc2lvbikpO1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRTRU1JQ09MT04pKSB7XG4gICAgICAgIHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTU1BKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUJpbmRpbmdQYXJzZVJlc3VsdChiaW5kaW5ncywgd2FybmluZ3MpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBpbmRleDogbnVtYmVyID0gbnVsbCkge1xuICAgIGlmIChpc0JsYW5rKGluZGV4KSkgaW5kZXggPSB0aGlzLmluZGV4O1xuXG4gICAgdmFyIGxvY2F0aW9uID0gKGluZGV4IDwgdGhpcy50b2tlbnMubGVuZ3RoKSA/IGBhdCBjb2x1bW4gJHt0aGlzLnRva2Vuc1tpbmRleF0uaW5kZXggKyAxfSBpbmAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYXQgdGhlIGVuZCBvZiB0aGUgZXhwcmVzc2lvbmA7XG5cbiAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24obWVzc2FnZSwgdGhpcy5pbnB1dCwgbG9jYXRpb24sIHRoaXMubG9jYXRpb24pO1xuICB9XG59XG5cbmNsYXNzIFNpbXBsZUV4cHJlc3Npb25DaGVja2VyIGltcGxlbWVudHMgQXN0VmlzaXRvciB7XG4gIHN0YXRpYyBjaGVjayhhc3Q6IEFTVCk6IGJvb2xlYW4ge1xuICAgIHZhciBzID0gbmV3IFNpbXBsZUV4cHJlc3Npb25DaGVja2VyKCk7XG4gICAgYXN0LnZpc2l0KHMpO1xuICAgIHJldHVybiBzLnNpbXBsZTtcbiAgfVxuXG4gIHNpbXBsZSA9IHRydWU7XG5cbiAgdmlzaXRJbXBsaWNpdFJlY2VpdmVyKGFzdDogSW1wbGljaXRSZWNlaXZlciwgY29udGV4dDogYW55KSB7fVxuXG4gIHZpc2l0SW50ZXJwb2xhdGlvbihhc3Q6IEludGVycG9sYXRpb24sIGNvbnRleHQ6IGFueSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRMaXRlcmFsUHJpbWl0aXZlKGFzdDogTGl0ZXJhbFByaW1pdGl2ZSwgY29udGV4dDogYW55KSB7fVxuXG4gIHZpc2l0UHJvcGVydHlSZWFkKGFzdDogUHJvcGVydHlSZWFkLCBjb250ZXh0OiBhbnkpIHt9XG5cbiAgdmlzaXRQcm9wZXJ0eVdyaXRlKGFzdDogUHJvcGVydHlXcml0ZSwgY29udGV4dDogYW55KSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdFNhZmVQcm9wZXJ0eVJlYWQoYXN0OiBTYWZlUHJvcGVydHlSZWFkLCBjb250ZXh0OiBhbnkpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0TWV0aG9kQ2FsbChhc3Q6IE1ldGhvZENhbGwsIGNvbnRleHQ6IGFueSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRTYWZlTWV0aG9kQ2FsbChhc3Q6IFNhZmVNZXRob2RDYWxsLCBjb250ZXh0OiBhbnkpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogRnVuY3Rpb25DYWxsLCBjb250ZXh0OiBhbnkpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0TGl0ZXJhbEFycmF5KGFzdDogTGl0ZXJhbEFycmF5LCBjb250ZXh0OiBhbnkpIHsgdGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpOyB9XG5cbiAgdmlzaXRMaXRlcmFsTWFwKGFzdDogTGl0ZXJhbE1hcCwgY29udGV4dDogYW55KSB7IHRoaXMudmlzaXRBbGwoYXN0LnZhbHVlcyk7IH1cblxuICB2aXNpdEJpbmFyeShhc3Q6IEJpbmFyeSwgY29udGV4dDogYW55KSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdFByZWZpeE5vdChhc3Q6IFByZWZpeE5vdCwgY29udGV4dDogYW55KSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdENvbmRpdGlvbmFsKGFzdDogQ29uZGl0aW9uYWwsIGNvbnRleHQ6IGFueSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRQaXBlKGFzdDogQmluZGluZ1BpcGUsIGNvbnRleHQ6IGFueSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRLZXllZFJlYWQoYXN0OiBLZXllZFJlYWQsIGNvbnRleHQ6IGFueSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRLZXllZFdyaXRlKGFzdDogS2V5ZWRXcml0ZSwgY29udGV4dDogYW55KSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdEFsbChhc3RzOiBhbnlbXSk6IGFueVtdIHtcbiAgICB2YXIgcmVzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKGFzdHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHJlc1tpXSA9IGFzdHNbaV0udmlzaXQodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB2aXNpdENoYWluKGFzdDogQ2hhaW4sIGNvbnRleHQ6IGFueSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRRdW90ZShhc3Q6IFF1b3RlLCBjb250ZXh0OiBhbnkpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar decorators_1 = require('angular2/src/core/di/decorators');\r\nvar collection_1 = require(\"angular2/src/facade/collection\");\r\nvar lang_1 = require(\"angular2/src/facade/lang\");\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n(function (TokenType) {\r\n TokenType[TokenType[\"Character\"] = 0] = \"Character\";\r\n TokenType[TokenType[\"Identifier\"] = 1] = \"Identifier\";\r\n TokenType[TokenType[\"Keyword\"] = 2] = \"Keyword\";\r\n TokenType[TokenType[\"String\"] = 3] = \"String\";\r\n TokenType[TokenType[\"Operator\"] = 4] = \"Operator\";\r\n TokenType[TokenType[\"Number\"] = 5] = \"Number\";\r\n})(exports.TokenType || (exports.TokenType = {}));\r\nvar TokenType = exports.TokenType;\r\nvar Lexer = (function () {\r\n function Lexer() {\r\n }\r\n Lexer.prototype.tokenize = function (text) {\r\n var scanner = new _Scanner(text);\r\n var tokens = [];\r\n var token = scanner.scanToken();\r\n while (token != null) {\r\n tokens.push(token);\r\n token = scanner.scanToken();\r\n }\r\n return tokens;\r\n };\r\n Lexer = __decorate([\r\n decorators_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], Lexer);\r\n return Lexer;\r\n}());\r\nexports.Lexer = Lexer;\r\nvar Token = (function () {\r\n function Token(index, type, numValue, strValue) {\r\n this.index = index;\r\n this.type = type;\r\n this.numValue = numValue;\r\n this.strValue = strValue;\r\n }\r\n Token.prototype.isCharacter = function (code) {\r\n return (this.type == TokenType.Character && this.numValue == code);\r\n };\r\n Token.prototype.isNumber = function () { return (this.type == TokenType.Number); };\r\n Token.prototype.isString = function () { return (this.type == TokenType.String); };\r\n Token.prototype.isOperator = function (operater) {\r\n return (this.type == TokenType.Operator && this.strValue == operater);\r\n };\r\n Token.prototype.isIdentifier = function () { return (this.type == TokenType.Identifier); };\r\n Token.prototype.isKeyword = function () { return (this.type == TokenType.Keyword); };\r\n Token.prototype.isKeywordDeprecatedVar = function () {\r\n return (this.type == TokenType.Keyword && this.strValue == \"var\");\r\n };\r\n Token.prototype.isKeywordLet = function () { return (this.type == TokenType.Keyword && this.strValue == \"let\"); };\r\n Token.prototype.isKeywordNull = function () { return (this.type == TokenType.Keyword && this.strValue == \"null\"); };\r\n Token.prototype.isKeywordUndefined = function () {\r\n return (this.type == TokenType.Keyword && this.strValue == \"undefined\");\r\n };\r\n Token.prototype.isKeywordTrue = function () { return (this.type == TokenType.Keyword && this.strValue == \"true\"); };\r\n Token.prototype.isKeywordFalse = function () { return (this.type == TokenType.Keyword && this.strValue == \"false\"); };\r\n Token.prototype.toNumber = function () {\r\n // -1 instead of NULL ok?\r\n return (this.type == TokenType.Number) ? this.numValue : -1;\r\n };\r\n Token.prototype.toString = function () {\r\n switch (this.type) {\r\n case TokenType.Character:\r\n case TokenType.Identifier:\r\n case TokenType.Keyword:\r\n case TokenType.Operator:\r\n case TokenType.String:\r\n return this.strValue;\r\n case TokenType.Number:\r\n return this.numValue.toString();\r\n default:\r\n return null;\r\n }\r\n };\r\n return Token;\r\n}());\r\nexports.Token = Token;\r\nfunction newCharacterToken(index, code) {\r\n return new Token(index, TokenType.Character, code, lang_1.StringWrapper.fromCharCode(code));\r\n}\r\nfunction newIdentifierToken(index, text) {\r\n return new Token(index, TokenType.Identifier, 0, text);\r\n}\r\nfunction newKeywordToken(index, text) {\r\n return new Token(index, TokenType.Keyword, 0, text);\r\n}\r\nfunction newOperatorToken(index, text) {\r\n return new Token(index, TokenType.Operator, 0, text);\r\n}\r\nfunction newStringToken(index, text) {\r\n return new Token(index, TokenType.String, 0, text);\r\n}\r\nfunction newNumberToken(index, n) {\r\n return new Token(index, TokenType.Number, n, \"\");\r\n}\r\nexports.EOF = new Token(-1, TokenType.Character, 0, \"\");\r\nexports.$EOF = 0;\r\nexports.$TAB = 9;\r\nexports.$LF = 10;\r\nexports.$VTAB = 11;\r\nexports.$FF = 12;\r\nexports.$CR = 13;\r\nexports.$SPACE = 32;\r\nexports.$BANG = 33;\r\nexports.$DQ = 34;\r\nexports.$HASH = 35;\r\nexports.$$ = 36;\r\nexports.$PERCENT = 37;\r\nexports.$AMPERSAND = 38;\r\nexports.$SQ = 39;\r\nexports.$LPAREN = 40;\r\nexports.$RPAREN = 41;\r\nexports.$STAR = 42;\r\nexports.$PLUS = 43;\r\nexports.$COMMA = 44;\r\nexports.$MINUS = 45;\r\nexports.$PERIOD = 46;\r\nexports.$SLASH = 47;\r\nexports.$COLON = 58;\r\nexports.$SEMICOLON = 59;\r\nexports.$LT = 60;\r\nexports.$EQ = 61;\r\nexports.$GT = 62;\r\nexports.$QUESTION = 63;\r\nvar $0 = 48;\r\nvar $9 = 57;\r\nvar $A = 65, $E = 69, $Z = 90;\r\nexports.$LBRACKET = 91;\r\nexports.$BACKSLASH = 92;\r\nexports.$RBRACKET = 93;\r\nvar $CARET = 94;\r\nvar $_ = 95;\r\nexports.$BT = 96;\r\nvar $a = 97, $e = 101, $f = 102, $n = 110, $r = 114, $t = 116, $u = 117, $v = 118, $z = 122;\r\nexports.$LBRACE = 123;\r\nexports.$BAR = 124;\r\nexports.$RBRACE = 125;\r\nvar $NBSP = 160;\r\nvar ScannerError = (function (_super) {\r\n __extends(ScannerError, _super);\r\n function ScannerError(message) {\r\n _super.call(this);\r\n this.message = message;\r\n }\r\n ScannerError.prototype.toString = function () { return this.message; };\r\n return ScannerError;\r\n}(exceptions_1.BaseException));\r\nexports.ScannerError = ScannerError;\r\nvar _Scanner = (function () {\r\n function _Scanner(input) {\r\n this.input = input;\r\n this.peek = 0;\r\n this.index = -1;\r\n this.length = input.length;\r\n this.advance();\r\n }\r\n _Scanner.prototype.advance = function () {\r\n this.peek =\r\n ++this.index >= this.length ? exports.$EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);\r\n };\r\n _Scanner.prototype.scanToken = function () {\r\n var input = this.input, length = this.length, peek = this.peek, index = this.index;\r\n // Skip whitespace.\r\n while (peek <= exports.$SPACE) {\r\n if (++index >= length) {\r\n peek = exports.$EOF;\r\n break;\r\n }\r\n else {\r\n peek = lang_1.StringWrapper.charCodeAt(input, index);\r\n }\r\n }\r\n this.peek = peek;\r\n this.index = index;\r\n if (index >= length) {\r\n return null;\r\n }\r\n // Handle identifiers and numbers.\r\n if (isIdentifierStart(peek))\r\n return this.scanIdentifier();\r\n if (isDigit(peek))\r\n return this.scanNumber(index);\r\n var start = index;\r\n switch (peek) {\r\n case exports.$PERIOD:\r\n this.advance();\r\n return isDigit(this.peek) ? this.scanNumber(start) : newCharacterToken(start, exports.$PERIOD);\r\n case exports.$LPAREN:\r\n case exports.$RPAREN:\r\n case exports.$LBRACE:\r\n case exports.$RBRACE:\r\n case exports.$LBRACKET:\r\n case exports.$RBRACKET:\r\n case exports.$COMMA:\r\n case exports.$COLON:\r\n case exports.$SEMICOLON:\r\n return this.scanCharacter(start, peek);\r\n case exports.$SQ:\r\n case exports.$DQ:\r\n return this.scanString();\r\n case exports.$HASH:\r\n case exports.$PLUS:\r\n case exports.$MINUS:\r\n case exports.$STAR:\r\n case exports.$SLASH:\r\n case exports.$PERCENT:\r\n case $CARET:\r\n return this.scanOperator(start, lang_1.StringWrapper.fromCharCode(peek));\r\n case exports.$QUESTION:\r\n return this.scanComplexOperator(start, '?', exports.$PERIOD, '.');\r\n case exports.$LT:\r\n case exports.$GT:\r\n return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=');\r\n case exports.$BANG:\r\n case exports.$EQ:\r\n return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=', exports.$EQ, '=');\r\n case exports.$AMPERSAND:\r\n return this.scanComplexOperator(start, '&', exports.$AMPERSAND, '&');\r\n case exports.$BAR:\r\n return this.scanComplexOperator(start, '|', exports.$BAR, '|');\r\n case $NBSP:\r\n while (isWhitespace(this.peek))\r\n this.advance();\r\n return this.scanToken();\r\n }\r\n this.error(\"Unexpected character [\" + lang_1.StringWrapper.fromCharCode(peek) + \"]\", 0);\r\n return null;\r\n };\r\n _Scanner.prototype.scanCharacter = function (start, code) {\r\n this.advance();\r\n return newCharacterToken(start, code);\r\n };\r\n _Scanner.prototype.scanOperator = function (start, str) {\r\n this.advance();\r\n return newOperatorToken(start, str);\r\n };\r\n /**\r\n * Tokenize a 2/3 char long operator\r\n *\r\n * @param start start index in the expression\r\n * @param one first symbol (always part of the operator)\r\n * @param twoCode code point for the second symbol\r\n * @param two second symbol (part of the operator when the second code point matches)\r\n * @param threeCode code point for the third symbol\r\n * @param three third symbol (part of the operator when provided and matches source expression)\r\n * @returns {Token}\r\n */\r\n _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) {\r\n this.advance();\r\n var str = one;\r\n if (this.peek == twoCode) {\r\n this.advance();\r\n str += two;\r\n }\r\n if (lang_1.isPresent(threeCode) && this.peek == threeCode) {\r\n this.advance();\r\n str += three;\r\n }\r\n return newOperatorToken(start, str);\r\n };\r\n _Scanner.prototype.scanIdentifier = function () {\r\n var start = this.index;\r\n this.advance();\r\n while (isIdentifierPart(this.peek))\r\n this.advance();\r\n var str = this.input.substring(start, this.index);\r\n if (collection_1.SetWrapper.has(KEYWORDS, str)) {\r\n return newKeywordToken(start, str);\r\n }\r\n else {\r\n return newIdentifierToken(start, str);\r\n }\r\n };\r\n _Scanner.prototype.scanNumber = function (start) {\r\n var simple = (this.index === start);\r\n this.advance(); // Skip initial digit.\r\n while (true) {\r\n if (isDigit(this.peek)) {\r\n }\r\n else if (this.peek == exports.$PERIOD) {\r\n simple = false;\r\n }\r\n else if (isExponentStart(this.peek)) {\r\n this.advance();\r\n if (isExponentSign(this.peek))\r\n this.advance();\r\n if (!isDigit(this.peek))\r\n this.error('Invalid exponent', -1);\r\n simple = false;\r\n }\r\n else {\r\n break;\r\n }\r\n this.advance();\r\n }\r\n var str = this.input.substring(start, this.index);\r\n // TODO\r\n var value = simple ? lang_1.NumberWrapper.parseIntAutoRadix(str) : lang_1.NumberWrapper.parseFloat(str);\r\n return newNumberToken(start, value);\r\n };\r\n _Scanner.prototype.scanString = function () {\r\n var start = this.index;\r\n var quote = this.peek;\r\n this.advance(); // Skip initial quote.\r\n var buffer;\r\n var marker = this.index;\r\n var input = this.input;\r\n while (this.peek != quote) {\r\n if (this.peek == exports.$BACKSLASH) {\r\n if (buffer == null)\r\n buffer = new lang_1.StringJoiner();\r\n buffer.add(input.substring(marker, this.index));\r\n this.advance();\r\n var unescapedCode;\r\n if (this.peek == $u) {\r\n // 4 character hex code for unicode character.\r\n var hex = input.substring(this.index + 1, this.index + 5);\r\n try {\r\n unescapedCode = lang_1.NumberWrapper.parseInt(hex, 16);\r\n }\r\n catch (e) {\r\n this.error(\"Invalid unicode escape [\\\\u\" + hex + \"]\", 0);\r\n }\r\n for (var i = 0; i < 5; i++) {\r\n this.advance();\r\n }\r\n }\r\n else {\r\n unescapedCode = unescape(this.peek);\r\n this.advance();\r\n }\r\n buffer.add(lang_1.StringWrapper.fromCharCode(unescapedCode));\r\n marker = this.index;\r\n }\r\n else if (this.peek == exports.$EOF) {\r\n this.error('Unterminated quote', 0);\r\n }\r\n else {\r\n this.advance();\r\n }\r\n }\r\n var last = input.substring(marker, this.index);\r\n this.advance(); // Skip terminating quote.\r\n // Compute the unescaped string value.\r\n var unescaped = last;\r\n if (buffer != null) {\r\n buffer.add(last);\r\n unescaped = buffer.toString();\r\n }\r\n return newStringToken(start, unescaped);\r\n };\r\n _Scanner.prototype.error = function (message, offset) {\r\n var position = this.index + offset;\r\n throw new ScannerError(\"Lexer Error: \" + message + \" at column \" + position + \" in expression [\" + this.input + \"]\");\r\n };\r\n return _Scanner;\r\n}());\r\nfunction isWhitespace(code) {\r\n return (code >= exports.$TAB && code <= exports.$SPACE) || (code == $NBSP);\r\n}\r\nfunction isIdentifierStart(code) {\r\n return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || (code == $_) || (code == exports.$$);\r\n}\r\nfunction isIdentifier(input) {\r\n if (input.length == 0)\r\n return false;\r\n var scanner = new _Scanner(input);\r\n if (!isIdentifierStart(scanner.peek))\r\n return false;\r\n scanner.advance();\r\n while (scanner.peek !== exports.$EOF) {\r\n if (!isIdentifierPart(scanner.peek))\r\n return false;\r\n scanner.advance();\r\n }\r\n return true;\r\n}\r\nexports.isIdentifier = isIdentifier;\r\nfunction isIdentifierPart(code) {\r\n return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || ($0 <= code && code <= $9) ||\r\n (code == $_) || (code == exports.$$);\r\n}\r\nfunction isDigit(code) {\r\n return $0 <= code && code <= $9;\r\n}\r\nfunction isExponentStart(code) {\r\n return code == $e || code == $E;\r\n}\r\nfunction isExponentSign(code) {\r\n return code == exports.$MINUS || code == exports.$PLUS;\r\n}\r\nfunction isQuote(code) {\r\n return code === exports.$SQ || code === exports.$DQ || code === exports.$BT;\r\n}\r\nexports.isQuote = isQuote;\r\nfunction unescape(code) {\r\n switch (code) {\r\n case $n:\r\n return exports.$LF;\r\n case $f:\r\n return exports.$FF;\r\n case $r:\r\n return exports.$CR;\r\n case $t:\r\n return exports.$TAB;\r\n case $v:\r\n return exports.$VTAB;\r\n default:\r\n return code;\r\n }\r\n}\r\nvar OPERATORS = collection_1.SetWrapper.createFromList([\r\n '+',\r\n '-',\r\n '*',\r\n '/',\r\n '%',\r\n '^',\r\n '=',\r\n '==',\r\n '!=',\r\n '===',\r\n '!==',\r\n '<',\r\n '>',\r\n '<=',\r\n '>=',\r\n '&&',\r\n '||',\r\n '&',\r\n '|',\r\n '!',\r\n '?',\r\n '#',\r\n '?.'\r\n]);\r\nvar KEYWORDS = collection_1.SetWrapper.createFromList(['var', 'let', 'null', 'undefined', 'true', 'false', 'if', 'else']);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvZXhwcmVzc2lvbl9wYXJzZXIvbGV4ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkJBQXlCLGlDQUFpQyxDQUFDLENBQUE7QUFDM0QsMkJBQXNDLGdDQUFnQyxDQUFDLENBQUE7QUFDdkUscUJBQW9FLDBCQUEwQixDQUFDLENBQUE7QUFDL0YsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFFN0QsV0FBWSxTQUFTO0lBQ25CLG1EQUFTLENBQUE7SUFDVCxxREFBVSxDQUFBO0lBQ1YsK0NBQU8sQ0FBQTtJQUNQLDZDQUFNLENBQUE7SUFDTixpREFBUSxDQUFBO0lBQ1IsNkNBQU0sQ0FBQTtBQUNSLENBQUMsRUFQVyxpQkFBUyxLQUFULGlCQUFTLFFBT3BCO0FBUEQsSUFBWSxTQUFTLEdBQVQsaUJBT1gsQ0FBQTtBQUdEO0lBQUE7SUFXQSxDQUFDO0lBVkMsd0JBQVEsR0FBUixVQUFTLElBQVk7UUFDbkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQVhIO1FBQUMsdUJBQVUsRUFBRTs7YUFBQTtJQVliLFlBQUM7QUFBRCxDQUFDLEFBWEQsSUFXQztBQVhZLGFB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LENBQUMsY0FBYyxDQUFDO0lBQ3hDLEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxJQUFJO0lBQ0osSUFBSTtJQUNKLEtBQUs7SUFDTCxLQUFLO0lBQ0wsR0FBRztJQUNILEdBQUc7SUFDSCxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxJQUFJO0NBQ0wsQ0FBQyxDQUFDO0FBR0gsSUFBSSxRQUFRLEdBQ1IsdUJBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGkvZGVjb3JhdG9ycyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBTZXRXcmFwcGVyfSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uXCI7XG5pbXBvcnQge051bWJlcldyYXBwZXIsIFN0cmluZ0pvaW5lciwgU3RyaW5nV3JhcHBlciwgaXNQcmVzZW50fSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nXCI7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmV4cG9ydCBlbnVtIFRva2VuVHlwZSB7XG4gIENoYXJhY3RlcixcbiAgSWRlbnRpZmllcixcbiAgS2V5d29yZCxcbiAgU3RyaW5nLFxuICBPcGVyYXRvcixcbiAgTnVtYmVyXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMZXhlciB7XG4gIHRva2VuaXplKHRleHQ6IHN0cmluZyk6IGFueVtdIHtcbiAgICB2YXIgc2Nhbm5lciA9IG5ldyBfU2Nhbm5lcih0ZXh0KTtcbiAgICB2YXIgdG9rZW5zID0gW107XG4gICAgdmFyIHRva2VuID0gc2Nhbm5lci5zY2FuVG9rZW4oKTtcbiAgICB3aGlsZSAodG9rZW4gIT0gbnVsbCkge1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgdG9rZW4gPSBzY2FubmVyLnNjYW5Ub2tlbigpO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgdHlwZTogVG9rZW5UeXBlLCBwdWJsaWMgbnVtVmFsdWU6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIHN0clZhbHVlOiBzdHJpbmcpIHt9XG5cbiAgaXNDaGFyYWN0ZXIoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLkNoYXJhY3RlciAmJiB0aGlzLm51bVZhbHVlID09IGNvZGUpO1xuICB9XG5cbiAgaXNOdW1iZXIoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5OdW1iZXIpOyB9XG5cbiAgaXNTdHJpbmcoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5TdHJpbmcpOyB9XG5cbiAgaXNPcGVyYXRvcihvcGVyYXRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLk9wZXJhdG9yICYmIHRoaXMuc3RyVmFsdWUgPT0gb3BlcmF0ZXIpO1xuICB9XG5cbiAgaXNJZGVudGlmaWVyKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuSWRlbnRpZmllcik7IH1cblxuICBpc0tleXdvcmQoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5LZXl3b3JkKTsgfVxuXG4gIGlzS2V5d29yZERlcHJlY2F0ZWRWYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLktleXdvcmQgJiYgdGhpcy5zdHJWYWx1ZSA9PSBcInZhclwiKTtcbiAgfVxuXG4gIGlzS2V5d29yZExldCgpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLktleXdvcmQgJiYgdGhpcy5zdHJWYWx1ZSA9PSBcImxldFwiKTsgfVxuXG4gIGlzS2V5d29yZE51bGwoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5LZXl3b3JkICYmIHRoaXMuc3RyVmFsdWUgPT0gXCJudWxsXCIpOyB9XG5cbiAgaXNLZXl3b3JkVW5kZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5LZXl3b3JkICYmIHRoaXMuc3RyVmFsdWUgPT0gXCJ1bmRlZmluZWRcIik7XG4gIH1cblxuICBpc0tleXdvcmRUcnVlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuS2V5d29yZCAmJiB0aGlzLnN0clZhbHVlID09IFwidHJ1ZVwiKTsgfVxuXG4gIGlzS2V5d29yZEZhbHNlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuS2V5d29yZCAmJiB0aGlzLnN0clZhbHVlID09IFwiZmFsc2VcIik7IH1cblxuICB0b051bWJlcigpOiBudW1iZXIge1xuICAgIC8vIC0xIGluc3RlYWQgb2YgTlVMTCBvaz9cbiAgICByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuTnVtYmVyKSA/IHRoaXMubnVtVmFsdWUgOiAtMTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVG9rZW5UeXBlLkNoYXJhY3RlcjpcbiAgICAgIGNhc2UgVG9rZW5UeXBlLklkZW50aWZpZXI6XG4gICAgICBjYXNlIFRva2VuVHlwZS5LZXl3b3JkOlxuICAgICAgY2FzZSBUb2tlblR5cGUuT3BlcmF0b3I6XG4gICAgICBjYXNlIFRva2VuVHlwZS5TdHJpbmc6XG4gICAgICAgIHJldHVybiB0aGlzLnN0clZhbHVlO1xuICAgICAgY2FzZSBUb2tlblR5cGUuTnVtYmVyOlxuICAgICAgICByZXR1cm4gdGhpcy5udW1WYWx1ZS50b1N0cmluZygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG5ld0NoYXJhY3RlclRva2VuKGluZGV4OiBudW1iZXIsIGNvZGU6IG51bWJlcik6IFRva2VuIHtcbiAgcmV0dXJuIG5ldyBUb2tlbihpbmRleCwgVG9rZW5UeXBlLkNoYXJhY3RlciwgY29kZSwgU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUoY29kZSkpO1xufVxuXG5mdW5jdGlvbiBuZXdJZGVudGlmaWVyVG9rZW4oaW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogVG9rZW4ge1xuICByZXR1cm4gbmV3IFRva2VuKGluZGV4LCBUb2tlblR5cGUuSWRlbnRpZmllciwgMCwgdGV4dCk7XG59XG5cbmZ1bmN0aW9uIG5ld0tleXdvcmRUb2tlbihpbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBUb2tlbiB7XG4gIHJldHVybiBuZXcgVG9rZW4oaW5kZXgsIFRva2VuVHlwZS5LZXl3b3JkLCAwLCB0ZXh0KTtcbn1cblxuZnVuY3Rpb24gbmV3T3BlcmF0b3JUb2tlbihpbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBUb2tlbiB7XG4gIHJldHVybiBuZXcgVG9rZW4oaW5kZXgsIFRva2VuVHlwZS5PcGVyYXRvciwgMCwgdGV4dCk7XG59XG5cbmZ1bmN0aW9uIG5ld1N0cmluZ1Rva2VuKGluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgcmV0dXJuIG5ldyBUb2tlbihpbmRleCwgVG9rZW5UeXBlLlN0cmluZywgMCwgdGV4dCk7XG59XG5cbmZ1bmN0aW9uIG5ld051bWJlclRva2VuKGluZGV4OiBudW1iZXIsIG46IG51bWJlcik6IFRva2VuIHtcbiAgcmV0dXJuIG5ldyBUb2tlbihpbmRleCwgVG9rZW5UeXBlLk51bWJlciwgbiwgXCJcIik7XG59XG5cblxuZXhwb3J0IHZhciBFT0Y6IFRva2VuID0gbmV3IFRva2VuKC0xLCBUb2tlblR5cGUuQ2hhcmFjdGVyLCAwLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0ICRFT0YgPSAwO1xuZXhwb3J0IGNvbnN0ICRUQUIgPSA5O1xuZXhwb3J0IGNvbnN0ICRMRiA9IDEwO1xuZXhwb3J0IGNvbnN0ICRWVEFCID0gMTE7XG5leHBvcnQgY29uc3QgJEZGID0gMTI7XG5leHBvcnQgY29uc3QgJENSID0gMTM7XG5leHBvcnQgY29uc3QgJFNQQUNFID0gMzI7XG5leHBvcnQgY29uc3QgJEJBTkcgPSAzMztcbmV4cG9ydCBjb25zdCAkRFEgPSAzNDtcbmV4cG9ydCBjb25zdCAkSEFTSCA9IDM1O1xuZXhwb3J0IGNvbnN0ICQkID0gMzY7XG5leHBvcnQgY29uc3QgJFBFUkNFTlQgPSAzNztcbmV4cG9ydCBjb25zdCAkQU1QRVJTQU5EID0gMzg7XG5leHBvcnQgY29uc3QgJFNRID0gMzk7XG5leHBvcnQgY29uc3QgJExQQVJFTiA9IDQwO1xuZXhwb3J0IGNvbnN0ICRSUEFSRU4gPSA0MTtcbmV4cG9ydCBjb25zdCAkU1RBUiA9IDQyO1xuZXhwb3J0IGNvbnN0ICRQTFVTID0gNDM7XG5leHBvcnQgY29uc3QgJENPTU1BID0gNDQ7XG5leHBvcnQgY29uc3QgJE1JTlVTID0gNDU7XG5leHBvcnQgY29uc3QgJFBFUklPRCA9IDQ2O1xuZXhwb3J0IGNvbnN0ICRTTEFTSCA9IDQ3O1xuZXhwb3J0IGNvbnN0ICRDT0xPTiA9IDU4O1xuZXhwb3J0IGNvbnN0ICRTRU1JQ09MT04gPSA1OTtcbmV4cG9ydCBjb25zdCAkTFQgPSA2MDtcbmV4cG9ydCBjb25zdCAkRVEgPSA2MTtcbmV4cG9ydCBjb25zdCAkR1QgPSA2MjtcbmV4cG9ydCBjb25zdCAkUVVFU1RJT04gPSA2MztcblxuY29uc3QgJDAgPSA0ODtcbmNvbnN0ICQ5ID0gNTc7XG5cbmNvbnN0ICRBID0gNjUsICRFID0gNjksICRaID0gOTA7XG5cbmV4cG9ydCBjb25zdCAkTEJSQUNLRVQgPSA5MTtcbmV4cG9ydCBjb25zdCAkQkFDS1NMQVNIID0gOTI7XG5leHBvcnQgY29uc3QgJFJCUkFDS0VUID0gOTM7XG5jb25zdCAkQ0FSRVQgPSA5NDtcbmNvbnN0ICRfID0gOTU7XG5leHBvcnQgY29uc3QgJEJUID0gOTY7XG5jb25zdCAkYSA9IDk3LCAkZSA9IDEwMSwgJGYgPSAxMDIsICRuID0gMTEwLCAkciA9IDExNCwgJHQgPSAxMTYsICR1ID0gMTE3LCAkdiA9IDExOCwgJHogPSAxMjI7XG5cbmV4cG9ydCBjb25zdCAkTEJSQUNFID0gMTIzO1xuZXhwb3J0IGNvbnN0ICRCQVIgPSAxMjQ7XG5leHBvcnQgY29uc3QgJFJCUkFDRSA9IDEyNTtcbmNvbnN0ICROQlNQID0gMTYwO1xuXG5leHBvcnQgY2xhc3MgU2Nhbm5lckVycm9yIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtZXNzYWdlKSB7IHN1cGVyKCk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5tZXNzYWdlOyB9XG59XG5cbmNsYXNzIF9TY2FubmVyIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHBlZWs6IG51bWJlciA9IDA7XG4gIGluZGV4OiBudW1iZXIgPSAtMTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5wdXQ6IHN0cmluZykge1xuICAgIHRoaXMubGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgIHRoaXMuYWR2YW5jZSgpO1xuICB9XG5cbiAgYWR2YW5jZSgpIHtcbiAgICB0aGlzLnBlZWsgPVxuICAgICAgICArK3RoaXMuaW5kZXggPj0gdGhpcy5sZW5ndGggPyAkRU9GIDogU3RyaW5nV3JhcHBlci5jaGFyQ29kZUF0KHRoaXMuaW5wdXQsIHRoaXMuaW5kZXgpO1xuICB9XG5cbiAgc2NhblRva2VuKCk6IFRva2VuIHtcbiAgICB2YXIgaW5wdXQgPSB0aGlzLmlucHV0LCBsZW5ndGggPSB0aGlzLmxlbmd0aCwgcGVlayA9IHRoaXMucGVlaywgaW5kZXggPSB0aGlzLmluZGV4O1xuXG4gICAgLy8gU2tpcCB3aGl0ZXNwYWNlLlxuICAgIHdoaWxlIChwZWVrIDw9ICRTUEFDRSkge1xuICAgICAgaWYgKCsraW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHBlZWsgPSAkRU9GO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZWsgPSBTdHJpbmdXcmFwcGVyLmNoYXJDb2RlQXQoaW5wdXQsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnBlZWsgPSBwZWVrO1xuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcblxuICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBpZGVudGlmaWVycyBhbmQgbnVtYmVycy5cbiAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQocGVlaykpIHJldHVybiB0aGlzLnNjYW5JZGVudGlmaWVyKCk7XG4gICAgaWYgKGlzRGlnaXQocGVlaykpIHJldHVybiB0aGlzLnNjYW5OdW1iZXIoaW5kZXgpO1xuXG4gICAgdmFyIHN0YXJ0OiBudW1iZXIgPSBpbmRleDtcbiAgICBzd2l0Y2ggKHBlZWspIHtcbiAgICAgIGNhc2UgJFBFUklPRDpcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIHJldHVybiBpc0RpZ2l0KHRoaXMucGVlaykgPyB0aGlzLnNjYW5OdW1iZXIoc3RhcnQpIDogbmV3Q2hhcmFjdGVyVG9rZW4oc3RhcnQsICRQRVJJT0QpO1xuICAgICAgY2FzZSAkTFBBUkVOOlxuICAgICAgY2FzZSAkUlBBUkVOOlxuICAgICAgY2FzZSAkTEJSQUNFOlxuICAgICAgY2FzZSAkUkJSQUNFOlxuICAgICAgY2FzZSAkTEJSQUNLRVQ6XG4gICAgICBjYXNlICRSQlJBQ0tFVDpcbiAgICAgIGNhc2UgJENPTU1BOlxuICAgICAgY2FzZSAkQ09MT046XG4gICAgICBjYXNlICRTRU1JQ09MT046XG4gICAgICAgIHJldHVybiB0aGlzLnNjYW5DaGFyYWN0ZXIoc3RhcnQsIHBlZWspO1xuICAgICAgY2FzZSAkU1E6XG4gICAgICBjYXNlICREUTpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhblN0cmluZygpO1xuICAgICAgY2FzZSAkSEFTSDpcbiAgICAgIGNhc2UgJFBMVVM6XG4gICAgICBjYXNlICRNSU5VUzpcbiAgICAgIGNhc2UgJFNUQVI6XG4gICAgICBjYXNlICRTTEFTSDpcbiAgICAgIGNhc2UgJFBFUkNFTlQ6XG4gICAgICBjYXNlICRDQVJFVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Nhbk9wZXJhdG9yKHN0YXJ0LCBTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZShwZWVrKSk7XG4gICAgICBjYXNlICRRVUVTVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgJz8nLCAkUEVSSU9ELCAnLicpO1xuICAgICAgY2FzZSAkTFQ6XG4gICAgICBjYXNlICRHVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUocGVlayksICRFUSwgJz0nKTtcbiAgICAgIGNhc2UgJEJBTkc6XG4gICAgICBjYXNlICRFUTpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUocGVlayksICRFUSwgJz0nLCAkRVEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJz0nKTtcbiAgICAgIGNhc2UgJEFNUEVSU0FORDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgJyYnLCAkQU1QRVJTQU5ELCAnJicpO1xuICAgICAgY2FzZSAkQkFSOlxuICAgICAgICByZXR1cm4gdGhpcy5zY2FuQ29tcGxleE9wZXJhdG9yKHN0YXJ0LCAnfCcsICRCQVIsICd8Jyk7XG4gICAgICBjYXNlICROQlNQOlxuICAgICAgICB3aGlsZSAoaXNXaGl0ZXNwYWNlKHRoaXMucGVlaykpIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FuVG9rZW4oKTtcbiAgICB9XG5cbiAgICB0aGlzLmVycm9yKGBVbmV4cGVjdGVkIGNoYXJhY3RlciBbJHtTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZShwZWVrKX1dYCwgMCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzY2FuQ2hhcmFjdGVyKHN0YXJ0OiBudW1iZXIsIGNvZGU6IG51bWJlcik6IFRva2VuIHtcbiAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICByZXR1cm4gbmV3Q2hhcmFjdGVyVG9rZW4oc3RhcnQsIGNvZGUpO1xuICB9XG5cblxuICBzY2FuT3BlcmF0b3Ioc3RhcnQ6IG51bWJlciwgc3RyOiBzdHJpbmcpOiBUb2tlbiB7XG4gICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgcmV0dXJuIG5ld09wZXJhdG9yVG9rZW4oc3RhcnQsIHN0cik7XG4gIH1cblxuICAvKipcbiAgICogVG9rZW5pemUgYSAyLzMgY2hhciBsb25nIG9wZXJhdG9yXG4gICAqXG4gICAqIEBwYXJhbSBzdGFydCBzdGFydCBpbmRleCBpbiB0aGUgZXhwcmVzc2lvblxuICAgKiBAcGFyYW0gb25lIGZpcnN0IHN5bWJvbCAoYWx3YXlzIHBhcnQgb2YgdGhlIG9wZXJhdG9yKVxuICAgKiBAcGFyYW0gdHdvQ29kZSBjb2RlIHBvaW50IGZvciB0aGUgc2Vjb25kIHN5bWJvbFxuICAgKiBAcGFyYW0gdHdvIHNlY29uZCBzeW1ib2wgKHBhcnQgb2YgdGhlIG9wZXJhdG9yIHdoZW4gdGhlIHNlY29uZCBjb2RlIHBvaW50IG1hdGNoZXMpXG4gICAqIEBwYXJhbSB0aHJlZUNvZGUgY29kZSBwb2ludCBmb3IgdGhlIHRoaXJkIHN5bWJvbFxuICAgKiBAcGFyYW0gdGhyZWUgdGhpcmQgc3ltYm9sIChwYXJ0IG9mIHRoZSBvcGVyYXRvciB3aGVuIHByb3ZpZGVkIGFuZCBtYXRjaGVzIHNvdXJjZSBleHByZXNzaW9uKVxuICAgKiBAcmV0dXJucyB7VG9rZW59XG4gICAqL1xuICBzY2FuQ29tcGxleE9wZXJhdG9yKHN0YXJ0OiBudW1iZXIsIG9uZTogc3RyaW5nLCB0d29Db2RlOiBudW1iZXIsIHR3bzogc3RyaW5nLCB0aHJlZUNvZGU/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgdGhyZWU/OiBzdHJpbmcpOiBUb2tlbiB7XG4gICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgdmFyIHN0cjogc3RyaW5nID0gb25lO1xuICAgIGlmICh0aGlzLnBlZWsgPT0gdHdvQ29kZSkge1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICBzdHIgKz0gdHdvO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRocmVlQ29kZSkgJiYgdGhpcy5wZWVrID09IHRocmVlQ29kZSkge1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICBzdHIgKz0gdGhyZWU7XG4gICAgfVxuICAgIHJldHVybiBuZXdPcGVyYXRvclRva2VuKHN0YXJ0LCBzdHIpO1xuICB9XG5cbiAgc2NhbklkZW50aWZpZXIoKTogVG9rZW4ge1xuICAgIHZhciBzdGFydDogbnVtYmVyID0gdGhpcy5pbmRleDtcbiAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICB3aGlsZSAoaXNJZGVudGlmaWVyUGFydCh0aGlzLnBlZWspKSB0aGlzLmFkdmFuY2UoKTtcbiAgICB2YXIgc3RyOiBzdHJpbmcgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5pbmRleCk7XG4gICAgaWYgKFNldFdyYXBwZXIuaGFzKEtFWVdPUkRTLCBzdHIpKSB7XG4gICAgICByZXR1cm4gbmV3S2V5d29yZFRva2VuKHN0YXJ0LCBzdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3SWRlbnRpZmllclRva2VuKHN0YXJ0LCBzdHIpO1xuICAgIH1cbiAgfVxuXG4gIHNjYW5OdW1iZXIoc3RhcnQ6IG51bWJlcik6IFRva2VuIHtcbiAgICB2YXIgc2ltcGxlOiBib29sZWFuID0gKHRoaXMuaW5kZXggPT09IHN0YXJ0KTtcbiAgICB0aGlzLmFkdmFuY2UoKTsgIC8vIFNraXAgaW5pdGlhbCBkaWdpdC5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGlzRGlnaXQodGhpcy5wZWVrKSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLlxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsgPT0gJFBFUklPRCkge1xuICAgICAgICBzaW1wbGUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoaXNFeHBvbmVudFN0YXJ0KHRoaXMucGVlaykpIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIGlmIChpc0V4cG9uZW50U2lnbih0aGlzLnBlZWspKSB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgaWYgKCFpc0RpZ2l0KHRoaXMucGVlaykpIHRoaXMuZXJyb3IoJ0ludmFsaWQgZXhwb25lbnQnLCAtMSk7XG4gICAgICAgIHNpbXBsZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICB9XG4gICAgdmFyIHN0cjogc3RyaW5nID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgIC8vIFRPRE9cbiAgICB2YXIgdmFsdWU6IG51bWJlciA9XG4gICAgICAgIHNpbXBsZSA/IE51bWJlcldyYXBwZXIucGFyc2VJbnRBdXRvUmFkaXgoc3RyKSA6IE51bWJlcldyYXBwZXIucGFyc2VGbG9hdChzdHIpO1xuICAgIHJldHVybiBuZXdOdW1iZXJUb2tlbihzdGFydCwgdmFsdWUpO1xuICB9XG5cbiAgc2NhblN0cmluZygpOiBUb2tlbiB7XG4gICAgdmFyIHN0YXJ0OiBudW1iZXIgPSB0aGlzLmluZGV4O1xuICAgIHZhciBxdW90ZTogbnVtYmVyID0gdGhpcy5wZWVrO1xuICAgIHRoaXMuYWR2YW5jZSgpOyAgLy8gU2tpcCBpbml0aWFsIHF1b3RlLlxuXG4gICAgdmFyIGJ1ZmZlcjogU3RyaW5nSm9pbmVyO1xuICAgIHZhciBtYXJrZXI6IG51bWJlciA9IHRoaXMuaW5kZXg7XG4gICAgdmFyIGlucHV0OiBzdHJpbmcgPSB0aGlzLmlucHV0O1xuXG4gICAgd2hpbGUgKHRoaXMucGVlayAhPSBxdW90ZSkge1xuICAgICAgaWYgKHRoaXMucGVlayA9PSAkQkFDS1NMQVNIKSB7XG4gICAgICAgIGlmIChidWZmZXIgPT0gbnVsbCkgYnVmZmVyID0gbmV3IFN0cmluZ0pvaW5lcigpO1xuICAgICAgICBidWZmZXIuYWRkKGlucHV0LnN1YnN0cmluZyhtYXJrZXIsIHRoaXMuaW5kZXgpKTtcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIHZhciB1bmVzY2FwZWRDb2RlOiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLnBlZWsgPT0gJHUpIHtcbiAgICAgICAgICAvLyA0IGNoYXJhY3RlciBoZXggY29kZSBmb3IgdW5pY29kZSBjaGFyYWN0ZXIuXG4gICAgICAgICAgdmFyIGhleDogc3RyaW5nID0gaW5wdXQuc3Vic3RyaW5nKHRoaXMuaW5kZXggKyAxLCB0aGlzLmluZGV4ICsgNSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVuZXNjYXBlZENvZGUgPSBOdW1iZXJXcmFwcGVyLnBhcnNlSW50KGhleCwgMTYpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IoYEludmFsaWQgdW5pY29kZSBlc2NhcGUgW1xcXFx1JHtoZXh9XWAsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpOiBudW1iZXIgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdW5lc2NhcGVkQ29kZSA9IHVuZXNjYXBlKHRoaXMucGVlayk7XG4gICAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLmFkZChTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZSh1bmVzY2FwZWRDb2RlKSk7XG4gICAgICAgIG1hcmtlciA9IHRoaXMuaW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGVlayA9PSAkRU9GKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ1VudGVybWluYXRlZCBxdW90ZScsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3Q6IHN0cmluZyA9IGlucHV0LnN1YnN0cmluZyhtYXJrZXIsIHRoaXMuaW5kZXgpO1xuICAgIHRoaXMuYWR2YW5jZSgpOyAgLy8gU2tpcCB0ZXJtaW5hdGluZyBxdW90ZS5cblxuICAgIC8vIENvbXB1dGUgdGhlIHVuZXNjYXBlZCBzdHJpbmcgdmFsdWUuXG4gICAgdmFyIHVuZXNjYXBlZDogc3RyaW5nID0gbGFzdDtcbiAgICBpZiAoYnVmZmVyICE9IG51bGwpIHtcbiAgICAgIGJ1ZmZlci5hZGQobGFzdCk7XG4gICAgICB1bmVzY2FwZWQgPSBidWZmZXIudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1N0cmluZ1Rva2VuKHN0YXJ0LCB1bmVzY2FwZWQpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcikge1xuICAgIHZhciBwb3NpdGlvbjogbnVtYmVyID0gdGhpcy5pbmRleCArIG9mZnNldDtcbiAgICB0aHJvdyBuZXcgU2Nhbm5lckVycm9yKFxuICAgICAgICBgTGV4ZXIgRXJyb3I6ICR7bWVzc2FnZX0gYXQgY29sdW1uICR7cG9zaXRpb259IGluIGV4cHJlc3Npb24gWyR7dGhpcy5pbnB1dH1dYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKGNvZGUgPj0gJFRBQiAmJiBjb2RlIDw9ICRTUEFDRSkgfHwgKGNvZGUgPT0gJE5CU1ApO1xufVxuXG5mdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuICgkYSA8PSBjb2RlICYmIGNvZGUgPD0gJHopIHx8ICgkQSA8PSBjb2RlICYmIGNvZGUgPD0gJFopIHx8IChjb2RlID09ICRfKSB8fCAoY29kZSA9PSAkJCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lkZW50aWZpZXIoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoaW5wdXQubGVuZ3RoID09IDApIHJldHVybiBmYWxzZTtcbiAgdmFyIHNjYW5uZXIgPSBuZXcgX1NjYW5uZXIoaW5wdXQpO1xuICBpZiAoIWlzSWRlbnRpZmllclN0YXJ0KHNjYW5uZXIucGVlaykpIHJldHVybiBmYWxzZTtcbiAgc2Nhbm5lci5hZHZhbmNlKCk7XG4gIHdoaWxlIChzY2FubmVyLnBlZWsgIT09ICRFT0YpIHtcbiAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoc2Nhbm5lci5wZWVrKSkgcmV0dXJuIGZhbHNlO1xuICAgIHNjYW5uZXIuYWR2YW5jZSgpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0KGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKCRhIDw9IGNvZGUgJiYgY29kZSA8PSAkeikgfHwgKCRBIDw9IGNvZGUgJiYgY29kZSA8PSAkWikgfHwgKCQwIDw9IGNvZGUgJiYgY29kZSA8PSAkOSkgfHxcbiAgICAgICAgIChjb2RlID09ICRfKSB8fCAoY29kZSA9PSAkJCk7XG59XG5cbmZ1bmN0aW9uIGlzRGlnaXQoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAkMCA8PSBjb2RlICYmIGNvZGUgPD0gJDk7XG59XG5cbmZ1bmN0aW9uIGlzRXhwb25lbnRTdGFydChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT0gJGUgfHwgY29kZSA9PSAkRTtcbn1cblxuZnVuY3Rpb24gaXNFeHBvbmVudFNpZ24oY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09ICRNSU5VUyB8fCBjb2RlID09ICRQTFVTO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNRdW90ZShjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT09ICRTUSB8fCBjb2RlID09PSAkRFEgfHwgY29kZSA9PT0gJEJUO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZShjb2RlOiBudW1iZXIpOiBudW1iZXIge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlICRuOlxuICAgICAgcmV0dXJuICRMRjtcbiAgICBjYXNlICRmOlxuICAgICAgcmV0dXJuICRGRjtcbiAgICBjYXNlICRyOlxuICAgICAgcmV0dXJuICRDUjtcbiAgICBjYXNlICR0OlxuICAgICAgcmV0dXJuICRUQUI7XG4gICAgY2FzZSAkdjpcbiAgICAgIHJldHVybiAkVlRBQjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNvZGU7XG4gIH1cbn1cblxudmFyIE9QRVJBVE9SUyA9IFNldFdyYXBwZXIuY3JlYXRlRnJvbUxpc3QoW1xuICAnKycsXG4gICctJyxcbiAgJyonLFxuICAnLycsXG4gICclJyxcbiAgJ14nLFxuICAnPScsXG4gICc9PScsXG4gICchPScsXG4gICc9PT0nLFxuICAnIT09JyxcbiAgJzwnLFxuICAnPicsXG4gICc8PScsXG4gICc+PScsXG4gICcmJicsXG4gICd8fCcsXG4gICcmJyxcbiAgJ3wnLFxuICAnIScsXG4gICc/JyxcbiAgJyMnLFxuICAnPy4nXG5dKTtcblxuXG52YXIgS0VZV09SRFMgPVxuICAgIFNldFdyYXBwZXIuY3JlYXRlRnJvbUxpc3QoWyd2YXInLCAnbGV0JywgJ251bGwnLCAndW5kZWZpbmVkJywgJ3RydWUnLCAnZmFsc2UnLCAnaWYnLCAnZWxzZSddKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nvar platform_directives_and_pipes_1 = require('angular2/src/core/platform_directives_and_pipes');\r\nexports.PLATFORM_DIRECTIVES = platform_directives_and_pipes_1.PLATFORM_DIRECTIVES;\r\nexports.PLATFORM_PIPES = platform_directives_and_pipes_1.PLATFORM_PIPES;\r\n__export(require('angular2/src/compiler/template_ast'));\r\nvar template_parser_1 = require('angular2/src/compiler/template_parser');\r\nexports.TEMPLATE_TRANSFORMS = template_parser_1.TEMPLATE_TRANSFORMS;\r\nvar config_1 = require('./config');\r\nexports.CompilerConfig = config_1.CompilerConfig;\r\nexports.RenderTypes = config_1.RenderTypes;\r\n__export(require('./compile_metadata'));\r\n__export(require('./offline_compiler'));\r\nvar runtime_compiler_1 = require('./runtime_compiler');\r\nexports.RuntimeCompiler = runtime_compiler_1.RuntimeCompiler;\r\n__export(require('angular2/src/compiler/url_resolver'));\r\n__export(require('angular2/src/compiler/xhr'));\r\nvar view_resolver_1 = require('./view_resolver');\r\nexports.ViewResolver = view_resolver_1.ViewResolver;\r\nvar directive_resolver_1 = require('./directive_resolver');\r\nexports.DirectiveResolver = directive_resolver_1.DirectiveResolver;\r\nvar pipe_resolver_1 = require('./pipe_resolver');\r\nexports.PipeResolver = pipe_resolver_1.PipeResolver;\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar template_parser_2 = require('angular2/src/compiler/template_parser');\r\nvar html_parser_1 = require('angular2/src/compiler/html_parser');\r\nvar directive_normalizer_1 = require('angular2/src/compiler/directive_normalizer');\r\nvar runtime_metadata_1 = require('angular2/src/compiler/runtime_metadata');\r\nvar style_compiler_1 = require('angular2/src/compiler/style_compiler');\r\nvar view_compiler_1 = require('angular2/src/compiler/view_compiler/view_compiler');\r\nvar config_2 = require('./config');\r\nvar component_resolver_1 = require('angular2/src/core/linker/component_resolver');\r\nvar runtime_compiler_2 = require('angular2/src/compiler/runtime_compiler');\r\nvar element_schema_registry_1 = require('angular2/src/compiler/schema/element_schema_registry');\r\nvar dom_element_schema_registry_1 = require('angular2/src/compiler/schema/dom_element_schema_registry');\r\nvar url_resolver_2 = require('angular2/src/compiler/url_resolver');\r\nvar parser_1 = require('./expression_parser/parser');\r\nvar lexer_1 = require('./expression_parser/lexer');\r\nvar view_resolver_2 = require('./view_resolver');\r\nvar directive_resolver_2 = require('./directive_resolver');\r\nvar pipe_resolver_2 = require('./pipe_resolver');\r\nfunction _createCompilerConfig() {\r\n return new config_2.CompilerConfig(lang_1.assertionsEnabled(), false, true);\r\n}\r\n/**\r\n * A set of providers that provide `RuntimeCompiler` and its dependencies to use for\r\n * template compilation.\r\n */\r\nexports.COMPILER_PROVIDERS = lang_1.CONST_EXPR([\r\n lexer_1.Lexer,\r\n parser_1.Parser,\r\n html_parser_1.HtmlParser,\r\n template_parser_2.TemplateParser,\r\n directive_normalizer_1.DirectiveNormalizer,\r\n runtime_metadata_1.RuntimeMetadataResolver,\r\n url_resolver_2.DEFAULT_PACKAGE_URL_PROVIDER,\r\n style_compiler_1.StyleCompiler,\r\n view_compiler_1.ViewCompiler,\r\n new di_1.Provider(config_2.CompilerConfig, { useFactory: _createCompilerConfig, deps: [] }),\r\n runtime_compiler_2.RuntimeCompiler,\r\n new di_1.Provider(component_resolver_1.ComponentResolver, { useExisting: runtime_compiler_2.RuntimeCompiler }),\r\n dom_element_schema_registry_1.DomElementSchemaRegistry,\r\n new di_1.Provider(element_schema_registry_1.ElementSchemaRegistry, { useExisting: dom_element_schema_registry_1.DomElementSchemaRegistry }),\r\n url_resolver_2.UrlResolver,\r\n view_resolver_2.ViewResolver,\r\n directive_resolver_2.DirectiveResolver,\r\n pipe_resolver_2.PipeResolver\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tcGlsZXIvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDhDQUFrRCxpREFBaUQsQ0FBQztBQUE1RixrRkFBbUI7QUFBRSx3RUFBdUU7QUFDcEcsaUJBQWMsb0NBQW9DLENBQUMsRUFBQTtBQUNuRCxnQ0FBa0MsdUNBQXVDLENBQUM7QUFBbEUsb0VBQWtFO0FBQzFFLHVCQUEwQyxVQUFVLENBQUM7QUFBN0MsaURBQWM7QUFBRSwyQ0FBNkI7QUFDckQsaUJBQWMsb0JBQW9CLENBQUMsRUFBQTtBQUNuQyxpQkFBYyxvQkFBb0IsQ0FBQyxFQUFBO0FBQ25DLGlDQUE4QixvQkFBb0IsQ0FBQztBQUEzQyw2REFBMkM7QUFDbkQsaUJBQWMsb0NBQW9DLENBQUMsRUFBQTtBQUNuRCxpQkFBYywyQkFBMkIsQ0FBQyxFQUFBO0FBRTFDLDhCQUEyQixpQkFBaUIsQ0FBQztBQUFyQyxvREFBcUM7QUFDN0MsbUNBQWdDLHNCQUFzQixDQUFDO0FBQS9DLG1FQUErQztBQUN2RCw4QkFBMkIsaUJBQWlCLENBQUM7QUFBckMsb0RBQXFDO0FBRTdDLHFCQUFrRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzdFLG1CQUFnQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3ZELGdDQUE2Qix1Q0FBdUMsQ0FBQyxDQUFBO0FBQ3JFLDRCQUF5QixtQ0FBbUMsQ0FBQyxDQUFBO0FBQzdELHFDQUFrQyw0Q0FBNEMsQ0FBQyxDQUFBO0FBQy9FLGlDQUFzQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBQy9FLCtCQUE0QixzQ0FBc0MsQ0FBQyxDQUFBO0FBQ25FLDhCQUEyQixtREFBbUQsQ0FBQyxDQUFBO0FBQy9FLHVCQUE2QixVQUFVLENBQUMsQ0FBQTtBQUN4QyxtQ0FBZ0MsNkNBQTZDLENBQUMsQ0FBQTtBQUM5RSxpQ0FBOEIsd0NBQXdDLENBQUMsQ0FBQTtBQUN2RSx3Q0FBb0Msc0RBQXNELENBQUMsQ0FBQTtBQUMzRiw0Q0FBdUMsMERBQTBELENBQUMsQ0FBQTtBQUNsRyw2QkFBd0Qsb0NBQW9DLENBQUMsQ0FBQTtBQUM3Rix1QkFBcUIsNEJBQTRCLENBQUMsQ0FBQTtBQUNsRCxzQkFBb0IsMkJBQTJCLENBQUMsQ0FBQTtBQUNoRCw4QkFBMkIsaUJBQWlCLENBQUMsQ0FBQTtBQUM3QyxtQ0FBZ0Msc0JBQXNCLENBQUMsQ0FBQTtBQUN2RCw4QkFBMkIsaUJBQWlCLENBQUMsQ0FBQTtBQUU3QztJQUNFLE1BQU0sQ0FBQyxJQUFJLHVCQUFjLENBQUMsd0JBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7R0FHRztBQUNVLDBCQUFrQixHQUFtQyxpQkFBVSxDQUFDO0lBQzNFLGFBQUs7SUFDTCxlQUFNO0lBQ04sd0JBQVU7SUFDVixnQ0FBYztJQUNkLDBDQUFtQjtJQUNuQiwwQ0FBdUI7SUFDdkIsMkNBQTRCO0lBQzVCLDhCQUFhO0lBQ2IsNEJBQVk7SUFDWixJQUFJLGFBQVEsQ0FBQyx1QkFBYyxFQUFFLEVBQUMsVUFBVSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUMzRSxrQ0FBZTtJQUNmLElBQUksYUFBUSxDQUFDLHNDQUFpQixFQUFFLEVBQUMsV0FBVyxFQUFFLGtDQUFlLEVBQUMsQ0FBQztJQUMvRCxzREFBd0I7SUFDeEIsSUFBSSxhQUFRLENBQUMsK0NBQXFCLEVBQUUsRUFBQyxXQUFXLEVBQUUsc0RBQXdCLEVBQUMsQ0FBQztJQUM1RSwwQkFBVztJQUNYLDRCQUFZO0lBQ1osc0NBQWlCO0lBQ2pCLDRCQUFZO0NBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtQTEFURk9STV9ESVJFQ1RJVkVTLCBQTEFURk9STV9QSVBFU30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcGxhdGZvcm1fZGlyZWN0aXZlc19hbmRfcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX2FzdCc7XG5leHBvcnQge1RFTVBMQVRFX1RSQU5TRk9STVN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci90ZW1wbGF0ZV9wYXJzZXInO1xuZXhwb3J0IHtDb21waWxlckNvbmZpZywgUmVuZGVyVHlwZXN9IGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGlsZV9tZXRhZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL29mZmxpbmVfY29tcGlsZXInO1xuZXhwb3J0IHtSdW50aW1lQ29tcGlsZXJ9IGZyb20gJy4vcnVudGltZV9jb21waWxlcic7XG5leHBvcnQgKiBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvdXJsX3Jlc29sdmVyJztcbmV4cG9ydCAqIGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci94aHInO1xuXG5leHBvcnQge1ZpZXdSZXNvbHZlcn0gZnJvbSAnLi92aWV3X3Jlc29sdmVyJztcbmV4cG9ydCB7RGlyZWN0aXZlUmVzb2x2ZXJ9IGZyb20gJy4vZGlyZWN0aXZlX3Jlc29sdmVyJztcbmV4cG9ydCB7UGlwZVJlc29sdmVyfSBmcm9tICcuL3BpcGVfcmVzb2x2ZXInO1xuXG5pbXBvcnQge2Fzc2VydGlvbnNFbmFibGVkLCBUeXBlLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtwcm92aWRlLCBQcm92aWRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtUZW1wbGF0ZVBhcnNlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX3BhcnNlcic7XG5pbXBvcnQge0h0bWxQYXJzZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9odG1sX3BhcnNlcic7XG5pbXBvcnQge0RpcmVjdGl2ZU5vcm1hbGl6ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9kaXJlY3RpdmVfbm9ybWFsaXplcic7XG5pbXBvcnQge1J1bnRpbWVNZXRhZGF0YVJlc29sdmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvcnVudGltZV9tZXRhZGF0YSc7XG5pbXBvcnQge1N0eWxlQ29tcGlsZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9zdHlsZV9jb21waWxlcic7XG5pbXBvcnQge1ZpZXdDb21waWxlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3ZpZXdfY29tcGlsZXIvdmlld19jb21waWxlcic7XG5pbXBvcnQge0NvbXBpbGVyQ29uZmlnfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge0NvbXBvbmVudFJlc29sdmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvY29tcG9uZW50X3Jlc29sdmVyJztcbmltcG9ydCB7UnVudGltZUNvbXBpbGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvcnVudGltZV9jb21waWxlcic7XG5pbXBvcnQge0VsZW1lbnRTY2hlbWFSZWdpc3RyeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NjaGVtYS9lbGVtZW50X3NjaGVtYV9yZWdpc3RyeSc7XG5pbXBvcnQge0RvbUVsZW1lbnRTY2hlbWFSZWdpc3RyeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NjaGVtYS9kb21fZWxlbWVudF9zY2hlbWFfcmVnaXN0cnknO1xuaW1wb3J0IHtVcmxSZXNvbHZlciwgREVGQVVMVF9QQUNLQUdFX1VSTF9QUk9WSURFUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3VybF9yZXNvbHZlcic7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSAnLi9leHByZXNzaW9uX3BhcnNlci9wYXJzZXInO1xuaW1wb3J0IHtMZXhlcn0gZnJvbSAnLi9leHByZXNzaW9uX3BhcnNlci9sZXhlcic7XG5pbXBvcnQge1ZpZXdSZXNvbHZlcn0gZnJvbSAnLi92aWV3X3Jlc29sdmVyJztcbmltcG9ydCB7RGlyZWN0aXZlUmVzb2x2ZXJ9IGZyb20gJy4vZGlyZWN0aXZlX3Jlc29sdmVyJztcbmltcG9ydCB7UGlwZVJlc29sdmVyfSBmcm9tICcuL3BpcGVfcmVzb2x2ZXInO1xuXG5mdW5jdGlvbiBfY3JlYXRlQ29tcGlsZXJDb25maWcoKSB7XG4gIHJldHVybiBuZXcgQ29tcGlsZXJDb25maWcoYXNzZXJ0aW9uc0VuYWJsZWQoKSwgZmFsc2UsIHRydWUpO1xufVxuXG4vKipcbiAqIEEgc2V0IG9mIHByb3ZpZGVycyB0aGF0IHByb3ZpZGUgYFJ1bnRpbWVDb21waWxlcmAgYW5kIGl0cyBkZXBlbmRlbmNpZXMgdG8gdXNlIGZvclxuICogdGVtcGxhdGUgY29tcGlsYXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QSUxFUl9QUk9WSURFUlM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPiA9IENPTlNUX0VYUFIoW1xuICBMZXhlcixcbiAgUGFyc2VyLFxuICBIdG1sUGFyc2VyLFxuICBUZW1wbGF0ZVBhcnNlcixcbiAgRGlyZWN0aXZlTm9ybWFsaXplcixcbiAgUnVudGltZU1ldGFkYXRhUmVzb2x2ZXIsXG4gIERFRkFVTFRfUEFDS0FHRV9VUkxfUFJPVklERVIsXG4gIFN0eWxlQ29tcGlsZXIsXG4gIFZpZXdDb21waWxlcixcbiAgbmV3IFByb3ZpZGVyKENvbXBpbGVyQ29uZmlnLCB7dXNlRmFjdG9yeTogX2NyZWF0ZUNvbXBpbGVyQ29uZmlnLCBkZXBzOiBbXX0pLFxuICBSdW50aW1lQ29tcGlsZXIsXG4gIG5ldyBQcm92aWRlcihDb21wb25lbnRSZXNvbHZlciwge3VzZUV4aXN0aW5nOiBSdW50aW1lQ29tcGlsZXJ9KSxcbiAgRG9tRWxlbWVudFNjaGVtYVJlZ2lzdHJ5LFxuICBuZXcgUHJvdmlkZXIoRWxlbWVudFNjaGVtYVJlZ2lzdHJ5LCB7dXNlRXhpc3Rpbmc6IERvbUVsZW1lbnRTY2hlbWFSZWdpc3RyeX0pLFxuICBVcmxSZXNvbHZlcixcbiAgVmlld1Jlc29sdmVyLFxuICBEaXJlY3RpdmVSZXNvbHZlcixcbiAgUGlwZVJlc29sdmVyXG5dKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A segment of text within the template.\r\n */\r\nvar TextAst = (function () {\r\n function TextAst(value, ngContentIndex, sourceSpan) {\r\n this.value = value;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\r\n return TextAst;\r\n}());\r\nexports.TextAst = TextAst;\r\n/**\r\n * A bound expression within the text of a template.\r\n */\r\nvar BoundTextAst = (function () {\r\n function BoundTextAst(value, ngContentIndex, sourceSpan) {\r\n this.value = value;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundTextAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitBoundText(this, context);\r\n };\r\n return BoundTextAst;\r\n}());\r\nexports.BoundTextAst = BoundTextAst;\r\n/**\r\n * A plain attribute on an element.\r\n */\r\nvar AttrAst = (function () {\r\n function AttrAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };\r\n return AttrAst;\r\n}());\r\nexports.AttrAst = AttrAst;\r\n/**\r\n * A binding for an element property (e.g. `[property]=\"expression\"`).\r\n */\r\nvar BoundElementPropertyAst = (function () {\r\n function BoundElementPropertyAst(name, type, value, unit, sourceSpan) {\r\n this.name = name;\r\n this.type = type;\r\n this.value = value;\r\n this.unit = unit;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundElementPropertyAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitElementProperty(this, context);\r\n };\r\n return BoundElementPropertyAst;\r\n}());\r\nexports.BoundElementPropertyAst = BoundElementPropertyAst;\r\n/**\r\n * A binding for an element event (e.g. `(event)=\"handler()\"`).\r\n */\r\nvar BoundEventAst = (function () {\r\n function BoundEventAst(name, target, handler, sourceSpan) {\r\n this.name = name;\r\n this.target = target;\r\n this.handler = handler;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundEventAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitEvent(this, context);\r\n };\r\n Object.defineProperty(BoundEventAst.prototype, \"fullName\", {\r\n get: function () {\r\n if (lang_1.isPresent(this.target)) {\r\n return this.target + \":\" + this.name;\r\n }\r\n else {\r\n return this.name;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BoundEventAst;\r\n}());\r\nexports.BoundEventAst = BoundEventAst;\r\n/**\r\n * A reference declaration on an element (e.g. `let someName=\"expression\"`).\r\n */\r\nvar ReferenceAst = (function () {\r\n function ReferenceAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n ReferenceAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitReference(this, context);\r\n };\r\n return ReferenceAst;\r\n}());\r\nexports.ReferenceAst = ReferenceAst;\r\n/**\r\n * A variable declaration on a <template> (e.g. `var-someName=\"someLocalName\"`).\r\n */\r\nvar VariableAst = (function () {\r\n function VariableAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n VariableAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitVariable(this, context);\r\n };\r\n return VariableAst;\r\n}());\r\nexports.VariableAst = VariableAst;\r\n/**\r\n * An element declaration in a template.\r\n */\r\nvar ElementAst = (function () {\r\n function ElementAst(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, children, ngContentIndex, sourceSpan) {\r\n this.name = name;\r\n this.attrs = attrs;\r\n this.inputs = inputs;\r\n this.outputs = outputs;\r\n this.references = references;\r\n this.directives = directives;\r\n this.providers = providers;\r\n this.hasViewContainer = hasViewContainer;\r\n this.children = children;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n ElementAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitElement(this, context);\r\n };\r\n /**\r\n * Get the component associated with this element, if any.\r\n */\r\n ElementAst.prototype.getComponent = function () {\r\n for (var i = 0; i < this.directives.length; i++) {\r\n var dirAst = this.directives[i];\r\n if (dirAst.directive.isComponent) {\r\n return dirAst.directive;\r\n }\r\n }\r\n return null;\r\n };\r\n return ElementAst;\r\n}());\r\nexports.ElementAst = ElementAst;\r\n/**\r\n * A `<template>` element included in an Angular template.\r\n */\r\nvar EmbeddedTemplateAst = (function () {\r\n function EmbeddedTemplateAst(attrs, outputs, references, variables, directives, providers, hasViewContainer, children, ngContentIndex, sourceSpan) {\r\n this.attrs = attrs;\r\n this.outputs = outputs;\r\n this.references = references;\r\n this.variables = variables;\r\n this.directives = directives;\r\n this.providers = providers;\r\n this.hasViewContainer = hasViewContainer;\r\n this.children = children;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n EmbeddedTemplateAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitEmbeddedTemplate(this, context);\r\n };\r\n return EmbeddedTemplateAst;\r\n}());\r\nexports.EmbeddedTemplateAst = EmbeddedTemplateAst;\r\n/**\r\n * A directive property with a bound value (e.g. `*ngIf=\"condition\").\r\n */\r\nvar BoundDirectivePropertyAst = (function () {\r\n function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) {\r\n this.directiveName = directiveName;\r\n this.templateName = templateName;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundDirectivePropertyAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitDirectiveProperty(this, context);\r\n };\r\n return BoundDirectivePropertyAst;\r\n}());\r\nexports.BoundDirectivePropertyAst = BoundDirectivePropertyAst;\r\n/**\r\n * A directive declared on an element.\r\n */\r\nvar DirectiveAst = (function () {\r\n function DirectiveAst(directive, inputs, hostProperties, hostEvents, sourceSpan) {\r\n this.directive = directive;\r\n this.inputs = inputs;\r\n this.hostProperties = hostProperties;\r\n this.hostEvents = hostEvents;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n DirectiveAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitDirective(this, context);\r\n };\r\n return DirectiveAst;\r\n}());\r\nexports.DirectiveAst = DirectiveAst;\r\n/**\r\n * A provider declared on an element\r\n */\r\nvar ProviderAst = (function () {\r\n function ProviderAst(token, multiProvider, eager, providers, providerType, sourceSpan) {\r\n this.token = token;\r\n this.multiProvider = multiProvider;\r\n this.eager = eager;\r\n this.providers = providers;\r\n this.providerType = providerType;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n ProviderAst.prototype.visit = function (visitor, context) {\r\n // No visit method in the visitor for now...\r\n return null;\r\n };\r\n return ProviderAst;\r\n}());\r\nexports.ProviderAst = ProviderAst;\r\n(function (ProviderAstType) {\r\n ProviderAstType[ProviderAstType[\"PublicService\"] = 0] = \"PublicService\";\r\n ProviderAstType[ProviderAstType[\"PrivateService\"] = 1] = \"PrivateService\";\r\n ProviderAstType[ProviderAstType[\"Component\"] = 2] = \"Component\";\r\n ProviderAstType[ProviderAstType[\"Directive\"] = 3] = \"Directive\";\r\n ProviderAstType[ProviderAstType[\"Builtin\"] = 4] = \"Builtin\";\r\n})(exports.ProviderAstType || (exports.ProviderAstType = {}));\r\nvar ProviderAstType = exports.ProviderAstType;\r\n/**\r\n * Position where content is to be projected (instance of `<ng-content>` in a template).\r\n */\r\nvar NgContentAst = (function () {\r\n function NgContentAst(index, ngContentIndex, sourceSpan) {\r\n this.index = index;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n NgContentAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitNgContent(this, context);\r\n };\r\n return NgContentAst;\r\n}());\r\nexports.NgContentAst = NgContentAst;\r\n/**\r\n * Enumeration of types of property bindings.\r\n */\r\n(function (PropertyBindingType) {\r\n /**\r\n * A normal binding to a property (e.g. `[property]=\"expression\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Property\"] = 0] = \"Property\";\r\n /**\r\n * A binding to an element attribute (e.g. `[attr.name]=\"expression\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Attribute\"] = 1] = \"Attribute\";\r\n /**\r\n * A binding to a CSS class (e.g. `[class.name]=\"condition\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Class\"] = 2] = \"Class\";\r\n /**\r\n * A binding to a style rule (e.g. `[style.rule]=\"expression\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Style\"] = 3] = \"Style\";\r\n})(exports.PropertyBindingType || (exports.PropertyBindingType = {}));\r\nvar PropertyBindingType = exports.PropertyBindingType;\r\n/**\r\n * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}.\r\n */\r\nfunction templateVisitAll(visitor, asts, context) {\r\n if (context === void 0) { context = null; }\r\n var result = [];\r\n asts.forEach(function (ast) {\r\n var astResult = ast.visit(visitor, context);\r\n if (lang_1.isPresent(astResult)) {\r\n result.push(astResult);\r\n }\r\n });\r\n return result;\r\n}\r\nexports.templateVisitAll = templateVisitAll;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EscUJBQXdCLDBCQUEwQixDQUFDLENBQUE7QUF5Qm5EOztHQUVHO0FBQ0g7SUFDRSxpQkFBbUIsS0FBYSxFQUFTLGNBQXNCLEVBQzVDLFVBQTJCO1FBRDNCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUM1QyxlQUFVLEdBQVYsVUFBVSxDQUFpQjtJQUFHLENBQUM7SUFDbEQsdUJBQUssR0FBTCxVQUFNLE9BQTJCLEVBQUUsT0FBWSxJQUFTLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsY0FBQztBQUFELENBQUMsQUFKRCxJQUlDO0FBSlksZUFBTyxVQUluQixDQUFBO0FBRUQ7O0dBRUc7QUFDSDtJQUNFLHNCQUFtQixLQUFVLEVBQVMsY0FBc0IsRUFDekMsVUFBMkI7UUFEM0IsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQWlCO0lBQUcsQ0FBQztJQUNsRCw0QkFBSyxHQUFMLFVBQU0sT0FBMkIsRUFBRSxPQUFZO1FBQzdDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBTkQsSUFNQztBQU5ZLG9CQUFZLGVBTXhCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQ0UsaUJBQW1CLElBQVksRUFBUyxLQUFhLEVBQVMsVUFBMkI7UUFBdEUsU0FBSSxHQUFKLElBQUksQ0FB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UyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQVZlLHdCQUFnQixtQkFVL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QVNUfSBmcm9tICcuL2V4cHJlc3Npb25fcGFyc2VyL2FzdCc7XG5pbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7XG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcGlsZVRva2VuTWV0YWRhdGEsXG4gIENvbXBpbGVQcm92aWRlck1ldGFkYXRhLFxuICBDb21waWxlVG9rZW5NYXAsXG4gIENvbXBpbGVRdWVyeU1ldGFkYXRhXG59IGZyb20gJy4vY29tcGlsZV9tZXRhZGF0YSc7XG5pbXBvcnQge1BhcnNlU291cmNlU3Bhbn0gZnJvbSAnLi9wYXJzZV91dGlsJztcblxuLyoqXG4gKiBBbiBBYnN0cmFjdCBTeW50YXggVHJlZSBub2RlIHJlcHJlc2VudGluZyBwYXJ0IG9mIGEgcGFyc2VkIEFuZ3VsYXIgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVBc3Qge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBzcGFuIGZyb20gd2hpY2ggdGhpcyBub2RlIHdhcyBwYXJzZWQuXG4gICAqL1xuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG5cbiAgLyoqXG4gICAqIFZpc2l0IHRoaXMgbm9kZSBhbmQgcG9zc2libHkgdHJhbnNmb3JtIGl0LlxuICAgKi9cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnk7XG59XG5cbi8qKlxuICogQSBzZWdtZW50IG9mIHRleHQgd2l0aGluIHRoZSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRleHRBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogc3RyaW5nLCBwdWJsaWMgbmdDb250ZW50SW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdFRleHQodGhpcywgY29udGV4dCk7IH1cbn1cblxuLyoqXG4gKiBBIGJvdW5kIGV4cHJlc3Npb24gd2l0aGluIHRoZSB0ZXh0IG9mIGEgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBCb3VuZFRleHRBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogQVNULCBwdWJsaWMgbmdDb250ZW50SW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Qm91bmRUZXh0KHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cbi8qKlxuICogQSBwbGFpbiBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF0dHJBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogc3RyaW5nLCBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuICB2aXNpdCh2aXNpdG9yOiBUZW1wbGF0ZUFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0QXR0cih0aGlzLCBjb250ZXh0KTsgfVxufVxuXG4vKipcbiAqIEEgYmluZGluZyBmb3IgYW4gZWxlbWVudCBwcm9wZXJ0eSAoZS5nLiBgW3Byb3BlcnR5XT1cImV4cHJlc3Npb25cImApLlxuICovXG5leHBvcnQgY2xhc3MgQm91bmRFbGVtZW50UHJvcGVydHlBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB0eXBlOiBQcm9wZXJ0eUJpbmRpbmdUeXBlLCBwdWJsaWMgdmFsdWU6IEFTVCxcbiAgICAgICAgICAgICAgcHVibGljIHVuaXQ6IHN0cmluZywgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RWxlbWVudFByb3BlcnR5KHRoaXMsIGNvbnRleHQpO1xuICB9XG59XG5cbi8qKlxuICogQSBiaW5kaW5nIGZvciBhbiBlbGVtZW50IGV2ZW50IChlLmcuIGAoZXZlbnQpPVwiaGFuZGxlcigpXCJgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEJvdW5kRXZlbnRBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB0YXJnZXQ6IHN0cmluZywgcHVibGljIGhhbmRsZXI6IEFTVCxcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXZlbnQodGhpcywgY29udGV4dCk7XG4gIH1cbiAgZ2V0IGZ1bGxOYW1lKCkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy50YXJnZXQpKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy50YXJnZXR9OiR7dGhpcy5uYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgZGVjbGFyYXRpb24gb24gYW4gZWxlbWVudCAoZS5nLiBgbGV0IHNvbWVOYW1lPVwiZXhwcmVzc2lvblwiYCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogQ29tcGlsZVRva2VuTWV0YWRhdGEsXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFJlZmVyZW5jZSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgdmFyaWFibGUgZGVjbGFyYXRpb24gb24gYSA8dGVtcGxhdGU+IChlLmcuIGB2YXItc29tZU5hbWU9XCJzb21lTG9jYWxOYW1lXCJgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhcmlhYmxlQXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IHN0cmluZywgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmFyaWFibGUodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBlbGVtZW50IGRlY2xhcmF0aW9uIGluIGEgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbGVtZW50QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgYXR0cnM6IEF0dHJBc3RbXSxcbiAgICAgICAgICAgICAgcHVibGljIGlucHV0czogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSwgcHVibGljIG91dHB1dHM6IEJvdW5kRXZlbnRBc3RbXSxcbiAgICAgICAgICAgICAgcHVibGljIHJlZmVyZW5jZXM6IFJlZmVyZW5jZUFzdFtdLCBwdWJsaWMgZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm92aWRlcnM6IFByb3ZpZGVyQXN0W10sIHB1YmxpYyBoYXNWaWV3Q29udGFpbmVyOiBib29sZWFuLFxuICAgICAgICAgICAgICBwdWJsaWMgY2hpbGRyZW46IFRlbXBsYXRlQXN0W10sIHB1YmxpYyBuZ0NvbnRlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuXG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEVsZW1lbnQodGhpcywgY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudCwgaWYgYW55LlxuICAgKi9cbiAgZ2V0Q29tcG9uZW50KCk6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpcmVjdGl2ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkaXJBc3QgPSB0aGlzLmRpcmVjdGl2ZXNbaV07XG4gICAgICBpZiAoZGlyQXN0LmRpcmVjdGl2ZS5pc0NvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4gZGlyQXN0LmRpcmVjdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGA8dGVtcGxhdGU+YCBlbGVtZW50IGluY2x1ZGVkIGluIGFuIEFuZ3VsYXIgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbWJlZGRlZFRlbXBsYXRlQXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXR0cnM6IEF0dHJBc3RbXSwgcHVibGljIG91dHB1dHM6IEJvdW5kRXZlbnRBc3RbXSxcbiAgICAgICAgICAgICAgcHVibGljIHJlZmVyZW5jZXM6IFJlZmVyZW5jZUFzdFtdLCBwdWJsaWMgdmFyaWFibGVzOiBWYXJpYWJsZUFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10sIHB1YmxpYyBwcm92aWRlcnM6IFByb3ZpZGVyQXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBoYXNWaWV3Q29udGFpbmVyOiBib29sZWFuLCBwdWJsaWMgY2hpbGRyZW46IFRlbXBsYXRlQXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBuZ0NvbnRlbnRJbmRleDogbnVtYmVyLCBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuXG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEVtYmVkZGVkVGVtcGxhdGUodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSBwcm9wZXJ0eSB3aXRoIGEgYm91bmQgdmFsdWUgKGUuZy4gYCpuZ0lmPVwiY29uZGl0aW9uXCIpLlxuICovXG5leHBvcnQgY2xhc3MgQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCBpbXBsZW1lbnRzIFRlbXBsYXRlQXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGRpcmVjdGl2ZU5hbWU6IHN0cmluZywgcHVibGljIHRlbXBsYXRlTmFtZTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IEFTVCxcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGlyZWN0aXZlUHJvcGVydHkodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSBkZWNsYXJlZCBvbiBhbiBlbGVtZW50LlxuICovXG5leHBvcnQgY2xhc3MgRGlyZWN0aXZlQXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlyZWN0aXZlOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnB1dHM6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3RbXSxcbiAgICAgICAgICAgICAgcHVibGljIGhvc3RQcm9wZXJ0aWVzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdLCBwdWJsaWMgaG9zdEV2ZW50czogQm91bmRFdmVudEFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuICB2aXNpdCh2aXNpdG9yOiBUZW1wbGF0ZUFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREaXJlY3RpdmUodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHByb3ZpZGVyIGRlY2xhcmVkIG9uIGFuIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFByb3ZpZGVyQXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9rZW46IENvbXBpbGVUb2tlbk1ldGFkYXRhLCBwdWJsaWMgbXVsdGlQcm92aWRlcjogYm9vbGVhbixcbiAgICAgICAgICAgICAgcHVibGljIGVhZ2VyOiBib29sZWFuLCBwdWJsaWMgcHJvdmlkZXJzOiBDb21waWxlUHJvdmlkZXJNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICBwdWJsaWMgcHJvdmlkZXJUeXBlOiBQcm92aWRlckFzdFR5cGUsIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG5cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIC8vIE5vIHZpc2l0IG1ldGhvZCBpbiB0aGUgdmlzaXRvciBmb3Igbm93Li4uXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gUHJvdmlkZXJBc3RUeXBlIHtcbiAgUHVibGljU2VydmljZSxcbiAgUHJpdmF0ZVNlcnZpY2UsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBCdWlsdGluXG59XG5cbi8qKlxuICogUG9zaXRpb24gd2hlcmUgY29udGVudCBpcyB0byBiZSBwcm9qZWN0ZWQgKGluc3RhbmNlIG9mIGA8bmctY29udGVudD5gIGluIGEgdGVtcGxhdGUpLlxuICovXG5leHBvcnQgY2xhc3MgTmdDb250ZW50QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIG5nQ29udGVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdE5nQ29udGVudCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEVudW1lcmF0aW9uIG9mIHR5cGVzIG9mIHByb3BlcnR5IGJpbmRpbmdzLlxuICovXG5leHBvcnQgZW51bSBQcm9wZXJ0eUJpbmRpbmdUeXBlIHtcblxuICAvKipcbiAgICogQSBub3JtYWwgYmluZGluZyB0byBhIHByb3BlcnR5IChlLmcuIGBbcHJvcGVydHldPVwiZXhwcmVzc2lvblwiYCkuXG4gICAqL1xuICBQcm9wZXJ0eSxcblxuICAvKipcbiAgICogQSBiaW5kaW5nIHRvIGFuIGVsZW1lbnQgYXR0cmlidXRlIChlLmcuIGBbYXR0ci5uYW1lXT1cImV4cHJlc3Npb25cImApLlxuICAgKi9cbiAgQXR0cmlidXRlLFxuXG4gIC8qKlxuICAgKiBBIGJpbmRpbmcgdG8gYSBDU1MgY2xhc3MgKGUuZy4gYFtjbGFzcy5uYW1lXT1cImNvbmRpdGlvblwiYCkuXG4gICAqL1xuICBDbGFzcyxcblxuICAvKipcbiAgICogQSBiaW5kaW5nIHRvIGEgc3R5bGUgcnVsZSAoZS5nLiBgW3N0eWxlLnJ1bGVdPVwiZXhwcmVzc2lvblwiYCkuXG4gICAqL1xuICBTdHlsZVxufVxuXG4vKipcbiAqIEEgdmlzaXRvciBmb3Ige0BsaW5rIFRlbXBsYXRlQXN0fSB0cmVlcyB0aGF0IHdpbGwgcHJvY2VzcyBlYWNoIG5vZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVBc3RWaXNpdG9yIHtcbiAgdmlzaXROZ0NvbnRlbnQoYXN0OiBOZ0NvbnRlbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEVsZW1lbnQoYXN0OiBFbGVtZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0UmVmZXJlbmNlKGFzdDogUmVmZXJlbmNlQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0VmFyaWFibGUoYXN0OiBWYXJpYWJsZUFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEV2ZW50KGFzdDogQm91bmRFdmVudEFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEVsZW1lbnRQcm9wZXJ0eShhc3Q6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QXR0cihhc3Q6IEF0dHJBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRCb3VuZFRleHQoYXN0OiBCb3VuZFRleHRBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRUZXh0KGFzdDogVGV4dEFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdERpcmVjdGl2ZShhc3Q6IERpcmVjdGl2ZUFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdERpcmVjdGl2ZVByb3BlcnR5KGFzdDogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCwgY29udGV4dDogYW55KTogYW55O1xufVxuXG4vKipcbiAqIFZpc2l0IGV2ZXJ5IG5vZGUgaW4gYSBsaXN0IG9mIHtAbGluayBUZW1wbGF0ZUFzdH1zIHdpdGggdGhlIGdpdmVuIHtAbGluayBUZW1wbGF0ZUFzdFZpc2l0b3J9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVWaXNpdEFsbCh2aXNpdG9yOiBUZW1wbGF0ZUFzdFZpc2l0b3IsIGFzdHM6IFRlbXBsYXRlQXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55W10ge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGFzdHMuZm9yRWFjaChhc3QgPT4ge1xuICAgIHZhciBhc3RSZXN1bHQgPSBhc3QudmlzaXQodmlzaXRvciwgY29udGV4dCk7XG4gICAgaWYgKGlzUHJlc2VudChhc3RSZXN1bHQpKSB7XG4gICAgICByZXN1bHQucHVzaChhc3RSZXN1bHQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * @module\r\n * @description\r\n * Starting point to import all compiler APIs.\r\n */\r\nvar compiler_1 = require('angular2/src/compiler/compiler');\r\nexports.PLATFORM_DIRECTIVES = compiler_1.PLATFORM_DIRECTIVES;\r\nexports.PLATFORM_PIPES = compiler_1.PLATFORM_PIPES;\r\nexports.COMPILER_PROVIDERS = compiler_1.COMPILER_PROVIDERS;\r\nexports.TEMPLATE_TRANSFORMS = compiler_1.TEMPLATE_TRANSFORMS;\r\nexports.CompilerConfig = compiler_1.CompilerConfig;\r\nexports.RenderTypes = compiler_1.RenderTypes;\r\nexports.UrlResolver = compiler_1.UrlResolver;\r\nexports.DEFAULT_PACKAGE_URL_PROVIDER = compiler_1.DEFAULT_PACKAGE_URL_PROVIDER;\r\nexports.createOfflineCompileUrlResolver = compiler_1.createOfflineCompileUrlResolver;\r\nexports.XHR = compiler_1.XHR;\r\nexports.ViewResolver = compiler_1.ViewResolver;\r\nexports.DirectiveResolver = compiler_1.DirectiveResolver;\r\nexports.PipeResolver = compiler_1.PipeResolver;\r\nexports.SourceModule = compiler_1.SourceModule;\r\nexports.NormalizedComponentWithViewDirectives = compiler_1.NormalizedComponentWithViewDirectives;\r\nexports.OfflineCompiler = compiler_1.OfflineCompiler;\r\nexports.CompileMetadataWithIdentifier = compiler_1.CompileMetadataWithIdentifier;\r\nexports.CompileMetadataWithType = compiler_1.CompileMetadataWithType;\r\nexports.CompileIdentifierMetadata = compiler_1.CompileIdentifierMetadata;\r\nexports.CompileDiDependencyMetadata = compiler_1.CompileDiDependencyMetadata;\r\nexports.CompileProviderMetadata = compiler_1.CompileProviderMetadata;\r\nexports.CompileFactoryMetadata = compiler_1.CompileFactoryMetadata;\r\nexports.CompileTokenMetadata = compiler_1.CompileTokenMetadata;\r\nexports.CompileTypeMetadata = compiler_1.CompileTypeMetadata;\r\nexports.CompileQueryMetadata = compiler_1.CompileQueryMetadata;\r\nexports.CompileTemplateMetadata = compiler_1.CompileTemplateMetadata;\r\nexports.CompileDirectiveMetadata = compiler_1.CompileDirectiveMetadata;\r\nexports.CompilePipeMetadata = compiler_1.CompilePipeMetadata;\r\n__export(require('angular2/src/compiler/template_ast'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7R0FJRztBQUNILHlCQTZCTyxnQ0FBZ0MsQ0FBQztBQTVCdEMsNkRBQW1CO0FBQ25CLG1EQUFjO0FBQ2QsMkRBQWtCO0FBQ2xCLDZEQUFtQjtBQUNuQixtREFBYztBQUNkLDZDQUFXO0FBQ1gsNkNBQVc7QUFDWCwrRUFBNEI7QUFDNUIscUZBQStCO0FBQy9CLDZCQUFHO0FBQ0gsK0NBQVk7QUFDWix5REFBaUI7QUFDakIsK0NBQVk7QUFDWiwrQ0FBWTtBQUNaLGlHQUFxQztBQUNyQyxxREFBZTtBQUNmLGlGQUE2QjtBQUM3QixxRUFBdUI7QUFDdkIseUVBQXlCO0FBQ3pCLDZFQUEyQjtBQUMzQixxRUFBdUI7QUFDdkIsbUVBQXNCO0FBQ3RCLCtEQUFvQjtBQUNwQiw2REFBbUI7QUFDbkIsK0RBQW9CO0FBQ3BCLHFFQUF1QjtBQUN2Qix1RUFBd0I7QUFDeEIsNkRBQ3NDO0FBRXhDLGlCQUFjLG9DQUFvQyxDQUFDLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogU3RhcnRpbmcgcG9pbnQgdG8gaW1wb3J0IGFsbCBjb21waWxlciBBUElzLlxuICovXG5leHBvcnQge1xuICBQTEFURk9STV9ESVJFQ1RJVkVTLFxuICBQTEFURk9STV9QSVBFUyxcbiAgQ09NUElMRVJfUFJPVklERVJTLFxuICBURU1QTEFURV9UUkFOU0ZPUk1TLFxuICBDb21waWxlckNvbmZpZyxcbiAgUmVuZGVyVHlwZXMsXG4gIFVybFJlc29sdmVyLFxuICBERUZBVUxUX1BBQ0tBR0VfVVJMX1BST1ZJREVSLFxuICBjcmVhdGVPZmZsaW5lQ29tcGlsZVVybFJlc29sdmVyLFxuICBYSFIsXG4gIFZpZXdSZXNvbHZlcixcbiAgRGlyZWN0aXZlUmVzb2x2ZXIsXG4gIFBpcGVSZXNvbHZlcixcbiAgU291cmNlTW9kdWxlLFxuICBOb3JtYWxpemVkQ29tcG9uZW50V2l0aFZpZXdEaXJlY3RpdmVzLFxuICBPZmZsaW5lQ29tcGlsZXIsXG4gIENvbXBpbGVNZXRhZGF0YVdpdGhJZGVudGlmaWVyLFxuICBDb21waWxlTWV0YWRhdGFXaXRoVHlwZSxcbiAgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSxcbiAgQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhLFxuICBDb21waWxlUHJvdmlkZXJNZXRhZGF0YSxcbiAgQ29tcGlsZUZhY3RvcnlNZXRhZGF0YSxcbiAgQ29tcGlsZVRva2VuTWV0YWRhdGEsXG4gIENvbXBpbGVUeXBlTWV0YWRhdGEsXG4gIENvbXBpbGVRdWVyeU1ldGFkYXRhLFxuICBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSxcbiAgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICBDb21waWxlUGlwZU1ldGFkYXRhXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9jb21waWxlcic7XG5cbmV4cG9ydCAqIGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci90ZW1wbGF0ZV9hc3QnO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n// TODO: vsavkin rename it into TemplateLoader\r\n/**\r\n * An interface for retrieving documents by URL that the compiler uses\r\n * to load templates.\r\n */\r\nvar XHR = (function () {\r\n function XHR() {\r\n }\r\n XHR.prototype.get = function (url) { return null; };\r\n return XHR;\r\n}());\r\nexports.XHR = XHR;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3hoci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOENBQThDO0FBQzlDOzs7R0FHRztBQUNIO0lBQUE7SUFFQSxDQUFDO0lBREMsaUJBQUcsR0FBSCxVQUFJLEdBQVcsSUFBcUIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsVUFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksV0FBRyxNQUVmLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiB2c2F2a2luIHJlbmFtZSBpdCBpbnRvIFRlbXBsYXRlTG9hZGVyXG4vKipcbiAqIEFuIGludGVyZmFjZSBmb3IgcmV0cmlldmluZyBkb2N1bWVudHMgYnkgVVJMIHRoYXQgdGhlIGNvbXBpbGVyIHVzZXNcbiAqIHRvIGxvYWQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgY2xhc3MgWEhSIHtcbiAgZ2V0KHVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar XHRImpl = (function (_super) {\r\n __extends(XHRImpl, _super);\r\n function XHRImpl() {\r\n _super.apply(this, arguments);\r\n }\r\n XHRImpl.prototype.get = function (url) {\r\n var completer = promise_1.PromiseWrapper.completer();\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'text';\r\n xhr.onload = function () {\r\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\r\n // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)\r\n var response = lang_1.isPresent(xhr.response) ? xhr.response : xhr.responseText;\r\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\r\n var status = xhr.status === 1223 ? 204 : xhr.status;\r\n // fix status code when it is 0 (0 status is undocumented).\r\n // Occurs when accessing file resources or on Android 4.1 stock browser\r\n // while retrieving files from application cache.\r\n if (status === 0) {\r\n status = response ? 200 : 0;\r\n }\r\n if (200 <= status && status <= 300) {\r\n completer.resolve(response);\r\n }\r\n else {\r\n completer.reject(\"Failed to load \" + url, null);\r\n }\r\n };\r\n xhr.onerror = function () { completer.reject(\"Failed to load \" + url, null); };\r\n xhr.send();\r\n return completer.promise;\r\n };\r\n return XHRImpl;\r\n}(xhr_1.XHR));\r\nexports.XHRImpl = XHRImpl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyX2ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci94aHJfaW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3QkFBK0MsNkJBQTZCLENBQUMsQ0FBQTtBQUM3RSxxQkFBd0IsMEJBQTBCLENBQUMsQ0FBQTtBQUNuRCxvQkFBa0IsMkJBQTJCLENBQUMsQ0FBQTtBQUU5QztJQUE2QiwyQkFBRztJQUFoQztRQUE2Qiw4QkFBRztJQWtDaEMsQ0FBQztJQWpDQyxxQkFBRyxHQUFILFVBQUksR0FBVztRQUNiLElBQUksU0FBUyxHQUErQix3QkFBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZFLElBQUksR0FBRyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBRTFCLEdBQUcsQ0FBQyxNQUFNLEdBQUc7WUFDWCxtRkFBbUY7WUFDbkYsMEZBQTBGO1lBQzFGLElBQUksUUFBUSxHQUFHLGdCQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztZQUV6RSx5REFBeUQ7WUFDekQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFFcEQsMkRBQTJEO1lBQzNELHVFQUF1RTtZQUN2RSxpREFBaUQ7WUFDakQsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBRUQsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sU0FBUyxDQUFDLE1BQU0sQ0FBQyxvQkFBa0IsR0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixHQUFHLENBQUMsT0FBTyxHQUFHLGNBQWEsU0FBUyxDQUFDLE1BQU0sQ0FBQyxvQkFBa0IsR0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQWxDRCxDQUE2QixTQUFHLEdBa0MvQjtBQWxDWSxlQUFPLFVBa0NuQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9taXNlV3JhcHBlciwgUHJvbWlzZUNvbXBsZXRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9wcm9taXNlJztcbmltcG9ydCB7aXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtYSFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci94aHInO1xuXG5leHBvcnQgY2xhc3MgWEhSSW1wbCBleHRlbmRzIFhIUiB7XG4gIGdldCh1cmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdmFyIGNvbXBsZXRlcjogUHJvbWlzZUNvbXBsZXRlciA8IHN0cmluZyA+PSBQcm9taXNlV3JhcHBlci5jb21wbGV0ZXIoKTtcbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7XG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICd0ZXh0JztcblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIHJlc3BvbnNlVGV4dCBpcyB0aGUgb2xkLXNjaG9vbCB3YXkgb2YgcmV0cmlldmluZyByZXNwb25zZSAoc3VwcG9ydGVkIGJ5IElFOCAmIDkpXG4gICAgICAvLyByZXNwb25zZS9yZXNwb25zZVR5cGUgcHJvcGVydGllcyB3ZXJlIGludHJvZHVjZWQgaW4gWEhSIExldmVsMiBzcGVjIChzdXBwb3J0ZWQgYnkgSUUxMClcbiAgICAgIHZhciByZXNwb25zZSA9IGlzUHJlc2VudCh4aHIucmVzcG9uc2UpID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dDtcblxuICAgICAgLy8gbm9ybWFsaXplIElFOSBidWcgKGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzE0NTApXG4gICAgICB2YXIgc3RhdHVzID0geGhyLnN0YXR1cyA9PT0gMTIyMyA/IDIwNCA6IHhoci5zdGF0dXM7XG5cbiAgICAgIC8vIGZpeCBzdGF0dXMgY29kZSB3aGVuIGl0IGlzIDAgKDAgc3RhdHVzIGlzIHVuZG9jdW1lbnRlZCkuXG4gICAgICAvLyBPY2N1cnMgd2hlbiBhY2Nlc3NpbmcgZmlsZSByZXNvdXJjZXMgb3Igb24gQW5kcm9pZCA0LjEgc3RvY2sgYnJvd3NlclxuICAgICAgLy8gd2hpbGUgcmV0cmlldmluZyBmaWxlcyBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLlxuICAgICAgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICBzdGF0dXMgPSByZXNwb25zZSA/IDIwMCA6IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICgyMDAgPD0gc3RhdHVzICYmIHN0YXR1cyA8PSAzMDApIHtcbiAgICAgICAgY29tcGxldGVyLnJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGxldGVyLnJlamVjdChgRmFpbGVkIHRvIGxvYWQgJHt1cmx9YCwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGNvbXBsZXRlci5yZWplY3QoYEZhaWxlZCB0byBsb2FkICR7dXJsfWAsIG51bGwpOyB9O1xuXG4gICAgeGhyLnNlbmQoKTtcbiAgICByZXR1cm4gY29tcGxldGVyLnByb21pc2U7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar browser_common_1 = require('angular2/src/platform/browser_common');\r\nexports.BROWSER_PROVIDERS = browser_common_1.BROWSER_PROVIDERS;\r\nexports.CACHED_TEMPLATE_PROVIDER = browser_common_1.CACHED_TEMPLATE_PROVIDER;\r\nexports.ELEMENT_PROBE_PROVIDERS = browser_common_1.ELEMENT_PROBE_PROVIDERS;\r\nexports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = browser_common_1.ELEMENT_PROBE_PROVIDERS_PROD_MODE;\r\nexports.inspectNativeElement = browser_common_1.inspectNativeElement;\r\nexports.BrowserDomAdapter = browser_common_1.BrowserDomAdapter;\r\nexports.By = browser_common_1.By;\r\nexports.Title = browser_common_1.Title;\r\nexports.DOCUMENT = browser_common_1.DOCUMENT;\r\nexports.enableDebugTools = browser_common_1.enableDebugTools;\r\nexports.disableDebugTools = browser_common_1.disableDebugTools;\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar browser_common_2 = require('angular2/src/platform/browser_common');\r\nvar compiler_1 = require('angular2/compiler');\r\nvar core_1 = require('angular2/core');\r\nvar reflection_capabilities_1 = require('angular2/src/core/reflection/reflection_capabilities');\r\nvar xhr_impl_1 = require(\"angular2/src/platform/browser/xhr_impl\");\r\nvar compiler_2 = require('angular2/compiler');\r\nvar di_1 = require('angular2/src/core/di');\r\n/**\r\n * An array of providers that should be passed into `application()` when bootstrapping a component.\r\n */\r\nexports.BROWSER_APP_PROVIDERS = lang_1.CONST_EXPR([\r\n browser_common_2.BROWSER_APP_COMMON_PROVIDERS,\r\n compiler_1.COMPILER_PROVIDERS,\r\n new di_1.Provider(compiler_2.XHR, { useClass: xhr_impl_1.XHRImpl }),\r\n]);\r\nfunction browserPlatform() {\r\n if (lang_1.isBlank(core_1.getPlatform())) {\r\n core_1.createPlatform(core_1.ReflectiveInjector.resolveAndCreate(browser_common_2.BROWSER_PROVIDERS));\r\n }\r\n return core_1.assertPlatform(browser_common_2.BROWSER_PLATFORM_MARKER);\r\n}\r\nexports.browserPlatform = browserPlatform;\r\n/**\r\n * Bootstrapping for Angular applications.\r\n *\r\n * You instantiate an Angular application by explicitly specifying a component to use\r\n * as the root component for your application via the `bootstrap()` method.\r\n *\r\n * ## Simple Example\r\n *\r\n * Assuming this `index.html`:\r\n *\r\n * ```html\r\n * <html>\r\n * <!-- load Angular script tags here. -->\r\n * <body>\r\n * <my-app>loading...</my-app>\r\n * </body>\r\n * </html>\r\n * ```\r\n *\r\n * An application is bootstrapped inside an existing browser DOM, typically `index.html`.\r\n * Unlike Angular 1, Angular 2 does not compile/process providers in `index.html`. This is\r\n * mainly for security reasons, as well as architectural changes in Angular 2. This means\r\n * that `index.html` can safely be processed using server-side technologies such as\r\n * providers. Bindings can thus use double-curly `{{ syntax }}` without collision from\r\n * Angular 2 component double-curly `{{ syntax }}`.\r\n *\r\n * We can use this script code:\r\n *\r\n * {@example core/ts/bootstrap/bootstrap.ts region='bootstrap'}\r\n *\r\n * When the app developer invokes `bootstrap()` with the root component `MyApp` as its\r\n * argument, Angular performs the following tasks:\r\n *\r\n * 1. It uses the component's `selector` property to locate the DOM element which needs\r\n * to be upgraded into the angular component.\r\n * 2. It creates a new child injector (from the platform injector). Optionally, you can\r\n * also override the injector configuration for an app by invoking `bootstrap` with the\r\n * `componentInjectableBindings` argument.\r\n * 3. It creates a new `Zone` and connects it to the angular application's change detection\r\n * domain instance.\r\n * 4. It creates an emulated or shadow DOM on the selected component's host element and loads the\r\n * template into it.\r\n * 5. It instantiates the specified component.\r\n * 6. Finally, Angular performs change detection to apply the initial data providers for the\r\n * application.\r\n *\r\n *\r\n * ## Bootstrapping Multiple Applications\r\n *\r\n * When working within a browser window, there are many singleton resources: cookies, title,\r\n * location, and others. Angular services that represent these resources must likewise be\r\n * shared across all Angular applications that occupy the same browser window. For this\r\n * reason, Angular creates exactly one global platform object which stores all shared\r\n * services, and each angular application injector has the platform injector as its parent.\r\n *\r\n * Each application has its own private injector as well. When there are multiple\r\n * applications on a page, Angular treats each application injector's services as private\r\n * to that application.\r\n *\r\n * ## API\r\n *\r\n * - `appComponentType`: The root component which should act as the application. This is\r\n * a reference to a `Type` which is annotated with `@Component(...)`.\r\n * - `customProviders`: An additional set of providers that can be added to the\r\n * app injector to override default injection behavior.\r\n *\r\n * Returns a `Promise` of {@link ComponentRef}.\r\n */\r\nfunction bootstrap(appComponentType, customProviders) {\r\n core_1.reflector.reflectionCapabilities = new reflection_capabilities_1.ReflectionCapabilities();\r\n var appInjector = core_1.ReflectiveInjector.resolveAndCreate([exports.BROWSER_APP_PROVIDERS, lang_1.isPresent(customProviders) ? customProviders : []], browserPlatform().injector);\r\n return core_1.coreLoadAndBootstrap(appInjector, appComponentType);\r\n}\r\nexports.bootstrap = bootstrap;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3BsYXRmb3JtL2Jyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtCQVlPLHNDQUFzQyxDQUFDO0FBWDVDLCtEQUFpQjtBQUNqQiw2RUFBd0I7QUFDeEIsMkVBQXVCO0FBQ3ZCLCtGQUFpQztBQUNqQyxxRUFBb0I7QUFDcEIsK0RBQWlCO0FBQ2pCLGlDQUFFO0FBQ0YsdUNBQUs7QUFDTCw2Q0FBUTtBQUNSLDZEQUFnQjtBQUNoQiwrREFDNEM7QUFFOUMscUJBQW1ELDBCQUEwQixDQUFDLENBQUE7QUFDOUUsK0JBSU8sc0NBQXNDLENBQUMsQ0FBQTtBQUM5Qyx5QkFBaUMsbUJBQW1CLENBQUMsQ0FBQTtBQUNyRCxxQkFVTyxlQUFlLENBQUMsQ0FBQTtBQUN2Qix3Q0FBcUMsc0RBQXNELENBQUMsQ0FBQTtBQUM1Rix5QkFBc0Isd0NBQXdDLENBQUMsQ0FBQTtBQUMvRCx5QkFBa0IsbUJBQW1CLENBQUMsQ0FBQTtBQUN0QyxtQkFBdUIsc0JBQXNCLENBQUMsQ0FBQTtBQUU5Qzs7R0FFRztBQUNVLDZCQUFxQixHQUEyQyxpQkFBVSxDQUFDO0lBQ3RGLDZDQUE0QjtJQUM1Qiw2QkFBa0I7SUFDbEIsSUFBSSxhQUFRLENBQUMsY0FBRyxFQUFFLEVBQUMsUUFBUSxFQUFFLGtCQUFPLEVBQUMsQ0FBQztDQUN2QyxDQUFDLENBQUM7QUFFSDtJQUNFLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxrQkFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IscUJBQWMsQ0FBQyx5QkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBaUIsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELE1BQU0sQ0FBQyxxQkFBYyxDQUFDLHdDQUF1QixDQUFDLENBQUM7QUFDakQsQ0FBQztBQUxlLHVCQUFlLGtCQUs5QixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRUc7QUFDSCxtQkFDSSxnQkFBc0IsRUFDdEIsZUFBd0Q7SUFDMUQsZ0JBQVMsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLGdEQUFzQixFQUFFLENBQUM7SUFDaEUsSUFBSSxXQUFXLEdBQUcseUJBQWtCLENBQUMsZ0JBQWdCLENBQ2pELENBQUMsNkJBQXFCLEVBQUUsZ0JBQVMsQ0FBQyxlQUFlLENBQUMsR0FBRyxlQUFlLEdBQUcsRUFBRSxDQUFDLEVBQzFFLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQywyQkFBb0IsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBUmUsaUJBQVMsWUFReEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2FuZ3VsYXJfZW50cnlwb2ludCc7XG5leHBvcnQge1xuICBCUk9XU0VSX1BST1ZJREVSUyxcbiAgQ0FDSEVEX1RFTVBMQVRFX1BST1ZJREVSLFxuICBFTEVNRU5UX1BST0JFX1BST1ZJREVSUyxcbiAgRUxFTUVOVF9QUk9CRV9QUk9WSURFUlNfUFJPRF9NT0RFLFxuICBpbnNwZWN0TmF0aXZlRWxlbWVudCxcbiAgQnJvd3NlckRvbUFkYXB0ZXIsXG4gIEJ5LFxuICBUaXRsZSxcbiAgRE9DVU1FTlQsXG4gIGVuYWJsZURlYnVnVG9vbHMsXG4gIGRpc2FibGVEZWJ1Z1Rvb2xzXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9icm93c2VyX2NvbW1vbic7XG5cbmltcG9ydCB7VHlwZSwgaXNQcmVzZW50LCBpc0JsYW5rLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtcbiAgQlJPV1NFUl9QUk9WSURFUlMsXG4gIEJST1dTRVJfQVBQX0NPTU1PTl9QUk9WSURFUlMsXG4gIEJST1dTRVJfUExBVEZPUk1fTUFSS0VSXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9icm93c2VyX2NvbW1vbic7XG5pbXBvcnQge0NPTVBJTEVSX1BST1ZJREVSU30gZnJvbSAnYW5ndWxhcjIvY29tcGlsZXInO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBjb3JlTG9hZEFuZEJvb3RzdHJhcCxcbiAgcmVmbGVjdG9yLFxuICBSZWZsZWN0aXZlSW5qZWN0b3IsXG4gIFBsYXRmb3JtUmVmLFxuICBPcGFxdWVUb2tlbixcbiAgZ2V0UGxhdGZvcm0sXG4gIGNyZWF0ZVBsYXRmb3JtLFxuICBhc3NlcnRQbGF0Zm9ybVxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7UmVmbGVjdGlvbkNhcGFiaWxpdGllc30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uX2NhcGFiaWxpdGllcyc7XG5pbXBvcnQge1hIUkltcGx9IGZyb20gXCJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci94aHJfaW1wbFwiO1xuaW1wb3J0IHtYSFJ9IGZyb20gJ2FuZ3VsYXIyL2NvbXBpbGVyJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuLyoqXG4gKiBBbiBhcnJheSBvZiBwcm92aWRlcnMgdGhhdCBzaG91bGQgYmUgcGFzc2VkIGludG8gYGFwcGxpY2F0aW9uKClgIHdoZW4gYm9vdHN0cmFwcGluZyBhIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IEJST1dTRVJfQVBQX1BST1ZJREVSUzogQXJyYXk8YW55IC8qVHlwZSB8IFByb3ZpZGVyIHwgYW55W10qLz4gPSBDT05TVF9FWFBSKFtcbiAgQlJPV1NFUl9BUFBfQ09NTU9OX1BST1ZJREVSUyxcbiAgQ09NUElMRVJfUFJPVklERVJTLFxuICBuZXcgUHJvdmlkZXIoWEhSLCB7dXNlQ2xhc3M6IFhIUkltcGx9KSxcbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gYnJvd3NlclBsYXRmb3JtKCk6IFBsYXRmb3JtUmVmIHtcbiAgaWYgKGlzQmxhbmsoZ2V0UGxhdGZvcm0oKSkpIHtcbiAgICBjcmVhdGVQbGF0Zm9ybShSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShCUk9XU0VSX1BST1ZJREVSUykpO1xuICB9XG4gIHJldHVybiBhc3NlcnRQbGF0Zm9ybShCUk9XU0VSX1BMQVRGT1JNX01BUktFUik7XG59XG5cbi8qKlxuICogQm9vdHN0cmFwcGluZyBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnMuXG4gKlxuICogWW91IGluc3RhbnRpYXRlIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gYnkgZXhwbGljaXRseSBzcGVjaWZ5aW5nIGEgY29tcG9uZW50IHRvIHVzZVxuICogYXMgdGhlIHJvb3QgY29tcG9uZW50IGZvciB5b3VyIGFwcGxpY2F0aW9uIHZpYSB0aGUgYGJvb3RzdHJhcCgpYCBtZXRob2QuXG4gKlxuICogIyMgU2ltcGxlIEV4YW1wbGVcbiAqXG4gKiBBc3N1bWluZyB0aGlzIGBpbmRleC5odG1sYDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8aHRtbD5cbiAqICAgPCEtLSBsb2FkIEFuZ3VsYXIgc2NyaXB0IHRhZ3MgaGVyZS4gLS0+XG4gKiAgIDxib2R5PlxuICogICAgIDxteS1hcHA+bG9hZGluZy4uLjwvbXktYXBwPlxuICogICA8L2JvZHk+XG4gKiA8L2h0bWw+XG4gKiBgYGBcbiAqXG4gKiBBbiBhcHBsaWNhdGlvbiBpcyBib290c3RyYXBwZWQgaW5zaWRlIGFuIGV4aXN0aW5nIGJyb3dzZXIgRE9NLCB0eXBpY2FsbHkgYGluZGV4Lmh0bWxgLlxuICogVW5saWtlIEFuZ3VsYXIgMSwgQW5ndWxhciAyIGRvZXMgbm90IGNvbXBpbGUvcHJvY2VzcyBwcm92aWRlcnMgaW4gYGluZGV4Lmh0bWxgLiBUaGlzIGlzXG4gKiBtYWlubHkgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIGFzIHdlbGwgYXMgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzIGluIEFuZ3VsYXIgMi4gVGhpcyBtZWFuc1xuICogdGhhdCBgaW5kZXguaHRtbGAgY2FuIHNhZmVseSBiZSBwcm9jZXNzZWQgdXNpbmcgc2VydmVyLXNpZGUgdGVjaG5vbG9naWVzIHN1Y2ggYXNcbiAqIHByb3ZpZGVycy4gQmluZGluZ3MgY2FuIHRodXMgdXNlIGRvdWJsZS1jdXJseSBge3sgc3ludGF4IH19YCB3aXRob3V0IGNvbGxpc2lvbiBmcm9tXG4gKiBBbmd1bGFyIDIgY29tcG9uZW50IGRvdWJsZS1jdXJseSBge3sgc3ludGF4IH19YC5cbiAqXG4gKiBXZSBjYW4gdXNlIHRoaXMgc2NyaXB0IGNvZGU6XG4gKlxuICoge0BleGFtcGxlIGNvcmUvdHMvYm9vdHN0cmFwL2Jvb3RzdHJhcC50cyByZWdpb249J2Jvb3RzdHJhcCd9XG4gKlxuICogV2hlbiB0aGUgYXBwIGRldmVsb3BlciBpbnZva2VzIGBib290c3RyYXAoKWAgd2l0aCB0aGUgcm9vdCBjb21wb25lbnQgYE15QXBwYCBhcyBpdHNcbiAqIGFyZ3VtZW50LCBBbmd1bGFyIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdGFza3M6XG4gKlxuICogIDEuIEl0IHVzZXMgdGhlIGNvbXBvbmVudCdzIGBzZWxlY3RvcmAgcHJvcGVydHkgdG8gbG9jYXRlIHRoZSBET00gZWxlbWVudCB3aGljaCBuZWVkc1xuICogICAgIHRvIGJlIHVwZ3JhZGVkIGludG8gdGhlIGFuZ3VsYXIgY29tcG9uZW50LlxuICogIDIuIEl0IGNyZWF0ZXMgYSBuZXcgY2hpbGQgaW5qZWN0b3IgKGZyb20gdGhlIHBsYXRmb3JtIGluamVjdG9yKS4gT3B0aW9uYWxseSwgeW91IGNhblxuICogICAgIGFsc28gb3ZlcnJpZGUgdGhlIGluamVjdG9yIGNvbmZpZ3VyYXRpb24gZm9yIGFuIGFwcCBieSBpbnZva2luZyBgYm9vdHN0cmFwYCB3aXRoIHRoZVxuICogICAgIGBjb21wb25lbnRJbmplY3RhYmxlQmluZGluZ3NgIGFyZ3VtZW50LlxuICogIDMuIEl0IGNyZWF0ZXMgYSBuZXcgYFpvbmVgIGFuZCBjb25uZWN0cyBpdCB0byB0aGUgYW5ndWxhciBhcHBsaWNhdGlvbidzIGNoYW5nZSBkZXRlY3Rpb25cbiAqICAgICBkb21haW4gaW5zdGFuY2UuXG4gKiAgNC4gSXQgY3JlYXRlcyBhbiBlbXVsYXRlZCBvciBzaGFkb3cgRE9NIG9uIHRoZSBzZWxlY3RlZCBjb21wb25lbnQncyBob3N0IGVsZW1lbnQgYW5kIGxvYWRzIHRoZVxuICogICAgIHRlbXBsYXRlIGludG8gaXQuXG4gKiAgNS4gSXQgaW5zdGFudGlhdGVzIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50LlxuICogIDYuIEZpbmFsbHksIEFuZ3VsYXIgcGVyZm9ybXMgY2hhbmdlIGRldGVjdGlvbiB0byBhcHBseSB0aGUgaW5pdGlhbCBkYXRhIHByb3ZpZGVycyBmb3IgdGhlXG4gKiAgICAgYXBwbGljYXRpb24uXG4gKlxuICpcbiAqICMjIEJvb3RzdHJhcHBpbmcgTXVsdGlwbGUgQXBwbGljYXRpb25zXG4gKlxuICogV2hlbiB3b3JraW5nIHdpdGhpbiBhIGJyb3dzZXIgd2luZG93LCB0aGVyZSBhcmUgbWFueSBzaW5nbGV0b24gcmVzb3VyY2VzOiBjb29raWVzLCB0aXRsZSxcbiAqIGxvY2F0aW9uLCBhbmQgb3RoZXJzLiBBbmd1bGFyIHNlcnZpY2VzIHRoYXQgcmVwcmVzZW50IHRoZXNlIHJlc291cmNlcyBtdXN0IGxpa2V3aXNlIGJlXG4gKiBzaGFyZWQgYWNyb3NzIGFsbCBBbmd1bGFyIGFwcGxpY2F0aW9ucyB0aGF0IG9jY3VweSB0aGUgc2FtZSBicm93c2VyIHdpbmRvdy4gRm9yIHRoaXNcbiAqIHJlYXNvbiwgQW5ndWxhciBjcmVhdGVzIGV4YWN0bHkgb25lIGdsb2JhbCBwbGF0Zm9ybSBvYmplY3Qgd2hpY2ggc3RvcmVzIGFsbCBzaGFyZWRcbiAqIHNlcnZpY2VzLCBhbmQgZWFjaCBhbmd1bGFyIGFwcGxpY2F0aW9uIGluamVjdG9yIGhhcyB0aGUgcGxhdGZvcm0gaW5qZWN0b3IgYXMgaXRzIHBhcmVudC5cbiAqXG4gKiBFYWNoIGFwcGxpY2F0aW9uIGhhcyBpdHMgb3duIHByaXZhdGUgaW5qZWN0b3IgYXMgd2VsbC4gV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGVcbiAqIGFwcGxpY2F0aW9ucyBvbiBhIHBhZ2UsIEFuZ3VsYXIgdHJlYXRzIGVhY2ggYXBwbGljYXRpb24gaW5qZWN0b3IncyBzZXJ2aWNlcyBhcyBwcml2YXRlXG4gKiB0byB0aGF0IGFwcGxpY2F0aW9uLlxuICpcbiAqICMjIEFQSVxuICpcbiAqIC0gYGFwcENvbXBvbmVudFR5cGVgOiBUaGUgcm9vdCBjb21wb25lbnQgd2hpY2ggc2hvdWxkIGFjdCBhcyB0aGUgYXBwbGljYXRpb24uIFRoaXMgaXNcbiAqICAgYSByZWZlcmVuY2UgdG8gYSBgVHlwZWAgd2hpY2ggaXMgYW5ub3RhdGVkIHdpdGggYEBDb21wb25lbnQoLi4uKWAuXG4gKiAtIGBjdXN0b21Qcm92aWRlcnNgOiBBbiBhZGRpdGlvbmFsIHNldCBvZiBwcm92aWRlcnMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gdGhlXG4gKiAgIGFwcCBpbmplY3RvciB0byBvdmVycmlkZSBkZWZhdWx0IGluamVjdGlvbiBiZWhhdmlvci5cbiAqXG4gKiBSZXR1cm5zIGEgYFByb21pc2VgIG9mIHtAbGluayBDb21wb25lbnRSZWZ9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9vdHN0cmFwKFxuICAgIGFwcENvbXBvbmVudFR5cGU6IFR5cGUsXG4gICAgY3VzdG9tUHJvdmlkZXJzPzogQXJyYXk8YW55IC8qVHlwZSB8IFByb3ZpZGVyIHwgYW55W10qLz4pOiBQcm9taXNlPENvbXBvbmVudFJlZj4ge1xuICByZWZsZWN0b3IucmVmbGVjdGlvbkNhcGFiaWxpdGllcyA9IG5ldyBSZWZsZWN0aW9uQ2FwYWJpbGl0aWVzKCk7XG4gIHZhciBhcHBJbmplY3RvciA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFxuICAgICAgW0JST1dTRVJfQVBQX1BST1ZJREVSUywgaXNQcmVzZW50KGN1c3RvbVByb3ZpZGVycykgPyBjdXN0b21Qcm92aWRlcnMgOiBbXV0sXG4gICAgICBicm93c2VyUGxhdGZvcm0oKS5pbmplY3Rvcik7XG4gIHJldHVybiBjb3JlTG9hZEFuZEJvb3RzdHJhcChhcHBJbmplY3RvciwgYXBwQ29tcG9uZW50VHlwZSk7XG59XG4iXX0=","'use strict';\n\nimport {isFunction, isString} from 'angular2/src/facade/lang';\nimport {BrowserDomAdapter} from 'angular2/platform/browser';\nimport {global} from 'angular2/src/facade/lang';\n\nvar defaults = {\n scrollYOffset: 0,\n disableLazySchemas: false,\n debugMode: global.redocDebugMode\n};\n\nvar OPTION_NAMES = new Set(['scrollYOffset', 'disableLazySchemas', 'specUrl']);\n\n@Reflect.metadata('parameters', [[BrowserDomAdapter]])\nexport default class OptionsManager {\n constructor() {\n this._options = defaults;\n this.dom = new BrowserDomAdapter();\n }\n\n get options() {\n return this._options;\n }\n\n set options(opts) {\n this._options = Object.assign(this._options, opts);\n }\n\n parseOptions(el) {\n let parsedOpts;\n let attributesMap = this.dom.attributeMap(el);\n parsedOpts = {};\n Array.from(attributesMap.keys())\n //camelCasify\n .map(k => ({\n attrName: k,\n name: k.replace(/-(.)/g, (m, $1) => $1.toUpperCase())\n })\n )\n .filter(option => OPTION_NAMES.has(option.name))\n .forEach(option => {\n parsedOpts[option.name] = attributesMap.get(option.attrName);\n });\n\n this.options = parsedOpts;\n this._normalizeOptions();\n }\n\n _normalizeOptions() {\n // modify scrollYOffset to always be a function\n if (!isFunction(this._options.scrollYOffset)) {\n if (isFinite(this._options.scrollYOffset)) {\n // if number specified create function that returns this value\n let numberOffset = parseFloat(this._options.scrollYOffset);\n this.options.scrollYOffset = () => numberOffset;\n } else {\n // if selector or node function that returns bottom offset of this node\n let el = this._options.scrollYOffset;\n if (!(el instanceof Node)) {\n el = this.dom.query(el);\n }\n if (!el) {\n this._options.scrollYOffset = () => 0;\n } else {\n this._options.scrollYOffset = () => el.offsetTop + el.offsetHeight;\n }\n }\n }\n\n if (isString(this._options.disableLazySchemas)) this._options.disableLazySchemas = true;\n }\n}\n","'use strict';\n\nimport {ChangeDetectorRef, ChangeDetectionStrategy, ElementRef} from 'angular2/core';\nimport {document} from 'angular2/src/facade/browser';\nimport {BrowserDomAdapter} from 'angular2/platform/browser';\nimport {global} from 'angular2/src/facade/lang';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport {redocEvents} from '../../events';\nimport OptionsManager from '../../options';\n\nconst CHANGE = {\n NEXT : 1,\n BACK : -1,\n INITIAL : 0\n};\n\nconst INVIEW_POSITION = {\n ABOVE : 1,\n BELLOW: -1,\n INVIEW: 0\n};\n\n@RedocComponent({\n selector: 'side-menu',\n template: `\n <div class=\"mobile-nav\" (click)=\"toggleMobileNav()\">\n <span class=\"menu-header\"> API Reference: </span>\n <span class=\"selected-item-info\">\n <span class=\"selected-tag\"> {{activeCatCaption}} </span>\n <span class=\"selected-endpoint\">{{activeItemCaption}}</span>\n </span>\n </div>\n <div id=\"resources-nav\">\n <h5 class=\"menu-header\"> API reference </h5>\n <div *ngFor=\"let cat of data.menu; let idx = index\" class=\"menu-cat\">\n\n <label class=\"menu-cat-header\" (click)=\"activateAndScroll(idx, -1)\" [ngClass]=\"{active: cat.active}\"> {{cat.name}}</label>\n <ul class=\"menu-subitems\" [ngClass]=\"{active: cat.active}\">\n <li *ngFor=\"let method of cat.methods; let methIdx = index\"\n [ngClass]=\"{active: method.active}\"\n (click)=\"activateAndScroll(idx, methIdx)\">\n {{method.summary}}\n </li>\n </ul>\n\n </div>\n </div>\n `,\n styles: [`\n .menu-header{text-transform:uppercase;color:#0033a0;padding:0 20px;margin:10px 0}.menu-cat-header{font-size:0.929em;font-family:Montserrat,sans-serif;font-weight:300;cursor:pointer;color:rgba(38,50,56,0.6);text-transform:uppercase;background-color:#FAFAFA;-webkit-transition:all .15s ease-in-out;-moz-transition:all .15s ease-in-out;-ms-transition:all .15s ease-in-out;-o-transition:all .15s ease-in-out;transition:all .15s ease-in-out;display:block;padding:12.5px 20px}.menu-cat-header:hover,.menu-cat-header.active{color:#0033a0;background-color:#f0f0f0}.menu-subitems{margin:0;font-size:0.929em;line-height:1.2em;font-weight:300;color:rgba(38,50,56,0.9);padding:0;height:0;overflow:hidden}.menu-subitems.active{height:auto}.menu-subitems li{-webkit-transition:all .15s ease-in-out;-moz-transition:all .15s ease-in-out;-ms-transition:all .15s ease-in-out;-o-transition:all .15s ease-in-out;transition:all .15s ease-in-out;list-style:none inside none;cursor:pointer;background-color:#f0f0f0;padding:10px 40px;padding-left:40px;overflow:hidden;text-overflow:ellipsis}.menu-subitems li:hover,.menu-subitems li.active{background:#e1e1e1}.mobile-nav{display:none;height:3em;line-height:3em;box-sizing:border-box;border-bottom:1px solid #ccc;cursor:pointer}.mobile-nav:after{content:\"\";display:inline-block;width:3em;height:3em;background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 100 100\" version=\"1.1\" viewBox=\"0 0 100 100\" xml:space=\"preserve\"><polygon fill=\"#010101\" points=\"23.1 34.1 51.5 61.7 80 34.1 81.5 35 51.5 64.1 21.5 35 23.1 34.1 \"/></svg>');background-size:70%;background-repeat:no-repeat;background-position:center;float:right;vertical-align:middle}.mobile-nav .menu-header{padding:0 10px 0 20px;font-size:0.95em}@media (max-width: 550px){.mobile-nav .menu-header{display:none}}@media (max-width: 1000px){.mobile-nav{display:block}#resources-nav{height:0;overflow-y:auto;transition:all 0.3s ease}#resources-nav .menu-header{display:none}.menu-subitems{height:auto}}.selected-tag{text-transform:capitalize}.selected-endpoint:before{content:\"/\";padding:0 2px;color:#ccc}.selected-endpoint:empty:before{display:none}.selected-item-info{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-sizing:border-box;max-width:350px}@media (max-width: 550px){.selected-item-info{display:inline-block;padding:0 20px;max-width:80%;max-width:calc(100% - 4em)}}\n `],\n changeDetection: ChangeDetectionStrategy.Default\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef],\n [BrowserDomAdapter], [ChangeDetectorRef], [OptionsManager]])\nexport default class SideMenu extends BaseComponent {\n constructor(schemaMgr, elementRef, dom, changeDetectorRef, optionsMgr) {\n super(schemaMgr);\n this.$element = elementRef.nativeElement;\n this.changeDetector = changeDetectorRef;\n this.dom = dom;\n this.options = optionsMgr.options;\n this.$scrollParent = this.options.$scrollParent;\n this.bindEvents();\n this.activeCatIdx = 0;\n this.activeMethodIdx = -1;\n this.prevOffsetY = null;\n\n redocEvents.bootstrapped.subscribe(() => this.hashScroll());\n\n this.activeCatCaption = '';\n this.activeItemCaption = '';\n }\n\n scrollY() {\n return (this.$scrollParent.pageYOffset != null) ? this.$scrollParent.pageYOffset : this.$scrollParent.scrollTop;\n }\n\n hashScroll(evt) {\n let hash = this.dom.getLocation().hash;\n if (!hash) return;\n\n let $el;\n hash = hash.substr(1);\n let namespace = hash.split('/')[0];\n let ptr = decodeURIComponent(hash.substr(namespace.length + 1));\n if (namespace === 'operation') {\n $el = this.getMethodElByOperId(ptr);\n } else if (namespace === 'tag') {\n let tag = ptr.split('/')[0];\n ptr = ptr.substr(tag.length);\n $el = this.getMethodElByPtr(ptr, tag);\n }\n\n if ($el) this.scrollTo($el);\n if (evt) evt.preventDefault();\n }\n\n bindEvents() {\n this.prevOffsetY = this.scrollY();\n\n //decorate option.scrollYOffset to account mobile nav\n this.scrollYOffset = () => {\n let mobileNavOffset = this.$mobileNav.clientHeight;\n return this.options.scrollYOffset() + mobileNavOffset;\n };\n this._cancel = {};\n this._cancel.scroll = this.dom.onAndCancel(this.$scrollParent, 'scroll', () => { this.scrollHandler(); });\n this._cancel.hash = this.dom.onAndCancel(global, 'hashchange', evt => this.hashScroll(evt));\n }\n\n destroy() {\n this._cancel.scroll();\n this._cancel.hash();\n }\n\n activateAndScroll(idx, methodIdx) {\n if (this.mobileMode()) {\n this.toggleMobileNav();\n }\n this.activate(idx, methodIdx);\n this.scrollToActive();\n }\n\n scrollTo($el) {\n // TODO: rewrite this to use offsetTop as more reliable solution\n let subjRect = $el.getBoundingClientRect();\n let offset = this.scrollY() + subjRect.top - this.scrollYOffset() + 1;\n if (this.$scrollParent.scrollTo) {\n this.$scrollParent.scrollTo(0, offset);\n } else {\n this.$scrollParent.scrollTop = offset;\n }\n }\n\n scrollToActive() {\n this.scrollTo(this.getCurrentMethodEl());\n }\n\n activate(catIdx, methodIdx) {\n let menu = this.data.menu;\n\n this.activeCatCaption = '';\n this.activeItemCaption = '';\n\n menu[this.activeCatIdx].active = false;\n if (menu[this.activeCatIdx].methods.length) {\n if (this.activeMethodIdx >= 0) {\n menu[this.activeCatIdx].methods[this.activeMethodIdx].active = false;\n }\n }\n\n this.activeCatIdx = catIdx;\n this.activeMethodIdx = methodIdx;\n menu[catIdx].active = true;\n this.activeCatCaption = menu[catIdx].name;\n this.activeMethodPtr = null;\n if (menu[catIdx].methods.length && (methodIdx > -1)) {\n let currentItem = menu[catIdx].methods[methodIdx];\n currentItem.active = true;\n this.activeMethodPtr = currentItem.pointer;\n this.activeItemCaption = currentItem.summary;\n }\n }\n\n _calcActiveIndexes(offset) {\n let menu = this.data.menu;\n let catCount = menu.length;\n let catLength = menu[this.activeCatIdx].methods.length;\n\n let resMethodIdx = this.activeMethodIdx + offset;\n let resCatIdx = this.activeCatIdx;\n\n if (resMethodIdx > catLength - 1) {\n resCatIdx++;\n resMethodIdx = -1;\n }\n if (resMethodIdx < -1) {\n let prevCatIdx = --resCatIdx;\n catLength = menu[Math.max(prevCatIdx, 0)].methods.length;\n resMethodIdx = catLength - 1;\n }\n if (resCatIdx > catCount - 1) {\n resCatIdx = catCount - 1;\n resMethodIdx = catLength - 1;\n }\n if (resCatIdx < 0) {\n resCatIdx = 0;\n resMethodIdx = 0;\n }\n\n return [resCatIdx, resMethodIdx];\n }\n\n changeActive(offset = 1) {\n let [catIdx, methodIdx] = this._calcActiveIndexes(offset);\n this.activate(catIdx, methodIdx);\n return (methodIdx === 0 && catIdx === 0);\n }\n\n getMethodElByPtr(ptr, tag) {\n let selector = ptr ? `[pointer=\"${ptr}\"][tag=\"${tag}\"]` : `[tag=\"${tag}\"]`;\n return document.querySelector(selector);\n }\n\n getMethodElByOperId(operationId) {\n let selector =`[operation-id=\"${operationId}\"]`;\n return document.querySelector(selector);\n }\n\n getCurrentMethodEl() {\n return this.getMethodElByPtr(this.activeMethodPtr, this.data.menu[this.activeCatIdx].name);\n }\n\n /* returns 1 if element if above the view, 0 if in view and -1 below the view */\n getElementInViewPos($el) {\n if (Math.floor($el.getBoundingClientRect().top) > this.scrollYOffset()) {\n return INVIEW_POSITION.ABOVE;\n }\n\n if ($el.getBoundingClientRect().bottom <= this.scrollYOffset()) {\n return INVIEW_POSITION.BELLOW;\n }\n return INVIEW_POSITION.INVIEW;\n }\n\n scrollHandler() {\n let isScrolledDown = (this.scrollY() - this.prevOffsetY > 0);\n this.prevOffsetY = this.scrollY();\n let stable = false;\n while(!stable) {\n let $activeMethodHost = this.getCurrentMethodEl();\n if (!$activeMethodHost) return;\n var elementInViewPos = this.getElementInViewPos($activeMethodHost);\n if(isScrolledDown && elementInViewPos === INVIEW_POSITION.BELLOW) {\n stable = this.changeActive(CHANGE.NEXT);\n continue;\n }\n if(!isScrolledDown && elementInViewPos === INVIEW_POSITION.ABOVE ) {\n stable = this.changeActive(CHANGE.BACK);\n continue;\n }\n stable = true;\n }\n this.changeDetector.detectChanges();\n }\n\n prepareModel() {\n this.data = {};\n this.data.menu = Array.from(this.schemaMgr.buildMenuTree().entries()).map(\n el => ({name: el[0], description: el[1].description, methods: el[1].methods})\n );\n }\n\n mobileMode() {\n return this.$mobileNav.clientHeight > 0;\n }\n\n toggleMobileNav() {\n let dom = this.dom;\n let $overflowParent = (this.$scrollParent === global) ? dom.defaultDoc().body : this.$scrollParent;\n if (dom.hasStyle(this.$resourcesNav, 'height')) {\n dom.removeStyle(this.$resourcesNav, 'height');\n dom.removeStyle($overflowParent, 'overflow-y');\n } else {\n let viewportHeight = this.$scrollParent.innerHeight || this.$scrollParent.clientHeight;\n let height = viewportHeight - this.$mobileNav.getBoundingClientRect().bottom;\n dom.setStyle($overflowParent, 'overflow-y', 'hidden');\n dom.setStyle(this.$resourcesNav, 'height', height + 'px');\n }\n }\n\n init() {\n this.$mobileNav = this.dom.querySelector(this.$element, '.mobile-nav');\n this.$resourcesNav = this.dom.querySelector(this.$element, '#resources-nav');\n this.changeActive(CHANGE.INITIAL);\n }\n}\n","/* */ \n'use strict';\nvar ctx = require('./$.ctx'),\n $export = require('./$.export'),\n toObject = require('./$.to-object'),\n call = require('./$.iter-call'),\n isArrayIter = require('./$.is-array-iter'),\n toLength = require('./$.to-length'),\n getIterFn = require('./core.get-iterator-method');\n$export($export.S + $export.F * !require('./$.iter-detect')(function(iter) {\n Array.from(iter);\n}), 'Array', {from: function from(arrayLike) {\n var O = toObject(arrayLike),\n C = typeof this == 'function' ? this : Array,\n $$ = arguments,\n $$len = $$.length,\n mapfn = $$len > 1 ? $$[1] : undefined,\n mapping = mapfn !== undefined,\n index = 0,\n iterFn = getIterFn(O),\n length,\n result,\n step,\n iterator;\n if (mapping)\n mapfn = ctx(mapfn, $$len > 2 ? $$[2] : undefined, 2);\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++) {\n result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n result[index] = mapping ? mapfn(O[index], index) : O[index];\n }\n }\n result.length = index;\n return result;\n }});\n","/* */ \nrequire('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/$.core').Array.from;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Array$from = require('../core-js/array/from')[\"default\"];\nexports[\"default\"] = function(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0,\n arr2 = Array(arr.length); i < arr.length; i++)\n arr2[i] = arr[i];\n return arr2;\n } else {\n return _Array$from(arr);\n }\n};\nexports.__esModule = true;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y){\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};","/* */ \nvar anObject = require('./$.an-object'),\n aFunction = require('./$.a-function'),\n SPECIES = require('./$.wks')('species');\nmodule.exports = function(O, D) {\n var C = anObject(O).constructor,\n S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};","/* */ \nmodule.exports = require('./$.global').document && document.documentElement;\n","/* */ \nvar isObject = require('./$.is-object'),\n document = require('./$.global').document,\n is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it) {\n return is ? document.createElement(it) : {};\n};\n","/* */ \n(function(process) {\n var ctx = require('./$.ctx'),\n invoke = require('./$.invoke'),\n html = require('./$.html'),\n cel = require('./$.dom-create'),\n global = require('./$.global'),\n process = global.process,\n setTask = global.setImmediate,\n clearTask = global.clearImmediate,\n MessageChannel = global.MessageChannel,\n counter = 0,\n queue = {},\n ONREADYSTATECHANGE = 'onreadystatechange',\n defer,\n channel,\n port;\n var run = function() {\n var id = +this;\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n };\n var listner = function(event) {\n run.call(event.data);\n };\n if (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [],\n i = 1;\n while (arguments.length > i)\n args.push(arguments[i++]);\n queue[++counter] = function() {\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n if (require('./$.cof')(process) == 'process') {\n defer = function(id) {\n process.nextTick(ctx(run, id, 1));\n };\n } else if (MessageChannel) {\n channel = new MessageChannel;\n port = channel.port2;\n channel.port1.onmessage = listner;\n defer = ctx(port.postMessage, port, 1);\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function(id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listner, false);\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function(id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function() {\n html.removeChild(this);\n run.call(id);\n };\n };\n } else {\n defer = function(id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n }\n module.exports = {\n set: setTask,\n clear: clearTask\n };\n})(require('process'));\n","/* */ \n(function(process) {\n var global = require('./$.global'),\n macrotask = require('./$.task').set,\n Observer = global.MutationObserver || global.WebKitMutationObserver,\n process = global.process,\n Promise = global.Promise,\n isNode = require('./$.cof')(process) == 'process',\n head,\n last,\n notify;\n var flush = function() {\n var parent,\n domain,\n fn;\n if (isNode && (parent = process.domain)) {\n process.domain = null;\n parent.exit();\n }\n while (head) {\n domain = head.domain;\n fn = head.fn;\n if (domain)\n domain.enter();\n fn();\n if (domain)\n domain.exit();\n head = head.next;\n }\n last = undefined;\n if (parent)\n parent.enter();\n };\n if (isNode) {\n notify = function() {\n process.nextTick(flush);\n };\n } else if (Observer) {\n var toggle = 1,\n node = document.createTextNode('');\n new Observer(flush).observe(node, {characterData: true});\n notify = function() {\n node.data = toggle = -toggle;\n };\n } else if (Promise && Promise.resolve) {\n notify = function() {\n Promise.resolve().then(flush);\n };\n } else {\n notify = function() {\n macrotask.call(global, flush);\n };\n }\n module.exports = function asap(fn) {\n var task = {\n fn: fn,\n next: undefined,\n domain: isNode && process.domain\n };\n if (last)\n last.next = task;\n if (!head) {\n head = task;\n notify();\n }\n last = task;\n };\n})(require('process'));\n","/* */ \nvar ITERATOR = require('./$.wks')('iterator'),\n SAFE_CLOSING = false;\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function() {\n SAFE_CLOSING = true;\n };\n Array.from(riter, function() {\n throw 2;\n });\n} catch (e) {}\nmodule.exports = function(exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING)\n return false;\n var safe = false;\n try {\n var arr = [7],\n iter = arr[ITERATOR]();\n iter.next = function() {\n safe = true;\n };\n arr[ITERATOR] = function() {\n return iter;\n };\n exec(arr);\n } catch (e) {}\n return safe;\n};\n","/* */ \n(function(process) {\n 'use strict';\n var $ = require('./$'),\n LIBRARY = require('./$.library'),\n global = require('./$.global'),\n ctx = require('./$.ctx'),\n classof = require('./$.classof'),\n $export = require('./$.export'),\n isObject = require('./$.is-object'),\n anObject = require('./$.an-object'),\n aFunction = require('./$.a-function'),\n strictNew = require('./$.strict-new'),\n forOf = require('./$.for-of'),\n setProto = require('./$.set-proto').set,\n same = require('./$.same-value'),\n SPECIES = require('./$.wks')('species'),\n speciesConstructor = require('./$.species-constructor'),\n asap = require('./$.microtask'),\n PROMISE = 'Promise',\n process = global.process,\n isNode = classof(process) == 'process',\n P = global[PROMISE],\n Wrapper;\n var testResolve = function(sub) {\n var test = new P(function() {});\n if (sub)\n test.constructor = Object;\n return P.resolve(test) === test;\n };\n var USE_NATIVE = function() {\n var works = false;\n function P2(x) {\n var self = new P(x);\n setProto(self, P2.prototype);\n return self;\n }\n try {\n works = P && P.resolve && testResolve();\n setProto(P2, P);\n P2.prototype = $.create(P.prototype, {constructor: {value: P2}});\n if (!(P2.resolve(5).then(function() {}) instanceof P2)) {\n works = false;\n }\n if (works && require('./$.descriptors')) {\n var thenableThenGotten = false;\n P.resolve($.setDesc({}, 'then', {get: function() {\n thenableThenGotten = true;\n }}));\n works = thenableThenGotten;\n }\n } catch (e) {\n works = false;\n }\n return works;\n }();\n var sameConstructor = function(a, b) {\n if (LIBRARY && a === P && b === Wrapper)\n return true;\n return same(a, b);\n };\n var getConstructor = function(C) {\n var S = anObject(C)[SPECIES];\n return S != undefined ? S : C;\n };\n var isThenable = function(it) {\n var then;\n return isObject(it) && typeof(then = it.then) == 'function' ? then : false;\n };\n var PromiseCapability = function(C) {\n var resolve,\n reject;\n this.promise = new C(function($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined)\n throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve), this.reject = aFunction(reject);\n };\n var perform = function(exec) {\n try {\n exec();\n } catch (e) {\n return {error: e};\n }\n };\n var notify = function(record, isReject) {\n if (record.n)\n return;\n record.n = true;\n var chain = record.c;\n asap(function() {\n var value = record.v,\n ok = record.s == 1,\n i = 0;\n var run = function(reaction) {\n var handler = ok ? reaction.ok : reaction.fail,\n resolve = reaction.resolve,\n reject = reaction.reject,\n result,\n then;\n try {\n if (handler) {\n if (!ok)\n record.h = true;\n result = handler === true ? value : handler(value);\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else\n resolve(result);\n } else\n reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i)\n run(chain[i++]);\n chain.length = 0;\n record.n = false;\n if (isReject)\n setTimeout(function() {\n var promise = record.p,\n handler,\n console;\n if (isUnhandled(promise)) {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({\n promise: promise,\n reason: value\n });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n }\n record.a = undefined;\n }, 1);\n });\n };\n var isUnhandled = function(promise) {\n var record = promise._d,\n chain = record.a || record.c,\n i = 0,\n reaction;\n if (record.h)\n return false;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise))\n return false;\n }\n return true;\n };\n var $reject = function(value) {\n var record = this;\n if (record.d)\n return;\n record.d = true;\n record = record.r || record;\n record.v = value;\n record.s = 2;\n record.a = record.c.slice();\n notify(record, true);\n };\n var $resolve = function(value) {\n var record = this,\n then;\n if (record.d)\n return;\n record.d = true;\n record = record.r || record;\n try {\n if (record.p === value)\n throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n asap(function() {\n var wrapper = {\n r: record,\n d: false\n };\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n record.v = value;\n record.s = 1;\n notify(record, false);\n }\n } catch (e) {\n $reject.call({\n r: record,\n d: false\n }, e);\n }\n };\n if (!USE_NATIVE) {\n P = function Promise(executor) {\n aFunction(executor);\n var record = this._d = {\n p: strictNew(this, P, PROMISE),\n c: [],\n a: undefined,\n s: 0,\n d: false,\n v: undefined,\n h: false,\n n: false\n };\n try {\n executor(ctx($resolve, record, 1), ctx($reject, record, 1));\n } catch (err) {\n $reject.call(record, err);\n }\n };\n require('./$.redefine-all')(P.prototype, {\n then: function then(onFulfilled, onRejected) {\n var reaction = new PromiseCapability(speciesConstructor(this, P)),\n promise = reaction.promise,\n record = this._d;\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n record.c.push(reaction);\n if (record.a)\n record.a.push(reaction);\n if (record.s)\n notify(record, false);\n return promise;\n },\n 'catch': function(onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n }\n $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: P});\n require('./$.set-to-string-tag')(P, PROMISE);\n require('./$.set-species')(PROMISE);\n Wrapper = require('./$.core')[PROMISE];\n $export($export.S + $export.F * !USE_NATIVE, PROMISE, {reject: function reject(r) {\n var capability = new PromiseCapability(this),\n $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }});\n $export($export.S + $export.F * (!USE_NATIVE || testResolve(true)), PROMISE, {resolve: function resolve(x) {\n if (x instanceof P && sameConstructor(x.constructor, this))\n return x;\n var capability = new PromiseCapability(this),\n $$resolve = capability.resolve;\n $$resolve(x);\n return capability.promise;\n }});\n $export($export.S + $export.F * !(USE_NATIVE && require('./$.iter-detect')(function(iter) {\n P.all(iter)['catch'](function() {});\n })), PROMISE, {\n all: function all(iterable) {\n var C = getConstructor(this),\n capability = new PromiseCapability(C),\n resolve = capability.resolve,\n reject = capability.reject,\n values = [];\n var abrupt = perform(function() {\n forOf(iterable, false, values.push, values);\n var remaining = values.length,\n results = Array(remaining);\n if (remaining)\n $.each.call(values, function(promise, index) {\n var alreadyCalled = false;\n C.resolve(promise).then(function(value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n results[index] = value;\n --remaining || resolve(results);\n }, reject);\n });\n else\n resolve(results);\n });\n if (abrupt)\n reject(abrupt.error);\n return capability.promise;\n },\n race: function race(iterable) {\n var C = getConstructor(this),\n capability = new PromiseCapability(C),\n reject = capability.reject;\n var abrupt = perform(function() {\n forOf(iterable, false, function(promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (abrupt)\n reject(abrupt.error);\n return capability.promise;\n }\n });\n})(require('process'));\n","/* */ \nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nmodule.exports = require('../modules/$.core').Promise;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","/* */ \nvar anObject = require('./$.an-object'),\n get = require('./core.get-iterator-method');\nmodule.exports = require('./$.core').getIterator = function(it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function')\n throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","/* */ \nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","/* */ \n'use strict';\nvar strong = require('./$.collection-strong');\nrequire('./$.collection')('Map', function(get) {\n return function Map() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n}, {\n get: function get(key) {\n var entry = strong.getEntry(this, key);\n return entry && entry.v;\n },\n set: function set(key, value) {\n return strong.def(this, key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","/* */ \nvar $export = require('./$.export');\n$export($export.P, 'Map', {toJSON: require('./$.collection-to-json')('Map')});\n","/* */ \nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nmodule.exports = require('../modules/$.core').Map;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","/* */ \n\"format cjs\";\n// Number.isFinite polyfill\n// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite\nif (typeof Number.isFinite !== \"function\") {\n Number.isFinite = function isFinite(value) {\n // 1. If Type(number) is not Number, return false.\n if (typeof value !== \"number\") {\n return false;\n }\n // 2. If number is NaN, +∞, or −∞, return false.\n if (value !== value || value === Infinity || value === -Infinity) {\n return false;\n }\n // 3. Otherwise, return true.\n return true;\n };\n}\n","/* */ \n(function(process) {\n \"use strict\";\n var Report = require('./Report');\n var SchemaCompilation = require('./SchemaCompilation');\n var SchemaValidation = require('./SchemaValidation');\n var Utils = require('./Utils');\n function decodeJSONPointer(str) {\n return decodeURIComponent(str).replace(/~[0-1]/g, function(x) {\n return x === \"~1\" ? \"/\" : \"~\";\n });\n }\n function getRemotePath(uri) {\n var io = uri.indexOf(\"#\");\n return io === -1 ? uri : uri.slice(0, io);\n }\n function getQueryPath(uri) {\n var io = uri.indexOf(\"#\");\n var res = io === -1 ? undefined : uri.slice(io + 1);\n return res;\n }\n function findId(schema, id) {\n if (typeof schema !== \"object\" || schema === null) {\n return;\n }\n if (!id) {\n return schema;\n }\n if (schema.id) {\n if (schema.id === id || schema.id[0] === \"#\" && schema.id.substring(1) === id) {\n return schema;\n }\n }\n var idx,\n result;\n if (Array.isArray(schema)) {\n idx = schema.length;\n while (idx--) {\n result = findId(schema[idx], id);\n if (result) {\n return result;\n }\n }\n } else {\n var keys = Object.keys(schema);\n idx = keys.length;\n while (idx--) {\n var k = keys[idx];\n if (k.indexOf(\"__$\") === 0) {\n continue;\n }\n result = findId(schema[k], id);\n if (result) {\n return result;\n }\n }\n }\n }\n exports.cacheSchemaByUri = function(uri, schema) {\n var remotePath = getRemotePath(uri);\n if (remotePath) {\n this.cache[remotePath] = schema;\n }\n };\n exports.removeFromCacheByUri = function(uri) {\n var remotePath = getRemotePath(uri);\n if (remotePath) {\n delete this.cache[remotePath];\n }\n };\n exports.checkCacheForUri = function(uri) {\n var remotePath = getRemotePath(uri);\n return remotePath ? this.cache[remotePath] != null : false;\n };\n exports.getSchema = function(report, schema) {\n if (typeof schema === \"object\") {\n schema = exports.getSchemaByReference.call(this, report, schema);\n }\n if (typeof schema === \"string\") {\n schema = exports.getSchemaByUri.call(this, report, schema);\n }\n return schema;\n };\n exports.getSchemaByReference = function(report, key) {\n var i = this.referenceCache.length;\n while (i--) {\n if (this.referenceCache[i][0] === key) {\n return this.referenceCache[i][1];\n }\n }\n var schema = Utils.cloneDeep(key);\n this.referenceCache.push([key, schema]);\n return schema;\n };\n exports.getSchemaByUri = function(report, uri, root) {\n var remotePath = getRemotePath(uri),\n queryPath = getQueryPath(uri),\n result = remotePath ? this.cache[remotePath] : root;\n if (result && remotePath) {\n var compileRemote = result !== root;\n if (compileRemote) {\n report.path.push(remotePath);\n var remoteReport = new Report(report);\n if (SchemaCompilation.compileSchema.call(this, remoteReport, result)) {\n SchemaValidation.validateSchema.call(this, remoteReport, result);\n }\n var remoteReportIsValid = remoteReport.isValid();\n if (!remoteReportIsValid) {\n report.addError(\"REMOTE_NOT_VALID\", [uri], remoteReport);\n }\n report.path.pop();\n if (!remoteReportIsValid) {\n return undefined;\n }\n }\n }\n if (result && queryPath) {\n var parts = queryPath.split(\"/\");\n for (var idx = 0,\n lim = parts.length; result && idx < lim; idx++) {\n var key = decodeJSONPointer(parts[idx]);\n if (idx === 0) {\n result = findId(result, key);\n } else {\n result = result[key];\n }\n }\n }\n return result;\n };\n exports.getRemotePath = getRemotePath;\n})(require('process'));\n","/* */ \n\"use strict\";\nvar Report = require('./Report');\nvar SchemaCache = require('./SchemaCache');\nvar Utils = require('./Utils');\nfunction mergeReference(scope, ref) {\n if (Utils.isAbsoluteUri(ref)) {\n return ref;\n }\n var joinedScope = scope.join(\"\"),\n isScopeAbsolute = Utils.isAbsoluteUri(joinedScope),\n isScopeRelative = Utils.isRelativeUri(joinedScope),\n isRefRelative = Utils.isRelativeUri(ref),\n toRemove;\n if (isScopeAbsolute && isRefRelative) {\n toRemove = joinedScope.match(/\\/[^\\/]*$/);\n if (toRemove) {\n joinedScope = joinedScope.slice(0, toRemove.index + 1);\n }\n } else if (isScopeRelative && isRefRelative) {\n joinedScope = \"\";\n } else {\n toRemove = joinedScope.match(/[^#/]+$/);\n if (toRemove) {\n joinedScope = joinedScope.slice(0, toRemove.index);\n }\n }\n var res = joinedScope + ref;\n res = res.replace(/##/, \"#\");\n return res;\n}\nfunction collectReferences(obj, results, scope, path) {\n results = results || [];\n scope = scope || [];\n path = path || [];\n if (typeof obj !== \"object\" || obj === null) {\n return results;\n }\n if (typeof obj.id === \"string\") {\n scope.push(obj.id);\n }\n if (typeof obj.$ref === \"string\" && typeof obj.__$refResolved === \"undefined\") {\n results.push({\n ref: mergeReference(scope, obj.$ref),\n key: \"$ref\",\n obj: obj,\n path: path.slice(0)\n });\n }\n if (typeof obj.$schema === \"string\" && typeof obj.__$schemaResolved === \"undefined\") {\n results.push({\n ref: mergeReference(scope, obj.$schema),\n key: \"$schema\",\n obj: obj,\n path: path.slice(0)\n });\n }\n var idx;\n if (Array.isArray(obj)) {\n idx = obj.length;\n while (idx--) {\n path.push(idx.toString());\n collectReferences(obj[idx], results, scope, path);\n path.pop();\n }\n } else {\n var keys = Object.keys(obj);\n idx = keys.length;\n while (idx--) {\n if (keys[idx].indexOf(\"__$\") === 0) {\n continue;\n }\n path.push(keys[idx]);\n collectReferences(obj[keys[idx]], results, scope, path);\n path.pop();\n }\n }\n if (typeof obj.id === \"string\") {\n scope.pop();\n }\n return results;\n}\nvar compileArrayOfSchemasLoop = function(mainReport, arr) {\n var idx = arr.length,\n compiledCount = 0;\n while (idx--) {\n var report = new Report(mainReport);\n var isValid = exports.compileSchema.call(this, report, arr[idx]);\n if (isValid) {\n compiledCount++;\n }\n mainReport.errors = mainReport.errors.concat(report.errors);\n }\n return compiledCount;\n};\nfunction findId(arr, id) {\n var idx = arr.length;\n while (idx--) {\n if (arr[idx].id === id) {\n return arr[idx];\n }\n }\n return null;\n}\nvar compileArrayOfSchemas = function(report, arr) {\n var compiled = 0,\n lastLoopCompiled;\n do {\n var idx = report.errors.length;\n while (idx--) {\n if (report.errors[idx].code === \"UNRESOLVABLE_REFERENCE\") {\n report.errors.splice(idx, 1);\n }\n }\n lastLoopCompiled = compiled;\n compiled = compileArrayOfSchemasLoop.call(this, report, arr);\n idx = arr.length;\n while (idx--) {\n var sch = arr[idx];\n if (sch.__$missingReferences) {\n var idx2 = sch.__$missingReferences.length;\n while (idx2--) {\n var refObj = sch.__$missingReferences[idx2];\n var response = findId(arr, refObj.ref);\n if (response) {\n refObj.obj[\"__\" + refObj.key + \"Resolved\"] = response;\n sch.__$missingReferences.splice(idx2, 1);\n }\n }\n if (sch.__$missingReferences.length === 0) {\n delete sch.__$missingReferences;\n }\n }\n }\n } while (compiled !== arr.length && compiled !== lastLoopCompiled);\n return report.isValid();\n};\nexports.compileSchema = function(report, schema) {\n report.commonErrorMessage = \"SCHEMA_COMPILATION_FAILED\";\n if (typeof schema === \"string\") {\n var loadedSchema = SchemaCache.getSchemaByUri.call(this, report, schema);\n if (!loadedSchema) {\n report.addError(\"SCHEMA_NOT_REACHABLE\", [schema]);\n return false;\n }\n schema = loadedSchema;\n }\n if (Array.isArray(schema)) {\n return compileArrayOfSchemas.call(this, report, schema);\n }\n if (schema.__$compiled && schema.id && SchemaCache.checkCacheForUri.call(this, schema.id) === false) {\n schema.__$compiled = undefined;\n }\n if (schema.__$compiled) {\n return true;\n }\n if (schema.id && typeof schema.id === \"string\") {\n SchemaCache.cacheSchemaByUri.call(this, schema.id, schema);\n }\n var isRoot = false;\n if (!report.rootSchema) {\n report.rootSchema = schema;\n isRoot = true;\n }\n var isValidExceptReferences = report.isValid();\n delete schema.__$missingReferences;\n var refs = collectReferences.call(this, schema),\n idx = refs.length;\n while (idx--) {\n var refObj = refs[idx];\n var response = SchemaCache.getSchemaByUri.call(this, report, refObj.ref, schema);\n if (!response) {\n var schemaReader = this.getSchemaReader();\n if (schemaReader) {\n var s = schemaReader(refObj.ref);\n if (s) {\n s.id = refObj.ref;\n var subreport = new Report(report);\n if (!exports.compileSchema.call(this, subreport, s)) {\n report.errors = report.errors.concat(subreport.errors);\n } else {\n response = SchemaCache.getSchemaByUri.call(this, report, refObj.ref, schema);\n }\n }\n }\n }\n if (!response) {\n var hasNotValid = report.hasError(\"REMOTE_NOT_VALID\", [refObj.ref]);\n var isAbsolute = Utils.isAbsoluteUri(refObj.ref);\n var isDownloaded = false;\n var ignoreUnresolvableRemotes = this.options.ignoreUnresolvableReferences === true;\n if (isAbsolute) {\n isDownloaded = SchemaCache.checkCacheForUri.call(this, refObj.ref);\n }\n if (hasNotValid) {} else if (ignoreUnresolvableRemotes && isAbsolute) {} else if (isDownloaded) {} else {\n Array.prototype.push.apply(report.path, refObj.path);\n report.addError(\"UNRESOLVABLE_REFERENCE\", [refObj.ref]);\n report.path = report.path.slice(0, -refObj.path.length);\n if (isValidExceptReferences) {\n schema.__$missingReferences = schema.__$missingReferences || [];\n schema.__$missingReferences.push(refObj);\n }\n }\n }\n refObj.obj[\"__\" + refObj.key + \"Resolved\"] = response;\n }\n var isValid = report.isValid();\n if (isValid) {\n schema.__$compiled = true;\n } else {\n if (schema.id && typeof schema.id === \"string\") {\n SchemaCache.removeFromCacheByUri.call(this, schema.id);\n }\n }\n if (isRoot) {\n report.rootSchema = undefined;\n }\n return isValid;\n};\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = toInt;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction toInt(str, radix) {\n (0, _assertString2.default)(str);\n return parseInt(str, radix || 10);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = toBoolean;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction toBoolean(str, strict) {\n (0, _assertString2.default)(str);\n if (strict) {\n return str === '1' || str === 'true';\n }\n return str !== '0' && str !== 'false' && str !== '';\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = equals;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction equals(str, comparison) {\n (0, _assertString2.default)(str);\n return str === comparison;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = contains;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _toString = require('./util/toString');\nvar _toString2 = _interopRequireDefault(_toString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction contains(str, elem) {\n (0, _assertString2.default)(str);\n return str.indexOf((0, _toString2.default)(elem)) >= 0;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = matches;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction matches(str, pattern, modifiers) {\n (0, _assertString2.default)(str);\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n return pattern.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isURL;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _isFQDN = require('./isFQDN');\nvar _isFQDN2 = _interopRequireDefault(_isFQDN);\nvar _isIP = require('./isIP');\nvar _isIP2 = _interopRequireDefault(_isIP);\nvar _merge = require('./util/merge');\nvar _merge2 = _interopRequireDefault(_merge);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\nfunction isURL(url, options) {\n (0, _assertString2.default)(url);\n if (!url || url.length >= 2083 || /\\s/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge2.default)(options, default_url_options);\n var protocol = void 0,\n auth = void 0,\n host = void 0,\n hostname = void 0,\n port = void 0,\n port_str = void 0,\n split = void 0;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (options.allow_protocol_relative_urls && url.substr(0, 2) === '//') {\n split[0] = url.substr(2);\n }\n url = split.join('://');\n split = url.split('/');\n url = split.shift();\n split = url.split('@');\n if (split.length > 1) {\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n hostname = split.join('@');\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n if (!(0, _isIP2.default)(host) && !(0, _isFQDN2.default)(host, options) && host !== 'localhost') {\n return false;\n }\n if (options.host_whitelist && options.host_whitelist.indexOf(host) === -1) {\n return false;\n }\n if (options.host_blacklist && options.host_blacklist.indexOf(host) !== -1) {\n return false;\n }\n return true;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isMACAddress;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar macAddress = /^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/;\nfunction isMACAddress(str) {\n (0, _assertString2.default)(str);\n return macAddress.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isIP;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\nfunction isIP(str) {\n var version = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];\n (0, _assertString2.default)(str);\n version = String(version);\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n var parts = str.split('.').sort(function(a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false;\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n }\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n for (var i = 0; i < blocks.length; ++i) {\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false;\n }\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) {} else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n return blocks.length === expectedNumberOfBlocks;\n }\n return false;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isBoolean;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isBoolean(str) {\n (0, _assertString2.default)(str);\n return ['true', 'false', '1', '0'].indexOf(str) >= 0;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isAlpha;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _alpha = require('./alpha');\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isAlpha(str) {\n var locale = arguments.length <= 1 || arguments[1] === undefined ? 'en-US' : arguments[1];\n (0, _assertString2.default)(str);\n if (locale in _alpha.alpha) {\n return _alpha.alpha[locale].test(str);\n }\n throw new Error('Invalid locale \\'' + locale + '\\'');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar alpha = exports.alpha = {\n 'en-US': /^[A-Z]+$/i,\n 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'de-DE': /^[A-ZÄÖÜß]+$/i,\n 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'nl-NL': /^[A-ZÉËÏÓÖÜ]+$/i,\n 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,\n 'ru-RU': /^[А-ЯЁа-яё]+$/i,\n 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/\n};\n\nvar alphanumeric = exports.alphanumeric = {\n 'en-US': /^[0-9A-Z]+$/i,\n 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'de-DE': /^[0-9A-ZÄÖÜß]+$/i,\n 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'nl-NL': /^[0-9A-ZÉËÏÓÖÜ]+$/i,\n 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i,\n 'ru-RU': /^[0-9А-ЯЁа-яё]+$/i,\n 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/\n};\n\nvar englishLocales = exports.englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];\n\nfor (var locale, i = 0; i < englishLocales.length; i++) {\n locale = 'en-' + englishLocales[i];\n alpha[locale] = alpha['en-US'];\n alphanumeric[locale] = alphanumeric['en-US'];\n}\n\n// Source: http://www.localeplanet.com/java/\nvar arabicLocales = exports.arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];\n\nfor (var _locale, _i = 0; _i < arabicLocales.length; _i++) {\n _locale = 'ar-' + arabicLocales[_i];\n alpha[_locale] = alpha.ar;\n alphanumeric[_locale] = alphanumeric.ar;\n}","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isAlphanumeric;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _alpha = require('./alpha');\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isAlphanumeric(str) {\n var locale = arguments.length <= 1 || arguments[1] === undefined ? 'en-US' : arguments[1];\n (0, _assertString2.default)(str);\n if (locale in _alpha.alphanumeric) {\n return _alpha.alphanumeric[locale].test(str);\n }\n throw new Error('Invalid locale \\'' + locale + '\\'');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isNumeric;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar numeric = /^[-+]?[0-9]+$/;\nfunction isNumeric(str) {\n (0, _assertString2.default)(str);\n return numeric.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isLowercase;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isLowercase(str) {\n (0, _assertString2.default)(str);\n return str === str.toLowerCase();\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isUppercase;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isUppercase(str) {\n (0, _assertString2.default)(str);\n return str === str.toUpperCase();\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isAscii;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar ascii = /^[\\x00-\\x7F]+$/;\nfunction isAscii(str) {\n (0, _assertString2.default)(str);\n return ascii.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.fullWidth = undefined;\nexports.default = isFullWidth;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar fullWidth = exports.fullWidth = /[^\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nfunction isFullWidth(str) {\n (0, _assertString2.default)(str);\n return fullWidth.test(str);\n}\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.halfWidth = undefined;\nexports.default = isHalfWidth;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar halfWidth = exports.halfWidth = /[\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nfunction isHalfWidth(str) {\n (0, _assertString2.default)(str);\n return halfWidth.test(str);\n}\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isVariableWidth;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _isFullWidth = require('./isFullWidth');\nvar _isHalfWidth = require('./isHalfWidth');\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isVariableWidth(str) {\n (0, _assertString2.default)(str);\n return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isMultibyte;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar multibyte = /[^\\x00-\\x7F]/;\nfunction isMultibyte(str) {\n (0, _assertString2.default)(str);\n return multibyte.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isSurrogatePair;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar surrogatePair = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/;\nfunction isSurrogatePair(str) {\n (0, _assertString2.default)(str);\n return surrogatePair.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isInt;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;\nfunction isInt(str, options) {\n (0, _assertString2.default)(str);\n options = options || {};\n return int.test(str) && (!options.hasOwnProperty('min') || str >= options.min) && (!options.hasOwnProperty('max') || str <= options.max);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isFloat;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar float = /^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$/;\nfunction isFloat(str, options) {\n (0, _assertString2.default)(str);\n options = options || {};\n if (str === '' || str === '.') {\n return false;\n }\n return float.test(str) && (!options.hasOwnProperty('min') || str >= options.min) && (!options.hasOwnProperty('max') || str <= options.max);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isDecimal;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar decimal = /^[-+]?([0-9]+|\\.[0-9]+|[0-9]+\\.[0-9]+)$/;\nfunction isDecimal(str) {\n (0, _assertString2.default)(str);\n return str !== '' && decimal.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = toFloat;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction toFloat(str) {\n (0, _assertString2.default)(str);\n return parseFloat(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isDivisibleBy;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _toFloat = require('./toFloat');\nvar _toFloat2 = _interopRequireDefault(_toFloat);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isDivisibleBy(str, num) {\n (0, _assertString2.default)(str);\n return (0, _toFloat2.default)(str) % parseInt(num, 10) === 0;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isHexColor;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{6})$/i;\nfunction isHexColor(str) {\n (0, _assertString2.default)(str);\n return hexcolor.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nexports.default = isJSON;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isJSON(str) {\n (0, _assertString2.default)(str);\n try {\n var obj = JSON.parse(str);\n return !!obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';\n } catch (e) {}\n return false;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isNull;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isNull(str) {\n (0, _assertString2.default)(str);\n return str.length === 0;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nexports.default = isLength;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isLength(str, options) {\n (0, _assertString2.default)(str);\n var min = void 0;\n var max = void 0;\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n min = arguments[1];\n max = arguments[2];\n }\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - surrogatePairs.length;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isUUID;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar uuid = {\n 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i\n};\nfunction isUUID(str) {\n var version = arguments.length <= 1 || arguments[1] === undefined ? 'all' : arguments[1];\n (0, _assertString2.default)(str);\n var pattern = uuid[version];\n return pattern && pattern.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isHexadecimal;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar hexadecimal = /^[0-9A-F]+$/i;\nfunction isHexadecimal(str) {\n (0, _assertString2.default)(str);\n return hexadecimal.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isMongoId;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _isHexadecimal = require('./isHexadecimal');\nvar _isHexadecimal2 = _interopRequireDefault(_isHexadecimal);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isMongoId(str) {\n (0, _assertString2.default)(str);\n return (0, _isHexadecimal2.default)(str) && str.length === 24;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isDate;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _isISO = require('./isISO8601');\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction getTimezoneOffset(str) {\n var iso8601Parts = str.match(_isISO.iso8601);\n var timezone = void 0,\n sign = void 0,\n hours = void 0,\n minutes = void 0;\n if (!iso8601Parts) {\n str = str.toLowerCase();\n timezone = str.match(/(?:\\s|gmt\\s*)(-|\\+)(\\d{1,4})(\\s|$)/);\n if (!timezone) {\n return str.indexOf('gmt') !== -1 ? 0 : null;\n }\n sign = timezone[1];\n var offset = timezone[2];\n if (offset.length === 3) {\n offset = '0' + offset;\n }\n if (offset.length <= 2) {\n hours = 0;\n minutes = parseInt(offset, 10);\n } else {\n hours = parseInt(offset.slice(0, 2), 10);\n minutes = parseInt(offset.slice(2, 4), 10);\n }\n } else {\n timezone = iso8601Parts[21];\n if (!timezone) {\n return !iso8601Parts[12] ? 0 : null;\n }\n if (timezone === 'z' || timezone === 'Z') {\n return 0;\n }\n sign = iso8601Parts[22];\n if (timezone.indexOf(':') !== -1) {\n hours = parseInt(iso8601Parts[23], 10);\n minutes = parseInt(iso8601Parts[24], 10);\n } else {\n hours = 0;\n minutes = parseInt(iso8601Parts[23], 10);\n }\n }\n return (hours * 60 + minutes) * (sign === '-' ? 1 : -1);\n}\nfunction isDate(str) {\n (0, _assertString2.default)(str);\n var normalizedDate = new Date(Date.parse(str));\n if (isNaN(normalizedDate)) {\n return false;\n }\n var timezoneOffset = getTimezoneOffset(str);\n if (timezoneOffset !== null) {\n var timezoneDifference = normalizedDate.getTimezoneOffset() - timezoneOffset;\n normalizedDate = new Date(normalizedDate.getTime() + 60000 * timezoneDifference);\n }\n var day = String(normalizedDate.getDate());\n var dayOrYear = void 0,\n dayOrYearMatches = void 0,\n year = void 0;\n dayOrYearMatches = str.match(/(^|[^:\\d])[23]\\d([^:\\d]|$)/g);\n if (!dayOrYearMatches) {\n return true;\n }\n dayOrYear = dayOrYearMatches.map(function(digitString) {\n return digitString.match(/\\d+/g)[0];\n }).join('/');\n year = String(normalizedDate.getFullYear()).slice(-2);\n if (dayOrYear === day || dayOrYear === year) {\n return true;\n } else if (dayOrYear === '' + day / year || dayOrYear === '' + year / day) {\n return true;\n }\n return false;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isAfter;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _toDate = require('./toDate');\nvar _toDate2 = _interopRequireDefault(_toDate);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isAfter(str) {\n var date = arguments.length <= 1 || arguments[1] === undefined ? String(new Date()) : arguments[1];\n (0, _assertString2.default)(str);\n var comparison = (0, _toDate2.default)(date);\n var original = (0, _toDate2.default)(str);\n return !!(original && comparison && original > comparison);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = toDate;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction toDate(date) {\n (0, _assertString2.default)(date);\n date = Date.parse(date);\n return !isNaN(date) ? new Date(date) : null;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isBefore;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _toDate = require('./toDate');\nvar _toDate2 = _interopRequireDefault(_toDate);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isBefore(str) {\n var date = arguments.length <= 1 || arguments[1] === undefined ? String(new Date()) : arguments[1];\n (0, _assertString2.default)(str);\n var comparison = (0, _toDate2.default)(date);\n var original = (0, _toDate2.default)(str);\n return !!(original && comparison && original < comparison);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nexports.default = isIn;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _toString = require('./util/toString');\nvar _toString2 = _interopRequireDefault(_toString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isIn(str, options) {\n (0, _assertString2.default)(str);\n var i = void 0;\n if (Object.prototype.toString.call(options) === '[object Array]') {\n var array = [];\n for (i in options) {\n if ({}.hasOwnProperty.call(options, i)) {\n array[i] = (0, _toString2.default)(options[i]);\n }\n }\n return array.indexOf(str) >= 0;\n } else if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n return options.hasOwnProperty(str);\n } else if (options && typeof options.indexOf === 'function') {\n return options.indexOf(str) >= 0;\n }\n return false;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isCreditCard;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/;\nfunction isCreditCard(str) {\n (0, _assertString2.default)(str);\n var sanitized = str.replace(/[^0-9]+/g, '');\n if (!creditCard.test(sanitized)) {\n return false;\n }\n var sum = 0;\n var digit = void 0;\n var tmpNum = void 0;\n var shouldDouble = void 0;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!(sum % 10 === 0 ? sanitized : false);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isISIN;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;\nfunction isISIN(str) {\n (0, _assertString2.default)(str);\n if (!isin.test(str)) {\n return false;\n }\n var checksumStr = str.replace(/[A-Z]/g, function(character) {\n return parseInt(character, 36);\n });\n var sum = 0;\n var digit = void 0;\n var tmpNum = void 0;\n var shouldDouble = true;\n for (var i = checksumStr.length - 2; i >= 0; i--) {\n digit = checksumStr.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return parseInt(str.substr(str.length - 1), 10) === (10000 - sum) % 10;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isISBN;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/;\nvar isbn13Maybe = /^(?:[0-9]{13})$/;\nvar factor = [1, 3];\nfunction isISBN(str) {\n var version = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];\n (0, _assertString2.default)(str);\n version = String(version);\n if (!version) {\n return isISBN(str, 10) || isISBN(str, 13);\n }\n var sanitized = str.replace(/[\\s-]+/g, '');\n var checksum = 0;\n var i = void 0;\n if (version === '10') {\n if (!isbn10Maybe.test(sanitized)) {\n return false;\n }\n for (i = 0; i < 9; i++) {\n checksum += (i + 1) * sanitized.charAt(i);\n }\n if (sanitized.charAt(9) === 'X') {\n checksum += 10 * 10;\n } else {\n checksum += 10 * sanitized.charAt(9);\n }\n if (checksum % 11 === 0) {\n return !!sanitized;\n }\n } else if (version === '13') {\n if (!isbn13Maybe.test(sanitized)) {\n return false;\n }\n for (i = 0; i < 12; i++) {\n checksum += factor[i % 2] * sanitized.charAt(i);\n }\n if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) {\n return !!sanitized;\n }\n }\n return false;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isMobilePhone;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar phones = {\n 'ar-SY': /^(!?(\\+?963)|0)?9\\d{8}$/,\n 'en-US': /^(\\+?1)?[2-9]\\d{2}[2-9](?!11)\\d{6}$/,\n 'cs-CZ': /^(\\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'de-DE': /^(\\+?49[ \\.\\-])?([\\(]{1}[0-9]{1,6}[\\)])?([0-9 \\.\\-\\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/,\n 'el-GR': /^(\\+?30)?(69\\d{8})$/,\n 'en-AU': /^(\\+?61|0)4\\d{8}$/,\n 'en-GB': /^(\\+?44|0)7\\d{9}$/,\n 'en-HK': /^(\\+?852\\-?)?[569]\\d{3}\\-?\\d{4}$/,\n 'en-IN': /^(\\+?91|0)?[789]\\d{9}$/,\n 'en-NZ': /^(\\+?64|0)2\\d{7,9}$/,\n 'en-ZA': /^(\\+?27|0)\\d{9}$/,\n 'en-ZM': /^(\\+?26)?09[567]\\d{7}$/,\n 'es-ES': /^(\\+?34)?(6\\d{1}|7[1234])\\d{7}$/,\n 'fi-FI': /^(\\+?358|0)\\s?(4(0|1|2|4|5)?|50)\\s?(\\d\\s?){4,8}\\d$/,\n 'fr-FR': /^(\\+?33|0)[67]\\d{8}$/,\n 'ms-MY': /^(\\+?6?01){1}(([145]{1}(\\-|\\s)?\\d{7,8})|([236789]{1}(\\s|\\-)?\\d{7}))$/,\n 'nb-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'nn-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'pt-BR': /^(\\+?55|0)\\-?[1-9]{2}\\-?[2-9]{1}\\d{3,4}\\-?\\d{4}$/,\n 'pt-PT': /^(\\+?351)?9[1236]\\d{7}$/,\n 'ru-RU': /^(\\+?7|8)?9\\d{9}$/,\n 'tr-TR': /^(\\+?90|0)?5\\d{9}$/,\n 'vi-VN': /^(\\+?84|0)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$/,\n 'zh-CN': /^(\\+?0?86\\-?)?((13\\d|14[57]|15[^4,\\D]|17[678]|18\\d)\\d{8}|170[059]\\d{7})$/,\n 'zh-TW': /^(\\+?886\\-?|0)?9\\d{8}$/\n};\nfunction isMobilePhone(str, locale) {\n (0, _assertString2.default)(str);\n if (locale in phones) {\n return phones[locale].test(str);\n }\n return false;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isCurrency;\nvar _merge = require('./util/merge');\nvar _merge2 = _interopRequireDefault(_merge);\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction currencyRegex(options) {\n var symbol = '(\\\\' + options.symbol.replace(/\\./g, '\\\\.') + ')' + (options.require_symbol ? '' : '?'),\n negative = '-?',\n whole_dollar_amount_without_sep = '[1-9]\\\\d*',\n whole_dollar_amount_with_sep = '[1-9]\\\\d{0,2}(\\\\' + options.thousands_separator + '\\\\d{3})*',\n valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],\n whole_dollar_amount = '(' + valid_whole_dollar_amounts.join('|') + ')?',\n decimal_amount = '(\\\\' + options.decimal_separator + '\\\\d{2})?';\n var pattern = whole_dollar_amount + decimal_amount;\n if (options.allow_negatives && !options.parens_for_negatives) {\n if (options.negative_sign_after_digits) {\n pattern += negative;\n } else if (options.negative_sign_before_digits) {\n pattern = negative + pattern;\n }\n }\n if (options.allow_negative_sign_placeholder) {\n pattern = '( (?!\\\\-))?' + pattern;\n } else if (options.allow_space_after_symbol) {\n pattern = ' ?' + pattern;\n } else if (options.allow_space_after_digits) {\n pattern += '( (?!$))?';\n }\n if (options.symbol_after_digits) {\n pattern += symbol;\n } else {\n pattern = symbol + pattern;\n }\n if (options.allow_negatives) {\n if (options.parens_for_negatives) {\n pattern = '(\\\\(' + pattern + '\\\\)|' + pattern + ')';\n } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {\n pattern = negative + pattern;\n }\n }\n return new RegExp('^' + '(?!-? )(?=.*\\\\d)' + pattern + '$');\n}\nvar default_currency_options = {\n symbol: '$',\n require_symbol: false,\n allow_space_after_symbol: false,\n symbol_after_digits: false,\n allow_negatives: true,\n parens_for_negatives: false,\n negative_sign_before_digits: false,\n negative_sign_after_digits: false,\n allow_negative_sign_placeholder: false,\n thousands_separator: ',',\n decimal_separator: '.',\n allow_space_after_digits: false\n};\nfunction isCurrency(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_currency_options);\n return currencyRegex(options).test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.iso8601 = undefined;\nexports.default = function(str) {\n (0, _assertString2.default)(str);\n return iso8601.test(str);\n};\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar iso8601 = exports.iso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isBase64;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar notBase64 = /[^A-Z0-9+\\/=]/i;\nfunction isBase64(str) {\n (0, _assertString2.default)(str);\n var len = str.length;\n if (!len || len % 4 !== 0 || notBase64.test(str)) {\n return false;\n }\n var firstPaddingChar = str.indexOf('=');\n return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '=';\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isDataURI;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar dataURI = /^\\s*data:([a-z]+\\/[a-z0-9\\-\\+]+(;[a-z\\-]+\\=[a-z0-9\\-]+)?)?(;base64)?,[a-z0-9\\!\\$\\&\\'\\,\\(\\)\\*\\+\\,\\;\\=\\-\\.\\_\\~\\:\\@\\/\\?\\%\\s]*\\s*$/i;\nfunction isDataURI(str) {\n (0, _assertString2.default)(str);\n return dataURI.test(str);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = ltrim;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction ltrim(str, chars) {\n (0, _assertString2.default)(str);\n var pattern = chars ? new RegExp('^[' + chars + ']+', 'g') : /^\\s+/g;\n return str.replace(pattern, '');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = rtrim;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction rtrim(str, chars) {\n (0, _assertString2.default)(str);\n var pattern = chars ? new RegExp('[' + chars + ']+$', 'g') : /\\s+$/g;\n return str.replace(pattern, '');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = trim;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction trim(str, chars) {\n (0, _assertString2.default)(str);\n var pattern = chars ? new RegExp('^[' + chars + ']+|[' + chars + ']+$', 'g') : /^\\s+|\\s+$/g;\n return str.replace(pattern, '');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = escape;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction escape(str) {\n (0, _assertString2.default)(str);\n return str.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>').replace(/\\//g, '/').replace(/\\`/g, '`');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = unescape;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction unescape(str) {\n (0, _assertString2.default)(str);\n return str.replace(/&/g, '&').replace(/"/g, '\"').replace(/'/g, \"'\").replace(/</g, '<').replace(/>/g, '>').replace(///g, '\\/').replace(/`/g, '\\`');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = stripLow;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _blacklist = require('./blacklist');\nvar _blacklist2 = _interopRequireDefault(_blacklist);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction stripLow(str, keep_new_lines) {\n (0, _assertString2.default)(str);\n var chars = keep_new_lines ? '\\\\x00-\\\\x09\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F' : '\\\\x00-\\\\x1F\\\\x7F';\n return (0, _blacklist2.default)(str, chars);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = whitelist;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction whitelist(str, chars) {\n (0, _assertString2.default)(str);\n return str.replace(new RegExp('[^' + chars + ']+', 'g'), '');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = blacklist;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction blacklist(str, chars) {\n (0, _assertString2.default)(str);\n return str.replace(new RegExp('[' + chars + ']+', 'g'), '');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isWhitelisted;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isWhitelisted(str, chars) {\n (0, _assertString2.default)(str);\n for (var i = str.length - 1; i >= 0; i--) {\n if (chars.indexOf(str[i]) === -1) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nexports.default = isByteLength;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction isByteLength(str, options) {\n (0, _assertString2.default)(str);\n var min = void 0;\n var max = void 0;\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction assertString(input) {\n if (typeof input !== 'string') {\n throw new TypeError('This library (validator.js) validates strings only');\n }\n}\nmodule.exports = exports['default'];","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isFDQN;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _merge = require('./util/merge');\nvar _merge2 = _interopRequireDefault(_merge);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\nfunction isFDQN(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_fqdn_options);\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n var parts = str.split('.');\n if (options.require_tld) {\n var tld = parts.pop();\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n }\n for (var part,\n i = 0; i < parts.length; i++) {\n part = parts[i];\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = isEmail;\nvar _assertString = require('./util/assertString');\nvar _assertString2 = _interopRequireDefault(_assertString);\nvar _merge = require('./util/merge');\nvar _merge2 = _interopRequireDefault(_merge);\nvar _isByteLength = require('./isByteLength');\nvar _isByteLength2 = _interopRequireDefault(_isByteLength);\nvar _isFQDN = require('./isFQDN');\nvar _isFQDN2 = _interopRequireDefault(_isFQDN);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar default_email_options = {\n allow_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\nfunction isEmail(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_email_options);\n if (options.allow_display_name) {\n var display_email = str.match(displayName);\n if (display_email) {\n str = display_email[1];\n }\n }\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n if (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com') {\n user = user.replace(/\\./g, '').toLowerCase();\n }\n if (!(0, _isByteLength2.default)(user, {max: 64}) || !(0, _isByteLength2.default)(domain, {max: 256})) {\n return false;\n }\n if (!(0, _isFQDN2.default)(domain, {require_tld: options.require_tld})) {\n return false;\n }\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n for (var i = 0; i < user_parts.length; i++) {\n if (!pattern.test(user_parts[i])) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var defaults = arguments[1];\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports['default'];","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nexports.default = normalizeEmail;\nvar _isEmail = require('./isEmail');\nvar _isEmail2 = _interopRequireDefault(_isEmail);\nvar _merge = require('./util/merge');\nvar _merge2 = _interopRequireDefault(_merge);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar default_normalize_email_options = {\n lowercase: true,\n remove_dots: true,\n remove_extension: true\n};\nfunction normalizeEmail(email, options) {\n options = (0, _merge2.default)(options, default_normalize_email_options);\n if (!(0, _isEmail2.default)(email)) {\n return false;\n }\n var parts = email.split('@', 2);\n parts[1] = parts[1].toLowerCase();\n if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {\n if (options.remove_extension) {\n parts[0] = parts[0].split('+')[0];\n }\n if (options.remove_dots) {\n parts[0] = parts[0].replace(/\\./g, '');\n }\n if (!parts[0].length) {\n return false;\n }\n parts[0] = parts[0].toLowerCase();\n parts[1] = 'gmail.com';\n } else if (options.lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n return parts.join('@');\n}\nmodule.exports = exports['default'];\n","/* */ \n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nexports.default = toString;\nfunction toString(input) {\n if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && input !== null) {\n if (typeof input.toString === 'function') {\n input = input.toString();\n } else {\n input = '[object Object]';\n }\n } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {\n input = '';\n }\n return String(input);\n}\nmodule.exports = exports['default'];","/* */ \n'use strict';\nObject.defineProperty(exports, \"__esModule\", {value: true});\nvar _toDate = require('./lib/toDate');\nvar _toDate2 = _interopRequireDefault(_toDate);\nvar _toFloat = require('./lib/toFloat');\nvar _toFloat2 = _interopRequireDefault(_toFloat);\nvar _toInt = require('./lib/toInt');\nvar _toInt2 = _interopRequireDefault(_toInt);\nvar _toBoolean = require('./lib/toBoolean');\nvar _toBoolean2 = _interopRequireDefault(_toBoolean);\nvar _equals = require('./lib/equals');\nvar _equals2 = _interopRequireDefault(_equals);\nvar _contains = require('./lib/contains');\nvar _contains2 = _interopRequireDefault(_contains);\nvar _matches = require('./lib/matches');\nvar _matches2 = _interopRequireDefault(_matches);\nvar _isEmail = require('./lib/isEmail');\nvar _isEmail2 = _interopRequireDefault(_isEmail);\nvar _isURL = require('./lib/isURL');\nvar _isURL2 = _interopRequireDefault(_isURL);\nvar _isMACAddress = require('./lib/isMACAddress');\nvar _isMACAddress2 = _interopRequireDefault(_isMACAddress);\nvar _isIP = require('./lib/isIP');\nvar _isIP2 = _interopRequireDefault(_isIP);\nvar _isFQDN = require('./lib/isFQDN');\nvar _isFQDN2 = _interopRequireDefault(_isFQDN);\nvar _isBoolean = require('./lib/isBoolean');\nvar _isBoolean2 = _interopRequireDefault(_isBoolean);\nvar _isAlpha = require('./lib/isAlpha');\nvar _isAlpha2 = _interopRequireDefault(_isAlpha);\nvar _isAlphanumeric = require('./lib/isAlphanumeric');\nvar _isAlphanumeric2 = _interopRequireDefault(_isAlphanumeric);\nvar _isNumeric = require('./lib/isNumeric');\nvar _isNumeric2 = _interopRequireDefault(_isNumeric);\nvar _isLowercase = require('./lib/isLowercase');\nvar _isLowercase2 = _interopRequireDefault(_isLowercase);\nvar _isUppercase = require('./lib/isUppercase');\nvar _isUppercase2 = _interopRequireDefault(_isUppercase);\nvar _isAscii = require('./lib/isAscii');\nvar _isAscii2 = _interopRequireDefault(_isAscii);\nvar _isFullWidth = require('./lib/isFullWidth');\nvar _isFullWidth2 = _interopRequireDefault(_isFullWidth);\nvar _isHalfWidth = require('./lib/isHalfWidth');\nvar _isHalfWidth2 = _interopRequireDefault(_isHalfWidth);\nvar _isVariableWidth = require('./lib/isVariableWidth');\nvar _isVariableWidth2 = _interopRequireDefault(_isVariableWidth);\nvar _isMultibyte = require('./lib/isMultibyte');\nvar _isMultibyte2 = _interopRequireDefault(_isMultibyte);\nvar _isSurrogatePair = require('./lib/isSurrogatePair');\nvar _isSurrogatePair2 = _interopRequireDefault(_isSurrogatePair);\nvar _isInt = require('./lib/isInt');\nvar _isInt2 = _interopRequireDefault(_isInt);\nvar _isFloat = require('./lib/isFloat');\nvar _isFloat2 = _interopRequireDefault(_isFloat);\nvar _isDecimal = require('./lib/isDecimal');\nvar _isDecimal2 = _interopRequireDefault(_isDecimal);\nvar _isHexadecimal = require('./lib/isHexadecimal');\nvar _isHexadecimal2 = _interopRequireDefault(_isHexadecimal);\nvar _isDivisibleBy = require('./lib/isDivisibleBy');\nvar _isDivisibleBy2 = _interopRequireDefault(_isDivisibleBy);\nvar _isHexColor = require('./lib/isHexColor');\nvar _isHexColor2 = _interopRequireDefault(_isHexColor);\nvar _isJSON = require('./lib/isJSON');\nvar _isJSON2 = _interopRequireDefault(_isJSON);\nvar _isNull = require('./lib/isNull');\nvar _isNull2 = _interopRequireDefault(_isNull);\nvar _isLength = require('./lib/isLength');\nvar _isLength2 = _interopRequireDefault(_isLength);\nvar _isByteLength = require('./lib/isByteLength');\nvar _isByteLength2 = _interopRequireDefault(_isByteLength);\nvar _isUUID = require('./lib/isUUID');\nvar _isUUID2 = _interopRequireDefault(_isUUID);\nvar _isMongoId = require('./lib/isMongoId');\nvar _isMongoId2 = _interopRequireDefault(_isMongoId);\nvar _isDate = require('./lib/isDate');\nvar _isDate2 = _interopRequireDefault(_isDate);\nvar _isAfter = require('./lib/isAfter');\nvar _isAfter2 = _interopRequireDefault(_isAfter);\nvar _isBefore = require('./lib/isBefore');\nvar _isBefore2 = _interopRequireDefault(_isBefore);\nvar _isIn = require('./lib/isIn');\nvar _isIn2 = _interopRequireDefault(_isIn);\nvar _isCreditCard = require('./lib/isCreditCard');\nvar _isCreditCard2 = _interopRequireDefault(_isCreditCard);\nvar _isISIN = require('./lib/isISIN');\nvar _isISIN2 = _interopRequireDefault(_isISIN);\nvar _isISBN = require('./lib/isISBN');\nvar _isISBN2 = _interopRequireDefault(_isISBN);\nvar _isMobilePhone = require('./lib/isMobilePhone');\nvar _isMobilePhone2 = _interopRequireDefault(_isMobilePhone);\nvar _isCurrency = require('./lib/isCurrency');\nvar _isCurrency2 = _interopRequireDefault(_isCurrency);\nvar _isISO = require('./lib/isISO8601');\nvar _isISO2 = _interopRequireDefault(_isISO);\nvar _isBase = require('./lib/isBase64');\nvar _isBase2 = _interopRequireDefault(_isBase);\nvar _isDataURI = require('./lib/isDataURI');\nvar _isDataURI2 = _interopRequireDefault(_isDataURI);\nvar _ltrim = require('./lib/ltrim');\nvar _ltrim2 = _interopRequireDefault(_ltrim);\nvar _rtrim = require('./lib/rtrim');\nvar _rtrim2 = _interopRequireDefault(_rtrim);\nvar _trim = require('./lib/trim');\nvar _trim2 = _interopRequireDefault(_trim);\nvar _escape = require('./lib/escape');\nvar _escape2 = _interopRequireDefault(_escape);\nvar _unescape = require('./lib/unescape');\nvar _unescape2 = _interopRequireDefault(_unescape);\nvar _stripLow = require('./lib/stripLow');\nvar _stripLow2 = _interopRequireDefault(_stripLow);\nvar _whitelist = require('./lib/whitelist');\nvar _whitelist2 = _interopRequireDefault(_whitelist);\nvar _blacklist = require('./lib/blacklist');\nvar _blacklist2 = _interopRequireDefault(_blacklist);\nvar _isWhitelisted = require('./lib/isWhitelisted');\nvar _isWhitelisted2 = _interopRequireDefault(_isWhitelisted);\nvar _normalizeEmail = require('./lib/normalizeEmail');\nvar _normalizeEmail2 = _interopRequireDefault(_normalizeEmail);\nvar _toString = require('./lib/util/toString');\nvar _toString2 = _interopRequireDefault(_toString);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\nvar version = '5.2.0';\nvar validator = {\n version: version,\n toDate: _toDate2.default,\n toFloat: _toFloat2.default,\n toInt: _toInt2.default,\n toBoolean: _toBoolean2.default,\n equals: _equals2.default,\n contains: _contains2.default,\n matches: _matches2.default,\n isEmail: _isEmail2.default,\n isURL: _isURL2.default,\n isMACAddress: _isMACAddress2.default,\n isIP: _isIP2.default,\n isFQDN: _isFQDN2.default,\n isBoolean: _isBoolean2.default,\n isAlpha: _isAlpha2.default,\n isAlphanumeric: _isAlphanumeric2.default,\n isNumeric: _isNumeric2.default,\n isLowercase: _isLowercase2.default,\n isUppercase: _isUppercase2.default,\n isAscii: _isAscii2.default,\n isFullWidth: _isFullWidth2.default,\n isHalfWidth: _isHalfWidth2.default,\n isVariableWidth: _isVariableWidth2.default,\n isMultibyte: _isMultibyte2.default,\n isSurrogatePair: _isSurrogatePair2.default,\n isInt: _isInt2.default,\n isFloat: _isFloat2.default,\n isDecimal: _isDecimal2.default,\n isHexadecimal: _isHexadecimal2.default,\n isDivisibleBy: _isDivisibleBy2.default,\n isHexColor: _isHexColor2.default,\n isJSON: _isJSON2.default,\n isNull: _isNull2.default,\n isLength: _isLength2.default,\n isByteLength: _isByteLength2.default,\n isUUID: _isUUID2.default,\n isMongoId: _isMongoId2.default,\n isDate: _isDate2.default,\n isAfter: _isAfter2.default,\n isBefore: _isBefore2.default,\n isIn: _isIn2.default,\n isCreditCard: _isCreditCard2.default,\n isISIN: _isISIN2.default,\n isISBN: _isISBN2.default,\n isMobilePhone: _isMobilePhone2.default,\n isCurrency: _isCurrency2.default,\n isISO8601: _isISO2.default,\n isBase64: _isBase2.default,\n isDataURI: _isDataURI2.default,\n ltrim: _ltrim2.default,\n rtrim: _rtrim2.default,\n trim: _trim2.default,\n escape: _escape2.default,\n unescape: _unescape2.default,\n stripLow: _stripLow2.default,\n whitelist: _whitelist2.default,\n blacklist: _blacklist2.default,\n isWhitelisted: _isWhitelisted2.default,\n normalizeEmail: _normalizeEmail2.default,\n toString: _toString2.default\n};\nexports.default = validator;\nmodule.exports = exports['default'];\n","module.exports = require(\"npm:validator@5.2.0/index.js\");","/*jshint maxlen: false*/\n\nvar validator = require(\"validator\");\n\nvar FormatValidators = {\n \"date\": function (date) {\n if (typeof date !== \"string\") {\n return true;\n }\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/.exec(date);\n if (matches === null) {\n return false;\n }\n // var year = matches[1];\n // var month = matches[2];\n // var day = matches[3];\n if (matches[2] < \"01\" || matches[2] > \"12\" || matches[3] < \"01\" || matches[3] > \"31\") {\n return false;\n }\n return true;\n },\n \"date-time\": function (dateTime) {\n if (typeof dateTime !== \"string\") {\n return true;\n }\n // date-time from http://tools.ietf.org/html/rfc3339#section-5.6\n var s = dateTime.toLowerCase().split(\"t\");\n if (!FormatValidators.date(s[0])) {\n return false;\n }\n var matches = /^([0-9]{2}):([0-9]{2}):([0-9]{2})(.[0-9]+)?(z|([+-][0-9]{2}:[0-9]{2}))$/.exec(s[1]);\n if (matches === null) {\n return false;\n }\n // var hour = matches[1];\n // var minute = matches[2];\n // var second = matches[3];\n // var fraction = matches[4];\n // var timezone = matches[5];\n if (matches[1] > \"23\" || matches[2] > \"59\" || matches[3] > \"59\") {\n return false;\n }\n return true;\n },\n \"email\": function (email) {\n if (typeof email !== \"string\") {\n return true;\n }\n return validator.isEmail(email, { \"require_tld\": true });\n },\n \"hostname\": function (hostname) {\n if (typeof hostname !== \"string\") {\n return true;\n }\n /*\n http://json-schema.org/latest/json-schema-validation.html#anchor114\n A string instance is valid against this attribute if it is a valid\n representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].\n\n http://tools.ietf.org/html/rfc1034#section-3.5\n\n <digit> ::= any one of the ten digits 0 through 9\n var digit = /[0-9]/;\n\n <letter> ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case\n var letter = /[a-zA-Z]/;\n\n <let-dig> ::= <letter> | <digit>\n var letDig = /[0-9a-zA-Z]/;\n\n <let-dig-hyp> ::= <let-dig> | \"-\"\n var letDigHyp = /[-0-9a-zA-Z]/;\n\n <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n var ldhStr = /[-0-9a-zA-Z]+/;\n\n <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]\n var label = /[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?/;\n\n <subdomain> ::= <label> | <subdomain> \".\" <label>\n var subdomain = /^[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?(\\.[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?)*$/;\n\n <domain> ::= <subdomain> | \" \"\n var domain = null;\n */\n var valid = /^[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?(\\.[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?)*$/.test(hostname);\n if (valid) {\n // the sum of all label octets and label lengths is limited to 255.\n if (hostname.length > 255) { return false; }\n // Each node has a label, which is zero to 63 octets in length\n var labels = hostname.split(\".\");\n for (var i = 0; i < labels.length; i++) { if (labels[i].length > 63) { return false; } }\n }\n return valid;\n },\n \"host-name\": function (hostname) {\n return FormatValidators.hostname.call(this, hostname);\n },\n \"ipv4\": function (ipv4) {\n if (typeof ipv4 !== \"string\") { return true; }\n return validator.isIP(ipv4, 4);\n },\n \"ipv6\": function (ipv6) {\n if (typeof ipv6 !== \"string\") { return true; }\n return validator.isIP(ipv6, 6);\n },\n \"regex\": function (str) {\n try {\n RegExp(str);\n return true;\n } catch (e) {\n return false;\n }\n },\n \"uri\": function (uri) {\n if (this.options.strictUris) {\n return FormatValidators[\"strict-uri\"].apply(this, arguments);\n }\n // https://github.com/zaggino/z-schema/issues/18\n // RegExp from http://tools.ietf.org/html/rfc3986#appendix-B\n return typeof uri !== \"string\" || RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\").test(uri);\n },\n \"strict-uri\": function (uri) {\n return typeof uri !== \"string\" || validator.isURL(uri);\n }\n};\n\nmodule.exports = FormatValidators;\n","/* */ \n\"use strict\";\nvar FormatValidators = require('./FormatValidators'),\n Report = require('./Report'),\n Utils = require('./Utils');\nvar JsonValidators = {\n multipleOf: function(report, schema, json) {\n if (typeof json !== \"number\") {\n return;\n }\n if (Utils.whatIs(json / schema.multipleOf) !== \"integer\") {\n report.addError(\"MULTIPLE_OF\", [json, schema.multipleOf], null, schema.description);\n }\n },\n maximum: function(report, schema, json) {\n if (typeof json !== \"number\") {\n return;\n }\n if (schema.exclusiveMaximum !== true) {\n if (json > schema.maximum) {\n report.addError(\"MAXIMUM\", [json, schema.maximum], null, schema.description);\n }\n } else {\n if (json >= schema.maximum) {\n report.addError(\"MAXIMUM_EXCLUSIVE\", [json, schema.maximum], null, schema.description);\n }\n }\n },\n exclusiveMaximum: function() {},\n minimum: function(report, schema, json) {\n if (typeof json !== \"number\") {\n return;\n }\n if (schema.exclusiveMinimum !== true) {\n if (json < schema.minimum) {\n report.addError(\"MINIMUM\", [json, schema.minimum], null, schema.description);\n }\n } else {\n if (json <= schema.minimum) {\n report.addError(\"MINIMUM_EXCLUSIVE\", [json, schema.minimum], null, schema.description);\n }\n }\n },\n exclusiveMinimum: function() {},\n maxLength: function(report, schema, json) {\n if (typeof json !== \"string\") {\n return;\n }\n if (Utils.ucs2decode(json).length > schema.maxLength) {\n report.addError(\"MAX_LENGTH\", [json.length, schema.maxLength], null, schema.description);\n }\n },\n minLength: function(report, schema, json) {\n if (typeof json !== \"string\") {\n return;\n }\n if (Utils.ucs2decode(json).length < schema.minLength) {\n report.addError(\"MIN_LENGTH\", [json.length, schema.minLength], null, schema.description);\n }\n },\n pattern: function(report, schema, json) {\n if (typeof json !== \"string\") {\n return;\n }\n if (RegExp(schema.pattern).test(json) === false) {\n report.addError(\"PATTERN\", [schema.pattern, json], null, schema.description);\n }\n },\n additionalItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (schema.additionalItems === false && Array.isArray(schema.items)) {\n if (json.length > schema.items.length) {\n report.addError(\"ARRAY_ADDITIONAL_ITEMS\", null, null, schema.description);\n }\n }\n },\n items: function() {},\n maxItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (json.length > schema.maxItems) {\n report.addError(\"ARRAY_LENGTH_LONG\", [json.length, schema.maxItems], null, schema.description);\n }\n },\n minItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (json.length < schema.minItems) {\n report.addError(\"ARRAY_LENGTH_SHORT\", [json.length, schema.minItems], null, schema.description);\n }\n },\n uniqueItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (schema.uniqueItems === true) {\n var matches = [];\n if (Utils.isUniqueArray(json, matches) === false) {\n report.addError(\"ARRAY_UNIQUE\", matches, null, schema.description);\n }\n }\n },\n maxProperties: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var keysCount = Object.keys(json).length;\n if (keysCount > schema.maxProperties) {\n report.addError(\"OBJECT_PROPERTIES_MAXIMUM\", [keysCount, schema.maxProperties], null, schema.description);\n }\n },\n minProperties: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var keysCount = Object.keys(json).length;\n if (keysCount < schema.minProperties) {\n report.addError(\"OBJECT_PROPERTIES_MINIMUM\", [keysCount, schema.minProperties], null, schema.description);\n }\n },\n required: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var idx = schema.required.length;\n while (idx--) {\n var requiredPropertyName = schema.required[idx];\n if (json[requiredPropertyName] === undefined) {\n report.addError(\"OBJECT_MISSING_REQUIRED_PROPERTY\", [requiredPropertyName], null, schema.description);\n }\n }\n },\n additionalProperties: function(report, schema, json) {\n if (schema.properties === undefined && schema.patternProperties === undefined) {\n return JsonValidators.properties.call(this, report, schema, json);\n }\n },\n patternProperties: function(report, schema, json) {\n if (schema.properties === undefined) {\n return JsonValidators.properties.call(this, report, schema, json);\n }\n },\n properties: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var properties = schema.properties !== undefined ? schema.properties : {};\n var patternProperties = schema.patternProperties !== undefined ? schema.patternProperties : {};\n if (schema.additionalProperties === false) {\n var s = Object.keys(json);\n var p = Object.keys(properties);\n var pp = Object.keys(patternProperties);\n s = Utils.difference(s, p);\n var idx = pp.length;\n while (idx--) {\n var regExp = RegExp(pp[idx]),\n idx2 = s.length;\n while (idx2--) {\n if (regExp.test(s[idx2]) === true) {\n s.splice(idx2, 1);\n }\n }\n }\n if (s.length > 0) {\n var idx3 = this.options.assumeAdditional.length;\n if (idx3) {\n while (idx3--) {\n var io = s.indexOf(this.options.assumeAdditional[idx3]);\n if (io !== -1) {\n s.splice(io, 1);\n }\n }\n }\n if (s.length > 0) {\n report.addError(\"OBJECT_ADDITIONAL_PROPERTIES\", [s], null, schema.description);\n }\n }\n }\n },\n dependencies: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var keys = Object.keys(schema.dependencies),\n idx = keys.length;\n while (idx--) {\n var dependencyName = keys[idx];\n if (json[dependencyName]) {\n var dependencyDefinition = schema.dependencies[dependencyName];\n if (Utils.whatIs(dependencyDefinition) === \"object\") {\n exports.validate.call(this, report, dependencyDefinition, json);\n } else {\n var idx2 = dependencyDefinition.length;\n while (idx2--) {\n var requiredPropertyName = dependencyDefinition[idx2];\n if (json[requiredPropertyName] === undefined) {\n report.addError(\"OBJECT_DEPENDENCY_KEY\", [requiredPropertyName, dependencyName], null, schema.description);\n }\n }\n }\n }\n }\n },\n enum: function(report, schema, json) {\n var match = false,\n idx = schema.enum.length;\n while (idx--) {\n if (Utils.areEqual(json, schema.enum[idx])) {\n match = true;\n break;\n }\n }\n if (match === false) {\n report.addError(\"ENUM_MISMATCH\", [json], null, schema.description);\n }\n },\n allOf: function(report, schema, json) {\n var idx = schema.allOf.length;\n while (idx--) {\n var validateResult = exports.validate.call(this, report, schema.allOf[idx], json);\n if (this.options.breakOnFirstError && validateResult === false) {\n break;\n }\n }\n },\n anyOf: function(report, schema, json) {\n var subReports = [],\n passed = false,\n idx = schema.anyOf.length;\n while (idx-- && passed === false) {\n var subReport = new Report(report);\n subReports.push(subReport);\n passed = exports.validate.call(this, subReport, schema.anyOf[idx], json);\n }\n if (passed === false) {\n report.addError(\"ANY_OF_MISSING\", undefined, subReports, schema.description);\n }\n },\n oneOf: function(report, schema, json) {\n var passes = 0,\n subReports = [],\n idx = schema.oneOf.length;\n while (idx--) {\n var subReport = new Report(report, {maxErrors: 1});\n subReports.push(subReport);\n if (exports.validate.call(this, subReport, schema.oneOf[idx], json) === true) {\n passes++;\n }\n }\n if (passes === 0) {\n report.addError(\"ONE_OF_MISSING\", undefined, subReports, schema.description);\n } else if (passes > 1) {\n report.addError(\"ONE_OF_MULTIPLE\", null, null, schema.description);\n }\n },\n not: function(report, schema, json) {\n var subReport = new Report(report);\n if (exports.validate.call(this, subReport, schema.not, json) === true) {\n report.addError(\"NOT_PASSED\", null, null, schema.description);\n }\n },\n definitions: function() {},\n format: function(report, schema, json) {\n var formatValidatorFn = FormatValidators[schema.format];\n if (typeof formatValidatorFn === \"function\") {\n if (formatValidatorFn.length === 2) {\n report.addAsyncTask(formatValidatorFn, [json], function(result) {\n if (result !== true) {\n report.addError(\"INVALID_FORMAT\", [schema.format, json], null, schema.description);\n }\n });\n } else {\n if (formatValidatorFn.call(this, json) !== true) {\n report.addError(\"INVALID_FORMAT\", [schema.format, json], null, schema.description);\n }\n }\n } else if (this.options.ignoreUnknownFormats !== true) {\n report.addError(\"UNKNOWN_FORMAT\", [schema.format], null, schema.description);\n }\n }\n};\nvar recurseArray = function(report, schema, json) {\n var idx = json.length;\n if (Array.isArray(schema.items)) {\n while (idx--) {\n if (idx < schema.items.length) {\n report.path.push(idx.toString());\n exports.validate.call(this, report, schema.items[idx], json[idx]);\n report.path.pop();\n } else {\n if (typeof schema.additionalItems === \"object\") {\n report.path.push(idx.toString());\n exports.validate.call(this, report, schema.additionalItems, json[idx]);\n report.path.pop();\n }\n }\n }\n } else if (typeof schema.items === \"object\") {\n while (idx--) {\n report.path.push(idx.toString());\n exports.validate.call(this, report, schema.items, json[idx]);\n report.path.pop();\n }\n }\n};\nvar recurseObject = function(report, schema, json) {\n var additionalProperties = schema.additionalProperties;\n if (additionalProperties === true || additionalProperties === undefined) {\n additionalProperties = {};\n }\n var p = schema.properties ? Object.keys(schema.properties) : [];\n var pp = schema.patternProperties ? Object.keys(schema.patternProperties) : [];\n var keys = Object.keys(json),\n idx = keys.length;\n while (idx--) {\n var m = keys[idx],\n propertyValue = json[m];\n var s = [];\n if (p.indexOf(m) !== -1) {\n s.push(schema.properties[m]);\n }\n var idx2 = pp.length;\n while (idx2--) {\n var regexString = pp[idx2];\n if (RegExp(regexString).test(m) === true) {\n s.push(schema.patternProperties[regexString]);\n }\n }\n if (s.length === 0 && additionalProperties !== false) {\n s.push(additionalProperties);\n }\n idx2 = s.length;\n while (idx2--) {\n report.path.push(m);\n exports.validate.call(this, report, s[idx2], propertyValue);\n report.path.pop();\n }\n }\n};\nexports.validate = function(report, schema, json) {\n report.commonErrorMessage = \"JSON_OBJECT_VALIDATION_FAILED\";\n var to = Utils.whatIs(schema);\n if (to !== \"object\") {\n report.addError(\"SCHEMA_NOT_AN_OBJECT\", [to], null, schema.description);\n return false;\n }\n var keys = Object.keys(schema);\n if (keys.length === 0) {\n return true;\n }\n var isRoot = false;\n if (!report.rootSchema) {\n report.rootSchema = schema;\n isRoot = true;\n }\n if (schema.$ref !== undefined) {\n var maxRefs = 99;\n while (schema.$ref && maxRefs > 0) {\n if (!schema.__$refResolved) {\n report.addError(\"REF_UNRESOLVED\", [schema.$ref], null, schema.description);\n break;\n } else if (schema.__$refResolved === schema) {\n break;\n } else {\n schema = schema.__$refResolved;\n keys = Object.keys(schema);\n }\n maxRefs--;\n }\n if (maxRefs === 0) {\n throw new Error(\"Circular dependency by $ref references!\");\n }\n }\n var jsonType = Utils.whatIs(json);\n if (schema.type) {\n if (typeof schema.type === \"string\") {\n if (jsonType !== schema.type && (jsonType !== \"integer\" || schema.type !== \"number\")) {\n report.addError(\"INVALID_TYPE\", [schema.type, jsonType], null, schema.description);\n if (this.options.breakOnFirstError) {\n return false;\n }\n }\n } else {\n if (schema.type.indexOf(jsonType) === -1 && (jsonType !== \"integer\" || schema.type.indexOf(\"number\") === -1)) {\n report.addError(\"INVALID_TYPE\", [schema.type, jsonType], null, schema.description);\n if (this.options.breakOnFirstError) {\n return false;\n }\n }\n }\n }\n var idx = keys.length;\n while (idx--) {\n if (JsonValidators[keys[idx]]) {\n JsonValidators[keys[idx]].call(this, report, schema, json);\n if (report.errors.length && this.options.breakOnFirstError) {\n break;\n }\n }\n }\n if (report.errors.length === 0 || this.options.breakOnFirstError === false) {\n if (jsonType === \"array\") {\n recurseArray.call(this, report, schema, json);\n } else if (jsonType === \"object\") {\n recurseObject.call(this, report, schema, json);\n }\n }\n if (typeof this.options.customValidator === \"function\") {\n this.options.customValidator(report, schema, json);\n }\n if (isRoot) {\n report.rootSchema = undefined;\n }\n return report.errors.length === 0;\n};\n","/* */ \n(function(process) {\n var FUNC_ERROR_TEXT = 'Expected a function';\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n var INFINITY = 1 / 0;\n var funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n var rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var reEscapeChar = /\\\\(\\\\)?/g;\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) ? exports : undefined;\n var freeModule = (objectTypes[typeof module] && module && !module.nodeType) ? module : undefined;\n var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n var freeSelf = checkGlobal(objectTypes[typeof self] && self);\n var freeWindow = checkGlobal(objectTypes[typeof window] && window);\n var thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n var root = freeGlobal || ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || freeSelf || thisGlobal || Function('return this')();\n function checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n }\n function isHostObject(value) {\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n }\n var arrayProto = Array.prototype,\n objectProto = Object.prototype;\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = objectProto.hasOwnProperty;\n var objectToString = objectProto.toString;\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n var Symbol = root.Symbol,\n splice = arrayProto.splice;\n var Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n function Hash() {}\n function hashDelete(hash, key) {\n return hashHas(hash, key) && delete hash[key];\n }\n function hashGet(hash, key) {\n if (nativeCreate) {\n var result = hash[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n }\n function hashHas(hash, key) {\n return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n }\n function hashSet(hash, key, value) {\n hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n }\n Hash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n function MapCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n }\n function mapClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': Map ? new Map : [],\n 'string': new Hash\n };\n }\n function mapDelete(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n }\n function mapGet(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.get(key) : assocGet(data.map, key);\n }\n function mapHas(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.has(key) : assocHas(data.map, key);\n }\n function mapSet(key, value) {\n var data = this.__data__;\n if (isKeyable(key)) {\n hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n } else if (Map) {\n data.map.set(key, value);\n } else {\n assocSet(data.map, key, value);\n }\n return this;\n }\n MapCache.prototype.clear = mapClear;\n MapCache.prototype['delete'] = mapDelete;\n MapCache.prototype.get = mapGet;\n MapCache.prototype.has = mapHas;\n MapCache.prototype.set = mapSet;\n function assocDelete(array, key) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = array.length - 1;\n if (index == lastIndex) {\n array.pop();\n } else {\n splice.call(array, index, 1);\n }\n return true;\n }\n function assocGet(array, key) {\n var index = assocIndexOf(array, key);\n return index < 0 ? undefined : array[index][1];\n }\n function assocHas(array, key) {\n return assocIndexOf(array, key) > -1;\n }\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n function assocSet(array, key, value) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n array.push([key, value]);\n } else {\n array[index][1] = value;\n }\n }\n function getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n }\n function isKeyable(value) {\n var type = typeof value;\n return type == 'number' || type == 'boolean' || (type == 'string' && value != '__proto__') || value == null;\n }\n var stringToPath = memoize(function(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n memoize.Cache = MapCache;\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n function isFunction(value) {\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n }\n function isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n }\n function isObjectLike(value) {\n return !!value && typeof value == 'object';\n }\n function isNative(value) {\n if (!isObject(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n function isSymbol(value) {\n return typeof value == 'symbol' || (isObjectLike(value) && objectToString.call(value) == symbolTag);\n }\n function toString(value) {\n if (typeof value == 'string') {\n return value;\n }\n if (value == null) {\n return '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n module.exports = stringToPath;\n})(require('process'));\n","module.exports = require(\"npm:lodash._stringtopath@4.7.1/index\");","/**\n * lodash 4.2.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nvar stringToPath = require('lodash._stringtopath');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n var type = typeof value;\n if (type == 'number' || type == 'symbol') {\n return true;\n }\n return !isArray(value) &&\n (isSymbol(value) || reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object)));\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","module.exports = require(\"npm:lodash.get@4.2.1/index\");","/* */ \n\"use strict\";\n\nmodule.exports = {\n\n INVALID_TYPE: \"Expected type {0} but found type {1}\",\n INVALID_FORMAT: \"Object didn't pass validation for format {0}: {1}\",\n ENUM_MISMATCH: \"No enum match for: {0}\",\n ANY_OF_MISSING: \"Data does not match any schemas from 'anyOf'\",\n ONE_OF_MISSING: \"Data does not match any schemas from 'oneOf'\",\n ONE_OF_MULTIPLE: \"Data is valid against more than one schema from 'oneOf'\",\n NOT_PASSED: \"Data matches schema from 'not'\",\n\n // Array errors\n ARRAY_LENGTH_SHORT: \"Array is too short ({0}), minimum {1}\",\n ARRAY_LENGTH_LONG: \"Array is too long ({0}), maximum {1}\",\n ARRAY_UNIQUE: \"Array items are not unique (indexes {0} and {1})\",\n ARRAY_ADDITIONAL_ITEMS: \"Additional items not allowed\",\n\n // Numeric errors\n MULTIPLE_OF: \"Value {0} is not a multiple of {1}\",\n MINIMUM: \"Value {0} is less than minimum {1}\",\n MINIMUM_EXCLUSIVE: \"Value {0} is equal or less than exclusive minimum {1}\",\n MAXIMUM: \"Value {0} is greater than maximum {1}\",\n MAXIMUM_EXCLUSIVE: \"Value {0} is equal or greater than exclusive maximum {1}\",\n\n // Object errors\n OBJECT_PROPERTIES_MINIMUM: \"Too few properties defined ({0}), minimum {1}\",\n OBJECT_PROPERTIES_MAXIMUM: \"Too many properties defined ({0}), maximum {1}\",\n OBJECT_MISSING_REQUIRED_PROPERTY: \"Missing required property: {0}\",\n OBJECT_ADDITIONAL_PROPERTIES: \"Additional properties not allowed: {0}\",\n OBJECT_DEPENDENCY_KEY: \"Dependency failed - key must exist: {0} (due to key: {1})\",\n\n // String errors\n MIN_LENGTH: \"String is too short ({0} chars), minimum {1}\",\n MAX_LENGTH: \"String is too long ({0} chars), maximum {1}\",\n PATTERN: \"String does not match pattern {0}: {1}\",\n\n // Schema validation errors\n KEYWORD_TYPE_EXPECTED: \"Keyword '{0}' is expected to be of type '{1}'\",\n KEYWORD_UNDEFINED_STRICT: \"Keyword '{0}' must be defined in strict mode\",\n KEYWORD_UNEXPECTED: \"Keyword '{0}' is not expected to appear in the schema\",\n KEYWORD_MUST_BE: \"Keyword '{0}' must be {1}\",\n KEYWORD_DEPENDENCY: \"Keyword '{0}' requires keyword '{1}'\",\n KEYWORD_PATTERN: \"Keyword '{0}' is not a valid RegExp pattern: {1}\",\n KEYWORD_VALUE_TYPE: \"Each element of keyword '{0}' array must be a '{1}'\",\n UNKNOWN_FORMAT: \"There is no validation function for format '{0}'\",\n CUSTOM_MODE_FORCE_PROPERTIES: \"{0} must define at least one property if present\",\n\n // Remote errors\n REF_UNRESOLVED: \"Reference has not been resolved during compilation: {0}\",\n UNRESOLVABLE_REFERENCE: \"Reference could not be resolved: {0}\",\n SCHEMA_NOT_REACHABLE: \"Validator was not able to read schema with uri: {0}\",\n SCHEMA_TYPE_EXPECTED: \"Schema is expected to be of type 'object'\",\n SCHEMA_NOT_AN_OBJECT: \"Schema is not an object: {0}\",\n ASYNC_TIMEOUT: \"{0} asynchronous task(s) have timed out after {1} ms\",\n PARENT_SCHEMA_VALIDATION_FAILED: \"Schema failed to validate against its parent schema, see inner errors for details.\",\n REMOTE_NOT_VALID: \"Remote reference didn't compile successfully: {0}\"\n\n};\n","/* */ \n(function(process) {\n \"use strict\";\n var get = require('lodash.get');\n var Errors = require('./Errors');\n var Utils = require('./Utils');\n function Report(parentOrOptions, reportOptions) {\n this.parentReport = parentOrOptions instanceof Report ? parentOrOptions : undefined;\n this.options = parentOrOptions instanceof Report ? parentOrOptions.options : parentOrOptions || {};\n this.reportOptions = reportOptions || {};\n this.errors = [];\n this.path = [];\n this.asyncTasks = [];\n }\n Report.prototype.isValid = function() {\n if (this.asyncTasks.length > 0) {\n throw new Error(\"Async tasks pending, can't answer isValid\");\n }\n return this.errors.length === 0;\n };\n Report.prototype.addAsyncTask = function(fn, args, asyncTaskResultProcessFn) {\n this.asyncTasks.push([fn, args, asyncTaskResultProcessFn]);\n };\n Report.prototype.processAsyncTasks = function(timeout, callback) {\n var validationTimeout = timeout || 2000,\n tasksCount = this.asyncTasks.length,\n idx = tasksCount,\n timedOut = false,\n self = this;\n function finish() {\n process.nextTick(function() {\n var valid = self.errors.length === 0,\n err = valid ? undefined : self.errors;\n callback(err, valid);\n });\n }\n function respond(asyncTaskResultProcessFn) {\n return function(asyncTaskResult) {\n if (timedOut) {\n return;\n }\n asyncTaskResultProcessFn(asyncTaskResult);\n if (--tasksCount === 0) {\n finish();\n }\n };\n }\n if (tasksCount === 0 || this.errors.length > 0) {\n finish();\n return;\n }\n while (idx--) {\n var task = this.asyncTasks[idx];\n task[0].apply(null, task[1].concat(respond(task[2])));\n }\n setTimeout(function() {\n if (tasksCount > 0) {\n timedOut = true;\n self.addError(\"ASYNC_TIMEOUT\", [tasksCount, validationTimeout]);\n callback(self.errors, false);\n }\n }, validationTimeout);\n };\n Report.prototype.getPath = function(returnPathAsString) {\n var path = [];\n if (this.parentReport) {\n path = path.concat(this.parentReport.path);\n }\n path = path.concat(this.path);\n if (returnPathAsString !== true) {\n path = \"#/\" + path.map(function(segment) {\n if (Utils.isAbsoluteUri(segment)) {\n return \"uri(\" + segment + \")\";\n }\n return segment.replace(/\\~/g, \"~0\").replace(/\\//g, \"~1\");\n }).join(\"/\");\n }\n return path;\n };\n Report.prototype.getSchemaId = function() {\n if (!this.rootSchema) {\n return null;\n }\n var path = [];\n if (this.parentReport) {\n path = path.concat(this.parentReport.path);\n }\n path = path.concat(this.path);\n while (path.length > 0) {\n var obj = get(this.rootSchema, path);\n if (obj && obj.id) {\n return obj.id;\n }\n path.pop();\n }\n return this.rootSchema.id;\n };\n Report.prototype.hasError = function(errorCode, params) {\n var idx = this.errors.length;\n while (idx--) {\n if (this.errors[idx].code === errorCode) {\n var match = true;\n var idx2 = this.errors[idx].params.length;\n while (idx2--) {\n if (this.errors[idx].params[idx2] !== params[idx2]) {\n match = false;\n }\n }\n if (match) {\n return match;\n }\n }\n }\n return false;\n };\n Report.prototype.addError = function(errorCode, params, subReports, schemaDescription) {\n if (!errorCode) {\n throw new Error(\"No errorCode passed into addError()\");\n }\n this.addCustomError(errorCode, Errors[errorCode], params, subReports, schemaDescription);\n };\n Report.prototype.addCustomError = function(errorCode, errorMessage, params, subReports, schemaDescription) {\n if (this.errors.length >= this.reportOptions.maxErrors) {\n return;\n }\n if (!errorMessage) {\n throw new Error(\"No errorMessage known for code \" + errorCode);\n }\n params = params || [];\n var idx = params.length;\n while (idx--) {\n var whatIs = Utils.whatIs(params[idx]);\n var param = (whatIs === \"object\" || whatIs === \"null\") ? JSON.stringify(params[idx]) : params[idx];\n errorMessage = errorMessage.replace(\"{\" + idx + \"}\", param);\n }\n var err = {\n code: errorCode,\n params: params,\n message: errorMessage,\n path: this.getPath(this.options.reportPathAsArray),\n schemaId: this.getSchemaId()\n };\n if (schemaDescription) {\n err.description = schemaDescription;\n }\n if (subReports != null) {\n if (!Array.isArray(subReports)) {\n subReports = [subReports];\n }\n err.inner = [];\n idx = subReports.length;\n while (idx--) {\n var subReport = subReports[idx],\n idx2 = subReport.errors.length;\n while (idx2--) {\n err.inner.push(subReport.errors[idx2]);\n }\n }\n if (err.inner.length === 0) {\n err.inner = undefined;\n }\n }\n this.errors.push(err);\n };\n module.exports = Report;\n})(require('process'));\n","/* */ \n\"use strict\";\nvar FormatValidators = require('./FormatValidators'),\n JsonValidation = require('./JsonValidation'),\n Report = require('./Report'),\n Utils = require('./Utils');\nvar SchemaValidators = {\n $ref: function(report, schema) {\n if (typeof schema.$ref !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"$ref\", \"string\"]);\n }\n },\n $schema: function(report, schema) {\n if (typeof schema.$schema !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"$schema\", \"string\"]);\n }\n },\n multipleOf: function(report, schema) {\n if (typeof schema.multipleOf !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"multipleOf\", \"number\"]);\n } else if (schema.multipleOf <= 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"multipleOf\", \"strictly greater than 0\"]);\n }\n },\n maximum: function(report, schema) {\n if (typeof schema.maximum !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maximum\", \"number\"]);\n }\n },\n exclusiveMaximum: function(report, schema) {\n if (typeof schema.exclusiveMaximum !== \"boolean\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"exclusiveMaximum\", \"boolean\"]);\n } else if (schema.maximum === undefined) {\n report.addError(\"KEYWORD_DEPENDENCY\", [\"exclusiveMaximum\", \"maximum\"]);\n }\n },\n minimum: function(report, schema) {\n if (typeof schema.minimum !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minimum\", \"number\"]);\n }\n },\n exclusiveMinimum: function(report, schema) {\n if (typeof schema.exclusiveMinimum !== \"boolean\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"exclusiveMinimum\", \"boolean\"]);\n } else if (schema.minimum === undefined) {\n report.addError(\"KEYWORD_DEPENDENCY\", [\"exclusiveMinimum\", \"minimum\"]);\n }\n },\n maxLength: function(report, schema) {\n if (Utils.whatIs(schema.maxLength) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maxLength\", \"integer\"]);\n } else if (schema.maxLength < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"maxLength\", \"greater than, or equal to 0\"]);\n }\n },\n minLength: function(report, schema) {\n if (Utils.whatIs(schema.minLength) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minLength\", \"integer\"]);\n } else if (schema.minLength < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"minLength\", \"greater than, or equal to 0\"]);\n }\n },\n pattern: function(report, schema) {\n if (typeof schema.pattern !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"pattern\", \"string\"]);\n } else {\n try {\n RegExp(schema.pattern);\n } catch (e) {\n report.addError(\"KEYWORD_PATTERN\", [\"pattern\", schema.pattern]);\n }\n }\n },\n additionalItems: function(report, schema) {\n var type = Utils.whatIs(schema.additionalItems);\n if (type !== \"boolean\" && type !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"additionalItems\", [\"boolean\", \"object\"]]);\n } else if (type === \"object\") {\n report.path.push(\"additionalItems\");\n exports.validateSchema.call(this, report, schema.additionalItems);\n report.path.pop();\n }\n },\n items: function(report, schema) {\n var type = Utils.whatIs(schema.items);\n if (type === \"object\") {\n report.path.push(\"items\");\n exports.validateSchema.call(this, report, schema.items);\n report.path.pop();\n } else if (type === \"array\") {\n var idx = schema.items.length;\n while (idx--) {\n report.path.push(\"items\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.items[idx]);\n report.path.pop();\n report.path.pop();\n }\n } else {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"items\", [\"array\", \"object\"]]);\n }\n if (this.options.forceAdditional === true && schema.additionalItems === undefined && Array.isArray(schema.items)) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"additionalItems\"]);\n }\n if (this.options.assumeAdditional && schema.additionalItems === undefined && Array.isArray(schema.items)) {\n schema.additionalItems = false;\n }\n },\n maxItems: function(report, schema) {\n if (typeof schema.maxItems !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maxItems\", \"integer\"]);\n } else if (schema.maxItems < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"maxItems\", \"greater than, or equal to 0\"]);\n }\n },\n minItems: function(report, schema) {\n if (Utils.whatIs(schema.minItems) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minItems\", \"integer\"]);\n } else if (schema.minItems < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"minItems\", \"greater than, or equal to 0\"]);\n }\n },\n uniqueItems: function(report, schema) {\n if (typeof schema.uniqueItems !== \"boolean\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"uniqueItems\", \"boolean\"]);\n }\n },\n maxProperties: function(report, schema) {\n if (Utils.whatIs(schema.maxProperties) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maxProperties\", \"integer\"]);\n } else if (schema.maxProperties < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"maxProperties\", \"greater than, or equal to 0\"]);\n }\n },\n minProperties: function(report, schema) {\n if (Utils.whatIs(schema.minProperties) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minProperties\", \"integer\"]);\n } else if (schema.minProperties < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"minProperties\", \"greater than, or equal to 0\"]);\n }\n },\n required: function(report, schema) {\n if (Utils.whatIs(schema.required) !== \"array\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"required\", \"array\"]);\n } else if (schema.required.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"required\", \"an array with at least one element\"]);\n } else {\n var idx = schema.required.length;\n while (idx--) {\n if (typeof schema.required[idx] !== \"string\") {\n report.addError(\"KEYWORD_VALUE_TYPE\", [\"required\", \"string\"]);\n }\n }\n if (Utils.isUniqueArray(schema.required) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"required\", \"an array with unique items\"]);\n }\n }\n },\n additionalProperties: function(report, schema) {\n var type = Utils.whatIs(schema.additionalProperties);\n if (type !== \"boolean\" && type !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"additionalProperties\", [\"boolean\", \"object\"]]);\n } else if (type === \"object\") {\n report.path.push(\"additionalProperties\");\n exports.validateSchema.call(this, report, schema.additionalProperties);\n report.path.pop();\n }\n },\n properties: function(report, schema) {\n if (Utils.whatIs(schema.properties) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"properties\", \"object\"]);\n return;\n }\n var keys = Object.keys(schema.properties),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx],\n val = schema.properties[key];\n report.path.push(\"properties\");\n report.path.push(key);\n exports.validateSchema.call(this, report, val);\n report.path.pop();\n report.path.pop();\n }\n if (this.options.forceAdditional === true && schema.additionalProperties === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"additionalProperties\"]);\n }\n if (this.options.assumeAdditional && schema.additionalProperties === undefined) {\n schema.additionalProperties = false;\n }\n if (this.options.forceProperties === true && keys.length === 0) {\n report.addError(\"CUSTOM_MODE_FORCE_PROPERTIES\", [\"properties\"]);\n }\n },\n patternProperties: function(report, schema) {\n if (Utils.whatIs(schema.patternProperties) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"patternProperties\", \"object\"]);\n return;\n }\n var keys = Object.keys(schema.patternProperties),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx],\n val = schema.patternProperties[key];\n try {\n RegExp(key);\n } catch (e) {\n report.addError(\"KEYWORD_PATTERN\", [\"patternProperties\", key]);\n }\n report.path.push(\"patternProperties\");\n report.path.push(key.toString());\n exports.validateSchema.call(this, report, val);\n report.path.pop();\n report.path.pop();\n }\n if (this.options.forceProperties === true && keys.length === 0) {\n report.addError(\"CUSTOM_MODE_FORCE_PROPERTIES\", [\"patternProperties\"]);\n }\n },\n dependencies: function(report, schema) {\n if (Utils.whatIs(schema.dependencies) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"dependencies\", \"object\"]);\n } else {\n var keys = Object.keys(schema.dependencies),\n idx = keys.length;\n while (idx--) {\n var schemaKey = keys[idx],\n schemaDependency = schema.dependencies[schemaKey],\n type = Utils.whatIs(schemaDependency);\n if (type === \"object\") {\n report.path.push(\"dependencies\");\n report.path.push(schemaKey);\n exports.validateSchema.call(this, report, schemaDependency);\n report.path.pop();\n report.path.pop();\n } else if (type === \"array\") {\n var idx2 = schemaDependency.length;\n if (idx2 === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"dependencies\", \"not empty array\"]);\n }\n while (idx2--) {\n if (typeof schemaDependency[idx2] !== \"string\") {\n report.addError(\"KEYWORD_VALUE_TYPE\", [\"dependensices\", \"string\"]);\n }\n }\n if (Utils.isUniqueArray(schemaDependency) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"dependencies\", \"an array with unique items\"]);\n }\n } else {\n report.addError(\"KEYWORD_VALUE_TYPE\", [\"dependencies\", \"object or array\"]);\n }\n }\n }\n },\n enum: function(report, schema) {\n if (Array.isArray(schema.enum) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"enum\", \"array\"]);\n } else if (schema.enum.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"enum\", \"an array with at least one element\"]);\n } else if (Utils.isUniqueArray(schema.enum) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"enum\", \"an array with unique elements\"]);\n }\n },\n type: function(report, schema) {\n var primitiveTypes = [\"array\", \"boolean\", \"integer\", \"number\", \"null\", \"object\", \"string\"],\n primitiveTypeStr = primitiveTypes.join(\",\"),\n isArray = Array.isArray(schema.type);\n if (isArray) {\n var idx = schema.type.length;\n while (idx--) {\n if (primitiveTypes.indexOf(schema.type[idx]) === -1) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"type\", primitiveTypeStr]);\n }\n }\n if (Utils.isUniqueArray(schema.type) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"type\", \"an object with unique properties\"]);\n }\n } else if (typeof schema.type === \"string\") {\n if (primitiveTypes.indexOf(schema.type) === -1) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"type\", primitiveTypeStr]);\n }\n } else {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"type\", [\"string\", \"array\"]]);\n }\n if (this.options.noEmptyStrings === true) {\n if (schema.type === \"string\" || isArray && schema.type.indexOf(\"string\") !== -1) {\n if (schema.minLength === undefined && schema.enum === undefined && schema.format === undefined) {\n schema.minLength = 1;\n }\n }\n }\n if (this.options.noEmptyArrays === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.minItems === undefined) {\n schema.minItems = 1;\n }\n }\n }\n if (this.options.forceProperties === true) {\n if (schema.type === \"object\" || isArray && schema.type.indexOf(\"object\") !== -1) {\n if (schema.properties === undefined && schema.patternProperties === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"properties\"]);\n }\n }\n }\n if (this.options.forceItems === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.items === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"items\"]);\n }\n }\n }\n if (this.options.forceMinItems === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.minItems === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"minItems\"]);\n }\n }\n }\n if (this.options.forceMaxItems === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.maxItems === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"maxItems\"]);\n }\n }\n }\n if (this.options.forceMinLength === true) {\n if (schema.type === \"string\" || isArray && schema.type.indexOf(\"string\") !== -1) {\n if (schema.minLength === undefined && schema.format === undefined && schema.enum === undefined && schema.pattern === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"minLength\"]);\n }\n }\n }\n if (this.options.forceMaxLength === true) {\n if (schema.type === \"string\" || isArray && schema.type.indexOf(\"string\") !== -1) {\n if (schema.maxLength === undefined && schema.format === undefined && schema.enum === undefined && schema.pattern === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"maxLength\"]);\n }\n }\n }\n },\n allOf: function(report, schema) {\n if (Array.isArray(schema.allOf) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"allOf\", \"array\"]);\n } else if (schema.allOf.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"allOf\", \"an array with at least one element\"]);\n } else {\n var idx = schema.allOf.length;\n while (idx--) {\n report.path.push(\"allOf\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.allOf[idx]);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n anyOf: function(report, schema) {\n if (Array.isArray(schema.anyOf) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"anyOf\", \"array\"]);\n } else if (schema.anyOf.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"anyOf\", \"an array with at least one element\"]);\n } else {\n var idx = schema.anyOf.length;\n while (idx--) {\n report.path.push(\"anyOf\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.anyOf[idx]);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n oneOf: function(report, schema) {\n if (Array.isArray(schema.oneOf) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"oneOf\", \"array\"]);\n } else if (schema.oneOf.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"oneOf\", \"an array with at least one element\"]);\n } else {\n var idx = schema.oneOf.length;\n while (idx--) {\n report.path.push(\"oneOf\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.oneOf[idx]);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n not: function(report, schema) {\n if (Utils.whatIs(schema.not) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"not\", \"object\"]);\n } else {\n report.path.push(\"not\");\n exports.validateSchema.call(this, report, schema.not);\n report.path.pop();\n }\n },\n definitions: function(report, schema) {\n if (Utils.whatIs(schema.definitions) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"definitions\", \"object\"]);\n } else {\n var keys = Object.keys(schema.definitions),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx],\n val = schema.definitions[key];\n report.path.push(\"definitions\");\n report.path.push(key);\n exports.validateSchema.call(this, report, val);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n format: function(report, schema) {\n if (typeof schema.format !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"format\", \"string\"]);\n } else {\n if (FormatValidators[schema.format] === undefined && this.options.ignoreUnknownFormats !== true) {\n report.addError(\"UNKNOWN_FORMAT\", [schema.format]);\n }\n }\n },\n id: function(report, schema) {\n if (typeof schema.id !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"id\", \"string\"]);\n }\n },\n title: function(report, schema) {\n if (typeof schema.title !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"title\", \"string\"]);\n }\n },\n description: function(report, schema) {\n if (typeof schema.description !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"description\", \"string\"]);\n }\n },\n \"default\": function() {}\n};\nvar validateArrayOfSchemas = function(report, arr) {\n var idx = arr.length;\n while (idx--) {\n exports.validateSchema.call(this, report, arr[idx]);\n }\n return report.isValid();\n};\nexports.validateSchema = function(report, schema) {\n report.commonErrorMessage = \"SCHEMA_VALIDATION_FAILED\";\n if (Array.isArray(schema)) {\n return validateArrayOfSchemas.call(this, report, schema);\n }\n if (schema.__$validated) {\n return true;\n }\n var hasParentSchema = schema.$schema && schema.id !== schema.$schema;\n if (hasParentSchema) {\n if (schema.__$schemaResolved && schema.__$schemaResolved !== schema) {\n var subReport = new Report(report);\n var valid = JsonValidation.validate.call(this, subReport, schema.__$schemaResolved, schema);\n if (valid === false) {\n report.addError(\"PARENT_SCHEMA_VALIDATION_FAILED\", null, subReport);\n }\n } else {\n if (this.options.ignoreUnresolvableReferences !== true) {\n report.addError(\"REF_UNRESOLVED\", [schema.$schema]);\n }\n }\n }\n if (this.options.noTypeless === true) {\n if (schema.type !== undefined) {\n var schemas = [];\n if (Array.isArray(schema.anyOf)) {\n schemas = schemas.concat(schema.anyOf);\n }\n if (Array.isArray(schema.oneOf)) {\n schemas = schemas.concat(schema.oneOf);\n }\n if (Array.isArray(schema.allOf)) {\n schemas = schemas.concat(schema.allOf);\n }\n schemas.forEach(function(sch) {\n if (!sch.type) {\n sch.type = schema.type;\n }\n });\n }\n if (schema.enum === undefined && schema.type === undefined && schema.anyOf === undefined && schema.oneOf === undefined && schema.not === undefined && schema.$ref === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"type\"]);\n }\n }\n var keys = Object.keys(schema),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx];\n if (key.indexOf(\"__\") === 0) {\n continue;\n }\n if (SchemaValidators[key] !== undefined) {\n SchemaValidators[key].call(this, report, schema);\n } else if (!hasParentSchema) {\n if (this.options.noExtraKeywords === true) {\n report.addError(\"KEYWORD_UNEXPECTED\", [key]);\n }\n }\n }\n if (this.options.pedanticCheck === true) {\n if (schema.enum) {\n var tmpSchema = Utils.clone(schema);\n delete tmpSchema.enum;\n delete tmpSchema.default;\n report.path.push(\"enum\");\n idx = schema.enum.length;\n while (idx--) {\n report.path.push(idx.toString());\n JsonValidation.validate.call(this, report, tmpSchema, schema.enum[idx]);\n report.path.pop();\n }\n report.path.pop();\n }\n if (schema.default) {\n report.path.push(\"default\");\n JsonValidation.validate.call(this, report, schema, schema.default);\n report.path.pop();\n }\n }\n var isValid = report.isValid();\n if (isValid) {\n schema.__$validated = true;\n }\n return isValid;\n};\n","/* */ \n\"use strict\";\n\nexports.isAbsoluteUri = function (uri) {\n return /^https?:\\/\\//.test(uri);\n};\n\nexports.isRelativeUri = function (uri) {\n // relative URIs that end with a hash sign, issue #56\n return /.+#/.test(uri);\n};\n\nexports.whatIs = function (what) {\n\n var to = typeof what;\n\n if (to === \"object\") {\n if (what === null) {\n return \"null\";\n }\n if (Array.isArray(what)) {\n return \"array\";\n }\n return \"object\"; // typeof what === 'object' && what === Object(what) && !Array.isArray(what);\n }\n\n if (to === \"number\") {\n if (Number.isFinite(what)) {\n if (what % 1 === 0) {\n return \"integer\";\n } else {\n return \"number\";\n }\n }\n if (Number.isNaN(what)) {\n return \"not-a-number\";\n }\n return \"unknown-number\";\n }\n\n return to; // undefined, boolean, string, function\n\n};\n\nexports.areEqual = function areEqual(json1, json2) {\n // http://json-schema.org/latest/json-schema-core.html#rfc.section.3.6\n\n // Two JSON values are said to be equal if and only if:\n // both are nulls; or\n // both are booleans, and have the same value; or\n // both are strings, and have the same value; or\n // both are numbers, and have the same mathematical value; or\n if (json1 === json2) {\n return true;\n }\n\n var i, len;\n\n // both are arrays, and:\n if (Array.isArray(json1) && Array.isArray(json2)) {\n // have the same number of items; and\n if (json1.length !== json2.length) {\n return false;\n }\n // items at the same index are equal according to this definition; or\n len = json1.length;\n for (i = 0; i < len; i++) {\n if (!areEqual(json1[i], json2[i])) {\n return false;\n }\n }\n return true;\n }\n\n // both are objects, and:\n if (exports.whatIs(json1) === \"object\" && exports.whatIs(json2) === \"object\") {\n // have the same set of property names; and\n var keys1 = Object.keys(json1);\n var keys2 = Object.keys(json2);\n if (!areEqual(keys1, keys2)) {\n return false;\n }\n // values for a same property name are equal according to this definition.\n len = keys1.length;\n for (i = 0; i < len; i++) {\n if (!areEqual(json1[keys1[i]], json2[keys1[i]])) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n};\n\nexports.isUniqueArray = function (arr, indexes) {\n var i, j, l = arr.length;\n for (i = 0; i < l; i++) {\n for (j = i + 1; j < l; j++) {\n if (exports.areEqual(arr[i], arr[j])) {\n if (indexes) { indexes.push(i, j); }\n return false;\n }\n }\n }\n return true;\n};\n\nexports.difference = function (bigSet, subSet) {\n var arr = [],\n idx = bigSet.length;\n while (idx--) {\n if (subSet.indexOf(bigSet[idx]) === -1) {\n arr.push(bigSet[idx]);\n }\n }\n return arr;\n};\n\n// NOT a deep version of clone\nexports.clone = function (src) {\n if (typeof src === \"undefined\") { return void 0; }\n if (typeof src !== \"object\" || src === null) { return src; }\n var res, idx;\n if (Array.isArray(src)) {\n res = [];\n idx = src.length;\n while (idx--) {\n res[idx] = src[idx];\n }\n } else {\n res = {};\n var keys = Object.keys(src);\n idx = keys.length;\n while (idx--) {\n var key = keys[idx];\n res[key] = src[key];\n }\n }\n return res;\n};\n\nexports.cloneDeep = function (src) {\n var visited = [], cloned = [];\n function cloneDeep(src) {\n if (typeof src !== \"object\" || src === null) { return src; }\n var res, idx, cidx;\n\n cidx = visited.indexOf(src);\n if (cidx !== -1) { return cloned[cidx]; }\n\n visited.push(src);\n if (Array.isArray(src)) {\n res = [];\n cloned.push(res);\n idx = src.length;\n while (idx--) {\n res[idx] = cloneDeep(src[idx]);\n }\n } else {\n res = {};\n cloned.push(res);\n var keys = Object.keys(src);\n idx = keys.length;\n while (idx--) {\n var key = keys[idx];\n res[key] = cloneDeep(src[key]);\n }\n }\n return res;\n }\n return cloneDeep(src);\n};\n\n/*\n following function comes from punycode.js library\n see: https://github.com/bestiejs/punycode.js\n*/\n/*jshint -W016*/\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nexports.ucs2decode = function (string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n/*jshint +W016*/\n","{\n \"id\": \"http://json-schema.org/draft-04/schema#\",\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"description\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#\" }\n },\n \"positiveInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"positiveIntegerDefault0\": {\n \"allOf\": [ { \"$ref\": \"#/definitions/positiveInteger\" }, { \"default\": 0 } ]\n },\n \"simpleTypes\": {\n \"enum\": [ \"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\" ]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n },\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": {},\n \"multipleOf\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"exclusiveMinimum\": true\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxLength\": { \"$ref\": \"#/definitions/positiveInteger\" },\n \"minLength\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\n \"anyOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#\" }\n ],\n \"default\": {}\n },\n \"items\": {\n \"anyOf\": [\n { \"$ref\": \"#\" },\n { \"$ref\": \"#/definitions/schemaArray\" }\n ],\n \"default\": {}\n },\n \"maxItems\": { \"$ref\": \"#/definitions/positiveInteger\" },\n \"minItems\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxProperties\": { \"$ref\": \"#/definitions/positiveInteger\" },\n \"minProperties\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n \"required\": { \"$ref\": \"#/definitions/stringArray\" },\n \"additionalProperties\": {\n \"anyOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#\" }\n ],\n \"default\": {}\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"$ref\": \"#\" },\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"$ref\": \"#\" },\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"$ref\": \"#\" },\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [\n { \"$ref\": \"#\" },\n { \"$ref\": \"#/definitions/stringArray\" }\n ]\n }\n },\n \"enum\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n { \"$ref\": \"#/definitions/simpleTypes\" },\n {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/simpleTypes\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": { \"type\": \"string\" },\n \"allOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n \"anyOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n \"oneOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n \"not\": { \"$ref\": \"#\" }\n },\n \"dependencies\": {\n \"exclusiveMaximum\": [ \"maximum\" ],\n \"exclusiveMinimum\": [ \"minimum\" ]\n },\n \"default\": {}\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-04/hyper-schema#\",\n \"id\": \"http://json-schema.org/draft-04/hyper-schema#\",\n \"title\": \"JSON Hyper-Schema\",\n \"allOf\": [\n {\n \"$ref\": \"http://json-schema.org/draft-04/schema#\"\n }\n ],\n \"properties\": {\n \"additionalItems\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"$ref\": \"#\"\n }\n ]\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"$ref\": \"#\"\n }\n ]\n },\n \"dependencies\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"$ref\": \"#\"\n },\n {\n \"type\": \"array\"\n }\n ]\n }\n },\n \"items\": {\n \"anyOf\": [\n {\n \"$ref\": \"#\"\n },\n {\n \"$ref\": \"#/definitions/schemaArray\"\n }\n ]\n },\n \"definitions\": {\n \"additionalProperties\": {\n \"$ref\": \"#\"\n }\n },\n \"patternProperties\": {\n \"additionalProperties\": {\n \"$ref\": \"#\"\n }\n },\n \"properties\": {\n \"additionalProperties\": {\n \"$ref\": \"#\"\n }\n },\n \"allOf\": {\n \"$ref\": \"#/definitions/schemaArray\"\n },\n \"anyOf\": {\n \"$ref\": \"#/definitions/schemaArray\"\n },\n \"oneOf\": {\n \"$ref\": \"#/definitions/schemaArray\"\n },\n \"not\": {\n \"$ref\": \"#\"\n },\n\n \"links\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/linkDescription\"\n }\n },\n \"fragmentResolution\": {\n \"type\": \"string\"\n },\n \"media\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"description\": \"A media type, as described in RFC 2046\",\n \"type\": \"string\"\n },\n \"binaryEncoding\": {\n \"description\": \"A content encoding scheme, as described in RFC 2045\",\n \"type\": \"string\"\n }\n }\n },\n \"pathStart\": {\n \"description\": \"Instances' URIs must start with this value for this schema to apply to them\",\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#\"\n }\n },\n \"linkDescription\": {\n \"title\": \"Link Description Object\",\n \"type\": \"object\",\n \"required\": [ \"href\", \"rel\" ],\n \"properties\": {\n \"href\": {\n \"description\": \"a URI template, as defined by RFC 6570, with the addition of the $, ( and ) characters for pre-processing\",\n \"type\": \"string\"\n },\n \"rel\": {\n \"description\": \"relation to the target resource of the link\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"a title for the link\",\n \"type\": \"string\"\n },\n \"targetSchema\": {\n \"description\": \"JSON Schema describing the link target\",\n \"$ref\": \"#\"\n },\n \"mediaType\": {\n \"description\": \"media type (as defined by RFC 2046) describing the link target\",\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"method for requesting the target of the link (e.g. for HTTP this might be \\\"GET\\\" or \\\"DELETE\\\")\",\n \"type\": \"string\"\n },\n \"encType\": {\n \"description\": \"The media type in which to submit data along with the request\",\n \"type\": \"string\",\n \"default\": \"application/json\"\n },\n \"schema\": {\n \"description\": \"Schema describing the data to submit along with the request\",\n \"$ref\": \"#\"\n }\n }\n }\n }\n}\n\n","/* */ \n(function(process) {\n \"use strict\";\n require('./Polyfills');\n var get = require('lodash.get');\n var Report = require('./Report');\n var FormatValidators = require('./FormatValidators');\n var JsonValidation = require('./JsonValidation');\n var SchemaCache = require('./SchemaCache');\n var SchemaCompilation = require('./SchemaCompilation');\n var SchemaValidation = require('./SchemaValidation');\n var Utils = require('./Utils');\n var Draft4Schema = require('./schemas/schema.json!systemjs-json');\n var Draft4HyperSchema = require('./schemas/hyper-schema.json!systemjs-json');\n var defaultOptions = {\n asyncTimeout: 2000,\n forceAdditional: false,\n assumeAdditional: false,\n forceItems: false,\n forceMinItems: false,\n forceMaxItems: false,\n forceMinLength: false,\n forceMaxLength: false,\n forceProperties: false,\n ignoreUnresolvableReferences: false,\n noExtraKeywords: false,\n noTypeless: false,\n noEmptyStrings: false,\n noEmptyArrays: false,\n strictUris: false,\n strictMode: false,\n reportPathAsArray: false,\n breakOnFirstError: true,\n pedanticCheck: false,\n ignoreUnknownFormats: false,\n customValidator: null\n };\n function ZSchema(options) {\n this.cache = {};\n this.referenceCache = [];\n this.setRemoteReference(\"http://json-schema.org/draft-04/schema\", Draft4Schema);\n this.setRemoteReference(\"http://json-schema.org/draft-04/hyper-schema\", Draft4HyperSchema);\n if (typeof options === \"object\") {\n var keys = Object.keys(options),\n idx = keys.length,\n key;\n while (idx--) {\n key = keys[idx];\n if (defaultOptions[key] === undefined) {\n throw new Error(\"Unexpected option passed to constructor: \" + key);\n }\n }\n keys = Object.keys(defaultOptions);\n idx = keys.length;\n while (idx--) {\n key = keys[idx];\n if (options[key] === undefined) {\n options[key] = Utils.clone(defaultOptions[key]);\n }\n }\n this.options = options;\n } else {\n this.options = Utils.clone(defaultOptions);\n }\n if (this.options.strictMode === true) {\n this.options.forceAdditional = true;\n this.options.forceItems = true;\n this.options.forceMaxLength = true;\n this.options.forceProperties = true;\n this.options.noExtraKeywords = true;\n this.options.noTypeless = true;\n this.options.noEmptyStrings = true;\n this.options.noEmptyArrays = true;\n }\n }\n ZSchema.prototype.compileSchema = function(schema) {\n var report = new Report(this.options);\n schema = SchemaCache.getSchema.call(this, report, schema);\n SchemaCompilation.compileSchema.call(this, report, schema);\n this.lastReport = report;\n return report.isValid();\n };\n ZSchema.prototype.validateSchema = function(schema) {\n if (Array.isArray(schema) && schema.length === 0) {\n throw new Error(\".validateSchema was called with an empty array\");\n }\n var report = new Report(this.options);\n schema = SchemaCache.getSchema.call(this, report, schema);\n var compiled = SchemaCompilation.compileSchema.call(this, report, schema);\n if (compiled) {\n SchemaValidation.validateSchema.call(this, report, schema);\n }\n this.lastReport = report;\n return report.isValid();\n };\n ZSchema.prototype.validate = function(json, schema, options, callback) {\n if (Utils.whatIs(options) === \"function\") {\n callback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n var whatIs = Utils.whatIs(schema);\n if (whatIs !== \"string\" && whatIs !== \"object\") {\n var e = new Error(\"Invalid .validate call - schema must be an string or object but \" + whatIs + \" was passed!\");\n if (callback) {\n process.nextTick(function() {\n callback(e, false);\n });\n return;\n }\n throw e;\n }\n var foundError = false;\n var report = new Report(this.options);\n if (typeof schema === \"string\") {\n var schemaName = schema;\n schema = SchemaCache.getSchema.call(this, report, schemaName);\n if (!schema) {\n throw new Error(\"Schema with id '\" + schemaName + \"' wasn't found in the validator cache!\");\n }\n } else {\n schema = SchemaCache.getSchema.call(this, report, schema);\n }\n var compiled = false;\n if (!foundError) {\n compiled = SchemaCompilation.compileSchema.call(this, report, schema);\n }\n if (!compiled) {\n this.lastReport = report;\n foundError = true;\n }\n var validated = false;\n if (!foundError) {\n validated = SchemaValidation.validateSchema.call(this, report, schema);\n }\n if (!validated) {\n this.lastReport = report;\n foundError = true;\n }\n if (options.schemaPath) {\n report.rootSchema = schema;\n schema = get(schema, options.schemaPath);\n if (!schema) {\n throw new Error(\"Schema path '\" + options.schemaPath + \"' wasn't found in the schema!\");\n }\n }\n if (!foundError) {\n JsonValidation.validate.call(this, report, schema, json);\n }\n if (callback) {\n report.processAsyncTasks(this.options.asyncTimeout, callback);\n return;\n } else if (report.asyncTasks.length > 0) {\n throw new Error(\"This validation has async tasks and cannot be done in sync mode, please provide callback argument.\");\n }\n this.lastReport = report;\n return report.isValid();\n };\n ZSchema.prototype.getLastError = function() {\n if (this.lastReport.errors.length === 0) {\n return null;\n }\n var e = new Error();\n e.name = \"z-schema validation error\";\n e.message = this.lastReport.commonErrorMessage;\n e.details = this.lastReport.errors;\n return e;\n };\n ZSchema.prototype.getLastErrors = function() {\n return this.lastReport && this.lastReport.errors.length > 0 ? this.lastReport.errors : undefined;\n };\n ZSchema.prototype.getMissingReferences = function(arr) {\n arr = arr || this.lastReport.errors;\n var res = [],\n idx = arr.length;\n while (idx--) {\n var error = arr[idx];\n if (error.code === \"UNRESOLVABLE_REFERENCE\") {\n var reference = error.params[0];\n if (res.indexOf(reference) === -1) {\n res.push(reference);\n }\n }\n if (error.inner) {\n res = res.concat(this.getMissingReferences(error.inner));\n }\n }\n return res;\n };\n ZSchema.prototype.getMissingRemoteReferences = function() {\n var missingReferences = this.getMissingReferences(),\n missingRemoteReferences = [],\n idx = missingReferences.length;\n while (idx--) {\n var remoteReference = SchemaCache.getRemotePath(missingReferences[idx]);\n if (remoteReference && missingRemoteReferences.indexOf(remoteReference) === -1) {\n missingRemoteReferences.push(remoteReference);\n }\n }\n return missingRemoteReferences;\n };\n ZSchema.prototype.setRemoteReference = function(uri, schema) {\n if (typeof schema === \"string\") {\n schema = JSON.parse(schema);\n } else {\n schema = Utils.cloneDeep(schema);\n }\n SchemaCache.cacheSchemaByUri.call(this, uri, schema);\n };\n ZSchema.prototype.getResolvedSchema = function(schema) {\n var report = new Report(this.options);\n schema = SchemaCache.getSchema.call(this, report, schema);\n schema = Utils.cloneDeep(schema);\n var visited = [];\n var cleanup = function(schema) {\n var key,\n typeOf = Utils.whatIs(schema);\n if (typeOf !== \"object\" && typeOf !== \"array\") {\n return;\n }\n if (schema.___$visited) {\n return;\n }\n schema.___$visited = true;\n visited.push(schema);\n if (schema.$ref && schema.__$refResolved) {\n var from = schema.__$refResolved;\n var to = schema;\n delete schema.$ref;\n delete schema.__$refResolved;\n for (key in from) {\n if (from.hasOwnProperty(key)) {\n to[key] = from[key];\n }\n }\n }\n for (key in schema) {\n if (schema.hasOwnProperty(key)) {\n if (key.indexOf(\"__$\") === 0) {\n delete schema[key];\n } else {\n cleanup(schema[key]);\n }\n }\n }\n };\n cleanup(schema);\n visited.forEach(function(s) {\n delete s.___$visited;\n });\n this.lastReport = report;\n if (report.isValid()) {\n return schema;\n } else {\n throw this.getLastError();\n }\n };\n ZSchema.prototype.setSchemaReader = function(schemaReader) {\n return ZSchema.setSchemaReader(schemaReader);\n };\n ZSchema.prototype.getSchemaReader = function() {\n return ZSchema.schemaReader;\n };\n ZSchema.setSchemaReader = function(schemaReader) {\n ZSchema.schemaReader = schemaReader;\n };\n ZSchema.registerFormat = function(formatName, validatorFunction) {\n FormatValidators[formatName] = validatorFunction;\n };\n ZSchema.unregisterFormat = function(formatName) {\n delete FormatValidators[formatName];\n };\n ZSchema.getRegisteredFormats = function() {\n return Object.keys(FormatValidators);\n };\n ZSchema.getDefaultOptions = function() {\n return Utils.cloneDeep(defaultOptions);\n };\n module.exports = ZSchema;\n})(require('process'));\n","module.exports = require(\"npm:z-schema@3.17.0/src/ZSchema.js\");","{\n \"title\": \"A JSON Schema for Swagger 2.0 API.\",\n \"id\": \"http://swagger.io/v2/schema.json#\",\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"type\": \"object\",\n \"required\": [\n \"swagger\",\n \"info\",\n \"paths\"\n ],\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"swagger\": {\n \"type\": \"string\",\n \"enum\": [\n \"2.0\"\n ],\n \"description\": \"The Swagger version of this document.\"\n },\n \"info\": {\n \"$ref\": \"#/definitions/info\"\n },\n \"host\": {\n \"type\": \"string\",\n \"pattern\": \"^[^{}/ :\\\\\\\\]+(?::\\\\d+)?$\",\n \"description\": \"The host (name or ip) of the API. Example: 'swagger.io'\"\n },\n \"basePath\": {\n \"type\": \"string\",\n \"pattern\": \"^/\",\n \"description\": \"The base path to the API. Example: '/api'.\"\n },\n \"schemes\": {\n \"$ref\": \"#/definitions/schemesList\"\n },\n \"consumes\": {\n \"description\": \"A list of MIME types accepted by the API.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"produces\": {\n \"description\": \"A list of MIME types the API can produce.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"paths\": {\n \"$ref\": \"#/definitions/paths\"\n },\n \"definitions\": {\n \"$ref\": \"#/definitions/definitions\"\n },\n \"parameters\": {\n \"$ref\": \"#/definitions/parameterDefinitions\"\n },\n \"responses\": {\n \"$ref\": \"#/definitions/responseDefinitions\"\n },\n \"security\": {\n \"$ref\": \"#/definitions/security\"\n },\n \"securityDefinitions\": {\n \"$ref\": \"#/definitions/securityDefinitions\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/tag\"\n },\n \"uniqueItems\": true\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n }\n },\n \"definitions\": {\n \"info\": {\n \"type\": \"object\",\n \"description\": \"General information about the API.\",\n \"required\": [\n \"version\",\n \"title\"\n ],\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"description\": \"A unique and precise title of the API.\"\n },\n \"version\": {\n \"type\": \"string\",\n \"description\": \"A semantic version number of the API.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed.\"\n },\n \"termsOfService\": {\n \"type\": \"string\",\n \"description\": \"The terms of service for the API.\"\n },\n \"contact\": {\n \"$ref\": \"#/definitions/contact\"\n },\n \"license\": {\n \"$ref\": \"#/definitions/license\"\n }\n }\n },\n \"contact\": {\n \"type\": \"object\",\n \"description\": \"Contact information for the owners of the API.\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The identifying name of the contact person/organization.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL pointing to the contact information.\",\n \"format\": \"uri\"\n },\n \"email\": {\n \"type\": \"string\",\n \"description\": \"The email address of the contact person/organization.\",\n \"format\": \"email\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"license\": {\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the license type. It's encouraged to use an OSI compatible license.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL pointing to the license.\",\n \"format\": \"uri\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"paths\": {\n \"type\": \"object\",\n \"description\": \"Relative paths to the individual endpoints. They must be relative to the 'basePath'.\",\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n },\n \"^/\": {\n \"$ref\": \"#/definitions/pathItem\"\n }\n },\n \"additionalProperties\": false\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/schema\"\n },\n \"description\": \"One or more JSON objects describing the schemas being consumed and produced by the API.\"\n },\n \"parameterDefinitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/parameter\"\n },\n \"description\": \"One or more JSON representations for parameters\"\n },\n \"responseDefinitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/response\"\n },\n \"description\": \"One or more JSON representations for parameters\"\n },\n \"externalDocs\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"description\": \"information about external documentation\",\n \"required\": [\n \"url\"\n ],\n \"properties\": {\n \"description\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"examples\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"mimeType\": {\n \"type\": \"string\",\n \"description\": \"The MIME type of the HTTP message.\"\n },\n \"operation\": {\n \"type\": \"object\",\n \"required\": [\n \"responses\"\n ],\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"uniqueItems\": true\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"A brief summary of the operation.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A longer description of the operation, GitHub Flavored Markdown is allowed.\"\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n },\n \"operationId\": {\n \"type\": \"string\",\n \"description\": \"A unique identifier of the operation.\"\n },\n \"produces\": {\n \"description\": \"A list of MIME types the API can produce.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"consumes\": {\n \"description\": \"A list of MIME types the API can consume.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"parameters\": {\n \"$ref\": \"#/definitions/parametersList\"\n },\n \"responses\": {\n \"$ref\": \"#/definitions/responses\"\n },\n \"schemes\": {\n \"$ref\": \"#/definitions/schemesList\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"security\": {\n \"$ref\": \"#/definitions/security\"\n }\n }\n },\n \"pathItem\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"$ref\": {\n \"type\": \"string\"\n },\n \"get\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"put\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"post\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"delete\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"options\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"head\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"patch\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"parameters\": {\n \"$ref\": \"#/definitions/parametersList\"\n }\n }\n },\n \"responses\": {\n \"type\": \"object\",\n \"description\": \"Response objects names can either be any valid HTTP status code or 'default'.\",\n \"minProperties\": 1,\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^([0-9]{3})$|^(default)$\": {\n \"$ref\": \"#/definitions/responseValue\"\n },\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"not\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n }\n },\n \"responseValue\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/response\"\n },\n {\n \"$ref\": \"#/definitions/jsonReference\"\n }\n ]\n },\n \"response\": {\n \"type\": \"object\",\n \"required\": [\n \"description\"\n ],\n \"properties\": {\n \"description\": {\n \"type\": \"string\"\n },\n \"schema\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/schema\"\n },\n {\n \"$ref\": \"#/definitions/fileSchema\"\n }\n ]\n },\n \"headers\": {\n \"$ref\": \"#/definitions/headers\"\n },\n \"examples\": {\n \"$ref\": \"#/definitions/examples\"\n }\n },\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"headers\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/header\"\n }\n },\n \"header\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"vendorExtension\": {\n \"description\": \"Any property starting with x- is valid.\",\n \"additionalProperties\": true,\n \"additionalItems\": true\n },\n \"bodyParameter\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"in\",\n \"schema\"\n ],\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"body\"\n ]\n },\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"schema\": {\n \"$ref\": \"#/definitions/schema\"\n }\n },\n \"additionalProperties\": false\n },\n \"headerParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"header\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"queryParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"query\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"allowEmptyValue\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"allows sending a parameter by name only or with an empty value.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormatWithMulti\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"formDataParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"formData\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"allowEmptyValue\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"allows sending a parameter by name only or with an empty value.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\",\n \"file\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormatWithMulti\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"pathParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"required\": [\n \"required\"\n ],\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"enum\": [\n true\n ],\n \"description\": \"Determines whether or not this parameter is required or optional.\"\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"path\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"nonBodyParameter\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"in\",\n \"type\"\n ],\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/headerParameterSubSchema\"\n },\n {\n \"$ref\": \"#/definitions/formDataParameterSubSchema\"\n },\n {\n \"$ref\": \"#/definitions/queryParameterSubSchema\"\n },\n {\n \"$ref\": \"#/definitions/pathParameterSubSchema\"\n }\n ]\n },\n \"parameter\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/bodyParameter\"\n },\n {\n \"$ref\": \"#/definitions/nonBodyParameter\"\n }\n ]\n },\n \"schema\": {\n \"type\": \"object\",\n \"description\": \"A deterministic version of a JSON Schema object.\",\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"$ref\": {\n \"type\": \"string\"\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/title\"\n },\n \"description\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/description\"\n },\n \"default\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/default\"\n },\n \"multipleOf\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/multipleOf\"\n },\n \"maximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"pattern\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"uniqueItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/uniqueItems\"\n },\n \"maxProperties\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minProperties\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"required\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/stringArray\"\n },\n \"enum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/enum\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/schema\"\n },\n {\n \"type\": \"boolean\"\n }\n ],\n \"default\": {}\n },\n \"type\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/type\"\n },\n \"items\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/schema\"\n },\n {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/definitions/schema\"\n }\n }\n ],\n \"default\": {}\n },\n \"allOf\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/definitions/schema\"\n }\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/schema\"\n },\n \"default\": {}\n },\n \"discriminator\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"xml\": {\n \"$ref\": \"#/definitions/xml\"\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n },\n \"example\": {}\n },\n \"additionalProperties\": false\n },\n \"fileSchema\": {\n \"type\": \"object\",\n \"description\": \"A deterministic version of a JSON Schema object.\",\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"format\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/title\"\n },\n \"description\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/description\"\n },\n \"default\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/default\"\n },\n \"required\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/stringArray\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"file\"\n ]\n },\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n },\n \"example\": {}\n },\n \"additionalProperties\": false\n },\n \"primitivesItems\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"security\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/securityRequirement\"\n },\n \"uniqueItems\": true\n },\n \"securityRequirement\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"uniqueItems\": true\n }\n },\n \"xml\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"attribute\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"wrapped\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"tag\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"securityDefinitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/basicAuthenticationSecurity\"\n },\n {\n \"$ref\": \"#/definitions/apiKeySecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2ImplicitSecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2PasswordSecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2ApplicationSecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2AccessCodeSecurity\"\n }\n ]\n }\n },\n \"basicAuthenticationSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"basic\"\n ]\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"apiKeySecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"name\",\n \"in\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"apiKey\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"in\": {\n \"type\": \"string\",\n \"enum\": [\n \"header\",\n \"query\"\n ]\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2ImplicitSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"authorizationUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"implicit\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"authorizationUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2PasswordSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"tokenUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"password\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"tokenUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2ApplicationSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"tokenUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"application\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"tokenUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2AccessCodeSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"authorizationUrl\",\n \"tokenUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"accessCode\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"authorizationUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"tokenUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2Scopes\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"mediaTypeList\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/mimeType\"\n },\n \"uniqueItems\": true\n },\n \"parametersList\": {\n \"type\": \"array\",\n \"description\": \"The parameters needed to send a valid API call.\",\n \"additionalItems\": false,\n \"items\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/parameter\"\n },\n {\n \"$ref\": \"#/definitions/jsonReference\"\n }\n ]\n },\n \"uniqueItems\": true\n },\n \"schemesList\": {\n \"type\": \"array\",\n \"description\": \"The transfer protocol of the API.\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\"\n ]\n },\n \"uniqueItems\": true\n },\n \"collectionFormat\": {\n \"type\": \"string\",\n \"enum\": [\n \"csv\",\n \"ssv\",\n \"tsv\",\n \"pipes\"\n ],\n \"default\": \"csv\"\n },\n \"collectionFormatWithMulti\": {\n \"type\": \"string\",\n \"enum\": [\n \"csv\",\n \"ssv\",\n \"tsv\",\n \"pipes\",\n \"multi\"\n ],\n \"default\": \"csv\"\n },\n \"title\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/title\"\n },\n \"description\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/description\"\n },\n \"default\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/default\"\n },\n \"multipleOf\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/multipleOf\"\n },\n \"maximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"pattern\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"uniqueItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/enum\"\n },\n \"jsonReference\": {\n \"type\": \"object\",\n \"required\": [\n \"$ref\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"$ref\": {\n \"type\": \"string\"\n }\n }\n }\n }\n}","/* */ \n'use strict';\nvar util = require('./util'),\n ono = require('ono'),\n ZSchema = require('z-schema'),\n swaggerSchema = require('swagger-schema-official/schema');\nmodule.exports = validateSchema;\ninitializeZSchema();\nfunction validateSchema(api) {\n util.debug('Validating against the Swagger 2.0 schema');\n var isValid = ZSchema.validate(api, swaggerSchema);\n if (isValid) {\n util.debug(' Validated successfully');\n } else {\n var err = ZSchema.getLastError();\n var message = 'Swagger schema validation failed. \\n' + formatZSchemaError(err.details);\n throw ono.syntax(err, {details: err.details}, message);\n }\n}\nfunction initializeZSchema() {\n ZSchema = new ZSchema({\n breakOnFirstError: true,\n noExtraKeywords: true,\n ignoreUnknownFormats: false,\n reportPathAsArray: true\n });\n}\nfunction formatZSchemaError(errors, indent) {\n indent = indent || ' ';\n var message = '';\n errors.forEach(function(error, index) {\n message += util.format('%s%s at #/%s\\n', indent, error.message, error.path.join('/'));\n if (error.inner) {\n message += formatZSchemaError(error.inner, indent + ' ');\n }\n });\n return message;\n}\n","/* */ \nmodule.exports = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch'];\n","module.exports = require(\"npm:swagger-methods@1.0.0/lib/index.js\");","/* */ \n'use strict';\nvar util = require('./util'),\n ono = require('ono'),\n swaggerMethods = require('swagger-methods'),\n primitiveTypes = ['array', 'boolean', 'integer', 'number', 'string'],\n schemaTypes = ['array', 'boolean', 'integer', 'number', 'string', 'object', 'null', undefined];\nmodule.exports = validateSpec;\nfunction validateSpec(api) {\n util.debug('Validating against the Swagger 2.0 spec');\n var paths = Object.keys(api.paths || {});\n paths.forEach(function(pathName) {\n var path = api.paths[pathName];\n var pathId = '/paths' + pathName;\n if (path && pathName.indexOf('/') === 0) {\n validatePath(api, path, pathId);\n }\n });\n util.debug(' Validated successfully');\n}\nfunction validatePath(api, path, pathId) {\n swaggerMethods.forEach(function(operationName) {\n var operation = path[operationName];\n var operationId = pathId + '/' + operationName;\n if (operation) {\n validateParameters(api, path, pathId, operation, operationId);\n var responses = Object.keys(operation.responses || {});\n responses.forEach(function(responseName) {\n var response = operation.responses[responseName];\n var responseId = operationId + '/responses/' + responseName;\n validateResponse(responseName, response, responseId);\n });\n }\n });\n}\nfunction validateParameters(api, path, pathId, operation, operationId) {\n var pathParams = path.parameters || [];\n var operationParams = operation.parameters || [];\n try {\n checkForDuplicates(pathParams);\n } catch (e) {\n throw ono.syntax(e, 'Validation failed. %s has duplicate parameters', pathId);\n }\n try {\n checkForDuplicates(operationParams);\n } catch (e) {\n throw ono.syntax(e, 'Validation failed. %s has duplicate parameters', operationId);\n }\n var params = pathParams.reduce(function(combinedParams, value) {\n var duplicate = combinedParams.some(function(param) {\n return param.in === value.in && param.name === value.name;\n });\n if (!duplicate) {\n combinedParams.push(value);\n }\n return combinedParams;\n }, operationParams.slice());\n validateBodyParameters(params, operationId);\n validatePathParameters(params, pathId, operationId);\n validateParameterTypes(params, api, operation, operationId);\n}\nfunction validateBodyParameters(params, operationId) {\n var bodyParams = params.filter(function(param) {\n return param.in === 'body';\n });\n var formParams = params.filter(function(param) {\n return param.in === 'formData';\n });\n if (bodyParams.length > 1) {\n throw ono.syntax('Validation failed. %s has %d body parameters. Only one is allowed.', operationId, bodyParams.length);\n } else if (bodyParams.length > 0 && formParams.length > 0) {\n throw ono.syntax('Validation failed. %s has body parameters and formData parameters. Only one or the other is allowed.', operationId);\n }\n}\nfunction validatePathParameters(params, pathId, operationId) {\n var placeholders = pathId.match(util.swaggerParamRegExp) || [];\n for (var i = 0; i < placeholders.length; i++) {\n for (var j = i + 1; j < placeholders.length; j++) {\n if (placeholders[i] === placeholders[j]) {\n throw ono.syntax('Validation failed. %s has multiple path placeholders named %s', operationId, placeholders[i]);\n }\n }\n }\n params.filter(function(param) {\n return param.in === 'path';\n }).forEach(function(param) {\n if (param.required !== true) {\n throw ono.syntax('Validation failed. Path parameters cannot be optional. Set required=true for the \"%s\" parameter at %s', param.name, operationId);\n }\n var match = placeholders.indexOf('{' + param.name + '}');\n if (match === -1) {\n throw ono.syntax('Validation failed. %s has a path parameter named \"%s\", ' + 'but there is no corresponding {%s} in the path string', operationId, param.name, param.name);\n }\n placeholders.splice(match, 1);\n });\n if (placeholders.length > 0) {\n throw ono.syntax('Validation failed. %s is missing path parameter(s) for %s', operationId, placeholders);\n }\n}\nfunction validateParameterTypes(params, api, operation, operationId) {\n params.forEach(function(param) {\n var parameterId = operationId + '/parameters/' + param.name;\n var schema,\n validTypes;\n switch (param.in) {\n case 'body':\n schema = param.schema;\n validTypes = schemaTypes;\n break;\n case 'formData':\n schema = param;\n validTypes = primitiveTypes.concat('file');\n break;\n default:\n schema = param;\n validTypes = primitiveTypes;\n }\n validateSchema(schema, parameterId, validTypes);\n if (schema.type === 'file') {\n var consumes = operation.consumes || api.consumes || [];\n if (consumes.indexOf('multipart/form-data') === -1 && consumes.indexOf('application/x-www-form-urlencoded') === -1) {\n throw ono.syntax('Validation failed. %s has a file parameter, so it must consume multipart/form-data ' + 'or application/x-www-form-urlencoded', operationId);\n }\n }\n });\n}\nfunction checkForDuplicates(params) {\n for (var i = 0; i < params.length - 1; i++) {\n var outer = params[i];\n for (var j = i + 1; j < params.length; j++) {\n var inner = params[j];\n if (outer.name === inner.name && outer.in === inner.in) {\n throw ono.syntax('Validation failed. Found multiple %s parameters named \"%s\"', outer.in, outer.name);\n }\n }\n }\n}\nfunction validateResponse(code, response, responseId) {\n if (code !== 'default' && (code < 100 || code > 599)) {\n throw ono.syntax('Validation failed. %s has an invalid response code (%s)', responseId, code);\n }\n var headers = Object.keys(response.headers || {});\n headers.forEach(function(headerName) {\n var header = response.headers[headerName];\n var headerId = responseId + '/headers/' + headerName;\n validateSchema(header, headerId, primitiveTypes);\n });\n if (response.schema) {\n var validTypes = schemaTypes.concat('file');\n if (validTypes.indexOf(response.schema.type) === -1) {\n throw ono.syntax('Validation failed. %s has an invalid response schema type (%s)', responseId, response.schema.type);\n }\n }\n}\nfunction validateSchema(schema, schemaId, validTypes) {\n if (validTypes.indexOf(schema.type) === -1) {\n throw ono.syntax('Validation failed. %s has an invalid type (%s)', schemaId, schema.type);\n }\n if (schema.type === 'array' && !schema.items) {\n throw ono.syntax('Validation failed. %s is an array, so it must include an \"items\" schema', schemaId);\n }\n}\n","/* */ \n'use strict';\nvar debug = require('debug'),\n util = require('util');\nexports.format = util.format;\nexports.inherits = util.inherits;\nexports.debug = debug('swagger:parser');\nexports.swaggerParamRegExp = /\\{([^/}]+)}/g;\n","/* */ \n'use strict';\nvar $RefParserOptions = require('json-schema-ref-parser/lib/options'),\n util = require('util');\nmodule.exports = ParserOptions;\nfunction ParserOptions(options) {\n $RefParserOptions.call(this, ParserOptions.defaults);\n $RefParserOptions.apply(this, arguments);\n}\nParserOptions.defaults = {validate: {\n schema: {order: 1},\n spec: {order: 2}\n }};\nutil.inherits(ParserOptions, $RefParserOptions);\n","/* */ \n'use strict';\n\n/** @type {Promise} **/\nmodule.exports = typeof Promise === 'function' ? Promise : require('es6-promise').Promise;\n","/* */ \n(function(Buffer) {\n 'use strict';\n var Promise = require('../util/promise');\n module.exports = {\n order: 100,\n allowEmpty: true,\n canParse: '.json',\n parse: function parseJSON(file) {\n return new Promise(function(resolve, reject) {\n var data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === 'string') {\n if (data.trim().length === 0) {\n resolve(undefined);\n } else {\n resolve(JSON.parse(data));\n }\n } else {\n resolve(data);\n }\n });\n }\n };\n})(require('buffer').Buffer);\n","/* */ \n(function(Buffer) {\n 'use strict';\n var Promise = require('../util/promise'),\n YAML = require('../util/yaml');\n module.exports = {\n order: 200,\n allowEmpty: true,\n canParse: ['.yaml', '.yml', '.json'],\n parse: function parseYAML(file) {\n return new Promise(function(resolve, reject) {\n var data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === 'string') {\n resolve(YAML.parse(data));\n } else {\n resolve(data);\n }\n });\n }\n };\n})(require('buffer').Buffer);\n","/* */ \n(function(Buffer) {\n 'use strict';\n var TEXT_REGEXP = /\\.(txt|htm|html|md|xml|js|min|map|css|scss|less|svg)$/i;\n module.exports = {\n order: 300,\n allowEmpty: true,\n encoding: 'utf8',\n canParse: function isText(file) {\n return (typeof file.data === 'string' || Buffer.isBuffer(file.data)) && TEXT_REGEXP.test(file.url);\n },\n parse: function parseText(file) {\n if (typeof file.data === 'string') {\n return file.data;\n } else if (Buffer.isBuffer(file.data)) {\n return file.data.toString(this.encoding);\n } else {\n throw new Error('data is not text');\n }\n }\n };\n})(require('buffer').Buffer);\n","/* */ \n(function(Buffer) {\n 'use strict';\n var BINARY_REGEXP = /\\.(jpeg|jpg|gif|png|bmp|ico)$/i;\n module.exports = {\n order: 400,\n allowEmpty: true,\n canParse: function isBinary(file) {\n return Buffer.isBuffer(file.data) && BINARY_REGEXP.test(file.url);\n },\n parse: function parseBinary(file) {\n if (Buffer.isBuffer(file.data)) {\n return file.data;\n } else {\n return new Buffer(file.data);\n }\n }\n };\n})(require('buffer').Buffer);\n","/* */ \nif (System._nodeRequire) {\n module.exports = System._nodeRequire('fs');\n}\nelse {\n\n exports.readFileSync = function(address) {\n var output;\n var xhr = new XMLHttpRequest();\n xhr.open('GET', address, false);\n xhr.onreadystatechange = function(e) {\n if (xhr.readyState == 4) {\n var status = xhr.status;\n if ((status > 399 && status < 600) || status == 400) {\n throw 'File read error on ' + address;\n }\n else\n output = xhr.responseText;\n }\n }\n xhr.send(null);\n return output;\n };\n\n}\n","module.exports = require(\"github:jspm/nodelibs-fs@0.1.2/index\");","/* */ \n(function(Buffer) {\n 'use strict';\n var fs = require('fs'),\n ono = require('ono'),\n Promise = require('../util/promise'),\n url = require('../util/url'),\n debug = require('../util/debug');\n module.exports = {\n order: 100,\n canRead: function isFile(file) {\n return url.isFileSystemPath(file.url);\n },\n read: function readFile(file) {\n return new Promise(function(resolve, reject) {\n var path;\n try {\n path = url.toFileSystemPath(file.url);\n } catch (err) {\n reject(ono.uri(err, 'Malformed URI: %s', file.url));\n }\n debug('Opening file: %s', path);\n try {\n fs.readFile(path, function(err, data) {\n if (err) {\n reject(ono(err, 'Error opening file \"%s\"', path));\n } else {\n resolve(data);\n }\n });\n } catch (err) {\n reject(ono(err, 'Error opening file \"%s\"', path));\n }\n });\n }\n };\n})(require('buffer').Buffer);\n","/* */ \nexports.fetch = isFunction(global.fetch) && isFunction(global.ReadableByteStream)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\nvar xhr = new global.XMLHttpRequest()\n// If location.host is empty, e.g. if this page/worker was loaded\n// from a Blob, then use example.com to avoid an error\nxhr.open('GET', global.location.host ? '/' : 'https://example.com')\n\nfunction checkTypeSupport (type) {\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\nexports.arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer')\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\nexports.overrideMimeType = isFunction(xhr.overrideMimeType)\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n return typeof value === 'function'\n}\n\nxhr = null // Help gc\n","/* */ \n(function(Buffer, process) {\n var capability = require('./capability');\n var inherits = require('inherits');\n var stream = require('readable-stream');\n var rStates = exports.readyStates = {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE: 4\n };\n var IncomingMessage = exports.IncomingMessage = function(xhr, response, mode) {\n var self = this;\n stream.Readable.call(self);\n self._mode = mode;\n self.headers = {};\n self.rawHeaders = [];\n self.trailers = {};\n self.rawTrailers = [];\n self.on('end', function() {\n process.nextTick(function() {\n self.emit('close');\n });\n });\n if (mode === 'fetch') {\n self._fetchResponse = response;\n self.url = response.url;\n self.statusCode = response.status;\n self.statusMessage = response.statusText;\n for (var header,\n _i,\n _it = response.headers[Symbol.iterator](); header = (_i = _it.next()).value, !_i.done; ) {\n self.headers[header[0].toLowerCase()] = header[1];\n self.rawHeaders.push(header[0], header[1]);\n }\n var reader = response.body.getReader();\n function read() {\n reader.read().then(function(result) {\n if (self._destroyed)\n return;\n if (result.done) {\n self.push(null);\n return;\n }\n self.push(new Buffer(result.value));\n read();\n });\n }\n read();\n } else {\n self._xhr = xhr;\n self._pos = 0;\n self.url = xhr.responseURL;\n self.statusCode = xhr.status;\n self.statusMessage = xhr.statusText;\n var headers = xhr.getAllResponseHeaders().split(/\\r?\\n/);\n headers.forEach(function(header) {\n var matches = header.match(/^([^:]+):\\s*(.*)/);\n if (matches) {\n var key = matches[1].toLowerCase();\n if (key === 'set-cookie') {\n if (self.headers[key] === undefined) {\n self.headers[key] = [];\n }\n self.headers[key].push(matches[2]);\n } else if (self.headers[key] !== undefined) {\n self.headers[key] += ', ' + matches[2];\n } else {\n self.headers[key] = matches[2];\n }\n self.rawHeaders.push(matches[1], matches[2]);\n }\n });\n self._charset = 'x-user-defined';\n if (!capability.overrideMimeType) {\n var mimeType = self.rawHeaders['mime-type'];\n if (mimeType) {\n var charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/);\n if (charsetMatch) {\n self._charset = charsetMatch[1].toLowerCase();\n }\n }\n if (!self._charset)\n self._charset = 'utf-8';\n }\n }\n };\n inherits(IncomingMessage, stream.Readable);\n IncomingMessage.prototype._read = function() {};\n IncomingMessage.prototype._onXHRProgress = function() {\n var self = this;\n var xhr = self._xhr;\n var response = null;\n switch (self._mode) {\n case 'text:vbarray':\n if (xhr.readyState !== rStates.DONE)\n break;\n try {\n response = new global.VBArray(xhr.responseBody).toArray();\n } catch (e) {}\n if (response !== null) {\n self.push(new Buffer(response));\n break;\n }\n case 'text':\n try {\n response = xhr.responseText;\n } catch (e) {\n self._mode = 'text:vbarray';\n break;\n }\n if (response.length > self._pos) {\n var newData = response.substr(self._pos);\n if (self._charset === 'x-user-defined') {\n var buffer = new Buffer(newData.length);\n for (var i = 0; i < newData.length; i++)\n buffer[i] = newData.charCodeAt(i) & 0xff;\n self.push(buffer);\n } else {\n self.push(newData, self._charset);\n }\n self._pos = response.length;\n }\n break;\n case 'arraybuffer':\n if (xhr.readyState !== rStates.DONE)\n break;\n response = xhr.response;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n case 'moz-chunked-arraybuffer':\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING || !response)\n break;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n case 'ms-stream':\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING)\n break;\n var reader = new global.MSStreamReader();\n reader.onprogress = function() {\n if (reader.result.byteLength > self._pos) {\n self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))));\n self._pos = reader.result.byteLength;\n }\n };\n reader.onload = function() {\n self.push(null);\n };\n reader.readAsArrayBuffer(response);\n break;\n }\n if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n self.push(null);\n }\n };\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(Buffer, process) {\n 'use strict';\n module.exports = Readable;\n var processNextTick = require('process-nextick-args');\n var isArray = require('isarray');\n var Buffer = require('buffer').Buffer;\n Readable.ReadableState = ReadableState;\n var EE = require('events');\n var EElistenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n };\n var Stream;\n (function() {\n try {\n Stream = require('st' + 'ream');\n } catch (_) {} finally {\n if (!Stream)\n Stream = require('events').EventEmitter;\n }\n })();\n var Buffer = require('buffer').Buffer;\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var debugUtil = require('@empty');\n var debug = undefined;\n if (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n } else {\n debug = function() {};\n }\n var StringDecoder;\n util.inherits(Readable, Stream);\n var Duplex;\n function ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n this.objectMode = !!options.objectMode;\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.readableObjectMode;\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n this.highWaterMark = ~~this.highWaterMark;\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n this.sync = true;\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.ranOut = false;\n this.awaitDrain = 0;\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n }\n var Duplex;\n function Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable))\n return new Readable(options);\n this._readableState = new ReadableState(options, this);\n this.readable = true;\n if (options && typeof options.read === 'function')\n this._read = options.read;\n Stream.call(this);\n }\n Readable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n if (!state.objectMode && typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n return readableAddChunk(this, state, chunk, encoding, false);\n };\n Readable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n };\n Readable.prototype.isPaused = function() {\n return this._readableState.flowing === false;\n };\n function readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n var skipAdd;\n if (state.decoder && !addToFront && !encoding) {\n chunk = state.decoder.write(chunk);\n skipAdd = !state.objectMode && chunk.length === 0;\n }\n if (!addToFront)\n state.reading = false;\n if (!skipAdd) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront)\n state.buffer.unshift(chunk);\n else\n state.buffer.push(chunk);\n if (state.needReadable)\n emitReadable(stream);\n }\n }\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n return needMoreData(state);\n }\n function needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n }\n Readable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n };\n var MAX_HWM = 0x800000;\n function computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n }\n function howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n if (n === null || isNaN(n)) {\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n if (n <= 0)\n return 0;\n if (n > state.highWaterMark)\n state.highWaterMark = computeNewHighWaterMark(n);\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else {\n return state.length;\n }\n }\n return n;\n }\n Readable.prototype.read = function(n) {\n debug('read', n);\n var state = this._readableState;\n var nOrig = n;\n if (typeof n !== 'number' || n > 0)\n state.emittedReadable = false;\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended)\n endReadable(this);\n else\n emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n if (n === 0 && state.ended) {\n if (state.length === 0)\n endReadable(this);\n return null;\n }\n var doRead = state.needReadable;\n debug('need readable', doRead);\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n }\n if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n if (state.length === 0)\n state.needReadable = true;\n this._read(state.highWaterMark);\n state.sync = false;\n }\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n var ret;\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n }\n state.length -= n;\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n if (nOrig !== n && state.ended && state.length === 0)\n endReadable(this);\n if (ret !== null)\n this.emit('data', ret);\n return ret;\n };\n function chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n }\n function onEofChunk(stream, state) {\n if (state.ended)\n return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n emitReadable(stream);\n }\n function emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync)\n processNextTick(emitReadable_, stream);\n else\n emitReadable_(stream);\n }\n }\n function emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n }\n function maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n }\n function maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n }\n Readable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n };\n Readable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n processNextTick(endFn);\n else\n src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n cleanedUp = true;\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain))\n ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n if (false === ret) {\n if (state.pipesCount === 1 && state.pipes[0] === dest && src.listenerCount('data') === 1 && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n }\n src.pause();\n }\n }\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n dest.emit('pipe', src);\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n };\n function pipeOnDrain(src) {\n return function() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain)\n state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n }\n Readable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n if (state.pipesCount === 0)\n return this;\n if (state.pipesCount === 1) {\n if (dest && dest !== state.pipes)\n return this;\n if (!dest)\n dest = state.pipes;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n if (!dest) {\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var _i = 0; _i < len; _i++) {\n dests[_i].emit('unpipe', this);\n }\n return this;\n }\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n dest.emit('unpipe', this);\n return this;\n };\n Readable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n if (ev === 'data' && false !== this._readableState.flowing) {\n this.resume();\n }\n if (ev === 'readable' && !this._readableState.endEmitted) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n return res;\n };\n Readable.prototype.addListener = Readable.prototype.on;\n function nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n }\n Readable.prototype.resume = function() {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n };\n function resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n }\n function resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading)\n stream.read(0);\n }\n Readable.prototype.pause = function() {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n };\n function flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n if (state.flowing) {\n do {\n var chunk = stream.read();\n } while (null !== chunk && state.flowing);\n }\n }\n Readable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n var self = this;\n stream.on('end', function() {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n self.push(null);\n });\n stream.on('data', function(chunk) {\n debug('wrapped data');\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n if (state.objectMode && (chunk === null || chunk === undefined))\n return;\n else if (!state.objectMode && (!chunk || !chunk.length))\n return;\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function(method) {\n return function() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n self._read = function(n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return self;\n };\n Readable._fromList = fromList;\n function fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n if (list.length === 0)\n return null;\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n if (stringMode)\n ret = list.join('');\n else if (list.length === 1)\n ret = list[0];\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n if (n < list[0].length) {\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n ret = list.shift();\n } else {\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n var c = 0;\n for (var i = 0,\n l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n c += cpy;\n }\n }\n }\n return ret;\n }\n function endReadable(stream) {\n var state = stream._readableState;\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n }\n function endReadableNT(state, stream) {\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n }\n function forEach(xs, f) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n }\n function indexOf(xs, x) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n if (xs[i] === x)\n return i;\n }\n return -1;\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(process) {\n 'use strict';\n if (!process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n } else {\n module.exports = process.nextTick;\n }\n function nextTick(fn) {\n var args = new Array(arguments.length - 1);\n var i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n})(require('process'));\n","module.exports = require(\"npm:process-nextick-args@1.0.6/index.js\");","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = require(\"npm:util-deprecate@1.0.2/browser.js\");","/* */ \n(function(Buffer, process) {\n 'use strict';\n module.exports = Writable;\n var processNextTick = require('process-nextick-args');\n var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n var Buffer = require('buffer').Buffer;\n Writable.WritableState = WritableState;\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var internalUtil = {deprecate: require('util-deprecate')};\n var Stream;\n (function() {\n try {\n Stream = require('st' + 'ream');\n } catch (_) {} finally {\n if (!Stream)\n Stream = require('events').EventEmitter;\n }\n })();\n var Buffer = require('buffer').Buffer;\n util.inherits(Writable, Stream);\n function nop() {}\n function WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n }\n var Duplex;\n function WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n this.objectMode = !!options.objectMode;\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.writableObjectMode;\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n this.highWaterMark = ~~this.highWaterMark;\n this.needDrain = false;\n this.ending = false;\n this.ended = false;\n this.finished = false;\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.length = 0;\n this.writing = false;\n this.corked = 0;\n this.sync = true;\n this.bufferProcessing = false;\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n this.writecb = null;\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n this.pendingcb = 0;\n this.prefinished = false;\n this.errorEmitted = false;\n this.bufferedRequestCount = 0;\n this.corkedRequestsFree = new CorkedRequest(this);\n this.corkedRequestsFree.next = new CorkedRequest(this);\n }\n WritableState.prototype.getBuffer = function writableStateGetBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n };\n (function() {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {get: internalUtil.deprecate(function() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')});\n } catch (_) {}\n })();\n var Duplex;\n function Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n this._writableState = new WritableState(options, this);\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function')\n this._write = options.write;\n if (typeof options.writev === 'function')\n this._writev = options.writev;\n }\n Stream.call(this);\n }\n Writable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n };\n function writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n stream.emit('error', er);\n processNextTick(cb, er);\n }\n function validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n }\n Writable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n if (typeof cb !== 'function')\n cb = nop;\n if (state.ended)\n writeAfterEnd(this, cb);\n else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n return ret;\n };\n Writable.prototype.cork = function() {\n var state = this._writableState;\n state.corked++;\n };\n Writable.prototype.uncork = function() {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest)\n clearBuffer(this, state);\n }\n };\n Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n if (typeof encoding === 'string')\n encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1))\n throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n };\n function decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n }\n function writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n if (!ret)\n state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n }\n function doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev)\n stream._writev(chunk, state.onwrite);\n else\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n }\n function onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync)\n processNextTick(cb, er);\n else\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n }\n function onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n }\n function onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n var finished = needFinish(state);\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n asyncWrite(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n }\n function afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n }\n function onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n }\n function clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n while (entry) {\n buffer[count] = entry;\n entry = entry.next;\n count += 1;\n }\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n state.pendingcb++;\n state.lastBufferedRequest = null;\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n if (state.writing) {\n break;\n }\n }\n if (entry === null)\n state.lastBufferedRequest = null;\n }\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n }\n Writable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n };\n Writable.prototype._writev = null;\n Writable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined)\n this.write(chunk, encoding);\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n };\n function needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n }\n function prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n function finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else {\n prefinish(stream, state);\n }\n }\n return need;\n }\n function endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n processNextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n }\n function CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function(err) {\n var entry = _this.entry;\n _this.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = _this;\n } else {\n state.corkedRequestsFree = _this;\n }\n };\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(process) {\n 'use strict';\n var objectKeys = Object.keys || function(obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }\n return keys;\n };\n module.exports = Duplex;\n var processNextTick = require('process-nextick-args');\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var Readable = require('./_stream_readable');\n var Writable = require('./_stream_writable');\n util.inherits(Duplex, Readable);\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n }\n function Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false)\n this.readable = false;\n if (options && options.writable === false)\n this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n function onend() {\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n processNextTick(onEndNT, this);\n }\n function onEndNT(self) {\n self.end();\n }\n function forEach(xs, f) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n }\n})(require('process'));\n","/* */ \n(function(process) {\n 'use strict';\n module.exports = Transform;\n var Duplex = require('./_stream_duplex');\n var util = require('core-util-is');\n util.inherits = require('inherits');\n util.inherits(Transform, Duplex);\n function TransformState(stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n }\n function afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n ts.writechunk = null;\n ts.writecb = null;\n if (data !== null && data !== undefined)\n stream.push(data);\n cb(er);\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n }\n function Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n Duplex.call(this, options);\n this._transformState = new TransformState(this);\n var stream = this;\n this._readableState.needReadable = true;\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function')\n this._transform = options.transform;\n if (typeof options.flush === 'function')\n this._flush = options.flush;\n }\n this.once('prefinish', function() {\n if (typeof this._flush === 'function')\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n }\n Transform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n };\n Transform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n };\n Transform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n };\n Transform.prototype._read = function(n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n ts.needTransform = true;\n }\n };\n function done(stream, er) {\n if (er)\n return stream.emit('error', er);\n var ws = stream._writableState;\n var ts = stream._transformState;\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n return stream.push(null);\n }\n})(require('process'));\n","/* */ \n'use strict';\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\nutil.inherits(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","/* */ \n(function(process) {\n var Stream = (function() {\n try {\n return require('st' + 'ream');\n } catch (_) {}\n }());\n exports = module.exports = require('./lib/_stream_readable');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable');\n exports.Duplex = require('./lib/_stream_duplex');\n exports.Transform = require('./lib/_stream_transform');\n exports.PassThrough = require('./lib/_stream_passthrough');\n if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream;\n }\n})(require('process'));\n","module.exports = require(\"npm:readable-stream@2.1.2/readable.js\");","/* */ \n(function(Buffer) {\n var Buffer = require('buffer').Buffer;\n module.exports = function(buf) {\n if (buf instanceof Uint8Array) {\n if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n } else if (typeof buf.buffer.slice === 'function') {\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n }\n if (Buffer.isBuffer(buf)) {\n var arrayCopy = new Uint8Array(buf.length);\n var len = buf.length;\n for (var i = 0; i < len; i++) {\n arrayCopy[i] = buf[i];\n }\n return arrayCopy.buffer;\n } else {\n throw new Error('Argument must be a Buffer');\n }\n };\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:to-arraybuffer@1.0.1/index.js\");","/* */ \n(function(Buffer, process) {\n var capability = require('./capability');\n var inherits = require('inherits');\n var response = require('./response');\n var stream = require('readable-stream');\n var toArrayBuffer = require('to-arraybuffer');\n var IncomingMessage = response.IncomingMessage;\n var rStates = response.readyStates;\n function decideMode(preferBinary) {\n if (capability.fetch) {\n return 'fetch';\n } else if (capability.mozchunkedarraybuffer) {\n return 'moz-chunked-arraybuffer';\n } else if (capability.msstream) {\n return 'ms-stream';\n } else if (capability.arraybuffer && preferBinary) {\n return 'arraybuffer';\n } else if (capability.vbArray && preferBinary) {\n return 'text:vbarray';\n } else {\n return 'text';\n }\n }\n var ClientRequest = module.exports = function(opts) {\n var self = this;\n stream.Writable.call(self);\n self._opts = opts;\n self._body = [];\n self._headers = {};\n if (opts.auth)\n self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'));\n Object.keys(opts.headers).forEach(function(name) {\n self.setHeader(name, opts.headers[name]);\n });\n var preferBinary;\n if (opts.mode === 'prefer-streaming') {\n preferBinary = false;\n } else if (opts.mode === 'allow-wrong-content-type') {\n preferBinary = !capability.overrideMimeType;\n } else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n preferBinary = true;\n } else {\n throw new Error('Invalid value for opts.mode');\n }\n self._mode = decideMode(preferBinary);\n self.on('finish', function() {\n self._onFinish();\n });\n };\n inherits(ClientRequest, stream.Writable);\n ClientRequest.prototype.setHeader = function(name, value) {\n var self = this;\n var lowerName = name.toLowerCase();\n if (unsafeHeaders.indexOf(lowerName) !== -1)\n return;\n self._headers[lowerName] = {\n name: name,\n value: value\n };\n };\n ClientRequest.prototype.getHeader = function(name) {\n var self = this;\n return self._headers[name.toLowerCase()].value;\n };\n ClientRequest.prototype.removeHeader = function(name) {\n var self = this;\n delete self._headers[name.toLowerCase()];\n };\n ClientRequest.prototype._onFinish = function() {\n var self = this;\n if (self._destroyed)\n return;\n var opts = self._opts;\n var headersObj = self._headers;\n var body;\n if (opts.method === 'POST' || opts.method === 'PUT' || opts.method === 'PATCH') {\n if (capability.blobConstructor) {\n body = new global.Blob(self._body.map(function(buffer) {\n return toArrayBuffer(buffer);\n }), {type: (headersObj['content-type'] || {}).value || ''});\n } else {\n body = Buffer.concat(self._body).toString();\n }\n }\n if (self._mode === 'fetch') {\n var headers = Object.keys(headersObj).map(function(name) {\n return [headersObj[name].name, headersObj[name].value];\n });\n global.fetch(self._opts.url, {\n method: self._opts.method,\n headers: headers,\n body: body,\n mode: 'cors',\n credentials: opts.withCredentials ? 'include' : 'same-origin'\n }).then(function(response) {\n self._fetchResponse = response;\n self._connect();\n }, function(reason) {\n self.emit('error', reason);\n });\n } else {\n var xhr = self._xhr = new global.XMLHttpRequest();\n try {\n xhr.open(self._opts.method, self._opts.url, true);\n } catch (err) {\n process.nextTick(function() {\n self.emit('error', err);\n });\n return;\n }\n if ('responseType' in xhr)\n xhr.responseType = self._mode.split(':')[0];\n if ('withCredentials' in xhr)\n xhr.withCredentials = !!opts.withCredentials;\n if (self._mode === 'text' && 'overrideMimeType' in xhr)\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n Object.keys(headersObj).forEach(function(name) {\n xhr.setRequestHeader(headersObj[name].name, headersObj[name].value);\n });\n self._response = null;\n xhr.onreadystatechange = function() {\n switch (xhr.readyState) {\n case rStates.LOADING:\n case rStates.DONE:\n self._onXHRProgress();\n break;\n }\n };\n if (self._mode === 'moz-chunked-arraybuffer') {\n xhr.onprogress = function() {\n self._onXHRProgress();\n };\n }\n xhr.onerror = function() {\n if (self._destroyed)\n return;\n self.emit('error', new Error('XHR error'));\n };\n try {\n xhr.send(body);\n } catch (err) {\n process.nextTick(function() {\n self.emit('error', err);\n });\n return;\n }\n }\n };\n function statusValid(xhr) {\n try {\n var status = xhr.status;\n return (status !== null && status !== 0);\n } catch (e) {\n return false;\n }\n }\n ClientRequest.prototype._onXHRProgress = function() {\n var self = this;\n if (!statusValid(self._xhr) || self._destroyed)\n return;\n if (!self._response)\n self._connect();\n self._response._onXHRProgress();\n };\n ClientRequest.prototype._connect = function() {\n var self = this;\n if (self._destroyed)\n return;\n self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode);\n self.emit('response', self._response);\n };\n ClientRequest.prototype._write = function(chunk, encoding, cb) {\n var self = this;\n self._body.push(chunk);\n cb();\n };\n ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function() {\n var self = this;\n self._destroyed = true;\n if (self._response)\n self._response._destroyed = true;\n if (self._xhr)\n self._xhr.abort();\n };\n ClientRequest.prototype.end = function(data, encoding, cb) {\n var self = this;\n if (typeof data === 'function') {\n cb = data;\n data = undefined;\n }\n stream.Writable.prototype.end.call(self, data, encoding, cb);\n };\n ClientRequest.prototype.flushHeaders = function() {};\n ClientRequest.prototype.setTimeout = function() {};\n ClientRequest.prototype.setNoDelay = function() {};\n ClientRequest.prototype.setSocketKeepAlive = function() {};\n var unsafeHeaders = ['accept-charset', 'accept-encoding', 'access-control-request-headers', 'access-control-request-method', 'connection', 'content-length', 'cookie', 'cookie2', 'date', 'dnt', 'expect', 'host', 'keep-alive', 'origin', 'referer', 'te', 'trailer', 'transfer-encoding', 'upgrade', 'user-agent', 'via'];\n})(require('buffer').Buffer, require('process'));\n","/* */ \nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = require(\"npm:xtend@4.0.1/immutable\");","/* */ \nmodule.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","module.exports = require(\"npm:builtin-status-codes@2.0.0/browser.js\");","/* */ \nvar ClientRequest = require('./lib/request');\nvar extend = require('xtend');\nvar statusCodes = require('builtin-status-codes');\nvar url = require('url');\nvar http = exports;\nhttp.request = function(opts, cb) {\n if (typeof opts === 'string')\n opts = url.parse(opts);\n else\n opts = extend(opts);\n var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '';\n var protocol = opts.protocol || defaultProtocol;\n var host = opts.hostname || opts.host;\n var port = opts.port;\n var path = opts.path || '/';\n if (host && host.indexOf(':') !== -1)\n host = '[' + host + ']';\n opts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path;\n opts.method = (opts.method || 'GET').toUpperCase();\n opts.headers = opts.headers || {};\n var req = new ClientRequest(opts);\n if (cb)\n req.on('response', cb);\n return req;\n};\nhttp.get = function get(opts, cb) {\n var req = http.request(opts, cb);\n req.end();\n return req;\n};\nhttp.Agent = function() {};\nhttp.Agent.defaultMaxSockets = 4;\nhttp.STATUS_CODES = statusCodes;\nhttp.METHODS = ['CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNLOCK', 'UNSUBSCRIBE'];\n","module.exports = require(\"npm:stream-http@2.3.0/index.js\");","/* */ \n(function(process) {\n exports = module.exports = require('./lib/_stream_readable');\n exports.Stream = require('stream-browserify/index');\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable');\n exports.Duplex = require('./lib/_stream_duplex');\n exports.Transform = require('./lib/_stream_transform');\n exports.PassThrough = require('./lib/_stream_passthrough');\n if (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream-browserify/index');\n }\n})(require('process'));\n","/* */ \nmodule.exports = require('./lib/_stream_writable');\n","/* */ \nmodule.exports = require('./lib/_stream_duplex');\n","/* */ \nmodule.exports = require('./lib/_stream_transform');\n","/* */ \nmodule.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","module.exports = require(\"npm:isarray@0.0.1/index.js\");","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n }\n throw TypeError('Uncaught, unspecified \"error\" event.');\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n var m;\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n var ret;\n if (!emitter._events || !emitter._events[type])\n ret = 0;\n else if (isFunction(emitter._events[type]))\n ret = 1;\n else\n ret = emitter._events[type].length;\n return ret;\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","module.exports = require(\"npm:events@1.0.2/events.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('events') : require('events');","module.exports = require(\"github:jspm/nodelibs-events@0.1.1/index\");","/* */ \n(function(Buffer) {\n var Buffer = require('buffer').Buffer;\n var isBufferEncoding = Buffer.isEncoding || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n default:\n return false;\n }\n };\n function assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n }\n var StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n this.charBuffer = new Buffer(6);\n this.charReceived = 0;\n this.charLength = 0;\n };\n StringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n while (this.charLength) {\n var available = (buffer.length >= this.charLength - this.charReceived) ? this.charLength - this.charReceived : buffer.length;\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n if (this.charReceived < this.charLength) {\n return '';\n }\n buffer = buffer.slice(available, buffer.length);\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n this.detectIncompleteChar(buffer);\n var end = buffer.length;\n if (this.charLength) {\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n charStr += buffer.toString(this.encoding, 0, end);\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n return charStr;\n };\n StringDecoder.prototype.detectIncompleteChar = function(buffer) {\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n };\n StringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n return res;\n };\n function passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n }\n function utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n }\n function base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n }\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:string_decoder@0.10.31/index.js\");","/* */ \n(function(Buffer, process) {\n module.exports = Readable;\n var isArray = require('isarray');\n var Buffer = require('buffer').Buffer;\n Readable.ReadableState = ReadableState;\n var EE = require('events').EventEmitter;\n if (!EE.listenerCount)\n EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n };\n var Stream = require('stream-browserify/index');\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var StringDecoder;\n var debug = require('@empty');\n if (debug && debug.debuglog) {\n debug = debug.debuglog('stream');\n } else {\n debug = function() {};\n }\n util.inherits(Readable, Stream);\n function ReadableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n options = options || {};\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n this.highWaterMark = ~~this.highWaterMark;\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n this.sync = true;\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.objectMode = !!options.objectMode;\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.readableObjectMode;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.ranOut = false;\n this.awaitDrain = 0;\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n }\n function Readable(options) {\n var Duplex = require('./_stream_duplex');\n if (!(this instanceof Readable))\n return new Readable(options);\n this._readableState = new ReadableState(options, this);\n this.readable = true;\n Stream.call(this);\n }\n Readable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n if (util.isString(chunk) && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n return readableAddChunk(this, state, chunk, encoding, false);\n };\n Readable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n };\n function readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (util.isNullOrUndefined(chunk)) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n if (!addToFront)\n state.reading = false;\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront)\n state.buffer.unshift(chunk);\n else\n state.buffer.push(chunk);\n if (state.needReadable)\n emitReadable(stream);\n }\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n return needMoreData(state);\n }\n function needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n }\n Readable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n };\n var MAX_HWM = 0x800000;\n function roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n n--;\n for (var p = 1; p < 32; p <<= 1)\n n |= n >> p;\n n++;\n }\n return n;\n }\n function howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n if (isNaN(n) || util.isNull(n)) {\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n if (n <= 0)\n return 0;\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n return n;\n }\n Readable.prototype.read = function(n) {\n debug('read', n);\n var state = this._readableState;\n var nOrig = n;\n if (!util.isNumber(n) || n > 0)\n state.emittedReadable = false;\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended)\n endReadable(this);\n else\n emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n if (n === 0 && state.ended) {\n if (state.length === 0)\n endReadable(this);\n return null;\n }\n var doRead = state.needReadable;\n debug('need readable', doRead);\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n }\n if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n if (state.length === 0)\n state.needReadable = true;\n this._read(state.highWaterMark);\n state.sync = false;\n }\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n var ret;\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n if (util.isNull(ret)) {\n state.needReadable = true;\n n = 0;\n }\n state.length -= n;\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n if (nOrig !== n && state.ended && state.length === 0)\n endReadable(this);\n if (!util.isNull(ret))\n this.emit('data', ret);\n return ret;\n };\n function chunkInvalid(state, chunk) {\n var er = null;\n if (!util.isBuffer(chunk) && !util.isString(chunk) && !util.isNullOrUndefined(chunk) && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n }\n function onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n emitReadable(stream);\n }\n function emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n }\n }\n function emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n }\n function maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n }\n function maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n }\n Readable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n };\n Readable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n function cleanup() {\n debug('cleanup');\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain))\n ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n if (false === ret) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n src.pause();\n }\n }\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n dest.emit('pipe', src);\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n };\n function pipeOnDrain(src) {\n return function() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain)\n state.awaitDrain--;\n if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n }\n Readable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n if (state.pipesCount === 0)\n return this;\n if (state.pipesCount === 1) {\n if (dest && dest !== state.pipes)\n return this;\n if (!dest)\n dest = state.pipes;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n if (!dest) {\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n dest.emit('unpipe', this);\n return this;\n };\n Readable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n if (ev === 'data' && false !== this._readableState.flowing) {\n this.resume();\n }\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n var self = this;\n process.nextTick(function() {\n debug('readable nexttick read 0');\n self.read(0);\n });\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n return res;\n };\n Readable.prototype.addListener = Readable.prototype.on;\n Readable.prototype.resume = function() {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n if (!state.reading) {\n debug('resume read 0');\n this.read(0);\n }\n resume(this, state);\n }\n return this;\n };\n function resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(function() {\n resume_(stream, state);\n });\n }\n }\n function resume_(stream, state) {\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading)\n stream.read(0);\n }\n Readable.prototype.pause = function() {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n };\n function flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n if (state.flowing) {\n do {\n var chunk = stream.read();\n } while (null !== chunk && state.flowing);\n }\n }\n Readable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n var self = this;\n stream.on('end', function() {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n self.push(null);\n });\n stream.on('data', function(chunk) {\n debug('wrapped data');\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n if (!chunk || !state.objectMode && !chunk.length)\n return;\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n for (var i in stream) {\n if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {\n this[i] = function(method) {\n return function() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n self._read = function(n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return self;\n };\n Readable._fromList = fromList;\n function fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n if (list.length === 0)\n return null;\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n if (n < list[0].length) {\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n ret = list.shift();\n } else {\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n var c = 0;\n for (var i = 0,\n l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n c += cpy;\n }\n }\n }\n return ret;\n }\n function endReadable(stream) {\n var state = stream._readableState;\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(function() {\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n }\n function forEach(xs, f) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n }\n function indexOf(xs, x) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n if (xs[i] === x)\n return i;\n }\n return -1;\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(Buffer, process) {\n module.exports = Writable;\n var Buffer = require('buffer').Buffer;\n Writable.WritableState = WritableState;\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var Stream = require('stream-browserify/index');\n util.inherits(Writable, Stream);\n function WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n }\n function WritableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n options = options || {};\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n this.objectMode = !!options.objectMode;\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.writableObjectMode;\n this.highWaterMark = ~~this.highWaterMark;\n this.needDrain = false;\n this.ending = false;\n this.ended = false;\n this.finished = false;\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.length = 0;\n this.writing = false;\n this.corked = 0;\n this.sync = true;\n this.bufferProcessing = false;\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n this.writecb = null;\n this.writelen = 0;\n this.buffer = [];\n this.pendingcb = 0;\n this.prefinished = false;\n this.errorEmitted = false;\n }\n function Writable(options) {\n var Duplex = require('./_stream_duplex');\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n this._writableState = new WritableState(options, this);\n this.writable = true;\n Stream.call(this);\n }\n Writable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n };\n function writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n }\n function validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!util.isBuffer(chunk) && !util.isString(chunk) && !util.isNullOrUndefined(chunk) && !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n }\n Writable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n if (!util.isFunction(cb))\n cb = function() {};\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n return ret;\n };\n Writable.prototype.cork = function() {\n var state = this._writableState;\n state.corked++;\n };\n Writable.prototype.uncork = function() {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(this, state);\n }\n };\n function decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && util.isString(chunk)) {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n }\n function writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n if (!ret)\n state.needDrain = true;\n if (state.writing || state.corked)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, false, len, chunk, encoding, cb);\n return ret;\n }\n function doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev)\n stream._writev(chunk, state.onwrite);\n else\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n }\n function onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n state.pendingcb--;\n cb(er);\n });\n else {\n state.pendingcb--;\n cb(er);\n }\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n }\n function onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n }\n function onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n var finished = needFinish(stream, state);\n if (!finished && !state.corked && !state.bufferProcessing && state.buffer.length) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n }\n function afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n }\n function onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n }\n function clearBuffer(stream, state) {\n state.bufferProcessing = true;\n if (stream._writev && state.buffer.length > 1) {\n var cbs = [];\n for (var c = 0; c < state.buffer.length; c++)\n cbs.push(state.buffer[c].callback);\n state.pendingcb++;\n doWrite(stream, state, true, state.length, state.buffer, '', function(err) {\n for (var i = 0; i < cbs.length; i++) {\n state.pendingcb--;\n cbs[i](err);\n }\n });\n state.buffer = [];\n } else {\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n if (state.writing) {\n c++;\n break;\n }\n }\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n }\n state.bufferProcessing = false;\n }\n Writable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n };\n Writable.prototype._writev = null;\n Writable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n if (util.isFunction(chunk)) {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n if (!util.isNullOrUndefined(chunk))\n this.write(chunk, encoding);\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n };\n function needFinish(stream, state) {\n return (state.ending && state.length === 0 && !state.finished && !state.writing);\n }\n function prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n function finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else\n prefinish(stream, state);\n }\n return need;\n }\n function endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(process) {\n module.exports = Duplex;\n var objectKeys = Object.keys || function(obj) {\n var keys = [];\n for (var key in obj)\n keys.push(key);\n return keys;\n };\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var Readable = require('./_stream_readable');\n var Writable = require('./_stream_writable');\n util.inherits(Duplex, Readable);\n forEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n });\n function Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false)\n this.readable = false;\n if (options && options.writable === false)\n this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n function onend() {\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n process.nextTick(this.end.bind(this));\n }\n function forEach(xs, f) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n }\n})(require('process'));\n","/* */ \n(function(process) {\n module.exports = Transform;\n var Duplex = require('./_stream_duplex');\n var util = require('core-util-is');\n util.inherits = require('inherits');\n util.inherits(Transform, Duplex);\n function TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n }\n function afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n ts.writechunk = null;\n ts.writecb = null;\n if (!util.isNullOrUndefined(data))\n stream.push(data);\n if (cb)\n cb(er);\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n }\n function Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n Duplex.call(this, options);\n this._transformState = new TransformState(options, this);\n var stream = this;\n this._readableState.needReadable = true;\n this._readableState.sync = false;\n this.once('prefinish', function() {\n if (util.isFunction(this._flush))\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n }\n Transform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n };\n Transform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n };\n Transform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n };\n Transform.prototype._read = function(n) {\n var ts = this._transformState;\n if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n ts.needTransform = true;\n }\n };\n function done(stream, er) {\n if (er)\n return stream.emit('error', er);\n var ws = stream._writableState;\n var ts = stream._transformState;\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n return stream.push(null);\n }\n})(require('process'));\n","/* */ \n(function(Buffer) {\n function isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n }\n exports.isArray = isArray;\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n exports.isBoolean = isBoolean;\n function isNull(arg) {\n return arg === null;\n }\n exports.isNull = isNull;\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n exports.isNullOrUndefined = isNullOrUndefined;\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n exports.isNumber = isNumber;\n function isString(arg) {\n return typeof arg === 'string';\n }\n exports.isString = isString;\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n exports.isSymbol = isSymbol;\n function isUndefined(arg) {\n return arg === void 0;\n }\n exports.isUndefined = isUndefined;\n function isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n }\n exports.isRegExp = isRegExp;\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n exports.isObject = isObject;\n function isDate(d) {\n return objectToString(d) === '[object Date]';\n }\n exports.isDate = isDate;\n function isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n exports.isError = isError;\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n exports.isFunction = isFunction;\n function isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || typeof arg === 'undefined';\n }\n exports.isPrimitive = isPrimitive;\n exports.isBuffer = Buffer.isBuffer;\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:core-util-is@1.0.2/lib/util.js\");","/* */ \nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\nutil.inherits(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","/* */ \nmodule.exports = require('./lib/_stream_passthrough');\n","/* */ \nmodule.exports = Stream;\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable');\nStream.Writable = require('readable-stream/writable');\nStream.Duplex = require('readable-stream/duplex');\nStream.Transform = require('readable-stream/transform');\nStream.PassThrough = require('readable-stream/passthrough');\nStream.Stream = Stream;\nfunction Stream() {\n EE.call(this);\n}\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n source.on('data', ondata);\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n dest.on('drain', ondrain);\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n var didOnEnd = false;\n function onend() {\n if (didOnEnd)\n return;\n didOnEnd = true;\n dest.end();\n }\n function onclose() {\n if (didOnEnd)\n return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function')\n dest.destroy();\n }\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er;\n }\n }\n source.on('error', onerror);\n dest.on('error', onerror);\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source);\n return dest;\n};\n","module.exports = require(\"npm:stream-browserify@1.0.0/index.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('stream') : require('stream-browserify');","module.exports = require(\"github:jspm/nodelibs-stream@0.1.0/index\");","/* */ \nvar Stream = require('stream');\nvar util = require('util');\nvar Response = module.exports = function(res) {\n this.offset = 0;\n this.readable = true;\n};\nutil.inherits(Response, Stream);\nvar capable = {\n streaming: true,\n status2: true\n};\nfunction parseHeaders(res) {\n var lines = res.getAllResponseHeaders().split(/\\r?\\n/);\n var headers = {};\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n if (line === '')\n continue;\n var m = line.match(/^([^:]+):\\s*(.*)/);\n if (m) {\n var key = m[1].toLowerCase(),\n value = m[2];\n if (headers[key] !== undefined) {\n if (isArray(headers[key])) {\n headers[key].push(value);\n } else {\n headers[key] = [headers[key], value];\n }\n } else {\n headers[key] = value;\n }\n } else {\n headers[line] = true;\n }\n }\n return headers;\n}\nResponse.prototype.getResponse = function(xhr) {\n var respType = String(xhr.responseType).toLowerCase();\n if (respType === 'blob')\n return xhr.responseBlob || xhr.response;\n if (respType === 'arraybuffer')\n return xhr.response;\n return xhr.responseText;\n};\nResponse.prototype.getHeader = function(key) {\n return this.headers[key.toLowerCase()];\n};\nResponse.prototype.handle = function(res) {\n if (res.readyState === 2 && capable.status2) {\n try {\n this.statusCode = res.status;\n this.headers = parseHeaders(res);\n } catch (err) {\n capable.status2 = false;\n }\n if (capable.status2) {\n this.emit('ready');\n }\n } else if (capable.streaming && res.readyState === 3) {\n try {\n if (!this.statusCode) {\n this.statusCode = res.status;\n this.headers = parseHeaders(res);\n this.emit('ready');\n }\n } catch (err) {}\n try {\n this._emitData(res);\n } catch (err) {\n capable.streaming = false;\n }\n } else if (res.readyState === 4) {\n if (!this.statusCode) {\n this.statusCode = res.status;\n this.emit('ready');\n }\n this._emitData(res);\n if (res.error) {\n this.emit('error', this.getResponse(res));\n } else\n this.emit('end');\n this.emit('close');\n }\n};\nResponse.prototype._emitData = function(res) {\n var respBody = this.getResponse(res);\n if (respBody.toString().match(/ArrayBuffer/)) {\n this.emit('data', new Uint8Array(respBody, this.offset));\n this.offset = respBody.byteLength;\n return;\n }\n if (respBody.length > this.offset) {\n this.emit('data', respBody.slice(this.offset));\n this.offset = respBody.length;\n }\n};\nvar isArray = Array.isArray || function(xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","/* */ \n\"format cjs\";\n;(function () {\n\n var object = typeof exports != 'undefined' ? exports : this; // #8: web workers\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error;\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa || (\n object.btoa = function (input) {\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next input index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n input.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = input.charCodeAt(idx += 3/4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n });\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob || (\n object.atob = function (input) {\n input = input.replace(/=+$/, '');\n if (input.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = input.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n });\n\n}());\n","module.exports = require(\"npm:Base64@0.2.1/base64.js\");","/* */ \nvar Stream = require('stream');\nvar Response = require('./response');\nvar Base64 = require('Base64');\nvar inherits = require('inherits');\nvar Request = module.exports = function(xhr, params) {\n var self = this;\n self.writable = true;\n self.xhr = xhr;\n self.body = [];\n self.uri = (params.protocol || 'http:') + '//' + params.host + (params.port ? ':' + params.port : '') + (params.path || '/');\n ;\n if (typeof params.withCredentials === 'undefined') {\n params.withCredentials = true;\n }\n try {\n xhr.withCredentials = params.withCredentials;\n } catch (e) {}\n if (params.responseType)\n try {\n xhr.responseType = params.responseType;\n } catch (e) {}\n xhr.open(params.method || 'GET', self.uri, true);\n xhr.onerror = function(event) {\n self.emit('error', new Error('Network error'));\n };\n self._headers = {};\n if (params.headers) {\n var keys = objectKeys(params.headers);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!self.isSafeRequestHeader(key))\n continue;\n var value = params.headers[key];\n self.setHeader(key, value);\n }\n }\n if (params.auth) {\n this.setHeader('Authorization', 'Basic ' + Base64.btoa(params.auth));\n }\n var res = new Response;\n res.on('close', function() {\n self.emit('close');\n });\n res.on('ready', function() {\n self.emit('response', res);\n });\n res.on('error', function(err) {\n self.emit('error', err);\n });\n xhr.onreadystatechange = function() {\n if (xhr.__aborted)\n return;\n res.handle(xhr);\n };\n};\ninherits(Request, Stream);\nRequest.prototype.setHeader = function(key, value) {\n this._headers[key.toLowerCase()] = value;\n};\nRequest.prototype.getHeader = function(key) {\n return this._headers[key.toLowerCase()];\n};\nRequest.prototype.removeHeader = function(key) {\n delete this._headers[key.toLowerCase()];\n};\nRequest.prototype.write = function(s) {\n this.body.push(s);\n};\nRequest.prototype.destroy = function(s) {\n this.xhr.__aborted = true;\n this.xhr.abort();\n this.emit('close');\n};\nRequest.prototype.end = function(s) {\n if (s !== undefined)\n this.body.push(s);\n var keys = objectKeys(this._headers);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = this._headers[key];\n if (isArray(value)) {\n for (var j = 0; j < value.length; j++) {\n this.xhr.setRequestHeader(key, value[j]);\n }\n } else\n this.xhr.setRequestHeader(key, value);\n }\n if (this.body.length === 0) {\n this.xhr.send('');\n } else if (typeof this.body[0] === 'string') {\n this.xhr.send(this.body.join(''));\n } else if (isArray(this.body[0])) {\n var body = [];\n for (var i = 0; i < this.body.length; i++) {\n body.push.apply(body, this.body[i]);\n }\n this.xhr.send(body);\n } else if (/Array/.test(Object.prototype.toString.call(this.body[0]))) {\n var len = 0;\n for (var i = 0; i < this.body.length; i++) {\n len += this.body[i].length;\n }\n var body = new (this.body[0].constructor)(len);\n var k = 0;\n for (var i = 0; i < this.body.length; i++) {\n var b = this.body[i];\n for (var j = 0; j < b.length; j++) {\n body[k++] = b[j];\n }\n }\n this.xhr.send(body);\n } else if (isXHR2Compatible(this.body[0])) {\n this.xhr.send(this.body[0]);\n } else {\n var body = '';\n for (var i = 0; i < this.body.length; i++) {\n body += this.body[i].toString();\n }\n this.xhr.send(body);\n }\n};\nRequest.unsafeHeaders = [\"accept-charset\", \"accept-encoding\", \"access-control-request-headers\", \"access-control-request-method\", \"connection\", \"content-length\", \"cookie\", \"cookie2\", \"content-transfer-encoding\", \"date\", \"expect\", \"host\", \"keep-alive\", \"origin\", \"referer\", \"te\", \"trailer\", \"transfer-encoding\", \"upgrade\", \"user-agent\", \"via\"];\nRequest.prototype.isSafeRequestHeader = function(headerName) {\n if (!headerName)\n return false;\n return indexOf(Request.unsafeHeaders, headerName.toLowerCase()) === -1;\n};\nvar objectKeys = Object.keys || function(obj) {\n var keys = [];\n for (var key in obj)\n keys.push(key);\n return keys;\n};\nvar isArray = Array.isArray || function(xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\nvar indexOf = function(xs, x) {\n if (xs.indexOf)\n return xs.indexOf(x);\n for (var i = 0; i < xs.length; i++) {\n if (xs[i] === x)\n return i;\n }\n return -1;\n};\nvar isXHR2Compatible = function(obj) {\n if (typeof Blob !== 'undefined' && obj instanceof Blob)\n return true;\n if (typeof ArrayBuffer !== 'undefined' && obj instanceof ArrayBuffer)\n return true;\n if (typeof FormData !== 'undefined' && obj instanceof FormData)\n return true;\n};\n","/* */ \nif (System._nodeRequire) {\n module.exports = System._nodeRequire('http');\n} else {\n var http = module.exports;\n var EventEmitter = require('events').EventEmitter;\n var Request = require('./lib/request');\n var url = require('url');\n http.request = function(params, cb) {\n if (typeof params === 'string') {\n params = url.parse(params);\n }\n if (!params)\n params = {};\n if (!params.host && !params.port) {\n params.port = parseInt(window.location.port, 10);\n }\n if (!params.host && params.hostname) {\n params.host = params.hostname;\n }\n if (!params.protocol) {\n if (params.scheme) {\n params.protocol = params.scheme + ':';\n } else {\n params.protocol = window.location.protocol;\n }\n }\n if (!params.host) {\n params.host = window.location.hostname || window.location.host;\n }\n if (/:/.test(params.host)) {\n if (!params.port) {\n params.port = params.host.split(':')[1];\n }\n params.host = params.host.split(':')[0];\n }\n if (!params.port)\n params.port = params.protocol == 'https:' ? 443 : 80;\n var req = new Request(new xhrHttp, params);\n if (cb)\n req.on('response', cb);\n return req;\n };\n http.get = function(params, cb) {\n params.method = 'GET';\n var req = http.request(params, cb);\n req.end();\n return req;\n };\n http.Agent = function() {};\n http.Agent.defaultMaxSockets = 4;\n var xhrHttp = (function() {\n if (typeof window === 'undefined') {\n throw new Error('no window object present');\n } else if (window.XMLHttpRequest) {\n return window.XMLHttpRequest;\n } else if (window.ActiveXObject) {\n var axs = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.3.0', 'Microsoft.XMLHTTP'];\n for (var i = 0; i < axs.length; i++) {\n try {\n var ax = new (window.ActiveXObject)(axs[i]);\n return function() {\n if (ax) {\n var ax_ = ax;\n ax = null;\n return ax_;\n } else {\n return new (window.ActiveXObject)(axs[i]);\n }\n };\n } catch (e) {}\n }\n throw new Error('ajax not supported in this browser');\n } else {\n throw new Error('ajax not supported in this browser');\n }\n })();\n http.STATUS_CODES = {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing',\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status',\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Moved Temporarily',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Time-out',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Request Entity Too Large',\n 414: 'Request-URI Too Large',\n 415: 'Unsupported Media Type',\n 416: 'Requested Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: 'I\\'m a teapot',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Unordered Collection',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Time-out',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 509: 'Bandwidth Limit Exceeded',\n 510: 'Not Extended',\n 511: 'Network Authentication Required'\n };\n}\n","module.exports = require(\"github:jspm/nodelibs-http@1.7.1/index.js\");","/* */ \nvar http = require('http');\nvar https = module.exports;\nfor (var key in http) {\n if (http.hasOwnProperty(key))\n https[key] = http[key];\n}\n;\nhttps.request = function(params, cb) {\n if (!params)\n params = {};\n params.scheme = 'https';\n return http.request.call(this, params, cb);\n};\n","module.exports = require(\"npm:https-browserify@0.0.0/index.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('https') : require('https-browserify');","module.exports = require(\"github:jspm/nodelibs-https@0.1.0/index\");","/* */ \n(function(Buffer, process) {\n 'use strict';\n var http = require('npm:stream-http@2.3.0'),\n https = require('https'),\n ono = require('ono'),\n url = require('../util/url'),\n debug = require('../util/debug'),\n Promise = require('../util/promise');\n module.exports = {\n order: 200,\n headers: null,\n timeout: 5000,\n redirects: 5,\n withCredentials: false,\n canRead: function isHttp(file) {\n return url.isHttp(file.url);\n },\n read: function readHttp(file) {\n var u = url.parse(file.url);\n if (process.browser && !u.protocol) {\n u.protocol = url.parse(location.href).protocol;\n }\n return download(u, this);\n }\n };\n function download(u, httpOptions, redirects) {\n return new Promise(function(resolve, reject) {\n u = url.parse(u);\n redirects = redirects || [];\n redirects.push(u.href);\n get(u, httpOptions).then(function(res) {\n if (res.statusCode >= 400) {\n throw ono({status: res.statusCode}, 'HTTP ERROR %d', res.statusCode);\n } else if (res.statusCode >= 300) {\n if (redirects.length > httpOptions.redirects) {\n reject(ono({status: res.statusCode}, 'Error downloading %s. \\nToo many redirects: \\n %s', redirects[0], redirects.join(' \\n ')));\n } else if (!res.headers.location) {\n throw ono({status: res.statusCode}, 'HTTP %d redirect with no location header', res.statusCode);\n } else {\n debug('HTTP %d redirect %s -> %s', res.statusCode, u.href, res.headers.location);\n var redirectTo = url.resolve(u, res.headers.location);\n download(redirectTo, httpOptions, redirects).then(resolve, reject);\n }\n } else {\n resolve(res.body || new Buffer(0));\n }\n }).catch(function(err) {\n reject(ono(err, 'Error downloading', u.href));\n });\n });\n }\n function get(u, httpOptions) {\n return new Promise(function(resolve, reject) {\n debug('GET', u.href);\n var protocol = u.protocol === 'https:' ? https : http;\n var req = protocol.get({\n hostname: u.hostname,\n port: u.port,\n path: u.path,\n auth: u.auth,\n headers: httpOptions.headers || {},\n withCredentials: httpOptions.withCredentials\n });\n if (typeof req.setTimeout === 'function') {\n req.setTimeout(httpOptions.timeout);\n }\n req.on('timeout', function() {\n req.abort();\n });\n req.on('error', reject);\n req.once('response', function(res) {\n res.body = new Buffer(0);\n res.on('data', function(data) {\n res.body = Buffer.concat([res.body, new Buffer(data)]);\n });\n res.on('error', reject);\n res.on('end', function() {\n resolve(res);\n });\n });\n });\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(Buffer, process) {\n 'use strict';\n module.exports = {\n order: 100,\n canValidate: function canValidate(file) {\n return !!file.resolved;\n },\n validate: function validate(file) {}\n };\n})(require('buffer').Buffer, require('process'));\n","/* */ \n'use strict';\nvar jsonParser = require('./parsers/json'),\n yamlParser = require('./parsers/yaml'),\n textParser = require('./parsers/text'),\n binaryParser = require('./parsers/binary'),\n fileResolver = require('./resolvers/file'),\n httpResolver = require('./resolvers/http'),\n zschemaValidator = require('./validators/z-schema');\nmodule.exports = $RefParserOptions;\nfunction $RefParserOptions(options) {\n merge(this, $RefParserOptions.defaults);\n merge(this, options);\n}\n$RefParserOptions.defaults = {\n parse: {\n json: jsonParser,\n yaml: yamlParser,\n text: textParser,\n binary: binaryParser\n },\n resolve: {\n file: fileResolver,\n http: httpResolver,\n external: true\n },\n dereference: {circular: true},\n validate: {zschema: zschemaValidator}\n};\nfunction merge(target, source) {\n if (isMergeable(source)) {\n var keys = Object.keys(source);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var sourceSetting = source[key];\n var targetSetting = target[key];\n if (isMergeable(sourceSetting)) {\n target[key] = merge(targetSetting || {}, sourceSetting);\n } else if (sourceSetting !== undefined) {\n target[key] = sourceSetting;\n }\n }\n }\n return target;\n}\nfunction isMergeable(val) {\n return val && (typeof val === 'object') && !Array.isArray(val) && !(val instanceof RegExp) && !(val instanceof Date);\n}\n","/* */ \n'use strict';\nvar ono = require('ono'),\n $Ref = require('./ref'),\n url = require('./util/url');\nmodule.exports = $Refs;\nfunction $Refs() {\n this.circular = false;\n this._$refs = {};\n this._root$Ref = null;\n}\n$Refs.prototype.paths = function(types) {\n var paths = getPaths(this._$refs, arguments);\n return paths.map(function(path) {\n return path.decoded;\n });\n};\n$Refs.prototype.values = function(types) {\n var $refs = this._$refs;\n var paths = getPaths($refs, arguments);\n return paths.reduce(function(obj, path) {\n obj[path.decoded] = $refs[path.encoded].value;\n return obj;\n }, {});\n};\n$Refs.prototype.toJSON = $Refs.prototype.values;\n$Refs.prototype.exists = function(path, options) {\n try {\n this._resolve(path, options);\n return true;\n } catch (e) {\n return false;\n }\n};\n$Refs.prototype.get = function(path, options) {\n return this._resolve(path, options).value;\n};\n$Refs.prototype.set = function(path, value) {\n path = url.resolve(this._root$Ref.path, path);\n var withoutHash = url.stripHash(path);\n var $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw ono('Error resolving $ref pointer \"%s\". \\n\"%s\" not found.', path, withoutHash);\n }\n $ref.set(path, value);\n};\n$Refs.prototype._add = function(path, value) {\n var withoutHash = url.stripHash(path);\n var $ref = new $Ref();\n $ref.path = withoutHash;\n $ref.value = value;\n $ref.$refs = this;\n this._$refs[withoutHash] = $ref;\n this._root$Ref = this._root$Ref || $ref;\n return $ref;\n};\n$Refs.prototype._resolve = function(path, options) {\n path = url.resolve(this._root$Ref.path, path);\n var withoutHash = url.stripHash(path);\n var $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw ono('Error resolving $ref pointer \"%s\". \\n\"%s\" not found.', path, withoutHash);\n }\n return $ref.resolve(path, options);\n};\n$Refs.prototype._get$Ref = function(path) {\n path = url.resolve(this._root$Ref.path, path);\n var withoutHash = url.stripHash(path);\n return this._$refs[withoutHash];\n};\nfunction getPaths($refs, types) {\n var paths = Object.keys($refs);\n types = Array.isArray(types[0]) ? types[0] : Array.prototype.slice.call(types);\n if (types.length > 0 && types[0]) {\n paths = paths.filter(function(key) {\n return types.indexOf($refs[key].pathType) !== -1;\n });\n }\n return paths.map(function(path) {\n return {\n encoded: path,\n decoded: $refs[path].pathType === 'file' ? url.toFileSystemPath(path, true) : path\n };\n });\n}\n","/* */ \n'use strict';\nvar Promise = require('./promise'),\n debug = require('./debug');\nexports.all = function(plugins) {\n return Object.keys(plugins).filter(function(key) {\n return typeof plugins[key] === 'object';\n }).map(function(key) {\n plugins[key].name = key;\n return plugins[key];\n });\n};\nexports.filter = function(plugins, method, file) {\n return plugins.filter(function(plugin) {\n return !!getResult(plugin, method, file);\n });\n};\nexports.sort = function(plugins) {\n plugins.forEach(function(plugin) {\n plugin.order = plugin.order || Number.MAX_SAFE_INTEGER;\n });\n return plugins.sort(function(a, b) {\n return a.order - b.order;\n });\n};\nexports.run = function(plugins, method, file) {\n var plugin,\n lastError,\n index = 0;\n return new Promise(function(resolve, reject) {\n runNextPlugin();\n function runNextPlugin() {\n plugin = plugins[index++];\n if (!plugin) {\n return reject(lastError);\n }\n try {\n debug(' %s', plugin.name);\n var result = getResult(plugin, method, file, callback);\n if (result && typeof result.then === 'function') {\n result.then(onSuccess, onError);\n } else if (result !== undefined) {\n onSuccess(result);\n }\n } catch (e) {\n onError(e);\n }\n }\n function callback(err, result) {\n if (err) {\n onError(err);\n } else {\n onSuccess(result);\n }\n }\n function onSuccess(result) {\n debug(' success');\n resolve({\n plugin: plugin,\n result: result\n });\n }\n function onError(err) {\n debug(' %s', err.message || err);\n lastError = err;\n runNextPlugin();\n }\n });\n};\nfunction getResult(obj, prop, file, callback) {\n var value = obj[prop];\n if (typeof value === 'function') {\n return value.apply(obj, [file, callback]);\n }\n if (!callback) {\n if (value instanceof RegExp) {\n return value.test(file.url);\n } else if (typeof value === 'string') {\n return value === file.extension;\n } else if (Array.isArray(value)) {\n return value.indexOf(file.extension) !== -1;\n }\n }\n return value;\n}\n","/* */ \n\"format cjs\";\n(function(process) {\n (function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n };\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n function lib$es6$promise$asap$$useNextTick() {\n return function() {\n process.nextTick(lib$es6$promise$asap$$flush);\n };\n }\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, {characterData: true});\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function() {\n channel.port2.postMessage(0);\n };\n }\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i += 2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i + 1];\n callback(arg);\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i + 1] = undefined;\n }\n lib$es6$promise$asap$$len = 0;\n }\n function lib$es6$promise$asap$$attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch (e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n var lib$es6$promise$asap$$scheduleFlush;\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n function lib$es6$promise$then$$then(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function() {\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n return child;\n }\n var lib$es6$promise$then$$default = lib$es6$promise$then$$then;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n var Constructor = this;\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n function lib$es6$promise$$internal$$noop() {}\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n function lib$es6$promise$$internal$$selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n }\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === lib$es6$promise$then$$default && constructor.resolve === lib$es6$promise$promise$resolve$$default) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n lib$es6$promise$$internal$$publish(promise);\n }\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n return;\n }\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n return;\n }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n parent._onerror = null;\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n if (subscribers.length === 0) {\n return;\n }\n var child,\n callback,\n detail = promise._result;\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n promise._subscribers.length = 0;\n }\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value,\n error,\n succeeded,\n failed;\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {} else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch (e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n var length = entries.length;\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$reject$$reject(reason) {\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n var lib$es6$promise$promise$$counter = 0;\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n if (lib$es6$promise$$internal$$noop !== resolver) {\n typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();\n this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();\n }\n }\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n then: lib$es6$promise$then$$default,\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(lib$es6$promise$$internal$$noop);\n if (Array.isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n this._result = new Array(this.length);\n if (this.length === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(this.promise, this._validationError());\n }\n }\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var input = this._input;\n for (var i = 0; this._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n if (resolve === lib$es6$promise$promise$resolve$$default) {\n var then = lib$es6$promise$$internal$$getThen(entry);\n if (then === lib$es6$promise$then$$default && entry._state !== lib$es6$promise$$internal$$PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === lib$es6$promise$promise$$default) {\n var promise = new c(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function(resolve) {\n resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n this._remaining--;\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, this._result);\n }\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n var P = local.Promise;\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return lib$es6$promise$umd$$ES6Promise;\n });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n lib$es6$promise$polyfill$$default();\n }).call(this);\n})(require('process'));\n","module.exports = require(\"npm:es6-promise@3.1.2/dist/es6-promise.js\");","/* */ \n'use strict';\n\n/** @type {Promise} **/\nmodule.exports = typeof Promise === 'function' ? Promise : require('es6-promise').Promise;\n","/* */ \n(function(Buffer) {\n 'use strict';\n var ono = require('ono'),\n debug = require('./util/debug'),\n url = require('./util/url'),\n plugins = require('./util/plugins'),\n Promise = require('./util/promise');\n module.exports = parse;\n function parse(path, $refs, options) {\n try {\n path = url.stripHash(path);\n var $ref = $refs._add(path);\n var file = {\n url: path,\n extension: url.getExtension(path)\n };\n return readFile(file, options).then(function(resolver) {\n $ref.pathType = resolver.plugin.name;\n file.data = resolver.result;\n return parseFile(file, options);\n }).then(function(parser) {\n $ref.value = parser.result;\n return parser.result;\n });\n } catch (e) {\n return Promise.reject(e);\n }\n }\n function readFile(file, options) {\n return new Promise(function(resolve, reject) {\n debug('Reading %s', file.url);\n var resolvers = plugins.all(options.resolve);\n resolvers = plugins.filter(resolvers, 'canRead', file);\n plugins.sort(resolvers);\n plugins.run(resolvers, 'read', file).then(resolve, onError);\n function onError(err) {\n if (err && !(err instanceof SyntaxError)) {\n reject(err);\n } else {\n reject(ono.syntax('Unable to resolve $ref pointer \"%s\"', file.url));\n }\n }\n });\n }\n function parseFile(file, options) {\n return new Promise(function(resolve, reject) {\n debug('Parsing %s', file.url);\n var allParsers = plugins.all(options.parse);\n var filteredParsers = plugins.filter(allParsers, 'canParse', file);\n var parsers = filteredParsers.length > 0 ? filteredParsers : allParsers;\n plugins.sort(parsers);\n plugins.run(parsers, 'parse', file).then(onParsed, onError);\n function onParsed(parser) {\n if (!parser.plugin.allowEmpty && isEmpty(parser.result)) {\n reject(ono.syntax('Error parsing \"%s\" as %s. \\nParsed value is empty', file.url, parser.plugin.name));\n } else {\n resolve(parser);\n }\n }\n function onError(err) {\n if (err) {\n err = err instanceof Error ? err : new Error(err);\n reject(ono.syntax(err, 'Error parsing %s', file.url));\n } else {\n reject(ono.syntax('Unable to parse %s', file.url));\n }\n }\n });\n }\n function isEmpty(value) {\n return value === undefined || (typeof value === 'object' && Object.keys(value).length === 0) || (typeof value === 'string' && value.trim().length === 0) || (Buffer.isBuffer(value) && value.length === 0);\n }\n})(require('buffer').Buffer);\n","/* */ \n'use strict';\nvar Promise = require('./util/promise'),\n $Ref = require('./ref'),\n Pointer = require('./pointer'),\n parse = require('./parse'),\n debug = require('./util/debug'),\n url = require('./util/url');\nmodule.exports = resolveExternal;\nfunction resolveExternal(parser, options) {\n if (!options.resolve.external) {\n return Promise.resolve();\n }\n try {\n debug('Resolving $ref pointers in %s', parser.$refs._root$Ref.path);\n var promises = crawl(parser.schema, parser.$refs._root$Ref.path + '#', parser.$refs, options);\n return Promise.all(promises);\n } catch (e) {\n return Promise.reject(e);\n }\n}\nfunction crawl(obj, path, $refs, options) {\n var promises = [];\n if (obj && typeof obj === 'object') {\n if ($Ref.isExternal$Ref(obj)) {\n promises.push(resolve$Ref(obj, path, $refs, options));\n } else {\n Object.keys(obj).forEach(function(key) {\n var keyPath = Pointer.join(path, key);\n var value = obj[key];\n if ($Ref.isExternal$Ref(value)) {\n promises.push(resolve$Ref(value, keyPath, $refs, options));\n } else {\n promises = promises.concat(crawl(value, keyPath, $refs, options));\n }\n });\n }\n }\n return promises;\n}\nfunction resolve$Ref($ref, path, $refs, options) {\n debug('Resolving $ref pointer \"%s\" at %s', $ref.$ref, path);\n var resolvedPath = url.resolve(path, $ref.$ref);\n var withoutHash = url.stripHash(resolvedPath);\n $ref = $refs._$refs[withoutHash];\n if ($ref) {\n return Promise.resolve($ref.value);\n }\n return parse(resolvedPath, $refs, options).then(function(result) {\n debug('Resolving $ref pointers in %s', withoutHash);\n var promises = crawl(result, withoutHash + '#', $refs, options);\n return Promise.all(promises);\n });\n}\n","/* */ \n(function(process) {\n 'use strict';\n var $Ref = require('./ref'),\n Pointer = require('./pointer'),\n debug = require('./util/debug'),\n url = require('./util/url');\n module.exports = bundle;\n function bundle(parser, options) {\n debug('Bundling $ref pointers in %s', parser.$refs._root$Ref.path);\n var inventory = [];\n crawl(parser, 'schema', parser.$refs._root$Ref.path + '#', '#', inventory, parser.$refs, options);\n remap(inventory);\n }\n function crawl(parent, key, path, pathFromRoot, inventory, $refs, options) {\n var obj = key === null ? parent : parent[key];\n if (obj && typeof obj === 'object') {\n if ($Ref.is$Ref(obj)) {\n inventory$Ref(parent, key, path, pathFromRoot, inventory, $refs, options);\n } else {\n var keys = Object.keys(obj);\n var defs = keys.indexOf('definitions');\n if (defs > 0) {\n keys.splice(0, 0, keys.splice(defs, 1)[0]);\n }\n keys.forEach(function(key) {\n var keyPath = Pointer.join(path, key);\n var keyPathFromRoot = Pointer.join(pathFromRoot, key);\n var value = obj[key];\n if ($Ref.is$Ref(value)) {\n inventory$Ref(obj, key, path, keyPathFromRoot, inventory, $refs, options);\n } else {\n crawl(obj, key, keyPath, keyPathFromRoot, inventory, $refs, options);\n }\n });\n }\n }\n }\n function inventory$Ref($refParent, $refKey, path, pathFromRoot, inventory, $refs, options) {\n if (inventory.some(function(i) {\n return i.parent === $refParent && i.key === $refKey;\n })) {\n return;\n }\n var $ref = $refKey === null ? $refParent : $refParent[$refKey];\n var $refPath = url.resolve(path, $ref.$ref);\n var pointer = $refs._resolve($refPath, options);\n var depth = Pointer.parse(pathFromRoot).length;\n var file = url.stripHash(pointer.path);\n var hash = url.getHash(pointer.path);\n var external = file !== $refs._root$Ref.path;\n var extended = $Ref.isExtended$Ref($ref);\n inventory.push({\n $ref: $ref,\n parent: $refParent,\n key: $refKey,\n pathFromRoot: pathFromRoot,\n depth: depth,\n file: file,\n hash: hash,\n value: pointer.value,\n circular: pointer.circular,\n extended: extended,\n external: external\n });\n crawl(pointer.value, null, pointer.path, pathFromRoot, inventory, $refs, options);\n }\n function remap(inventory) {\n inventory.sort(function(a, b) {\n if (a.file !== b.file) {\n return a.file < b.file ? -1 : +1;\n } else if (a.hash !== b.hash) {\n return a.hash < b.hash ? -1 : +1;\n } else if (a.circular !== b.circular) {\n return a.circular ? -1 : +1;\n } else if (a.extended !== b.extended) {\n return a.extended ? +1 : -1;\n } else if (a.depth !== b.depth) {\n return a.depth - b.depth;\n } else {\n return b.pathFromRoot.lastIndexOf('/definitions') - a.pathFromRoot.lastIndexOf('/definitions');\n }\n });\n var file,\n hash,\n pathFromRoot;\n inventory.forEach(function(i) {\n debug('Re-mapping $ref pointer \"%s\" at %s', i.$ref.$ref, i.pathFromRoot);\n if (!i.external) {\n i.$ref.$ref = i.hash;\n } else if (i.file === file && i.hash === hash) {\n i.$ref.$ref = pathFromRoot;\n } else if (i.file === file && i.hash.indexOf(hash + '/') === 0) {\n i.$ref.$ref = Pointer.join(pathFromRoot, Pointer.parse(i.hash));\n } else {\n file = i.file;\n hash = i.hash;\n pathFromRoot = i.pathFromRoot;\n i.$ref = i.parent[i.key] = $Ref.dereference(i.$ref, i.value);\n if (i.circular) {\n i.$ref.$ref = i.pathFromRoot;\n }\n }\n debug(' new value: %s', (i.$ref && i.$ref.$ref) ? i.$ref.$ref : '[object Object]');\n });\n }\n})(require('process'));\n","/* */ \n(function(process) {\n \"use strict\";\n var next = (global.process && process.nextTick) || global.setImmediate || function(f) {\n setTimeout(f, 0);\n };\n module.exports = function maybe(cb, promise) {\n if (cb) {\n promise.then(function(result) {\n next(function() {\n cb(null, result);\n });\n }, function(err) {\n next(function() {\n cb(err);\n });\n });\n return undefined;\n } else {\n return promise;\n }\n };\n})(require('process'));\n","module.exports = require(\"npm:call-me-maybe@1.0.1/index.js\");","/* */ \n'use strict';\nvar common = require('./common');\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head,\n start,\n tail,\n end,\n snippet;\n if (!this.buffer)\n return null;\n indent = indent || 4;\n maxLength = maxLength || 75;\n head = '';\n start = this.position;\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n tail = '';\n end = this.position;\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n snippet = this.buffer.slice(start, end);\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' + common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\nMark.prototype.toString = function toString(compact) {\n var snippet,\n where = '';\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n if (!compact) {\n snippet = this.getSnippet();\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n return where;\n};\nmodule.exports = Mark;\n","/* */ \n'use strict';\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction is_EOL(c) {\n return (c === 0x0A) || (c === 0x0D);\n}\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09) || (c === 0x20);\n}\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09) || (c === 0x20) || (c === 0x0A) || (c === 0x0D);\n}\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D;\n}\nfunction fromHexCode(c) {\n var lc;\n if ((0x30 <= c) && (c <= 0x39)) {\n return c - 0x30;\n }\n lc = c | 0x20;\n if ((0x61 <= lc) && (lc <= 0x66)) {\n return lc - 0x61 + 10;\n }\n return -1;\n}\nfunction escapedHexLen(c) {\n if (c === 0x78) {\n return 2;\n }\n if (c === 0x75) {\n return 4;\n }\n if (c === 0x55) {\n return 8;\n }\n return 0;\n}\nfunction fromDecimalCode(c) {\n if ((0x30 <= c) && (c <= 0x39)) {\n return c - 0x30;\n }\n return -1;\n}\nfunction simpleEscapeSequence(c) {\n return (c === 0x30) ? '\\x00' : (c === 0x61) ? '\\x07' : (c === 0x62) ? '\\x08' : (c === 0x74) ? '\\x09' : (c === 0x09) ? '\\x09' : (c === 0x6E) ? '\\x0A' : (c === 0x76) ? '\\x0B' : (c === 0x66) ? '\\x0C' : (c === 0x72) ? '\\x0D' : (c === 0x65) ? '\\x1B' : (c === 0x20) ? ' ' : (c === 0x22) ? '\\x22' : (c === 0x2F) ? '/' : (c === 0x5C) ? '\\x5C' : (c === 0x4E) ? '\\x85' : (c === 0x5F) ? '\\xA0' : (c === 0x4C) ? '\\u2028' : (c === 0x50) ? '\\u2029' : '';\n}\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800, ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nfunction State(input, options) {\n this.input = input;\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.documents = [];\n}\nfunction generateError(state, message) {\n return new YAMLException(message, new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state, name, args) {\n var match,\n major,\n minor;\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n TAG: function handleTagDirective(state, name, args) {\n var handle,\n prefix;\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n handle = args[0];\n prefix = args[1];\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n state.tagMap[handle] = prefix;\n }\n};\nfunction captureSegment(state, start, end, checkJson) {\n var _position,\n _length,\n _character,\n _result;\n if (start < end) {\n _result = state.input.slice(start, end);\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 || (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n state.result += _result;\n }\n}\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys,\n key,\n index,\n quantity;\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n sourceKeys = Object.keys(source);\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index,\n quantity;\n keyNode = String(keyNode);\n if (_result === null) {\n _result = {};\n }\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n return _result;\n}\nfunction readLineBreak(state) {\n var ch;\n ch = state.input.charCodeAt(state.position);\n if (ch === 0x0A) {\n state.position++;\n } else if (ch === 0x0D) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n state.line += 1;\n state.lineStart = state.position;\n}\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (allowComments && ch === 0x23) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A && ch !== 0x0D && ch !== 0);\n }\n if (is_EOL(ch)) {\n readLineBreak(state);\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n while (ch === 0x20) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n return lineBreaks;\n}\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n ch = state.input.charCodeAt(_position);\n if ((ch === 0x2D || ch === 0x2E) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {\n _position += 3;\n ch = state.input.charCodeAt(_position);\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n return false;\n}\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23 || ch === 0x26 || ch === 0x2A || ch === 0x21 || ch === 0x7C || ch === 0x3E || ch === 0x27 || ch === 0x22 || ch === 0x25 || ch === 0x40 || ch === 0x60) {\n return false;\n }\n if (ch === 0x3F || ch === 0x2D) {\n following = state.input.charCodeAt(state.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n while (ch !== 0) {\n if (ch === 0x3A) {\n following = state.input.charCodeAt(state.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (ch === 0x23) {\n preceding = state.input.charCodeAt(state.position - 1);\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n captureSegment(state, captureStart, captureEnd, false);\n if (state.result) {\n return true;\n }\n state.kind = _kind;\n state.result = _result;\n return false;\n}\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart,\n captureEnd;\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x27) {\n return false;\n }\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n if (ch === 0x27) {\n captureStart = captureEnd = state.position;\n state.position++;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x22) {\n return false;\n }\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n } else if (ch === 0x5C) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n state.result += charFromCodepoint(hexResult);\n state.position++;\n } else {\n throwError(state, 'unknown escape sequence');\n }\n captureStart = captureEnd = state.position;\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch === 0x5B) {\n terminator = 0x5D;\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B) {\n terminator = 0x7D;\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n ch = state.input.charCodeAt(++state.position);\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n if (ch === 0x3F) {\n following = state.input.charCodeAt(state.position + 1);\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n if ((isExplicitPair || state.line === _line) && ch === 0x3A) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n if (ch === 0x2C) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch === 0x7C) {\n folding = false;\n } else if (ch === 0x3E) {\n folding = true;\n } else {\n return false;\n }\n state.kind = 'scalar';\n state.result = '';\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n if (ch === 0x2B || ch === 0x2D) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n } else {\n break;\n }\n }\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (is_WHITE_SPACE(ch));\n if (ch === 0x23) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (!is_EOL(ch) && (ch !== 0));\n }\n }\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n ch = state.input.charCodeAt(state.position);\n while ((!detectedIndent || state.lineIndent < textIndent) && (ch === 0x20)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n if (state.lineIndent < textIndent) {\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) {\n state.result += '\\n';\n }\n }\n break;\n }\n if (folding) {\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n } else if (emptyLines === 0) {\n if (didReadContent) {\n state.result += ' ';\n }\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n } else {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n captureSegment(state, captureStart, state.position, false);\n }\n return true;\n}\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n ch = state.input.charCodeAt(state.position);\n while (ch !== 0) {\n if (ch !== 0x2D) {\n break;\n }\n following = state.input.charCodeAt(state.position + 1);\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n detected = true;\n state.position++;\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n ch = state.input.charCodeAt(state.position);\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line;\n if ((ch === 0x3F || ch === 0x3A) && is_WS_OR_EOL(following)) {\n if (ch === 0x3F) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n state.position += 1;\n ch = following;\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (ch === 0x3A) {\n ch = state.input.charCodeAt(++state.position);\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true;\n }\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true;\n }\n } else {\n break;\n }\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n return detected;\n}\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x21)\n return false;\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n ch = state.input.charCodeAt(++state.position);\n if (ch === 0x3C) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n } else if (ch === 0x21) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n } else {\n tagHandle = '!';\n }\n _position = state.position;\n if (isVerbatim) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0 && ch !== 0x3E);\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n if (ch === 0x21) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n ch = state.input.charCodeAt(++state.position);\n }\n tagName = state.input.slice(_position, state.position);\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n if (isVerbatim) {\n state.tag = tagName;\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n return true;\n}\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x26)\n return false;\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\nfunction readAlias(state) {\n var _position,\n alias,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x2A)\n return false;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n alias = state.input.slice(_position, state.position);\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1,\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n type,\n flowIndent,\n blockIndent;\n if (state.listener !== null) {\n state.listener('open', state);\n }\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n blockIndent = state.position - state.lineStart;\n if (indentStatus === 1) {\n if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state)) {\n hasContent = true;\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n if (type.resolve(state.result)) {\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap, state.tag)) {\n type = state.typeMap[state.tag];\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n if (!type.resolve(state.result)) {\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n if (state.lineIndent > 0 || ch !== 0x25) {\n break;\n }\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (ch === 0x23) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0 && !is_EOL(ch));\n break;\n }\n if (is_EOL(ch))\n break;\n _position = state.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n if (ch !== 0)\n readLineBreak(state);\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n skipSeparationSpace(state, true, -1);\n if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D && state.input.charCodeAt(state.position + 1) === 0x2D && state.input.charCodeAt(state.position + 2) === 0x2D) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n state.documents.push(state.result);\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n if (state.input.charCodeAt(state.position) === 0x2E) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n if (input.length !== 0) {\n if (input.charCodeAt(input.length - 1) !== 0x0A && input.charCodeAt(input.length - 1) !== 0x0D) {\n input += '\\n';\n }\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n var state = new State(input, options);\n state.input += '\\0';\n while (state.input.charCodeAt(state.position) === 0x20) {\n state.lineIndent += 1;\n state.position += 1;\n }\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n return state.documents;\n}\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options),\n index,\n length;\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n if (documents.length === 0) {\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({schema: DEFAULT_SAFE_SCHEMA}, options));\n}\nfunction safeLoad(input, options) {\n return load(input, common.extend({schema: DEFAULT_SAFE_SCHEMA}, options));\n}\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","/* */ \n'use strict';\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar CHAR_TAB = 0x09;\nvar CHAR_LINE_FEED = 0x0A;\nvar CHAR_SPACE = 0x20;\nvar CHAR_EXCLAMATION = 0x21;\nvar CHAR_DOUBLE_QUOTE = 0x22;\nvar CHAR_SHARP = 0x23;\nvar CHAR_PERCENT = 0x25;\nvar CHAR_AMPERSAND = 0x26;\nvar CHAR_SINGLE_QUOTE = 0x27;\nvar CHAR_ASTERISK = 0x2A;\nvar CHAR_COMMA = 0x2C;\nvar CHAR_MINUS = 0x2D;\nvar CHAR_COLON = 0x3A;\nvar CHAR_GREATER_THAN = 0x3E;\nvar CHAR_QUESTION = 0x3F;\nvar CHAR_COMMERCIAL_AT = 0x40;\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B;\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D;\nvar CHAR_GRAVE_ACCENT = 0x60;\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B;\nvar CHAR_VERTICAL_LINE = 0x7C;\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D;\nvar ESCAPE_SEQUENCES = {};\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\nvar DEPRECATED_BOOLEANS_SYNTAX = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'];\nfunction compileStyleMap(schema, map) {\n var result,\n keys,\n index,\n length,\n tag,\n style,\n type;\n if (map === null)\n return {};\n result = {};\n keys = Object.keys(map);\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap[tag];\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n result[tag] = style;\n }\n return result;\n}\nfunction encodeHex(character) {\n var string,\n handle,\n length;\n string = character.toString(16).toUpperCase();\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n this.tag = null;\n this.result = '';\n this.duplicates = [];\n this.usedDuplicates = null;\n}\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n if (line.length && line !== '\\n')\n result += ind;\n result += line;\n }\n return result;\n}\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\nfunction testImplicitResolving(state, str) {\n var index,\n length,\n type;\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n if (type.resolve(str)) {\n return true;\n }\n }\n return false;\n}\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E) || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF) || (0x10000 <= c && c <= 0x10FFFF);\n}\nfunction isPlainSafe(c) {\n return isPrintable(c) && c !== 0xFEFF && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_COLON && c !== CHAR_SHARP;\n}\nfunction isPlainSafeFirst(c) {\n return isPrintable(c) && c !== 0xFEFF && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;\n}\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false;\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1;\n var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1));\n if (singleLineOnly) {\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine || (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '));\n }\n if (!hasLineBreak && !hasFoldableLine) {\n return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE;\n }\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function() {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n var indent = state.indent * Math.max(1, level);\n var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n var singleLineOnly = iskey || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n return indentIndicator + chomp + '\\n';\n}\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\nfunction foldString(string, width) {\n var lineRe = /(\\n+)([^\\n]*)/g;\n var result = (function() {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1],\n line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix + (!prevMoreIndented && !moreIndented && line !== '' ? '\\n' : '') + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n return result;\n}\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ')\n return line;\n var breakRe = / [^ ]/g;\n var match;\n var start = 0,\n end,\n curr = 0,\n next = 0;\n var result = '';\n while ((match = breakRe.exec(line))) {\n next = match.index;\n if (next - start > width) {\n end = (curr > start) ? curr : next;\n result += '\\n' + line.slice(start, end);\n start = end + 1;\n }\n curr = next;\n }\n result += '\\n';\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n return result.slice(1);\n}\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char);\n }\n return result;\n}\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n for (index = 0, length = object.length; index < length; index += 1) {\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0)\n _result += ', ';\n _result += state.dump;\n }\n }\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n for (index = 0, length = object.length; index < length; index += 1) {\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n state.tag = _tag;\n state.dump = _result || '[]';\n}\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n if (index !== 0)\n pairBuffer += ', ';\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n if (!writeNode(state, level, objectKey, false, false)) {\n continue;\n }\n if (state.dump.length > 1024)\n pairBuffer += '? ';\n pairBuffer += state.dump + ': ';\n if (!writeNode(state, level, objectValue, false, false)) {\n continue;\n }\n pairBuffer += state.dump;\n _result += pairBuffer;\n }\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n if (state.sortKeys === true) {\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue;\n }\n explicitPair = (state.tag !== null && state.tag !== '?') || (state.dump && state.dump.length > 1024);\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n pairBuffer += state.dump;\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue;\n }\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n pairBuffer += state.dump;\n _result += pairBuffer;\n }\n state.tag = _tag;\n state.dump = _result || '{}';\n}\nfunction detectType(state, object, explicit) {\n var _result,\n typeList,\n index,\n length,\n type,\n style;\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n if ((type.instanceOf || type.predicate) && (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && (!type.predicate || type.predicate(object))) {\n state.tag = explicit ? type.tag : '?';\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n state.dump = _result;\n }\n return true;\n }\n }\n return false;\n}\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n var type = _toString.call(state.dump);\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid)\n return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n return true;\n}\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n inspectNode(object, objects, duplicatesIndexes);\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\nfunction dump(input, options) {\n options = options || {};\n var state = new State(options);\n if (!state.noRefs)\n getDuplicateReferences(input, state);\n if (writeNode(state, 0, input, true, true))\n return state.dump + '\\n';\n return '';\n}\nfunction safeDump(input, options) {\n return dump(input, common.extend({schema: DEFAULT_SAFE_SCHEMA}, options));\n}\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","/* */ \n'use strict';\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\nfunction compileList(schema, name, result) {\n var exclude = [];\n schema.include.forEach(function(includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n schema[name].forEach(function(currentType) {\n result.forEach(function(previousType, previousIndex) {\n if (previousType.tag === currentType.tag) {\n exclude.push(previousIndex);\n }\n });\n result.push(currentType);\n });\n return result.filter(function(type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\nfunction compileMap() {\n var result = {},\n index,\n length;\n function collectType(type) {\n result[type.tag] = type;\n }\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n this.implicit.forEach(function(type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\nSchema.DEFAULT = null;\nSchema.create = function createSchema() {\n var schemas,\n types;\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n if (!schemas.every(function(schema) {\n return schema instanceof Schema;\n })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n if (!types.every(function(type) {\n return type instanceof Type;\n })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\nmodule.exports = Schema;\n","/* */ \n'use strict';\nvar Type = require('../type');\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function(data) {\n return data !== null ? data : '';\n }\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function(data) {\n return data !== null ? data : [];\n }\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function(data) {\n return data !== null ? data : {};\n }\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({explicit: [require('../type/str'), require('../type/seq'), require('../type/map')]});\n","/* */ \n'use strict';\nvar Type = require('../type');\nfunction resolveYamlNull(data) {\n if (data === null)\n return true;\n var max = data.length;\n return (max === 1 && data === '~') || (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\nfunction constructYamlNull() {\n return null;\n}\nfunction isNull(object) {\n return object === null;\n}\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function() {\n return '~';\n },\n lowercase: function() {\n return 'null';\n },\n uppercase: function() {\n return 'NULL';\n },\n camelcase: function() {\n return 'Null';\n }\n },\n defaultStyle: 'lowercase'\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nfunction resolveYamlBoolean(data) {\n if (data === null)\n return false;\n var max = data.length;\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\nfunction constructYamlBoolean(data) {\n return data === 'true' || data === 'True' || data === 'TRUE';\n}\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function(object) {\n return object ? 'true' : 'false';\n },\n uppercase: function(object) {\n return object ? 'TRUE' : 'FALSE';\n },\n camelcase: function(object) {\n return object ? 'True' : 'False';\n }\n },\n defaultStyle: 'lowercase'\n});\n","/* */ \n'use strict';\nvar common = require('../common');\nvar Type = require('../type');\nfunction isHexCode(c) {\n return ((0x30 <= c) && (c <= 0x39)) || ((0x41 <= c) && (c <= 0x46)) || ((0x61 <= c) && (c <= 0x66));\n}\nfunction isOctCode(c) {\n return ((0x30 <= c) && (c <= 0x37));\n}\nfunction isDecCode(c) {\n return ((0x30 <= c) && (c <= 0x39));\n}\nfunction resolveYamlInteger(data) {\n if (data === null)\n return false;\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n if (!max)\n return false;\n ch = data[index];\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n if (ch === '0') {\n if (index + 1 === max)\n return true;\n ch = data[++index];\n if (ch === 'b') {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_')\n continue;\n if (ch !== '0' && ch !== '1')\n return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n if (ch === 'x') {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_')\n continue;\n if (!isHexCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_')\n continue;\n if (!isOctCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_')\n continue;\n if (ch === ':')\n break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n if (!hasDigits)\n return false;\n if (ch !== ':')\n return true;\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\nfunction constructYamlInteger(data) {\n var value = data,\n sign = 1,\n ch,\n base,\n digits = [];\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n ch = value[0];\n if (ch === '-' || ch === '+') {\n if (ch === '-')\n sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n if (value === '0')\n return 0;\n if (ch === '0') {\n if (value[1] === 'b')\n return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x')\n return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function(v) {\n digits.unshift(parseInt(v, 10));\n });\n value = 0;\n base = 1;\n digits.forEach(function(d) {\n value += (d * base);\n base *= 60;\n });\n return sign * value;\n }\n return sign * parseInt(value, 10);\n}\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' && (object % 1 === 0 && !common.isNegativeZero(object));\n}\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function(object) {\n return '0b' + object.toString(2);\n },\n octal: function(object) {\n return '0' + object.toString(8);\n },\n decimal: function(object) {\n return object.toString(10);\n },\n hexadecimal: function(object) {\n return '0x' + object.toString(16).toUpperCase();\n }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [2, 'bin'],\n octal: [8, 'oct'],\n decimal: [10, 'dec'],\n hexadecimal: [16, 'hex']\n }\n});\n","/* */ \n'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","/* */ \n'use strict';\nvar common = require('../common');\nvar Type = require('../type');\nvar 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))$');\nfunction resolveYamlFloat(data) {\n if (data === null)\n return false;\n if (!YAML_FLOAT_PATTERN.test(data))\n return false;\n return true;\n}\nfunction constructYamlFloat(data) {\n var value,\n sign,\n base,\n digits;\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if (value === '.nan') {\n return NaN;\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function(v) {\n digits.unshift(parseFloat(v, 10));\n });\n value = 0.0;\n base = 1;\n digits.forEach(function(d) {\n value += d * base;\n base *= 60;\n });\n return sign * value;\n }\n return sign * parseFloat(value, 10);\n}\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n var res;\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase':\n return '.nan';\n case 'uppercase':\n return '.NAN';\n case 'camelcase':\n return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase':\n return '.inf';\n case 'uppercase':\n return '.INF';\n case 'camelcase':\n return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase':\n return '-.inf';\n case 'uppercase':\n return '-.INF';\n case 'camelcase':\n return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n res = object.toString(10);\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') && (object % 1 !== 0 || common.isNegativeZero(object));\n}\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({\n include: [require('./failsafe')],\n implicit: [require('../type/null'), require('../type/bool'), require('../type/int'), require('../type/float')]\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({include: [require('./json')]});\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar YAML_DATE_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + '-([0-9][0-9])' + '-([0-9][0-9])$');\nvar YAML_TIMESTAMP_REGEXP = 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]))?))?$');\nfunction resolveYamlTimestamp(data) {\n if (data === null)\n return false;\n if (YAML_DATE_REGEXP.exec(data) !== null)\n return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null)\n return true;\n return false;\n}\nfunction constructYamlTimestamp(data) {\n var match,\n year,\n month,\n day,\n hour,\n minute,\n second,\n fraction = 0,\n delta = null,\n tz_hour,\n tz_minute,\n date;\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null)\n match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (match === null)\n throw new Error('Date resolve error');\n year = +(match[1]);\n month = +(match[2]) - 1;\n day = +(match[3]);\n if (!match[4]) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) {\n fraction += '0';\n }\n fraction = +fraction;\n }\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000;\n if (match[9] === '-')\n delta = -delta;\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta)\n date.setTime(date.getTime() - delta);\n return date;\n}\nfunction representYamlTimestamp(object) {\n return object.toISOString();\n}\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","/* */ \n(function(Buffer) {\n 'use strict';\n var NodeBuffer;\n try {\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n } catch (__) {}\n var Type = require('../type');\n var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n function resolveYamlBinary(data) {\n if (data === null)\n return false;\n var code,\n idx,\n bitlen = 0,\n max = data.length,\n map = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n if (code > 64)\n continue;\n if (code < 0)\n return false;\n bitlen += 6;\n }\n return (bitlen % 8) === 0;\n }\n function constructYamlBinary(data) {\n var idx,\n tailbits,\n input = data.replace(/[\\r\\n=]/g, ''),\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n tailbits = (max % 4) * 6;\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n if (NodeBuffer)\n return new NodeBuffer(result);\n return result;\n }\n function representYamlBinary(object) {\n var result = '',\n bits = 0,\n idx,\n tail,\n max = object.length,\n map = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n bits = (bits << 8) + object[idx];\n }\n tail = max % 3;\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n return result;\n }\n function isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n }\n module.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n });\n})(require('buffer').Buffer);\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n if (data === null)\n return true;\n var objectKeys = [],\n index,\n length,\n pair,\n pairKey,\n pairHasKey,\n object = data;\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if (_toString.call(pair) !== '[object Object]')\n return false;\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey)\n pairHasKey = true;\n else\n return false;\n }\n }\n if (!pairHasKey)\n return false;\n if (objectKeys.indexOf(pairKey) === -1)\n objectKeys.push(pairKey);\n else\n return false;\n }\n return true;\n}\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar _toString = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n if (data === null)\n return true;\n var index,\n length,\n pair,\n keys,\n result,\n object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if (_toString.call(pair) !== '[object Object]')\n return false;\n keys = Object.keys(pair);\n if (keys.length !== 1)\n return false;\n result[index] = [keys[0], pair[keys[0]]];\n }\n return true;\n}\nfunction constructYamlPairs(data) {\n if (data === null)\n return [];\n var index,\n length,\n pair,\n keys,\n result,\n object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n return result;\n}\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n if (data === null)\n return true;\n var key,\n object = data;\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null)\n return false;\n }\n }\n return true;\n}\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({\n include: [require('./core')],\n implicit: [require('../type/timestamp'), require('../type/merge')],\n explicit: [require('../type/binary'), require('../type/omap'), require('../type/pairs'), require('../type/set')]\n});\n","/* */ \n'use strict';\nvar Type = require('../../type');\nfunction resolveJavascriptUndefined() {\n return true;\n}\nfunction constructJavascriptUndefined() {\n return undefined;\n}\nfunction representJavascriptUndefined() {\n return '';\n}\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","/* */ \n'use strict';\nvar Type = require('../../type');\nfunction resolveJavascriptRegExp(data) {\n if (data === null)\n return false;\n if (data.length === 0)\n return false;\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n if (regexp[0] === '/') {\n if (tail)\n modifiers = tail[1];\n if (modifiers.length > 3)\n return false;\n if (regexp[regexp.length - modifiers.length - 1] !== '/')\n return false;\n }\n return true;\n}\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n if (regexp[0] === '/') {\n if (tail)\n modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n return new RegExp(regexp, modifiers);\n}\nfunction representJavascriptRegExp(object) {\n var result = '/' + object.source + '/';\n if (object.global)\n result += 'g';\n if (object.multiline)\n result += 'm';\n if (object.ignoreCase)\n result += 'i';\n return result;\n}\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","/* */ \n'use strict';\nvar YAMLException = require('./exception');\nvar TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases'];\nvar YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping'];\nfunction compileStyleAliases(map) {\n var result = {};\n if (map !== null) {\n Object.keys(map).forEach(function(style) {\n map[style].forEach(function(alias) {\n result[String(alias)] = style;\n });\n });\n }\n return result;\n}\nfunction Type(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function(name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function() {\n return true;\n };\n this.construct = options['construct'] || function(data) {\n return data;\n };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\nmodule.exports = Type;\n","/* */ \n'use strict';\nvar esprima;\ntry {\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n if (typeof window !== 'undefined')\n esprima = window.esprima;\n}\nvar Type = require('../../type');\nfunction resolveJavascriptFunction(data) {\n if (data === null)\n return false;\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, {range: true});\n if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n return true;\n } catch (err) {\n return false;\n }\n}\nfunction constructJavascriptFunction(data) {\n var source = '(' + data + ')',\n ast = esprima.parse(source, {range: true}),\n params = [],\n body;\n if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n ast.body[0].expression.params.forEach(function(param) {\n params.push(param.name);\n });\n body = ast.body[0].expression.body.range;\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\nfunction representJavascriptFunction(object) {\n return object.toString();\n}\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [require('./default_safe')],\n explicit: [require('../type/js/undefined'), require('../type/js/regexp'), require('../type/js/function')]\n});\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","/* */ \n'use strict';\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\nfunction deprecated(name) {\n return function() {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","/* */ \n'use strict';\nvar yaml = require('./lib/js-yaml');\nmodule.exports = yaml;\n","module.exports = require(\"npm:js-yaml@3.6.0/index\");","/* eslint lines-around-comment: [2, {beforeBlockComment: false}] */\n'use strict';\n\nvar yaml = require('js-yaml'),\n ono = require('ono');\n\n/**\n * Simple YAML parsing functions, similar to {@link JSON.parse} and {@link JSON.stringify}\n */\nmodule.exports = {\n /**\n * Parses a YAML string and returns the value.\n *\n * @param {string} text - The YAML string to be parsed\n * @param {function} [reviver] - Not currently supported. Provided for consistency with {@link JSON.parse}\n * @returns {*}\n */\n parse: function yamlParse(text, reviver) {\n try {\n return yaml.safeLoad(text);\n }\n catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n else {\n // https://github.com/nodeca/js-yaml/issues/153\n throw ono(e, e.message);\n }\n }\n },\n\n /**\n * Converts a JavaScript value to a YAML string.\n *\n * @param {*} value - The value to convert to YAML\n * @param {function|array} replacer - Not currently supported. Provided for consistency with {@link JSON.stringify}\n * @param {string|number} space - The number of spaces to use for indentation, or a string containing the number of spaces.\n * @returns {string}\n */\n stringify: function yamlStringify(value, replacer, space) {\n try {\n var indent = (typeof space === 'string' ? space.length : space) || 2;\n return yaml.safeDump(value, {indent: indent});\n }\n catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n else {\n // https://github.com/nodeca/js-yaml/issues/153\n throw ono(e, e.message);\n }\n }\n }\n};\n","/* */ \n(function(Buffer) {\n 'use strict';\n var Promise = require('./util/promise'),\n Options = require('./options'),\n $Refs = require('./refs'),\n parse = require('./parse'),\n resolveExternal = require('./resolve-external'),\n bundle = require('./bundle'),\n dereference = require('./dereference'),\n url = require('./util/url'),\n maybe = require('call-me-maybe'),\n ono = require('ono');\n module.exports = $RefParser;\n module.exports.YAML = require('./util/yaml');\n function $RefParser() {\n this.schema = null;\n this.$refs = new $Refs();\n }\n $RefParser.parse = function(schema, options, callback) {\n var Class = this;\n var instance = new Class();\n return instance.parse.apply(instance, arguments);\n };\n $RefParser.prototype.parse = function(schema, options, callback) {\n var args = normalizeArgs(arguments);\n var promise;\n if (!args.path && !args.schema) {\n var err = ono('Expected a file path, URL, or object. Got %s', args.path || args.schema);\n return maybe(args.callback, Promise.reject(err));\n }\n this.schema = null;\n this.$refs = new $Refs();\n if (url.isFileSystemPath(args.path)) {\n args.path = url.fromFileSystemPath(args.path);\n }\n args.path = url.resolve(url.cwd(), args.path);\n if (args.schema && typeof args.schema === 'object') {\n this.$refs._add(args.path, args.schema);\n promise = Promise.resolve(args.schema);\n } else {\n promise = parse(args.path, this.$refs, args.options);\n }\n var me = this;\n return promise.then(function(result) {\n if (!result || typeof result !== 'object' || Buffer.isBuffer(result)) {\n throw ono.syntax('\"%s\" is not a valid JSON Schema', me.$refs._root$Ref.path || result);\n } else {\n me.schema = result;\n return maybe(args.callback, Promise.resolve(me.schema));\n }\n }).catch(function(e) {\n return maybe(args.callback, Promise.reject(e));\n });\n };\n $RefParser.resolve = function(schema, options, callback) {\n var Class = this;\n var instance = new Class();\n return instance.resolve.apply(instance, arguments);\n };\n $RefParser.prototype.resolve = function(schema, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n return this.parse(args.path, args.schema, args.options).then(function() {\n return resolveExternal(me, args.options);\n }).then(function() {\n return maybe(args.callback, Promise.resolve(me.$refs));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n };\n $RefParser.bundle = function(schema, options, callback) {\n var Class = this;\n var instance = new Class();\n return instance.bundle.apply(instance, arguments);\n };\n $RefParser.prototype.bundle = function(schema, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n return this.resolve(args.path, args.schema, args.options).then(function() {\n bundle(me, args.options);\n return maybe(args.callback, Promise.resolve(me.schema));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n };\n $RefParser.dereference = function(schema, options, callback) {\n var Class = this;\n var instance = new Class();\n return instance.dereference.apply(instance, arguments);\n };\n $RefParser.prototype.dereference = function(schema, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n return this.resolve(args.path, args.schema, args.options).then(function() {\n dereference(me, args.options);\n return maybe(args.callback, Promise.resolve(me.schema));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n };\n function normalizeArgs(args) {\n var path,\n schema,\n options,\n callback;\n args = Array.prototype.slice.call(args);\n if (typeof args[args.length - 1] === 'function') {\n callback = args.pop();\n }\n if (typeof args[0] === 'string') {\n path = args[0];\n if (typeof args[2] === 'object') {\n schema = args[1];\n options = args[2];\n } else {\n schema = undefined;\n options = args[1];\n }\n } else {\n path = '';\n schema = args[0];\n options = args[1];\n }\n if (!(options instanceof Options)) {\n options = new Options(options);\n }\n return {\n path: path,\n schema: schema,\n options: options,\n callback: callback\n };\n }\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:json-schema-ref-parser@3.1.2/lib/index.js\");","/* */ \n(function(Buffer) {\n 'use strict';\n module.exports = $Ref;\n var Pointer = require('./pointer');\n function $Ref() {\n this.path = undefined;\n this.value = undefined;\n this.$refs = undefined;\n this.pathType = undefined;\n }\n $Ref.prototype.exists = function(path, options) {\n try {\n this.resolve(path, options);\n return true;\n } catch (e) {\n return false;\n }\n };\n $Ref.prototype.get = function(path, options) {\n return this.resolve(path, options).value;\n };\n $Ref.prototype.resolve = function(path, options) {\n var pointer = new Pointer(this, path);\n return pointer.resolve(this.value, options);\n };\n $Ref.prototype.set = function(path, value) {\n var pointer = new Pointer(this, path);\n this.value = pointer.set(this.value, value);\n };\n $Ref.is$Ref = function(value) {\n return value && typeof value === 'object' && typeof value.$ref === 'string' && value.$ref.length > 0;\n };\n $Ref.isExternal$Ref = function(value) {\n return $Ref.is$Ref(value) && value.$ref[0] !== '#';\n };\n $Ref.isAllowed$Ref = function(value, options) {\n if ($Ref.is$Ref(value)) {\n if (value.$ref[0] === '#' || !options || options.resolve.external) {\n return true;\n }\n }\n };\n $Ref.isExtended$Ref = function(value) {\n return $Ref.is$Ref(value) && Object.keys(value).length > 1;\n };\n $Ref.dereference = function($ref, resolvedValue) {\n if (resolvedValue && typeof resolvedValue === 'object' && $Ref.isExtended$Ref($ref)) {\n var merged = {};\n Object.keys($ref).forEach(function(key) {\n if (key !== '$ref') {\n merged[key] = $ref[key];\n }\n });\n Object.keys(resolvedValue).forEach(function(key) {\n if (!(key in merged)) {\n merged[key] = resolvedValue[key];\n }\n });\n return merged;\n } else {\n return resolvedValue;\n }\n };\n})(require('buffer').Buffer);\n","/* */ \nvar lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n","module.exports = require(\"npm:base64-js@0.0.8/lib/b64.js\");","/* */ \nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = require(\"npm:ieee754@1.1.6/index.js\");","/* */ \nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require(\"npm:isarray@1.0.0/index.js\");","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n * on objects.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\nfunction typedArraySupport () {\n function Bar () {}\n try {\n var arr = new Uint8Array(1)\n arr.foo = function () { return 42 }\n arr.constructor = Bar\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Bar && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n this.length = 0\n this.parent = undefined\n }\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined') {\n if (object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n if (object instanceof ArrayBuffer) {\n return fromArrayBuffer(that, object)\n }\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n array.byteLength\n that = Buffer._augment(new Uint8Array(array))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromTypedArray(that, new Uint8Array(array))\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n} else {\n // pre-set for values that may exist in the future\n Buffer.prototype.length = undefined\n Buffer.prototype.parent = undefined\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` is deprecated\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` is deprecated\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; i--) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n","module.exports = require(\"npm:buffer@3.6.0/index.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('buffer') : require('buffer');","module.exports = require(\"github:jspm/nodelibs-buffer@0.1.0/index\");","/* */ \n(function(Buffer) {\n 'use strict';\n module.exports = Pointer;\n var $Ref = require('./ref'),\n url = require('./util/url'),\n ono = require('ono'),\n slashes = /\\//g,\n tildes = /~/g,\n escapedSlash = /~1/g,\n escapedTilde = /~0/g;\n function Pointer($ref, path) {\n this.$ref = $ref;\n this.path = path;\n this.value = undefined;\n this.circular = false;\n }\n Pointer.prototype.resolve = function(obj, options) {\n var tokens = Pointer.parse(this.path);\n this.value = obj;\n for (var i = 0; i < tokens.length; i++) {\n if (resolveIf$Ref(this, options)) {\n this.path = Pointer.join(this.path, tokens.slice(i));\n }\n var token = tokens[i];\n if (this.value[token] === undefined) {\n throw ono.syntax('Error resolving $ref pointer \"%s\". \\nToken \"%s\" does not exist.', this.path, token);\n } else {\n this.value = this.value[token];\n }\n }\n resolveIf$Ref(this, options);\n return this;\n };\n Pointer.prototype.set = function(obj, value, options) {\n var tokens = Pointer.parse(this.path);\n var token;\n if (tokens.length === 0) {\n this.value = value;\n return value;\n }\n this.value = obj;\n for (var i = 0; i < tokens.length - 1; i++) {\n resolveIf$Ref(this, options);\n token = tokens[i];\n if (this.value && this.value[token] !== undefined) {\n this.value = this.value[token];\n } else {\n this.value = setValue(this, token, {});\n }\n }\n resolveIf$Ref(this, options);\n token = tokens[tokens.length - 1];\n setValue(this, token, value);\n return obj;\n };\n Pointer.parse = function(path) {\n var pointer = url.getHash(path).substr(1);\n if (!pointer) {\n return [];\n }\n pointer = pointer.split('/');\n for (var i = 0; i < pointer.length; i++) {\n pointer[i] = decodeURI(pointer[i].replace(escapedSlash, '/').replace(escapedTilde, '~'));\n }\n if (pointer[0] !== '') {\n throw ono.syntax('Invalid $ref pointer \"%s\". Pointers must begin with \"#/\"', pointer);\n }\n return pointer.slice(1);\n };\n Pointer.join = function(base, tokens) {\n if (base.indexOf('#') === -1) {\n base += '#';\n }\n tokens = Array.isArray(tokens) ? tokens : [tokens];\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n base += '/' + encodeURI(token.replace(tildes, '~0').replace(slashes, '~1'));\n }\n return base;\n };\n function resolveIf$Ref(pointer, options) {\n if ($Ref.isAllowed$Ref(pointer.value, options)) {\n var $refPath = url.resolve(pointer.path, pointer.value.$ref);\n if ($refPath === pointer.path) {\n pointer.circular = true;\n } else {\n var resolved = pointer.$ref.$refs._resolve($refPath, options);\n if ($Ref.isExtended$Ref(pointer.value)) {\n pointer.value = $Ref.dereference(pointer.value, resolved.value);\n } else {\n pointer.$ref = resolved.$ref;\n pointer.path = resolved.path;\n pointer.value = resolved.value;\n }\n return true;\n }\n }\n }\n function setValue(pointer, token, value) {\n if (pointer.value && typeof pointer.value === 'object') {\n if (token === '-' && Array.isArray(pointer.value)) {\n pointer.value.push(value);\n } else {\n pointer.value[token] = value;\n }\n } else {\n throw ono.syntax('Error assigning $ref pointer \"%s\". \\nCannot set \"%s\" of a non-object.', pointer.path, token);\n }\n return value;\n }\n})(require('buffer').Buffer);\n","/* */ \nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","/* */ \nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","module.exports = require(\"npm:inherits@2.0.1/inherits_browser.js\");","/* */ \n(function(process) {\n var formatRegExp = /%[sdj%]/g;\n exports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%')\n return '%';\n if (i >= len)\n return x;\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n };\n exports.deprecate = function(fn, msg) {\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n if (process.noDeprecation === true) {\n return fn;\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n };\n var debugs = {};\n var debugEnviron;\n exports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n };\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n if (arguments.length >= 3)\n ctx.depth = arguments[2];\n if (arguments.length >= 4)\n ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n ctx.showHidden = opts;\n } else if (opts) {\n exports._extend(ctx, opts);\n }\n if (isUndefined(ctx.showHidden))\n ctx.showHidden = false;\n if (isUndefined(ctx.depth))\n ctx.depth = 2;\n if (isUndefined(ctx.colors))\n ctx.colors = false;\n if (isUndefined(ctx.customInspect))\n ctx.customInspect = true;\n if (ctx.colors)\n ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n }\n exports.inspect = inspect;\n inspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n };\n inspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n 'regexp': 'red'\n };\n function stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str + '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n }\n function stylizeNoColor(str, styleType) {\n return str;\n }\n function arrayToHash(array) {\n var hash = {};\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n return hash;\n }\n function formatValue(ctx, value, recurseTimes) {\n if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports.inspect && !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n var base = '',\n array = false,\n braces = ['{', '}'];\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n ctx.seen.push(value);\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n }\n function formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n if (isNull(value))\n return ctx.stylize('null', 'null');\n }\n function formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n }\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0,\n l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n }\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name,\n str,\n desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]};\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n return name + ': ' + str;\n }\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0)\n numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n }\n function isArray(ar) {\n return Array.isArray(ar);\n }\n exports.isArray = isArray;\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n exports.isBoolean = isBoolean;\n function isNull(arg) {\n return arg === null;\n }\n exports.isNull = isNull;\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n exports.isNullOrUndefined = isNullOrUndefined;\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n exports.isNumber = isNumber;\n function isString(arg) {\n return typeof arg === 'string';\n }\n exports.isString = isString;\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n exports.isSymbol = isSymbol;\n function isUndefined(arg) {\n return arg === void 0;\n }\n exports.isUndefined = isUndefined;\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n }\n exports.isRegExp = isRegExp;\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n exports.isObject = isObject;\n function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n }\n exports.isDate = isDate;\n function isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n exports.isError = isError;\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n exports.isFunction = isFunction;\n function isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || typeof arg === 'undefined';\n }\n exports.isPrimitive = isPrimitive;\n exports.isBuffer = require('./support/isBufferBrowser');\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n function pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n }\n var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n function timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n }\n exports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n };\n exports.inherits = require('inherits');\n exports._extend = function(origin, add) {\n if (!add || !isObject(add))\n return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n };\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n})(require('process'));\n","module.exports = require(\"npm:util@0.10.3/util.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('util') : require('util');","module.exports = require(\"github:jspm/nodelibs-util@0.1.0/index\");","/**!\n * Ono v2.2.1\n *\n * @link https://github.com/BigstickCarpet/ono\n * @license MIT\n */\n'use strict';\n\nvar util = require('util'),\n slice = Array.prototype.slice,\n vendorSpecificErrorProperties = [\n 'name', 'message', 'description', 'number', 'fileName', 'lineNumber', 'columnNumber',\n 'sourceURL', 'line', 'column', 'stack'\n ];\n\nmodule.exports = create(Error);\nmodule.exports.error = create(Error);\nmodule.exports.eval = create(EvalError);\nmodule.exports.range = create(RangeError);\nmodule.exports.reference = create(ReferenceError);\nmodule.exports.syntax = create(SyntaxError);\nmodule.exports.type = create(TypeError);\nmodule.exports.uri = create(URIError);\nmodule.exports.formatter = util.format;\n\n/**\n * Creates a new {@link ono} function that creates the given Error class.\n *\n * @param {Class} Klass - The Error subclass to create\n * @returns {ono}\n */\nfunction create(Klass) {\n /**\n * @param {Error} [err] - The original error, if any\n * @param {object} [props] - An object whose properties will be added to the error object\n * @param {string} [message] - The error message. May contain {@link util#format} placeholders\n * @param {...*} [params] - Parameters that map to the `message` placeholders\n * @returns {Error}\n */\n return function ono(err, props, message, params) {\n var formattedMessage;\n var formatter = module.exports.formatter;\n\n if (typeof(err) === 'string') {\n formattedMessage = formatter.apply(null, arguments);\n err = props = undefined;\n }\n else if (typeof(props) === 'string') {\n formattedMessage = formatter.apply(null, slice.call(arguments, 1));\n }\n else {\n formattedMessage = formatter.apply(null, slice.call(arguments, 2));\n }\n\n if (!(err instanceof Error)) {\n props = err;\n err = undefined;\n }\n\n if (err) {\n // The inner-error's message will be added to the new message\n formattedMessage += (formattedMessage ? ' \\n' : '') + err.message;\n }\n\n // Create the new error\n // NOTE: DON'T move this to a separate function! We don't want to pollute the stack trace\n var newError = new Klass(formattedMessage);\n\n // Extend the new error with the additional properties\n extendError(newError, err); // Copy properties of the original error\n extendToJSON(newError); // Replace the original toJSON method\n extend(newError, props); // Copy custom properties, possibly including a custom toJSON method\n\n return newError;\n };\n}\n\n/**\n * Extends the targetError with the properties of the source error.\n *\n * @param {Error} targetError - The error object to extend\n * @param {?Error} sourceError - The source error object, if any\n */\nfunction extendError(targetError, sourceError) {\n if (sourceError) {\n extendStack(targetError, sourceError);\n extend(targetError, sourceError, true);\n }\n}\n\n/**\n * JavaScript engines differ in how errors are serialized to JSON - especially when it comes\n * to custom error properties and stack traces. So we add our own toJSON method that ALWAYS\n * outputs every property of the error.\n */\nfunction extendToJSON(error) {\n error.toJSON = errorToJSON;\n\n // Also add an inspect() method, for compatibility with Node.js' `util.inspect()` method\n error.inspect = errorToString;\n}\n\n/**\n * Extends the target object with the properties of the source object.\n *\n * @param {object} target - The object to extend\n * @param {?source} source - The object whose properties are copied\n * @param {boolean} omitVendorSpecificProperties - Skip vendor-specific Error properties\n */\nfunction extend(target, source, omitVendorSpecificProperties) {\n if (source && typeof(source) === 'object') {\n var keys = Object.keys(source);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n // Don't bother trying to copy read-only vendor-specific Error properties\n if (omitVendorSpecificProperties && vendorSpecificErrorProperties.indexOf(key) >= 0) {\n continue;\n }\n\n try {\n target[key] = source[key];\n }\n catch (e) {\n // This property is read-only, so it can't be copied\n }\n }\n }\n}\n\n/**\n * Custom JSON serializer for Error objects.\n * Returns all built-in error properties, as well as extended properties.\n *\n * @returns {object}\n */\nfunction errorToJSON() {\n // jshint -W040\n var json = {};\n\n // Get all the properties of this error\n var keys = Object.keys(this);\n\n // Also include vendor-specific properties from the prototype\n keys = keys.concat(vendorSpecificErrorProperties);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = this[key];\n var type = typeof value;\n if (type !== 'undefined' && type !== 'function') {\n json[key] = value;\n }\n }\n\n return json;\n}\n\n/**\n * Serializes Error objects as human-readable JSON strings for debugging/logging purposes.\n *\n * @returns {string}\n */\nfunction errorToString() {\n // jshint -W040\n return JSON.stringify(this, null, 2).replace(/\\\\n/g, '\\n');\n}\n\n/**\n * Extend the error stack to include its cause\n */\nfunction extendStack(targetError, sourceError) {\n if (hasLazyStack(sourceError)) {\n extendStackProperty(targetError, sourceError);\n }\n else {\n var stack = sourceError.stack;\n if (stack) {\n targetError.stack += ' \\n\\n' + sourceError.stack;\n }\n }\n}\n\n/**\n * Does a one-time determination of whether this JavaScript engine\n * supports lazy `Error.stack` properties.\n */\nvar supportsLazyStack = (function() {\n return !!(\n // ES5 property descriptors must be supported\n Object.getOwnPropertyDescriptor && Object.defineProperty &&\n\n // Chrome on Android doesn't support lazy stacks :(\n (typeof navigator === 'undefined' || !/Android/.test(navigator.userAgent))\n );\n})();\n\n/**\n * Does this error have a lazy stack property?\n *\n * @returns {boolean}\n */\nfunction hasLazyStack(err) {\n if (!supportsLazyStack) {\n return false;\n }\n var descriptor = Object.getOwnPropertyDescriptor(err, 'stack');\n if (!descriptor) {\n return false;\n }\n return typeof descriptor.get === 'function';\n}\n\n/**\n * Extend the error stack to include its cause, lazily\n */\nfunction extendStackProperty(targetError, sourceError) {\n var sourceStack = Object.getOwnPropertyDescriptor(sourceError, 'stack');\n if (sourceStack) {\n var targetStack = Object.getOwnPropertyDescriptor(targetError, 'stack');\n Object.defineProperty(targetError, 'stack', {\n get: function() {\n return targetStack.get.apply(targetError) + ' \\n\\n' + sourceError.stack;\n },\n enumerable: false,\n configurable: true\n });\n }\n}\n","module.exports = require(\"npm:ono@2.2.1/lib/index.js\");","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options){\n options = options || {};\n if ('string' == typeof val) return parse(val);\n return options.long\n ? long(val)\n : short(val);\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = '' + str;\n if (str.length > 10000) return;\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n if (!match) return;\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction short(ms) {\n if (ms >= d) return Math.round(ms / d) + 'd';\n if (ms >= h) return Math.round(ms / h) + 'h';\n if (ms >= m) return Math.round(ms / m) + 'm';\n if (ms >= s) return Math.round(ms / s) + 's';\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction long(ms) {\n return plural(ms, d, 'day')\n || plural(ms, h, 'hour')\n || plural(ms, m, 'minute')\n || plural(ms, s, 'second')\n || ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) return;\n if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","module.exports = require(\"npm:ms@0.7.1/index\");","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = debug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\nexports.formatters = {};\n\n/**\n * Previously assigned color.\n */\n\nvar prevColor = 0;\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\nfunction selectColor() {\n return exports.colors[prevColor++ % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction debug(namespace) {\n\n // define the `disabled` version\n function disabled() {\n }\n disabled.enabled = false;\n\n // define the `enabled` version\n function enabled() {\n\n var self = enabled;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // add the `color` if not set\n if (null == self.useColors) self.useColors = exports.useColors();\n if (null == self.color && self.useColors) self.color = selectColor();\n\n var args = Array.prototype.slice.call(arguments);\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %o\n args = ['%o'].concat(args);\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n if ('function' === typeof exports.formatArgs) {\n args = exports.formatArgs.apply(self, args);\n }\n var logFn = enabled.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n enabled.enabled = true;\n\n var fn = exports.enabled(namespace) ? enabled : disabled;\n\n fn.namespace = namespace;\n\n return fn;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n var split = (namespaces || '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/* */ \nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\nexports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson'];\nfunction useColors() {\n return ('WebkitAppearance' in document.documentElement.style) || (window.console && (console.firebug || (console.exception && console.table))) || (navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\n}\nexports.formatters.j = function(v) {\n return JSON.stringify(v);\n};\nfunction formatArgs() {\n var args = arguments;\n var useColors = this.useColors;\n args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n if (!useColors)\n return args;\n var c = 'color: ' + this.color;\n args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-z%]/g, function(match) {\n if ('%%' === match)\n return;\n index++;\n if ('%c' === match) {\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n return args;\n}\nfunction log() {\n return 'object' === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);\n}\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch (e) {}\n}\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch (e) {}\n return r;\n}\nexports.enable(load());\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","module.exports = require(\"npm:debug@2.2.0/browser.js\");","/* */ \n'use strict';\n\nvar debug = require('debug');\n\n/**\n * Writes messages to stdout.\n * Log messages are suppressed by default, but can be enabled by setting the DEBUG variable.\n * @type {function}\n */\nmodule.exports = debug('json-schema-ref-parser');\n","/* */ \n\"format cjs\";\n(function(process) {\n ;\n (function(root) {\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n var freeModule = typeof module == 'object' && module && !module.nodeType && module;\n var freeGlobal = typeof global == 'object' && global;\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n var punycode,\n maxInt = 2147483647,\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n delimiter = '-',\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n key;\n function error(type) {\n throw RangeError(errors[type]);\n }\n function map(array, fn) {\n var length = array.length;\n var result = [];\n while (length--) {\n result[length] = fn(array[length]);\n }\n return result;\n }\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n if (parts.length > 1) {\n result = parts[0] + '@';\n string = parts[1];\n }\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return map(array, function(value) {\n var output = '';\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n return base;\n }\n function digitToBasic(digit, flag) {\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n function decode(input) {\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n baseMinusT;\n basic = input.lastIndexOf(delimiter);\n if (basic < 0) {\n basic = 0;\n }\n for (j = 0; j < basic; ++j) {\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n output.push(input.charCodeAt(j));\n }\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength; ) {\n for (oldi = i, w = 1, k = base; ; k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n digit = basicToDigit(input.charCodeAt(index++));\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n i += digit * w;\n t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (digit < t) {\n break;\n }\n baseMinusT = base - t;\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n w *= baseMinusT;\n }\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0);\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n n += floor(i / out);\n i %= out;\n output.splice(i++, 0, n);\n }\n return ucs2encode(output);\n }\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n inputLength,\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT;\n input = ucs2decode(input);\n inputLength = input.length;\n n = initialN;\n delta = 0;\n bias = initialBias;\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n handledCPCount = basicLength = output.length;\n if (basicLength) {\n output.push(delimiter);\n }\n while (handledCPCount < inputLength) {\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n if (currentValue == n) {\n for (q = delta, k = base; ; k += base) {\n t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) {\n break;\n }\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n ++delta;\n ++n;\n }\n return output.join('');\n }\n function toUnicode(input) {\n return mapDomain(input, function(string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n function toASCII(input) {\n return mapDomain(input, function(string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n punycode = {\n 'version': '1.3.2',\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n define('punycode', function() {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n freeModule.exports = punycode;\n } else {\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n root.punycode = punycode;\n }\n }(this));\n})(require('process'));\n","module.exports = require(\"npm:punycode@1.3.2/punycode.js\");","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","/* */ \n'use strict';\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","module.exports = require(\"npm:querystring@0.2.0/index\");","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","module.exports = require(\"npm:url@0.10.3/url.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('url') : require('url');","module.exports = require(\"github:jspm/nodelibs-url@0.1.0/index\");","/* */ \n(function(process) {\n 'use strict';\n var isWindows = /^win/.test(process.platform),\n forwardSlashPattern = /\\//g,\n protocolPattern = /^([a-z0-9.+-]+):\\/\\//i,\n url = module.exports;\n var urlEncodePatterns = [/\\?/g, '%3F', /\\#/g, '%23', isWindows ? /\\\\/g : /\\//, '/'];\n var urlDecodePatterns = [/\\%23/g, '#', /\\%24/g, '$', /\\%26/g, '&', /\\%2C/g, ',', /\\%40/g, '@'];\n exports.parse = require('url').parse;\n exports.resolve = require('url').resolve;\n exports.cwd = function cwd() {\n return process.browser ? location.href : process.cwd() + '/';\n };\n exports.getProtocol = function getProtocol(path) {\n var match = protocolPattern.exec(path);\n if (match) {\n return match[1].toLowerCase();\n }\n };\n exports.getExtension = function getExtension(path) {\n var lastDot = path.lastIndexOf('.');\n if (lastDot >= 0) {\n return path.substr(lastDot).toLowerCase();\n }\n return '';\n };\n exports.getHash = function getHash(path) {\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n return path.substr(hashIndex);\n }\n return '#';\n };\n exports.stripHash = function stripHash(path) {\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n path = path.substr(0, hashIndex);\n }\n return path;\n };\n exports.isHttp = function isHttp(path) {\n var protocol = url.getProtocol(path);\n if (protocol === 'http' || protocol === 'https') {\n return true;\n } else if (protocol === undefined) {\n return process.browser;\n } else {\n return false;\n }\n };\n exports.isFileSystemPath = function isFileSystemPath(path) {\n if (process.browser) {\n return false;\n }\n var protocol = url.getProtocol(path);\n return protocol === undefined || protocol === 'file';\n };\n exports.fromFileSystemPath = function fromFileSystemPath(path) {\n for (var i = 0; i < urlEncodePatterns.length; i += 2) {\n path = path.replace(urlEncodePatterns[i], urlEncodePatterns[i + 1]);\n }\n return encodeURI(path);\n };\n exports.toFileSystemPath = function toFileSystemPath(path, keepFileProtocol) {\n path = decodeURI(path);\n for (var i = 0; i < urlDecodePatterns.length; i += 2) {\n path = path.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);\n }\n var isFileUrl = path.substr(0, 7).toLowerCase() === 'file://';\n if (isFileUrl) {\n path = path[7] === '/' ? path.substr(8) : path.substr(7);\n if (isWindows && path[1] === '/') {\n path = path[0] + ':' + path.substr(1);\n }\n if (keepFileProtocol) {\n path = 'file:///' + path;\n } else {\n isFileUrl = false;\n path = isWindows ? path : '/' + path;\n }\n }\n if (isWindows && !isFileUrl) {\n path = path.replace(forwardSlashPattern, '\\\\');\n }\n return path;\n };\n})(require('process'));\n","/* */ \n'use strict';\nvar $Ref = require('./ref'),\n Pointer = require('./pointer'),\n ono = require('ono'),\n debug = require('./util/debug'),\n url = require('./util/url');\nmodule.exports = dereference;\nfunction dereference(parser, options) {\n debug('Dereferencing $ref pointers in %s', parser.$refs._root$Ref.path);\n var dereferenced = crawl(parser.schema, parser.$refs._root$Ref.path, '#', [], parser.$refs, options);\n parser.$refs.circular = dereferenced.circular;\n parser.schema = dereferenced.value;\n}\nfunction crawl(obj, path, pathFromRoot, parents, $refs, options) {\n var dereferenced;\n var result = {\n value: obj,\n circular: false\n };\n if (obj && typeof obj === 'object') {\n parents.push(obj);\n if ($Ref.isAllowed$Ref(obj, options)) {\n dereferenced = dereference$Ref(obj, path, pathFromRoot, parents, $refs, options);\n result.circular = dereferenced.circular;\n result.value = dereferenced.value;\n } else {\n Object.keys(obj).forEach(function(key) {\n var keyPath = Pointer.join(path, key);\n var keyPathFromRoot = Pointer.join(pathFromRoot, key);\n var value = obj[key];\n var circular = false;\n if ($Ref.isAllowed$Ref(value, options)) {\n dereferenced = dereference$Ref(value, keyPath, keyPathFromRoot, parents, $refs, options);\n circular = dereferenced.circular;\n obj[key] = dereferenced.value;\n } else {\n if (parents.indexOf(value) === -1) {\n dereferenced = crawl(value, keyPath, keyPathFromRoot, parents, $refs, options);\n circular = dereferenced.circular;\n obj[key] = dereferenced.value;\n } else {\n circular = foundCircularReference(keyPath, $refs, options);\n }\n }\n result.circular = result.circular || circular;\n });\n }\n parents.pop();\n }\n return result;\n}\nfunction dereference$Ref($ref, path, pathFromRoot, parents, $refs, options) {\n debug('Dereferencing $ref pointer \"%s\" at %s', $ref.$ref, path);\n var $refPath = url.resolve(path, $ref.$ref);\n var pointer = $refs._resolve($refPath, options);\n var directCircular = pointer.circular;\n var circular = directCircular || parents.indexOf(pointer.value) !== -1;\n circular && foundCircularReference(path, $refs, options);\n var dereferencedValue = $Ref.dereference($ref, pointer.value);\n if (!circular) {\n var dereferenced = crawl(dereferencedValue, pointer.path, pathFromRoot, parents, $refs, options);\n circular = dereferenced.circular;\n dereferencedValue = dereferenced.value;\n }\n if (circular && !directCircular && options.dereference.circular === 'ignore') {\n dereferencedValue = $ref;\n }\n if (directCircular) {\n dereferencedValue.$ref = pathFromRoot;\n }\n return {\n circular: circular,\n value: dereferencedValue\n };\n}\nfunction foundCircularReference(keyPath, $refs, options) {\n $refs.circular = true;\n if (!options.dereference.circular) {\n throw ono.reference('Circular $ref pointer found at %s', keyPath);\n }\n return true;\n}\n","/* */ \n'use strict';\nvar validateSchema = require('./validate-schema'),\n validateSpec = require('./validate-spec'),\n util = require('./util'),\n Options = require('./options'),\n Promise = require('./promise'),\n maybe = require('call-me-maybe'),\n ono = require('ono'),\n $RefParser = require('json-schema-ref-parser'),\n dereference = require('json-schema-ref-parser/lib/dereference');\nmodule.exports = SwaggerParser;\nfunction SwaggerParser() {\n $RefParser.apply(this, arguments);\n}\nutil.inherits(SwaggerParser, $RefParser);\nSwaggerParser.YAML = $RefParser.YAML;\nSwaggerParser.parse = $RefParser.parse;\nSwaggerParser.resolve = $RefParser.resolve;\nSwaggerParser.bundle = $RefParser.bundle;\nSwaggerParser.dereference = $RefParser.dereference;\nObject.defineProperty(SwaggerParser.prototype, 'api', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.schema;\n }\n});\nSwaggerParser.prototype.parse = function(api, options, callback) {\n var args = normalizeArgs(arguments);\n return $RefParser.prototype.parse.call(this, args.path, args.api, args.options).then(function(schema) {\n var supportedSwaggerVersions = ['2.0'];\n if (schema.swagger === undefined || schema.info === undefined || schema.paths === undefined) {\n throw ono.syntax('%s is not a valid Swagger API definition', args.path || args.api);\n } else if (typeof schema.swagger === 'number') {\n throw ono.syntax('Swagger version number must be a string (e.g. \"2.0\") not a number.');\n } else if (typeof schema.info.version === 'number') {\n throw ono.syntax('API version number must be a string (e.g. \"1.0.0\") not a number.');\n } else if (supportedSwaggerVersions.indexOf(schema.swagger) === -1) {\n throw ono.syntax('Unsupported Swagger version: %d. Swagger Parser only supports version %s', schema.swagger, supportedSwaggerVersions.join(', '));\n }\n return maybe(args.callback, Promise.resolve(schema));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n};\nSwaggerParser.validate = function(api, options, callback) {\n var Class = this;\n var instance = new Class();\n return instance.validate.apply(instance, arguments);\n};\nSwaggerParser.prototype.validate = function(api, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n var circular$RefOption = args.options.dereference.circular;\n args.options.validate.schema && (args.options.dereference.circular = 'ignore');\n return this.dereference(args.path, args.api, args.options).then(function() {\n args.options.dereference.circular = circular$RefOption;\n if (args.options.validate.schema) {\n validateSchema(me.api);\n if (me.$refs.circular) {\n if (circular$RefOption === true) {\n dereference(me, args.options);\n } else if (circular$RefOption === false) {\n throw ono.reference('The API contains circular references');\n }\n }\n }\n if (args.options.validate.spec) {\n validateSpec(me.api);\n }\n return maybe(args.callback, Promise.resolve(me.schema));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n};\nfunction normalizeArgs(args) {\n var path,\n api,\n options,\n callback;\n args = Array.prototype.slice.call(args);\n if (typeof args[args.length - 1] === 'function') {\n callback = args.pop();\n }\n if (typeof args[0] === 'string') {\n path = args[0];\n if (typeof args[2] === 'object') {\n api = args[1];\n options = args[2];\n } else {\n api = undefined;\n options = args[1];\n }\n } else {\n path = '';\n api = args[0];\n options = args[1];\n }\n if (!(options instanceof Options)) {\n options = new Options(options);\n }\n return {\n path: path,\n api: api,\n options: options,\n callback: callback\n };\n}\n","module.exports = require(\"npm:swagger-parser@4.0.0-beta.2/lib/index.js\");","/* */ \n\"format cjs\";\n","/* */ \nvar toInteger = require('./$.to-integer'),\n defined = require('./$.defined');\nmodule.exports = function(TO_STRING) {\n return function(that, pos) {\n var s = String(defined(that)),\n i = toInteger(pos),\n l = s.length,\n a,\n b;\n if (i < 0 || i >= l)\n return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","/* */ \n'use strict';\nvar $at = require('./$.string-at')(true);\nrequire('./$.iter-define')(String, 'String', function(iterated) {\n this._t = String(iterated);\n this._i = 0;\n}, function() {\n var O = this._t,\n index = this._i,\n point;\n if (index >= O.length)\n return {\n value: undefined,\n done: true\n };\n point = $at(O, index);\n this._i += point.length;\n return {\n value: point,\n done: false\n };\n});\n","/* */ \nmodule.exports = function(){ /* empty */ };","/* */ \n'use strict';\nvar addToUnscopables = require('./$.add-to-unscopables'),\n step = require('./$.iter-step'),\n Iterators = require('./$.iterators'),\n toIObject = require('./$.to-iobject');\nmodule.exports = require('./$.iter-define')(Array, 'Array', function(iterated, kind) {\n this._t = toIObject(iterated);\n this._i = 0;\n this._k = kind;\n}, function() {\n var O = this._t,\n kind = this._k,\n index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys')\n return step(0, index);\n if (kind == 'values')\n return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/* */ \nrequire('./es6.array.iterator');\nvar Iterators = require('./$.iterators');\nIterators.NodeList = Iterators.HTMLCollection = Iterators.Array;\n","/* */ \nmodule.exports = true;","/* */ \n'use strict';\nvar $ = require('./$'),\n descriptor = require('./$.property-desc'),\n setToStringTag = require('./$.set-to-string-tag'),\n IteratorPrototype = {};\nrequire('./$.hide')(IteratorPrototype, require('./$.wks')('iterator'), function() {\n return this;\n});\nmodule.exports = function(Constructor, NAME, next) {\n Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","/* */ \n'use strict';\nvar LIBRARY = require('./$.library'),\n $export = require('./$.export'),\n redefine = require('./$.redefine'),\n hide = require('./$.hide'),\n has = require('./$.has'),\n Iterators = require('./$.iterators'),\n $iterCreate = require('./$.iter-create'),\n setToStringTag = require('./$.set-to-string-tag'),\n getProto = require('./$').getProto,\n ITERATOR = require('./$.wks')('iterator'),\n BUGGY = !([].keys && 'next' in [].keys()),\n FF_ITERATOR = '@@iterator',\n KEYS = 'keys',\n VALUES = 'values';\nvar returnThis = function() {\n return this;\n};\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind) {\n if (!BUGGY && kind in proto)\n return proto[kind];\n switch (kind) {\n case KEYS:\n return function keys() {\n return new Constructor(this, kind);\n };\n case VALUES:\n return function values() {\n return new Constructor(this, kind);\n };\n }\n return function entries() {\n return new Constructor(this, kind);\n };\n };\n var TAG = NAME + ' Iterator',\n DEF_VALUES = DEFAULT == VALUES,\n VALUES_BUG = false,\n proto = Base.prototype,\n $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT],\n $default = $native || getMethod(DEFAULT),\n methods,\n key;\n if ($native) {\n var IteratorPrototype = getProto($default.call(new Base));\n setToStringTag(IteratorPrototype, TAG, true);\n if (!LIBRARY && has(proto, FF_ITERATOR))\n hide(IteratorPrototype, ITERATOR, returnThis);\n if (DEF_VALUES && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() {\n return $native.call(this);\n };\n }\n }\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: !DEF_VALUES ? $default : getMethod('entries')\n };\n if (FORCED)\n for (key in methods) {\n if (!(key in proto))\n redefine(proto, key, methods[key]);\n }\n else\n $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","/* */ \nmodule.exports = function(done, value){\n return {value: value, done: !!done};\n};","/* */ \n'use strict';\nvar core = require('./$.core'),\n $ = require('./$'),\n DESCRIPTORS = require('./$.descriptors'),\n SPECIES = require('./$.wks')('species');\nmodule.exports = function(KEY) {\n var C = core[KEY];\n if (DESCRIPTORS && C && !C[SPECIES])\n $.setDesc(C, SPECIES, {\n configurable: true,\n get: function() {\n return this;\n }\n });\n};\n","/* */ \n'use strict';\nvar $ = require('./$'),\n hide = require('./$.hide'),\n redefineAll = require('./$.redefine-all'),\n ctx = require('./$.ctx'),\n strictNew = require('./$.strict-new'),\n defined = require('./$.defined'),\n forOf = require('./$.for-of'),\n $iterDefine = require('./$.iter-define'),\n step = require('./$.iter-step'),\n ID = require('./$.uid')('id'),\n $has = require('./$.has'),\n isObject = require('./$.is-object'),\n setSpecies = require('./$.set-species'),\n DESCRIPTORS = require('./$.descriptors'),\n isExtensible = Object.isExtensible || isObject,\n SIZE = DESCRIPTORS ? '_s' : 'size',\n id = 0;\nvar fastKey = function(it, create) {\n if (!isObject(it))\n return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!$has(it, ID)) {\n if (!isExtensible(it))\n return 'F';\n if (!create)\n return 'E';\n hide(it, ID, ++id);\n }\n return 'O' + it[ID];\n};\nvar getEntry = function(that, key) {\n var index = fastKey(key),\n entry;\n if (index !== 'F')\n return that._i[index];\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key)\n return entry;\n }\n};\nmodule.exports = {\n getConstructor: function(wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function(that, iterable) {\n strictNew(that, C, NAME);\n that._i = $.create(null);\n that._f = undefined;\n that._l = undefined;\n that[SIZE] = 0;\n if (iterable != undefined)\n forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n clear: function clear() {\n for (var that = this,\n data = that._i,\n entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p)\n entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n 'delete': function(key) {\n var that = this,\n entry = getEntry(that, key);\n if (entry) {\n var next = entry.n,\n prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev)\n prev.n = next;\n if (next)\n next.p = prev;\n if (that._f == entry)\n that._f = next;\n if (that._l == entry)\n that._l = prev;\n that[SIZE]--;\n }\n return !!entry;\n },\n forEach: function forEach(callbackfn) {\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3),\n entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n while (entry && entry.r)\n entry = entry.p;\n }\n },\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n if (DESCRIPTORS)\n $.setDesc(C.prototype, 'size', {get: function() {\n return defined(this[SIZE]);\n }});\n return C;\n },\n def: function(that, key, value) {\n var entry = getEntry(that, key),\n prev,\n index;\n if (entry) {\n entry.v = value;\n } else {\n that._l = entry = {\n i: index = fastKey(key, true),\n k: key,\n v: value,\n p: prev = that._l,\n n: undefined,\n r: false\n };\n if (!that._f)\n that._f = entry;\n if (prev)\n prev.n = entry;\n that[SIZE]++;\n if (index !== 'F')\n that._i[index] = entry;\n }\n return that;\n },\n getEntry: getEntry,\n setStrong: function(C, NAME, IS_MAP) {\n $iterDefine(C, NAME, function(iterated, kind) {\n this._t = iterated;\n this._k = kind;\n this._l = undefined;\n }, function() {\n var that = this,\n kind = that._k,\n entry = that._l;\n while (entry && entry.r)\n entry = entry.p;\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n that._t = undefined;\n return step(1);\n }\n if (kind == 'keys')\n return step(0, entry.k);\n if (kind == 'values')\n return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n setSpecies(NAME);\n }\n};\n","/* */ \nmodule.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","/* */ \nvar $ = require('./$'),\n createDesc = require('./$.property-desc');\nmodule.exports = require('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n} : function(object, key, value) {\n object[key] = value;\n return object;\n};\n","/* */ \nmodule.exports = require('./$.hide');\n","/* */ \nvar redefine = require('./$.redefine');\nmodule.exports = function(target, src) {\n for (var key in src)\n redefine(target, key, src[key]);\n return target;\n};\n","/* */ \nmodule.exports = function(it, Constructor, name){\n if(!(it instanceof Constructor))throw TypeError(name + \": use the 'new' operator!\");\n return it;\n};","/* */ \nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};","/* */ \nvar def = require('./$').setDesc,\n has = require('./$.has'),\n TAG = require('./$.wks')('toStringTag');\nmodule.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG))\n def(it, TAG, {\n configurable: true,\n value: tag\n });\n};\n","/* */ \nmodule.exports = !require('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {get: function() {\n return 7;\n }}).a != 7;\n});\n","/* */ \n'use strict';\nvar $ = require('./$'),\n global = require('./$.global'),\n $export = require('./$.export'),\n fails = require('./$.fails'),\n hide = require('./$.hide'),\n redefineAll = require('./$.redefine-all'),\n forOf = require('./$.for-of'),\n strictNew = require('./$.strict-new'),\n isObject = require('./$.is-object'),\n setToStringTag = require('./$.set-to-string-tag'),\n DESCRIPTORS = require('./$.descriptors');\nmodule.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME],\n C = Base,\n ADDER = IS_MAP ? 'set' : 'add',\n proto = C && C.prototype,\n O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function() {\n new C().entries().next();\n }))) {\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n } else {\n C = wrapper(function(target, iterable) {\n strictNew(target, C, NAME);\n target._c = new Base;\n if (iterable != undefined)\n forOf(iterable, IS_MAP, target[ADDER], target);\n });\n $.each.call('add,clear,delete,forEach,get,has,set,keys,values,entries'.split(','), function(KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear'))\n hide(C.prototype, KEY, function(a, b) {\n if (!IS_ADDER && IS_WEAK && !isObject(a))\n return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n if ('size' in proto)\n $.setDesc(C.prototype, 'size', {get: function() {\n return this._c.size;\n }});\n }\n setToStringTag(C, NAME);\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n if (!IS_WEAK)\n common.setStrong(C, NAME, IS_MAP);\n return C;\n};\n","/* */ \n'use strict';\nvar strong = require('./$.collection-strong');\nrequire('./$.collection')('Set', function(get) {\n return function Set() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n}, {add: function add(value) {\n return strong.def(this, value = value === 0 ? 0 : value, value);\n }}, strong);\n","/* */ \nvar anObject = require('./$.an-object');\nmodule.exports = function(iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined)\n anObject(ret.call(iterator));\n throw e;\n }\n};\n","/* */ \nvar Iterators = require('./$.iterators'),\n ITERATOR = require('./$.wks')('iterator'),\n ArrayProto = Array.prototype;\nmodule.exports = function(it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","/* */ \nvar toInteger = require('./$.to-integer'),\n min = Math.min;\nmodule.exports = function(it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;\n};\n","/* */ \nmodule.exports = {};","/* */ \nvar classof = require('./$.classof'),\n ITERATOR = require('./$.wks')('iterator'),\n Iterators = require('./$.iterators');\nmodule.exports = require('./$.core').getIteratorMethod = function(it) {\n if (it != undefined)\n return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};\n","/* */ \nvar ctx = require('./$.ctx'),\n call = require('./$.iter-call'),\n isArrayIter = require('./$.is-array-iter'),\n anObject = require('./$.an-object'),\n toLength = require('./$.to-length'),\n getIterFn = require('./core.get-iterator-method');\nmodule.exports = function(iterable, entries, fn, that) {\n var iterFn = getIterFn(iterable),\n f = ctx(fn, that, entries ? 2 : 1),\n index = 0,\n length,\n step,\n iterator;\n if (typeof iterFn != 'function')\n throw TypeError(iterable + ' is not iterable!');\n if (isArrayIter(iterFn))\n for (length = toLength(iterable.length); length > index; index++) {\n entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n }\n else\n for (iterator = iterFn.call(iterable); !(step = iterator.next()).done; ) {\n call(iterator, f, step.value, entries);\n }\n};\n","/* */ \nvar global = require('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key) {\n return store[key] || (store[key] = {});\n};\n","/* */ \nvar id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","/* */ \nvar store = require('./$.shared')('wks'),\n uid = require('./$.uid'),\n Symbol = require('./$.global').Symbol;\nmodule.exports = function(name) {\n return store[name] || (store[name] = Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n};\n","/* */ \nvar cof = require('./$.cof'),\n TAG = require('./$.wks')('toStringTag'),\n ARG = cof(function() {\n return arguments;\n }()) == 'Arguments';\nmodule.exports = function(it) {\n var O,\n T,\n B;\n return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof(T = (O = Object(it))[TAG]) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","/* */ \nvar forOf = require('./$.for-of'),\n classof = require('./$.classof');\nmodule.exports = function(NAME) {\n return function toJSON() {\n if (classof(this) != NAME)\n throw TypeError(NAME + \"#toJSON isn't generic\");\n var arr = [];\n forOf(this, false, arr.push, arr);\n return arr;\n };\n};\n","/* */ \nvar $export = require('./$.export');\n$export($export.P, 'Set', {toJSON: require('./$.collection-to-json')('Set')});\n","/* */ \nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nmodule.exports = require('../modules/$.core').Set;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/set\"), __esModule: true };","'use strict';\n\nexport var methods = new Set(['get', 'put', 'post', 'delete', 'options', 'head', 'patch']);\n","'use strict';\nimport SwaggerParser from 'swagger-parser';\nimport JsonPointer from './JsonPointer';\nimport {methods as swaggerMethods} from './swagger-defs';\n\nexport default class SchemaManager {\n constructor() {\n if (SchemaManager.prototype._instance) {\n return SchemaManager.prototype._instance;\n }\n\n SchemaManager.prototype._instance = this;\n\n this._schema = {};\n }\n\n static instance() {\n return new SchemaManager();\n }\n\n load(url) {\n let promise = new Promise((resolve, reject) => {\n this._schema = {};\n\n SwaggerParser.bundle(url, {http: {withCredentials: false}})\n .then(\n (schema) => {\n this._schema = schema;\n resolve(this._schema);\n this.init();\n },\n (err) => reject(err)\n );\n });\n\n return promise;\n }\n\n /* calculate common used values */\n init() {\n if (!this._schema || !this._schema.schemes) return;\n this.apiUrl = this._schema.schemes[0] + '://' + this._schema.host + this._schema.basePath;\n if (this.apiUrl.endsWith('/')) {\n this.apiUrl = this.apiUrl.substr(0, this.apiUrl.length - 1);\n }\n }\n\n get schema() {\n // TODO: consider returning promise\n return this._schema;\n }\n\n byPointer(pointer) {\n let res = null;\n try {\n // TODO: remove decodeURIComponent after this issue is fixed: https://github.com/BigstickCarpet/swagger-parser/issues/31\n res = JsonPointer.get(this._schema, decodeURIComponent(pointer));\n } catch(e) {/*skip*/ }\n return res;\n }\n\n resolveRefs(obj) {\n Object.keys(obj).forEach(key => {\n if (obj[key].$ref) {\n let resolved = this.byPointer(obj[key].$ref);\n resolved._pointer = obj[key].$ref;\n obj[key] = resolved;\n }\n });\n return obj;\n }\n\n getMethodParams(methodPtr, resolveRefs) {\n /* inject JsonPointer into array elements */\n function injectPointers(array, root) {\n if (!Array.isArray(array)) {\n throw new Error(`parameters must be an array. Got ${typeof array} at ${root}`);\n }\n return array.map((element, idx) => {\n element._pointer = JsonPointer.join(root, idx);\n return element;\n });\n }\n\n // accept pointer directly to parameters as well\n if (JsonPointer.baseName(methodPtr) === 'parameters') {\n methodPtr = JsonPointer.dirName(methodPtr);\n }\n\n //get path params\n let pathParamsPtr = JsonPointer.join(JsonPointer.dirName(methodPtr), ['parameters']);\n let pathParams = this.byPointer(pathParamsPtr) || [];\n\n let methodParamsPtr = JsonPointer.join(methodPtr, ['parameters']);\n let methodParams = this.byPointer(methodParamsPtr) || [];\n pathParams = injectPointers(pathParams, pathParamsPtr);\n methodParams = injectPointers(methodParams, methodParamsPtr);\n\n if (resolveRefs) {\n methodParams = this.resolveRefs(methodParams);\n pathParams = this.resolveRefs(pathParams);\n }\n return methodParams.concat(pathParams);\n }\n\n getTagsMap() {\n let tags = this._schema.tags || [];\n var tagsMap = {};\n for (let tag of tags) {\n tagsMap[tag.name] = {\n description: tag.description,\n 'x-traitTag': tag['x-traitTag'] || false\n };\n }\n\n return tagsMap;\n }\n\n /* returns ES6 Map */\n buildMenuTree() {\n let tag2MethodMapping = new Map();\n\n let definedTags = this._schema.tags || [];\n // add tags into map to preserve order\n for (let tag of definedTags) {\n tag2MethodMapping.set(tag.name, {\n 'description': tag.description,\n 'x-traitTag': tag['x-traitTag'],\n 'methods': []\n });\n }\n\n let paths = this._schema.paths;\n for (let path of Object.keys(paths)) {\n let methods = Object.keys(paths[path]).filter((k) => swaggerMethods.has(k));\n for (let method of methods) {\n let methodInfo = paths[path][method];\n let tags = methodInfo.tags;\n\n //TODO: mb need to do something cleverer\n if (!tags || !tags.length) {\n tags = ['[Other]'];\n }\n let methodPointer = JsonPointer.compile(['paths', path, method]);\n let methodSummary = methodInfo.summary;\n for (let tag of tags) {\n let tagDetails = tag2MethodMapping.get(tag);\n if (!tagDetails) {\n tagDetails = {};\n tag2MethodMapping.set(tag, tagDetails);\n }\n if (tagDetails['x-traitTag']) continue;\n if (!tagDetails.methods) tagDetails.methods = [];\n tagDetails.methods.push({\n pointer: methodPointer,\n summary: methodSummary,\n operationId: methodInfo.operationId\n });\n }\n }\n }\n return tag2MethodMapping;\n }\n\n findDerivedDefinitions(defPointer) {\n let definition = this.byPointer(defPointer);\n if (!definition) throw new Error(`Can't load schema at ${defPointer}`);\n if (!definition.discriminator) return [];\n\n let globalDefs = this._schema.definitions || {};\n let res = [];\n for (let defName of Object.keys(globalDefs)) {\n if (!globalDefs[defName].allOf) continue;\n\n let subTypes = globalDefs[defName].allOf;\n let idx = subTypes.findIndex((subType) => {\n if (subType.$ref === defPointer) return true;\n return false;\n });\n if (idx < 0) continue;\n\n let empty = false;\n if (subTypes.length === 1) {\n empty = true;\n }\n res.push({name: defName, $ref: `#/definitions/${defName}`, empty});\n }\n return res;\n }\n\n}\n","/* */ \nvar toObject = require('./$.to-object');\nrequire('./$.object-sap')('keys', function($keys) {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","/* */ \nrequire('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/$.core').Object.keys;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t}\n\t\t},\n\n\t\ttype: function (o) {\n\t\t\treturn Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n\t\t},\n\n\t\t// Deep clone a language definition (e.g. to extend it)\n\t\tclone: function (o) {\n\t\t\tvar type = _.util.type(o);\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'Object':\n\t\t\t\t\tvar clone = {};\n\n\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tclone[key] = _.util.clone(o[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tcase 'Array':\n\t\t\t\t\t// Check for existence for IE8\n\t\t\t\t\treturn o.map && o.map(function(v) { return _.util.clone(v); });\n\t\t\t}\n\n\t\t\treturn o;\n\t\t}\n\t},\n\n\tlanguages: {\n\t\textend: function (id, redef) {\n\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\tfor (var key in redef) {\n\t\t\t\tlang[key] = redef[key];\n\t\t\t}\n\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Insert a token before another token in a language literal\n\t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n\t\t * we cannot just provide an object, we need anobject and a key.\n\t\t * @param inside The key (or language id) of the parent\n\t\t * @param before The key to insert before. If not provided, the function appends instead.\n\t\t * @param insert Object with the key/value pairs to insert\n\t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n\t\t */\n\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\troot = root || _.languages;\n\t\t\tvar grammar = root[inside];\n\t\t\t\n\t\t\tif (arguments.length == 2) {\n\t\t\t\tinsert = arguments[1];\n\t\t\t\t\n\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\tgrammar[newToken] = insert[newToken];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn grammar;\n\t\t\t}\n\t\t\t\n\t\t\tvar ret = {};\n\n\t\t\tfor (var token in grammar) {\n\n\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\tif (token == before) {\n\n\t\t\t\t\t\tfor (var newToken in insert) {\n\n\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Update references in other language definitions\n\t\t\t_.languages.DFS(_.languages, function(key, value) {\n\t\t\t\tif (value === root[inside] && key != inside) {\n\t\t\t\t\tthis[key] = ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn root[inside] = ret;\n\t\t},\n\n\t\t// Traverse a language definition with Depth First Search\n\t\tDFS: function(o, callback, type) {\n\t\t\tfor (var i in o) {\n\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\tif (_.util.type(o[i]) === 'Object') {\n\t\t\t\t\t\t_.languages.DFS(o[i], callback);\n\t\t\t\t\t}\n\t\t\t\t\telse if (_.util.type(o[i]) === 'Array') {\n\t\t\t\t\t\t_.languages.DFS(o[i], callback, i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplugins: {},\n\t\n\thighlightAll: function(async, callback) {\n\t\tvar elements = document.querySelectorAll('code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code');\n\n\t\tfor (var i=0, element; element = elements[i++];) {\n\t\t\t_.highlightElement(element, async === true, callback);\n\t\t}\n\t},\n\n\thighlightElement: function(element, async, callback) {\n\t\t// Find language\n\t\tvar language, grammar, parent = element;\n\n\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tlanguage = (parent.className.match(lang) || [,''])[1];\n\t\t\tgrammar = _.languages[language];\n\t\t}\n\n\t\t// Set language on the element, if not present\n\t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n\t\t// Set language on the parent, for styling\n\t\tparent = element.parentNode;\n\n\t\tif (/pre/i.test(parent.nodeName)) {\n\t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\t\t}\n\n\t\tvar code = element.textContent;\n\n\t\tvar env = {\n\t\t\telement: element,\n\t\t\tlanguage: language,\n\t\t\tgrammar: grammar,\n\t\t\tcode: code\n\t\t};\n\n\t\tif (!code || !grammar) {\n\t\t\t_.hooks.run('complete', env);\n\t\t\treturn;\n\t\t}\n\n\t\t_.hooks.run('before-highlight', env);\n\n\t\tif (async && _self.Worker) {\n\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\tworker.onmessage = function(evt) {\n\t\t\t\tenv.highlightedCode = evt.data;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t};\n\n\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\tlanguage: env.language,\n\t\t\t\tcode: env.code,\n\t\t\t\timmediateClose: true\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tenv.highlightedCode = _.highlight(env.code, env.grammar, env.language);\n\n\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\tcallback && callback.call(element);\n\n\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t_.hooks.run('complete', env);\n\t\t}\n\t},\n\n\thighlight: function (text, grammar, language) {\n\t\tvar tokens = _.tokenize(text, grammar);\n\t\treturn Token.stringify(_.util.encode(tokens), language);\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar Token = _.Token;\n\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\ttokenloop: for (var token in grammar) {\n\t\t\tif(!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = (_.util.type(patterns) === \"Array\") ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tvar pattern = patterns[j],\n\t\t\t\t\tinside = pattern.inside,\n\t\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\t\tlookbehindLength = 0,\n\t\t\t\t\talias = pattern.alias;\n\n\t\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\t\tfor (var i=0; i<strarr.length; i++) { // Don’t cache length as it changes during the loop\n\n\t\t\t\t\tvar str = strarr[i];\n\n\t\t\t\t\tif (strarr.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str);\n\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index - 1 + lookbehindLength,\n\t\t\t\t\t\t\tmatch = match[0].slice(lookbehindLength),\n\t\t\t\t\t\t\tlen = match.length,\n\t\t\t\t\t\t\tto = from + len,\n\t\t\t\t\t\t\tbefore = str.slice(0, from + 1),\n\t\t\t\t\t\t\tafter = str.slice(to + 1);\n\n\t\t\t\t\t\tvar args = [i, 1];\n\n\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias);\n\n\t\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = '';\n\n\tfor (var name in env.attributes) {\n\t\tattributes += (attributes ? ' ' : '') + name + '=\"' + (env.attributes[name] || '') + '\"';\n\t}\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\" ' + attributes + '>' + env.content + '</' + env.tag + '>';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n// Get current script and highlight\nvar script = document.getElementsByTagName('script');\n\nscript = script[script.length - 1];\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': /<!--[\\w\\W]*?-->/,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': /<!DOCTYPE[\\w\\W]+?>/,\n\t'cdata': /<!\\[CDATA\\[[\\w\\W]*?]]>/i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=.$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /(<style[\\w\\W]*?>)[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'class-name', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\`|\\\\?[^`])*`/,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /(<script[\\w\\W]*?>)[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'html': 'markup',\n\t\t\t'svg': 'markup',\n\t\t\t'xml': 'markup',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tself.Prism.fileHighlight();\n\n})();\n\n/* */ \n\"format cjs\";\nPrism.languages.actionscript = Prism.languages.extend('javascript', {\n\t'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n\t'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n});\nPrism.languages.actionscript['class-name'].alias = 'function';\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('actionscript', 'string', {\n\t\t'xml': {\n\t\t\tpattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\2)*\\s*\\/?>/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\trest: Prism.languages.markup\n\t\t\t}\n\t\t}\n\t});\n}\n/* */ \n\"format cjs\";\nPrism.languages.c = Prism.languages.extend('clike', {\n\t'keyword': /\\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n\t'operator': /\\-[>-]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|?\\||[~^%?*\\/]/,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)[ful]*\\b/i\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'macro': {\n\t\t// allow for multiline macro definitions\n\t\t// spaces after the # character compile fine with gcc\n\t\tpattern: /(^\\s*)#\\s*[a-z]+([^\\r\\n\\\\]|\\\\.|\\\\(?:\\r\\n?|\\n))*/im,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight the path of the include statement as a string\n\t\t\t'string': {\n\t\t\t\tpattern: /(#\\s*include\\s*)(<.+?>|(\"|')(\\\\?.)+?\\3)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// highlight macro directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(#\\s*)\\b(define|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t},\n\t// highlight predefined macros as constants\n\t'constant': /\\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|stdin|stdout|stderr)\\b/\n});\n\ndelete Prism.languages.c['class-name'];\ndelete Prism.languages.c['boolean'];\n\n/* */ \n\"format cjs\";\nPrism.languages.cpp = Prism.languages.extend('c', {\n\t'keyword': /\\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'operator': /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\\->|:{1,2}|={1,2}|\\^|~|%|&{1,2}|\\|?\\||\\?|\\*|\\/|\\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/\n});\n\nPrism.languages.insertBefore('cpp', 'keyword', {\n\t'class-name': {\n\t\tpattern: /(class\\s+)[a-z0-9_]+/i,\n\t\tlookbehind: true\n\t}\n});\n/* */ \n\"format cjs\";\nPrism.languages.csharp = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\\b/,\n\t'string': [\n\t\t/@(\"|')(\\1\\1|\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1/,\n\t\t/(\"|')(\\\\?.)*?\\1/\n\t],\n\t'number': /\\b-?(0x[\\da-f]+|\\d*\\.?\\d+f?)\\b/i\n});\n\nPrism.languages.insertBefore('csharp', 'keyword', {\n\t'preprocessor': {\n\t\tpattern: /(^\\s*)#.*/m,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight preprocessor directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(\\s*#)\\b(define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t}\n});\n\n/* */ \n\"format cjs\";\n/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n *\n * Supports the following:\n * \t\t- Extends clike syntax\n * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n * \t\t- Smarter constant and function matching\n *\n * Adds the following new token classes:\n * \t\tconstant, delimiter, variable, function, package\n */\n\nPrism.languages.php = Prism.languages.extend('clike', {\n\t'keyword': /\\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\\b/i,\n\t'constant': /\\b[A-Z0-9_]{2,}\\b/,\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\w\\W]*?\\*\\/|\\/\\/.*)/,\n\t\tlookbehind: true\n\t}\n});\n\n// Shell-like comments are matched after strings, because they are less\n// common than strings containing hashes...\nPrism.languages.insertBefore('php', 'class-name', {\n\t'shell-comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true,\n\t\talias: 'comment'\n\t}\n});\n\nPrism.languages.insertBefore('php', 'keyword', {\n\t'delimiter': /\\?>|<\\?(?:php)?/i,\n\t'variable': /\\$\\w+\\b/i,\n\t'package': {\n\t\tpattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /\\\\/\n\t\t}\n\t}\n});\n\n// Must be defined after the function pattern\nPrism.languages.insertBefore('php', 'operator', {\n\t'property': {\n\t\tpattern: /(->)[\\w]+/,\n\t\tlookbehind: true\n\t}\n});\n\n// Add HTML support of the markup language exists\nif (Prism.languages.markup) {\n\n\t// Tokenize all inline PHP blocks that are wrapped in <?php ?>\n\t// This allows for easy PHP + markup highlighting\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'php') {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(/(?:<\\?php|<\\?)[\\w\\W]*?(?:\\?>)/ig, function(match) {\n\t\t\tenv.tokenStack.push(match);\n\n\t\t\treturn '{{{PHP' + env.tokenStack.length + '}}}';\n\t\t});\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'php') {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'php') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, t; t = env.tokenStack[i]; i++) {\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('{{{PHP' + (i + 1) + '}}}', Prism.highlight(t, env.grammar, 'php').replace(/\\$/g, '$$$$'));\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n\n\t// Wrap tokens in classes that are missing them\n\tPrism.hooks.add('wrap', function(env) {\n\t\tif (env.language === 'php' && env.type === 'markup') {\n\t\t\tenv.content = env.content.replace(/(\\{\\{\\{PHP[0-9]+\\}\\}\\})/g, \"<span class=\\\"token php\\\">$1</span>\");\n\t\t}\n\t});\n\n\t// Add the rules before all others\n\tPrism.languages.insertBefore('php', 'comment', {\n\t\t'markup': {\n\t\t\tpattern: /<[^?]\\/?(.*?)>/,\n\t\t\tinside: Prism.languages.markup\n\t\t},\n\t\t'php': /\\{\\{\\{PHP[0-9]+\\}\\}\\}/\n\t});\n}\n\n/* */ \n\"format cjs\";\n(function(Prism) {\n\n// Ignore comments starting with { to privilege string interpolation highlighting\nvar comment = /#(?!\\{).+/,\n interpolation = {\n \tpattern: /#\\{[^}]+\\}/,\n \talias: 'variable'\n };\n\nPrism.languages.coffeescript = Prism.languages.extend('javascript', {\n\t'comment': comment,\n\t'string': [\n\n\t\t// Strings are multiline\n\t\t/'(?:\\\\?[^\\\\])*?'/,\n\n\t\t{\n\t\t\t// Strings are multiline\n\t\t\tpattern: /\"(?:\\\\?[^\\\\])*?\"/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t],\n\t'keyword': /\\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n\t'class-member': {\n\t\tpattern: /@(?!\\d)\\w+/,\n\t\talias: 'variable'\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'comment', {\n\t'multiline-comment': {\n\t\tpattern: /###[\\s\\S]+?###/,\n\t\talias: 'comment'\n\t},\n\n\t// Block regexp can contain comments and interpolation\n\t'block-regex': {\n\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\talias: 'regex',\n\t\tinside: {\n\t\t\t'comment': comment,\n\t\t\t'interpolation': interpolation\n\t\t}\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'string', {\n\t'inline-javascript': {\n\t\tpattern: /`(?:\\\\?[\\s\\S])*?`/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'punctuation'\n\t\t\t},\n\t\t\trest: Prism.languages.javascript\n\t\t}\n\t},\n\n\t// Block strings\n\t'multiline-string': [\n\t\t{\n\t\t\tpattern: /'''[\\s\\S]*?'''/,\n\t\t\talias: 'string'\n\t\t},\n\t\t{\n\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n\t\t\talias: 'string',\n\t\t\tinside: {\n\t\t\t\tinterpolation: interpolation\n\t\t\t}\n\t\t}\n\t]\n\n});\n\nPrism.languages.insertBefore('coffeescript', 'keyword', {\n\t// Object property\n\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n});\n\n}(Prism));\n/* */ \n\"format cjs\";\nPrism.languages.go = Prism.languages.extend('clike', {\n\t'keyword': /\\b(break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t'builtin': /\\b(bool|byte|complex(64|128)|error|float(32|64)|rune|string|u?int(8|16|32|64|)|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(ln)?|real|recover)\\b/,\n\t'boolean': /\\b(_|iota|nil|true|false)\\b/,\n\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t'number': /\\b(-?(0x[a-f\\d]+|(\\d+\\.?\\d*|\\.\\d+)(e[-+]?\\d+)?)i?)\\b/i,\n\t'string': /(\"|'|`)(\\\\?.|\\r|\\n)*?\\1/\n});\ndelete Prism.languages.go['class-name'];\n\n/* */ \n\"format cjs\";\nPrism.languages.haskell= {\n\t'comment': {\n\t\tpattern: /(^|[^-!#$%*+=?&@|~.:<>^\\\\\\/])(--[^-!#$%*+=?&@|~.:<>^\\\\\\/].*|{-[\\w\\W]*?-})/m,\n\t\tlookbehind: true\n\t},\n\t'char': /'([^\\\\']|\\\\([abfnrtv\\\\\"'&]|\\^[A-Z@[\\]\\^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\\d+|o[0-7]+|x[0-9a-fA-F]+))'/,\n\t'string': /\"([^\\\\\"]|\\\\([abfnrtv\\\\\"'&]|\\^[A-Z@[\\]\\^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\\d+|o[0-7]+|x[0-9a-fA-F]+)|\\\\\\s+\\\\)*\"/,\n\t'keyword' : /\\b(case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b/,\n\t'import_statement' : {\n\t\t// The imported or hidden names are not included in this import\n\t\t// statement. This is because we want to highlight those exactly like\n\t\t// we do for the names in the program.\n\t\tpattern: /(\\r?\\n|\\r|^)\\s*import\\s+(qualified\\s+)?([A-Z][_a-zA-Z0-9']*)(\\.[A-Z][_a-zA-Z0-9']*)*(\\s+as\\s+([A-Z][_a-zA-Z0-9']*)(\\.[A-Z][_a-zA-Z0-9']*)*)?(\\s+hiding\\b)?/m,\n\t\tinside: {\n\t\t\t'keyword': /\\b(import|qualified|as|hiding)\\b/\n\t\t}\n\t},\n\t// These are builtin variables only. Constructors are highlighted later as a constant.\n\t'builtin': /\\b(abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b/,\n\t// decimal integers and floating point numbers | octal integers | hexadecimal integers\n\t'number' : /\\b(\\d+(\\.\\d+)?(e[+-]?\\d+)?|0o[0-7]+|0x[0-9a-f]+)\\b/i,\n\t// Most of this is needed because of the meaning of a single '.'.\n\t// If it stands alone freely, it is the function composition.\n\t// It may also be a separator between a module name and an identifier => no\n\t// operator. If it comes together with other special characters it is an\n\t// operator too.\n\t'operator' : /\\s\\.\\s|[-!#$%*+=?&@|~.:<>^\\\\\\/]*\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]+|[-!#$%*+=?&@|~.:<>^\\\\\\/]+\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]*|[-!#$%*+=?&@|~:<>^\\\\\\/]+|`([A-Z][_a-zA-Z0-9']*\\.)*[_a-z][_a-zA-Z0-9']*`/,\n\t// In Haskell, nearly everything is a variable, do not highlight these.\n\t'hvariable': /\\b([A-Z][_a-zA-Z0-9']*\\.)*[_a-z][_a-zA-Z0-9']*\\b/,\n\t'constant': /\\b([A-Z][_a-zA-Z0-9']*\\.)*[A-Z][_a-zA-Z0-9']*\\b/,\n\t'punctuation' : /[{}[\\];(),.:]/\n};\n\n/* */ \n\"format cjs\";\nPrism.languages.java = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\\b/,\n\t'number': /\\b0b[01]+\\b|\\b0x[\\da-f]*\\.?[\\da-fp\\-]+\\b|\\b\\d*\\.?\\d+(?:e[+-]?\\d+)?[df]?\\b/i,\n\t'operator': {\n\t\tpattern: /(^|[^.])(?:\\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\\|[|=]?|\\*=?|\\/=?|%=?|\\^=?|[?:~])/m,\n\t\tlookbehind: true\n\t}\n});\n/* */ \n\"format cjs\";\nPrism.languages.lua = {\n\t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n\t// \\z may be used to skip the following space\n\t'string': /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n\t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n\t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n\t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n\t'operator': [\n\t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n\t\t{\n\t\t\t// Match \"..\" but don't break \"...\"\n\t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n};\n/* */ \n\"format cjs\";\nPrism.languages.matlab = {\n\t// We put string before comment, because of printf() patterns that contain \"%\"\n\t'string': /\\B'(?:''|[^'\\n])*'/,\n\t'comment': [\n\t\t/%\\{[\\s\\S]*?\\}%/,\n\t\t/%.+/\n\t],\n\t// FIXME We could handle imaginary numbers as a whole\n\t'number': /\\b-?(?:\\d*\\.?\\d+(?:[eE][+-]?\\d+)?(?:[ij])?|[ij])\\b/,\n\t'keyword': /\\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n\t'function': /(?!\\d)\\w+(?=\\s*\\()/,\n\t'operator': /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n\t'punctuation': /\\.{3}|[.,;\\[\\](){}!]/\n};\n/* */ \n\"format cjs\";\nPrism.languages.perl = {\n\t'comment': [\n\t\t{\n\t\t\t// POD\n\t\t\tpattern: /(^\\s*)=\\w+[\\s\\S]*?=cut.*/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t// TODO Could be nice to handle Heredoc too.\n\t'string': [\n\t\t// q/.../\n\t\t/\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\n\t\t// q a...a\n\t\t/\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\n\t\t// q(...)\n\t\t/\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\n\t\t// q{...}\n\t\t/\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n\t\n\t\t// q[...]\n\t\t/\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\n\t\t// q<...>\n\t\t/\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\n\t\t// \"...\", `...`\n\t\t/(\"|`)(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\n\t\t// '...'\n\t\t// FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n\t\t/'(?:[^'\\\\\\r\\n]|\\\\.)*'/\n\t],\n\t'regex': [\n\t\t// m/.../\n\t\t/\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[msixpodualngc]*/,\n\t\n\t\t// m a...a\n\t\t/\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\.)*?\\1[msixpodualngc]*/,\n\t\n\t\t// m(...)\n\t\t/\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n\t\n\t\t// m{...}\n\t\t/\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n\t\n\t\t// m[...]\n\t\t/\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n\t\n\t\t// m<...>\n\t\t/\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n\n\t\t// The lookbehinds prevent -s from breaking\n\t\t// FIXME We don't handle change of separator like s(...)[...]\n\t\t// s/.../.../\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s a...a...a\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s(...)(...)\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s{...}{...}\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s[...][...]\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s<...><...>\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// /.../\n\t\t// The look-ahead tries to prevent two divisions on\n\t\t// the same line from being highlighted as regex.\n\t\t// This does not support multi-line regex.\n\t\t/\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/\n\t],\n\n\t// FIXME Not sure about the handling of ::, ', and #\n\t'variable': [\n\t\t// ${^POSTMATCH}\n\t\t/[&*$@%]\\{\\^[A-Z]+\\}/,\n\t\t// $^V\n\t\t/[&*$@%]\\^[A-Z_]/,\n\t\t// ${...}\n\t\t/[&*$@%]#?(?=\\{)/,\n\t\t// $foo\n\t\t/[&*$@%]#?((::)*'?(?!\\d)[\\w$]+)+(::)*/i,\n\t\t// $1\n\t\t/[&*$@%]\\d+/,\n\t\t// $_, @_, %!\n\t\t// The negative lookahead prevents from breaking the %= operator\n\t\t/(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n\t],\n\t'filehandle': {\n\t\t// <>, <FOO>, _\n\t\tpattern: /<(?![<=])\\S*>|\\b_\\b/,\n\t\talias: 'symbol'\n\t},\n\t'vstring': {\n\t\t// v1.2, 1.2.3\n\t\tpattern: /v\\d+(\\.\\d+)*|\\d+(\\.\\d+){2,}/,\n\t\talias: 'string'\n\t},\n\t'function': {\n\t\tpattern: /sub [a-z0-9_]+/i,\n\t\tinside: {\n\t\t\tkeyword: /sub/\n\t\t}\n\t},\n\t'keyword': /\\b(any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f](_?[\\dA-Fa-f])*|0b[01](_?[01])*|(\\d(_?\\d)*)?\\.?\\d(_?\\d)*([Ee][+-]?\\d+)?)\\b/,\n\t'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n\t'punctuation': /[{}[\\];(),:]/\n};\n\n/* */ \n\"format cjs\";\nPrism.languages.python= {\n\t'triple-quoted-string': {\n\t\tpattern: /\"\"\"[\\s\\S]+?\"\"\"|'''[\\s\\S]+?'''/,\n\t\talias: 'string'\n\t},\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true\n\t},\n\t'string': /(\"|')(?:\\\\?.)*?\\1/,\n\t'function' : {\n\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\\()/g,\n\t\tlookbehind: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\bclass\\s+)[a-z0-9_]+/i,\n\t\tlookbehind: true\n\t},\n\t'keyword' : /\\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\\b/,\n\t'boolean' : /\\b(?:True|False)\\b/,\n\t'number' : /\\b-?(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n\t'operator' : /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:or|and|not)\\b/,\n\t'punctuation' : /[{}[\\];(),.:]/\n};\n\n/* */ \n\"format cjs\";\nPrism.languages.r = {\n\t'comment': /#.*/,\n\t'string': /(['\"])(?:\\\\?.)*?\\1/,\n\t'percent-operator': {\n\t\t// Includes user-defined operators\n\t\t// and %%, %*%, %/%, %in%, %o%, %x%\n\t\tpattern: /%[^%\\s]*%/,\n\t\talias: 'operator'\n\t},\n\t'boolean': /\\b(?:TRUE|FALSE)\\b/,\n\t'ellipsis': /\\.\\.(?:\\.|\\d+)/,\n\t'number': [\n\t\t/\\b(?:NaN|Inf)\\b/,\n\t\t/\\b(?:0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\d*\\.?\\d+)(?:[EePp][+-]?\\d+)?[iL]?\\b/\n\t],\n\t'keyword': /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n\t'operator': /->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n\t'punctuation': /[(){}\\[\\],;]/\n};\n/* */ \n\"format cjs\";\n/**\n * Original by Samuel Flores\n *\n * Adds the following new token classes:\n * \t\tconstant, builtin, variable, symbol, regex\n */\n(function(Prism) {\n\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t'comment': /#(?!\\{[^\\r\\n]*?\\}).*/,\n\t\t'keyword': /\\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\\b/\n\t});\n\n\tvar interpolation = {\n\t\tpattern: /#\\{[^}]+\\}/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\talias: 'tag'\n\t\t\t},\n\t\t\trest: Prism.util.clone(Prism.languages.ruby)\n\t\t}\n\t};\n\n\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t'regex': [\n\t\t\t{\n\t\t\t\tpattern: /%r([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\tpattern: /%r\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\][gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r<(?:[^<>\\\\]|\\\\[\\s\\S])*>[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\r\\n])+\\/[gim]{0,3}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'variable': /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/,\n\t\t'symbol': /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t'builtin': /\\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n\t\t'constant': /\\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.ruby.string = [\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// Here we need to specifically allow interpolation\n\t\t\tpattern: /%[qQiIwWxs]?\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|')(#\\{[^}]+\\}|\\\\(?:\\r?\\n|\\r)|\\\\?.)*?\\1/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t];\n}(Prism));\n/* */ \n\"format cjs\";\n(function(Prism) {\n\tvar insideString = {\n\t\tvariable: [\n\t\t\t// Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\w\\W]+?\\)\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\tvariable: [{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\w\\W]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/,\n\t\t\t\t\t],\n\t\t\t\t\tnumber: /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee]-?\\d+)?)\\b/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\toperator: /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\tpunctuation: /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\([^)]+\\)|`[^`]+`/,\n\t\t\t\tinside: {\n\t\t\t\t\tvariable: /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:[a-z0-9_#\\?\\*!@]+|\\{[^}]+\\})/i\n\t\t],\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/bin\\/bash|^#!\\s*\\/bin\\/sh/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<\\s*)(?:\"|')?(\\w+?)(?:\"|')?\\s*\\r?\\n(?:[\\s\\S])*?\\r?\\n\\2/g,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(?:\\\\?[\\s\\S])*?\\1/g,\n\t\t\t\tinside: insideString\n\t\t\t}\n\t\t],\n\t\t'variable': insideString.variable,\n\t\t// Originally based on http://ss64.com/bash/\n\t\t'function': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:let|:|\\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:true|false)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'operator': /&&?|\\|\\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];]/\n\t};\n\n\tvar inside = insideString.variable[1].inside;\n\tinside['function'] = Prism.languages.bash['function'];\n\tinside.keyword = Prism.languages.bash.keyword;\n\tinside.boolean = Prism.languages.bash.boolean;\n\tinside.operator = Prism.languages.bash.operator;\n\tinside.punctuation = Prism.languages.bash.punctuation;\n})(Prism);\n/* */ \n\"format cjs\";\n// issues: nested multiline comments\nPrism.languages.swift = Prism.languages.extend('clike', {\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\((?:[^()]|\\([^)]+\\))+\\)|\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\\\\\((?:[^()]|\\([^)]+\\))+\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\tdelimiter: {\n\t\t\t\t\t\tpattern: /^\\\\\\(|\\)$/,\n\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t}\n\t\t\t\t\t// See rest below\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t'keyword': /\\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\\b/,\n\t'number': /\\b([\\d_]+(\\.[\\de_]+)?|0x[a-f0-9_]+(\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\t'constant': /\\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\t'atrule': /@\\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\\b/,\n\t'builtin': /\\b([A-Z]\\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\\b/\n});\nPrism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.util.clone(Prism.languages.swift);\n/* */ \n\"format cjs\";\nPrism.languages.objectivec = Prism.languages.extend('c', {\n\t'keyword': /\\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t'string': /(\"|')(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\n\n/* */ \n\"format cjs\";\nPrism.languages.scala = Prism.languages.extend('java', {\n\t'keyword': /<-|=>|\\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\\b/,\n\t'string': /\"\"\"[\\W\\w]*?\"\"\"|\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^\\\\\\r\\n']|\\\\.[^\\\\']*)'/,\n\t'builtin': /\\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\\b/,\n\t'number': /\\b(?:0x[\\da-f]*\\.?[\\da-f]+|\\d*\\.?\\d+e?\\d*[dfl]?)\\b/i,\n\t'symbol': /'[^\\d\\s\\\\]\\w*/\n});\ndelete Prism.languages.scala['class-name'];\ndelete Prism.languages.scala['function'];\n","/* */ \n\"format cjs\";\n/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', /<!--[\\s\\S]*?-->/)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /<tag(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^<!--[\\s\\S]*?-->|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^<a /i.test(cap[0])) {\n this.inLink = true;\n } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '\\n</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '\\n</code></pre>\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + raw.toLowerCase().replace(/[^\\w]+/g, '-')\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '</' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '<li>' + text + '</li>\\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '<p>' + text + '</p>\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + '<tbody>\\n'\n + body\n + '</tbody>\\n'\n + '</table>\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '<strong>' + text + '</strong>';\n};\n\nRenderer.prototype.em = function(text) {\n return '<em>' + text + '</em>';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '<code>' + text + '</code>';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '<br/>' : '<br>';\n};\n\nRenderer.prototype.del = function(text) {\n return '<del>' + text + '</del>';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n return html.replace(/&([#\\w]+);/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occured:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","module.exports = require(\"npm:marked@0.3.5/lib/marked.js\");","'use strict';\n\nimport {Pipe} from 'angular2/core';\nimport {isString, stringify, isBlank} from 'angular2/src/facade/lang';\nimport {BaseException} from 'angular2/src/facade/exceptions';\nimport {JsonPointer} from './JsonPointer';\n\nimport Prism from '../../prismjs-bundle';\n\nimport 'prismjs/themes/prism-dark.css!css';\nimport 'hint.css/hint.base.css!css';\n\nimport marked from 'marked';\n\n// in gfm mode marked doesn't parse #Heading (without space after #) as heading\n// https://github.com/chjj/marked/issues/642\nmarked.Lexer.rules.gfm.heading = marked.Lexer.rules.normal.heading;\nmarked.Lexer.rules.tables.heading = marked.Lexer.rules.normal.heading;\n\nmarked.setOptions({\n renderer: new marked.Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n smartypants: false\n});\n\nclass InvalidPipeArgumentException extends BaseException {\n constructor(type, value) {\n super(`Invalid argument '${value}' for pipe '${stringify(type)}'`);\n }\n}\n\n@Pipe({ name: 'keys' })\nexport class KeysPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (typeof value !== 'object') {\n throw new InvalidPipeArgumentException(ValuesPipe, value);\n }\n return Object.keys(value);\n }\n}\n\n@Pipe({ name: 'values' })\nexport class ValuesPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (typeof value !== 'object') {\n throw new InvalidPipeArgumentException(ValuesPipe, value);\n }\n return Object.keys(value).map(key => value[key]);\n }\n}\n\n@Pipe({ name: 'jsonPointerEscape' })\nexport class JsonPointerEscapePipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(JsonPointerEscapePipe, value);\n }\n return JsonPointer.escape(value);\n }\n}\n\n@Pipe({ name: 'marked' })\nexport class MarkedPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(JsonPointerEscapePipe, value);\n }\n return `<span class=\"redoc-markdown-block\">${marked(value)}</span>`;\n }\n}\n\nconst langMap = {\n 'c++': 'cpp',\n 'c#': 'csharp',\n 'objective-c': 'objectivec',\n 'shell': 'bash',\n 'viml': 'vim'\n};\n\n@Pipe({ name: 'prism' })\nexport class PrismPipe {\n transform(value, args) {\n if (isBlank(args) || args.length === 0) {\n throw new BaseException('Prism pipe requires one argument');\n }\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(JsonPointerEscapePipe, value);\n }\n let lang = args[0].toString().trim().toLowerCase();\n if (langMap[lang]) lang = langMap[lang];\n\n let grammar = Prism.languages[lang];\n //fallback to clike\n if (!grammar) grammar = Prism.languages.clike;\n return Prism.highlight(value, grammar);\n }\n}\n\n@Pipe({ name: 'encodeURIComponent' })\nexport class EncodeURIComponentPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(EncodeURIComponentPipe, value);\n }\n return encodeURIComponent(value);\n }\n}\n","'use strict';\nimport {Component, ChangeDetectionStrategy} from 'angular2/core';\nimport {CORE_DIRECTIVES, JsonPipe, AsyncPipe} from 'angular2/common';\nimport SchemaManager from '../utils/SchemaManager';\nimport JsonPointer from '../utils/JsonPointer';\nimport {MarkedPipe, JsonPointerEscapePipe} from '../utils/pipes';\n\nexport { SchemaManager };\n\n// common inputs for all components\nlet commonInputs = ['pointer']; // json pointer to the schema chunk\n\n// internal helper function\nfunction safeConcat(a, b) {\n let res = a && a.slice() || [];\n b = (b == null) ? [] : b;\n return res.concat(b);\n}\n\nfunction defaults(target, src) {\n var props = Object.keys(src);\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n if (target[key] === undefined) {\n target[key] = src[key];\n }\n }\n return target;\n}\n\nfunction snapshot(obj) {\n if(obj == null || typeof(obj) != 'object') {\n return obj;\n }\n\n var temp = new obj.constructor();\n\n for(var key in obj) {\n if (obj.hasOwnProperty(key)) {\n temp[key] = snapshot(obj[key]);\n }\n }\n\n return temp;\n}\n\n/**\n * Class decorator\n * Simplifies setup of component metainfo\n * All options are options from either Component or View angular2 decorator\n * For detailed info look angular2 doc\n * @param {Object} options - component options\n * @param {string[]} options.inputs - component inputs\n * @param {*[]} options.directives - directives used by component\n * (except CORE_DIRECTIVES)\n * @param {*[]} options.pipes - pipes used by component\n * @param {*[]} options.providers - component providers\n * @param {string} options.templateUrl - path to component template\n * @param {string} options.template - component template html\n * @param {string} options.styles - component css styles\n */\nexport function RedocComponent(options) {\n let inputs = safeConcat(options.inputs, commonInputs);\n let directives = safeConcat(options.directives, CORE_DIRECTIVES);\n let pipes = safeConcat(options.pipes, [JsonPointerEscapePipe, MarkedPipe, JsonPipe, AsyncPipe]);\n\n return function decorator(target) {\n\n let componentDecorator = Component({\n selector: options.selector,\n inputs: inputs,\n outputs: options.outputs,\n providers: options.providers,\n changeDetection: options.changeDetection || ChangeDetectionStrategy.Default,\n templateUrl: options.templateUrl,\n template: options.template,\n styles: options.styles,\n directives: directives,\n pipes: pipes\n });\n\n return componentDecorator(target) || target;\n };\n}\n\n/**\n * Generic Component\n * @class\n */\n@Reflect.metadata('parameters', [[SchemaManager]])\nexport class BaseComponent {\n constructor(schemaMgr) {\n this.schemaMgr = schemaMgr;\n this.componentSchema = null;\n }\n\n /**\n * onInit method is run by angular2 after all component inputs are resolved\n */\n ngOnInit() {\n this.componentSchema = snapshot(this.schemaMgr.byPointer(this.pointer || ''));\n this.prepareModel();\n this.init();\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n /**\n * simple in-place schema dereferencing. Schema is already bundled so no need in global dereferencing.\n */\n dereference(schema = Object.assign({}, this.componentSchema)) {\n let dereferencedCache = {};\n\n let resolve = (schema) => {\n let resolvedRef;\n if (schema && schema.$ref) {\n resolvedRef = schema.$ref;\n let resolved = this.schemaMgr.byPointer(schema.$ref);\n let baseName = JsonPointer.baseName(schema.$ref);\n if (!dereferencedCache[schema.$ref]) {\n // if resolved schema doesn't have title use name from ref\n resolved = Object.assign({}, resolved);\n resolved._pointer = schema.$ref;\n } else {\n // for circular referenced save only title and type\n resolved = {\n title: resolved.title,\n type: resolved.type\n };\n }\n\n dereferencedCache[schema.$ref] = dereferencedCache[schema.$ref] ? dereferencedCache[schema.$ref] + 1 : 1;\n\n resolved.title = resolved.title || baseName;\n\n let keysCount = Object.keys(schema).length;\n if ( keysCount > 2 || (keysCount === 2 && !schema.description) ) {\n // allow only description field on the same level as $ref because it is\n // common pattern over specs in the wild\n console.warn(`other properties defined at the same level as $ref at '${this.pointer}'.\n They are IGNORRED according to JsonSchema spec`);\n }\n\n schema = schema.description ? {\n description: schema.description\n } : {};\n Object.assign(schema, resolved);\n }\n\n Object.keys(schema).forEach((key) => {\n let value = schema[key];\n if (value && typeof value === 'object') {\n schema[key] = resolve(value);\n }\n });\n if (resolvedRef) dereferencedCache[resolvedRef] = dereferencedCache[resolvedRef] ? dereferencedCache[resolvedRef] - 1 : 0;\n return schema;\n };\n\n this.componentSchema = snapshot(resolve(schema, 1));\n }\n\n static joinAllOf(schema, opts) {\n function merge(into, schemas) {\n for (let subSchema of schemas) {\n if (opts && opts.omitParent && subSchema.discriminator) continue;\n // TODO: add support for merge array schemas\n if (typeof subSchema !== 'object') {\n let errMessage = `Items of allOf should be Object: ${typeof subSchema} found\n ${subSchema}`;\n throw new Error(errMessage);\n }\n\n if (into.type && subSchema.type && into.type !== subSchema.type) {\n let errMessage = `allOf merging error: schemas with different types can't be merged`;\n throw new Error(errMessage);\n }\n\n\n if (into.type === 'array') {\n console.warn('allOf: subschemas with type array are not supported yet');\n }\n\n // TODO: add check if can be merged correctly (no different properties with the same name)\n into.type = into.type || subSchema.type;\n if (into.type === 'object' && subSchema.properties) {\n into.properties || (into.properties = {});\n Object.assign(into.properties, subSchema.properties);\n Object.keys(subSchema.properties).forEach(propName => {\n if (!subSchema.properties[propName]._pointer) {\n subSchema.properties[propName]._pointer = subSchema._pointer ?\n JsonPointer.join(subSchema._pointer, ['properties', propName]) : null;\n }\n });\n }\n if (into.type === 'object' && subSchema.required) {\n into.required || (into.required = []);\n into.required.push(...subSchema.required);\n }\n // don't merge _pointer\n subSchema._pointer = null;\n defaults(into, subSchema);\n }\n into.allOf = null;\n }\n\n function traverse(obj) {\n if (obj === null || typeof(obj) !== 'object') {\n return;\n }\n\n for(var key in obj) {\n if (obj.hasOwnProperty(key)) {\n traverse(obj[key]);\n }\n }\n\n if (obj.allOf) {\n merge(obj, obj.allOf);\n }\n }\n\n traverse(schema);\n }\n\n /**\n * Used to prepare model based on component schema\n * @abstract\n */\n prepareModel() {}\n\n /**\n * Used to initialize component. Run after prepareModel\n * @abstract\n */\n init() {}\n\n /**\n + Used to destroy component\n * @abstract\n */\n destroy() {}\n}\n","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\nvar ObservableStrategy = (function () {\r\n function ObservableStrategy() {\r\n }\r\n ObservableStrategy.prototype.createSubscription = function (async, updateLatestValue) {\r\n return async_1.ObservableWrapper.subscribe(async, updateLatestValue, function (e) { throw e; });\r\n };\r\n ObservableStrategy.prototype.dispose = function (subscription) { async_1.ObservableWrapper.dispose(subscription); };\r\n ObservableStrategy.prototype.onDestroy = function (subscription) { async_1.ObservableWrapper.dispose(subscription); };\r\n return ObservableStrategy;\r\n}());\r\nvar PromiseStrategy = (function () {\r\n function PromiseStrategy() {\r\n }\r\n PromiseStrategy.prototype.createSubscription = function (async, updateLatestValue) {\r\n return async.then(updateLatestValue);\r\n };\r\n PromiseStrategy.prototype.dispose = function (subscription) { };\r\n PromiseStrategy.prototype.onDestroy = function (subscription) { };\r\n return PromiseStrategy;\r\n}());\r\nvar _promiseStrategy = new PromiseStrategy();\r\nvar _observableStrategy = new ObservableStrategy();\r\nvar __unused; // avoid unused import when Promise union types are erased\r\n/**\r\n * The `async` pipe subscribes to an Observable or Promise and returns the latest value it has\r\n * emitted.\r\n * When a new value is emitted, the `async` pipe marks the component to be checked for changes.\r\n *\r\n * ### Example\r\n *\r\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\r\n * promise.\r\n *\r\n * {@example core/pipes/ts/async_pipe/async_pipe_example.ts region='AsyncPipe'}\r\n *\r\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\r\n * to the view. Every 500ms, the `time` Observable updates the view with the current time.\r\n *\r\n * ```typescript\r\n * ```\r\n */\r\nvar AsyncPipe = (function () {\r\n function AsyncPipe(_ref) {\r\n /** @internal */\r\n this._latestValue = null;\r\n /** @internal */\r\n this._latestReturnedValue = null;\r\n /** @internal */\r\n this._subscription = null;\r\n /** @internal */\r\n this._obj = null;\r\n this._strategy = null;\r\n this._ref = _ref;\r\n }\r\n AsyncPipe.prototype.ngOnDestroy = function () {\r\n if (lang_1.isPresent(this._subscription)) {\r\n this._dispose();\r\n }\r\n };\r\n AsyncPipe.prototype.transform = function (obj) {\r\n if (lang_1.isBlank(this._obj)) {\r\n if (lang_1.isPresent(obj)) {\r\n this._subscribe(obj);\r\n }\r\n this._latestReturnedValue = this._latestValue;\r\n return this._latestValue;\r\n }\r\n if (obj !== this._obj) {\r\n this._dispose();\r\n return this.transform(obj);\r\n }\r\n if (this._latestValue === this._latestReturnedValue) {\r\n return this._latestReturnedValue;\r\n }\r\n else {\r\n this._latestReturnedValue = this._latestValue;\r\n return core_1.WrappedValue.wrap(this._latestValue);\r\n }\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._subscribe = function (obj) {\r\n var _this = this;\r\n this._obj = obj;\r\n this._strategy = this._selectStrategy(obj);\r\n this._subscription = this._strategy.createSubscription(obj, function (value) { return _this._updateLatestValue(obj, value); });\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._selectStrategy = function (obj) {\r\n if (lang_1.isPromise(obj)) {\r\n return _promiseStrategy;\r\n }\r\n else if (async_1.ObservableWrapper.isObservable(obj)) {\r\n return _observableStrategy;\r\n }\r\n else {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(AsyncPipe, obj);\r\n }\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._dispose = function () {\r\n this._strategy.dispose(this._subscription);\r\n this._latestValue = null;\r\n this._latestReturnedValue = null;\r\n this._subscription = null;\r\n this._obj = null;\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._updateLatestValue = function (async, value) {\r\n if (async === this._obj) {\r\n this._latestValue = value;\r\n this._ref.markForCheck();\r\n }\r\n };\r\n AsyncPipe = __decorate([\r\n // avoid unused import when Promise union types are erased\r\n core_1.Pipe({ name: 'async', pure: false }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [core_1.ChangeDetectorRef])\r\n ], AsyncPipe);\r\n return AsyncPipe;\r\n}());\r\nexports.AsyncPipe = AsyncPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvYXN5bmNfcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBQW1ELDBCQUEwQixDQUFDLENBQUE7QUFDOUUsc0JBQTBELDJCQUEyQixDQUFDLENBQUE7QUFDdEYscUJBQTJFLGVBQWUsQ0FBQyxDQUFBO0FBRTNGLGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRS9FO0lBQUE7SUFRQSxDQUFDO0lBUEMsK0NBQWtCLEdBQWxCLFVBQW1CLEtBQVUsRUFBRSxpQkFBc0I7UUFDbkQsTUFBTSxDQUFDLHlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBQSxDQUFDLElBQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsb0NBQU8sR0FBUCxVQUFRLFlBQWlCLElBQVUseUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3RSxzQ0FBUyxHQUFULFVBQVUsWUFBaUIsSUFBVSx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLHlCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFFRDtJQUFBO0lBUUEsQ0FBQztJQVBDLDRDQUFrQixHQUFsQixVQUFtQixLQUFtQixFQUFFLGlCQUFrQztRQUN4RSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQ0FBTyxHQUFQLFVBQVEsWUFBaUIsSUFBUyxDQUFDO0lBRW5DLG1DQUFTLEdBQVQsVUFBVSxZQUFpQixJQUFTLENBQUM7SUFDdkMsc0JBQUM7QUFBRCxDQUFDLEFBUkQsSUFRQztBQUVELElBQUksZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUM3QyxJQUFJLG1CQUFtQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztBQUNuRCxJQUFJLFFBQXNCLENBQUMsQ0FBRSwwREFBMEQ7QUFFdkY7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBR0g7SUFhRSxtQkFBWSxJQUF1QjtRQVpuQyxnQkFBZ0I7UUFDaEIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZ0JBQWdCO1FBQ2hCLHlCQUFvQixHQUFXLElBQUksQ0FBQztRQUVwQyxnQkFBZ0I7UUFDaEIsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0IsZ0JBQWdCO1FBQ2hCLFNBQUksR0FBcUQsSUFBSSxDQUFDO1FBQ3RELGNBQVMsR0FBUSxJQUFJLENBQUM7UUFHUyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUFDLENBQUM7SUFFMUQsK0JBQVcsR0FBWDtRQUNFLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCw2QkFBUyxHQUFULFVBQVUsR0FBcUQ7UUFDN0QsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNCLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNuQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM5QyxNQUFNLENBQUMsbUJBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLDhCQUFVLEdBQVYsVUFBVyxHQUFxRDtRQUFoRSxpQkFLQztRQUpDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQ2xELEdBQUcsRUFBRSxVQUFDLEtBQWEsSUFBSyxPQUFBLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQW5DLENBQW1DLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLG1DQUFlLEdBQWYsVUFBZ0IsR0FBcUQ7UUFDbkUsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQzFCLENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMseUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDN0IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxJQUFJLDhEQUE0QixDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtJQUNoQiw0QkFBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixzQ0FBa0IsR0FBbEIsVUFBbUIsS0FBVSxFQUFFLEtBQWE7UUFDMUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUEvRUg7UUFwQjZCLDBEQUEwRDtRQW9CdEYsV0FBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDbEMsaUJBQVUsRUFBRTs7aUJBQUE7SUErRWIsZ0JBQUM7QUFBRCxDQUFDLEFBOUVELElBOEVDO0FBOUVZLGlCQUFTLFlBOEVyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIGlzUHJvbWlzZSwgQ09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge09ic2VydmFibGVXcmFwcGVyLCBPYnNlcnZhYmxlLCBFdmVudEVtaXR0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtQaXBlLCBJbmplY3RhYmxlLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95LCBXcmFwcGVkVmFsdWV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQge0ludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb259IGZyb20gJy4vaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbic7XG5cbmNsYXNzIE9ic2VydmFibGVTdHJhdGVneSB7XG4gIGNyZWF0ZVN1YnNjcmlwdGlvbihhc3luYzogYW55LCB1cGRhdGVMYXRlc3RWYWx1ZTogYW55KTogYW55IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKGFzeW5jLCB1cGRhdGVMYXRlc3RWYWx1ZSwgZSA9PiB7IHRocm93IGU7IH0pO1xuICB9XG5cbiAgZGlzcG9zZShzdWJzY3JpcHRpb246IGFueSk6IHZvaWQgeyBPYnNlcnZhYmxlV3JhcHBlci5kaXNwb3NlKHN1YnNjcmlwdGlvbik7IH1cblxuICBvbkRlc3Ryb3koc3Vic2NyaXB0aW9uOiBhbnkpOiB2b2lkIHsgT2JzZXJ2YWJsZVdyYXBwZXIuZGlzcG9zZShzdWJzY3JpcHRpb24pOyB9XG59XG5cbmNsYXNzIFByb21pc2VTdHJhdGVneSB7XG4gIGNyZWF0ZVN1YnNjcmlwdGlvbihhc3luYzogUHJvbWlzZTxhbnk+LCB1cGRhdGVMYXRlc3RWYWx1ZTogKHY6IGFueSkgPT4gYW55KTogYW55IHtcbiAgICByZXR1cm4gYXN5bmMudGhlbih1cGRhdGVMYXRlc3RWYWx1ZSk7XG4gIH1cblxuICBkaXNwb3NlKHN1YnNjcmlwdGlvbjogYW55KTogdm9pZCB7fVxuXG4gIG9uRGVzdHJveShzdWJzY3JpcHRpb246IGFueSk6IHZvaWQge31cbn1cblxudmFyIF9wcm9taXNlU3RyYXRlZ3kgPSBuZXcgUHJvbWlzZVN0cmF0ZWd5KCk7XG52YXIgX29ic2VydmFibGVTdHJhdGVneSA9IG5ldyBPYnNlcnZhYmxlU3RyYXRlZ3koKTtcbnZhciBfX3VudXNlZDogUHJvbWlzZTxhbnk+OyAgLy8gYXZvaWQgdW51c2VkIGltcG9ydCB3aGVuIFByb21pc2UgdW5pb24gdHlwZXMgYXJlIGVyYXNlZFxuXG4vKipcbiAqIFRoZSBgYXN5bmNgIHBpcGUgc3Vic2NyaWJlcyB0byBhbiBPYnNlcnZhYmxlIG9yIFByb21pc2UgYW5kIHJldHVybnMgdGhlIGxhdGVzdCB2YWx1ZSBpdCBoYXNcbiAqIGVtaXR0ZWQuXG4gKiBXaGVuIGEgbmV3IHZhbHVlIGlzIGVtaXR0ZWQsIHRoZSBgYXN5bmNgIHBpcGUgbWFya3MgdGhlIGNvbXBvbmVudCB0byBiZSBjaGVja2VkIGZvciBjaGFuZ2VzLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogVGhpcyBleGFtcGxlIGJpbmRzIGEgYFByb21pc2VgIHRvIHRoZSB2aWV3LiBDbGlja2luZyB0aGUgYFJlc29sdmVgIGJ1dHRvbiByZXNvbHZlcyB0aGVcbiAqIHByb21pc2UuXG4gKlxuICoge0BleGFtcGxlIGNvcmUvcGlwZXMvdHMvYXN5bmNfcGlwZS9hc3luY19waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdBc3luY1BpcGUnfVxuICpcbiAqIEl0J3MgYWxzbyBwb3NzaWJsZSB0byB1c2UgYGFzeW5jYCB3aXRoIE9ic2VydmFibGVzLiBUaGUgZXhhbXBsZSBiZWxvdyBiaW5kcyB0aGUgYHRpbWVgIE9ic2VydmFibGVcbiAqIHRvIHRoZSB2aWV3LiBFdmVyeSA1MDBtcywgdGhlIGB0aW1lYCBPYnNlcnZhYmxlIHVwZGF0ZXMgdGhlIHZpZXcgd2l0aCB0aGUgY3VycmVudCB0aW1lLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGBgYFxuICovXG5AUGlwZSh7bmFtZTogJ2FzeW5jJywgcHVyZTogZmFsc2V9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFzeW5jUGlwZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2xhdGVzdFZhbHVlOiBPYmplY3QgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9sYXRlc3RSZXR1cm5lZFZhbHVlOiBPYmplY3QgPSBudWxsO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3N1YnNjcmlwdGlvbjogT2JqZWN0ID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfb2JqOiBPYnNlcnZhYmxlPGFueT58IFByb21pc2U8YW55PnwgRXZlbnRFbWl0dGVyPGFueT4gPSBudWxsO1xuICBwcml2YXRlIF9zdHJhdGVneTogYW55ID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgX3JlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIGNvbnN0cnVjdG9yKF9yZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IHRoaXMuX3JlZiA9IF9yZWY7IH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3N1YnNjcmlwdGlvbikpIHtcbiAgICAgIHRoaXMuX2Rpc3Bvc2UoKTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2Zvcm0ob2JqOiBPYnNlcnZhYmxlPGFueT58IFByb21pc2U8YW55PnwgRXZlbnRFbWl0dGVyPGFueT4pOiBhbnkge1xuICAgIGlmIChpc0JsYW5rKHRoaXMuX29iaikpIHtcbiAgICAgIGlmIChpc1ByZXNlbnQob2JqKSkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmUob2JqKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUgPSB0aGlzLl9sYXRlc3RWYWx1ZTtcbiAgICAgIHJldHVybiB0aGlzLl9sYXRlc3RWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAob2JqICE9PSB0aGlzLl9vYmopIHtcbiAgICAgIHRoaXMuX2Rpc3Bvc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybShvYmopO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9sYXRlc3RWYWx1ZSA9PT0gdGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUgPSB0aGlzLl9sYXRlc3RWYWx1ZTtcbiAgICAgIHJldHVybiBXcmFwcGVkVmFsdWUud3JhcCh0aGlzLl9sYXRlc3RWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc3Vic2NyaWJlKG9iajogT2JzZXJ2YWJsZTxhbnk+fCBQcm9taXNlPGFueT58IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5fb2JqID0gb2JqO1xuICAgIHRoaXMuX3N0cmF0ZWd5ID0gdGhpcy5fc2VsZWN0U3RyYXRlZ3kob2JqKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24oXG4gICAgICAgIG9iaiwgKHZhbHVlOiBPYmplY3QpID0+IHRoaXMuX3VwZGF0ZUxhdGVzdFZhbHVlKG9iaiwgdmFsdWUpKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NlbGVjdFN0cmF0ZWd5KG9iajogT2JzZXJ2YWJsZTxhbnk+fCBQcm9taXNlPGFueT58IEV2ZW50RW1pdHRlcjxhbnk+KTogYW55IHtcbiAgICBpZiAoaXNQcm9taXNlKG9iaikpIHtcbiAgICAgIHJldHVybiBfcHJvbWlzZVN0cmF0ZWd5O1xuICAgIH0gZWxzZSBpZiAoT2JzZXJ2YWJsZVdyYXBwZXIuaXNPYnNlcnZhYmxlKG9iaikpIHtcbiAgICAgIHJldHVybiBfb2JzZXJ2YWJsZVN0cmF0ZWd5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihBc3luY1BpcGUsIG9iaik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdHJhdGVneS5kaXNwb3NlKHRoaXMuX3N1YnNjcmlwdGlvbik7XG4gICAgdGhpcy5fbGF0ZXN0VmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fb2JqID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VwZGF0ZUxhdGVzdFZhbHVlKGFzeW5jOiBhbnksIHZhbHVlOiBPYmplY3QpIHtcbiAgICBpZiAoYXN5bmMgPT09IHRoaXMuX29iaikge1xuICAgICAgdGhpcy5fbGF0ZXN0VmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Implements uppercase transforms to text.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/lowerupper_pipe/lowerupper_pipe_example.ts region='LowerUpperPipe'}\r\n */\r\nvar UpperCasePipe = (function () {\r\n function UpperCasePipe() {\r\n }\r\n UpperCasePipe.prototype.transform = function (value) {\r\n if (lang_1.isBlank(value))\r\n return value;\r\n if (!lang_1.isString(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(UpperCasePipe, value);\r\n }\r\n return value.toUpperCase();\r\n };\r\n UpperCasePipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'uppercase' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], UpperCasePipe);\r\n return UpperCasePipe;\r\n}());\r\nexports.UpperCasePipe = UpperCasePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBwZXJjYXNlX3BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzL3VwcGVyY2FzZV9waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSxxQkFBNEQsZUFBZSxDQUFDLENBQUE7QUFDNUUsZ0RBQTJDLG1DQUFtQyxDQUFDLENBQUE7QUFFL0U7Ozs7OztHQU1HO0FBSUg7SUFBQTtJQVFBLENBQUM7SUFQQyxpQ0FBUyxHQUFULFVBQVUsS0FBYTtRQUNyQixFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNLElBQUksOERBQTRCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFWSDtRQUFDLFlBQUssRUFBRTtRQUNQLFdBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQztRQUN6QixpQkFBVSxFQUFFOztxQkFBQTtJQVNiLG9CQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFSWSxxQkFBYSxnQkFRekIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNTdHJpbmcsIENPTlNULCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBXcmFwcGVkVmFsdWUsIEluamVjdGFibGUsIFBpcGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9ufSBmcm9tICcuL2ludmFsaWRfcGlwZV9hcmd1bWVudF9leGNlcHRpb24nO1xuXG4vKipcbiAqIEltcGxlbWVudHMgdXBwZXJjYXNlIHRyYW5zZm9ybXMgdG8gdGV4dC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL2xvd2VydXBwZXJfcGlwZS9sb3dlcnVwcGVyX3BpcGVfZXhhbXBsZS50cyByZWdpb249J0xvd2VyVXBwZXJQaXBlJ31cbiAqL1xuQENPTlNUKClcbkBQaXBlKHtuYW1lOiAndXBwZXJjYXNlJ30pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXBwZXJDYXNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzQmxhbmsodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgaWYgKCFpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFVwcGVyQ2FzZVBpcGUsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Transforms text to lowercase.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/lowerupper_pipe/lowerupper_pipe_example.ts region='LowerUpperPipe'}\r\n */\r\nvar LowerCasePipe = (function () {\r\n function LowerCasePipe() {\r\n }\r\n LowerCasePipe.prototype.transform = function (value) {\r\n if (lang_1.isBlank(value))\r\n return value;\r\n if (!lang_1.isString(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(LowerCasePipe, value);\r\n }\r\n return value.toLowerCase();\r\n };\r\n LowerCasePipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'lowercase' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], LowerCasePipe);\r\n return LowerCasePipe;\r\n}());\r\nexports.LowerCasePipe = LowerCasePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93ZXJjYXNlX3BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzL2xvd2VyY2FzZV9waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSxxQkFBNEQsZUFBZSxDQUFDLENBQUE7QUFDNUUsZ0RBQTJDLG1DQUFtQyxDQUFDLENBQUE7QUFFL0U7Ozs7OztHQU1HO0FBSUg7SUFBQTtJQVFBLENBQUM7SUFQQyxpQ0FBUyxHQUFULFVBQVUsS0FBYTtRQUNyQixFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixNQUFNLElBQUksOERBQTRCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFWSDtRQUFDLFlBQUssRUFBRTtRQUNQLFdBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQztRQUN6QixpQkFBVSxFQUFFOztxQkFBQTtJQVNiLG9CQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFSWSxxQkFBYSxnQkFRekIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNTdHJpbmcsIENPTlNULCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlVHJhbnNmb3JtLCBXcmFwcGVkVmFsdWUsIFBpcGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9ufSBmcm9tICcuL2ludmFsaWRfcGlwZV9hcmd1bWVudF9leGNlcHRpb24nO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgdGV4dCB0byBsb3dlcmNhc2UuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9waXBlcy90cy9sb3dlcnVwcGVyX3BpcGUvbG93ZXJ1cHBlcl9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdMb3dlclVwcGVyUGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ2xvd2VyY2FzZSd9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvd2VyQ2FzZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc0JsYW5rKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIGlmICghaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihMb3dlckNhc2VQaXBlLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\n/**\r\n * Transforms any input value using `JSON.stringify`. Useful for debugging.\r\n *\r\n * ### Example\r\n * {@example core/pipes/ts/json_pipe/json_pipe_example.ts region='JsonPipe'}\r\n */\r\nvar JsonPipe = (function () {\r\n function JsonPipe() {\r\n }\r\n JsonPipe.prototype.transform = function (value) { return lang_1.Json.stringify(value); };\r\n JsonPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'json', pure: false }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], JsonPipe);\r\n return JsonPipe;\r\n}());\r\nexports.JsonPipe = JsonPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9qc29uX3BpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUE4QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ3pFLHFCQUE0RCxlQUFlLENBQUMsQ0FBQTtBQUU1RTs7Ozs7R0FLRztBQUlIO0lBQUE7SUFFQSxDQUFDO0lBREMsNEJBQVMsR0FBVCxVQUFVLEtBQVUsSUFBWSxNQUFNLENBQUMsV0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFKakU7UUFBQyxZQUFLLEVBQUU7UUFDUCxXQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUNqQyxpQkFBVSxFQUFFOztnQkFBQTtJQUdiLGVBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUZZLGdCQUFRLFdBRXBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudCwgSnNvbiwgQ09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0luamVjdGFibGUsIFBpcGVUcmFuc2Zvcm0sIFdyYXBwZWRWYWx1ZSwgUGlwZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5cbi8qKlxuICogVHJhbnNmb3JtcyBhbnkgaW5wdXQgdmFsdWUgdXNpbmcgYEpTT04uc3RyaW5naWZ5YC4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL2pzb25fcGlwZS9qc29uX3BpcGVfZXhhbXBsZS50cyByZWdpb249J0pzb25QaXBlJ31cbiAqL1xuQENPTlNUKClcbkBQaXBlKHtuYW1lOiAnanNvbicsIHB1cmU6IGZhbHNlfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKc29uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7IHJldHVybiBKc29uLnN0cmluZ2lmeSh2YWx1ZSk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Creates a new List or String containing only a subset (slice) of the\r\n * elements.\r\n *\r\n * The starting index of the subset to return is specified by the `start` parameter.\r\n *\r\n * The ending index of the subset to return is specified by the optional `end` parameter.\r\n *\r\n * ### Usage\r\n *\r\n * expression | slice:start[:end]\r\n *\r\n * All behavior is based on the expected behavior of the JavaScript API\r\n * Array.prototype.slice() and String.prototype.slice()\r\n *\r\n * Where the input expression is a [List] or [String], and `start` is:\r\n *\r\n * - **a positive integer**: return the item at _start_ index and all items after\r\n * in the list or string expression.\r\n * - **a negative integer**: return the item at _start_ index from the end and all items after\r\n * in the list or string expression.\r\n * - **`|start|` greater than the size of the expression**: return an empty list or string.\r\n * - **`|start|` negative greater than the size of the expression**: return entire list or\r\n * string expression.\r\n *\r\n * and where `end` is:\r\n *\r\n * - **omitted**: return all items until the end of the input\r\n * - **a positive integer**: return all items before _end_ index of the list or string\r\n * expression.\r\n * - **a negative integer**: return all items before _end_ index from the end of the list\r\n * or string expression.\r\n *\r\n * When operating on a [List], the returned list is always a copy even when all\r\n * the elements are being returned.\r\n *\r\n * ## List Example\r\n *\r\n * This `ngFor` example:\r\n *\r\n * {@example core/pipes/ts/slice_pipe/slice_pipe_example.ts region='SlicePipe_list'}\r\n *\r\n * produces the following:\r\n *\r\n * <li>b</li>\r\n * <li>c</li>\r\n *\r\n * ## String Examples\r\n *\r\n * {@example core/pipes/ts/slice_pipe/slice_pipe_example.ts region='SlicePipe_string'}\r\n */\r\nvar SlicePipe = (function () {\r\n function SlicePipe() {\r\n }\r\n SlicePipe.prototype.transform = function (value, start, end) {\r\n if (end === void 0) { end = null; }\r\n if (!this.supports(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(SlicePipe, value);\r\n }\r\n if (lang_1.isBlank(value))\r\n return value;\r\n if (lang_1.isString(value)) {\r\n return lang_1.StringWrapper.slice(value, start, end);\r\n }\r\n return collection_1.ListWrapper.slice(value, start, end);\r\n };\r\n SlicePipe.prototype.supports = function (obj) { return lang_1.isString(obj) || lang_1.isArray(obj); };\r\n SlicePipe = __decorate([\r\n core_1.Pipe({ name: 'slice', pure: false }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], SlicePipe);\r\n return SlicePipe;\r\n}());\r\nexports.SlicePipe = SlicePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2VfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvc2xpY2VfcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBQStELDBCQUEwQixDQUFDLENBQUE7QUFDMUYsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFDM0QscUJBQTRELGVBQWUsQ0FBQyxDQUFBO0FBQzVFLGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtERztBQUlIO0lBQUE7SUFhQSxDQUFDO0lBWkMsNkJBQVMsR0FBVCxVQUFVLEtBQVUsRUFBRSxLQUFhLEVBQUUsR0FBa0I7UUFBbEIsbUJBQWtCLEdBQWxCLFVBQWtCO1FBQ3JELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxJQUFJLDhEQUE0QixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxFQUFFLENBQUMsQ0FBQyxlQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxvQkFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxNQUFNLENBQUMsd0JBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sNEJBQVEsR0FBaEIsVUFBaUIsR0FBUSxJQUFhLE1BQU0sQ0FBQyxlQUFRLENBQUMsR0FBRyxDQUFDLElBQUksY0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQWQvRTtRQUFDLFdBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ2xDLGlCQUFVLEVBQUU7O2lCQUFBO0lBY2IsZ0JBQUM7QUFBRCxDQUFDLEFBYkQsSUFhQztBQWJZLGlCQUFTLFlBYXJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzQmxhbmssIGlzU3RyaW5nLCBpc0FycmF5LCBTdHJpbmdXcmFwcGVyLCBDT05TVH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0luamVjdGFibGUsIFBpcGVUcmFuc2Zvcm0sIFdyYXBwZWRWYWx1ZSwgUGlwZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0ludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb259IGZyb20gJy4vaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBMaXN0IG9yIFN0cmluZyBjb250YWluaW5nIG9ubHkgYSBzdWJzZXQgKHNsaWNlKSBvZiB0aGVcbiAqIGVsZW1lbnRzLlxuICpcbiAqIFRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgc3Vic2V0IHRvIHJldHVybiBpcyBzcGVjaWZpZWQgYnkgdGhlIGBzdGFydGAgcGFyYW1ldGVyLlxuICpcbiAqIFRoZSBlbmRpbmcgaW5kZXggb2YgdGhlIHN1YnNldCB0byByZXR1cm4gaXMgc3BlY2lmaWVkIGJ5IHRoZSBvcHRpb25hbCBgZW5kYCBwYXJhbWV0ZXIuXG4gKlxuICogIyMjIFVzYWdlXG4gKlxuICogICAgIGV4cHJlc3Npb24gfCBzbGljZTpzdGFydFs6ZW5kXVxuICpcbiAqIEFsbCBiZWhhdmlvciBpcyBiYXNlZCBvbiB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Igb2YgdGhlIEphdmFTY3JpcHQgQVBJXG4gKiBBcnJheS5wcm90b3R5cGUuc2xpY2UoKSBhbmQgU3RyaW5nLnByb3RvdHlwZS5zbGljZSgpXG4gKlxuICogV2hlcmUgdGhlIGlucHV0IGV4cHJlc3Npb24gaXMgYSBbTGlzdF0gb3IgW1N0cmluZ10sIGFuZCBgc3RhcnRgIGlzOlxuICpcbiAqIC0gKiphIHBvc2l0aXZlIGludGVnZXIqKjogcmV0dXJuIHRoZSBpdGVtIGF0IF9zdGFydF8gaW5kZXggYW5kIGFsbCBpdGVtcyBhZnRlclxuICogaW4gdGhlIGxpc3Qgb3Igc3RyaW5nIGV4cHJlc3Npb24uXG4gKiAtICoqYSBuZWdhdGl2ZSBpbnRlZ2VyKio6IHJldHVybiB0aGUgaXRlbSBhdCBfc3RhcnRfIGluZGV4IGZyb20gdGhlIGVuZCBhbmQgYWxsIGl0ZW1zIGFmdGVyXG4gKiBpbiB0aGUgbGlzdCBvciBzdHJpbmcgZXhwcmVzc2lvbi5cbiAqIC0gKipgfHN0YXJ0fGAgZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBleHByZXNzaW9uKio6IHJldHVybiBhbiBlbXB0eSBsaXN0IG9yIHN0cmluZy5cbiAqIC0gKipgfHN0YXJ0fGAgbmVnYXRpdmUgZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBleHByZXNzaW9uKio6IHJldHVybiBlbnRpcmUgbGlzdCBvclxuICogc3RyaW5nIGV4cHJlc3Npb24uXG4gKlxuICogYW5kIHdoZXJlIGBlbmRgIGlzOlxuICpcbiAqIC0gKipvbWl0dGVkKio6IHJldHVybiBhbGwgaXRlbXMgdW50aWwgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAqIC0gKiphIHBvc2l0aXZlIGludGVnZXIqKjogcmV0dXJuIGFsbCBpdGVtcyBiZWZvcmUgX2VuZF8gaW5kZXggb2YgdGhlIGxpc3Qgb3Igc3RyaW5nXG4gKiBleHByZXNzaW9uLlxuICogLSAqKmEgbmVnYXRpdmUgaW50ZWdlcioqOiByZXR1cm4gYWxsIGl0ZW1zIGJlZm9yZSBfZW5kXyBpbmRleCBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAqIG9yIHN0cmluZyBleHByZXNzaW9uLlxuICpcbiAqIFdoZW4gb3BlcmF0aW5nIG9uIGEgW0xpc3RdLCB0aGUgcmV0dXJuZWQgbGlzdCBpcyBhbHdheXMgYSBjb3B5IGV2ZW4gd2hlbiBhbGxcbiAqIHRoZSBlbGVtZW50cyBhcmUgYmVpbmcgcmV0dXJuZWQuXG4gKlxuICogIyMgTGlzdCBFeGFtcGxlXG4gKlxuICogVGhpcyBgbmdGb3JgIGV4YW1wbGU6XG4gKlxuICoge0BleGFtcGxlIGNvcmUvcGlwZXMvdHMvc2xpY2VfcGlwZS9zbGljZV9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdTbGljZVBpcGVfbGlzdCd9XG4gKlxuICogcHJvZHVjZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgICAgPGxpPmI8L2xpPlxuICogICAgIDxsaT5jPC9saT5cbiAqXG4gKiAjIyBTdHJpbmcgRXhhbXBsZXNcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9waXBlcy90cy9zbGljZV9waXBlL3NsaWNlX3BpcGVfZXhhbXBsZS50cyByZWdpb249J1NsaWNlUGlwZV9zdHJpbmcnfVxuICovXG5cbkBQaXBlKHtuYW1lOiAnc2xpY2UnLCBwdXJlOiBmYWxzZX0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2xpY2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciA9IG51bGwpOiBhbnkge1xuICAgIGlmICghdGhpcy5zdXBwb3J0cyh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFNsaWNlUGlwZSwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5zbGljZSh2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiBMaXN0V3JhcHBlci5zbGljZSh2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gIH1cblxuICBwcml2YXRlIHN1cHBvcnRzKG9iajogYW55KTogYm9vbGVhbiB7IHJldHVybiBpc1N0cmluZyhvYmopIHx8IGlzQXJyYXkob2JqKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar intl_1 = require('angular2/src/facade/intl');\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n// TODO: move to a global configurable location along with other i18n components.\r\nvar defaultLocale = 'en-US';\r\n/**\r\n * Formats a date value to a string based on the requested format.\r\n *\r\n * WARNINGS:\r\n * - this pipe is marked as pure hence it will not be re-evaluated when the input is mutated.\r\n * Instead users should treat the date as an immutable object and change the reference when the\r\n * pipe needs to re-run (this is to avoid reformatting the date on every change detection run\r\n * which would be an expensive operation).\r\n * - this pipe uses the Internationalization API. Therefore it is only reliable in Chrome and Opera\r\n * browsers.\r\n *\r\n * ## Usage\r\n *\r\n * expression | date[:format]\r\n *\r\n * where `expression` is a date object or a number (milliseconds since UTC epoch) and\r\n * `format` indicates which date/time components to include:\r\n *\r\n * | Component | Symbol | Short Form | Long Form | Numeric | 2-digit |\r\n * |-----------|:------:|--------------|-------------------|-----------|-----------|\r\n * | era | G | G (AD) | GGGG (Anno Domini)| - | - |\r\n * | year | y | - | - | y (2015) | yy (15) |\r\n * | month | M | MMM (Sep) | MMMM (September) | M (9) | MM (09) |\r\n * | day | d | - | - | d (3) | dd (03) |\r\n * | weekday | E | EEE (Sun) | EEEE (Sunday) | - | - |\r\n * | hour | j | - | - | j (13) | jj (13) |\r\n * | hour12 | h | - | - | h (1 PM) | hh (01 PM)|\r\n * | hour24 | H | - | - | H (13) | HH (13) |\r\n * | minute | m | - | - | m (5) | mm (05) |\r\n * | second | s | - | - | s (9) | ss (09) |\r\n * | timezone | z | - | z (Pacific Standard Time)| - | - |\r\n * | timezone | Z | Z (GMT-8:00) | - | - | - |\r\n *\r\n * In javascript, only the components specified will be respected (not the ordering,\r\n * punctuations, ...) and details of the formatting will be dependent on the locale.\r\n * On the other hand in Dart version, you can also include quoted text as well as some extra\r\n * date/time components such as quarter. For more information see:\r\n * https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.DateFormat.\r\n *\r\n * `format` can also be one of the following predefined formats:\r\n *\r\n * - `'medium'`: equivalent to `'yMMMdjms'` (e.g. Sep 3, 2010, 12:05:08 PM for en-US)\r\n * - `'short'`: equivalent to `'yMdjm'` (e.g. 9/3/2010, 12:05 PM for en-US)\r\n * - `'fullDate'`: equivalent to `'yMMMMEEEEd'` (e.g. Friday, September 3, 2010 for en-US)\r\n * - `'longDate'`: equivalent to `'yMMMMd'` (e.g. September 3, 2010)\r\n * - `'mediumDate'`: equivalent to `'yMMMd'` (e.g. Sep 3, 2010 for en-US)\r\n * - `'shortDate'`: equivalent to `'yMd'` (e.g. 9/3/2010 for en-US)\r\n * - `'mediumTime'`: equivalent to `'jms'` (e.g. 12:05:08 PM for en-US)\r\n * - `'shortTime'`: equivalent to `'jm'` (e.g. 12:05 PM for en-US)\r\n *\r\n * Timezone of the formatted text will be the local system timezone of the end-users machine.\r\n *\r\n * ### Examples\r\n *\r\n * Assuming `dateObj` is (year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11)\r\n * in the _local_ time and locale is 'en-US':\r\n *\r\n * ```\r\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\r\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\r\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\r\n * {{ dateObj | date:'mmss' }} // output is '43:11'\r\n * ```\r\n *\r\n * {@example core/pipes/ts/date_pipe/date_pipe_example.ts region='DatePipe'}\r\n */\r\nvar DatePipe = (function () {\r\n function DatePipe() {\r\n }\r\n DatePipe.prototype.transform = function (value, pattern) {\r\n if (pattern === void 0) { pattern = 'mediumDate'; }\r\n if (lang_1.isBlank(value))\r\n return null;\r\n if (!this.supports(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(DatePipe, value);\r\n }\r\n if (lang_1.isNumber(value)) {\r\n value = lang_1.DateWrapper.fromMillis(value);\r\n }\r\n if (collection_1.StringMapWrapper.contains(DatePipe._ALIASES, pattern)) {\r\n pattern = collection_1.StringMapWrapper.get(DatePipe._ALIASES, pattern);\r\n }\r\n return intl_1.DateFormatter.format(value, defaultLocale, pattern);\r\n };\r\n DatePipe.prototype.supports = function (obj) { return lang_1.isDate(obj) || lang_1.isNumber(obj); };\r\n /** @internal */\r\n DatePipe._ALIASES = {\r\n 'medium': 'yMMMdjms',\r\n 'short': 'yMdjm',\r\n 'fullDate': 'yMMMMEEEEd',\r\n 'longDate': 'yMMMMd',\r\n 'mediumDate': 'yMMMd',\r\n 'shortDate': 'yMd',\r\n 'mediumTime': 'jms',\r\n 'shortTime': 'jm'\r\n };\r\n DatePipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'date', pure: true }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DatePipe);\r\n return DatePipe;\r\n}());\r\nexports.DatePipe = DatePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZV9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9kYXRlX3BpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQVNPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMscUJBQTRCLDBCQUEwQixDQUFDLENBQUE7QUFDdkQscUJBQTRELGVBQWUsQ0FBQyxDQUFBO0FBQzVFLDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdFLGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRy9FLGlGQUFpRjtBQUNqRixJQUFJLGFBQWEsR0FBVyxPQUFPLENBQUM7QUFFcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUVHO0FBSUg7SUFBQTtJQStCQSxDQUFDO0lBakJDLDRCQUFTLEdBQVQsVUFBVSxLQUFVLEVBQUUsT0FBOEI7UUFBOUIsdUJBQThCLEdBQTlCLHNCQUE4QjtRQUNsRCxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRWhDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxJQUFJLDhEQUE0QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsZUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFLLEdBQUcsa0JBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLDZCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRCxPQUFPLEdBQVcsNkJBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELE1BQU0sQ0FBQyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCwyQkFBUSxHQUFSLFVBQVMsR0FBUSxJQUFhLE1BQU0sQ0FBQyxhQUFNLENBQUMsR0FBRyxDQUFDLElBQUksZUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQTdCcEUsZ0JBQWdCO0lBQ1QsaUJBQVEsR0FBNEI7UUFDekMsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLE9BQU87UUFDaEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsWUFBWSxFQUFFLE9BQU87UUFDckIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztJQWRKO1FBQUMsWUFBSyxFQUFFO1FBQ1AsV0FBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDaEMsaUJBQVUsRUFBRTs7Z0JBQUE7SUFnQ2IsZUFBQztBQUFELENBQUMsQUEvQkQsSUErQkM7QUEvQlksZ0JBQVEsV0ErQnBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0RhdGUsXG4gIGlzTnVtYmVyLFxuICBpc1ByZXNlbnQsXG4gIERhdGUsXG4gIERhdGVXcmFwcGVyLFxuICBDT05TVCxcbiAgaXNCbGFuayxcbiAgRnVuY3Rpb25XcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0RhdGVGb3JtYXR0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvaW50bCc7XG5pbXBvcnQge1BpcGVUcmFuc2Zvcm0sIFdyYXBwZWRWYWx1ZSwgUGlwZSwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5pbXBvcnQge0ludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb259IGZyb20gJy4vaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbic7XG5cblxuLy8gVE9ETzogbW92ZSB0byBhIGdsb2JhbCBjb25maWd1cmFibGUgbG9jYXRpb24gYWxvbmcgd2l0aCBvdGhlciBpMThuIGNvbXBvbmVudHMuXG52YXIgZGVmYXVsdExvY2FsZTogc3RyaW5nID0gJ2VuLVVTJztcblxuLyoqXG4gKiBGb3JtYXRzIGEgZGF0ZSB2YWx1ZSB0byBhIHN0cmluZyBiYXNlZCBvbiB0aGUgcmVxdWVzdGVkIGZvcm1hdC5cbiAqXG4gKiBXQVJOSU5HUzpcbiAqIC0gdGhpcyBwaXBlIGlzIG1hcmtlZCBhcyBwdXJlIGhlbmNlIGl0IHdpbGwgbm90IGJlIHJlLWV2YWx1YXRlZCB3aGVuIHRoZSBpbnB1dCBpcyBtdXRhdGVkLlxuICogICBJbnN0ZWFkIHVzZXJzIHNob3VsZCB0cmVhdCB0aGUgZGF0ZSBhcyBhbiBpbW11dGFibGUgb2JqZWN0IGFuZCBjaGFuZ2UgdGhlIHJlZmVyZW5jZSB3aGVuIHRoZVxuICogICBwaXBlIG5lZWRzIHRvIHJlLXJ1biAodGhpcyBpcyB0byBhdm9pZCByZWZvcm1hdHRpbmcgdGhlIGRhdGUgb24gZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBydW5cbiAqICAgd2hpY2ggd291bGQgYmUgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbikuXG4gKiAtIHRoaXMgcGlwZSB1c2VzIHRoZSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkuIFRoZXJlZm9yZSBpdCBpcyBvbmx5IHJlbGlhYmxlIGluIENocm9tZSBhbmQgT3BlcmFcbiAqICAgYnJvd3NlcnMuXG4gKlxuICogIyMgVXNhZ2VcbiAqXG4gKiAgICAgZXhwcmVzc2lvbiB8IGRhdGVbOmZvcm1hdF1cbiAqXG4gKiB3aGVyZSBgZXhwcmVzc2lvbmAgaXMgYSBkYXRlIG9iamVjdCBvciBhIG51bWJlciAobWlsbGlzZWNvbmRzIHNpbmNlIFVUQyBlcG9jaCkgYW5kXG4gKiBgZm9ybWF0YCBpbmRpY2F0ZXMgd2hpY2ggZGF0ZS90aW1lIGNvbXBvbmVudHMgdG8gaW5jbHVkZTpcbiAqXG4gKiAgfCBDb21wb25lbnQgfCBTeW1ib2wgfCBTaG9ydCBGb3JtICAgfCBMb25nIEZvcm0gICAgICAgICB8IE51bWVyaWMgICB8IDItZGlnaXQgICB8XG4gKiAgfC0tLS0tLS0tLS0tfDotLS0tLS06fC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18XG4gKiAgfCBlcmEgICAgICAgfCAgIEcgICAgfCBHIChBRCkgICAgICAgfCBHR0dHIChBbm5vIERvbWluaSl8IC0gICAgICAgICB8IC0gICAgICAgICB8XG4gKiAgfCB5ZWFyICAgICAgfCAgIHkgICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IHkgKDIwMTUpICB8IHl5ICgxNSkgICB8XG4gKiAgfCBtb250aCAgICAgfCAgIE0gICAgfCBNTU0gKFNlcCkgICAgfCBNTU1NIChTZXB0ZW1iZXIpICB8IE0gKDkpICAgICB8IE1NICgwOSkgICB8XG4gKiAgfCBkYXkgICAgICAgfCAgIGQgICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IGQgKDMpICAgICB8IGRkICgwMykgICB8XG4gKiAgfCB3ZWVrZGF5ICAgfCAgIEUgICAgfCBFRUUgKFN1bikgICAgfCBFRUVFIChTdW5kYXkpICAgICB8IC0gICAgICAgICB8IC0gICAgICAgICB8XG4gKiAgfCBob3VyICAgICAgfCAgIGogICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IGogKDEzKSAgICB8IGpqICgxMykgICB8XG4gKiAgfCBob3VyMTIgICAgfCAgIGggICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IGggKDEgUE0pICB8IGhoICgwMSBQTSl8XG4gKiAgfCBob3VyMjQgICAgfCAgIEggICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IEggKDEzKSAgICB8IEhIICgxMykgICB8XG4gKiAgfCBtaW51dGUgICAgfCAgIG0gICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IG0gKDUpICAgICB8IG1tICgwNSkgICB8XG4gKiAgfCBzZWNvbmQgICAgfCAgIHMgICAgfCAtICAgICAgICAgICAgfCAtICAgICAgICAgICAgICAgICB8IHMgKDkpICAgICB8IHNzICgwOSkgICB8XG4gKiAgfCB0aW1lem9uZSAgfCAgIHogICAgfCAtICAgICAgICAgICAgfCB6IChQYWNpZmljIFN0YW5kYXJkIFRpbWUpfCAtICB8IC0gICAgICAgICB8XG4gKiAgfCB0aW1lem9uZSAgfCAgIFogICAgfCBaIChHTVQtODowMCkgfCAtICAgICAgICAgICAgICAgICB8IC0gICAgICAgICB8IC0gICAgICAgICB8XG4gKlxuICogSW4gamF2YXNjcmlwdCwgb25seSB0aGUgY29tcG9uZW50cyBzcGVjaWZpZWQgd2lsbCBiZSByZXNwZWN0ZWQgKG5vdCB0aGUgb3JkZXJpbmcsXG4gKiBwdW5jdHVhdGlvbnMsIC4uLikgYW5kIGRldGFpbHMgb2YgdGhlIGZvcm1hdHRpbmcgd2lsbCBiZSBkZXBlbmRlbnQgb24gdGhlIGxvY2FsZS5cbiAqIE9uIHRoZSBvdGhlciBoYW5kIGluIERhcnQgdmVyc2lvbiwgeW91IGNhbiBhbHNvIGluY2x1ZGUgcXVvdGVkIHRleHQgYXMgd2VsbCBhcyBzb21lIGV4dHJhXG4gKiBkYXRlL3RpbWUgY29tcG9uZW50cyBzdWNoIGFzIHF1YXJ0ZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAqIGh0dHBzOi8vYXBpLmRhcnRsYW5nLm9yZy9hcGlkb2NzL2NoYW5uZWxzL3N0YWJsZS9kYXJ0ZG9jLXZpZXdlci9pbnRsL2ludGwuRGF0ZUZvcm1hdC5cbiAqXG4gKiBgZm9ybWF0YCBjYW4gYWxzbyBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZvcm1hdHM6XG4gKlxuICogIC0gYCdtZWRpdW0nYDogZXF1aXZhbGVudCB0byBgJ3lNTU1kam1zJ2AgKGUuZy4gU2VwIDMsIDIwMTAsIDEyOjA1OjA4IFBNIGZvciBlbi1VUylcbiAqICAtIGAnc2hvcnQnYDogZXF1aXZhbGVudCB0byBgJ3lNZGptJ2AgKGUuZy4gOS8zLzIwMTAsIDEyOjA1IFBNIGZvciBlbi1VUylcbiAqICAtIGAnZnVsbERhdGUnYDogZXF1aXZhbGVudCB0byBgJ3lNTU1NRUVFRWQnYCAoZS5nLiBGcmlkYXksIFNlcHRlbWJlciAzLCAyMDEwIGZvciBlbi1VUylcbiAqICAtIGAnbG9uZ0RhdGUnYDogZXF1aXZhbGVudCB0byBgJ3lNTU1NZCdgIChlLmcuIFNlcHRlbWJlciAzLCAyMDEwKVxuICogIC0gYCdtZWRpdW1EYXRlJ2A6IGVxdWl2YWxlbnQgdG8gYCd5TU1NZCdgIChlLmcuIFNlcCAzLCAyMDEwIGZvciBlbi1VUylcbiAqICAtIGAnc2hvcnREYXRlJ2A6IGVxdWl2YWxlbnQgdG8gYCd5TWQnYCAoZS5nLiA5LzMvMjAxMCBmb3IgZW4tVVMpXG4gKiAgLSBgJ21lZGl1bVRpbWUnYDogZXF1aXZhbGVudCB0byBgJ2ptcydgIChlLmcuIDEyOjA1OjA4IFBNIGZvciBlbi1VUylcbiAqICAtIGAnc2hvcnRUaW1lJ2A6IGVxdWl2YWxlbnQgdG8gYCdqbSdgIChlLmcuIDEyOjA1IFBNIGZvciBlbi1VUylcbiAqXG4gKiBUaW1lem9uZSBvZiB0aGUgZm9ybWF0dGVkIHRleHQgd2lsbCBiZSB0aGUgbG9jYWwgc3lzdGVtIHRpbWV6b25lIG9mIHRoZSBlbmQtdXNlcnMgbWFjaGluZS5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBBc3N1bWluZyBgZGF0ZU9iamAgaXMgKHllYXI6IDIwMTUsIG1vbnRoOiA2LCBkYXk6IDE1LCBob3VyOiAyMSwgbWludXRlOiA0Mywgc2Vjb25kOiAxMSlcbiAqIGluIHRoZSBfbG9jYWxfIHRpbWUgYW5kIGxvY2FsZSBpcyAnZW4tVVMnOlxuICpcbiAqIGBgYFxuICogICAgIHt7IGRhdGVPYmogfCBkYXRlIH19ICAgICAgICAgICAgICAgLy8gb3V0cHV0IGlzICdKdW4gMTUsIDIwMTUnXG4gKiAgICAge3sgZGF0ZU9iaiB8IGRhdGU6J21lZGl1bScgfX0gICAgICAvLyBvdXRwdXQgaXMgJ0p1biAxNSwgMjAxNSwgOTo0MzoxMSBQTSdcbiAqICAgICB7eyBkYXRlT2JqIHwgZGF0ZTonc2hvcnRUaW1lJyB9fSAgIC8vIG91dHB1dCBpcyAnOTo0MyBQTSdcbiAqICAgICB7eyBkYXRlT2JqIHwgZGF0ZTonbW1zcycgfX0gICAgICAgIC8vIG91dHB1dCBpcyAnNDM6MTEnXG4gKiBgYGBcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9waXBlcy90cy9kYXRlX3BpcGUvZGF0ZV9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdEYXRlUGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ2RhdGUnLCBwdXJlOiB0cnVlfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKiogQGludGVybmFsICovXG4gIHN0YXRpYyBfQUxJQVNFUzoge1trZXk6IHN0cmluZ106IFN0cmluZ30gPSB7XG4gICAgJ21lZGl1bSc6ICd5TU1NZGptcycsXG4gICAgJ3Nob3J0JzogJ3lNZGptJyxcbiAgICAnZnVsbERhdGUnOiAneU1NTU1FRUVFZCcsXG4gICAgJ2xvbmdEYXRlJzogJ3lNTU1NZCcsXG4gICAgJ21lZGl1bURhdGUnOiAneU1NTWQnLFxuICAgICdzaG9ydERhdGUnOiAneU1kJyxcbiAgICAnbWVkaXVtVGltZSc6ICdqbXMnLFxuICAgICdzaG9ydFRpbWUnOiAnam0nXG4gIH07XG5cblxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgcGF0dGVybjogc3RyaW5nID0gJ21lZGl1bURhdGUnKTogc3RyaW5nIHtcbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKCF0aGlzLnN1cHBvcnRzKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb24oRGF0ZVBpcGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IERhdGVXcmFwcGVyLmZyb21NaWxsaXModmFsdWUpO1xuICAgIH1cbiAgICBpZiAoU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyhEYXRlUGlwZS5fQUxJQVNFUywgcGF0dGVybikpIHtcbiAgICAgIHBhdHRlcm4gPSA8c3RyaW5nPlN0cmluZ01hcFdyYXBwZXIuZ2V0KERhdGVQaXBlLl9BTElBU0VTLCBwYXR0ZXJuKTtcbiAgICB9XG4gICAgcmV0dXJuIERhdGVGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlLCBkZWZhdWx0TG9jYWxlLCBwYXR0ZXJuKTtcbiAgfVxuXG4gIHN1cHBvcnRzKG9iajogYW55KTogYm9vbGVhbiB7IHJldHVybiBpc0RhdGUob2JqKSB8fCBpc051bWJlcihvYmopOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n(function (NumberFormatStyle) {\r\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\r\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\r\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\r\n})(exports.NumberFormatStyle || (exports.NumberFormatStyle = {}));\r\nvar NumberFormatStyle = exports.NumberFormatStyle;\r\nvar NumberFormatter = (function () {\r\n function NumberFormatter() {\r\n }\r\n NumberFormatter.format = function (num, locale, style, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.minimumIntegerDigits, minimumIntegerDigits = _c === void 0 ? 1 : _c, _d = _b.minimumFractionDigits, minimumFractionDigits = _d === void 0 ? 0 : _d, _e = _b.maximumFractionDigits, maximumFractionDigits = _e === void 0 ? 3 : _e, currency = _b.currency, _f = _b.currencyAsSymbol, currencyAsSymbol = _f === void 0 ? false : _f;\r\n var intlOptions = {\r\n minimumIntegerDigits: minimumIntegerDigits,\r\n minimumFractionDigits: minimumFractionDigits,\r\n maximumFractionDigits: maximumFractionDigits\r\n };\r\n intlOptions.style = NumberFormatStyle[style].toLowerCase();\r\n if (style == NumberFormatStyle.Currency) {\r\n intlOptions.currency = currency;\r\n intlOptions.currencyDisplay = currencyAsSymbol ? 'symbol' : 'code';\r\n }\r\n return new Intl.NumberFormat(locale, intlOptions).format(num);\r\n };\r\n return NumberFormatter;\r\n}());\r\nexports.NumberFormatter = NumberFormatter;\r\nfunction digitCondition(len) {\r\n return len == 2 ? '2-digit' : 'numeric';\r\n}\r\nfunction nameCondition(len) {\r\n return len < 4 ? 'short' : 'long';\r\n}\r\nfunction extractComponents(pattern) {\r\n var ret = {};\r\n var i = 0, j;\r\n while (i < pattern.length) {\r\n j = i;\r\n while (j < pattern.length && pattern[j] == pattern[i])\r\n j++;\r\n var len = j - i;\r\n switch (pattern[i]) {\r\n case 'G':\r\n ret.era = nameCondition(len);\r\n break;\r\n case 'y':\r\n ret.year = digitCondition(len);\r\n break;\r\n case 'M':\r\n if (len >= 3)\r\n ret.month = nameCondition(len);\r\n else\r\n ret.month = digitCondition(len);\r\n break;\r\n case 'd':\r\n ret.day = digitCondition(len);\r\n break;\r\n case 'E':\r\n ret.weekday = nameCondition(len);\r\n break;\r\n case 'j':\r\n ret.hour = digitCondition(len);\r\n break;\r\n case 'h':\r\n ret.hour = digitCondition(len);\r\n ret.hour12 = true;\r\n break;\r\n case 'H':\r\n ret.hour = digitCondition(len);\r\n ret.hour12 = false;\r\n break;\r\n case 'm':\r\n ret.minute = digitCondition(len);\r\n break;\r\n case 's':\r\n ret.second = digitCondition(len);\r\n break;\r\n case 'z':\r\n ret.timeZoneName = 'long';\r\n break;\r\n case 'Z':\r\n ret.timeZoneName = 'short';\r\n break;\r\n }\r\n i = j;\r\n }\r\n return ret;\r\n}\r\nvar dateFormatterCache = new Map();\r\nvar DateFormatter = (function () {\r\n function DateFormatter() {\r\n }\r\n DateFormatter.format = function (date, locale, pattern) {\r\n var key = locale + pattern;\r\n if (dateFormatterCache.has(key)) {\r\n return dateFormatterCache.get(key).format(date);\r\n }\r\n var formatter = new Intl.DateTimeFormat(locale, extractComponents(pattern));\r\n dateFormatterCache.set(key, formatter);\r\n return formatter.format(date);\r\n };\r\n return DateFormatter;\r\n}());\r\nexports.DateFormatter = DateFormatter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvaW50bC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBMkNBLFdBQVksaUJBQWlCO0lBQzNCLCtEQUFPLENBQUE7SUFDUCwrREFBTyxDQUFBO0lBQ1AsaUVBQVEsQ0FBQTtBQUNWLENBQUMsRUFKVyx5QkFBaUIsS0FBakIseUJBQWlCLFFBSTVCO0FBSkQsSUFBWSxpQkFBaUIsR0FBakIseUJBSVgsQ0FBQTtBQUVEO0lBQUE7SUFzQkEsQ0FBQztJQXJCUSxzQkFBTSxHQUFiLFVBQWMsR0FBVyxFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUNyRCxFQU9NO1lBUE4sNEJBT00sRUFQTCw0QkFBd0IsRUFBeEIsNkNBQXdCLEVBQUUsNkJBQXlCLEVBQXpCLDhDQUF5QixFQUFFLDZCQUF5QixFQUF6Qiw4Q0FBeUIsRUFDOUUsc0JBQVEsRUFBRSx3QkFBd0IsRUFBeEIsNkNBQXdCO1FBTy9DLElBQUksV0FBVyxHQUE2QjtZQUMxQyxvQkFBb0IsRUFBRSxvQkFBb0I7WUFDMUMscUJBQXFCLEVBQUUscUJBQXFCO1lBQzVDLHFCQUFxQixFQUFFLHFCQUFxQjtTQUM3QyxDQUFDO1FBQ0YsV0FBVyxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRCxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN4QyxXQUFXLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUNoQyxXQUFXLENBQUMsZUFBZSxHQUFHLGdCQUFnQixHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDckUsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBdEJELElBc0JDO0FBdEJZLHVCQUFlLGtCQXNCM0IsQ0FBQTtBQUVELHdCQUF3QixHQUFXO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDMUMsQ0FBQztBQUNELHVCQUF1QixHQUFXO0lBQ2hDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDcEMsQ0FBQztBQUNELDJCQUEyQixPQUFlO0lBQ3hDLElBQUksR0FBRyxHQUErQixFQUFFLENBQUM7SUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNiLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztZQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNELElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixLQUFLLEdBQUc7Z0JBQ04sR0FBRyxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLEtBQUssQ0FBQztZQUNSLEtBQUssR0FBRztnQkFDTixHQUFHLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsS0FBSyxDQUFDO1lBQ1IsS0FBSyxHQUFHO2dCQUNOLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQ1gsR0FBRyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLElBQUk7b0JBQ0YsR0FBRyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQztZQUNSLEtBQUssR0FBRztnQkFDTixHQUFHLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsS0FBSyxDQUFDO1lBQ1IsS0FBSyxHQUFHO2dCQUNOLEdBQUcsQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLENBQUM7WUFDUixLQUFLLEdBQUc7Z0JBQ04sR0FBRyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLEtBQUssQ0FBQztZQUNSLEtBQUssR0FBRztnQkFDTixHQUFHLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQztZQUNSLEtBQUssR0FBRztnQkFDTixHQUFHLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ25CLEtBQUssQ0FBQztZQUNSLEtBQUssR0FBRztnQkFDTixHQUFHLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsS0FBSyxDQUFDO1lBQ1IsS0FBSyxHQUFHO2dCQUNOLEdBQUcsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLENBQUM7WUFDUixLQUFLLEdBQUc7Z0JBQ04sR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQzFCLEtBQUssQ0FBQztZQUNSLEtBQUssR0FBRztnQkFDTixHQUFHLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztnQkFDM0IsS0FBSyxDQUFDO1FBQ1YsQ0FBQztRQUNELENBQUMsR0FBRyxDQUFDLENBQUM7SUFDUixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxJQUFJLGtCQUFrQixHQUFxQyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztBQUVsRztJQUFBO0lBVUEsQ0FBQztJQVRRLG9CQUFNLEdBQWIsVUFBYyxJQUFVLEVBQUUsTUFBYyxFQUFFLE9BQWU7UUFDdkQsSUFBSSxHQUFHLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUMzQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDNUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0gsb0JBQUM7QUFBRCxDQUFDLEFBVkQsSUFVQztBQVZZLHFCQUFhLGdCQVV6QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBNb2RpZmllZCB2ZXJzaW9uIG9mIGludGVybmFsIFR5cGVzY3JpcHQgaW50bC5kLnRzLlxuLy8gVE9ETyhwaWxvb3Bpbik6IHJlbW92ZSB3aGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzUyMSBpcyBzaGlwcGVkLlxuZGVjbGFyZSBtb2R1bGUgSW50bCB7XG4gIGludGVyZmFjZSBOdW1iZXJGb3JtYXRPcHRpb25zIHtcbiAgICBsb2NhbGVNYXRjaGVyPzogc3RyaW5nO1xuICAgIHN0eWxlPzogc3RyaW5nO1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIGN1cnJlbmN5RGlzcGxheT86IHN0cmluZztcbiAgICB1c2VHcm91cGluZz86IGJvb2xlYW47XG4gICAgbWluaW11bUludGVnZXJEaWdpdHM/OiBudW1iZXI7XG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgfVxuXG4gIGludGVyZmFjZSBOdW1iZXJGb3JtYXQge1xuICAgIGZvcm1hdCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nO1xuICB9XG5cbiAgdmFyIE51bWJlckZvcm1hdDoge25ldyAobG9jYWxlPzogc3RyaW5nLCBvcHRpb25zPzogTnVtYmVyRm9ybWF0T3B0aW9ucyk6IE51bWJlckZvcm1hdH07XG5cbiAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gICAgbG9jYWxlTWF0Y2hlcj86IHN0cmluZztcbiAgICB3ZWVrZGF5Pzogc3RyaW5nO1xuICAgIGVyYT86IHN0cmluZztcbiAgICB5ZWFyPzogc3RyaW5nO1xuICAgIG1vbnRoPzogc3RyaW5nO1xuICAgIGRheT86IHN0cmluZztcbiAgICBob3VyPzogc3RyaW5nO1xuICAgIG1pbnV0ZT86IHN0cmluZztcbiAgICBzZWNvbmQ/OiBzdHJpbmc7XG4gICAgdGltZVpvbmVOYW1lPzogc3RyaW5nO1xuICAgIGZvcm1hdE1hdGNoZXI/OiBzdHJpbmc7XG4gICAgaG91cjEyPzogYm9vbGVhbjtcbiAgfVxuXG4gIGludGVyZmFjZSBEYXRlVGltZUZvcm1hdCB7XG4gICAgZm9ybWF0KGRhdGU/OiBEYXRlIHwgbnVtYmVyKTogc3RyaW5nO1xuICB9XG5cbiAgdmFyIERhdGVUaW1lRm9ybWF0OiB7bmV3IChsb2NhbGU/OiBzdHJpbmcsIG9wdGlvbnM/OiBEYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBEYXRlVGltZUZvcm1hdH07XG59XG5cbmV4cG9ydCBlbnVtIE51bWJlckZvcm1hdFN0eWxlIHtcbiAgRGVjaW1hbCxcbiAgUGVyY2VudCxcbiAgQ3VycmVuY3lcbn1cblxuZXhwb3J0IGNsYXNzIE51bWJlckZvcm1hdHRlciB7XG4gIHN0YXRpYyBmb3JtYXQobnVtOiBudW1iZXIsIGxvY2FsZTogc3RyaW5nLCBzdHlsZTogTnVtYmVyRm9ybWF0U3R5bGUsXG4gICAgICAgICAgICAgICAge21pbmltdW1JbnRlZ2VyRGlnaXRzID0gMSwgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMCwgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMyxcbiAgICAgICAgICAgICAgICAgY3VycmVuY3ksIGN1cnJlbmN5QXNTeW1ib2wgPSBmYWxzZX06IHtcbiAgICAgICAgICAgICAgICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgY3VycmVuY3k/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeUFzU3ltYm9sPzogYm9vbGVhblxuICAgICAgICAgICAgICAgIH0gPSB7fSk6IHN0cmluZyB7XG4gICAgdmFyIGludGxPcHRpb25zOiBJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogbWluaW11bUludGVnZXJEaWdpdHMsXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbmltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbWF4aW11bUZyYWN0aW9uRGlnaXRzXG4gICAgfTtcbiAgICBpbnRsT3B0aW9ucy5zdHlsZSA9IE51bWJlckZvcm1hdFN0eWxlW3N0eWxlXS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChzdHlsZSA9PSBOdW1iZXJGb3JtYXRTdHlsZS5DdXJyZW5jeSkge1xuICAgICAgaW50bE9wdGlvbnMuY3VycmVuY3kgPSBjdXJyZW5jeTtcbiAgICAgIGludGxPcHRpb25zLmN1cnJlbmN5RGlzcGxheSA9IGN1cnJlbmN5QXNTeW1ib2wgPyAnc3ltYm9sJyA6ICdjb2RlJztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIGludGxPcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkaWdpdENvbmRpdGlvbihsZW46IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBsZW4gPT0gMiA/ICcyLWRpZ2l0JyA6ICdudW1lcmljJztcbn1cbmZ1bmN0aW9uIG5hbWVDb25kaXRpb24obGVuOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gbGVuIDwgNCA/ICdzaG9ydCcgOiAnbG9uZyc7XG59XG5mdW5jdGlvbiBleHRyYWN0Q29tcG9uZW50cyhwYXR0ZXJuOiBzdHJpbmcpOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gIHZhciByZXQ6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XG4gIHZhciBpID0gMCwgajtcbiAgd2hpbGUgKGkgPCBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIGogPSBpO1xuICAgIHdoaWxlIChqIDwgcGF0dGVybi5sZW5ndGggJiYgcGF0dGVybltqXSA9PSBwYXR0ZXJuW2ldKSBqKys7XG4gICAgbGV0IGxlbiA9IGogLSBpO1xuICAgIHN3aXRjaCAocGF0dGVybltpXSkge1xuICAgICAgY2FzZSAnRyc6XG4gICAgICAgIHJldC5lcmEgPSBuYW1lQ29uZGl0aW9uKGxlbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAneSc6XG4gICAgICAgIHJldC55ZWFyID0gZGlnaXRDb25kaXRpb24obGVuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdNJzpcbiAgICAgICAgaWYgKGxlbiA+PSAzKVxuICAgICAgICAgIHJldC5tb250aCA9IG5hbWVDb25kaXRpb24obGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJldC5tb250aCA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICAgIHJldC5kYXkgPSBkaWdpdENvbmRpdGlvbihsZW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0UnOlxuICAgICAgICByZXQud2Vla2RheSA9IG5hbWVDb25kaXRpb24obGVuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdqJzpcbiAgICAgICAgcmV0LmhvdXIgPSBkaWdpdENvbmRpdGlvbihsZW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2gnOlxuICAgICAgICByZXQuaG91ciA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIHJldC5ob3VyMTIgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0gnOlxuICAgICAgICByZXQuaG91ciA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIHJldC5ob3VyMTIgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgcmV0Lm1pbnV0ZSA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncyc6XG4gICAgICAgIHJldC5zZWNvbmQgPSBkaWdpdENvbmRpdGlvbihsZW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3onOlxuICAgICAgICByZXQudGltZVpvbmVOYW1lID0gJ2xvbmcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1onOlxuICAgICAgICByZXQudGltZVpvbmVOYW1lID0gJ3Nob3J0JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGkgPSBqO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbnZhciBkYXRlRm9ybWF0dGVyQ2FjaGU6IE1hcDxzdHJpbmcsIEludGwuRGF0ZVRpbWVGb3JtYXQ+ID0gbmV3IE1hcDxzdHJpbmcsIEludGwuRGF0ZVRpbWVGb3JtYXQ+KCk7XG5cbmV4cG9ydCBjbGFzcyBEYXRlRm9ybWF0dGVyIHtcbiAgc3RhdGljIGZvcm1hdChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YXIga2V5ID0gbG9jYWxlICsgcGF0dGVybjtcbiAgICBpZiAoZGF0ZUZvcm1hdHRlckNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlckNhY2hlLmdldChrZXkpLmZvcm1hdChkYXRlKTtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZXh0cmFjdENvbXBvbmVudHMocGF0dGVybikpO1xuICAgIGRhdGVGb3JtYXR0ZXJDYWNoZS5zZXQoa2V5LCBmb3JtYXR0ZXIpO1xuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar intl_1 = require('angular2/src/facade/intl');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\nvar defaultLocale = 'en-US';\r\nvar _re = lang_1.RegExpWrapper.create('^(\\\\d+)?\\\\.((\\\\d+)(\\\\-(\\\\d+))?)?$');\r\n/**\r\n * Internal base class for numeric pipes.\r\n */\r\nvar NumberPipe = (function () {\r\n function NumberPipe() {\r\n }\r\n /** @internal */\r\n NumberPipe._format = function (value, style, digits, currency, currencyAsSymbol) {\r\n if (currency === void 0) { currency = null; }\r\n if (currencyAsSymbol === void 0) { currencyAsSymbol = false; }\r\n if (lang_1.isBlank(value))\r\n return null;\r\n if (!lang_1.isNumber(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(NumberPipe, value);\r\n }\r\n var minInt = 1, minFraction = 0, maxFraction = 3;\r\n if (lang_1.isPresent(digits)) {\r\n var parts = lang_1.RegExpWrapper.firstMatch(_re, digits);\r\n if (lang_1.isBlank(parts)) {\r\n throw new exceptions_1.BaseException(digits + \" is not a valid digit info for number pipes\");\r\n }\r\n if (lang_1.isPresent(parts[1])) {\r\n minInt = lang_1.NumberWrapper.parseIntAutoRadix(parts[1]);\r\n }\r\n if (lang_1.isPresent(parts[3])) {\r\n minFraction = lang_1.NumberWrapper.parseIntAutoRadix(parts[3]);\r\n }\r\n if (lang_1.isPresent(parts[5])) {\r\n maxFraction = lang_1.NumberWrapper.parseIntAutoRadix(parts[5]);\r\n }\r\n }\r\n return intl_1.NumberFormatter.format(value, defaultLocale, style, {\r\n minimumIntegerDigits: minInt,\r\n minimumFractionDigits: minFraction,\r\n maximumFractionDigits: maxFraction,\r\n currency: currency,\r\n currencyAsSymbol: currencyAsSymbol\r\n });\r\n };\r\n NumberPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], NumberPipe);\r\n return NumberPipe;\r\n}());\r\nexports.NumberPipe = NumberPipe;\r\n/**\r\n * WARNING: this pipe uses the Internationalization API.\r\n * Therefore it is only reliable in Chrome and Opera browsers.\r\n *\r\n * Formats a number as local text. i.e. group sizing and separator and other locale-specific\r\n * configurations are based on the active locale.\r\n *\r\n * ### Usage\r\n *\r\n * expression | number[:digitInfo]\r\n *\r\n * where `expression` is a number and `digitInfo` has the following format:\r\n *\r\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\r\n *\r\n * - minIntegerDigits is the minimum number of integer digits to use. Defaults to 1.\r\n * - minFractionDigits is the minimum number of digits after fraction. Defaults to 0.\r\n * - maxFractionDigits is the maximum number of digits after fraction. Defaults to 3.\r\n *\r\n * For more information on the acceptable range for each of these numbers and other\r\n * details see your native internationalization library.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='NumberPipe'}\r\n */\r\nvar DecimalPipe = (function (_super) {\r\n __extends(DecimalPipe, _super);\r\n function DecimalPipe() {\r\n _super.apply(this, arguments);\r\n }\r\n DecimalPipe.prototype.transform = function (value, digits) {\r\n if (digits === void 0) { digits = null; }\r\n return NumberPipe._format(value, intl_1.NumberFormatStyle.Decimal, digits);\r\n };\r\n DecimalPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'number' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DecimalPipe);\r\n return DecimalPipe;\r\n}(NumberPipe));\r\nexports.DecimalPipe = DecimalPipe;\r\n/**\r\n * WARNING: this pipe uses the Internationalization API.\r\n * Therefore it is only reliable in Chrome and Opera browsers.\r\n *\r\n * Formats a number as local percent.\r\n *\r\n * ### Usage\r\n *\r\n * expression | percent[:digitInfo]\r\n *\r\n * For more information about `digitInfo` see {@link DecimalPipe}\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='PercentPipe'}\r\n */\r\nvar PercentPipe = (function (_super) {\r\n __extends(PercentPipe, _super);\r\n function PercentPipe() {\r\n _super.apply(this, arguments);\r\n }\r\n PercentPipe.prototype.transform = function (value, digits) {\r\n if (digits === void 0) { digits = null; }\r\n return NumberPipe._format(value, intl_1.NumberFormatStyle.Percent, digits);\r\n };\r\n PercentPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'percent' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], PercentPipe);\r\n return PercentPipe;\r\n}(NumberPipe));\r\nexports.PercentPipe = PercentPipe;\r\n/**\r\n * WARNING: this pipe uses the Internationalization API.\r\n * Therefore it is only reliable in Chrome and Opera browsers.\r\n *\r\n * Formats a number as local currency.\r\n *\r\n * ### Usage\r\n *\r\n * expression | currency[:currencyCode[:symbolDisplay[:digitInfo]]]\r\n *\r\n * where `currencyCode` is the ISO 4217 currency code, such as \"USD\" for the US dollar and\r\n * \"EUR\" for the euro. `symbolDisplay` is a boolean indicating whether to use the currency\r\n * symbol (e.g. $) or the currency code (e.g. USD) in the output. The default for this value\r\n * is `false`.\r\n * For more information about `digitInfo` see {@link DecimalPipe}\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='CurrencyPipe'}\r\n */\r\nvar CurrencyPipe = (function (_super) {\r\n __extends(CurrencyPipe, _super);\r\n function CurrencyPipe() {\r\n _super.apply(this, arguments);\r\n }\r\n CurrencyPipe.prototype.transform = function (value, currencyCode, symbolDisplay, digits) {\r\n if (currencyCode === void 0) { currencyCode = 'USD'; }\r\n if (symbolDisplay === void 0) { symbolDisplay = false; }\r\n if (digits === void 0) { digits = null; }\r\n return NumberPipe._format(value, intl_1.NumberFormatStyle.Currency, digits, currencyCode, symbolDisplay);\r\n };\r\n CurrencyPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'currency' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], CurrencyPipe);\r\n return CurrencyPipe;\r\n}(NumberPipe));\r\nexports.CurrencyPipe = CurrencyPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyX3BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzL251bWJlcl9waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFCQVNPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UscUJBQWlELDBCQUEwQixDQUFDLENBQUE7QUFDNUUscUJBQTRELGVBQWUsQ0FBQyxDQUFBO0FBRTVFLGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRS9FLElBQUksYUFBYSxHQUFXLE9BQU8sQ0FBQztBQUNwQyxJQUFJLEdBQUcsR0FBRyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBRXBFOztHQUVHO0FBR0g7SUFBQTtJQWdDQSxDQUFDO0lBL0JDLGdCQUFnQjtJQUNULGtCQUFPLEdBQWQsVUFBZSxLQUFhLEVBQUUsS0FBd0IsRUFBRSxNQUFjLEVBQUUsUUFBdUIsRUFDaEYsZ0JBQWlDO1FBRHdCLHdCQUF1QixHQUF2QixlQUF1QjtRQUNoRixnQ0FBaUMsR0FBakMsd0JBQWlDO1FBQzlDLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDaEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sSUFBSSw4REFBNEIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxXQUFXLEdBQUcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDakQsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxNQUFN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NUM7UUFBa0MsOEJBQVU7SUFNNUMsQ0FBQztJQUxDLGdDQUFTLEdBQVQsVUFBVSxLQUFVLEVBQUUsWUFBNEIsRUFBRSxhQUE4QixFQUN4RSxNQUFxQjtRQURULDRCQUE0QixHQUE1QixvQkFBNEI7UUFBRSw2QkFBOEIsR0FBOUIscUJBQThCO1FBQ3hFLHNCQUFxQixHQUFyQixhQUFxQjtRQUM3QixNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsd0JBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQ3ZELGFBQWEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFSSDtRQUFDLFlBQUssRUFBRTtRQUNQLFdBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQztRQUN4QixpQkFBVSxFQUFFOztvQkFBQTtJQU9iLG1CQUFDO0FBQUQsQ0FBQyxBQU5ELENBQWtDLFVBQVUsR0FNM0M7QUFOWSxvQkFBWSxlQU14QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNOdW1iZXIsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgU3RyaW5nV3JhcHBlcixcbiAgTnVtYmVyV3JhcHBlcixcbiAgUmVnRXhwV3JhcHBlcixcbiAgQ09OU1QsXG4gIEZ1bmN0aW9uV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtOdW1iZXJGb3JtYXR0ZXIsIE51bWJlckZvcm1hdFN0eWxlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2ludGwnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlVHJhbnNmb3JtLCBXcmFwcGVkVmFsdWUsIFBpcGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQge0ludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb259IGZyb20gJy4vaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbic7XG5cbnZhciBkZWZhdWx0TG9jYWxlOiBzdHJpbmcgPSAnZW4tVVMnO1xudmFyIF9yZSA9IFJlZ0V4cFdyYXBwZXIuY3JlYXRlKCdeKFxcXFxkKyk/XFxcXC4oKFxcXFxkKykoXFxcXC0oXFxcXGQrKSk/KT8kJyk7XG5cbi8qKlxuICogSW50ZXJuYWwgYmFzZSBjbGFzcyBmb3IgbnVtZXJpYyBwaXBlcy5cbiAqL1xuQENPTlNUKClcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOdW1iZXJQaXBlIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzdGF0aWMgX2Zvcm1hdCh2YWx1ZTogbnVtYmVyLCBzdHlsZTogTnVtYmVyRm9ybWF0U3R5bGUsIGRpZ2l0czogc3RyaW5nLCBjdXJyZW5jeTogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgY3VycmVuY3lBc1N5bWJvbDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIGlmICghaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihOdW1iZXJQaXBlLCB2YWx1ZSk7XG4gICAgfVxuICAgIHZhciBtaW5JbnQgPSAxLCBtaW5GcmFjdGlvbiA9IDAsIG1heEZyYWN0aW9uID0gMztcbiAgICBpZiAoaXNQcmVzZW50KGRpZ2l0cykpIHtcbiAgICAgIHZhciBwYXJ0cyA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChfcmUsIGRpZ2l0cyk7XG4gICAgICBpZiAoaXNCbGFuayhwYXJ0cykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYCR7ZGlnaXRzfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvIGZvciBudW1iZXIgcGlwZXNgKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQocGFydHNbMV0pKSB7ICAvLyBtaW4gaW50ZWdlciBkaWdpdHNcbiAgICAgICAgbWluSW50ID0gTnVtYmVyV3JhcHBlci5wYXJzZUludEF1dG9SYWRpeChwYXJ0c1sxXSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcmVzZW50KHBhcnRzWzNdKSkgeyAgLy8gbWluIGZyYWN0aW9uIGRpZ2l0c1xuICAgICAgICBtaW5GcmFjdGlvbiA9IE51bWJlcldyYXBwZXIucGFyc2VJbnRBdXRvUmFkaXgocGFydHNbM10pO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChwYXJ0c1s1XSkpIHsgIC8vIG1heCBmcmFjdGlvbiBkaWdpdHNcbiAgICAgICAgbWF4RnJhY3Rpb24gPSBOdW1iZXJXcmFwcGVyLnBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzVdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE51bWJlckZvcm1hdHRlci5mb3JtYXQodmFsdWUsIGRlZmF1bHRMb2NhbGUsIHN0eWxlLCB7XG4gICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogbWluSW50LFxuICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBtaW5GcmFjdGlvbixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbWF4RnJhY3Rpb24sXG4gICAgICBjdXJyZW5jeTogY3VycmVuY3ksXG4gICAgICBjdXJyZW5jeUFzU3ltYm9sOiBjdXJyZW5jeUFzU3ltYm9sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBXQVJOSU5HOiB0aGlzIHBpcGUgdXNlcyB0aGUgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJLlxuICogVGhlcmVmb3JlIGl0IGlzIG9ubHkgcmVsaWFibGUgaW4gQ2hyb21lIGFuZCBPcGVyYSBicm93c2Vycy5cbiAqXG4gKiBGb3JtYXRzIGEgbnVtYmVyIGFzIGxvY2FsIHRleHQuIGkuZS4gZ3JvdXAgc2l6aW5nIGFuZCBzZXBhcmF0b3IgYW5kIG90aGVyIGxvY2FsZS1zcGVjaWZpY1xuICogY29uZmlndXJhdGlvbnMgYXJlIGJhc2VkIG9uIHRoZSBhY3RpdmUgbG9jYWxlLlxuICpcbiAqICMjIyBVc2FnZVxuICpcbiAqICAgICBleHByZXNzaW9uIHwgbnVtYmVyWzpkaWdpdEluZm9dXG4gKlxuICogd2hlcmUgYGV4cHJlc3Npb25gIGlzIGEgbnVtYmVyIGFuZCBgZGlnaXRJbmZvYCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gKlxuICogICAgIHttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c31cbiAqXG4gKiAtIG1pbkludGVnZXJEaWdpdHMgaXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIHRvIHVzZS4gRGVmYXVsdHMgdG8gMS5cbiAqIC0gbWluRnJhY3Rpb25EaWdpdHMgaXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBmcmFjdGlvbi4gRGVmYXVsdHMgdG8gMC5cbiAqIC0gbWF4RnJhY3Rpb25EaWdpdHMgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBmcmFjdGlvbi4gRGVmYXVsdHMgdG8gMy5cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYWNjZXB0YWJsZSByYW5nZSBmb3IgZWFjaCBvZiB0aGVzZSBudW1iZXJzIGFuZCBvdGhlclxuICogZGV0YWlscyBzZWUgeW91ciBuYXRpdmUgaW50ZXJuYXRpb25hbGl6YXRpb24gbGlicmFyeS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL251bWJlcl9waXBlL251bWJlcl9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdOdW1iZXJQaXBlJ31cbiAqL1xuQENPTlNUKClcbkBQaXBlKHtuYW1lOiAnbnVtYmVyJ30pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVjaW1hbFBpcGUgZXh0ZW5kcyBOdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaWdpdHM6IHN0cmluZyA9IG51bGwpOiBzdHJpbmcge1xuICAgIHJldHVybiBOdW1iZXJQaXBlLl9mb3JtYXQodmFsdWUsIE51bWJlckZvcm1hdFN0eWxlLkRlY2ltYWwsIGRpZ2l0cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBXQVJOSU5HOiB0aGlzIHBpcGUgdXNlcyB0aGUgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJLlxuICogVGhlcmVmb3JlIGl0IGlzIG9ubHkgcmVsaWFibGUgaW4gQ2hyb21lIGFuZCBPcGVyYSBicm93c2Vycy5cbiAqXG4gKiBGb3JtYXRzIGEgbnVtYmVyIGFzIGxvY2FsIHBlcmNlbnQuXG4gKlxuICogIyMjIFVzYWdlXG4gKlxuICogICAgIGV4cHJlc3Npb24gfCBwZXJjZW50WzpkaWdpdEluZm9dXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYGRpZ2l0SW5mb2Agc2VlIHtAbGluayBEZWNpbWFsUGlwZX1cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL251bWJlcl9waXBlL251bWJlcl9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdQZXJjZW50UGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ3BlcmNlbnQnfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXJjZW50UGlwZSBleHRlbmRzIE51bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGRpZ2l0czogc3RyaW5nID0gbnVsbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE51bWJlclBpcGUuX2Zvcm1hdCh2YWx1ZSwgTnVtYmVyRm9ybWF0U3R5bGUuUGVyY2VudCwgZGlnaXRzKTtcbiAgfVxufVxuXG4vKipcbiAqIFdBUk5JTkc6IHRoaXMgcGlwZSB1c2VzIHRoZSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkuXG4gKiBUaGVyZWZvcmUgaXQgaXMgb25seSByZWxpYWJsZSBpbiBDaHJvbWUgYW5kIE9wZXJhIGJyb3dzZXJzLlxuICpcbiAqIEZvcm1hdHMgYSBudW1iZXIgYXMgbG9jYWwgY3VycmVuY3kuXG4gKlxuICogIyMjIFVzYWdlXG4gKlxuICogICAgIGV4cHJlc3Npb24gfCBjdXJyZW5jeVs6Y3VycmVuY3lDb2RlWzpzeW1ib2xEaXNwbGF5WzpkaWdpdEluZm9dXV1cbiAqXG4gKiB3aGVyZSBgY3VycmVuY3lDb2RlYCBpcyB0aGUgSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgc3VjaCBhcyBcIlVTRFwiIGZvciB0aGUgVVMgZG9sbGFyIGFuZFxuICogXCJFVVJcIiBmb3IgdGhlIGV1cm8uIGBzeW1ib2xEaXNwbGF5YCBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHVzZSB0aGUgY3VycmVuY3lcbiAqIHN5bWJvbCAoZS5nLiAkKSBvciB0aGUgY3VycmVuY3kgY29kZSAoZS5nLiBVU0QpIGluIHRoZSBvdXRwdXQuIFRoZSBkZWZhdWx0IGZvciB0aGlzIHZhbHVlXG4gKiBpcyBgZmFsc2VgLlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYGRpZ2l0SW5mb2Agc2VlIHtAbGluayBEZWNpbWFsUGlwZX1cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL251bWJlcl9waXBlL251bWJlcl9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdDdXJyZW5jeVBpcGUnfVxuICovXG5AQ09OU1QoKVxuQFBpcGUoe25hbWU6ICdjdXJyZW5jeSd9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5UGlwZSBleHRlbmRzIE51bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGN1cnJlbmN5Q29kZTogc3RyaW5nID0gJ1VTRCcsIHN5bWJvbERpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgICAgIGRpZ2l0czogc3RyaW5nID0gbnVsbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE51bWJlclBpcGUuX2Zvcm1hdCh2YWx1ZSwgTnVtYmVyRm9ybWF0U3R5bGUuQ3VycmVuY3ksIGRpZ2l0cywgY3VycmVuY3lDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sRGlzcGxheSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Creates a new String with some or all of the matches of a pattern replaced by\r\n * a replacement.\r\n *\r\n * The pattern to be matched is specified by the 'pattern' parameter.\r\n *\r\n * The replacement to be set is specified by the 'replacement' parameter.\r\n *\r\n * An optional 'flags' parameter can be set.\r\n *\r\n * ### Usage\r\n *\r\n * expression | replace:pattern:replacement\r\n *\r\n * All behavior is based on the expected behavior of the JavaScript API\r\n * String.prototype.replace() function.\r\n *\r\n * Where the input expression is a [String] or [Number] (to be treated as a string),\r\n * the `pattern` is a [String] or [RegExp],\r\n * the 'replacement' is a [String] or [Function].\r\n *\r\n * --Note--: The 'pattern' parameter will be converted to a RegExp instance. Make sure to escape the\r\n * string properly if you are matching for regular expression special characters like parenthesis,\r\n * brackets etc.\r\n */\r\nvar ReplacePipe = (function () {\r\n function ReplacePipe() {\r\n }\r\n ReplacePipe.prototype.transform = function (value, pattern, replacement) {\r\n if (lang_1.isBlank(value)) {\r\n return value;\r\n }\r\n if (!this._supportedInput(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, value);\r\n }\r\n var input = value.toString();\r\n if (!this._supportedPattern(pattern)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, pattern);\r\n }\r\n if (!this._supportedReplacement(replacement)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, replacement);\r\n }\r\n // template fails with literal RegExp e.g /pattern/igm\r\n // var rgx = pattern instanceof RegExp ? pattern : RegExpWrapper.create(pattern);\r\n if (lang_1.isFunction(replacement)) {\r\n var rgxPattern = lang_1.isString(pattern) ? lang_1.RegExpWrapper.create(pattern) : pattern;\r\n return lang_1.StringWrapper.replaceAllMapped(input, rgxPattern, replacement);\r\n }\r\n if (pattern instanceof RegExp) {\r\n // use the replaceAll variant\r\n return lang_1.StringWrapper.replaceAll(input, pattern, replacement);\r\n }\r\n return lang_1.StringWrapper.replace(input, pattern, replacement);\r\n };\r\n ReplacePipe.prototype._supportedInput = function (input) { return lang_1.isString(input) || lang_1.isNumber(input); };\r\n ReplacePipe.prototype._supportedPattern = function (pattern) {\r\n return lang_1.isString(pattern) || pattern instanceof RegExp;\r\n };\r\n ReplacePipe.prototype._supportedReplacement = function (replacement) {\r\n return lang_1.isString(replacement) || lang_1.isFunction(replacement);\r\n };\r\n ReplacePipe = __decorate([\r\n core_1.Pipe({ name: 'replace' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], ReplacePipe);\r\n return ReplacePipe;\r\n}());\r\nexports.ReplacePipe = ReplacePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZV9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9yZXBsYWNlX3BpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMscUJBQThDLGVBQWUsQ0FBQyxDQUFBO0FBQzlELGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFJSDtJQUFBO0lBMkNBLENBQUM7SUExQ0MsK0JBQVMsR0FBVCxVQUFVLEtBQVUsRUFBRSxPQUF3QixFQUFFLFdBQThCO1FBQzVFLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sSUFBSSw4REFBNEIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxJQUFJLDhEQUE0QixDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSw4REFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNELHNEQUFzRDtRQUN0RCxpRkFBaUY7UUFFakYsRUFBRSxDQUFDLENBQUMsaUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxVQUFVLEdBQUcsZUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLG9CQUFhLENBQUMsTUFBTSxDQUFTLE9BQU8sQ0FBQyxHQUFXLE9BQU8sQ0FBQztZQUU3RixNQUFNLENBQUMsb0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFZLFdBQVcsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxPQUFPLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM5Qiw2QkFBNkI7WUFDN0IsTUFBTSxDQUFDLG9CQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQVUsV0FBVyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELE1BQU0sQ0FBQyxvQkFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQVUsT0FBTyxFQUFVLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxxQ0FBZSxHQUF2QixVQUF3QixLQUFVLElBQWEsTUFBTSxDQUFDLGVBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxlQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5GLHVDQUFpQixHQUF6QixVQUEwQixPQUFZO1FBQ3BDLE1BQU0sQ0FBQyxlQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxZQUFZLE1BQU0sQ0FBQztJQUN4RCxDQUFDO0lBRU8sMkNBQXFCLEdBQTdCLFVBQThCLFdBQWdCO1FBQzVDLE1BQU0sQ0FBQyxlQUFRLENBQUMsV0FBVyxDQUFDLElBQUksaUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBNUNIO1FBQUMsV0FBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBQyxDQUFDO1FBQ3ZCLGlCQUFVLEVBQUU7O21CQUFBO0lBNENiLGtCQUFDO0FBQUQsQ0FBQyxBQTNDRCxJQTJDQztBQTNDWSxtQkFBVyxjQTJDdkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzQmxhbmssXG4gIGlzU3RyaW5nLFxuICBpc051bWJlcixcbiAgaXNGdW5jdGlvbixcbiAgUmVnRXhwV3JhcHBlcixcbiAgU3RyaW5nV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlVHJhbnNmb3JtLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFN0cmluZyB3aXRoIHNvbWUgb3IgYWxsIG9mIHRoZSBtYXRjaGVzIG9mIGEgcGF0dGVybiByZXBsYWNlZCBieVxuICogYSByZXBsYWNlbWVudC5cbiAqXG4gKiBUaGUgcGF0dGVybiB0byBiZSBtYXRjaGVkIGlzIHNwZWNpZmllZCBieSB0aGUgJ3BhdHRlcm4nIHBhcmFtZXRlci5cbiAqXG4gKiBUaGUgcmVwbGFjZW1lbnQgdG8gYmUgc2V0IGlzIHNwZWNpZmllZCBieSB0aGUgJ3JlcGxhY2VtZW50JyBwYXJhbWV0ZXIuXG4gKlxuICogQW4gb3B0aW9uYWwgJ2ZsYWdzJyBwYXJhbWV0ZXIgY2FuIGJlIHNldC5cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiAgICAgZXhwcmVzc2lvbiB8IHJlcGxhY2U6cGF0dGVybjpyZXBsYWNlbWVudFxuICpcbiAqIEFsbCBiZWhhdmlvciBpcyBiYXNlZCBvbiB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Igb2YgdGhlIEphdmFTY3JpcHQgQVBJXG4gKiBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UoKSBmdW5jdGlvbi5cbiAqXG4gKiBXaGVyZSB0aGUgaW5wdXQgZXhwcmVzc2lvbiBpcyBhIFtTdHJpbmddIG9yIFtOdW1iZXJdICh0byBiZSB0cmVhdGVkIGFzIGEgc3RyaW5nKSxcbiAqIHRoZSBgcGF0dGVybmAgaXMgYSBbU3RyaW5nXSBvciBbUmVnRXhwXSxcbiAqIHRoZSAncmVwbGFjZW1lbnQnIGlzIGEgW1N0cmluZ10gb3IgW0Z1bmN0aW9uXS5cbiAqXG4gKiAtLU5vdGUtLTogVGhlICdwYXR0ZXJuJyBwYXJhbWV0ZXIgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBSZWdFeHAgaW5zdGFuY2UuIE1ha2Ugc3VyZSB0byBlc2NhcGUgdGhlXG4gKiBzdHJpbmcgcHJvcGVybHkgaWYgeW91IGFyZSBtYXRjaGluZyBmb3IgcmVndWxhciBleHByZXNzaW9uIHNwZWNpYWwgY2hhcmFjdGVycyBsaWtlIHBhcmVudGhlc2lzLFxuICogYnJhY2tldHMgZXRjLlxuICovXG5cbkBQaXBlKHtuYW1lOiAncmVwbGFjZSd9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlcGxhY2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBwYXR0ZXJuOiBzdHJpbmcgfCBSZWdFeHAsIHJlcGxhY2VtZW50OiBGdW5jdGlvbiB8IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKGlzQmxhbmsodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zdXBwb3J0ZWRJbnB1dCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFJlcGxhY2VQaXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIGlucHV0ID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgIGlmICghdGhpcy5fc3VwcG9ydGVkUGF0dGVybihwYXR0ZXJuKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb24oUmVwbGFjZVBpcGUsIHBhdHRlcm4pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N1cHBvcnRlZFJlcGxhY2VtZW50KHJlcGxhY2VtZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb24oUmVwbGFjZVBpcGUsIHJlcGxhY2VtZW50KTtcbiAgICB9XG4gICAgLy8gdGVtcGxhdGUgZmFpbHMgd2l0aCBsaXRlcmFsIFJlZ0V4cCBlLmcgL3BhdHRlcm4vaWdtXG4gICAgLy8gdmFyIHJneCA9IHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgPyBwYXR0ZXJuIDogUmVnRXhwV3JhcHBlci5jcmVhdGUocGF0dGVybik7XG5cbiAgICBpZiAoaXNGdW5jdGlvbihyZXBsYWNlbWVudCkpIHtcbiAgICAgIHZhciByZ3hQYXR0ZXJuID0gaXNTdHJpbmcocGF0dGVybikgPyBSZWdFeHBXcmFwcGVyLmNyZWF0ZSg8c3RyaW5nPnBhdHRlcm4pIDogPFJlZ0V4cD5wYXR0ZXJuO1xuXG4gICAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCByZ3hQYXR0ZXJuLCA8RnVuY3Rpb24+cmVwbGFjZW1lbnQpO1xuICAgIH1cbiAgICBpZiAocGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gdXNlIHRoZSByZXBsYWNlQWxsIHZhcmlhbnRcbiAgICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoaW5wdXQsIHBhdHRlcm4sIDxzdHJpbmc+cmVwbGFjZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2UoaW5wdXQsIDxzdHJpbmc+cGF0dGVybiwgPHN0cmluZz5yZXBsYWNlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9zdXBwb3J0ZWRJbnB1dChpbnB1dDogYW55KTogYm9vbGVhbiB7IHJldHVybiBpc1N0cmluZyhpbnB1dCkgfHwgaXNOdW1iZXIoaW5wdXQpOyB9XG5cbiAgcHJpdmF0ZSBfc3VwcG9ydGVkUGF0dGVybihwYXR0ZXJuOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNTdHJpbmcocGF0dGVybikgfHwgcGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cDtcbiAgfVxuXG4gIHByaXZhdGUgX3N1cHBvcnRlZFJlcGxhY2VtZW50KHJlcGxhY2VtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNTdHJpbmcocmVwbGFjZW1lbnQpIHx8IGlzRnVuY3Rpb24ocmVwbGFjZW1lbnQpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\nvar interpolationExp = lang_1.RegExpWrapper.create('#');\r\n/**\r\n *\r\n * Maps a value to a string that pluralizes the value properly.\r\n *\r\n * ## Usage\r\n *\r\n * expression | i18nPlural:mapping\r\n *\r\n * where `expression` is a number and `mapping` is an object that indicates the proper text for\r\n * when the `expression` evaluates to 0, 1, or some other number. You can interpolate the actual\r\n * value into the text using the `#` sign.\r\n *\r\n * ## Example\r\n *\r\n * ```\r\n * <div>\r\n * {{ messages.length | i18nPlural: messageMapping }}\r\n * </div>\r\n *\r\n * class MyApp {\r\n * messages: any[];\r\n * messageMapping: any = {\r\n * '=0': 'No messages.',\r\n * '=1': 'One message.',\r\n * 'other': '# messages.'\r\n * }\r\n * ...\r\n * }\r\n * ```\r\n *\r\n */\r\nvar I18nPluralPipe = (function () {\r\n function I18nPluralPipe() {\r\n }\r\n I18nPluralPipe.prototype.transform = function (value, pluralMap) {\r\n var key;\r\n var valueStr;\r\n if (!lang_1.isStringMap(pluralMap)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(I18nPluralPipe, pluralMap);\r\n }\r\n key = value === 0 || value === 1 ? \"=\" + value : 'other';\r\n valueStr = lang_1.isPresent(value) ? value.toString() : '';\r\n return lang_1.StringWrapper.replaceAll(pluralMap[key], interpolationExp, valueStr);\r\n };\r\n I18nPluralPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'i18nPlural', pure: true }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], I18nPluralPipe);\r\n return I18nPluralPipe;\r\n}());\r\nexports.I18nPluralPipe = I18nPluralPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bl9wbHVyYWxfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvaTE4bl9wbHVyYWxfcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBTU8sMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxxQkFBOEMsZUFBZSxDQUFDLENBQUE7QUFDOUQsZ0RBQTJDLG1DQUFtQyxDQUFDLENBQUE7QUFFL0UsSUFBSSxnQkFBZ0IsR0FBVyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUV6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBSUg7SUFBQTtJQWNBLENBQUM7SUFiQyxrQ0FBUyxHQUFULFVBQVUsS0FBYSxFQUFFLFNBQW9DO1FBQzNELElBQUksR0FBVyxDQUFDO1FBQ2hCLElBQUksUUFBZ0IsQ0FBQztRQUVyQixFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sSUFBSSw4REFBNEIsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELEdBQUcsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEdBQUcsTUFBSSxLQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3pELFFBQVEsR0FBRyxnQkFBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFcEQsTUFBTSxDQUFDLG9CQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBaEJIO1FBQUMsWUFBSyxFQUFFO1FBQ1AsV0FBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDdEMsaUJBQVUsRUFBRTs7c0JBQUE7SUFlYixxQkFBQztBQUFELENBQUMsQUFkRCxJQWNDO0FBZFksc0JBQWMsaUJBYzFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDT05TVCxcbiAgaXNTdHJpbmdNYXAsXG4gIFN0cmluZ1dyYXBwZXIsXG4gIGlzUHJlc2VudCxcbiAgUmVnRXhwV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlVHJhbnNmb3JtLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxudmFyIGludGVycG9sYXRpb25FeHA6IFJlZ0V4cCA9IFJlZ0V4cFdyYXBwZXIuY3JlYXRlKCcjJyk7XG5cbi8qKlxuICpcbiAqICBNYXBzIGEgdmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBwbHVyYWxpemVzIHRoZSB2YWx1ZSBwcm9wZXJseS5cbiAqXG4gKiAgIyMgVXNhZ2VcbiAqXG4gKiAgZXhwcmVzc2lvbiB8IGkxOG5QbHVyYWw6bWFwcGluZ1xuICpcbiAqICB3aGVyZSBgZXhwcmVzc2lvbmAgaXMgYSBudW1iZXIgYW5kIGBtYXBwaW5nYCBpcyBhbiBvYmplY3QgdGhhdCBpbmRpY2F0ZXMgdGhlIHByb3BlciB0ZXh0IGZvclxuICogIHdoZW4gdGhlIGBleHByZXNzaW9uYCBldmFsdWF0ZXMgdG8gMCwgMSwgb3Igc29tZSBvdGhlciBudW1iZXIuICBZb3UgY2FuIGludGVycG9sYXRlIHRoZSBhY3R1YWxcbiAqICB2YWx1ZSBpbnRvIHRoZSB0ZXh0IHVzaW5nIHRoZSBgI2Agc2lnbi5cbiAqXG4gKiAgIyMgRXhhbXBsZVxuICpcbiAqICBgYGBcbiAqICA8ZGl2PlxuICogICAge3sgbWVzc2FnZXMubGVuZ3RoIHwgaTE4blBsdXJhbDogbWVzc2FnZU1hcHBpbmcgfX1cbiAqICA8L2Rpdj5cbiAqXG4gKiAgY2xhc3MgTXlBcHAge1xuICogICAgbWVzc2FnZXM6IGFueVtdO1xuICogICAgbWVzc2FnZU1hcHBpbmc6IGFueSA9IHtcbiAqICAgICAgJz0wJzogJ05vIG1lc3NhZ2VzLicsXG4gKiAgICAgICc9MSc6ICdPbmUgbWVzc2FnZS4nLFxuICogICAgICAnb3RoZXInOiAnIyBtZXNzYWdlcy4nXG4gKiAgICB9XG4gKiAgICAuLi5cbiAqICB9XG4gKiAgYGBgXG4gKlxuICovXG5AQ09OU1QoKVxuQFBpcGUoe25hbWU6ICdpMThuUGx1cmFsJywgcHVyZTogdHJ1ZX0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSTE4blBsdXJhbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIsIHBsdXJhbE1hcDoge1tjb3VudDogc3RyaW5nXTogc3RyaW5nfSk6IHN0cmluZyB7XG4gICAgdmFyIGtleTogc3RyaW5nO1xuICAgIHZhciB2YWx1ZVN0cjogc3RyaW5nO1xuXG4gICAgaWYgKCFpc1N0cmluZ01hcChwbHVyYWxNYXApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihJMThuUGx1cmFsUGlwZSwgcGx1cmFsTWFwKTtcbiAgICB9XG5cbiAgICBrZXkgPSB2YWx1ZSA9PT0gMCB8fCB2YWx1ZSA9PT0gMSA/IGA9JHt2YWx1ZX1gIDogJ290aGVyJztcbiAgICB2YWx1ZVN0ciA9IGlzUHJlc2VudCh2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7XG5cbiAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHBsdXJhbE1hcFtrZXldLCBpbnRlcnBvbGF0aW9uRXhwLCB2YWx1ZVN0cik7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar InvalidPipeArgumentException = (function (_super) {\r\n __extends(InvalidPipeArgumentException, _super);\r\n function InvalidPipeArgumentException(type, value) {\r\n _super.call(this, \"Invalid argument '\" + value + \"' for pipe '\" + lang_1.stringify(type) + \"'\");\r\n }\r\n return InvalidPipeArgumentException;\r\n}(exceptions_1.BaseException));\r\nexports.InvalidPipeArgumentException = InvalidPipeArgumentException;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQkFBcUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNoRSwyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUUvRTtJQUFrRCxnREFBYTtJQUM3RCxzQ0FBWSxJQUFVLEVBQUUsS0FBYTtRQUNuQyxrQkFBTSx1QkFBcUIsS0FBSyxvQkFBZSxnQkFBUyxDQUFDLElBQUksQ0FBQyxNQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0gsbUNBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBa0QsMEJBQWEsR0FJOUQ7QUFKWSxvQ0FBNEIsK0JBSXhDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNULCBUeXBlLCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHR5cGU6IFR5cGUsIHZhbHVlOiBPYmplY3QpIHtcbiAgICBzdXBlcihgSW52YWxpZCBhcmd1bWVudCAnJHt2YWx1ZX0nIGZvciBwaXBlICcke3N0cmluZ2lmeSh0eXBlKX0nYCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n *\r\n * Generic selector that displays the string that matches the current value.\r\n *\r\n * ## Usage\r\n *\r\n * expression | i18nSelect:mapping\r\n *\r\n * where `mapping` is an object that indicates the text that should be displayed\r\n * for different values of the provided `expression`.\r\n *\r\n * ## Example\r\n *\r\n * ```\r\n * <div>\r\n * {{ gender | i18nSelect: inviteMap }}\r\n * </div>\r\n *\r\n * class MyApp {\r\n * gender: string = 'male';\r\n * inviteMap: any = {\r\n * 'male': 'Invite her.',\r\n * 'female': 'Invite him.',\r\n * 'other': 'Invite them.'\r\n * }\r\n * ...\r\n * }\r\n * ```\r\n */\r\nvar I18nSelectPipe = (function () {\r\n function I18nSelectPipe() {\r\n }\r\n I18nSelectPipe.prototype.transform = function (value, mapping) {\r\n if (!lang_1.isStringMap(mapping)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(I18nSelectPipe, mapping);\r\n }\r\n return collection_1.StringMapWrapper.contains(mapping, value) ? mapping[value] : mapping['other'];\r\n };\r\n I18nSelectPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'i18nSelect', pure: true }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], I18nSelectPipe);\r\n return I18nSelectPipe;\r\n}());\r\nexports.I18nSelectPipe = I18nSelectPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bl9zZWxlY3RfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvaTE4bl9zZWxlY3RfcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFDNUQsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFDaEUscUJBQThDLGVBQWUsQ0FBQyxDQUFBO0FBQzlELGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBSUg7SUFBQTtJQVFBLENBQUM7SUFQQyxrQ0FBUyxHQUFULFVBQVUsS0FBYSxFQUFFLE9BQWdDO1FBQ3ZELEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxJQUFJLDhEQUE0QixDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsTUFBTSxDQUFDLDZCQUFnQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBVkg7UUFBQyxZQUFLLEVBQUU7UUFDUCxXQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUN0QyxpQkFBVSxFQUFFOztzQkFBQTtJQVNiLHFCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFSWSxzQkFBYyxpQkFRMUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1QsIGlzU3RyaW5nTWFwfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlVHJhbnNmb3JtLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxuLyoqXG4gKlxuICogIEdlbmVyaWMgc2VsZWN0b3IgdGhhdCBkaXNwbGF5cyB0aGUgc3RyaW5nIHRoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCB2YWx1ZS5cbiAqXG4gKiAgIyMgVXNhZ2VcbiAqXG4gKiAgZXhwcmVzc2lvbiB8IGkxOG5TZWxlY3Q6bWFwcGluZ1xuICpcbiAqICB3aGVyZSBgbWFwcGluZ2AgaXMgYW4gb2JqZWN0IHRoYXQgaW5kaWNhdGVzIHRoZSB0ZXh0IHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZFxuICogIGZvciBkaWZmZXJlbnQgdmFsdWVzIG9mIHRoZSBwcm92aWRlZCBgZXhwcmVzc2lvbmAuXG4gKlxuICogICMjIEV4YW1wbGVcbiAqXG4gKiAgYGBgXG4gKiAgPGRpdj5cbiAqICAgIHt7IGdlbmRlciB8IGkxOG5TZWxlY3Q6IGludml0ZU1hcCB9fVxuICogIDwvZGl2PlxuICpcbiAqICBjbGFzcyBNeUFwcCB7XG4gKiAgICBnZW5kZXI6IHN0cmluZyA9ICdtYWxlJztcbiAqICAgIGludml0ZU1hcDogYW55ID0ge1xuICogICAgICAnbWFsZSc6ICdJbnZpdGUgaGVyLicsXG4gKiAgICAgICdmZW1hbGUnOiAnSW52aXRlIGhpbS4nLFxuICogICAgICAnb3RoZXInOiAnSW52aXRlIHRoZW0uJ1xuICogICAgfVxuICogICAgLi4uXG4gKiAgfVxuICogIGBgYFxuICovXG5AQ09OU1QoKVxuQFBpcGUoe25hbWU6ICdpMThuU2VsZWN0JywgcHVyZTogdHJ1ZX0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSTE4blNlbGVjdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIG1hcHBpbmc6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KTogc3RyaW5nIHtcbiAgICBpZiAoIWlzU3RyaW5nTWFwKG1hcHBpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihJMThuU2VsZWN0UGlwZSwgbWFwcGluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZ01hcFdyYXBwZXIuY29udGFpbnMobWFwcGluZywgdmFsdWUpID8gbWFwcGluZ1t2YWx1ZV0gOiBtYXBwaW5nWydvdGhlciddO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * @module\r\n * @description\r\n * This module provides a set of common Pipes.\r\n */\r\nvar async_pipe_1 = require('./async_pipe');\r\nvar uppercase_pipe_1 = require('./uppercase_pipe');\r\nvar lowercase_pipe_1 = require('./lowercase_pipe');\r\nvar json_pipe_1 = require('./json_pipe');\r\nvar slice_pipe_1 = require('./slice_pipe');\r\nvar date_pipe_1 = require('./date_pipe');\r\nvar number_pipe_1 = require('./number_pipe');\r\nvar replace_pipe_1 = require('./replace_pipe');\r\nvar i18n_plural_pipe_1 = require('./i18n_plural_pipe');\r\nvar i18n_select_pipe_1 = require('./i18n_select_pipe');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A collection of Angular core pipes that are likely to be used in each and every\r\n * application.\r\n *\r\n * This collection can be used to quickly enumerate all the built-in pipes in the `pipes`\r\n * property of the `@Component` decorator.\r\n */\r\nexports.COMMON_PIPES = lang_1.CONST_EXPR([\r\n async_pipe_1.AsyncPipe,\r\n uppercase_pipe_1.UpperCasePipe,\r\n lowercase_pipe_1.LowerCasePipe,\r\n json_pipe_1.JsonPipe,\r\n slice_pipe_1.SlicePipe,\r\n number_pipe_1.DecimalPipe,\r\n number_pipe_1.PercentPipe,\r\n number_pipe_1.CurrencyPipe,\r\n date_pipe_1.DatePipe,\r\n replace_pipe_1.ReplacePipe,\r\n i18n_plural_pipe_1.I18nPluralPipe,\r\n i18n_select_pipe_1.I18nSelectPipe\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX3BpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9jb21tb25fcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7QUFDSCwyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFDdkMsK0JBQTRCLGtCQUFrQixDQUFDLENBQUE7QUFDL0MsK0JBQTRCLGtCQUFrQixDQUFDLENBQUE7QUFDL0MsMEJBQXVCLGFBQWEsQ0FBQyxDQUFBO0FBQ3JDLDJCQUF3QixjQUFjLENBQUMsQ0FBQTtBQUN2QywwQkFBdUIsYUFBYSxDQUFDLENBQUE7QUFDckMsNEJBQXFELGVBQWUsQ0FBQyxDQUFBO0FBQ3JFLDZCQUEwQixnQkFBZ0IsQ0FBQyxDQUFBO0FBQzNDLGlDQUE2QixvQkFBb0IsQ0FBQyxDQUFBO0FBQ2xELGlDQUE2QixvQkFBb0IsQ0FBQyxDQUFBO0FBQ2xELHFCQUF5QiwwQkFBMEIsQ0FBQyxDQUFBO0FBRXBEOzs7Ozs7R0FNRztBQUNVLG9CQUFZLEdBQUcsaUJBQVUsQ0FBQztJQUNyQyxzQkFBUztJQUNULDhCQUFhO0lBQ2IsOEJBQWE7SUFDYixvQkFBUTtJQUNSLHNCQUFTO0lBQ1QseUJBQVc7SUFDWCx5QkFBVztJQUNYLDBCQUFZO0lBQ1osb0JBQVE7SUFDUiwwQkFBVztJQUNYLGlDQUFjO0lBQ2QsaUNBQWM7Q0FDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzZXQgb2YgY29tbW9uIFBpcGVzLlxuICovXG5pbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnLi9hc3luY19waXBlJztcbmltcG9ydCB7VXBwZXJDYXNlUGlwZX0gZnJvbSAnLi91cHBlcmNhc2VfcGlwZSc7XG5pbXBvcnQge0xvd2VyQ2FzZVBpcGV9IGZyb20gJy4vbG93ZXJjYXNlX3BpcGUnO1xuaW1wb3J0IHtKc29uUGlwZX0gZnJvbSAnLi9qc29uX3BpcGUnO1xuaW1wb3J0IHtTbGljZVBpcGV9IGZyb20gJy4vc2xpY2VfcGlwZSc7XG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tICcuL2RhdGVfcGlwZSc7XG5pbXBvcnQge0RlY2ltYWxQaXBlLCBQZXJjZW50UGlwZSwgQ3VycmVuY3lQaXBlfSBmcm9tICcuL251bWJlcl9waXBlJztcbmltcG9ydCB7UmVwbGFjZVBpcGV9IGZyb20gJy4vcmVwbGFjZV9waXBlJztcbmltcG9ydCB7STE4blBsdXJhbFBpcGV9IGZyb20gJy4vaTE4bl9wbHVyYWxfcGlwZSc7XG5pbXBvcnQge0kxOG5TZWxlY3RQaXBlfSBmcm9tICcuL2kxOG5fc2VsZWN0X3BpcGUnO1xuaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiBBbmd1bGFyIGNvcmUgcGlwZXMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgaW4gZWFjaCBhbmQgZXZlcnlcbiAqIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY29sbGVjdGlvbiBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGVudW1lcmF0ZSBhbGwgdGhlIGJ1aWx0LWluIHBpcGVzIGluIHRoZSBgcGlwZXNgXG4gKiBwcm9wZXJ0eSBvZiB0aGUgYEBDb21wb25lbnRgIGRlY29yYXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9QSVBFUyA9IENPTlNUX0VYUFIoW1xuICBBc3luY1BpcGUsXG4gIFVwcGVyQ2FzZVBpcGUsXG4gIExvd2VyQ2FzZVBpcGUsXG4gIEpzb25QaXBlLFxuICBTbGljZVBpcGUsXG4gIERlY2ltYWxQaXBlLFxuICBQZXJjZW50UGlwZSxcbiAgQ3VycmVuY3lQaXBlLFxuICBEYXRlUGlwZSxcbiAgUmVwbGFjZVBpcGUsXG4gIEkxOG5QbHVyYWxQaXBlLFxuICBJMThuU2VsZWN0UGlwZVxuXSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * This module provides a set of common Pipes.\r\n */\r\n\"use strict\";\r\nvar async_pipe_1 = require('./pipes/async_pipe');\r\nexports.AsyncPipe = async_pipe_1.AsyncPipe;\r\nvar date_pipe_1 = require('./pipes/date_pipe');\r\nexports.DatePipe = date_pipe_1.DatePipe;\r\nvar json_pipe_1 = require('./pipes/json_pipe');\r\nexports.JsonPipe = json_pipe_1.JsonPipe;\r\nvar slice_pipe_1 = require('./pipes/slice_pipe');\r\nexports.SlicePipe = slice_pipe_1.SlicePipe;\r\nvar lowercase_pipe_1 = require('./pipes/lowercase_pipe');\r\nexports.LowerCasePipe = lowercase_pipe_1.LowerCasePipe;\r\nvar number_pipe_1 = require('./pipes/number_pipe');\r\nexports.NumberPipe = number_pipe_1.NumberPipe;\r\nexports.DecimalPipe = number_pipe_1.DecimalPipe;\r\nexports.PercentPipe = number_pipe_1.PercentPipe;\r\nexports.CurrencyPipe = number_pipe_1.CurrencyPipe;\r\nvar uppercase_pipe_1 = require('./pipes/uppercase_pipe');\r\nexports.UpperCasePipe = uppercase_pipe_1.UpperCasePipe;\r\nvar replace_pipe_1 = require('./pipes/replace_pipe');\r\nexports.ReplacePipe = replace_pipe_1.ReplacePipe;\r\nvar i18n_plural_pipe_1 = require('./pipes/i18n_plural_pipe');\r\nexports.I18nPluralPipe = i18n_plural_pipe_1.I18nPluralPipe;\r\nvar i18n_select_pipe_1 = require('./pipes/i18n_select_pipe');\r\nexports.I18nSelectPipe = i18n_select_pipe_1.I18nSelectPipe;\r\nvar common_pipes_1 = require('./pipes/common_pipes');\r\nexports.COMMON_PIPES = common_pipes_1.COMMON_PIPES;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7O0FBRUgsMkJBQXdCLG9CQUFvQixDQUFDO0FBQXJDLDJDQUFxQztBQUM3QywwQkFBdUIsbUJBQW1CLENBQUM7QUFBbkMsd0NBQW1DO0FBQzNDLDBCQUF1QixtQkFBbUIsQ0FBQztBQUFuQyx3Q0FBbUM7QUFDM0MsMkJBQXdCLG9CQUFvQixDQUFDO0FBQXJDLDJDQUFxQztBQUM3QywrQkFBNEIsd0JBQXdCLENBQUM7QUFBN0MsdURBQTZDO0FBQ3JELDRCQUFpRSxxQkFBcUIsQ0FBQztBQUEvRSw4Q0FBVTtBQUFFLGdEQUFXO0FBQUUsZ0RBQVc7QUFBRSxrREFBeUM7QUFDdkYsK0JBQTRCLHdCQUF3QixDQUFDO0FBQTdDLHVEQUE2QztBQUNyRCw2QkFBMEIsc0JBQXNCLENBQUM7QUFBekMsaURBQXlDO0FBQ2pELGlDQUE2QiwwQkFBMEIsQ0FBQztBQUFoRCwyREFBZ0Q7QUFDeEQsaUNBQTZCLDBCQUEwQixDQUFDO0FBQWhELDJEQUFnRDtBQUN4RCw2QkFBMkIsc0JBQXNCLENBQUM7QUFBMUMsbURBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIGNvbW1vbiBQaXBlcy5cbiAqL1xuXG5leHBvcnQge0FzeW5jUGlwZX0gZnJvbSAnLi9waXBlcy9hc3luY19waXBlJztcbmV4cG9ydCB7RGF0ZVBpcGV9IGZyb20gJy4vcGlwZXMvZGF0ZV9waXBlJztcbmV4cG9ydCB7SnNvblBpcGV9IGZyb20gJy4vcGlwZXMvanNvbl9waXBlJztcbmV4cG9ydCB7U2xpY2VQaXBlfSBmcm9tICcuL3BpcGVzL3NsaWNlX3BpcGUnO1xuZXhwb3J0IHtMb3dlckNhc2VQaXBlfSBmcm9tICcuL3BpcGVzL2xvd2VyY2FzZV9waXBlJztcbmV4cG9ydCB7TnVtYmVyUGlwZSwgRGVjaW1hbFBpcGUsIFBlcmNlbnRQaXBlLCBDdXJyZW5jeVBpcGV9IGZyb20gJy4vcGlwZXMvbnVtYmVyX3BpcGUnO1xuZXhwb3J0IHtVcHBlckNhc2VQaXBlfSBmcm9tICcuL3BpcGVzL3VwcGVyY2FzZV9waXBlJztcbmV4cG9ydCB7UmVwbGFjZVBpcGV9IGZyb20gJy4vcGlwZXMvcmVwbGFjZV9waXBlJztcbmV4cG9ydCB7STE4blBsdXJhbFBpcGV9IGZyb20gJy4vcGlwZXMvaTE4bl9wbHVyYWxfcGlwZSc7XG5leHBvcnQge0kxOG5TZWxlY3RQaXBlfSBmcm9tICcuL3BpcGVzL2kxOG5fc2VsZWN0X3BpcGUnO1xuZXhwb3J0IHtDT01NT05fUElQRVN9IGZyb20gJy4vcGlwZXMvY29tbW9uX3BpcGVzJztcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar control_container_1 = require('./control_container');\r\nvar ng_control_1 = require('./ng_control');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar controlNameBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, { useExisting: core_1.forwardRef(function () { return NgControlName; }) }));\r\n/**\r\n * Creates and binds a control with a specified name to a DOM element.\r\n *\r\n * This directive can only be used as a child of {@link NgForm} or {@link NgFormModel}.\r\n\r\n * ### Example\r\n *\r\n * In this example, we create the login and password controls.\r\n * We can work with each control separately: check its validity, get its value, listen to its\r\n * changes.\r\n *\r\n * ```\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <form #f=\"ngForm\" (submit)='onLogIn(f.value)'>\r\n * Login <input type='text' ngControl='login' #l=\"form\">\r\n * <div *ngIf=\"!l.valid\">Login is invalid</div>\r\n *\r\n * Password <input type='password' ngControl='password'>\r\n * <button type='submit'>Log in!</button>\r\n * </form>\r\n * `})\r\n * class LoginComp {\r\n * onLogIn(value): void {\r\n * // value === {login: 'some login', password: 'some password'}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can also use ngModel to bind a domain model to the form.\r\n *\r\n * ```\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <form (submit)='onLogIn()'>\r\n * Login <input type='text' ngControl='login' [(ngModel)]=\"credentials.login\">\r\n * Password <input type='password' ngControl='password'\r\n * [(ngModel)]=\"credentials.password\">\r\n * <button type='submit'>Log in!</button>\r\n * </form>\r\n * `})\r\n * class LoginComp {\r\n * credentials: {login:string, password:string};\r\n *\r\n * onLogIn(): void {\r\n * // this.credentials.login === \"some login\"\r\n * // this.credentials.password === \"some password\"\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgControlName = (function (_super) {\r\n __extends(NgControlName, _super);\r\n function NgControlName(_parent, _validators, _asyncValidators, valueAccessors) {\r\n _super.call(this);\r\n this._parent = _parent;\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n /** @internal */\r\n this.update = new async_1.EventEmitter();\r\n this._added = false;\r\n this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);\r\n }\r\n NgControlName.prototype.ngOnChanges = function (changes) {\r\n if (!this._added) {\r\n this.formDirective.addControl(this);\r\n this._added = true;\r\n }\r\n if (shared_1.isPropertyUpdated(changes, this.viewModel)) {\r\n this.viewModel = this.model;\r\n this.formDirective.updateModel(this, this.model);\r\n }\r\n };\r\n NgControlName.prototype.ngOnDestroy = function () { this.formDirective.removeControl(this); };\r\n NgControlName.prototype.viewToModelUpdate = function (newValue) {\r\n this.viewModel = newValue;\r\n async_1.ObservableWrapper.callEmit(this.update, newValue);\r\n };\r\n Object.defineProperty(NgControlName.prototype, \"path\", {\r\n get: function () { return shared_1.controlPath(this.name, this._parent); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"formDirective\", {\r\n get: function () { return this._parent.formDirective; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"control\", {\r\n get: function () { return this.formDirective.getControl(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgControlName = __decorate([\r\n core_1.Directive({\r\n selector: '[ngControl]',\r\n bindings: [controlNameBinding],\r\n inputs: ['name: ngControl', 'model: ngModel'],\r\n outputs: ['update: ngModelChange'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Host()),\r\n __param(0, core_1.SkipSelf()),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)),\r\n __param(3, core_1.Optional()),\r\n __param(3, core_1.Self()),\r\n __param(3, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), \r\n __metadata('design:paramtypes', [control_container_1.ControlContainer, Array, Array, Array])\r\n ], NgControlName);\r\n return NgControlName;\r\n}(ng_control_1.NgControl));\r\nexports.NgControlName = NgControlName;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbF9uYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL25nX2NvbnRyb2xfbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRCxzQkFBOEMsMkJBQTJCLENBQUMsQ0FBQTtBQUUxRSxxQkFhTyxlQUFlLENBQUMsQ0FBQTtBQUV2QixrQ0FBK0IscUJBQXFCLENBQUMsQ0FBQTtBQUNyRCwyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFDdkMsdUNBQXNELDBCQUEwQixDQUFDLENBQUE7QUFDakYsdUJBTU8sVUFBVSxDQUFDLENBQUE7QUFFbEIsMkJBQWlELGVBQWUsQ0FBQyxDQUFBO0FBSWpFLElBQU0sa0JBQWtCLEdBQ3BCLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQUMsc0JBQVMsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxhQUFhLEVBQWIsQ0FBYSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNERztBQVFIO0lBQW1DLGlDQUFTO0lBUTFDLHVCQUF3QyxPQUF5QixFQUNGLFdBQ1YsRUFDZ0IsZ0JBQ2hCLEVBRXpDLGNBQXNDO1FBQ2hELGlCQUFPLENBQUM7UUFQOEIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDRixnQkFBVyxHQUFYLFdBQVcsQ0FDckI7UUFDZ0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUNoQztRQVZyRCxnQkFBZ0I7UUFDaEIsV0FBTSxHQUFHLElBQUksb0JBQVksRUFBRSxDQUFDO1FBR3BCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFVckIsSUFBSSxDQUFDLGFBQWEsR0FBRyw0QkFBbUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELG1DQUFXLEdBQVgsVUFBWSxPQUFzQztRQUNoRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQywwQkFBaUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1DQUFXLEdBQVgsY0FBc0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9ELHlDQUFpQixHQUFqQixVQUFrQixRQUFhO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLHlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxzQkFBSSwrQkFBSTthQUFSLGNBQXVCLE1BQU0sQ0FBQyxvQkFBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFckUsc0JBQUksd0NBQWE7YUFBakIsY0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFL0Qsc0JBQUksb0NBQVM7YUFBYixjQUErQixNQUFNLENBQUMsMEJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFNUUsc0JBQUkseUNBQWM7YUFBbEIsY0FBeUMsTUFBTSxDQUFDLCtCQUFzQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFaEcsc0JBQUksa0NBQU87YUFBWCxjQUF5QixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQXBEeEU7UUFBQyxnQkFBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGFBQWE7WUFDdkIsUUFBUSxFQUFFLENBQUMsa0JBQWtCLENBQUM7WUFDOUIsTUFBTSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUM7WUFDN0MsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7WUFDbEMsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQzttQkFTYSxXQUFJLEVBQUU7bUJBQUUsZUFBUSxFQUFFO21CQUNsQixlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQywwQkFBYSxDQUFDO21CQUV6QyxlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQyxnQ0FBbUIsQ0FBQzttQkFFL0MsZUFBUSxFQUFFO21CQUFFLFdBQUksRUFBRTttQkFBRSxhQUFNLENBQUMsMENBQWlCLENBQUM7O3FCQWQxRDtJQStDRixvQkFBQztBQUFELENBQUMsQUE5Q0QsQ0FBbUMsc0JBQVMsR0E4QzNDO0FBOUNZLHFCQUFhLGdCQThDekIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7RXZlbnRFbWl0dGVyLCBPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5cbmltcG9ydCB7XG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFF1ZXJ5LFxuICBEaXJlY3RpdmUsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3QsXG4gIFNraXBTZWxmLFxuICBQcm92aWRlcixcbiAgSW5qZWN0LFxuICBPcHRpb25hbCxcbiAgU2VsZlxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuaW1wb3J0IHtDb250cm9sQ29udGFpbmVyfSBmcm9tICcuL2NvbnRyb2xfY29udGFpbmVyJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICcuL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge1xuICBjb250cm9sUGF0aCxcbiAgY29tcG9zZVZhbGlkYXRvcnMsXG4gIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnMsXG4gIGlzUHJvcGVydHlVcGRhdGVkLFxuICBzZWxlY3RWYWx1ZUFjY2Vzc29yXG59IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7Q29udHJvbH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19BU1lOQ19WQUxJREFUT1JTfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7VmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm59IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cblxuY29uc3QgY29udHJvbE5hbWVCaW5kaW5nID1cbiAgICBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihOZ0NvbnRyb2wsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ0NvbnRyb2xOYW1lKX0pKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBiaW5kcyBhIGNvbnRyb2wgd2l0aCBhIHNwZWNpZmllZCBuYW1lIHRvIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgY2FuIG9ubHkgYmUgdXNlZCBhcyBhIGNoaWxkIG9mIHtAbGluayBOZ0Zvcm19IG9yIHtAbGluayBOZ0Zvcm1Nb2RlbH0uXG5cbiAqICMjIyBFeGFtcGxlXG4gKlxuICogSW4gdGhpcyBleGFtcGxlLCB3ZSBjcmVhdGUgdGhlIGxvZ2luIGFuZCBwYXNzd29yZCBjb250cm9scy5cbiAqIFdlIGNhbiB3b3JrIHdpdGggZWFjaCBjb250cm9sIHNlcGFyYXRlbHk6IGNoZWNrIGl0cyB2YWxpZGl0eSwgZ2V0IGl0cyB2YWx1ZSwgbGlzdGVuIHRvIGl0c1xuICogY2hhbmdlcy5cbiAqXG4gKiAgYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgICAgc2VsZWN0b3I6IFwibG9naW4tY29tcFwiLFxuICogICAgICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTXSxcbiAqICAgICAgdGVtcGxhdGU6IGBcbiAqICAgICAgICA8Zm9ybSAjZj1cIm5nRm9ybVwiIChzdWJtaXQpPSdvbkxvZ0luKGYudmFsdWUpJz5cbiAqICAgICAgICAgIExvZ2luIDxpbnB1dCB0eXBlPSd0ZXh0JyBuZ0NvbnRyb2w9J2xvZ2luJyAjbD1cImZvcm1cIj5cbiAqICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbC52YWxpZFwiPkxvZ2luIGlzIGludmFsaWQ8L2Rpdj5cbiAqXG4gKiAgICAgICAgICBQYXNzd29yZCA8aW5wdXQgdHlwZT0ncGFzc3dvcmQnIG5nQ29udHJvbD0ncGFzc3dvcmQnPlxuICogICAgICAgICAgPGJ1dHRvbiB0eXBlPSdzdWJtaXQnPkxvZyBpbiE8L2J1dHRvbj5cbiAqICAgICAgICA8L2Zvcm0+XG4gKiAgICAgIGB9KVxuICogY2xhc3MgTG9naW5Db21wIHtcbiAqICBvbkxvZ0luKHZhbHVlKTogdm9pZCB7XG4gKiAgICAvLyB2YWx1ZSA9PT0ge2xvZ2luOiAnc29tZSBsb2dpbicsIHBhc3N3b3JkOiAnc29tZSBwYXNzd29yZCd9XG4gKiAgfVxuICogfVxuICogIGBgYFxuICpcbiAqIFdlIGNhbiBhbHNvIHVzZSBuZ01vZGVsIHRvIGJpbmQgYSBkb21haW4gbW9kZWwgdG8gdGhlIGZvcm0uXG4gKlxuICogIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgICAgIHNlbGVjdG9yOiBcImxvZ2luLWNvbXBcIixcbiAqICAgICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU10sXG4gKiAgICAgIHRlbXBsYXRlOiBgXG4gKiAgICAgICAgPGZvcm0gKHN1Ym1pdCk9J29uTG9nSW4oKSc+XG4gKiAgICAgICAgICBMb2dpbiA8aW5wdXQgdHlwZT0ndGV4dCcgbmdDb250cm9sPSdsb2dpbicgWyhuZ01vZGVsKV09XCJjcmVkZW50aWFscy5sb2dpblwiPlxuICogICAgICAgICAgUGFzc3dvcmQgPGlucHV0IHR5cGU9J3Bhc3N3b3JkJyBuZ0NvbnRyb2w9J3Bhc3N3b3JkJ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3JlZGVudGlhbHMucGFzc3dvcmRcIj5cbiAqICAgICAgICAgIDxidXR0b24gdHlwZT0nc3VibWl0Jz5Mb2cgaW4hPC9idXR0b24+XG4gKiAgICAgICAgPC9mb3JtPlxuICogICAgICBgfSlcbiAqIGNsYXNzIExvZ2luQ29tcCB7XG4gKiAgY3JlZGVudGlhbHM6IHtsb2dpbjpzdHJpbmcsIHBhc3N3b3JkOnN0cmluZ307XG4gKlxuICogIG9uTG9nSW4oKTogdm9pZCB7XG4gKiAgICAvLyB0aGlzLmNyZWRlbnRpYWxzLmxvZ2luID09PSBcInNvbWUgbG9naW5cIlxuICogICAgLy8gdGhpcy5jcmVkZW50aWFscy5wYXNzd29yZCA9PT0gXCJzb21lIHBhc3N3b3JkXCJcbiAqICB9XG4gKiB9XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ0NvbnRyb2xdJyxcbiAgYmluZGluZ3M6IFtjb250cm9sTmFtZUJpbmRpbmddLFxuICBpbnB1dHM6IFsnbmFtZTogbmdDb250cm9sJywgJ21vZGVsOiBuZ01vZGVsJ10sXG4gIG91dHB1dHM6IFsndXBkYXRlOiBuZ01vZGVsQ2hhbmdlJ10sXG4gIGV4cG9ydEFzOiAnbmdGb3JtJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ0NvbnRyb2xOYW1lIGV4dGVuZHMgTmdDb250cm9sIGltcGxlbWVudHMgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBtb2RlbDogYW55O1xuICB2aWV3TW9kZWw6IGFueTtcbiAgcHJpdmF0ZSBfYWRkZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgX3BhcmVudDogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6XG4gICAgICAgICAgICAgICAgICAvKiBBcnJheTxWYWxpZGF0b3J8RnVuY3Rpb24+ICovIGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOlxuICAgICAgICAgICAgICAgICAgLyogQXJyYXk8VmFsaWRhdG9yfEZ1bmN0aW9uPiAqLyBhbnlbXSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTFVFX0FDQ0VTU09SKVxuICAgICAgICAgICAgICB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZUFjY2Vzc29yID0gc2VsZWN0VmFsdWVBY2Nlc3Nvcih0aGlzLCB2YWx1ZUFjY2Vzc29ycyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7W2tleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlfSkge1xuICAgIGlmICghdGhpcy5fYWRkZWQpIHtcbiAgICAgIHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpO1xuICAgICAgdGhpcy5fYWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoaXNQcm9wZXJ0eVVwZGF0ZWQoY2hhbmdlcywgdGhpcy52aWV3TW9kZWwpKSB7XG4gICAgICB0aGlzLnZpZXdNb2RlbCA9IHRoaXMubW9kZWw7XG4gICAgICB0aGlzLmZvcm1EaXJlY3RpdmUudXBkYXRlTW9kZWwodGhpcywgdGhpcy5tb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7IHRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHRoaXMpOyB9XG5cbiAgdmlld1RvTW9kZWxVcGRhdGUobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmlld01vZGVsID0gbmV3VmFsdWU7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy51cGRhdGUsIG5ld1ZhbHVlKTtcbiAgfVxuXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIGNvbnRyb2xQYXRoKHRoaXMubmFtZSwgdGhpcy5fcGFyZW50KTsgfVxuXG4gIGdldCBmb3JtRGlyZWN0aXZlKCk6IGFueSB7IHJldHVybiB0aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTsgfVxuXG4gIGdldCB2YWxpZGF0b3IoKTogVmFsaWRhdG9yRm4geyByZXR1cm4gY29tcG9zZVZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7IH1cblxuICBnZXQgYXN5bmNWYWxpZGF0b3IoKTogQXN5bmNWYWxpZGF0b3JGbiB7IHJldHVybiBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7IH1cblxuICBnZXQgY29udHJvbCgpOiBDb250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRDb250cm9sKHRoaXMpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar ng_control_1 = require('./ng_control');\r\nvar validators_1 = require('../validators');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar shared_1 = require('./shared');\r\nvar formControlBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, { useExisting: core_1.forwardRef(function () { return NgFormControl; }) }));\r\n/**\r\n * Binds an existing {@link Control} to a DOM element.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/jcQlZ2tTh22BZZ2ucNAT?p=preview))\r\n *\r\n * In this example, we bind the control to an input element. When the value of the input element\r\n * changes, the value of the control will reflect that change. Likewise, if the value of the\r\n * control changes, the input element reflects that change.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * template: `\r\n * <div>\r\n * <h2>NgFormControl Example</h2>\r\n * <form>\r\n * <p>Element with existing control: <input type=\"text\"\r\n * [ngFormControl]=\"loginControl\"></p>\r\n * <p>Value of existing control: {{loginControl.value}}</p>\r\n * </form>\r\n * </div>\r\n * `,\r\n * directives: [CORE_DIRECTIVES, FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * loginControl: Control = new Control('');\r\n * }\r\n * ```\r\n *\r\n * ### ngModel\r\n *\r\n * We can also use `ngModel` to bind a domain model to the form.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/yHMLuHO7DNgT8XvtjTDH?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: \"<input type='text' [ngFormControl]='loginControl' [(ngModel)]='login'>\"\r\n * })\r\n * class LoginComp {\r\n * loginControl: Control = new Control('');\r\n * login:string;\r\n * }\r\n * ```\r\n */\r\nvar NgFormControl = (function (_super) {\r\n __extends(NgFormControl, _super);\r\n function NgFormControl(_validators, _asyncValidators, valueAccessors) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n this.update = new async_1.EventEmitter();\r\n this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);\r\n }\r\n NgFormControl.prototype.ngOnChanges = function (changes) {\r\n if (this._isControlChanged(changes)) {\r\n shared_1.setUpControl(this.form, this);\r\n this.form.updateValueAndValidity({ emitEvent: false });\r\n }\r\n if (shared_1.isPropertyUpdated(changes, this.viewModel)) {\r\n this.form.updateValue(this.model);\r\n this.viewModel = this.model;\r\n }\r\n };\r\n Object.defineProperty(NgFormControl.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormControl.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormControl.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormControl.prototype, \"control\", {\r\n get: function () { return this.form; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgFormControl.prototype.viewToModelUpdate = function (newValue) {\r\n this.viewModel = newValue;\r\n async_1.ObservableWrapper.callEmit(this.update, newValue);\r\n };\r\n NgFormControl.prototype._isControlChanged = function (changes) {\r\n return collection_1.StringMapWrapper.contains(changes, \"form\");\r\n };\r\n NgFormControl = __decorate([\r\n core_1.Directive({\r\n selector: '[ngFormControl]',\r\n bindings: [formControlBinding],\r\n inputs: ['form: ngFormControl', 'model: ngModel'],\r\n outputs: ['update: ngModelChange'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), \r\n __metadata('design:paramtypes', [Array, Array, Array])\r\n ], NgFormControl);\r\n return NgFormControl;\r\n}(ng_control_1.NgControl));\r\nexports.NgFormControl = NgFormControl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9ybV9jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL25nX2Zvcm1fY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRCwyQkFBK0IsZ0NBQWdDLENBQUMsQ0FBQTtBQUNoRSxzQkFBOEMsMkJBQTJCLENBQUMsQ0FBQTtBQUMxRSxxQkFVTyxlQUFlLENBQUMsQ0FBQTtBQUN2QiwyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFFdkMsMkJBQTZELGVBQWUsQ0FBQyxDQUFBO0FBQzdFLHVDQUFzRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pGLHVCQU1PLFVBQVUsQ0FBQyxDQUFBO0FBR2xCLElBQU0sa0JBQWtCLEdBQ3BCLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQUMsc0JBQVMsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxhQUFhLEVBQWIsQ0FBYSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFRSDtJQUFtQyxpQ0FBUztJQU0xQyx1QkFBK0QsV0FDVixFQUNnQixnQkFDaEIsRUFFekMsY0FBc0M7UUFDaEQsaUJBQU8sQ0FBQztRQU5xRCxnQkFBVyxHQUFYLFdBQVcsQ0FDckI7UUFDZ0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUNoQztRQVByRCxXQUFNLEdBQUcsSUFBSSxvQkFBWSxFQUFFLENBQUM7UUFXMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyw0QkFBbUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELG1DQUFXLEdBQVgsVUFBWSxPQUFzQztRQUNoRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLHFCQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLDBCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBSSwrQkFBSTthQUFSLGNBQXVCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUVuQyxzQkFBSSxvQ0FBUzthQUFiLGNBQStCLE1BQU0sQ0FBQywwQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUU1RSxzQkFBSSx5Q0FBYzthQUFsQixjQUF5QyxNQUFNLENBQUMsK0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUVoRyxzQkFBSSxrQ0FBTzthQUFYLGNBQXlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFNUMseUNBQWlCLEdBQWpCLFVBQWtCLFFBQWE7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIseUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLHlDQUFpQixHQUF6QixVQUEwQixPQUE2QjtRQUNyRCxNQUFNLENBQUMsNkJBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBakRIO1FBQUMsZ0JBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsUUFBUSxFQUFFLENBQUMsa0JBQWtCLENBQUM7WUFDOUIsTUFBTSxFQUFFLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7WUFDbEMsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQzttQkFPYSxlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQywwQkFBYSxDQUFDO21CQUV6QyxlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQyxnQ0FBbUIsQ0FBQzttQkFFL0MsZUFBUSxFQUFFO21CQUFFLFdBQUksRUFBRTttQkFBRSxhQUFNLENBQUMsMENBQWlCLENBQUM7O3FCQVgxRDtJQTRDRixvQkFBQztBQUFELENBQUMsQUEzQ0QsQ0FBbUMsc0JBQVMsR0EyQzNDO0FBM0NZLHFCQUFhLGdCQTJDekIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7RXZlbnRFbWl0dGVyLCBPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge1xuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZSxcbiAgUXVlcnksXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGZcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnLi9uZ19jb250cm9sJztcbmltcG9ydCB7Q29udHJvbH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtWYWxpZGF0b3JzLCBOR19WQUxJREFUT1JTLCBOR19BU1lOQ19WQUxJREFUT1JTfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICcuL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtcbiAgc2V0VXBDb250cm9sLFxuICBjb21wb3NlVmFsaWRhdG9ycyxcbiAgY29tcG9zZUFzeW5jVmFsaWRhdG9ycyxcbiAgaXNQcm9wZXJ0eVVwZGF0ZWQsXG4gIHNlbGVjdFZhbHVlQWNjZXNzb3Jcbn0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbn0gZnJvbSAnLi92YWxpZGF0b3JzJztcblxuY29uc3QgZm9ybUNvbnRyb2xCaW5kaW5nID1cbiAgICBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihOZ0NvbnRyb2wsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ0Zvcm1Db250cm9sKX0pKTtcblxuLyoqXG4gKiBCaW5kcyBhbiBleGlzdGluZyB7QGxpbmsgQ29udHJvbH0gdG8gYSBET00gZWxlbWVudC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvamNRbFoydFRoMjJCWloydWNOQVQ/cD1wcmV2aWV3KSlcbiAqXG4gKiBJbiB0aGlzIGV4YW1wbGUsIHdlIGJpbmQgdGhlIGNvbnRyb2wgdG8gYW4gaW5wdXQgZWxlbWVudC4gV2hlbiB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGVsZW1lbnRcbiAqIGNoYW5nZXMsIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCB3aWxsIHJlZmxlY3QgdGhhdCBjaGFuZ2UuIExpa2V3aXNlLCBpZiB0aGUgdmFsdWUgb2YgdGhlXG4gKiBjb250cm9sIGNoYW5nZXMsIHRoZSBpbnB1dCBlbGVtZW50IHJlZmxlY3RzIHRoYXQgY2hhbmdlLlxuICpcbiAqICBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8aDI+TmdGb3JtQ29udHJvbCBFeGFtcGxlPC9oMj5cbiAqICAgICAgIDxmb3JtPlxuICogICAgICAgICA8cD5FbGVtZW50IHdpdGggZXhpc3RpbmcgY29udHJvbDogPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAqIFtuZ0Zvcm1Db250cm9sXT1cImxvZ2luQ29udHJvbFwiPjwvcD5cbiAqICAgICAgICAgPHA+VmFsdWUgb2YgZXhpc3RpbmcgY29udHJvbDoge3tsb2dpbkNvbnRyb2wudmFsdWV9fTwvcD5cbiAqICAgICAgIDwvZm9ybT5cbiAqICAgICA8L2Rpdj5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0NPUkVfRElSRUNUSVZFUywgRk9STV9ESVJFQ1RJVkVTXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogICBsb2dpbkNvbnRyb2w6IENvbnRyb2wgPSBuZXcgQ29udHJvbCgnJyk7XG4gKiB9XG4gKiAgYGBgXG4gKlxuICogIyMjIG5nTW9kZWxcbiAqXG4gKiBXZSBjYW4gYWxzbyB1c2UgYG5nTW9kZWxgIHRvIGJpbmQgYSBkb21haW4gbW9kZWwgdG8gdGhlIGZvcm0uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3lITUx1SE83RE5nVDhYdnRqVERIP3A9cHJldmlldykpXG4gKlxuICogIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICAgICBzZWxlY3RvcjogXCJsb2dpbi1jb21wXCIsXG4gKiAgICAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVNdLFxuICogICAgICB0ZW1wbGF0ZTogXCI8aW5wdXQgdHlwZT0ndGV4dCcgW25nRm9ybUNvbnRyb2xdPSdsb2dpbkNvbnRyb2wnIFsobmdNb2RlbCldPSdsb2dpbic+XCJcbiAqICAgICAgfSlcbiAqIGNsYXNzIExvZ2luQ29tcCB7XG4gKiAgbG9naW5Db250cm9sOiBDb250cm9sID0gbmV3IENvbnRyb2woJycpO1xuICogIGxvZ2luOnN0cmluZztcbiAqIH1cbiAqICBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nRm9ybUNvbnRyb2xdJyxcbiAgYmluZGluZ3M6IFtmb3JtQ29udHJvbEJpbmRpbmddLFxuICBpbnB1dHM6IFsnZm9ybTogbmdGb3JtQ29udHJvbCcsICdtb2RlbDogbmdNb2RlbCddLFxuICBvdXRwdXRzOiBbJ3VwZGF0ZTogbmdNb2RlbENoYW5nZSddLFxuICBleHBvcnRBczogJ25nRm9ybSdcbn0pXG5leHBvcnQgY2xhc3MgTmdGb3JtQ29udHJvbCBleHRlbmRzIE5nQ29udHJvbCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIGZvcm06IENvbnRyb2w7XG4gIHVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgbW9kZWw6IGFueTtcbiAgdmlld01vZGVsOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6XG4gICAgICAgICAgICAgICAgICAvKiBBcnJheTxWYWxpZGF0b3J8RnVuY3Rpb24+ICovIGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOlxuICAgICAgICAgICAgICAgICAgLyogQXJyYXk8VmFsaWRhdG9yfEZ1bmN0aW9uPiAqLyBhbnlbXSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTFVFX0FDQ0VTU09SKVxuICAgICAgICAgICAgICB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZUFjY2Vzc29yID0gc2VsZWN0VmFsdWVBY2Nlc3Nvcih0aGlzLCB2YWx1ZUFjY2Vzc29ycyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7W2tleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0NvbnRyb2xDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICBzZXRVcENvbnRyb2wodGhpcy5mb3JtLCB0aGlzKTtcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIGlmIChpc1Byb3BlcnR5VXBkYXRlZChjaGFuZ2VzLCB0aGlzLnZpZXdNb2RlbCkpIHtcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICAgIHRoaXMudmlld01vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgcGF0aCgpOiBzdHJpbmdbXSB7IHJldHVybiBbXTsgfVxuXG4gIGdldCB2YWxpZGF0b3IoKTogVmFsaWRhdG9yRm4geyByZXR1cm4gY29tcG9zZVZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7IH1cblxuICBnZXQgYXN5bmNWYWxpZGF0b3IoKTogQXN5bmNWYWxpZGF0b3JGbiB7IHJldHVybiBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7IH1cblxuICBnZXQgY29udHJvbCgpOiBDb250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybTsgfVxuXG4gIHZpZXdUb01vZGVsVXBkYXRlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlbCA9IG5ld1ZhbHVlO1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMudXBkYXRlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9pc0NvbnRyb2xDaGFuZ2VkKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFN0cmluZ01hcFdyYXBwZXIuY29udGFpbnMoY2hhbmdlcywgXCJmb3JtXCIpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar ng_control_1 = require('./ng_control');\r\nvar model_1 = require('../model');\r\nvar validators_1 = require('../validators');\r\nvar shared_1 = require('./shared');\r\nvar formControlBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, { useExisting: core_1.forwardRef(function () { return NgModel; }) }));\r\n/**\r\n * Binds a domain model to a form control.\r\n *\r\n * ### Usage\r\n *\r\n * `ngModel` binds an existing domain model to a form control. For a\r\n * two-way binding, use `[(ngModel)]` to ensure the model updates in\r\n * both directions.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/R3UX5qDaUqFO2VYR0UzH?p=preview))\r\n * ```typescript\r\n * @Component({\r\n * selector: \"search-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `<input type='text' [(ngModel)]=\"searchQuery\">`\r\n * })\r\n * class SearchComp {\r\n * searchQuery: string;\r\n * }\r\n * ```\r\n */\r\nvar NgModel = (function (_super) {\r\n __extends(NgModel, _super);\r\n function NgModel(_validators, _asyncValidators, valueAccessors) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n /** @internal */\r\n this._control = new model_1.Control();\r\n /** @internal */\r\n this._added = false;\r\n this.update = new async_1.EventEmitter();\r\n this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);\r\n }\r\n NgModel.prototype.ngOnChanges = function (changes) {\r\n if (!this._added) {\r\n shared_1.setUpControl(this._control, this);\r\n this._control.updateValueAndValidity({ emitEvent: false });\r\n this._added = true;\r\n }\r\n if (shared_1.isPropertyUpdated(changes, this.viewModel)) {\r\n this._control.updateValue(this.model);\r\n this.viewModel = this.model;\r\n }\r\n };\r\n Object.defineProperty(NgModel.prototype, \"control\", {\r\n get: function () { return this._control; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgModel.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgModel.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgModel.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgModel.prototype.viewToModelUpdate = function (newValue) {\r\n this.viewModel = newValue;\r\n async_1.ObservableWrapper.callEmit(this.update, newValue);\r\n };\r\n NgModel = __decorate([\r\n core_1.Directive({\r\n selector: '[ngModel]:not([ngControl]):not([ngFormControl])',\r\n bindings: [formControlBinding],\r\n inputs: ['model: ngModel'],\r\n outputs: ['update: ngModelChange'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), \r\n __metadata('design:paramtypes', [Array, Array, Array])\r\n ], NgModel);\r\n return NgModel;\r\n}(ng_control_1.NgControl));\r\nexports.NgModel = NgModel;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFDcEQsc0JBQThDLDJCQUEyQixDQUFDLENBQUE7QUFDMUUscUJBU08sZUFBZSxDQUFDLENBQUE7QUFDdkIsdUNBQXNELDBCQUEwQixDQUFDLENBQUE7QUFDakYsMkJBQXdCLGNBQWMsQ0FBQyxDQUFBO0FBQ3ZDLHNCQUFzQixVQUFVLENBQUMsQ0FBQTtBQUNqQywyQkFBaUQsZUFBZSxDQUFDLENBQUE7QUFDakUsdUJBTU8sVUFBVSxDQUFDLENBQUE7QUFHbEIsSUFBTSxrQkFBa0IsR0FDcEIsaUJBQVUsQ0FBQyxJQUFJLGVBQVEsQ0FBQyxzQkFBUyxFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLE9BQU8sRUFBUCxDQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFRSDtJQUE2QiwyQkFBUztJQVNwQyxpQkFBK0QsV0FBa0IsRUFDWixnQkFBdUIsRUFFaEYsY0FBc0M7UUFDaEQsaUJBQU8sQ0FBQztRQUpxRCxnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQUNaLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBTztRQVQ1RixnQkFBZ0I7UUFDaEIsYUFBUSxHQUFHLElBQUksZUFBTyxFQUFFLENBQUM7UUFDekIsZ0JBQWdCO1FBQ2hCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsSUFBSSxvQkFBWSxFQUFFLENBQUM7UUFTMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyw0QkFBbUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELDZCQUFXLEdBQVgsVUFBWSxPQUFzQztRQUNoRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLHFCQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLDBCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBSSw0QkFBTzthQUFYLGNBQXlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFaEQsc0JBQUkseUJBQUk7YUFBUixjQUF1QixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFbkMsc0JBQUksOEJBQVM7YUFBYixjQUErQixNQUFNLENBQUMsMEJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFNUUsc0JBQUksbUNBQWM7YUFBbEIsY0FBeUMsTUFBTSxDQUFDLCtCQUFzQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFaEcsbUNBQWlCLEdBQWpCLFVBQWtCLFFBQWE7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIseUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQWhESDtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsaURBQWlEO1lBQzNELFFBQVEsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQzlCLE1BQU0sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQzFCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO1lBQ2xDLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUM7bUJBVWEsZUFBUSxFQUFFO21CQUFFLFdBQUksRUFBRTttQkFBRSxhQUFNLENBQUMsMEJBQWEsQ0FBQzttQkFDekMsZUFBUSxFQUFFO21CQUFFLFdBQUksRUFBRTttQkFBRSxhQUFNLENBQUMsZ0NBQW1CLENBQUM7bUJBQy9DLGVBQVEsRUFBRTttQkFBRSxXQUFJLEVBQUU7bUJBQUUsYUFBTSxDQUFDLDBDQUFpQixDQUFDOztlQVoxRDtJQTJDRixjQUFDO0FBQUQsQ0FBQyxBQTFDRCxDQUE2QixzQkFBUyxHQTBDckM7QUExQ1ksZUFBTyxVQTBDbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7RXZlbnRFbWl0dGVyLCBPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge1xuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZSxcbiAgRGlyZWN0aXZlLFxuICBmb3J3YXJkUmVmLFxuICBQcm92aWRlcixcbiAgSW5qZWN0LFxuICBPcHRpb25hbCxcbiAgU2VsZlxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICcuL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vbmdfY29udHJvbCc7XG5pbXBvcnQge0NvbnRyb2x9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfQVNZTkNfVkFMSURBVE9SU30gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQge1xuICBzZXRVcENvbnRyb2wsXG4gIGlzUHJvcGVydHlVcGRhdGVkLFxuICBzZWxlY3RWYWx1ZUFjY2Vzc29yLFxuICBjb21wb3NlVmFsaWRhdG9ycyxcbiAgY29tcG9zZUFzeW5jVmFsaWRhdG9yc1xufSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQge1ZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZufSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG5jb25zdCBmb3JtQ29udHJvbEJpbmRpbmcgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKE5nQ29udHJvbCwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nTW9kZWwpfSkpO1xuXG4vKipcbiAqIEJpbmRzIGEgZG9tYWluIG1vZGVsIHRvIGEgZm9ybSBjb250cm9sLlxuICpcbiAqICMjIyBVc2FnZVxuICpcbiAqIGBuZ01vZGVsYCBiaW5kcyBhbiBleGlzdGluZyBkb21haW4gbW9kZWwgdG8gYSBmb3JtIGNvbnRyb2wuIEZvciBhXG4gKiB0d28td2F5IGJpbmRpbmcsIHVzZSBgWyhuZ01vZGVsKV1gIHRvIGVuc3VyZSB0aGUgbW9kZWwgdXBkYXRlcyBpblxuICogYm90aCBkaXJlY3Rpb25zLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9SM1VYNXFEYVVxRk8yVllSMFV6SD9wPXByZXZpZXcpKVxuICogIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICAgICBzZWxlY3RvcjogXCJzZWFyY2gtY29tcFwiLFxuICogICAgICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTXSxcbiAqICAgICAgdGVtcGxhdGU6IGA8aW5wdXQgdHlwZT0ndGV4dCcgWyhuZ01vZGVsKV09XCJzZWFyY2hRdWVyeVwiPmBcbiAqICAgICAgfSlcbiAqIGNsYXNzIFNlYXJjaENvbXAge1xuICogIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gKiB9XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ01vZGVsXTpub3QoW25nQ29udHJvbF0pOm5vdChbbmdGb3JtQ29udHJvbF0pJyxcbiAgYmluZGluZ3M6IFtmb3JtQ29udHJvbEJpbmRpbmddLFxuICBpbnB1dHM6IFsnbW9kZWw6IG5nTW9kZWwnXSxcbiAgb3V0cHV0czogWyd1cGRhdGU6IG5nTW9kZWxDaGFuZ2UnXSxcbiAgZXhwb3J0QXM6ICduZ0Zvcm0nXG59KVxuZXhwb3J0IGNsYXNzIE5nTW9kZWwgZXh0ZW5kcyBOZ0NvbnRyb2wgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogQGludGVybmFsICovXG4gIF9jb250cm9sID0gbmV3IENvbnRyb2woKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkZWQgPSBmYWxzZTtcbiAgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBtb2RlbDogYW55O1xuICB2aWV3TW9kZWw6IGFueTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczogYW55W10sXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMVUVfQUNDRVNTT1IpXG4gICAgICAgICAgICAgIHZhbHVlQWNjZXNzb3JzOiBDb250cm9sVmFsdWVBY2Nlc3NvcltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZhbHVlQWNjZXNzb3IgPSBzZWxlY3RWYWx1ZUFjY2Vzc29yKHRoaXMsIHZhbHVlQWNjZXNzb3JzKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KSB7XG4gICAgaWYgKCF0aGlzLl9hZGRlZCkge1xuICAgICAgc2V0VXBDb250cm9sKHRoaXMuX2NvbnRyb2wsIHRoaXMpO1xuICAgICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9hZGRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvcGVydHlVcGRhdGVkKGNoYW5nZXMsIHRoaXMudmlld01vZGVsKSkge1xuICAgICAgdGhpcy5fY29udHJvbC51cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICAgIHRoaXMudmlld01vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgY29udHJvbCgpOiBDb250cm9sIHsgcmV0dXJuIHRoaXMuX2NvbnRyb2w7IH1cblxuICBnZXQgcGF0aCgpOiBzdHJpbmdbXSB7IHJldHVybiBbXTsgfVxuXG4gIGdldCB2YWxpZGF0b3IoKTogVmFsaWRhdG9yRm4geyByZXR1cm4gY29tcG9zZVZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7IH1cblxuICBnZXQgYXN5bmNWYWxpZGF0b3IoKTogQXN5bmNWYWxpZGF0b3JGbiB7IHJldHVybiBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7IH1cblxuICB2aWV3VG9Nb2RlbFVwZGF0ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZWwgPSBuZXdWYWx1ZTtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLnVwZGF0ZSwgbmV3VmFsdWUpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar control_container_1 = require('./control_container');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar controlGroupProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, { useExisting: core_1.forwardRef(function () { return NgControlGroup; }) }));\r\n/**\r\n * Creates and binds a control group to a DOM element.\r\n *\r\n * This directive can only be used as a child of {@link NgForm} or {@link NgFormModel}.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/7EJ11uGeaggViYM6T5nq?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <div>\r\n * <h2>Angular2 Control & ControlGroup Example</h2>\r\n * <form #f=\"ngForm\">\r\n * <div ngControlGroup=\"name\" #cg-name=\"form\">\r\n * <h3>Enter your name:</h3>\r\n * <p>First: <input ngControl=\"first\" required></p>\r\n * <p>Middle: <input ngControl=\"middle\"></p>\r\n * <p>Last: <input ngControl=\"last\" required></p>\r\n * </div>\r\n * <h3>Name value:</h3>\r\n * <pre>{{valueOf(cgName)}}</pre>\r\n * <p>Name is {{cgName?.control?.valid ? \"valid\" : \"invalid\"}}</p>\r\n * <h3>What's your favorite food?</h3>\r\n * <p><input ngControl=\"food\"></p>\r\n * <h3>Form value</h3>\r\n * <pre>{{valueOf(f)}}</pre>\r\n * </form>\r\n * </div>\r\n * `\r\n * })\r\n * export class App {\r\n * valueOf(cg: NgControlGroup): string {\r\n * if (cg.control == null) {\r\n * return null;\r\n * }\r\n * return JSON.stringify(cg.control.value, null, 2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This example declares a control group for a user's name. The value and validation state of\r\n * this group can be accessed separately from the overall form.\r\n */\r\nvar NgControlGroup = (function (_super) {\r\n __extends(NgControlGroup, _super);\r\n function NgControlGroup(parent, _validators, _asyncValidators) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n this._parent = parent;\r\n }\r\n NgControlGroup.prototype.ngOnInit = function () { this.formDirective.addControlGroup(this); };\r\n NgControlGroup.prototype.ngOnDestroy = function () { this.formDirective.removeControlGroup(this); };\r\n Object.defineProperty(NgControlGroup.prototype, \"control\", {\r\n /**\r\n * Get the {@link ControlGroup} backing this binding.\r\n */\r\n get: function () { return this.formDirective.getControlGroup(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"path\", {\r\n /**\r\n * Get the path to this control group.\r\n */\r\n get: function () { return shared_1.controlPath(this.name, this._parent); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"formDirective\", {\r\n /**\r\n * Get the {@link Form} to which this group belongs.\r\n */\r\n get: function () { return this._parent.formDirective; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgControlGroup = __decorate([\r\n core_1.Directive({\r\n selector: '[ngControlGroup]',\r\n providers: [controlGroupProvider],\r\n inputs: ['name: ngControlGroup'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Host()),\r\n __param(0, core_1.SkipSelf()),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), \r\n __metadata('design:paramtypes', [control_container_1.ControlContainer, Array, Array])\r\n ], NgControlGroup);\r\n return NgControlGroup;\r\n}(control_container_1.ControlContainer));\r\nexports.NgControlGroup = NgControlGroup;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbF9ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sX2dyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFCQVdPLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZCLHFCQUF5QiwwQkFBMEIsQ0FBQyxDQUFBO0FBRXBELGtDQUErQixxQkFBcUIsQ0FBQyxDQUFBO0FBQ3JELHVCQUFxRSxVQUFVLENBQUMsQ0FBQTtBQUdoRiwyQkFBaUQsZUFBZSxDQUFDLENBQUE7QUFHakUsSUFBTSxvQkFBb0IsR0FDdEIsaUJBQVUsQ0FBQyxJQUFJLGVBQVEsQ0FBQyxvQ0FBZ0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxjQUFjLEVBQWQsQ0FBYyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFaEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBT0g7SUFBb0Msa0NBQWdCO0lBS2xELHdCQUFnQyxNQUF3QixFQUNPLFdBQWtCLEVBQ1osZ0JBQXVCO1FBQzFGLGlCQUFPLENBQUM7UUFGcUQsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDWixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQU87UUFFMUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELGlDQUFRLEdBQVIsY0FBbUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlELG9DQUFXLEdBQVgsY0FBc0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFLcEUsc0JBQUksbUNBQU87UUFIWDs7V0FFRzthQUNILGNBQThCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBS2hGLHNCQUFJLGdDQUFJO1FBSFI7O1dBRUc7YUFDSCxjQUF1QixNQUFNLENBQUMsb0JBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBS3JFLHNCQUFJLHlDQUFhO1FBSGpCOztXQUVHO2FBQ0gsY0FBNEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFaEUsc0JBQUkscUNBQVM7YUFBYixjQUErQixNQUFNLENBQUMsMEJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFNUUsc0JBQUksMENBQWM7YUFBbEIsY0FBeUMsTUFBTSxDQUFDLCtCQUFzQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUF2Q2xHO1FBQUMsZ0JBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDakMsTUFBTSxFQUFFLENBQUMsc0JBQXNCLENBQUM7WUFDaEMsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQzttQkFNYSxXQUFJLEVBQUU7bUJBQUUsZUFBUSxFQUFFO21CQUNsQixlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQywwQkFBYSxDQUFDO21CQUN6QyxlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQyxnQ0FBbUIsQ0FBQzs7c0JBUjVEO0lBbUNGLHFCQUFDO0FBQUQsQ0FBQyxBQWxDRCxDQUFvQyxvQ0FBZ0IsR0FrQ25EO0FBbENZLHNCQUFjLGlCQWtDMUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBEaXJlY3RpdmUsXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG4gIEhvc3QsXG4gIFNraXBTZWxmLFxuICBmb3J3YXJkUmVmLFxuICBQcm92aWRlcixcbiAgU2VsZlxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtDb250cm9sQ29udGFpbmVyfSBmcm9tICcuL2NvbnRyb2xfY29udGFpbmVyJztcbmltcG9ydCB7Y29udHJvbFBhdGgsIGNvbXBvc2VWYWxpZGF0b3JzLCBjb21wb3NlQXN5bmNWYWxpZGF0b3JzfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQge0NvbnRyb2xHcm91cH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtGb3JtfSBmcm9tICcuL2Zvcm1faW50ZXJmYWNlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfQVNZTkNfVkFMSURBVE9SU30gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQge0FzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZufSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG5jb25zdCBjb250cm9sR3JvdXBQcm92aWRlciA9XG4gICAgQ09OU1RfRVhQUihuZXcgUHJvdmlkZXIoQ29udHJvbENvbnRhaW5lciwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nQ29udHJvbEdyb3VwKX0pKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBiaW5kcyBhIGNvbnRyb2wgZ3JvdXAgdG8gYSBET00gZWxlbWVudC5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBjYW4gb25seSBiZSB1c2VkIGFzIGEgY2hpbGQgb2Yge0BsaW5rIE5nRm9ybX0gb3Ige0BsaW5rIE5nRm9ybU1vZGVsfS5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvN0VKMTF1R2VhZ2dWaVlNNlQ1bnE/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICogICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTXSxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8ZGl2PlxuICogICAgICAgPGgyPkFuZ3VsYXIyIENvbnRyb2wgJmFtcDsgQ29udHJvbEdyb3VwIEV4YW1wbGU8L2gyPlxuICogICAgICAgPGZvcm0gI2Y9XCJuZ0Zvcm1cIj5cbiAqICAgICAgICAgPGRpdiBuZ0NvbnRyb2xHcm91cD1cIm5hbWVcIiAjY2ctbmFtZT1cImZvcm1cIj5cbiAqICAgICAgICAgICA8aDM+RW50ZXIgeW91ciBuYW1lOjwvaDM+XG4gKiAgICAgICAgICAgPHA+Rmlyc3Q6IDxpbnB1dCBuZ0NvbnRyb2w9XCJmaXJzdFwiIHJlcXVpcmVkPjwvcD5cbiAqICAgICAgICAgICA8cD5NaWRkbGU6IDxpbnB1dCBuZ0NvbnRyb2w9XCJtaWRkbGVcIj48L3A+XG4gKiAgICAgICAgICAgPHA+TGFzdDogPGlucHV0IG5nQ29udHJvbD1cImxhc3RcIiByZXF1aXJlZD48L3A+XG4gKiAgICAgICAgIDwvZGl2PlxuICogICAgICAgICA8aDM+TmFtZSB2YWx1ZTo8L2gzPlxuICogICAgICAgICA8cHJlPnt7dmFsdWVPZihjZ05hbWUpfX08L3ByZT5cbiAqICAgICAgICAgPHA+TmFtZSBpcyB7e2NnTmFtZT8uY29udHJvbD8udmFsaWQgPyBcInZhbGlkXCIgOiBcImludmFsaWRcIn19PC9wPlxuICogICAgICAgICA8aDM+V2hhdCdzIHlvdXIgZmF2b3JpdGUgZm9vZD88L2gzPlxuICogICAgICAgICA8cD48aW5wdXQgbmdDb250cm9sPVwiZm9vZFwiPjwvcD5cbiAqICAgICAgICAgPGgzPkZvcm0gdmFsdWU8L2gzPlxuICogICAgICAgICA8cHJlPnt7dmFsdWVPZihmKX19PC9wcmU+XG4gKiAgICAgICA8L2Zvcm0+XG4gKiAgICAgPC9kaXY+XG4gKiAgIGBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgdmFsdWVPZihjZzogTmdDb250cm9sR3JvdXApOiBzdHJpbmcge1xuICogICAgIGlmIChjZy5jb250cm9sID09IG51bGwpIHtcbiAqICAgICAgIHJldHVybiBudWxsO1xuICogICAgIH1cbiAqICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2cuY29udHJvbC52YWx1ZSwgbnVsbCwgMik7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZXhhbXBsZSBkZWNsYXJlcyBhIGNvbnRyb2wgZ3JvdXAgZm9yIGEgdXNlcidzIG5hbWUuIFRoZSB2YWx1ZSBhbmQgdmFsaWRhdGlvbiBzdGF0ZSBvZlxuICogdGhpcyBncm91cCBjYW4gYmUgYWNjZXNzZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBvdmVyYWxsIGZvcm0uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ0NvbnRyb2xHcm91cF0nLFxuICBwcm92aWRlcnM6IFtjb250cm9sR3JvdXBQcm92aWRlcl0sXG4gIGlucHV0czogWyduYW1lOiBuZ0NvbnRyb2xHcm91cCddLFxuICBleHBvcnRBczogJ25nRm9ybSdcbn0pXG5leHBvcnQgY2xhc3MgTmdDb250cm9sR3JvdXAgZXh0ZW5kcyBDb250cm9sQ29udGFpbmVyIGltcGxlbWVudHMgT25Jbml0LFxuICAgIE9uRGVzdHJveSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3BhcmVudDogQ29udHJvbENvbnRhaW5lcjtcblxuICBjb25zdHJ1Y3RvcihASG9zdCgpIEBTa2lwU2VsZigpIHBhcmVudDogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6IGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOiBhbnlbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fcGFyZW50ID0gcGFyZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sR3JvdXAodGhpcyk7IH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHsgdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2xHcm91cCh0aGlzKTsgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHtAbGluayBDb250cm9sR3JvdXB9IGJhY2tpbmcgdGhpcyBiaW5kaW5nLlxuICAgKi9cbiAgZ2V0IGNvbnRyb2woKTogQ29udHJvbEdyb3VwIHsgcmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRDb250cm9sR3JvdXAodGhpcyk7IH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwYXRoIHRvIHRoaXMgY29udHJvbCBncm91cC5cbiAgICovXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIGNvbnRyb2xQYXRoKHRoaXMubmFtZSwgdGhpcy5fcGFyZW50KTsgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHtAbGluayBGb3JtfSB0byB3aGljaCB0aGlzIGdyb3VwIGJlbG9uZ3MuXG4gICAqL1xuICBnZXQgZm9ybURpcmVjdGl2ZSgpOiBGb3JtIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOyB9XG5cbiAgZ2V0IHZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7IHJldHVybiBjb21wb3NlVmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzKTsgfVxuXG4gIGdldCBhc3luY1ZhbGlkYXRvcigpOiBBc3luY1ZhbGlkYXRvckZuIHsgcmV0dXJuIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnModGhpcy5fYXN5bmNWYWxpZGF0b3JzKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar control_container_1 = require('./control_container');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar formDirectiveProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, { useExisting: core_1.forwardRef(function () { return NgFormModel; }) }));\r\n/**\r\n * Binds an existing control group to a DOM element.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/jqrVirudY8anJxTMUjTP?p=preview))\r\n *\r\n * In this example, we bind the control group to the form element, and we bind the login and\r\n * password controls to the login and password elements.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * template: `\r\n * <div>\r\n * <h2>NgFormModel Example</h2>\r\n * <form [ngFormModel]=\"loginForm\">\r\n * <p>Login: <input type=\"text\" ngControl=\"login\"></p>\r\n * <p>Password: <input type=\"password\" ngControl=\"password\"></p>\r\n * </form>\r\n * <p>Value:</p>\r\n * <pre>{{value}}</pre>\r\n * </div>\r\n * `,\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * loginForm: ControlGroup;\r\n *\r\n * constructor() {\r\n * this.loginForm = new ControlGroup({\r\n * login: new Control(\"\"),\r\n * password: new Control(\"\")\r\n * });\r\n * }\r\n *\r\n * get value(): string {\r\n * return JSON.stringify(this.loginForm.value, null, 2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can also use ngModel to bind a domain model to the form.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <form [ngFormModel]='loginForm'>\r\n * Login <input type='text' ngControl='login' [(ngModel)]='credentials.login'>\r\n * Password <input type='password' ngControl='password'\r\n * [(ngModel)]='credentials.password'>\r\n * <button (click)=\"onLogin()\">Login</button>\r\n * </form>`\r\n * })\r\n * class LoginComp {\r\n * credentials: {login: string, password: string};\r\n * loginForm: ControlGroup;\r\n *\r\n * constructor() {\r\n * this.loginForm = new ControlGroup({\r\n * login: new Control(\"\"),\r\n * password: new Control(\"\")\r\n * });\r\n * }\r\n *\r\n * onLogin(): void {\r\n * // this.credentials.login === 'some login'\r\n * // this.credentials.password === 'some password'\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgFormModel = (function (_super) {\r\n __extends(NgFormModel, _super);\r\n function NgFormModel(_validators, _asyncValidators) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n this.form = null;\r\n this.directives = [];\r\n this.ngSubmit = new async_1.EventEmitter();\r\n }\r\n NgFormModel.prototype.ngOnChanges = function (changes) {\r\n this._checkFormPresent();\r\n if (collection_1.StringMapWrapper.contains(changes, \"form\")) {\r\n var sync = shared_1.composeValidators(this._validators);\r\n this.form.validator = validators_1.Validators.compose([this.form.validator, sync]);\r\n var async = shared_1.composeAsyncValidators(this._asyncValidators);\r\n this.form.asyncValidator = validators_1.Validators.composeAsync([this.form.asyncValidator, async]);\r\n this.form.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n this._updateDomValue();\r\n };\r\n Object.defineProperty(NgFormModel.prototype, \"formDirective\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormModel.prototype, \"control\", {\r\n get: function () { return this.form; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormModel.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgFormModel.prototype.addControl = function (dir) {\r\n var ctrl = this.form.find(dir.path);\r\n shared_1.setUpControl(ctrl, dir);\r\n ctrl.updateValueAndValidity({ emitEvent: false });\r\n this.directives.push(dir);\r\n };\r\n NgFormModel.prototype.getControl = function (dir) { return this.form.find(dir.path); };\r\n NgFormModel.prototype.removeControl = function (dir) { collection_1.ListWrapper.remove(this.directives, dir); };\r\n NgFormModel.prototype.addControlGroup = function (dir) {\r\n var ctrl = this.form.find(dir.path);\r\n shared_1.setUpControlGroup(ctrl, dir);\r\n ctrl.updateValueAndValidity({ emitEvent: false });\r\n };\r\n NgFormModel.prototype.removeControlGroup = function (dir) { };\r\n NgFormModel.prototype.getControlGroup = function (dir) {\r\n return this.form.find(dir.path);\r\n };\r\n NgFormModel.prototype.updateModel = function (dir, value) {\r\n var ctrl = this.form.find(dir.path);\r\n ctrl.updateValue(value);\r\n };\r\n NgFormModel.prototype.onSubmit = function () {\r\n async_1.ObservableWrapper.callEmit(this.ngSubmit, null);\r\n return false;\r\n };\r\n /** @internal */\r\n NgFormModel.prototype._updateDomValue = function () {\r\n var _this = this;\r\n this.directives.forEach(function (dir) {\r\n var ctrl = _this.form.find(dir.path);\r\n dir.valueAccessor.writeValue(ctrl.value);\r\n });\r\n };\r\n NgFormModel.prototype._checkFormPresent = function () {\r\n if (lang_1.isBlank(this.form)) {\r\n throw new exceptions_1.BaseException(\"ngFormModel expects a form. Please pass one in. Example: <form [ngFormModel]=\\\"myCoolForm\\\">\");\r\n }\r\n };\r\n NgFormModel = __decorate([\r\n core_1.Directive({\r\n selector: '[ngFormModel]',\r\n bindings: [formDirectiveProvider],\r\n inputs: ['form: ngFormModel'],\r\n host: { '(submit)': 'onSubmit()' },\r\n outputs: ['ngSubmit'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), \r\n __metadata('design:paramtypes', [Array, Array])\r\n ], NgFormModel);\r\n return NgFormModel;\r\n}(control_container_1.ControlContainer));\r\nexports.NgFormModel = NgFormModel;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9ybV9tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19mb3JtX21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFCQUFrQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzdELDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELHNCQUE4QywyQkFBMkIsQ0FBQyxDQUFBO0FBQzFFLHFCQVNPLGVBQWUsQ0FBQyxDQUFBO0FBR3ZCLGtDQUErQixxQkFBcUIsQ0FBQyxDQUFBO0FBR3JELHVCQUF5RixVQUFVLENBQUMsQ0FBQTtBQUNwRywyQkFBNkQsZUFBZSxDQUFDLENBQUE7QUFFN0UsSUFBTSxxQkFBcUIsR0FDdkIsaUJBQVUsQ0FBQyxJQUFJLGVBQVEsQ0FBQyxvQ0FBZ0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxXQUFXLEVBQVgsQ0FBVyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFN0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUVHO0FBU0g7SUFBaUMsK0JBQWdCO0lBTS9DLHFCQUErRCxXQUFrQixFQUNaLGdCQUF1QjtRQUMxRixpQkFBTyxDQUFDO1FBRnFELGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ1oscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFPO1FBTDVGLFNBQUksR0FBaUIsSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLG9CQUFZLEVBQUUsQ0FBQztJQUs5QixDQUFDO0lBRUQsaUNBQVcs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O0FBQUQsQ0FBQyxBQS9FRCxDQUFpQyxvQ0FBZ0IsR0ErRWhEO0FBL0VZLG1CQUFXLGNBK0V2QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSLCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7T2JzZXJ2YWJsZVdyYXBwZXIsIEV2ZW50RW1pdHRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge1xuICBTaW1wbGVDaGFuZ2UsXG4gIE9uQ2hhbmdlcyxcbiAgRGlyZWN0aXZlLFxuICBmb3J3YXJkUmVmLFxuICBQcm92aWRlcixcbiAgSW5qZWN0LFxuICBPcHRpb25hbCxcbiAgU2VsZlxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICcuL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtOZ0NvbnRyb2xHcm91cH0gZnJvbSAnLi9uZ19jb250cm9sX2dyb3VwJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge0Zvcm19IGZyb20gJy4vZm9ybV9pbnRlcmZhY2UnO1xuaW1wb3J0IHtDb250cm9sLCBDb250cm9sR3JvdXB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7c2V0VXBDb250cm9sLCBzZXRVcENvbnRyb2xHcm91cCwgY29tcG9zZVZhbGlkYXRvcnMsIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnN9IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7VmFsaWRhdG9ycywgTkdfVkFMSURBVE9SUywgTkdfQVNZTkNfVkFMSURBVE9SU30gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5cbmNvbnN0IGZvcm1EaXJlY3RpdmVQcm92aWRlciA9XG4gICAgQ09OU1RfRVhQUihuZXcgUHJvdmlkZXIoQ29udHJvbENvbnRhaW5lciwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nRm9ybU1vZGVsKX0pKTtcblxuLyoqXG4gKiBCaW5kcyBhbiBleGlzdGluZyBjb250cm9sIGdyb3VwIHRvIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2pxclZpcnVkWThhbkp4VE1ValRQP3A9cHJldmlldykpXG4gKlxuICogSW4gdGhpcyBleGFtcGxlLCB3ZSBiaW5kIHRoZSBjb250cm9sIGdyb3VwIHRvIHRoZSBmb3JtIGVsZW1lbnQsIGFuZCB3ZSBiaW5kIHRoZSBsb2dpbiBhbmRcbiAqIHBhc3N3b3JkIGNvbnRyb2xzIHRvIHRoZSBsb2dpbiBhbmQgcGFzc3dvcmQgZWxlbWVudHMuXG4gKlxuICogIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWFwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxoMj5OZ0Zvcm1Nb2RlbCBFeGFtcGxlPC9oMj5cbiAqICAgICAgIDxmb3JtIFtuZ0Zvcm1Nb2RlbF09XCJsb2dpbkZvcm1cIj5cbiAqICAgICAgICAgPHA+TG9naW46IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5nQ29udHJvbD1cImxvZ2luXCI+PC9wPlxuICogICAgICAgICA8cD5QYXNzd29yZDogPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG5nQ29udHJvbD1cInBhc3N3b3JkXCI+PC9wPlxuICogICAgICAgPC9mb3JtPlxuICogICAgICAgPHA+VmFsdWU6PC9wPlxuICogICAgICAgPHByZT57e3ZhbHVlfX08L3ByZT5cbiAqICAgICA8L2Rpdj5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU11cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgbG9naW5Gb3JtOiBDb250cm9sR3JvdXA7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICB0aGlzLmxvZ2luRm9ybSA9IG5ldyBDb250cm9sR3JvdXAoe1xuICogICAgICAgbG9naW46IG5ldyBDb250cm9sKFwiXCIpLFxuICogICAgICAgcGFzc3dvcmQ6IG5ldyBDb250cm9sKFwiXCIpXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqXG4gKiAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICogICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmxvZ2luRm9ybS52YWx1ZSwgbnVsbCwgMik7XG4gKiAgIH1cbiAqIH1cbiAqICBgYGBcbiAqXG4gKiBXZSBjYW4gYWxzbyB1c2UgbmdNb2RlbCB0byBiaW5kIGEgZG9tYWluIG1vZGVsIHRvIHRoZSBmb3JtLlxuICpcbiAqICBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgICAgc2VsZWN0b3I6IFwibG9naW4tY29tcFwiLFxuICogICAgICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTXSxcbiAqICAgICAgdGVtcGxhdGU6IGBcbiAqICAgICAgICA8Zm9ybSBbbmdGb3JtTW9kZWxdPSdsb2dpbkZvcm0nPlxuICogICAgICAgICAgTG9naW4gPGlucHV0IHR5cGU9J3RleHQnIG5nQ29udHJvbD0nbG9naW4nIFsobmdNb2RlbCldPSdjcmVkZW50aWFscy5sb2dpbic+XG4gKiAgICAgICAgICBQYXNzd29yZCA8aW5wdXQgdHlwZT0ncGFzc3dvcmQnIG5nQ29udHJvbD0ncGFzc3dvcmQnXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09J2NyZWRlbnRpYWxzLnBhc3N3b3JkJz5cbiAqICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uTG9naW4oKVwiPkxvZ2luPC9idXR0b24+XG4gKiAgICAgICAgPC9mb3JtPmBcbiAqICAgICAgfSlcbiAqIGNsYXNzIExvZ2luQ29tcCB7XG4gKiAgY3JlZGVudGlhbHM6IHtsb2dpbjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nfTtcbiAqICBsb2dpbkZvcm06IENvbnRyb2xHcm91cDtcbiAqXG4gKiAgY29uc3RydWN0b3IoKSB7XG4gKiAgICB0aGlzLmxvZ2luRm9ybSA9IG5ldyBDb250cm9sR3JvdXAoe1xuICogICAgICBsb2dpbjogbmV3IENvbnRyb2woXCJcIiksXG4gKiAgICAgIHBhc3N3b3JkOiBuZXcgQ29udHJvbChcIlwiKVxuICogICAgfSk7XG4gKiAgfVxuICpcbiAqICBvbkxvZ2luKCk6IHZvaWQge1xuICogICAgLy8gdGhpcy5jcmVkZW50aWFscy5sb2dpbiA9PT0gJ3NvbWUgbG9naW4nXG4gKiAgICAvLyB0aGlzLmNyZWRlbnRpYWxzLnBhc3N3b3JkID09PSAnc29tZSBwYXNzd29yZCdcbiAqICB9XG4gKiB9XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ0Zvcm1Nb2RlbF0nLFxuICBiaW5kaW5nczogW2Zvcm1EaXJlY3RpdmVQcm92aWRlcl0sXG4gIGlucHV0czogWydmb3JtOiBuZ0Zvcm1Nb2RlbCddLFxuICBob3N0OiB7JyhzdWJtaXQpJzogJ29uU3VibWl0KCknfSxcbiAgb3V0cHV0czogWyduZ1N1Ym1pdCddLFxuICBleHBvcnRBczogJ25nRm9ybSdcbn0pXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWwgZXh0ZW5kcyBDb250cm9sQ29udGFpbmVyIGltcGxlbWVudHMgRm9ybSxcbiAgICBPbkNoYW5nZXMge1xuICBmb3JtOiBDb250cm9sR3JvdXAgPSBudWxsO1xuICBkaXJlY3RpdmVzOiBOZ0NvbnRyb2xbXSA9IFtdO1xuICBuZ1N1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczogYW55W10sXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IGFueVtdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tGb3JtUHJlc2VudCgpO1xuICAgIGlmIChTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKGNoYW5nZXMsIFwiZm9ybVwiKSkge1xuICAgICAgdmFyIHN5bmMgPSBjb21wb3NlVmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzKTtcbiAgICAgIHRoaXMuZm9ybS52YWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW3RoaXMuZm9ybS52YWxpZGF0b3IsIHN5bmNdKTtcblxuICAgICAgdmFyIGFzeW5jID0gY29tcG9zZUFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgdGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yID0gVmFsaWRhdG9ycy5jb21wb3NlQXN5bmMoW3RoaXMuZm9ybS5hc3luY1ZhbGlkYXRvciwgYXN5bmNdKTtcblxuICAgICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlRG9tVmFsdWUoKTtcbiAgfVxuXG4gIGdldCBmb3JtRGlyZWN0aXZlKCk6IEZvcm0geyByZXR1cm4gdGhpczsgfVxuXG4gIGdldCBjb250cm9sKCk6IENvbnRyb2xHcm91cCB7IHJldHVybiB0aGlzLmZvcm07IH1cblxuICBnZXQgcGF0aCgpOiBzdHJpbmdbXSB7IHJldHVybiBbXTsgfVxuXG4gIGFkZENvbnRyb2woZGlyOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgICB2YXIgY3RybDogYW55ID0gdGhpcy5mb3JtLmZpbmQoZGlyLnBhdGgpO1xuICAgIHNldFVwQ29udHJvbChjdHJsLCBkaXIpO1xuICAgIGN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMuZGlyZWN0aXZlcy5wdXNoKGRpcik7XG4gIH1cblxuICBnZXRDb250cm9sKGRpcjogTmdDb250cm9sKTogQ29udHJvbCB7IHJldHVybiA8Q29udHJvbD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7IH1cblxuICByZW1vdmVDb250cm9sKGRpcjogTmdDb250cm9sKTogdm9pZCB7IExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLmRpcmVjdGl2ZXMsIGRpcik7IH1cblxuICBhZGRDb250cm9sR3JvdXAoZGlyOiBOZ0NvbnRyb2xHcm91cCkge1xuICAgIHZhciBjdHJsOiBhbnkgPSB0aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gICAgc2V0VXBDb250cm9sR3JvdXAoY3RybCwgZGlyKTtcbiAgICBjdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgfVxuXG4gIHJlbW92ZUNvbnRyb2xHcm91cChkaXI6IE5nQ29udHJvbEdyb3VwKSB7fVxuXG4gIGdldENvbnRyb2xHcm91cChkaXI6IE5nQ29udHJvbEdyb3VwKTogQ29udHJvbEdyb3VwIHtcbiAgICByZXR1cm4gPENvbnRyb2xHcm91cD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gIH1cblxuICB1cGRhdGVNb2RlbChkaXI6IE5nQ29udHJvbCwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHZhciBjdHJswqAgPSA8Q29udHJvbD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gICAgY3RybC51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBvblN1Ym1pdCgpOiBib29sZWFuIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLm5nU3VibWl0LCBudWxsKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF91cGRhdGVEb21WYWx1ZSgpIHtcbiAgICB0aGlzLmRpcmVjdGl2ZXMuZm9yRWFjaChkaXIgPT4ge1xuICAgICAgdmFyIGN0cmw6IGFueSA9IHRoaXMuZm9ybS5maW5kKGRpci5wYXRoKTtcbiAgICAgIGRpci52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUoY3RybC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Zvcm1QcmVzZW50KCkge1xuICAgIGlmIChpc0JsYW5rKHRoaXMuZm9ybSkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgIGBuZ0Zvcm1Nb2RlbCBleHBlY3RzIGEgZm9ybS4gUGxlYXNlIHBhc3Mgb25lIGluLiBFeGFtcGxlOiA8Zm9ybSBbbmdGb3JtTW9kZWxdPVwibXlDb29sRm9ybVwiPmApO1xuICAgIH1cbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar abstract_control_directive_1 = require('./abstract_control_directive');\r\n/**\r\n * A directive that contains multiple {@link NgControl}s.\r\n *\r\n * Only used by the forms module.\r\n */\r\nvar ControlContainer = (function (_super) {\r\n __extends(ControlContainer, _super);\r\n function ControlContainer() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(ControlContainer.prototype, \"formDirective\", {\r\n /**\r\n * Get the form to which this container belongs.\r\n */\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ControlContainer.prototype, \"path\", {\r\n /**\r\n * Get the path to this container.\r\n */\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ControlContainer;\r\n}(abstract_control_directive_1.AbstractControlDirective));\r\nexports.ControlContainer = ControlContainer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF9jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvY29udHJvbF9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsMkNBQXVDLDhCQUE4QixDQUFDLENBQUE7QUFFdEU7Ozs7R0FJRztBQUNIO0lBQXNDLG9DQUF3QjtJQUE5RDtRQUFzQyw4QkFBd0I7SUFZOUQsQ0FBQztJQU5DLHNCQUFJLDJDQUFhO1FBSGpCOztXQUVHO2FBQ0gsY0FBNEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBSzFDLHNCQUFJLGtDQUFJO1FBSFI7O1dBRUc7YUFDSCxjQUF1QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDdkMsdUJBQUM7QUFBRCxDQUFDLEFBWkQsQ0FBc0MscURBQXdCLEdBWTdEO0FBWlksd0JBQWdCLG1CQVk1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtfSBmcm9tICcuL2Zvcm1faW50ZXJmYWNlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sRGlyZWN0aXZlfSBmcm9tICcuL2Fic3RyYWN0X2NvbnRyb2xfZGlyZWN0aXZlJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IGNvbnRhaW5zIG11bHRpcGxlIHtAbGluayBOZ0NvbnRyb2x9cy5cbiAqXG4gKiBPbmx5IHVzZWQgYnkgdGhlIGZvcm1zIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2xDb250YWluZXIgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUge1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybSB0byB3aGljaCB0aGlzIGNvbnRhaW5lciBiZWxvbmdzLlxuICAgKi9cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKTogRm9ybSB7IHJldHVybiBudWxsOyB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGF0aCB0byB0aGlzIGNvbnRhaW5lci5cbiAgICovXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction normalizeValidator(validator) {\r\n if (validator.validate !== undefined) {\r\n return function (c) { return validator.validate(c); };\r\n }\r\n else {\r\n return validator;\r\n }\r\n}\r\nexports.normalizeValidator = normalizeValidator;\r\nfunction normalizeAsyncValidator(validator) {\r\n if (validator.validate !== undefined) {\r\n return function (c) { return Promise.resolve(validator.validate(c)); };\r\n }\r\n else {\r\n return validator;\r\n }\r\n}\r\nexports.normalizeAsyncValidator = normalizeAsyncValidator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9ub3JtYWxpemVfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQSw0QkFBbUMsU0FBa0M7SUFDbkUsRUFBRSxDQUFDLENBQWEsU0FBVSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxVQUFDLENBQWtCLElBQUssT0FBWSxTQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFsQyxDQUFrQyxDQUFDO0lBQ3BFLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE1BQU0sQ0FBYyxTQUFTLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUM7QUFOZSwwQkFBa0IscUJBTWpDLENBQUE7QUFFRCxpQ0FBd0MsU0FBdUM7SUFDN0UsRUFBRSxDQUFDLENBQWEsU0FBVSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxVQUFDLENBQWtCLElBQUssT0FBQSxPQUFPLENBQUMsT0FBTyxDQUFhLFNBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBbkQsQ0FBbUQsQ0FBQztJQUNyRixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQW1CLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0FBQ0gsQ0FBQztBQU5lLCtCQUF1QiwwQkFNdEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tIFwiLi4vbW9kZWxcIjtcbmltcG9ydCB7VmFsaWRhdG9yLCBWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbn0gZnJvbSAnLi92YWxpZGF0b3JzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yKTogVmFsaWRhdG9yRm4ge1xuICBpZiAoKDxWYWxpZGF0b3I+dmFsaWRhdG9yKS52YWxpZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIChjOiBBYnN0cmFjdENvbnRyb2wpID0+ICg8VmFsaWRhdG9yPnZhbGlkYXRvcikudmFsaWRhdGUoYyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDxWYWxpZGF0b3JGbj52YWxpZGF0b3I7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFzeW5jVmFsaWRhdG9yKHZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiB8IFZhbGlkYXRvcik6IEFzeW5jVmFsaWRhdG9yRm4ge1xuICBpZiAoKDxWYWxpZGF0b3I+dmFsaWRhdG9yKS52YWxpZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIChjOiBBYnN0cmFjdENvbnRyb2wpID0+IFByb21pc2UucmVzb2x2ZSgoPFZhbGlkYXRvcj52YWxpZGF0b3IpLnZhbGlkYXRlKGMpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gPEFzeW5jVmFsaWRhdG9yRm4+dmFsaWRhdG9yO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar validators_1 = require('../validators');\r\nvar default_value_accessor_1 = require('./default_value_accessor');\r\nvar number_value_accessor_1 = require('./number_value_accessor');\r\nvar checkbox_value_accessor_1 = require('./checkbox_value_accessor');\r\nvar select_control_value_accessor_1 = require('./select_control_value_accessor');\r\nvar radio_control_value_accessor_1 = require('./radio_control_value_accessor');\r\nvar normalize_validator_1 = require('./normalize_validator');\r\nfunction controlPath(name, parent) {\r\n var p = collection_1.ListWrapper.clone(parent.path);\r\n p.push(name);\r\n return p;\r\n}\r\nexports.controlPath = controlPath;\r\nfunction setUpControl(control, dir) {\r\n if (lang_1.isBlank(control))\r\n _throwError(dir, \"Cannot find control\");\r\n if (lang_1.isBlank(dir.valueAccessor))\r\n _throwError(dir, \"No value accessor for\");\r\n control.validator = validators_1.Validators.compose([control.validator, dir.validator]);\r\n control.asyncValidator = validators_1.Validators.composeAsync([control.asyncValidator, dir.asyncValidator]);\r\n dir.valueAccessor.writeValue(control.value);\r\n // view -> model\r\n dir.valueAccessor.registerOnChange(function (newValue) {\r\n dir.viewToModelUpdate(newValue);\r\n control.updateValue(newValue, { emitModelToViewChange: false });\r\n control.markAsDirty();\r\n });\r\n // model -> view\r\n control.registerOnChange(function (newValue) { return dir.valueAccessor.writeValue(newValue); });\r\n // touched\r\n dir.valueAccessor.registerOnTouched(function () { return control.markAsTouched(); });\r\n}\r\nexports.setUpControl = setUpControl;\r\nfunction setUpControlGroup(control, dir) {\r\n if (lang_1.isBlank(control))\r\n _throwError(dir, \"Cannot find control\");\r\n control.validator = validators_1.Validators.compose([control.validator, dir.validator]);\r\n control.asyncValidator = validators_1.Validators.composeAsync([control.asyncValidator, dir.asyncValidator]);\r\n}\r\nexports.setUpControlGroup = setUpControlGroup;\r\nfunction _throwError(dir, message) {\r\n var path = dir.path.join(\" -> \");\r\n throw new exceptions_1.BaseException(message + \" '\" + path + \"'\");\r\n}\r\nfunction composeValidators(validators) {\r\n return lang_1.isPresent(validators) ? validators_1.Validators.compose(validators.map(normalize_validator_1.normalizeValidator)) : null;\r\n}\r\nexports.composeValidators = composeValidators;\r\nfunction composeAsyncValidators(validators) {\r\n return lang_1.isPresent(validators) ? validators_1.Validators.composeAsync(validators.map(normalize_validator_1.normalizeAsyncValidator)) :\r\n null;\r\n}\r\nexports.composeAsyncValidators = composeAsyncValidators;\r\nfunction isPropertyUpdated(changes, viewModel) {\r\n if (!collection_1.StringMapWrapper.contains(changes, \"model\"))\r\n return false;\r\n var change = changes[\"model\"];\r\n if (change.isFirstChange())\r\n return true;\r\n return !lang_1.looseIdentical(viewModel, change.currentValue);\r\n}\r\nexports.isPropertyUpdated = isPropertyUpdated;\r\n// TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented\r\nfunction selectValueAccessor(dir, valueAccessors) {\r\n if (lang_1.isBlank(valueAccessors))\r\n return null;\r\n var defaultAccessor;\r\n var builtinAccessor;\r\n var customAccessor;\r\n valueAccessors.forEach(function (v) {\r\n if (lang_1.hasConstructor(v, default_value_accessor_1.DefaultValueAccessor)) {\r\n defaultAccessor = v;\r\n }\r\n else if (lang_1.hasConstructor(v, checkbox_value_accessor_1.CheckboxControlValueAccessor) ||\r\n lang_1.hasConstructor(v, number_value_accessor_1.NumberValueAccessor) ||\r\n lang_1.hasConstructor(v, select_control_value_accessor_1.SelectControlValueAccessor) ||\r\n lang_1.hasConstructor(v, radio_control_value_accessor_1.RadioControlValueAccessor)) {\r\n if (lang_1.isPresent(builtinAccessor))\r\n _throwError(dir, \"More than one built-in value accessor matches\");\r\n builtinAccessor = v;\r\n }\r\n else {\r\n if (lang_1.isPresent(customAccessor))\r\n _throwError(dir, \"More than one custom value accessor matches\");\r\n customAccessor = v;\r\n }\r\n });\r\n if (lang_1.isPresent(customAccessor))\r\n return customAccessor;\r\n if (lang_1.isPresent(builtinAccessor))\r\n return builtinAccessor;\r\n if (lang_1.isPresent(defaultAccessor))\r\n return defaultAccessor;\r\n _throwError(dir, \"No valid value accessor for\");\r\n return null;\r\n}\r\nexports.selectValueAccessor = selectValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFDN0UscUJBQWlFLDBCQUEwQixDQUFDLENBQUE7QUFDNUYsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFPL0UsMkJBQXlCLGVBQWUsQ0FBQyxDQUFBO0FBRXpDLHVDQUFtQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzlELHNDQUFrQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQzVELHdDQUEyQywyQkFBMkIsQ0FBQyxDQUFBO0FBQ3ZFLDhDQUF5QyxpQ0FBaUMsQ0FBQyxDQUFBO0FBQzNFLDZDQUF3QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3pFLG9DQUEwRCx1QkFBdUIsQ0FBQyxDQUFBO0FBSWxGLHFCQUE0QixJQUFZLEVBQUUsTUFBd0I7SUFDaEUsSUFBSSxDQUFDLEdBQUcsd0JBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDYixNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUplLG1CQUFXLGNBSTFCLENBQUE7QUFFRCxzQkFBNkIsT0FBZ0IsRUFBRSxHQUFjO0lBQzNELEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUM5RCxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBRTFFLE9BQU8sQ0FB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LEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ3JELEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3ZELEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBRXZELFdBQVcsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztJQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQWhDZSwyQkFBbUIsc0JBZ0NsQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0V3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7aXNCbGFuaywgaXNQcmVzZW50LCBsb29zZUlkZW50aWNhbCwgaGFzQ29uc3RydWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnLi9uZ19jb250cm9sJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sRGlyZWN0aXZlfSBmcm9tICcuL2Fic3RyYWN0X2NvbnRyb2xfZGlyZWN0aXZlJztcbmltcG9ydCB7TmdDb250cm9sR3JvdXB9IGZyb20gJy4vbmdfY29udHJvbF9ncm91cCc7XG5pbXBvcnQge0NvbnRyb2wsIENvbnRyb2xHcm91cH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtWYWxpZGF0b3JzfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge0RlZmF1bHRWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RlZmF1bHRfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtOdW1iZXJWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL251bWJlcl92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge0NoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY2hlY2tib3hfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9zZWxlY3RfY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge1JhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vcmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge25vcm1hbGl6ZVZhbGlkYXRvciwgbm9ybWFsaXplQXN5bmNWYWxpZGF0b3J9IGZyb20gJy4vbm9ybWFsaXplX3ZhbGlkYXRvcic7XG5pbXBvcnQge1ZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZufSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjb250cm9sUGF0aChuYW1lOiBzdHJpbmcsIHBhcmVudDogQ29udHJvbENvbnRhaW5lcik6IHN0cmluZ1tdIHtcbiAgdmFyIHAgPSBMaXN0V3JhcHBlci5jbG9uZShwYXJlbnQucGF0aCk7XG4gIHAucHVzaChuYW1lKTtcbiAgcmV0dXJuIHA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRVcENvbnRyb2woY29udHJvbDogQ29udHJvbCwgZGlyOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgaWYgKGlzQmxhbmsoY29udHJvbCkpIF90aHJvd0Vycm9yKGRpciwgXCJDYW5ub3QgZmluZCBjb250cm9sXCIpO1xuICBpZiAoaXNCbGFuayhkaXIudmFsdWVBY2Nlc3NvcikpIF90aHJvd0Vycm9yKGRpciwgXCJObyB2YWx1ZSBhY2Nlc3NvciBmb3JcIik7XG5cbiAgY29udHJvbC52YWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW2NvbnRyb2wudmFsaWRhdG9yLCBkaXIudmFsaWRhdG9yXSk7XG4gIGNvbnRyb2wuYXN5bmNWYWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2VBc3luYyhbY29udHJvbC5hc3luY1ZhbGlkYXRvciwgZGlyLmFzeW5jVmFsaWRhdG9yXSk7XG4gIGRpci52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUoY29udHJvbC52YWx1ZSk7XG5cbiAgLy8gdmlldyAtPiBtb2RlbFxuICBkaXIudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKChuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgZGlyLnZpZXdUb01vZGVsVXBkYXRlKG5ld1ZhbHVlKTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlLCB7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZX0pO1xuICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfSk7XG5cbiAgLy8gbW9kZWwgLT4gdmlld1xuICBjb250cm9sLnJlZ2lzdGVyT25DaGFuZ2UoKG5ld1ZhbHVlOiBhbnkpID0+IGRpci52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUobmV3VmFsdWUpKTtcblxuICAvLyB0b3VjaGVkXG4gIGRpci52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IGNvbnRyb2wubWFya0FzVG91Y2hlZCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFVwQ29udHJvbEdyb3VwKGNvbnRyb2w6IENvbnRyb2xHcm91cCwgZGlyOiBOZ0NvbnRyb2xHcm91cCkge1xuICBpZiAoaXNCbGFuayhjb250cm9sKSkgX3Rocm93RXJyb3IoZGlyLCBcIkNhbm5vdCBmaW5kIGNvbnRyb2xcIik7XG4gIGNvbnRyb2wudmFsaWRhdG9yID0gVmFsaWRhdG9ycy5jb21wb3NlKFtjb250cm9sLnZhbGlkYXRvciwgZGlyLnZhbGlkYXRvcl0pO1xuICBjb250cm9sLmFzeW5jVmFsaWRhdG9yID0gVmFsaWRhdG9ycy5jb21wb3NlQXN5bmMoW2NvbnRyb2wuYXN5bmNWYWxpZGF0b3IsIGRpci5hc3luY1ZhbGlkYXRvcl0pO1xufVxuXG5mdW5jdGlvbiBfdGhyb3dFcnJvcihkaXI6IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSwgbWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gIHZhciBwYXRoID0gZGlyLnBhdGguam9pbihcIiAtPiBcIik7XG4gIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGAke21lc3NhZ2V9ICcke3BhdGh9J2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZVZhbGlkYXRvcnModmFsaWRhdG9yczogLyogQXJyYXk8VmFsaWRhdG9yfEZ1bmN0aW9uPiAqLyBhbnlbXSk6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIGlzUHJlc2VudCh2YWxpZGF0b3JzKSA/IFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzLm1hcChub3JtYWxpemVWYWxpZGF0b3IpKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKFxuICAgIHZhbGlkYXRvcnM6IC8qIEFycmF5PFZhbGlkYXRvcnxGdW5jdGlvbj4gKi8gYW55W10pOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIGlzUHJlc2VudCh2YWxpZGF0b3JzKSA/IFZhbGlkYXRvcnMuY29tcG9zZUFzeW5jKHZhbGlkYXRvcnMubWFwKG5vcm1hbGl6ZUFzeW5jVmFsaWRhdG9yKSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcGVydHlVcGRhdGVkKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9LCB2aWV3TW9kZWw6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoIVN0cmluZ01hcFdyYXBwZXIuY29udGFpbnMoY2hhbmdlcywgXCJtb2RlbFwiKSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgY2hhbmdlID0gY2hhbmdlc1tcIm1vZGVsXCJdO1xuXG4gIGlmIChjaGFuZ2UuaXNGaXJzdENoYW5nZSgpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuICFsb29zZUlkZW50aWNhbCh2aWV3TW9kZWwsIGNoYW5nZS5jdXJyZW50VmFsdWUpO1xufVxuXG4vLyBUT0RPOiB2c2F2a2luIHJlbW92ZSBpdCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzMwMTEgaXMgaW1wbGVtZW50ZWRcbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RWYWx1ZUFjY2Vzc29yKGRpcjogTmdDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVBY2Nlc3NvcnM6IENvbnRyb2xWYWx1ZUFjY2Vzc29yW10pOiBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIGlmIChpc0JsYW5rKHZhbHVlQWNjZXNzb3JzKSkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIGRlZmF1bHRBY2Nlc3NvcjogQ29udHJvbFZhbHVlQWNjZXNzb3I7XG4gIHZhciBidWlsdGluQWNjZXNzb3I6IENvbnRyb2xWYWx1ZUFjY2Vzc29yO1xuICB2YXIgY3VzdG9tQWNjZXNzb3I6IENvbnRyb2xWYWx1ZUFjY2Vzc29yO1xuICB2YWx1ZUFjY2Vzc29ycy5mb3JFYWNoKCh2OiBDb250cm9sVmFsdWVBY2Nlc3NvcikgPT4ge1xuICAgIGlmIChoYXNDb25zdHJ1Y3Rvcih2LCBEZWZhdWx0VmFsdWVBY2Nlc3NvcikpIHtcbiAgICAgIGRlZmF1bHRBY2Nlc3NvciA9IHY7XG5cbiAgICB9IGVsc2UgaWYgKGhhc0NvbnN0cnVjdG9yKHYsIENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IpIHx8XG4gICAgICAgICAgICAgICBoYXNDb25zdHJ1Y3Rvcih2LCBOdW1iZXJWYWx1ZUFjY2Vzc29yKSB8fFxuICAgICAgICAgICAgICAgaGFzQ29uc3RydWN0b3IodiwgU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IpIHx8XG4gICAgICAgICAgICAgICBoYXNDb25zdHJ1Y3Rvcih2LCBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yKSkge1xuICAgICAgaWYgKGlzUHJlc2VudChidWlsdGluQWNjZXNzb3IpKVxuICAgICAgICBfdGhyb3dFcnJvcihkaXIsIFwiTW9yZSB0aGFuIG9uZSBidWlsdC1pbiB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzXCIpO1xuICAgICAgYnVpbHRpbkFjY2Vzc29yID0gdjtcblxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNQcmVzZW50KGN1c3RvbUFjY2Vzc29yKSlcbiAgICAgICAgX3Rocm93RXJyb3IoZGlyLCBcIk1vcmUgdGhhbiBvbmUgY3VzdG9tIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXNcIik7XG4gICAgICBjdXN0b21BY2Nlc3NvciA9IHY7XG4gICAgfVxuICB9KTtcblxuICBpZiAoaXNQcmVzZW50KGN1c3RvbUFjY2Vzc29yKSkgcmV0dXJuIGN1c3RvbUFjY2Vzc29yO1xuICBpZiAoaXNQcmVzZW50KGJ1aWx0aW5BY2Nlc3NvcikpIHJldHVybiBidWlsdGluQWNjZXNzb3I7XG4gIGlmIChpc1ByZXNlbnQoZGVmYXVsdEFjY2Vzc29yKSkgcmV0dXJuIGRlZmF1bHRBY2Nlc3NvcjtcblxuICBfdGhyb3dFcnJvcihkaXIsIFwiTm8gdmFsaWQgdmFsdWUgYWNjZXNzb3IgZm9yXCIpO1xuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar control_container_1 = require('./control_container');\r\nvar model_1 = require('../model');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar formDirectiveProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, { useExisting: core_1.forwardRef(function () { return NgForm; }) }));\r\n/**\r\n * If `NgForm` is bound in a component, `<form>` elements in that component will be\r\n * upgraded to use the Angular form system.\r\n *\r\n * ### Typical Use\r\n *\r\n * Include `FORM_DIRECTIVES` in the `directives` section of a {@link View} annotation\r\n * to use `NgForm` and its associated controls.\r\n *\r\n * ### Structure\r\n *\r\n * An Angular form is a collection of `Control`s in some hierarchy.\r\n * `Control`s can be at the top level or can be organized in `ControlGroup`s\r\n * or `ControlArray`s. This hierarchy is reflected in the form's `value`, a\r\n * JSON object that mirrors the form structure.\r\n *\r\n * ### Submission\r\n *\r\n * The `ngSubmit` event signals when the user triggers a form submission.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ltdgYj4P0iY64AR71EpL?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * template: `\r\n * <div>\r\n * <p>Submit the form to see the data object Angular builds</p>\r\n * <h2>NgForm demo</h2>\r\n * <form #f=\"ngForm\" (ngSubmit)=\"onSubmit(f.value)\">\r\n * <h3>Control group: credentials</h3>\r\n * <div ngControlGroup=\"credentials\">\r\n * <p>Login: <input type=\"text\" ngControl=\"login\"></p>\r\n * <p>Password: <input type=\"password\" ngControl=\"password\"></p>\r\n * </div>\r\n * <h3>Control group: person</h3>\r\n * <div ngControlGroup=\"person\">\r\n * <p>First name: <input type=\"text\" ngControl=\"firstName\"></p>\r\n * <p>Last name: <input type=\"text\" ngControl=\"lastName\"></p>\r\n * </div>\r\n * <button type=\"submit\">Submit Form</button>\r\n * <p>Form data submitted:</p>\r\n * </form>\r\n * <pre>{{data}}</pre>\r\n * </div>\r\n * `,\r\n * directives: [CORE_DIRECTIVES, FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * constructor() {}\r\n *\r\n * data: string;\r\n *\r\n * onSubmit(data) {\r\n * this.data = JSON.stringify(data, null, 2);\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgForm = (function (_super) {\r\n __extends(NgForm, _super);\r\n function NgForm(validators, asyncValidators) {\r\n _super.call(this);\r\n this.ngSubmit = new async_1.EventEmitter();\r\n this.form = new model_1.ControlGroup({}, null, shared_1.composeValidators(validators), shared_1.composeAsyncValidators(asyncValidators));\r\n }\r\n Object.defineProperty(NgForm.prototype, \"formDirective\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgForm.prototype, \"control\", {\r\n get: function () { return this.form; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgForm.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgForm.prototype, \"controls\", {\r\n get: function () { return this.form.controls; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgForm.prototype.addControl = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n var ctrl = new model_1.Control();\r\n shared_1.setUpControl(ctrl, dir);\r\n container.addControl(dir.name, ctrl);\r\n ctrl.updateValueAndValidity({ emitEvent: false });\r\n });\r\n };\r\n NgForm.prototype.getControl = function (dir) { return this.form.find(dir.path); };\r\n NgForm.prototype.removeControl = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n if (lang_1.isPresent(container)) {\r\n container.removeControl(dir.name);\r\n container.updateValueAndValidity({ emitEvent: false });\r\n }\r\n });\r\n };\r\n NgForm.prototype.addControlGroup = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n var group = new model_1.ControlGroup({});\r\n shared_1.setUpControlGroup(group, dir);\r\n container.addControl(dir.name, group);\r\n group.updateValueAndValidity({ emitEvent: false });\r\n });\r\n };\r\n NgForm.prototype.removeControlGroup = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n if (lang_1.isPresent(container)) {\r\n container.removeControl(dir.name);\r\n container.updateValueAndValidity({ emitEvent: false });\r\n }\r\n });\r\n };\r\n NgForm.prototype.getControlGroup = function (dir) {\r\n return this.form.find(dir.path);\r\n };\r\n NgForm.prototype.updateModel = function (dir, value) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var ctrl = _this.form.find(dir.path);\r\n ctrl.updateValue(value);\r\n });\r\n };\r\n NgForm.prototype.onSubmit = function () {\r\n async_1.ObservableWrapper.callEmit(this.ngSubmit, null);\r\n return false;\r\n };\r\n /** @internal */\r\n NgForm.prototype._findContainer = function (path) {\r\n path.pop();\r\n return collection_1.ListWrapper.isEmpty(path) ? this.form : this.form.find(path);\r\n };\r\n NgForm = __decorate([\r\n core_1.Directive({\r\n selector: 'form:not([ngNoForm]):not([ngFormModel]),ngForm,[ngForm]',\r\n bindings: [formDirectiveProvider],\r\n host: {\r\n '(submit)': 'onSubmit()',\r\n },\r\n outputs: ['ngSubmit'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), \r\n __metadata('design:paramtypes', [Array, Array])\r\n ], NgForm);\r\n return NgForm;\r\n}(control_container_1.ControlContainer));\r\nexports.NgForm = NgForm;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNCQUtPLDJCQUEyQixDQUFDLENBQUE7QUFDbkMsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFDN0UscUJBQTZDLDBCQUEwQixDQUFDLENBQUE7QUFDeEUscUJBQXNFLGVBQWUsQ0FBQyxDQUFBO0FBSXRGLGtDQUErQixxQkFBcUIsQ0FBQyxDQUFBO0FBQ3JELHNCQUFxRCxVQUFVLENBQUMsQ0FBQTtBQUNoRSx1QkFBeUYsVUFBVSxDQUFDLENBQUE7QUFDcEcsMkJBQTZELGVBQWUsQ0FBQyxDQUFBO0FBRTdFLElBQU0scUJBQXFCLEdBQ3ZCLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQUMsb0NBQWdCLEVBQUUsRUFBQyxXQUFXLEVBQUUsaUJBQVUsQ0FBQyxjQUFNLE9BQUEsTUFBTSxFQUFOLENBQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERHO0FBVUg7SUFBNEIsMEJBQWdCO0lBSTFDLGdCQUF1RCxVQUFpQixFQUNYLGVBQXNCO1FBQ2pGLGlCQUFPLENBQUM7UUFKVixhQUFRLEdBQUcsSUFBSSxvQkFBWSxFQUFFLENBQUM7UUFLNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLG9CQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSwwQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFDdkMsK0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsc0JBQUksaUNBQWE7YUFBakIsY0FBNEIs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QkFBYSxDQUFDO21CQUN6QyxlQUFRLEVBQUU7bUJBQUUsV0FBSSxFQUFFO21CQUFFLGFBQU0sQ0FBQyxnQ0FBbUIsQ0FBQzs7Y0FONUQ7SUFtRkYsYUFBQztBQUFELENBQUMsQUFsRkQsQ0FBNEIsb0NBQWdCLEdBa0YzQztBQWxGWSxjQUFNLFNBa0ZsQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUHJvbWlzZVdyYXBwZXIsXG4gIE9ic2VydmFibGVXcmFwcGVyLFxuICBFdmVudEVtaXR0ZXIsXG4gIFByb21pc2VDb21wbGV0ZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgUHJvdmlkZXIsIE9wdGlvbmFsLCBJbmplY3QsIFNlbGZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vbmdfY29udHJvbCc7XG5pbXBvcnQge0Zvcm19IGZyb20gJy4vZm9ybV9pbnRlcmZhY2UnO1xuaW1wb3J0IHtOZ0NvbnRyb2xHcm91cH0gZnJvbSAnLi9uZ19jb250cm9sX2dyb3VwJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgQ29udHJvbEdyb3VwLCBDb250cm9sfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQge3NldFVwQ29udHJvbCwgc2V0VXBDb250cm9sR3JvdXAsIGNvbXBvc2VWYWxpZGF0b3JzLCBjb21wb3NlQXN5bmNWYWxpZGF0b3JzfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQge1ZhbGlkYXRvcnMsIE5HX1ZBTElEQVRPUlMsIE5HX0FTWU5DX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5jb25zdCBmb3JtRGlyZWN0aXZlUHJvdmlkZXIgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKENvbnRyb2xDb250YWluZXIsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ0Zvcm0pfSkpO1xuXG4vKipcbiAqIElmIGBOZ0Zvcm1gIGlzIGJvdW5kIGluIGEgY29tcG9uZW50LCBgPGZvcm0+YCBlbGVtZW50cyBpbiB0aGF0IGNvbXBvbmVudCB3aWxsIGJlXG4gKiB1cGdyYWRlZCB0byB1c2UgdGhlIEFuZ3VsYXIgZm9ybSBzeXN0ZW0uXG4gKlxuICogIyMjIFR5cGljYWwgVXNlXG4gKlxuICogSW5jbHVkZSBgRk9STV9ESVJFQ1RJVkVTYCBpbiB0aGUgYGRpcmVjdGl2ZXNgIHNlY3Rpb24gb2YgYSB7QGxpbmsgVmlld30gYW5ub3RhdGlvblxuICogdG8gdXNlIGBOZ0Zvcm1gIGFuZCBpdHMgYXNzb2NpYXRlZCBjb250cm9scy5cbiAqXG4gKiAjIyMgU3RydWN0dXJlXG4gKlxuICogQW4gQW5ndWxhciBmb3JtIGlzIGEgY29sbGVjdGlvbiBvZiBgQ29udHJvbGBzIGluIHNvbWUgaGllcmFyY2h5LlxuICogYENvbnRyb2xgcyBjYW4gYmUgYXQgdGhlIHRvcCBsZXZlbCBvciBjYW4gYmUgb3JnYW5pemVkIGluIGBDb250cm9sR3JvdXBgc1xuICogb3IgYENvbnRyb2xBcnJheWBzLiBUaGlzIGhpZXJhcmNoeSBpcyByZWZsZWN0ZWQgaW4gdGhlIGZvcm0ncyBgdmFsdWVgLCBhXG4gKiBKU09OIG9iamVjdCB0aGF0IG1pcnJvcnMgdGhlIGZvcm0gc3RydWN0dXJlLlxuICpcbiAqICMjIyBTdWJtaXNzaW9uXG4gKlxuICogVGhlIGBuZ1N1Ym1pdGAgZXZlbnQgc2lnbmFscyB3aGVuIHRoZSB1c2VyIHRyaWdnZXJzIGEgZm9ybSBzdWJtaXNzaW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sdGRnWWo0UDBpWTY0QVI3MUVwTD9wPXByZXZpZXcpKVxuICpcbiAqICBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8cD5TdWJtaXQgdGhlIGZvcm0gdG8gc2VlIHRoZSBkYXRhIG9iamVjdCBBbmd1bGFyIGJ1aWxkczwvcD5cbiAqICAgICAgIDxoMj5OZ0Zvcm0gZGVtbzwvaDI+XG4gKiAgICAgICA8Zm9ybSAjZj1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdChmLnZhbHVlKVwiPlxuICogICAgICAgICA8aDM+Q29udHJvbCBncm91cDogY3JlZGVudGlhbHM8L2gzPlxuICogICAgICAgICA8ZGl2IG5nQ29udHJvbEdyb3VwPVwiY3JlZGVudGlhbHNcIj5cbiAqICAgICAgICAgICA8cD5Mb2dpbjogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmdDb250cm9sPVwibG9naW5cIj48L3A+XG4gKiAgICAgICAgICAgPHA+UGFzc3dvcmQ6IDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuZ0NvbnRyb2w9XCJwYXNzd29yZFwiPjwvcD5cbiAqICAgICAgICAgPC9kaXY+XG4gKiAgICAgICAgIDxoMz5Db250cm9sIGdyb3VwOiBwZXJzb248L2gzPlxuICogICAgICAgICA8ZGl2IG5nQ29udHJvbEdyb3VwPVwicGVyc29uXCI+XG4gKiAgICAgICAgICAgPHA+Rmlyc3QgbmFtZTogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmdDb250cm9sPVwiZmlyc3ROYW1lXCI+PC9wPlxuICogICAgICAgICAgIDxwPkxhc3QgbmFtZTogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmdDb250cm9sPVwibGFzdE5hbWVcIj48L3A+XG4gKiAgICAgICAgIDwvZGl2PlxuICogICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIj5TdWJtaXQgRm9ybTwvYnV0dG9uPlxuICogICAgICAgPHA+Rm9ybSBkYXRhIHN1Ym1pdHRlZDo8L3A+XG4gKiAgICAgICA8L2Zvcm0+XG4gKiAgICAgICA8cHJlPnt7ZGF0YX19PC9wcmU+XG4gKiAgICAgPC9kaXY+XG4gKiBgLFxuICogICBkaXJlY3RpdmVzOiBbQ09SRV9ESVJFQ1RJVkVTLCBGT1JNX0RJUkVDVElWRVNdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIGNvbnN0cnVjdG9yKCkge31cbiAqXG4gKiAgIGRhdGE6IHN0cmluZztcbiAqXG4gKiAgIG9uU3VibWl0KGRhdGEpIHtcbiAqICAgICB0aGlzLmRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAqICAgfVxuICogfVxuICogIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW25nRm9ybU1vZGVsXSksbmdGb3JtLFtuZ0Zvcm1dJyxcbiAgYmluZGluZ3M6IFtmb3JtRGlyZWN0aXZlUHJvdmlkZXJdLFxuICBob3N0OiB7XG4gICAgJyhzdWJtaXQpJzogJ29uU3VibWl0KCknLFxuICB9LFxuICBvdXRwdXRzOiBbJ25nU3VibWl0J10sXG4gIGV4cG9ydEFzOiAnbmdGb3JtJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ0Zvcm0gZXh0ZW5kcyBDb250cm9sQ29udGFpbmVyIGltcGxlbWVudHMgRm9ybSB7XG4gIGZvcm06IENvbnRyb2xHcm91cDtcbiAgbmdTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHZhbGlkYXRvcnM6IGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgYXN5bmNWYWxpZGF0b3JzOiBhbnlbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mb3JtID0gbmV3IENvbnRyb2xHcm91cCh7fSwgbnVsbCwgY29tcG9zZVZhbGlkYXRvcnModmFsaWRhdG9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycykpO1xuICB9XG5cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKTogRm9ybSB7IHJldHVybiB0aGlzOyB9XG5cbiAgZ2V0IGNvbnRyb2woKTogQ29udHJvbEdyb3VwIHsgcmV0dXJuIHRoaXMuZm9ybTsgfVxuXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIFtdOyB9XG5cbiAgZ2V0IGNvbnRyb2xzKCk6IHtba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9IHsgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sczsgfVxuXG4gIGFkZENvbnRyb2woZGlyOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgICBQcm9taXNlV3JhcHBlci5zY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5fZmluZENvbnRhaW5lcihkaXIucGF0aCk7XG4gICAgICB2YXIgY3RybCA9IG5ldyBDb250cm9sKCk7XG4gICAgICBzZXRVcENvbnRyb2woY3RybCwgZGlyKTtcbiAgICAgIGNvbnRhaW5lci5hZGRDb250cm9sKGRpci5uYW1lLCBjdHJsKTtcbiAgICAgIGN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29udHJvbChkaXI6IE5nQ29udHJvbCk6IENvbnRyb2wgeyByZXR1cm4gPENvbnRyb2w+dGhpcy5mb3JtLmZpbmQoZGlyLnBhdGgpOyB9XG5cbiAgcmVtb3ZlQ29udHJvbChkaXI6IE5nQ29udHJvbCk6IHZvaWQge1xuICAgIFByb21pc2VXcmFwcGVyLnNjaGVkdWxlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLl9maW5kQ29udGFpbmVyKGRpci5wYXRoKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoY29udGFpbmVyKSkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ29udHJvbChkaXIubmFtZSk7XG4gICAgICAgIGNvbnRhaW5lci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRDb250cm9sR3JvdXAoZGlyOiBOZ0NvbnRyb2xHcm91cCk6IHZvaWQge1xuICAgIFByb21pc2VXcmFwcGVyLnNjaGVkdWxlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLl9maW5kQ29udGFpbmVyKGRpci5wYXRoKTtcbiAgICAgIHZhciBncm91cCA9IG5ldyBDb250cm9sR3JvdXAoe30pO1xuICAgICAgc2V0VXBDb250cm9sR3JvdXAoZ3JvdXAsIGRpcik7XG4gICAgICBjb250YWluZXIuYWRkQ29udHJvbChkaXIubmFtZSwgZ3JvdXApO1xuICAgICAgZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlQ29udHJvbEdyb3VwKGRpcjogTmdDb250cm9sR3JvdXApOiB2b2lkIHtcbiAgICBQcm9taXNlV3JhcHBlci5zY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5fZmluZENvbnRhaW5lcihkaXIucGF0aCk7XG4gICAgICBpZiAoaXNQcmVzZW50KGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNvbnRyb2woZGlyLm5hbWUpO1xuICAgICAgICBjb250YWluZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29udHJvbEdyb3VwKGRpcjogTmdDb250cm9sR3JvdXApOiBDb250cm9sR3JvdXAge1xuICAgIHJldHVybiA8Q29udHJvbEdyb3VwPnRoaXMuZm9ybS5maW5kKGRpci5wYXRoKTtcbiAgfVxuXG4gIHVwZGF0ZU1vZGVsKGRpcjogTmdDb250cm9sLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgUHJvbWlzZVdyYXBwZXIuc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgdmFyIGN0cmwgPSA8Q29udHJvbD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gICAgICBjdHJsLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMubmdTdWJtaXQsIG51bGwpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2ZpbmRDb250YWluZXIocGF0aDogc3RyaW5nW10pOiBDb250cm9sR3JvdXAge1xuICAgIHBhdGgucG9wKCk7XG4gICAgcmV0dXJuIExpc3RXcmFwcGVyLmlzRW1wdHkocGF0aCkgPyB0aGlzLmZvcm0gOiA8Q29udHJvbEdyb3VwPnRoaXMuZm9ybS5maW5kKHBhdGgpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar DEFAULT_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return DefaultValueAccessor; }), multi: true }));\r\n/**\r\n * The default accessor for writing a value and listening to changes that is used by the\r\n * {@link NgModel}, {@link NgFormControl}, and {@link NgControlName} directives.\r\n *\r\n * ### Example\r\n * ```\r\n * <input type=\"text\" ngControl=\"searchQuery\">\r\n * ```\r\n */\r\nvar DefaultValueAccessor = (function () {\r\n function DefaultValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n DefaultValueAccessor.prototype.writeValue = function (value) {\r\n var normalizedValue = lang_1.isBlank(value) ? '' : value;\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', normalizedValue);\r\n };\r\n DefaultValueAccessor.prototype.registerOnChange = function (fn) { this.onChange = fn; };\r\n DefaultValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n DefaultValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input:not([type=checkbox])[ngControl],textarea[ngControl],input:not([type=checkbox])[ngFormControl],textarea[ngFormControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',\r\n // TODO: vsavkin replace the above selector with the one below it once\r\n // https://github.com/angular/angular/issues/3011 is implemented\r\n // selector: '[ngControl],[ngModel],[ngFormControl]',\r\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\r\n bindings: [DEFAULT_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], DefaultValueAccessor);\r\n return DefaultValueAccessor;\r\n}());\r\nexports.DefaultValueAccessor = DefaultValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9kZWZhdWx0X3ZhbHVlX2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBMEUsZUFBZSxDQUFDLENBQUE7QUFDMUYsdUNBQXNELDBCQUEwQixDQUFDLENBQUE7QUFDakYscUJBQWtDLDBCQUEwQixDQUFDLENBQUE7QUFFN0QsSUFBTSxzQkFBc0IsR0FBRyxpQkFBVSxDQUFDLElBQUksZUFBUSxDQUNsRCwwQ0FBaUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxvQkFBb0IsRUFBcEIsQ0FBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFNUY7Ozs7Ozs7O0dBUUc7QUFVSDtJQUlFLDhCQUFvQixTQUFtQixFQUFVLFdBQXVCO1FBQXBELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUh4RSxhQUFRLEdBQUcsVUFBQyxDQUFNLElBQU0sQ0FBQyxDQUFDO1FBQzFCLGNBQVMsR0FBRyxjQUFPLENBQUMsQ0FBQztJQUVzRCxDQUFDO0lBRTVFLHlDQUFVLEdBQVYsVUFBVyxLQUFVO1FBQ25CLElBQUksZUFBZSxHQUFHLGNBQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCwrQ0FBZ0IsR0FBaEIsVUFBaUIsRUFBb0IsSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsZ0RBQWlCLEdBQWpCLFVBQWtCLEVBQWMsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFyQmxFO1FBQUMsZ0JBQVMsQ0FBQztZQUNULFFBQVEsRUFDSixzTUFBc007WUFDMU0sc0VBQXNFO1lBQ3RFLGdFQUFnRTtZQUNoRSxxREFBcUQ7WUFDckQsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUM7WUFDM0UsUUFBUSxFQUFFLENBQUMsc0JBQXNCLENBQUM7U0FDbkMsQ0FBQzs7NEJBQUE7SUFjRiwyQkFBQztBQUFELENBQUMsQUFiRCxJQWFDO0FBYlksNEJBQW9CLHVCQWFoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyLCBTZWxmLCBmb3J3YXJkUmVmLCBQcm92aWRlcn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7aXNCbGFuaywgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuY29uc3QgREVGQVVMVF9WQUxVRV9BQ0NFU1NPUiA9IENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGVmYXVsdFZhbHVlQWNjZXNzb3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBhY2Nlc3NvciBmb3Igd3JpdGluZyBhIHZhbHVlIGFuZCBsaXN0ZW5pbmcgdG8gY2hhbmdlcyB0aGF0IGlzIHVzZWQgYnkgdGhlXG4gKiB7QGxpbmsgTmdNb2RlbH0sIHtAbGluayBOZ0Zvcm1Db250cm9sfSwgYW5kIHtAbGluayBOZ0NvbnRyb2xOYW1lfSBkaXJlY3RpdmVzLlxuICpcbiAqICAjIyMgRXhhbXBsZVxuICogIGBgYFxuICogIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5nQ29udHJvbD1cInNlYXJjaFF1ZXJ5XCI+XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtuZ0NvbnRyb2xdLHRleHRhcmVhW25nQ29udHJvbF0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbbmdGb3JtQ29udHJvbF0sdGV4dGFyZWFbbmdGb3JtQ29udHJvbF0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbbmdNb2RlbF0sdGV4dGFyZWFbbmdNb2RlbF0sW25nRGVmYXVsdENvbnRyb2xdJyxcbiAgLy8gVE9ETzogdnNhdmtpbiByZXBsYWNlIHRoZSBhYm92ZSBzZWxlY3RvciB3aXRoIHRoZSBvbmUgYmVsb3cgaXQgb25jZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMDExIGlzIGltcGxlbWVudGVkXG4gIC8vIHNlbGVjdG9yOiAnW25nQ29udHJvbF0sW25nTW9kZWxdLFtuZ0Zvcm1Db250cm9sXScsXG4gIGhvc3Q6IHsnKGlucHV0KSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsICcoYmx1ciknOiAnb25Ub3VjaGVkKCknfSxcbiAgYmluZGluZ3M6IFtERUZBVUxUX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0VmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHZhciBub3JtYWxpemVkVmFsdWUgPSBpc0JsYW5rKHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbm9ybWFsaXplZFZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar CHECKBOX_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return CheckboxControlValueAccessor; }), multi: true }));\r\n/**\r\n * The accessor for writing a value and listening to changes on a checkbox input element.\r\n *\r\n * ### Example\r\n * ```\r\n * <input type=\"checkbox\" ngControl=\"rememberLogin\">\r\n * ```\r\n */\r\nvar CheckboxControlValueAccessor = (function () {\r\n function CheckboxControlValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n CheckboxControlValueAccessor.prototype.writeValue = function (value) {\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value);\r\n };\r\n CheckboxControlValueAccessor.prototype.registerOnChange = function (fn) { this.onChange = fn; };\r\n CheckboxControlValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n CheckboxControlValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input[type=checkbox][ngControl],input[type=checkbox][ngFormControl],input[type=checkbox][ngModel]',\r\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\r\n providers: [CHECKBOX_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], CheckboxControlValueAccessor);\r\n return CheckboxControlValueAccessor;\r\n}());\r\nexports.CheckboxControlValueAccessor = CheckboxControlValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3hfdmFsdWVfYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvY2hlY2tib3hfdmFsdWVfYWNjZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUEwRSxlQUFlLENBQUMsQ0FBQTtBQUUxRix1Q0FBc0QsMEJBQTBCLENBQUMsQ0FBQTtBQUNqRixxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUVwRCxJQUFNLHVCQUF1QixHQUFHLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQ25ELDBDQUFpQixFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLDRCQUE0QixFQUE1QixDQUE0QixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztBQUVwRzs7Ozs7OztHQU9HO0FBT0g7SUFJRSxzQ0FBb0IsU0FBbUIsRUFBVSxXQUF1QjtRQUFwRCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFIeEUsYUFBUSxHQUFHLFVBQUMsQ0FBTSxJQUFNLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQUcsY0FBTyxDQUFDLENBQUM7SUFFc0QsQ0FBQztJQUU1RSxpREFBVSxHQUFWLFVBQVcsS0FBVTtRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBQ0QsdURBQWdCLEdBQWhCLFVBQWlCLEVBQWtCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLHdEQUFpQixHQUFqQixVQUFrQixFQUFZLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBaEJoRTtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQ0osbUdBQW1HO1lBQ3ZHLElBQUksRUFBRSxFQUFDLFVBQVUsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFDO1lBQzlFLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO1NBQ3JDLENBQUM7O29DQUFBO0lBWUYsbUNBQUM7QUFBRCxDQUFDLEFBWEQsSUFXQztBQVhZLG9DQUE0QiwrQkFXeEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBSZW5kZXJlciwgRWxlbWVudFJlZiwgU2VsZiwgZm9yd2FyZFJlZiwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuY29uc3QgQ0hFQ0tCT1hfVkFMVUVfQUNDRVNTT1IgPSBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihcbiAgICBOR19WQUxVRV9BQ0NFU1NPUiwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuLyoqXG4gKiBUaGUgYWNjZXNzb3IgZm9yIHdyaXRpbmcgYSB2YWx1ZSBhbmQgbGlzdGVuaW5nIHRvIGNoYW5nZXMgb24gYSBjaGVja2JveCBpbnB1dCBlbGVtZW50LlxuICpcbiAqICAjIyMgRXhhbXBsZVxuICogIGBgYFxuICogIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuZ0NvbnRyb2w9XCJyZW1lbWJlckxvZ2luXCI+XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dFt0eXBlPWNoZWNrYm94XVtuZ0NvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nRm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nTW9kZWxdJyxcbiAgaG9zdDogeycoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpJywgJyhibHVyKSc6ICdvblRvdWNoZWQoKSd9LFxuICBwcm92aWRlcnM6IFtDSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjaGVja2VkJywgdmFsdWUpO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar NUMBER_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return NumberValueAccessor; }), multi: true }));\r\n/**\r\n * The accessor for writing a number value and listening to changes that is used by the\r\n * {@link NgModel}, {@link NgFormControl}, and {@link NgControlName} directives.\r\n *\r\n * ### Example\r\n * ```\r\n * <input type=\"number\" [(ngModel)]=\"age\">\r\n * ```\r\n */\r\nvar NumberValueAccessor = (function () {\r\n function NumberValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n NumberValueAccessor.prototype.writeValue = function (value) {\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);\r\n };\r\n NumberValueAccessor.prototype.registerOnChange = function (fn) {\r\n this.onChange = function (value) { fn(value == '' ? null : lang_1.NumberWrapper.parseFloat(value)); };\r\n };\r\n NumberValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n NumberValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input[type=number][ngControl],input[type=number][ngFormControl],input[type=number][ngModel]',\r\n host: {\r\n '(change)': 'onChange($event.target.value)',\r\n '(input)': 'onChange($event.target.value)',\r\n '(blur)': 'onTouched()'\r\n },\r\n bindings: [NUMBER_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], NumberValueAccessor);\r\n return NumberValueAccessor;\r\n}());\r\nexports.NumberValueAccessor = NumberValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyX3ZhbHVlX2FjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL251bWJlcl92YWx1ZV9hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBQTBFLGVBQWUsQ0FBQyxDQUFBO0FBQzFGLHVDQUFzRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pGLHFCQUFpRCwwQkFBMEIsQ0FBQyxDQUFBO0FBRTVFLElBQU0scUJBQXFCLEdBQUcsaUJBQVUsQ0FBQyxJQUFJLGVBQVEsQ0FDakQsMENBQWlCLEVBQUUsRUFBQyxXQUFXLEVBQUUsaUJBQVUsQ0FBQyxjQUFNLE9BQUEsbUJBQW1CLEVBQW5CLENBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTNGOzs7Ozs7OztHQVFHO0FBV0g7SUFJRSw2QkFBb0IsU0FBbUIsRUFBVSxXQUF1QjtRQUFwRCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFIeEUsYUFBUSxHQUFHLFVBQUMsQ0FBTSxJQUFNLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQUcsY0FBTyxDQUFDLENBQUM7SUFFc0QsQ0FBQztJQUU1RSx3Q0FBVSxHQUFWLFVBQVcsS0FBYTtRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsOENBQWdCLEdBQWhCLFVBQWlCLEVBQXVCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBQyxLQUFLLElBQU8sRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEdBQUcsSUFBSSxHQUFHLG9CQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELCtDQUFpQixHQUFqQixVQUFrQixFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBdkJsRTtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQ0osNkZBQTZGO1lBQ2pHLElBQUksRUFBRTtnQkFDSixVQUFVLEVBQUUsK0JBQStCO2dCQUMzQyxTQUFTLEVBQUUsK0JBQStCO2dCQUMxQyxRQUFRLEVBQUUsYUFBYTthQUN4QjtZQUNELFFBQVEsRUFBRSxDQUFDLHFCQUFxQixDQUFDO1NBQ2xDLENBQUM7OzJCQUFBO0lBZUYsMEJBQUM7QUFBRCxDQUFDLEFBZEQsSUFjQztBQWRZLDJCQUFtQixzQkFjL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlciwgU2VsZiwgZm9yd2FyZFJlZiwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge2lzQmxhbmssIENPTlNUX0VYUFIsIE51bWJlcldyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmNvbnN0IE5VTUJFUl9WQUxVRV9BQ0NFU1NPUiA9IENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtYmVyVmFsdWVBY2Nlc3NvciksIG11bHRpOiB0cnVlfSkpO1xuXG4vKipcbiAqIFRoZSBhY2Nlc3NvciBmb3Igd3JpdGluZyBhIG51bWJlciB2YWx1ZSBhbmQgbGlzdGVuaW5nIHRvIGNoYW5nZXMgdGhhdCBpcyB1c2VkIGJ5IHRoZVxuICoge0BsaW5rIE5nTW9kZWx9LCB7QGxpbmsgTmdGb3JtQ29udHJvbH0sIGFuZCB7QGxpbmsgTmdDb250cm9sTmFtZX0gZGlyZWN0aXZlcy5cbiAqXG4gKiAgIyMjIEV4YW1wbGVcbiAqICBgYGBcbiAqICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwiYWdlXCI+XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dFt0eXBlPW51bWJlcl1bbmdDb250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbmdGb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW25nTW9kZWxdJyxcbiAgaG9zdDoge1xuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgJyhpbnB1dCknOiAnb25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSknLFxuICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknXG4gIH0sXG4gIGJpbmRpbmdzOiBbTlVNQkVSX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWUpID0+IHsgZm4odmFsdWUgPT0gJycgPyBudWxsIDogTnVtYmVyV3JhcHBlci5wYXJzZUZsb2F0KHZhbHVlKSk7IH07XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar ng_control_1 = require('./ng_control');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Directive automatically applied to Angular forms that sets CSS classes\r\n * based on control status (valid/invalid/dirty/etc).\r\n */\r\nvar NgControlStatus = (function () {\r\n function NgControlStatus(cd) {\r\n this._cd = cd;\r\n }\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassUntouched\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.untouched : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassTouched\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.touched : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassPristine\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.pristine : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassDirty\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.dirty : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassValid\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.valid : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassInvalid\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? !this._cd.control.valid : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgControlStatus = __decorate([\r\n core_1.Directive({\r\n selector: '[ngControl],[ngModel],[ngFormControl]',\r\n host: {\r\n '[class.ng-untouched]': 'ngClassUntouched',\r\n '[class.ng-touched]': 'ngClassTouched',\r\n '[class.ng-pristine]': 'ngClassPristine',\r\n '[class.ng-dirty]': 'ngClassDirty',\r\n '[class.ng-valid]': 'ngClassValid',\r\n '[class.ng-invalid]': 'ngClassInvalid'\r\n }\r\n }),\r\n __param(0, core_1.Self()), \r\n __metadata('design:paramtypes', [ng_control_1.NgControl])\r\n ], NgControlStatus);\r\n return NgControlStatus;\r\n}());\r\nexports.NgControlStatus = NgControlStatus;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbF9zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9zdGF0dXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFCQUE4QixlQUFlLENBQUMsQ0FBQTtBQUM5QywyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFDdkMscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFFNUQ7OztHQUdHO0FBWUg7SUFHRSx5QkFBb0IsRUFBYTtRQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUVyRCxzQkFBSSw2Q0FBZ0I7YUFBcEI7WUFDRSxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDMUUsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSwyQ0FBYzthQUFsQjtZQUNFLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN4RSxDQUFDOzs7T0FBQTtJQUNELHNCQUFJLDRDQUFlO2FBQW5CO1lBQ0UsTUFBTSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3pFLENBQUM7OztPQUFBO0lBQ0Qsc0JBQUkseUNBQVk7YUFBaEI7WUFDRSxNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdEUsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSx5Q0FBWTthQUFoQjtZQUNFLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN0RSxDQUFDOzs7T0FBQTtJQUNELHNCQUFJLDJDQUFjO2FBQWxCO1lBQ0UsTUFBTSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkUsQ0FBQzs7O09BQUE7SUFqQ0g7UUFBQyxnQkFBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHVDQUF1QztZQUNqRCxJQUFJLEVBQUU7Z0JBQ0osc0JBQXNCLEVBQUUsa0JBQWtCO2dCQUMxQyxvQkFBb0IsRUFBRSxnQkFBZ0I7Z0JBQ3RDLHFCQUFxQixFQUFFLGlCQUFpQjtnQkFDeEMsa0JBQWtCLEVBQUUsY0FBYztnQkFDbEMsa0JBQWtCLEVBQUUsY0FBYztnQkFDbEMsb0JBQW9CLEVBQUUsZ0JBQWdCO2FBQ3ZDO1NBQ0YsQ0FBQzttQkFJYSxXQUFJLEVBQUU7O3VCQUpuQjtJQXdCRixzQkFBQztBQUFELENBQUMsQUF2QkQsSUF1QkM7QUF2QlksdUJBQWUsa0JBdUIzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIFNlbGZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vbmdfY29udHJvbCc7XG5pbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHRvIEFuZ3VsYXIgZm9ybXMgdGhhdCBzZXRzIENTUyBjbGFzc2VzXG4gKiBiYXNlZCBvbiBjb250cm9sIHN0YXR1cyAodmFsaWQvaW52YWxpZC9kaXJ0eS9ldGMpLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdDb250cm9sXSxbbmdNb2RlbF0sW25nRm9ybUNvbnRyb2xdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MubmctdW50b3VjaGVkXSc6ICduZ0NsYXNzVW50b3VjaGVkJyxcbiAgICAnW2NsYXNzLm5nLXRvdWNoZWRdJzogJ25nQ2xhc3NUb3VjaGVkJyxcbiAgICAnW2NsYXNzLm5nLXByaXN0aW5lXSc6ICduZ0NsYXNzUHJpc3RpbmUnLFxuICAgICdbY2xhc3MubmctZGlydHldJzogJ25nQ2xhc3NEaXJ0eScsXG4gICAgJ1tjbGFzcy5uZy12YWxpZF0nOiAnbmdDbGFzc1ZhbGlkJyxcbiAgICAnW2NsYXNzLm5nLWludmFsaWRdJzogJ25nQ2xhc3NJbnZhbGlkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE5nQ29udHJvbFN0YXR1cyB7XG4gIHByaXZhdGUgX2NkOiBOZ0NvbnRyb2w7XG5cbiAgY29uc3RydWN0b3IoQFNlbGYoKSBjZDogTmdDb250cm9sKSB7IHRoaXMuX2NkID0gY2Q7IH1cblxuICBnZXQgbmdDbGFzc1VudG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX2NkLmNvbnRyb2wpID8gdGhpcy5fY2QuY29udHJvbC51bnRvdWNoZWQgOiBmYWxzZTtcbiAgfVxuICBnZXQgbmdDbGFzc1RvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9jZC5jb250cm9sKSA/IHRoaXMuX2NkLmNvbnRyb2wudG91Y2hlZCA6IGZhbHNlO1xuICB9XG4gIGdldCBuZ0NsYXNzUHJpc3RpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9jZC5jb250cm9sKSA/IHRoaXMuX2NkLmNvbnRyb2wucHJpc3RpbmUgOiBmYWxzZTtcbiAgfVxuICBnZXQgbmdDbGFzc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fY2QuY29udHJvbCkgPyB0aGlzLl9jZC5jb250cm9sLmRpcnR5IDogZmFsc2U7XG4gIH1cbiAgZ2V0IG5nQ2xhc3NWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX2NkLmNvbnRyb2wpID8gdGhpcy5fY2QuY29udHJvbC52YWxpZCA6IGZhbHNlO1xuICB9XG4gIGdldCBuZ0NsYXNzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX2NkLmNvbnRyb2wpID8gIXRoaXMuX2NkLmNvbnRyb2wudmFsaWQgOiBmYWxzZTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar SELECT_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return SelectControlValueAccessor; }), multi: true }));\r\nfunction _buildValueString(id, value) {\r\n if (lang_1.isBlank(id))\r\n return \"\" + value;\r\n if (!lang_1.isPrimitive(value))\r\n value = \"Object\";\r\n return lang_1.StringWrapper.slice(id + \": \" + value, 0, 50);\r\n}\r\nfunction _extractId(valueString) {\r\n return valueString.split(\":\")[0];\r\n}\r\n/**\r\n * The accessor for writing a value and listening to changes on a select element.\r\n *\r\n * Note: We have to listen to the 'change' event because 'input' events aren't fired\r\n * for selects in Firefox and IE:\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1024350\r\n * https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/4660045/\r\n *\r\n */\r\nvar SelectControlValueAccessor = (function () {\r\n function SelectControlValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n /** @internal */\r\n this._optionMap = new Map();\r\n /** @internal */\r\n this._idCounter = 0;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n SelectControlValueAccessor.prototype.writeValue = function (value) {\r\n this.value = value;\r\n var valueString = _buildValueString(this._getOptionId(value), value);\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', valueString);\r\n };\r\n SelectControlValueAccessor.prototype.registerOnChange = function (fn) {\r\n var _this = this;\r\n this.onChange = function (valueString) { fn(_this._getOptionValue(valueString)); };\r\n };\r\n SelectControlValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n /** @internal */\r\n SelectControlValueAccessor.prototype._registerOption = function () { return (this._idCounter++).toString(); };\r\n /** @internal */\r\n SelectControlValueAccessor.prototype._getOptionId = function (value) {\r\n for (var _i = 0, _a = collection_1.MapWrapper.keys(this._optionMap); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (lang_1.looseIdentical(this._optionMap.get(id), value))\r\n return id;\r\n }\r\n return null;\r\n };\r\n /** @internal */\r\n SelectControlValueAccessor.prototype._getOptionValue = function (valueString) {\r\n var value = this._optionMap.get(_extractId(valueString));\r\n return lang_1.isPresent(value) ? value : valueString;\r\n };\r\n SelectControlValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'select[ngControl],select[ngFormControl],select[ngModel]',\r\n host: { '(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\r\n providers: [SELECT_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], SelectControlValueAccessor);\r\n return SelectControlValueAccessor;\r\n}());\r\nexports.SelectControlValueAccessor = SelectControlValueAccessor;\r\n/**\r\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <select ngControl=\"city\">\r\n * <option *ngFor=\"let c of cities\" [value]=\"c\"></option>\r\n * </select>\r\n * ```\r\n */\r\nvar NgSelectOption = (function () {\r\n function NgSelectOption(_element, _renderer, _select) {\r\n this._element = _element;\r\n this._renderer = _renderer;\r\n this._select = _select;\r\n if (lang_1.isPresent(this._select))\r\n this.id = this._select._registerOption();\r\n }\r\n Object.defineProperty(NgSelectOption.prototype, \"ngValue\", {\r\n set: function (value) {\r\n if (this._select == null)\r\n return;\r\n this._select._optionMap.set(this.id, value);\r\n this._setElementValue(_buildValueString(this.id, value));\r\n this._select.writeValue(this._select.value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgSelectOption.prototype, \"value\", {\r\n set: function (value) {\r\n this._setElementValue(value);\r\n if (lang_1.isPresent(this._select))\r\n this._select.writeValue(this._select.value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n NgSelectOption.prototype._setElementValue = function (value) {\r\n this._renderer.setElementProperty(this._element.nativeElement, 'value', value);\r\n };\r\n NgSelectOption.prototype.ngOnDestroy = function () {\r\n if (lang_1.isPresent(this._select)) {\r\n this._select._optionMap.delete(this.id);\r\n this._select.writeValue(this._select.value);\r\n }\r\n };\r\n __decorate([\r\n core_1.Input('ngValue'), \r\n __metadata('design:type', Object), \r\n __metadata('design:paramtypes', [Object])\r\n ], NgSelectOption.prototype, \"ngValue\", null);\r\n __decorate([\r\n core_1.Input('value'), \r\n __metadata('design:type', Object), \r\n __metadata('design:paramtypes', [Object])\r\n ], NgSelectOption.prototype, \"value\", null);\r\n NgSelectOption = __decorate([\r\n core_1.Directive({ selector: 'option' }),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Host()), \r\n __metadata('design:paramtypes', [core_1.ElementRef, core_1.Renderer, SelectControlValueAccessor])\r\n ], NgSelectOption);\r\n return NgSelectOption;\r\n}());\r\nexports.NgSelectOption = NgSelectOption;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0X2NvbnRyb2xfdmFsdWVfYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvc2VsZWN0X2NvbnRyb2xfdmFsdWVfYWNjZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFCQVVPLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZCLHVDQUFzRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pGLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFFbEMsMkJBQXlCLGdDQUFnQyxDQUFDLENBQUE7QUFFMUQsSUFBTSxxQkFBcUIsR0FBRyxpQkFBVSxDQUFDLElBQUksZUFBUSxDQUNqRCwwQ0FBaUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSwwQkFBMEIsRUFBMUIsQ0FBMEIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEcsMkJBQTJCLEVBQVUsRUFBRSxLQUFVO0lBQy9DLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxLQUFHLEtBQU8sQ0FBQztJQUNuQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0lBQzFDLE1BQU0sQ0FBQyxvQkFBYSxDQUFDLEtBQUssQ0FBSSxFQUFFLFVBQUssS0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsb0JBQW9CLFdBQW1CO0lBQ3JDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7Ozs7Ozs7R0FR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QUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBeEJEO1FBQUMsWUFBSyxDQUFDLFNBQVMsQ0FBQzs7O2lEQUFBO0lBUWpCO1FBQUMsWUFBSyxDQUFDLE9BQU8sQ0FBQzs7OytDQUFBO0lBakJqQjtRQUFDLGdCQUFTLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUM7bUJBS2pCLGVBQVEsRUFBRTttQkFBRSxXQUFJLEVBQUU7O3NCQUxEO0lBa0NoQyxxQkFBQztBQUFELENBQUMsQUFqQ0QsSUFpQ0M7QUFqQ1ksc0JBQWMsaUJBaUMxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBSZW5kZXJlcixcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBIb3N0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge1xuICBDT05TVF9FWFBSLFxuICBTdHJpbmdXcmFwcGVyLFxuICBpc1ByaW1pdGl2ZSxcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBsb29zZUlkZW50aWNhbFxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5pbXBvcnQge01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmNvbnN0IFNFTEVDVF9WQUxVRV9BQ0NFU1NPUiA9IENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuZnVuY3Rpb24gX2J1aWxkVmFsdWVTdHJpbmcoaWQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZyB7XG4gIGlmIChpc0JsYW5rKGlkKSkgcmV0dXJuIGAke3ZhbHVlfWA7XG4gIGlmICghaXNQcmltaXRpdmUodmFsdWUpKSB2YWx1ZSA9IFwiT2JqZWN0XCI7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnNsaWNlKGAke2lkfTogJHt2YWx1ZX1gLCAwLCA1MCk7XG59XG5cbmZ1bmN0aW9uIF9leHRyYWN0SWQodmFsdWVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZVN0cmluZy5zcGxpdChcIjpcIilbMF07XG59XG5cbi8qKlxuICogVGhlIGFjY2Vzc29yIGZvciB3cml0aW5nIGEgdmFsdWUgYW5kIGxpc3RlbmluZyB0byBjaGFuZ2VzIG9uIGEgc2VsZWN0IGVsZW1lbnQuXG4gKlxuICogTm90ZTogV2UgaGF2ZSB0byBsaXN0ZW4gdG8gdGhlICdjaGFuZ2UnIGV2ZW50IGJlY2F1c2UgJ2lucHV0JyBldmVudHMgYXJlbid0IGZpcmVkXG4gKiBmb3Igc2VsZWN0cyBpbiBGaXJlZm94IGFuZCBJRTpcbiAqIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQzNTBcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vZW4tdXMvbWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVzLzQ2NjAwNDUvXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdzZWxlY3RbbmdDb250cm9sXSxzZWxlY3RbbmdGb3JtQ29udHJvbF0sc2VsZWN0W25nTW9kZWxdJyxcbiAgaG9zdDogeycoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsICcoYmx1ciknOiAnb25Ub3VjaGVkKCknfSxcbiAgcHJvdmlkZXJzOiBbU0VMRUNUX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgdmFsdWU6IGFueTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfb3B0aW9uTWFwOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaWRDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlciwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdmFyIHZhbHVlU3RyaW5nID0gX2J1aWxkVmFsdWVTdHJpbmcodGhpcy5fZ2V0T3B0aW9uSWQodmFsdWUpLCB2YWx1ZSk7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWVTdHJpbmcpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWVTdHJpbmc6IHN0cmluZykgPT4geyBmbih0aGlzLl9nZXRPcHRpb25WYWx1ZSh2YWx1ZVN0cmluZykpOyB9O1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3JlZ2lzdGVyT3B0aW9uKCk6IHN0cmluZyB7IHJldHVybiAodGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCk7IH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZXRPcHRpb25JZCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBmb3IgKGxldCBpZCBvZiBNYXBXcmFwcGVyLmtleXModGhpcy5fb3B0aW9uTWFwKSkge1xuICAgICAgaWYgKGxvb3NlSWRlbnRpY2FsKHRoaXMuX29wdGlvbk1hcC5nZXQoaWQpLCB2YWx1ZSkpIHJldHVybiBpZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZXRPcHRpb25WYWx1ZSh2YWx1ZVN0cmluZzogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl9vcHRpb25NYXAuZ2V0KF9leHRyYWN0SWQodmFsdWVTdHJpbmcpKTtcbiAgICByZXR1cm4gaXNQcmVzZW50KHZhbHVlKSA/IHZhbHVlIDogdmFsdWVTdHJpbmc7XG4gIH1cbn1cblxuLyoqXG4gKiBNYXJrcyBgPG9wdGlvbj5gIGFzIGR5bmFtaWMsIHNvIEFuZ3VsYXIgY2FuIGJlIG5vdGlmaWVkIHdoZW4gb3B0aW9ucyBjaGFuZ2UuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIDxzZWxlY3QgbmdDb250cm9sPVwiY2l0eVwiPlxuICogICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNpdGllc1wiIFt2YWx1ZV09XCJjXCI+PC9vcHRpb24+XG4gKiA8L3NlbGVjdD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ29wdGlvbid9KVxuZXhwb3J0IGNsYXNzIE5nU2VsZWN0T3B0aW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgaWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgcHJpdmF0ZSBfc2VsZWN0OiBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3Nvcikge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fc2VsZWN0KSkgdGhpcy5pZCA9IHRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKTtcbiAgfVxuXG4gIEBJbnB1dCgnbmdWYWx1ZScpXG4gIHNldCBuZ1ZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ID09IG51bGwpIHJldHVybjtcbiAgICB0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCwgdmFsdWUpO1xuICAgIHRoaXMuX3NldEVsZW1lbnRWYWx1ZShfYnVpbGRWYWx1ZVN0cmluZyh0aGlzLmlkLCB2YWx1ZSkpO1xuICAgIHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoJ3ZhbHVlJylcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9zZXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fc2VsZWN0KSkgdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NldEVsZW1lbnRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9zZWxlY3QpKSB7XG4gICAgICB0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCk7XG4gICAgICB0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar ng_control_name_1 = require('./directives/ng_control_name');\r\nvar ng_form_control_1 = require('./directives/ng_form_control');\r\nvar ng_model_1 = require('./directives/ng_model');\r\nvar ng_control_group_1 = require('./directives/ng_control_group');\r\nvar ng_form_model_1 = require('./directives/ng_form_model');\r\nvar ng_form_1 = require('./directives/ng_form');\r\nvar default_value_accessor_1 = require('./directives/default_value_accessor');\r\nvar checkbox_value_accessor_1 = require('./directives/checkbox_value_accessor');\r\nvar number_value_accessor_1 = require('./directives/number_value_accessor');\r\nvar radio_control_value_accessor_1 = require('./directives/radio_control_value_accessor');\r\nvar ng_control_status_1 = require('./directives/ng_control_status');\r\nvar select_control_value_accessor_1 = require('./directives/select_control_value_accessor');\r\nvar validators_1 = require('./directives/validators');\r\nvar ng_control_name_2 = require('./directives/ng_control_name');\r\nexports.NgControlName = ng_control_name_2.NgControlName;\r\nvar ng_form_control_2 = require('./directives/ng_form_control');\r\nexports.NgFormControl = ng_form_control_2.NgFormControl;\r\nvar ng_model_2 = require('./directives/ng_model');\r\nexports.NgModel = ng_model_2.NgModel;\r\nvar ng_control_group_2 = require('./directives/ng_control_group');\r\nexports.NgControlGroup = ng_control_group_2.NgControlGroup;\r\nvar ng_form_model_2 = require('./directives/ng_form_model');\r\nexports.NgFormModel = ng_form_model_2.NgFormModel;\r\nvar ng_form_2 = require('./directives/ng_form');\r\nexports.NgForm = ng_form_2.NgForm;\r\nvar default_value_accessor_2 = require('./directives/default_value_accessor');\r\nexports.DefaultValueAccessor = default_value_accessor_2.DefaultValueAccessor;\r\nvar checkbox_value_accessor_2 = require('./directives/checkbox_value_accessor');\r\nexports.CheckboxControlValueAccessor = checkbox_value_accessor_2.CheckboxControlValueAccessor;\r\nvar radio_control_value_accessor_2 = require('./directives/radio_control_value_accessor');\r\nexports.RadioControlValueAccessor = radio_control_value_accessor_2.RadioControlValueAccessor;\r\nexports.RadioButtonState = radio_control_value_accessor_2.RadioButtonState;\r\nvar number_value_accessor_2 = require('./directives/number_value_accessor');\r\nexports.NumberValueAccessor = number_value_accessor_2.NumberValueAccessor;\r\nvar ng_control_status_2 = require('./directives/ng_control_status');\r\nexports.NgControlStatus = ng_control_status_2.NgControlStatus;\r\nvar select_control_value_accessor_2 = require('./directives/select_control_value_accessor');\r\nexports.SelectControlValueAccessor = select_control_value_accessor_2.SelectControlValueAccessor;\r\nexports.NgSelectOption = select_control_value_accessor_2.NgSelectOption;\r\nvar validators_2 = require('./directives/validators');\r\nexports.RequiredValidator = validators_2.RequiredValidator;\r\nexports.MinLengthValidator = validators_2.MinLengthValidator;\r\nexports.MaxLengthValidator = validators_2.MaxLengthValidator;\r\nexports.PatternValidator = validators_2.PatternValidator;\r\nvar ng_control_1 = require('./directives/ng_control');\r\nexports.NgControl = ng_control_1.NgControl;\r\n/**\r\n *\r\n * A list of all the form directives used as part of a `@Component` annotation.\r\n *\r\n * This is a shorthand for importing them each individually.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * class MyApp {}\r\n * ```\r\n */\r\nexports.FORM_DIRECTIVES = lang_1.CONST_EXPR([\r\n ng_control_name_1.NgControlName,\r\n ng_control_group_1.NgControlGroup,\r\n ng_form_control_1.NgFormControl,\r\n ng_model_1.NgModel,\r\n ng_form_model_1.NgFormModel,\r\n ng_form_1.NgForm,\r\n select_control_value_accessor_1.NgSelectOption,\r\n default_value_accessor_1.DefaultValueAccessor,\r\n number_value_accessor_1.NumberValueAccessor,\r\n checkbox_value_accessor_1.CheckboxControlValueAccessor,\r\n select_control_value_accessor_1.SelectControlValueAccessor,\r\n radio_control_value_accessor_1.RadioControlValueAccessor,\r\n ng_control_status_1.NgControlStatus,\r\n validators_1.RequiredValidator,\r\n validators_1.MinLengthValidator,\r\n validators_1.MaxLengthValidator,\r\n validators_1.PatternValidator\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQStCLDBCQUEwQixDQUFDLENBQUE7QUFDMUQsZ0NBQTRCLDhCQUE4QixDQUFDLENBQUE7QUFDM0QsZ0NBQTRCLDhCQUE4QixDQUFDLENBQUE7QUFDM0QseUJBQXNCLHVCQUF1QixDQUFDLENBQUE7QUFDOUMsaUNBQTZCLCtCQUErQixDQUFDLENBQUE7QUFDN0QsOEJBQTBCLDRCQUE0QixDQUFDLENBQUE7QUFDdkQsd0JBQXFCLHNCQUFzQixDQUFDLENBQUE7QUFDNUMsdUNBQW1DLHFDQUFxQyxDQUFDLENBQUE7QUFDekUsd0NBQTJDLHNDQUFzQyxDQUFDLENBQUE7QUFDbEYsc0NBQWtDLG9DQUFvQyxDQUFDLENBQUE7QUFDdkUsNkNBQXdDLDJDQUEyQyxDQUFDLENBQUE7QUFDcEYsa0NBQThCLGdDQUFnQyxDQUFDLENBQUE7QUFDL0QsOENBR08sNENBQTRDLENBQUMsQ0FBQTtBQUNwRCwyQkFLTyx5QkFBeUIsQ0FBQyxDQUFBO0FBRWpDLGdDQUE0Qiw4QkFBOEIsQ0FBQztBQUFuRCx3REFBbUQ7QUFDM0QsZ0NBQTRCLDhCQUE4QixDQUFDO0FBQW5ELHdEQUFtRDtBQUMzRCx5QkFBc0IsdUJBQXVCLENBQUM7QUFBdEMscUNBQXNDO0FBQzlDLGlDQUE2QiwrQkFBK0IsQ0FBQztBQUFyRCwyREFBcUQ7QUFDN0QsOEJBQTBCLDRCQUE0QixDQUFDO0FBQS9DLGtEQUErQztBQUN2RCx3QkFBcUIsc0JBQXNCLENBQUM7QUFBcEMsa0NBQW9DO0FBQzVDLHVDQUFtQyxxQ0FBcUMsQ0FBQztBQUFqRSw2RUFBaUU7QUFDekUsd0NBQTJDLHNDQUFzQyxDQUFDO0FBQTFFLDhGQUEwRTtBQUNsRiw2Q0FHTywyQ0FBMkMsQ0FBQztBQUZqRCw2RkFBeUI7QUFDekIsMkVBQ2lEO0FBQ25ELHNDQUFrQyxvQ0FBb0MsQ0FBQztBQUEvRCwwRUFBK0Q7QUFDdkUsa0NBQThCLGdDQUFnQyxDQUFDO0FBQXZELDhEQUF1RDtBQUMvRCw4Q0FHTyw0Q0FBNEMsQ0FBQztBQUZsRCxnR0FBMEI7QUFDMUIsd0VBQ2tEO0FBQ3BELDJCQUtPLHlCQUF5QixDQUFDO0FBSi9CLDJEQUFpQjtBQUNqQiw2REFBa0I7QUFDbEIsNkRBQWtCO0FBQ2xCLHlEQUMrQjtBQUNqQywyQkFBd0IseUJBQXlCLENBQUM7QUFBMUMsMkNBQTBDO0FBR2xEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNVLHVCQUFlLEdBQVcsaUJBQVUsQ0FBQztJQUNoRCwrQkFBYTtJQUNiLGlDQUFjO0lBRWQsK0JBQWE7SUFDYixrQkFBTztJQUNQLDJCQUFXO0lBQ1gsZ0JBQU07SUFFTiw4Q0FBYztJQUNkLDZDQUFvQjtJQUNwQiwyQ0FBbUI7SUFDbkIsc0RBQTRCO0lBQzVCLDBEQUEwQjtJQUMxQix3REFBeUI7SUFDekIsbUNBQWU7SUFFZiw4QkFBaUI7SUFDakIsK0JBQWtCO0lBQ2xCLCtCQUFrQjtJQUNsQiw2QkFBZ0I7Q0FDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtOZ0NvbnRyb2xOYW1lfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9uYW1lJztcbmltcG9ydCB7TmdGb3JtQ29udHJvbH0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2Zvcm1fY29udHJvbCc7XG5pbXBvcnQge05nTW9kZWx9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19tb2RlbCc7XG5pbXBvcnQge05nQ29udHJvbEdyb3VwfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9ncm91cCc7XG5pbXBvcnQge05nRm9ybU1vZGVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfZm9ybV9tb2RlbCc7XG5pbXBvcnQge05nRm9ybX0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2Zvcm0nO1xuaW1wb3J0IHtEZWZhdWx0VmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9kaXJlY3RpdmVzL2RlZmF1bHRfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hlY2tib3hfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtOdW1iZXJWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RpcmVjdGl2ZXMvbnVtYmVyX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7UmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9kaXJlY3RpdmVzL3JhZGlvX2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtOZ0NvbnRyb2xTdGF0dXN9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19jb250cm9sX3N0YXR1cyc7XG5pbXBvcnQge1xuICBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdTZWxlY3RPcHRpb25cbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3NlbGVjdF9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7XG4gIFJlcXVpcmVkVmFsaWRhdG9yLFxuICBNaW5MZW5ndGhWYWxpZGF0b3IsXG4gIE1heExlbmd0aFZhbGlkYXRvcixcbiAgUGF0dGVyblZhbGlkYXRvclxufSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7TmdDb250cm9sTmFtZX0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2NvbnRyb2xfbmFtZSc7XG5leHBvcnQge05nRm9ybUNvbnRyb2x9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19mb3JtX2NvbnRyb2wnO1xuZXhwb3J0IHtOZ01vZGVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfbW9kZWwnO1xuZXhwb3J0IHtOZ0NvbnRyb2xHcm91cH0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2NvbnRyb2xfZ3JvdXAnO1xuZXhwb3J0IHtOZ0Zvcm1Nb2RlbH0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2Zvcm1fbW9kZWwnO1xuZXhwb3J0IHtOZ0Zvcm19IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19mb3JtJztcbmV4cG9ydCB7RGVmYXVsdFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9kZWZhdWx0X3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7Q2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoZWNrYm94X3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7XG4gIFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFJhZGlvQnV0dG9uU3RhdGVcbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3JhZGlvX2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtOdW1iZXJWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RpcmVjdGl2ZXMvbnVtYmVyX3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7TmdDb250cm9sU3RhdHVzfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9zdGF0dXMnO1xuZXhwb3J0IHtcbiAgU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5nU2VsZWN0T3B0aW9uXG59IGZyb20gJy4vZGlyZWN0aXZlcy9zZWxlY3RfY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5leHBvcnQge1xuICBSZXF1aXJlZFZhbGlkYXRvcixcbiAgTWluTGVuZ3RoVmFsaWRhdG9yLFxuICBNYXhMZW5ndGhWYWxpZGF0b3IsXG4gIFBhdHRlcm5WYWxpZGF0b3Jcbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMnO1xuZXhwb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19jb250cm9sJztcbmV4cG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcblxuLyoqXG4gKlxuICogQSBsaXN0IG9mIGFsbCB0aGUgZm9ybSBkaXJlY3RpdmVzIHVzZWQgYXMgcGFydCBvZiBhIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLlxuICpcbiAqICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBpbXBvcnRpbmcgdGhlbSBlYWNoIGluZGl2aWR1YWxseS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWFwcCcsXG4gKiAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVNdXG4gKiB9KVxuICogY2xhc3MgTXlBcHAge31cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgRk9STV9ESVJFQ1RJVkVTOiBUeXBlW10gPSBDT05TVF9FWFBSKFtcbiAgTmdDb250cm9sTmFtZSxcbiAgTmdDb250cm9sR3JvdXAsXG5cbiAgTmdGb3JtQ29udHJvbCxcbiAgTmdNb2RlbCxcbiAgTmdGb3JtTW9kZWwsXG4gIE5nRm9ybSxcblxuICBOZ1NlbGVjdE9wdGlvbixcbiAgRGVmYXVsdFZhbHVlQWNjZXNzb3IsXG4gIE51bWJlclZhbHVlQWNjZXNzb3IsXG4gIENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOZ0NvbnRyb2xTdGF0dXMsXG5cbiAgUmVxdWlyZWRWYWxpZGF0b3IsXG4gIE1pbkxlbmd0aFZhbGlkYXRvcixcbiAgTWF4TGVuZ3RoVmFsaWRhdG9yLFxuICBQYXR0ZXJuVmFsaWRhdG9yXG5dKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar core_1 = require('angular2/core');\r\n/**\r\n * Providers for validators to be used for {@link Control}s in a form.\r\n *\r\n * Provide this using `multi: true` to add validators.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/forms/ts/ng_validators/ng_validators.ts region='ng_validators'}\r\n */\r\nexports.NG_VALIDATORS = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"NgValidators\"));\r\n/**\r\n * Providers for asynchronous validators to be used for {@link Control}s\r\n * in a form.\r\n *\r\n * Provide this using `multi: true` to add validators.\r\n *\r\n * See {@link NG_VALIDATORS} for more details.\r\n */\r\nexports.NG_ASYNC_VALIDATORS = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"NgAsyncValidators\"));\r\n/**\r\n * Provides a set of validators used by form controls.\r\n *\r\n * A validator is a function that processes a {@link Control} or collection of\r\n * controls and returns a map of errors. A null map means that validation has passed.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * var loginControl = new Control(\"\", Validators.required)\r\n * ```\r\n */\r\nvar Validators = (function () {\r\n function Validators() {\r\n }\r\n /**\r\n * Validator that requires controls to have a non-empty value.\r\n */\r\n Validators.required = function (control) {\r\n return lang_1.isBlank(control.value) || (lang_1.isString(control.value) && control.value == \"\") ?\r\n { \"required\": true } :\r\n null;\r\n };\r\n /**\r\n * Validator that requires controls to have a value of a minimum length.\r\n */\r\n Validators.minLength = function (minLength) {\r\n return function (control) {\r\n if (lang_1.isPresent(Validators.required(control)))\r\n return null;\r\n var v = control.value;\r\n return v.length < minLength ?\r\n { \"minlength\": { \"requiredLength\": minLength, \"actualLength\": v.length } } :\r\n null;\r\n };\r\n };\r\n /**\r\n * Validator that requires controls to have a value of a maximum length.\r\n */\r\n Validators.maxLength = function (maxLength) {\r\n return function (control) {\r\n if (lang_1.isPresent(Validators.required(control)))\r\n return null;\r\n var v = control.value;\r\n return v.length > maxLength ?\r\n { \"maxlength\": { \"requiredLength\": maxLength, \"actualLength\": v.length } } :\r\n null;\r\n };\r\n };\r\n /**\r\n * Validator that requires a control to match a regex to its value.\r\n */\r\n Validators.pattern = function (pattern) {\r\n return function (control) {\r\n if (lang_1.isPresent(Validators.required(control)))\r\n return null;\r\n var regex = new RegExp(\"^\" + pattern + \"$\");\r\n var v = control.value;\r\n return regex.test(v) ? null :\r\n { \"pattern\": { \"requiredPattern\": \"^\" + pattern + \"$\", \"actualValue\": v } };\r\n };\r\n };\r\n /**\r\n * No-op validator.\r\n */\r\n Validators.nullValidator = function (c) { return null; };\r\n /**\r\n * Compose multiple validators into a single function that returns the union\r\n * of the individual error maps.\r\n */\r\n Validators.compose = function (validators) {\r\n if (lang_1.isBlank(validators))\r\n return null;\r\n var presentValidators = validators.filter(lang_1.isPresent);\r\n if (presentValidators.length == 0)\r\n return null;\r\n return function (control) {\r\n return _mergeErrors(_executeValidators(control, presentValidators));\r\n };\r\n };\r\n Validators.composeAsync = function (validators) {\r\n if (lang_1.isBlank(validators))\r\n return null;\r\n var presentValidators = validators.filter(lang_1.isPresent);\r\n if (presentValidators.length == 0)\r\n return null;\r\n return function (control) {\r\n var promises = _executeAsyncValidators(control, presentValidators).map(_convertToPromise);\r\n return promise_1.PromiseWrapper.all(promises).then(_mergeErrors);\r\n };\r\n };\r\n return Validators;\r\n}());\r\nexports.Validators = Validators;\r\nfunction _convertToPromise(obj) {\r\n return promise_1.PromiseWrapper.isPromise(obj) ? obj : async_1.ObservableWrapper.toPromise(obj);\r\n}\r\nfunction _executeValidators(control, validators) {\r\n return validators.map(function (v) { return v(control); });\r\n}\r\nfunction _executeAsyncValidators(control, validators) {\r\n return validators.map(function (v) { return v(control); });\r\n}\r\nfunction _mergeErrors(arrayOfErrors) {\r\n var res = arrayOfErrors.reduce(function (res, errors) {\r\n return lang_1.isPresent(errors) ? collection_1.StringMapWrapper.merge(res, errors) : res;\r\n }, {});\r\n return collection_1.StringMapWrapper.isEmpty(res) ? null : res;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQXVELDBCQUEwQixDQUFDLENBQUE7QUFDbEYsd0JBQTZCLDZCQUE2QixDQUFDLENBQUE7QUFDM0Qsc0JBQWdDLDJCQUEyQixDQUFDLENBQUE7QUFDNUQsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFDN0UscUJBQTBCLGVBQWUsQ0FBQyxDQUFBO0FBSzFDOzs7Ozs7OztHQVFHO0FBQ1UscUJBQWEsR0FBZ0IsaUJBQVUsQ0FBQyxJQUFJLGtCQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUV0Rjs7Ozs7OztHQU9HO0FBQ1UsMkJBQW1CLEdBQWdCLGlCQUFVLENBQUMsSUFBSSxrQkFBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztBQUVqRzs7Ozs7Ozs7Ozs7R0FXRztBQUNIO0lBQUE7SUE4RUEsQ0FBQztJQTdFQzs7T0FFRztJQUNJLG1CQUFRLEdBQWYsVUFBZ0IsT0FBb0M7UUFDbEQsTUFBTSxDQUFDLGNBQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3RFLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQztZQUNsQixJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQVMsR0FBaEIsVUFBaUIsU0FBaUI7UUFDaEMsTUFBTSxDQUFDLFVBQUMsT0FBb0M7WUFDMUMsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFB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ZW50IjpbImltcG9ydCB7aXNCbGFuaywgaXNQcmVzZW50LCBDT05TVF9FWFBSLCBpc1N0cmluZ30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7UHJvbWlzZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvcHJvbWlzZSc7XG5pbXBvcnQge09ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge09wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuaW1wb3J0ICogYXMgbW9kZWxNb2R1bGUgZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQge1ZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZufSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycyc7XG5cbi8qKlxuICogUHJvdmlkZXJzIGZvciB2YWxpZGF0b3JzIHRvIGJlIHVzZWQgZm9yIHtAbGluayBDb250cm9sfXMgaW4gYSBmb3JtLlxuICpcbiAqIFByb3ZpZGUgdGhpcyB1c2luZyBgbXVsdGk6IHRydWVgIHRvIGFkZCB2YWxpZGF0b3JzLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvZm9ybXMvdHMvbmdfdmFsaWRhdG9ycy9uZ192YWxpZGF0b3JzLnRzIHJlZ2lvbj0nbmdfdmFsaWRhdG9ycyd9XG4gKi9cbmV4cG9ydCBjb25zdCBOR19WQUxJREFUT1JTOiBPcGFxdWVUb2tlbiA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiTmdWYWxpZGF0b3JzXCIpKTtcblxuLyoqXG4gKiBQcm92aWRlcnMgZm9yIGFzeW5jaHJvbm91cyB2YWxpZGF0b3JzIHRvIGJlIHVzZWQgZm9yIHtAbGluayBDb250cm9sfXNcbiAqIGluIGEgZm9ybS5cbiAqXG4gKiBQcm92aWRlIHRoaXMgdXNpbmcgYG11bHRpOiB0cnVlYCB0byBhZGQgdmFsaWRhdG9ycy5cbiAqXG4gKiBTZWUge0BsaW5rIE5HX1ZBTElEQVRPUlN9IGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBjb25zdCBOR19BU1lOQ19WQUxJREFUT1JTOiBPcGFxdWVUb2tlbiA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiTmdBc3luY1ZhbGlkYXRvcnNcIikpO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgc2V0IG9mIHZhbGlkYXRvcnMgdXNlZCBieSBmb3JtIGNvbnRyb2xzLlxuICpcbiAqIEEgdmFsaWRhdG9yIGlzIGEgZnVuY3Rpb24gdGhhdCBwcm9jZXNzZXMgYSB7QGxpbmsgQ29udHJvbH0gb3IgY29sbGVjdGlvbiBvZlxuICogY29udHJvbHMgYW5kIHJldHVybnMgYSBtYXAgb2YgZXJyb3JzLiBBIG51bGwgbWFwIG1lYW5zIHRoYXQgdmFsaWRhdGlvbiBoYXMgcGFzc2VkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdmFyIGxvZ2luQ29udHJvbCA9IG5ldyBDb250cm9sKFwiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvcnMge1xuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIG5vbi1lbXB0eSB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyByZXF1aXJlZChjb250cm9sOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIHJldHVybiBpc0JsYW5rKGNvbnRyb2wudmFsdWUpIHx8IChpc1N0cmluZyhjb250cm9sLnZhbHVlKSAmJiBjb250cm9sLnZhbHVlID09IFwiXCIpID9cbiAgICAgICAgICAgICAgIHtcInJlcXVpcmVkXCI6IHRydWV9IDpcbiAgICAgICAgICAgICAgIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWluaW11bSBsZW5ndGguXG4gICAqL1xuICBzdGF0aWMgbWluTGVuZ3RoKG1pbkxlbmd0aDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0gPT4ge1xuICAgICAgaWYgKGlzUHJlc2VudChWYWxpZGF0b3JzLnJlcXVpcmVkKGNvbnRyb2wpKSkgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgdjogc3RyaW5nID0gY29udHJvbC52YWx1ZTtcbiAgICAgIHJldHVybiB2Lmxlbmd0aCA8IG1pbkxlbmd0aCA/XG4gICAgICAgICAgICAgICAgIHtcIm1pbmxlbmd0aFwiOiB7XCJyZXF1aXJlZExlbmd0aFwiOiBtaW5MZW5ndGgsIFwiYWN0dWFsTGVuZ3RoXCI6IHYubGVuZ3RofX0gOlxuICAgICAgICAgICAgICAgICBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgY29udHJvbHMgdG8gaGF2ZSBhIHZhbHVlIG9mIGEgbWF4aW11bSBsZW5ndGguXG4gICAqL1xuICBzdGF0aWMgbWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0gPT4ge1xuICAgICAgaWYgKGlzUHJlc2VudChWYWxpZGF0b3JzLnJlcXVpcmVkKGNvbnRyb2wpKSkgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgdjogc3RyaW5nID0gY29udHJvbC52YWx1ZTtcbiAgICAgIHJldHVybiB2Lmxlbmd0aCA+IG1heExlbmd0aCA/XG4gICAgICAgICAgICAgICAgIHtcIm1heGxlbmd0aFwiOiB7XCJyZXF1aXJlZExlbmd0aFwiOiBtYXhMZW5ndGgsIFwiYWN0dWFsTGVuZ3RoXCI6IHYubGVuZ3RofX0gOlxuICAgICAgICAgICAgICAgICBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgYSBjb250cm9sIHRvIG1hdGNoIGEgcmVnZXggdG8gaXRzIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIHBhdHRlcm4ocGF0dGVybjogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0gPT4ge1xuICAgICAgaWYgKGlzUHJlc2VudChWYWxpZGF0b3JzLnJlcXVpcmVkKGNvbnRyb2wpKSkgcmV0dXJuIG51bGw7XG4gICAgICBsZXQgcmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJufSRgKTtcbiAgICAgIGxldCB2OiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodikgPyBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1wicGF0dGVyblwiOiB7XCJyZXF1aXJlZFBhdHRlcm5cIjogYF4ke3BhdHRlcm59JGAsIFwiYWN0dWFsVmFsdWVcIjogdn19O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTm8tb3AgdmFsaWRhdG9yLlxuICAgKi9cbiAgc3RhdGljIG51bGxWYWxpZGF0b3IoYzogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGJvb2xlYW59IHsgcmV0dXJuIG51bGw7IH1cblxuICAvKipcbiAgICogQ29tcG9zZSBtdWx0aXBsZSB2YWxpZGF0b3JzIGludG8gYSBzaW5nbGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB1bmlvblxuICAgKiBvZiB0aGUgaW5kaXZpZHVhbCBlcnJvciBtYXBzLlxuICAgKi9cbiAgc3RhdGljIGNvbXBvc2UodmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSk6IFZhbGlkYXRvckZuIHtcbiAgICBpZiAoaXNCbGFuayh2YWxpZGF0b3JzKSkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHByZXNlbnRWYWxpZGF0b3JzID0gdmFsaWRhdG9ycy5maWx0ZXIoaXNQcmVzZW50KTtcbiAgICBpZiAocHJlc2VudFZhbGlkYXRvcnMubGVuZ3RoID09IDApIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKGNvbnRyb2w6IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbCkge1xuICAgICAgcmV0dXJuIF9tZXJnZUVycm9ycyhfZXhlY3V0ZVZhbGlkYXRvcnMoY29udHJvbCwgcHJlc2VudFZhbGlkYXRvcnMpKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNvbXBvc2VBc3luYyh2YWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10pOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICBpZiAoaXNCbGFuayh2YWxpZGF0b3JzKSkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHByZXNlbnRWYWxpZGF0b3JzID0gdmFsaWRhdG9ycy5maWx0ZXIoaXNQcmVzZW50KTtcbiAgICBpZiAocHJlc2VudFZhbGlkYXRvcnMubGVuZ3RoID09IDApIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKGNvbnRyb2w6IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbCkge1xuICAgICAgbGV0IHByb21pc2VzID0gX2V4ZWN1dGVBc3luY1ZhbGlkYXRvcnMoY29udHJvbCwgcHJlc2VudFZhbGlkYXRvcnMpLm1hcChfY29udmVydFRvUHJvbWlzZSk7XG4gICAgICByZXR1cm4gUHJvbWlzZVdyYXBwZXIuYWxsKHByb21pc2VzKS50aGVuKF9tZXJnZUVycm9ycyk7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY29udmVydFRvUHJvbWlzZShvYmo6IGFueSk6IGFueSB7XG4gIHJldHVybiBQcm9taXNlV3JhcHBlci5pc1Byb21pc2Uob2JqKSA/IG9iaiA6IE9ic2VydmFibGVXcmFwcGVyLnRvUHJvbWlzZShvYmopO1xufVxuXG5mdW5jdGlvbiBfZXhlY3V0ZVZhbGlkYXRvcnMoY29udHJvbDogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10pOiBhbnlbXSB7XG4gIHJldHVybiB2YWxpZGF0b3JzLm1hcCh2ID0+IHYoY29udHJvbCkpO1xufVxuXG5mdW5jdGlvbiBfZXhlY3V0ZUFzeW5jVmFsaWRhdG9ycyhjb250cm9sOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10pOiBhbnlbXSB7XG4gIHJldHVybiB2YWxpZGF0b3JzLm1hcCh2ID0+IHYoY29udHJvbCkpO1xufVxuXG5mdW5jdGlvbiBfbWVyZ2VFcnJvcnMoYXJyYXlPZkVycm9yczogYW55W10pOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gIHZhciByZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9ID1cbiAgICAgIGFycmF5T2ZFcnJvcnMucmVkdWNlKChyZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9LCBlcnJvcnM6IHtba2V5OiBzdHJpbmddOiBhbnl9KSA9PiB7XG4gICAgICAgIHJldHVybiBpc1ByZXNlbnQoZXJyb3JzKSA/IFN0cmluZ01hcFdyYXBwZXIubWVyZ2UocmVzLCBlcnJvcnMpIDogcmVzO1xuICAgICAgfSwge30pO1xuICByZXR1cm4gU3RyaW5nTWFwV3JhcHBlci5pc0VtcHR5KHJlcykgPyBudWxsIDogcmVzO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar validators_1 = require('../validators');\r\nvar REQUIRED = validators_1.Validators.required;\r\nvar REQUIRED_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useValue: REQUIRED, multi: true }));\r\n/**\r\n * A Directive that adds the `required` validator to any controls marked with the\r\n * `required` attribute, via the {@link NG_VALIDATORS} binding.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <input ngControl=\"fullName\" required>\r\n * ```\r\n */\r\nvar RequiredValidator = (function () {\r\n function RequiredValidator() {\r\n }\r\n RequiredValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[required][ngControl],[required][ngFormControl],[required][ngModel]',\r\n providers: [REQUIRED_VALIDATOR]\r\n }), \r\n __metadata('design:paramtypes', [])\r\n ], RequiredValidator);\r\n return RequiredValidator;\r\n}());\r\nexports.RequiredValidator = RequiredValidator;\r\n/**\r\n * Provivder which adds {@link MinLengthValidator} to {@link NG_VALIDATORS}.\r\n *\r\n * ## Example:\r\n *\r\n * {@example common/forms/ts/validators/validators.ts region='min'}\r\n */\r\nvar MIN_LENGTH_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useExisting: core_1.forwardRef(function () { return MinLengthValidator; }), multi: true }));\r\n/**\r\n * A directive which installs the {@link MinLengthValidator} for any `ngControl`,\r\n * `ngFormControl`, or control with `ngModel` that also has a `minlength` attribute.\r\n */\r\nvar MinLengthValidator = (function () {\r\n function MinLengthValidator(minLength) {\r\n this._validator = validators_1.Validators.minLength(lang_1.NumberWrapper.parseInt(minLength, 10));\r\n }\r\n MinLengthValidator.prototype.validate = function (c) { return this._validator(c); };\r\n MinLengthValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[minlength][ngControl],[minlength][ngFormControl],[minlength][ngModel]',\r\n providers: [MIN_LENGTH_VALIDATOR]\r\n }),\r\n __param(0, core_1.Attribute(\"minlength\")), \r\n __metadata('design:paramtypes', [String])\r\n ], MinLengthValidator);\r\n return MinLengthValidator;\r\n}());\r\nexports.MinLengthValidator = MinLengthValidator;\r\n/**\r\n * Provider which adds {@link MaxLengthValidator} to {@link NG_VALIDATORS}.\r\n *\r\n * ## Example:\r\n *\r\n * {@example common/forms/ts/validators/validators.ts region='max'}\r\n */\r\nvar MAX_LENGTH_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useExisting: core_1.forwardRef(function () { return MaxLengthValidator; }), multi: true }));\r\n/**\r\n * A directive which installs the {@link MaxLengthValidator} for any `ngControl, `ngFormControl`,\r\n * or control with `ngModel` that also has a `maxlength` attribute.\r\n */\r\nvar MaxLengthValidator = (function () {\r\n function MaxLengthValidator(maxLength) {\r\n this._validator = validators_1.Validators.maxLength(lang_1.NumberWrapper.parseInt(maxLength, 10));\r\n }\r\n MaxLengthValidator.prototype.validate = function (c) { return this._validator(c); };\r\n MaxLengthValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[maxlength][ngControl],[maxlength][ngFormControl],[maxlength][ngModel]',\r\n providers: [MAX_LENGTH_VALIDATOR]\r\n }),\r\n __param(0, core_1.Attribute(\"maxlength\")), \r\n __metadata('design:paramtypes', [String])\r\n ], MaxLengthValidator);\r\n return MaxLengthValidator;\r\n}());\r\nexports.MaxLengthValidator = MaxLengthValidator;\r\n/**\r\n * A Directive that adds the `pattern` validator to any controls marked with the\r\n * `pattern` attribute, via the {@link NG_VALIDATORS} binding. Uses attribute value\r\n * as the regex to validate Control value against. Follows pattern attribute\r\n * semantics; i.e. regex must match entire Control value.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <input [ngControl]=\"fullName\" pattern=\"[a-zA-Z ]*\">\r\n * ```\r\n */\r\nvar PATTERN_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useExisting: core_1.forwardRef(function () { return PatternValidator; }), multi: true }));\r\nvar PatternValidator = (function () {\r\n function PatternValidator(pattern) {\r\n this._validator = validators_1.Validators.pattern(pattern);\r\n }\r\n PatternValidator.prototype.validate = function (c) { return this._validator(c); };\r\n PatternValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[pattern][ngControl],[pattern][ngFormControl],[pattern][ngModel]',\r\n providers: [PATTERN_VALIDATOR]\r\n }),\r\n __param(0, core_1.Attribute(\"pattern\")), \r\n __metadata('design:paramtypes', [String])\r\n ], PatternValidator);\r\n return PatternValidator;\r\n}());\r\nexports.PatternValidator = PatternValidator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBeUQsZUFBZSxDQUFDLENBQUE7QUFDekUscUJBQXdDLDBCQUEwQixDQUFDLENBQUE7QUFDbkUsMkJBQXdDLGVBQWUsQ0FBQyxDQUFBO0FBeUJ4RCxJQUFNLFFBQVEsR0FBRyx1QkFBVSxDQUFDLFFBQVEsQ0FBQztBQUVyQyxJQUFNLGtCQUFrQixHQUNwQixpQkFBVSxDQUFDLElBQUksZUFBUSxDQUFDLDBCQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBS0g7SUFBQTtJQUNBLENBQUM7SUFMRDtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUscUVBQXFFO1lBQy9FLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1NBQ2hDLENBQUM7O3lCQUFBO0lBRUYsd0JBQUM7QUFBRCxDQUFDLEFBREQsSUFDQztBQURZLHlCQUFpQixvQkFDN0IsQ0FBQTtBQU9EOzs7Ozs7R0FNRztBQUNILElBQU0sb0JBQW9CLEdBQUcsaUJBQVUsQ0FDbkMsSUFBSSxlQUFRLENBQUMsMEJBQWEsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxrQkFBa0IsRUFBbEIsQ0FBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbkc7OztHQUdHO0FBS0g7SUFHRSw0QkFBb0MsU0FBaUI7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBVSxDQUFDLFNBQVMsQ0FBQyxvQkFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQscUNBQVEsR0FBUixVQUFTLENBQWtCLElBQTBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQVhuRjtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsd0VBQXdFO1lBQ2xGLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1NBQ2xDLENBQUM7bUJBSWEsZ0JBQVMsQ0FBQyxXQUFXLENBQUM7OzBCQUpuQztJQVNGLHlCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFSWSwwQkFBa0IscUJBUTlCLENBQUE7QUFFRDs7Ozs7O0dBTUc7QUFDSCxJQUFNLG9CQUFvQixHQUFHLGlCQUFVLENBQ25DLElBQUksZUFBUSxDQUFDLDBCQUFhLEVBQUUsRUFBQyxXQUFXLEVBQUUsaUJBQVUsQ0FBQyxjQUFNLE9BQUEsa0JBQWtCLEVBQWxCLENBQWtCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRW5HOzs7R0FHRztBQUtIO0lBR0UsNEJBQW9DLFNBQWlCO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsdUJBQVUsQ0FBQyxTQUFTLENBQUMsb0JBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELHFDQUFRLEdBQVIsVUFBUyxDQUFrQixJQUEwQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFYbkY7UUFBQyxnQkFBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHdFQUF3RTtZQUNsRixTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztTQUNsQyxDQUFDO21CQUlhLGdCQUFTLENBQUMsV0FBVyxDQUFDOzswQkFKbkM7SUFTRix5QkFBQztBQUFELENBQUMsQUFSRCxJQVFDO0FBUlksMEJBQWtCLHFCQVE5QixDQUFBO0FBR0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxJQUFNLGlCQUFpQixHQUFHLGlCQUFVLENBQ2hDLElBQUksZUFBUSxDQUFDLDBCQUFhLEVBQUUsRUFBQyxXQUFXLEVBQUUsaUJBQVUsQ0FBQyxjQUFNLE9BQUEsZ0JBQWdCLEVBQWhCLENBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBS2pHO0lBR0UsMEJBQWtDLE9BQWU7UUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsbUNBQVEsR0FBUixVQUFTLENBQWtCLElBQTBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQVhuRjtRQUFDLGdCQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsa0VBQWtFO1lBQzVFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1NBQy9CLENBQUM7bUJBSWEsZ0JBQVMsQ0FBQyxTQUFTLENBQUM7O3dCQUpqQztJQVNGLHVCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7QUFSWSx3QkFBZ0IsbUJBUTVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2ZvcndhcmRSZWYsIFByb3ZpZGVyLCBBdHRyaWJ1dGUsIERpcmVjdGl2ZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0NPTlNUX0VYUFIsIE51bWJlcldyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1ZhbGlkYXRvcnMsIE5HX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2x9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCAqIGFzIG1vZGVsTW9kdWxlIGZyb20gJy4uL21vZGVsJztcblxuXG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHRoYXQgY2FuIGJlIGltcGxlbWVudGVkIGJ5IGNsYXNzZXMgdGhhdCBjYW4gYWN0IGFzIHZhbGlkYXRvcnMuXG4gKlxuICogIyMgVXNhZ2VcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBARGlyZWN0aXZlKHtcbiAqICAgc2VsZWN0b3I6ICdbY3VzdG9tLXZhbGlkYXRvcl0nLFxuICogICBwcm92aWRlcnM6IFtwcm92aWRlKE5HX1ZBTElEQVRPUlMsIHt1c2VFeGlzdGluZzogQ3VzdG9tVmFsaWRhdG9yRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZX0pXVxuICogfSlcbiAqIGNsYXNzIEN1c3RvbVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gKiAgIHZhbGlkYXRlKGM6IENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gKiAgICAgcmV0dXJuIHtcImN1c3RvbVwiOiB0cnVlfTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yIHsgdmFsaWRhdGUoYzogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX07IH1cblxuY29uc3QgUkVRVUlSRUQgPSBWYWxpZGF0b3JzLnJlcXVpcmVkO1xuXG5jb25zdCBSRVFVSVJFRF9WQUxJREFUT1IgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKE5HX1ZBTElEQVRPUlMsIHt1c2VWYWx1ZTogUkVRVUlSRUQsIG11bHRpOiB0cnVlfSkpO1xuXG4vKipcbiAqIEEgRGlyZWN0aXZlIHRoYXQgYWRkcyB0aGUgYHJlcXVpcmVkYCB2YWxpZGF0b3IgdG8gYW55IGNvbnRyb2xzIG1hcmtlZCB3aXRoIHRoZVxuICogYHJlcXVpcmVkYCBhdHRyaWJ1dGUsIHZpYSB0aGUge0BsaW5rIE5HX1ZBTElEQVRPUlN9IGJpbmRpbmcuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIDxpbnB1dCBuZ0NvbnRyb2w9XCJmdWxsTmFtZVwiIHJlcXVpcmVkPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tyZXF1aXJlZF1bbmdDb250cm9sXSxbcmVxdWlyZWRdW25nRm9ybUNvbnRyb2xdLFtyZXF1aXJlZF1bbmdNb2RlbF0nLFxuICBwcm92aWRlcnM6IFtSRVFVSVJFRF9WQUxJREFUT1JdXG59KVxuZXhwb3J0IGNsYXNzIFJlcXVpcmVkVmFsaWRhdG9yIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JGbiB7IChjOiBBYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fTsgfVxuZXhwb3J0IGludGVyZmFjZSBBc3luY1ZhbGlkYXRvckZuIHtcbiAgKGM6IEFic3RyYWN0Q29udHJvbCk6IGFueSAvKlByb21pc2U8e1trZXk6IHN0cmluZ106IGFueX0+fE9ic2VydmFibGU8e1trZXk6IHN0cmluZ106IGFueX0+Ki87XG59XG5cbi8qKlxuICogUHJvdml2ZGVyIHdoaWNoIGFkZHMge0BsaW5rIE1pbkxlbmd0aFZhbGlkYXRvcn0gdG8ge0BsaW5rIE5HX1ZBTElEQVRPUlN9LlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICoge0BleGFtcGxlIGNvbW1vbi9mb3Jtcy90cy92YWxpZGF0b3JzL3ZhbGlkYXRvcnMudHMgcmVnaW9uPSdtaW4nfVxuICovXG5jb25zdCBNSU5fTEVOR1RIX1ZBTElEQVRPUiA9IENPTlNUX0VYUFIoXG4gICAgbmV3IFByb3ZpZGVyKE5HX1ZBTElEQVRPUlMsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNaW5MZW5ndGhWYWxpZGF0b3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB3aGljaCBpbnN0YWxscyB0aGUge0BsaW5rIE1pbkxlbmd0aFZhbGlkYXRvcn0gZm9yIGFueSBgbmdDb250cm9sYCxcbiAqIGBuZ0Zvcm1Db250cm9sYCwgb3IgY29udHJvbCB3aXRoIGBuZ01vZGVsYCB0aGF0IGFsc28gaGFzIGEgYG1pbmxlbmd0aGAgYXR0cmlidXRlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWlubGVuZ3RoXVtuZ0NvbnRyb2xdLFttaW5sZW5ndGhdW25nRm9ybUNvbnRyb2xdLFttaW5sZW5ndGhdW25nTW9kZWxdJyxcbiAgcHJvdmlkZXJzOiBbTUlOX0xFTkdUSF9WQUxJREFUT1JdXG59KVxuZXhwb3J0IGNsYXNzIE1pbkxlbmd0aFZhbGlkYXRvciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgX3ZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG5cbiAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZShcIm1pbmxlbmd0aFwiKSBtaW5MZW5ndGg6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKE51bWJlcldyYXBwZXIucGFyc2VJbnQobWluTGVuZ3RoLCAxMCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0geyByZXR1cm4gdGhpcy5fdmFsaWRhdG9yKGMpOyB9XG59XG5cbi8qKlxuICogUHJvdmlkZXIgd2hpY2ggYWRkcyB7QGxpbmsgTWF4TGVuZ3RoVmFsaWRhdG9yfSB0byB7QGxpbmsgTkdfVkFMSURBVE9SU30uXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiB7QGV4YW1wbGUgY29tbW9uL2Zvcm1zL3RzL3ZhbGlkYXRvcnMvdmFsaWRhdG9ycy50cyByZWdpb249J21heCd9XG4gKi9cbmNvbnN0IE1BWF9MRU5HVEhfVkFMSURBVE9SID0gQ09OU1RfRVhQUihcbiAgICBuZXcgUHJvdmlkZXIoTkdfVkFMSURBVE9SUywge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1heExlbmd0aFZhbGlkYXRvciksIG11bHRpOiB0cnVlfSkpO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHdoaWNoIGluc3RhbGxzIHRoZSB7QGxpbmsgTWF4TGVuZ3RoVmFsaWRhdG9yfSBmb3IgYW55IGBuZ0NvbnRyb2wsIGBuZ0Zvcm1Db250cm9sYCxcbiAqIG9yIGNvbnRyb2wgd2l0aCBgbmdNb2RlbGAgdGhhdCBhbHNvIGhhcyBhIGBtYXhsZW5ndGhgIGF0dHJpYnV0ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21heGxlbmd0aF1bbmdDb250cm9sXSxbbWF4bGVuZ3RoXVtuZ0Zvcm1Db250cm9sXSxbbWF4bGVuZ3RoXVtuZ01vZGVsXScsXG4gIHByb3ZpZGVyczogW01BWF9MRU5HVEhfVkFMSURBVE9SXVxufSlcbmV4cG9ydCBjbGFzcyBNYXhMZW5ndGhWYWxpZGF0b3IgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICBwcml2YXRlIF92YWxpZGF0b3I6IFZhbGlkYXRvckZuO1xuXG4gIGNvbnN0cnVjdG9yKEBBdHRyaWJ1dGUoXCJtYXhsZW5ndGhcIikgbWF4TGVuZ3RoOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92YWxpZGF0b3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aChOdW1iZXJXcmFwcGVyLnBhcnNlSW50KG1heExlbmd0aCwgMTApKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHsgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvcihjKTsgfVxufVxuXG5cbi8qKlxuICogQSBEaXJlY3RpdmUgdGhhdCBhZGRzIHRoZSBgcGF0dGVybmAgdmFsaWRhdG9yIHRvIGFueSBjb250cm9scyBtYXJrZWQgd2l0aCB0aGVcbiAqIGBwYXR0ZXJuYCBhdHRyaWJ1dGUsIHZpYSB0aGUge0BsaW5rIE5HX1ZBTElEQVRPUlN9IGJpbmRpbmcuIFVzZXMgYXR0cmlidXRlIHZhbHVlXG4gKiBhcyB0aGUgcmVnZXggdG8gdmFsaWRhdGUgQ29udHJvbCB2YWx1ZSBhZ2FpbnN0LiAgRm9sbG93cyBwYXR0ZXJuIGF0dHJpYnV0ZVxuICogc2VtYW50aWNzOyBpLmUuIHJlZ2V4IG11c3QgbWF0Y2ggZW50aXJlIENvbnRyb2wgdmFsdWUuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIDxpbnB1dCBbbmdDb250cm9sXT1cImZ1bGxOYW1lXCIgcGF0dGVybj1cIlthLXpBLVogXSpcIj5cbiAqIGBgYFxuICovXG5jb25zdCBQQVRURVJOX1ZBTElEQVRPUiA9IENPTlNUX0VYUFIoXG4gICAgbmV3IFByb3ZpZGVyKE5HX1ZBTElEQVRPUlMsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQYXR0ZXJuVmFsaWRhdG9yKSwgbXVsdGk6IHRydWV9KSk7XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcGF0dGVybl1bbmdDb250cm9sXSxbcGF0dGVybl1bbmdGb3JtQ29udHJvbF0sW3BhdHRlcm5dW25nTW9kZWxdJyxcbiAgcHJvdmlkZXJzOiBbUEFUVEVSTl9WQUxJREFUT1JdXG59KVxuZXhwb3J0IGNsYXNzIFBhdHRlcm5WYWxpZGF0b3IgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICBwcml2YXRlIF92YWxpZGF0b3I6IFZhbGlkYXRvckZuO1xuXG4gIGNvbnN0cnVjdG9yKEBBdHRyaWJ1dGUoXCJwYXR0ZXJuXCIpIHBhdHRlcm46IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkYXRvciA9IFZhbGlkYXRvcnMucGF0dGVybihwYXR0ZXJuKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHsgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvcihjKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\n/**\r\n * Indicates that a Control is valid, i.e. that no errors exist in the input value.\r\n */\r\nexports.VALID = \"VALID\";\r\n/**\r\n * Indicates that a Control is invalid, i.e. that an error exists in the input value.\r\n */\r\nexports.INVALID = \"INVALID\";\r\n/**\r\n * Indicates that a Control is pending, i.e. that async validation is occurring and\r\n * errors are not yet available for the input value.\r\n */\r\nexports.PENDING = \"PENDING\";\r\nfunction isControl(control) {\r\n return control instanceof AbstractControl;\r\n}\r\nexports.isControl = isControl;\r\nfunction _find(control, path) {\r\n if (lang_1.isBlank(path))\r\n return null;\r\n if (!(path instanceof Array)) {\r\n path = path.split(\"/\");\r\n }\r\n if (path instanceof Array && collection_1.ListWrapper.isEmpty(path))\r\n return null;\r\n return path\r\n .reduce(function (v, name) {\r\n if (v instanceof ControlGroup) {\r\n return lang_1.isPresent(v.controls[name]) ? v.controls[name] : null;\r\n }\r\n else if (v instanceof ControlArray) {\r\n var index = name;\r\n return lang_1.isPresent(v.at(index)) ? v.at(index) : null;\r\n }\r\n else {\r\n return null;\r\n }\r\n }, control);\r\n}\r\nfunction toObservable(r) {\r\n return promise_1.PromiseWrapper.isPromise(r) ? async_1.ObservableWrapper.fromPromise(r) : r;\r\n}\r\n/**\r\n *\r\n */\r\nvar AbstractControl = (function () {\r\n function AbstractControl(validator, asyncValidator) {\r\n this.validator = validator;\r\n this.asyncValidator = asyncValidator;\r\n this._pristine = true;\r\n this._touched = false;\r\n }\r\n Object.defineProperty(AbstractControl.prototype, \"value\", {\r\n get: function () { return this._value; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"status\", {\r\n get: function () { return this._status; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"valid\", {\r\n get: function () { return this._status === exports.VALID; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"errors\", {\r\n /**\r\n * Returns the errors of this control.\r\n */\r\n get: function () { return this._errors; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"pristine\", {\r\n get: function () { return this._pristine; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"dirty\", {\r\n get: function () { return !this.pristine; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"touched\", {\r\n get: function () { return this._touched; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"untouched\", {\r\n get: function () { return !this._touched; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"valueChanges\", {\r\n get: function () { return this._valueChanges; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"statusChanges\", {\r\n get: function () { return this._statusChanges; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"pending\", {\r\n get: function () { return this._status == exports.PENDING; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AbstractControl.prototype.markAsTouched = function () { this._touched = true; };\r\n AbstractControl.prototype.markAsDirty = function (_a) {\r\n var onlySelf = (_a === void 0 ? {} : _a).onlySelf;\r\n onlySelf = lang_1.normalizeBool(onlySelf);\r\n this._pristine = false;\r\n if (lang_1.isPresent(this._parent) && !onlySelf) {\r\n this._parent.markAsDirty({ onlySelf: onlySelf });\r\n }\r\n };\r\n AbstractControl.prototype.markAsPending = function (_a) {\r\n var onlySelf = (_a === void 0 ? {} : _a).onlySelf;\r\n onlySelf = lang_1.normalizeBool(onlySelf);\r\n this._status = exports.PENDING;\r\n if (lang_1.isPresent(this._parent) && !onlySelf) {\r\n this._parent.markAsPending({ onlySelf: onlySelf });\r\n }\r\n };\r\n AbstractControl.prototype.setParent = function (parent) { this._parent = parent; };\r\n AbstractControl.prototype.updateValueAndValidity = function (_a) {\r\n var _b = _a === void 0 ? {} : _a, onlySelf = _b.onlySelf, emitEvent = _b.emitEvent;\r\n onlySelf = lang_1.normalizeBool(onlySelf);\r\n emitEvent = lang_1.isPresent(emitEvent) ? emitEvent : true;\r\n this._updateValue();\r\n this._errors = this._runValidator();\r\n this._status = this._calculateStatus();\r\n if (this._status == exports.VALID || this._status == exports.PENDING) {\r\n this._runAsyncValidator(emitEvent);\r\n }\r\n if (emitEvent) {\r\n async_1.ObservableWrapper.callEmit(this._valueChanges, this._value);\r\n async_1.ObservableWrapper.callEmit(this._statusChanges, this._status);\r\n }\r\n if (lang_1.isPresent(this._parent) && !onlySelf) {\r\n this._parent.updateValueAndValidity({ onlySelf: onlySelf, emitEvent: emitEvent });\r\n }\r\n };\r\n AbstractControl.prototype._runValidator = function () {\r\n return lang_1.isPresent(this.validator) ? this.validator(this) : null;\r\n };\r\n AbstractControl.prototype._runAsyncValidator = function (emitEvent) {\r\n var _this = this;\r\n if (lang_1.isPresent(this.asyncValidator)) {\r\n this._status = exports.PENDING;\r\n this._cancelExistingSubscription();\r\n var obs = toObservable(this.asyncValidator(this));\r\n this._asyncValidationSubscription = async_1.ObservableWrapper.subscribe(obs, function (res) { return _this.setErrors(res, { emitEvent: emitEvent }); });\r\n }\r\n };\r\n AbstractControl.prototype._cancelExistingSubscription = function () {\r\n if (lang_1.isPresent(this._asyncValidationSubscription)) {\r\n async_1.ObservableWrapper.dispose(this._asyncValidationSubscription);\r\n }\r\n };\r\n /**\r\n * Sets errors on a control.\r\n *\r\n * This is used when validations are run not automatically, but manually by the user.\r\n *\r\n * Calling `setErrors` will also update the validity of the parent control.\r\n *\r\n * ## Usage\r\n *\r\n * ```\r\n * var login = new Control(\"someLogin\");\r\n * login.setErrors({\r\n * \"notUnique\": true\r\n * });\r\n *\r\n * expect(login.valid).toEqual(false);\r\n * expect(login.errors).toEqual({\"notUnique\": true});\r\n *\r\n * login.updateValue(\"someOtherLogin\");\r\n *\r\n * expect(login.valid).toEqual(true);\r\n * ```\r\n */\r\n AbstractControl.prototype.setErrors = function (errors, _a) {\r\n var emitEvent = (_a === void 0 ? {} : _a).emitEvent;\r\n emitEvent = lang_1.isPresent(emitEvent) ? emitEvent : true;\r\n this._errors = errors;\r\n this._status = this._calculateStatus();\r\n if (emitEvent) {\r\n async_1.ObservableWrapper.callEmit(this._statusChanges, this._status);\r\n }\r\n if (lang_1.isPresent(this._parent)) {\r\n this._parent._updateControlsErrors();\r\n }\r\n };\r\n AbstractControl.prototype.find = function (path) { return _find(this, path); };\r\n AbstractControl.prototype.getError = function (errorCode, path) {\r\n if (path === void 0) { path = null; }\r\n var control = lang_1.isPresent(path) && !collection_1.ListWrapper.isEmpty(path) ? this.find(path) : this;\r\n if (lang_1.isPresent(control) && lang_1.isPresent(control._errors)) {\r\n return collection_1.StringMapWrapper.get(control._errors, errorCode);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n AbstractControl.prototype.hasError = function (errorCode, path) {\r\n if (path === void 0) { path = null; }\r\n return lang_1.isPresent(this.getError(errorCode, path));\r\n };\r\n Object.defineProperty(AbstractControl.prototype, \"root\", {\r\n get: function () {\r\n var x = this;\r\n while (lang_1.isPresent(x._parent)) {\r\n x = x._parent;\r\n }\r\n return x;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n AbstractControl.prototype._updateControlsErrors = function () {\r\n this._status = this._calculateStatus();\r\n if (lang_1.isPresent(this._parent)) {\r\n this._parent._updateControlsErrors();\r\n }\r\n };\r\n /** @internal */\r\n AbstractControl.prototype._initObservables = function () {\r\n this._valueChanges = new async_1.EventEmitter();\r\n this._statusChanges = new async_1.EventEmitter();\r\n };\r\n AbstractControl.prototype._calculateStatus = function () {\r\n if (lang_1.isPresent(this._errors))\r\n return exports.INVALID;\r\n if (this._anyControlsHaveStatus(exports.PENDING))\r\n return exports.PENDING;\r\n if (this._anyControlsHaveStatus(exports.INVALID))\r\n return exports.INVALID;\r\n return exports.VALID;\r\n };\r\n return AbstractControl;\r\n}());\r\nexports.AbstractControl = AbstractControl;\r\n/**\r\n * Defines a part of a form that cannot be divided into other controls. `Control`s have values and\r\n * validation state, which is determined by an optional validation function.\r\n *\r\n * `Control` is one of the three fundamental building blocks used to define forms in Angular, along\r\n * with {@link ControlGroup} and {@link ControlArray}.\r\n *\r\n * ## Usage\r\n *\r\n * By default, a `Control` is created for every `<input>` or other form component.\r\n * With {@link NgFormControl} or {@link NgFormModel} an existing {@link Control} can be\r\n * bound to a DOM element instead. This `Control` can be configured with a custom\r\n * validation function.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/23DESOpbNnBpBHZt1BR4?p=preview))\r\n */\r\nvar Control = (function (_super) {\r\n __extends(Control, _super);\r\n function Control(value, validator, asyncValidator) {\r\n if (value === void 0) { value = null; }\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n _super.call(this, validator, asyncValidator);\r\n this._value = value;\r\n this.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n this._initObservables();\r\n }\r\n /**\r\n * Set the value of the control to `value`.\r\n *\r\n * If `onlySelf` is `true`, this change will only affect the validation of this `Control`\r\n * and not its parent component. If `emitEvent` is `true`, this change will cause a\r\n * `valueChanges` event on the `Control` to be emitted. Both of these options default to\r\n * `false`.\r\n *\r\n * If `emitModelToViewChange` is `true`, the view will be notified about the new value\r\n * via an `onChange` event. This is the default behavior if `emitModelToViewChange` is not\r\n * specified.\r\n */\r\n Control.prototype.updateValue = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, onlySelf = _b.onlySelf, emitEvent = _b.emitEvent, emitModelToViewChange = _b.emitModelToViewChange;\r\n emitModelToViewChange = lang_1.isPresent(emitModelToViewChange) ? emitModelToViewChange : true;\r\n this._value = value;\r\n if (lang_1.isPresent(this._onChange) && emitModelToViewChange)\r\n this._onChange(this._value);\r\n this.updateValueAndValidity({ onlySelf: onlySelf, emitEvent: emitEvent });\r\n };\r\n /**\r\n * @internal\r\n */\r\n Control.prototype._updateValue = function () { };\r\n /**\r\n * @internal\r\n */\r\n Control.prototype._anyControlsHaveStatus = function (status) { return false; };\r\n /**\r\n * Register a listener for change events.\r\n */\r\n Control.prototype.registerOnChange = function (fn) { this._onChange = fn; };\r\n return Control;\r\n}(AbstractControl));\r\nexports.Control = Control;\r\n/**\r\n * Defines a part of a form, of fixed length, that can contain other controls.\r\n *\r\n * A `ControlGroup` aggregates the values of each {@link Control} in the group.\r\n * The status of a `ControlGroup` depends on the status of its children.\r\n * If one of the controls in a group is invalid, the entire group is invalid.\r\n * Similarly, if a control changes its value, the entire group changes as well.\r\n *\r\n * `ControlGroup` is one of the three fundamental building blocks used to define forms in Angular,\r\n * along with {@link Control} and {@link ControlArray}. {@link ControlArray} can also contain other\r\n * controls, but is of variable length.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/23DESOpbNnBpBHZt1BR4?p=preview))\r\n */\r\nvar ControlGroup = (function (_super) {\r\n __extends(ControlGroup, _super);\r\n function ControlGroup(controls, optionals, validator, asyncValidator) {\r\n if (optionals === void 0) { optionals = null; }\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n _super.call(this, validator, asyncValidator);\r\n this.controls = controls;\r\n this._optionals = lang_1.isPresent(optionals) ? optionals : {};\r\n this._initObservables();\r\n this._setParentForControls();\r\n this.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n /**\r\n * Add a control to this group.\r\n */\r\n ControlGroup.prototype.addControl = function (name, control) {\r\n this.controls[name] = control;\r\n control.setParent(this);\r\n };\r\n /**\r\n * Remove a control from this group.\r\n */\r\n ControlGroup.prototype.removeControl = function (name) { collection_1.StringMapWrapper.delete(this.controls, name); };\r\n /**\r\n * Mark the named control as non-optional.\r\n */\r\n ControlGroup.prototype.include = function (controlName) {\r\n collection_1.StringMapWrapper.set(this._optionals, controlName, true);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Mark the named control as optional.\r\n */\r\n ControlGroup.prototype.exclude = function (controlName) {\r\n collection_1.StringMapWrapper.set(this._optionals, controlName, false);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Check whether there is a control with the given name in the group.\r\n */\r\n ControlGroup.prototype.contains = function (controlName) {\r\n var c = collection_1.StringMapWrapper.contains(this.controls, controlName);\r\n return c && this._included(controlName);\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._setParentForControls = function () {\r\n var _this = this;\r\n collection_1.StringMapWrapper.forEach(this.controls, function (control, name) { control.setParent(_this); });\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._updateValue = function () { this._value = this._reduceValue(); };\r\n /** @internal */\r\n ControlGroup.prototype._anyControlsHaveStatus = function (status) {\r\n var _this = this;\r\n var res = false;\r\n collection_1.StringMapWrapper.forEach(this.controls, function (control, name) {\r\n res = res || (_this.contains(name) && control.status == status);\r\n });\r\n return res;\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._reduceValue = function () {\r\n return this._reduceChildren({}, function (acc, control, name) {\r\n acc[name] = control.value;\r\n return acc;\r\n });\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._reduceChildren = function (initValue, fn) {\r\n var _this = this;\r\n var res = initValue;\r\n collection_1.StringMapWrapper.forEach(this.controls, function (control, name) {\r\n if (_this._included(name)) {\r\n res = fn(res, control, name);\r\n }\r\n });\r\n return res;\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._included = function (controlName) {\r\n var isOptional = collection_1.StringMapWrapper.contains(this._optionals, controlName);\r\n return !isOptional || collection_1.StringMapWrapper.get(this._optionals, controlName);\r\n };\r\n return ControlGroup;\r\n}(AbstractControl));\r\nexports.ControlGroup = ControlGroup;\r\n/**\r\n * Defines a part of a form, of variable length, that can contain other controls.\r\n *\r\n * A `ControlArray` aggregates the values of each {@link Control} in the group.\r\n * The status of a `ControlArray` depends on the status of its children.\r\n * If one of the controls in a group is invalid, the entire array is invalid.\r\n * Similarly, if a control changes its value, the entire array changes as well.\r\n *\r\n * `ControlArray` is one of the three fundamental building blocks used to define forms in Angular,\r\n * along with {@link Control} and {@link ControlGroup}. {@link ControlGroup} can also contain\r\n * other controls, but is of fixed length.\r\n *\r\n * ## Adding or removing controls\r\n *\r\n * To change the controls in the array, use the `push`, `insert`, or `removeAt` methods\r\n * in `ControlArray` itself. These methods ensure the controls are properly tracked in the\r\n * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate\r\n * the `ControlArray` directly, as that will result in strange and unexpected behavior such\r\n * as broken change detection.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/23DESOpbNnBpBHZt1BR4?p=preview))\r\n */\r\nvar ControlArray = (function (_super) {\r\n __extends(ControlArray, _super);\r\n function ControlArray(controls, validator, asyncValidator) {\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n _super.call(this, validator, asyncValidator);\r\n this.controls = controls;\r\n this._initObservables();\r\n this._setParentForControls();\r\n this.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n /**\r\n * Get the {@link AbstractControl} at the given `index` in the array.\r\n */\r\n ControlArray.prototype.at = function (index) { return this.controls[index]; };\r\n /**\r\n * Insert a new {@link AbstractControl} at the end of the array.\r\n */\r\n ControlArray.prototype.push = function (control) {\r\n this.controls.push(control);\r\n control.setParent(this);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Insert a new {@link AbstractControl} at the given `index` in the array.\r\n */\r\n ControlArray.prototype.insert = function (index, control) {\r\n collection_1.ListWrapper.insert(this.controls, index, control);\r\n control.setParent(this);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Remove the control at the given `index` in the array.\r\n */\r\n ControlArray.prototype.removeAt = function (index) {\r\n collection_1.ListWrapper.removeAt(this.controls, index);\r\n this.updateValueAndValidity();\r\n };\r\n Object.defineProperty(ControlArray.prototype, \"length\", {\r\n /**\r\n * Length of the control array.\r\n */\r\n get: function () { return this.controls.length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n ControlArray.prototype._updateValue = function () { this._value = this.controls.map(function (control) { return control.value; }); };\r\n /** @internal */\r\n ControlArray.prototype._anyControlsHaveStatus = function (status) {\r\n return this.controls.some(function (c) { return c.status == status; });\r\n };\r\n /** @internal */\r\n ControlArray.prototype._setParentForControls = function () {\r\n var _this = this;\r\n this.controls.forEach(function (control) { control.setParent(_this); });\r\n };\r\n return ControlArray;\r\n}(AbstractControl));\r\nexports.ControlArray = ControlArray;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFCQUFnRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzNFLHNCQUEwRCwyQkFBMkIsQ0FBQyxDQUFBO0FBQ3RGLHdCQUE2Qiw2QkFBNkIsQ0FBQyxDQUFBO0FBQzNELDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRzdFOztHQUVHO0FBQ1UsYUFBSyxHQUFHLE9BQU8sQ0FBQztBQUU3Qjs7R0FFRztBQUNVLGVBQU8sR0FBRyxTQUFTLENBQUM7QUFFakM7OztHQUdHO0FBQ1UsZUFBTyxHQUFHLFNBQVMsQ0FBQztBQUVqQyxtQkFBMEIsT0FBZTtJQUN2QyxNQUFNLENBQUMsT0FBTyxZQUFZLGVBQWUsQ0FBQztBQUM1QyxDQUFDO0FBRmUsaUJBQVMsWUFFeEIsQ0FBQTtBQUVELGVBQWUsT0FBd0IsRUFBRSxJQUFvQztJQUMzRSxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRS9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksR0FBWSxJQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksS0FBSyxJQUFJLHdCQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUVwRSxNQUFNLENBQTBCLElBQUs7U0FDaEMsTUFBTSxDQUFDLFVBQUMsQ0FBQyxFQUFFLElBQUk7UUFDZCxFQUFFLENBQUMsQ0FBQyxDQUFD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QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQUMsT0FBTyxJQUFLLE9BQUEsT0FBTyxDQUFDLEtBQUssRUFBYixDQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckYsZ0JBQWdCO0lBQ2hCLDZDQUFzQixHQUF0QixVQUF1QixNQUFjO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFsQixDQUFrQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUdELGdCQUFnQjtJQUNoQiw0Q0FBcUIsR0FBckI7UUFBQSxpQkFFQztRQURDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUMsT0FBTyxJQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBMURELENBQWtDLGVBQWUsR0EwRGhEO0FBMURZLG9CQUFZLGVBMER4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIG5vcm1hbGl6ZUJvb2x9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge09ic2VydmFibGUsIEV2ZW50RW1pdHRlciwgT2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtQcm9taXNlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9wcm9taXNlJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlciwgTGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1ZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZufSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycyc7XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgYSBDb250cm9sIGlzIHZhbGlkLCBpLmUuIHRoYXQgbm8gZXJyb3JzIGV4aXN0IGluIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFZBTElEID0gXCJWQUxJRFwiO1xuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IGEgQ29udHJvbCBpcyBpbnZhbGlkLCBpLmUuIHRoYXQgYW4gZXJyb3IgZXhpc3RzIGluIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOVkFMSUQgPSBcIklOVkFMSURcIjtcblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCBhIENvbnRyb2wgaXMgcGVuZGluZywgaS5lLiB0aGF0IGFzeW5jIHZhbGlkYXRpb24gaXMgb2NjdXJyaW5nIGFuZFxuICogZXJyb3JzIGFyZSBub3QgeWV0IGF2YWlsYWJsZSBmb3IgdGhlIGlucHV0IHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgUEVORElORyA9IFwiUEVORElOR1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb250cm9sKGNvbnRyb2w6IE9iamVjdCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY29udHJvbCBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbDtcbn1cblxuZnVuY3Rpb24gX2ZpbmQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+fCBzdHJpbmcpIHtcbiAgaWYgKGlzQmxhbmsocGF0aCkpIHJldHVybiBudWxsO1xuXG4gIGlmICghKHBhdGggaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICBwYXRoID0gKDxzdHJpbmc+cGF0aCkuc3BsaXQoXCIvXCIpO1xuICB9XG4gIGlmIChwYXRoIGluc3RhbmNlb2YgQXJyYXkgJiYgTGlzdFdyYXBwZXIuaXNFbXB0eShwYXRoKSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuICg8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj5wYXRoKVxuICAgICAgLnJlZHVjZSgodiwgbmFtZSkgPT4ge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIENvbnRyb2xHcm91cCkge1xuICAgICAgICAgIHJldHVybiBpc1ByZXNlbnQodi5jb250cm9sc1tuYW1lXSkgPyB2LmNvbnRyb2xzW25hbWVdIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh2IGluc3RhbmNlb2YgQ29udHJvbEFycmF5KSB7XG4gICAgICAgICAgdmFyIGluZGV4ID0gPG51bWJlcj5uYW1lO1xuICAgICAgICAgIHJldHVybiBpc1ByZXNlbnQodi5hdChpbmRleCkpID8gdi5hdChpbmRleCkgOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LCBjb250cm9sKTtcbn1cblxuZnVuY3Rpb24gdG9PYnNlcnZhYmxlKHI6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gIHJldHVybiBQcm9taXNlV3JhcHBlci5pc1Byb21pc2UocikgPyBPYnNlcnZhYmxlV3JhcHBlci5mcm9tUHJvbWlzZShyKSA6IHI7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29udHJvbCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ZhbHVlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VzOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgcHJpdmF0ZSBfc3RhdHVzQ2hhbmdlczogRXZlbnRFbWl0dGVyPGFueT47XG4gIHByaXZhdGUgX3N0YXR1czogc3RyaW5nO1xuICBwcml2YXRlIF9lcnJvcnM6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICBwcml2YXRlIF9wcmlzdGluZTogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGFyZW50OiBDb250cm9sR3JvdXAgfCBDb250cm9sQXJyYXk7XG4gIHByaXZhdGUgX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWxpZGF0b3I6IFZhbGlkYXRvckZuLCBwdWJsaWMgYXN5bmNWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yRm4pIHt9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfVxuXG4gIGdldCBzdGF0dXMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3N0YXR1czsgfVxuXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3N0YXR1cyA9PT0gVkFMSUQ7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXJyb3JzIG9mIHRoaXMgY29udHJvbC5cbiAgICovXG4gIGdldCBlcnJvcnMoKToge1trZXk6IHN0cmluZ106IGFueX0geyByZXR1cm4gdGhpcy5fZXJyb3JzOyB9XG5cbiAgZ2V0IHByaXN0aW5lKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcHJpc3RpbmU7IH1cblxuICBnZXQgZGlydHkoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5wcmlzdGluZTsgfVxuXG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdG91Y2hlZDsgfVxuXG4gIGdldCB1bnRvdWNoZWQoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5fdG91Y2hlZDsgfVxuXG4gIGdldCB2YWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxhbnk+IHsgcmV0dXJuIHRoaXMuX3ZhbHVlQ2hhbmdlczsgfVxuXG4gIGdldCBzdGF0dXNDaGFuZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7IHJldHVybiB0aGlzLl9zdGF0dXNDaGFuZ2VzOyB9XG5cbiAgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdGF0dXMgPT0gUEVORElORzsgfVxuXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7IHRoaXMuX3RvdWNoZWQgPSB0cnVlOyB9XG5cbiAgbWFya0FzRGlydHkoe29ubHlTZWxmfToge29ubHlTZWxmPzogYm9vbGVhbn0gPSB7fSk6IHZvaWQge1xuICAgIG9ubHlTZWxmID0gbm9ybWFsaXplQm9vbChvbmx5U2VsZik7XG4gICAgdGhpcy5fcHJpc3RpbmUgPSBmYWxzZTtcblxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fcGFyZW50KSAmJiAhb25seVNlbGYpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5tYXJrQXNEaXJ0eSh7b25seVNlbGY6IG9ubHlTZWxmfSk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzUGVuZGluZyh7b25seVNlbGZ9OiB7b25seVNlbGY/OiBib29sZWFufSA9IHt9KTogdm9pZCB7XG4gICAgb25seVNlbGYgPSBub3JtYWxpemVCb29sKG9ubHlTZWxmKTtcbiAgICB0aGlzLl9zdGF0dXMgPSBQRU5ESU5HO1xuXG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9wYXJlbnQpICYmICFvbmx5U2VsZikge1xuICAgICAgdGhpcy5fcGFyZW50Lm1hcmtBc1BlbmRpbmcoe29ubHlTZWxmOiBvbmx5U2VsZn0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFBhcmVudChwYXJlbnQ6IENvbnRyb2xHcm91cCB8IENvbnRyb2xBcnJheSk6IHZvaWQgeyB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7IH1cblxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KFxuICAgICAge29ubHlTZWxmLCBlbWl0RXZlbnR9OiB7b25seVNlbGY/OiBib29sZWFuLCBlbWl0RXZlbnQ/OiBib29sZWFufSA9IHt9KTogdm9pZCB7XG4gICAgb25seVNlbGYgPSBub3JtYWxpemVCb29sKG9ubHlTZWxmKTtcbiAgICBlbWl0RXZlbnQgPSBpc1ByZXNlbnQoZW1pdEV2ZW50KSA/IGVtaXRFdmVudCA6IHRydWU7XG5cbiAgICB0aGlzLl91cGRhdGVWYWx1ZSgpO1xuXG4gICAgdGhpcy5fZXJyb3JzID0gdGhpcy5fcnVuVmFsaWRhdG9yKCk7XG4gICAgdGhpcy5fc3RhdHVzID0gdGhpcy5fY2FsY3VsYXRlU3RhdHVzKCk7XG5cbiAgICBpZiAodGhpcy5fc3RhdHVzID09IFZBTElEIHx8IHRoaXMuX3N0YXR1cyA9PSBQRU5ESU5HKSB7XG4gICAgICB0aGlzLl9ydW5Bc3luY1ZhbGlkYXRvcihlbWl0RXZlbnQpO1xuICAgIH1cblxuICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMuX3ZhbHVlQ2hhbmdlcywgdGhpcy5fdmFsdWUpO1xuICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5fc3RhdHVzQ2hhbmdlcywgdGhpcy5fc3RhdHVzKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3BhcmVudCkgJiYgIW9ubHlTZWxmKSB7XG4gICAgICB0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IG9ubHlTZWxmLCBlbWl0RXZlbnQ6IGVtaXRFdmVudH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1blZhbGlkYXRvcigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLnZhbGlkYXRvcikgPyB0aGlzLnZhbGlkYXRvcih0aGlzKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9ydW5Bc3luY1ZhbGlkYXRvcihlbWl0RXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuYXN5bmNWYWxpZGF0b3IpKSB7XG4gICAgICB0aGlzLl9zdGF0dXMgPSBQRU5ESU5HO1xuICAgICAgdGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKTtcbiAgICAgIHZhciBvYnMgPSB0b09ic2VydmFibGUodGhpcy5hc3luY1ZhbGlkYXRvcih0aGlzKSk7XG4gICAgICB0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24gPSBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUoXG4gICAgICAgICAgb2JzLCAocmVzOiB7W2tleTogc3RyaW5nXTogYW55fSkgPT4gdGhpcy5zZXRFcnJvcnMocmVzLCB7ZW1pdEV2ZW50OiBlbWl0RXZlbnR9KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24pKSB7XG4gICAgICBPYnNlcnZhYmxlV3JhcHBlci5kaXNwb3NlKHRoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZXJyb3JzIG9uIGEgY29udHJvbC5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VkIHdoZW4gdmFsaWRhdGlvbnMgYXJlIHJ1biBub3QgYXV0b21hdGljYWxseSwgYnV0IG1hbnVhbGx5IGJ5IHRoZSB1c2VyLlxuICAgKlxuICAgKiBDYWxsaW5nIGBzZXRFcnJvcnNgIHdpbGwgYWxzbyB1cGRhdGUgdGhlIHZhbGlkaXR5IG9mIHRoZSBwYXJlbnQgY29udHJvbC5cbiAgICpcbiAgICogIyMgVXNhZ2VcbiAgICpcbiAgICogYGBgXG4gICAqIHZhciBsb2dpbiA9IG5ldyBDb250cm9sKFwic29tZUxvZ2luXCIpO1xuICAgKiBsb2dpbi5zZXRFcnJvcnMoe1xuICAgKiAgIFwibm90VW5pcXVlXCI6IHRydWVcbiAgICogfSk7XG4gICAqXG4gICAqIGV4cGVjdChsb2dpbi52YWxpZCkudG9FcXVhbChmYWxzZSk7XG4gICAqIGV4cGVjdChsb2dpbi5lcnJvcnMpLnRvRXF1YWwoe1wibm90VW5pcXVlXCI6IHRydWV9KTtcbiAgICpcbiAgICogbG9naW4udXBkYXRlVmFsdWUoXCJzb21lT3RoZXJMb2dpblwiKTtcbiAgICpcbiAgICogZXhwZWN0KGxvZ2luLnZhbGlkKS50b0VxdWFsKHRydWUpO1xuICAgKiBgYGBcbiAgICovXG4gIHNldEVycm9ycyhlcnJvcnM6IHtba2V5OiBzdHJpbmddOiBhbnl9LCB7ZW1pdEV2ZW50fToge2VtaXRFdmVudD86IGJvb2xlYW59ID0ge30pOiB2b2lkIHtcbiAgICBlbWl0RXZlbnQgPSBpc1ByZXNlbnQoZW1pdEV2ZW50KSA/IGVtaXRFdmVudCA6IHRydWU7XG5cbiAgICB0aGlzLl9lcnJvcnMgPSBlcnJvcnM7XG4gICAgdGhpcy5fc3RhdHVzID0gdGhpcy5fY2FsY3VsYXRlU3RhdHVzKCk7XG5cbiAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLl9zdGF0dXNDaGFuZ2VzLCB0aGlzLl9zdGF0dXMpO1xuICAgIH1cblxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fcGFyZW50KSkge1xuICAgICAgdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmQocGF0aDogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPnwgc3RyaW5nKTogQWJzdHJhY3RDb250cm9sIHsgcmV0dXJuIF9maW5kKHRoaXMsIHBhdGgpOyB9XG5cbiAgZ2V0RXJyb3IoZXJyb3JDb2RlOiBzdHJpbmcsIHBhdGg6IHN0cmluZ1tdID0gbnVsbCk6IGFueSB7XG4gICAgdmFyIGNvbnRyb2wgPSBpc1ByZXNlbnQocGF0aCkgJiYgIUxpc3RXcmFwcGVyLmlzRW1wdHkocGF0aCkgPyB0aGlzLmZpbmQocGF0aCkgOiB0aGlzO1xuICAgIGlmIChpc1ByZXNlbnQoY29udHJvbCkgJiYgaXNQcmVzZW50KGNvbnRyb2wuX2Vycm9ycykpIHtcbiAgICAgIHJldHVybiBTdHJpbmdNYXBXcmFwcGVyLmdldChjb250cm9sLl9lcnJvcnMsIGVycm9yQ29kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGhhc0Vycm9yKGVycm9yQ29kZTogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSA9IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuZ2V0RXJyb3IoZXJyb3JDb2RlLCBwYXRoKSk7XG4gIH1cblxuICBnZXQgcm9vdCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGxldCB4OiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzO1xuXG4gICAgd2hpbGUgKGlzUHJlc2VudCh4Ll9wYXJlbnQpKSB7XG4gICAgICB4ID0geC5fcGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiB4O1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdXBkYXRlQ29udHJvbHNFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzID0gdGhpcy5fY2FsY3VsYXRlU3RhdHVzKCk7XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3BhcmVudCkpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9pbml0T2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5fdmFsdWVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuX3N0YXR1c0NoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZVN0YXR1cygpOiBzdHJpbmcge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fZXJyb3JzKSkgcmV0dXJuIElOVkFMSUQ7XG4gICAgaWYgKHRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhQRU5ESU5HKSkgcmV0dXJuIFBFTkRJTkc7XG4gICAgaWYgKHRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhJTlZBTElEKSkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIFZBTElEO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBhYnN0cmFjdCBfdXBkYXRlVmFsdWUoKTogdm9pZDtcblxuICAvKiogQGludGVybmFsICovXG4gIGFic3RyYWN0IF9hbnlDb250cm9sc0hhdmVTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBwYXJ0IG9mIGEgZm9ybSB0aGF0IGNhbm5vdCBiZSBkaXZpZGVkIGludG8gb3RoZXIgY29udHJvbHMuIGBDb250cm9sYHMgaGF2ZSB2YWx1ZXMgYW5kXG4gKiB2YWxpZGF0aW9uIHN0YXRlLCB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IGFuIG9wdGlvbmFsIHZhbGlkYXRpb24gZnVuY3Rpb24uXG4gKlxuICogYENvbnRyb2xgIGlzIG9uZSBvZiB0aGUgdGhyZWUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIHVzZWQgdG8gZGVmaW5lIGZvcm1zIGluIEFuZ3VsYXIsIGFsb25nXG4gKiB3aXRoIHtAbGluayBDb250cm9sR3JvdXB9IGFuZCB7QGxpbmsgQ29udHJvbEFycmF5fS5cbiAqXG4gKiAjIyBVc2FnZVxuICpcbiAqIEJ5IGRlZmF1bHQsIGEgYENvbnRyb2xgIGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IGA8aW5wdXQ+YCBvciBvdGhlciBmb3JtIGNvbXBvbmVudC5cbiAqIFdpdGgge0BsaW5rIE5nRm9ybUNvbnRyb2x9IG9yIHtAbGluayBOZ0Zvcm1Nb2RlbH0gYW4gZXhpc3Rpbmcge0BsaW5rIENvbnRyb2x9IGNhbiBiZVxuICogYm91bmQgdG8gYSBET00gZWxlbWVudCBpbnN0ZWFkLiBUaGlzIGBDb250cm9sYCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgY3VzdG9tXG4gKiB2YWxpZGF0aW9uIGZ1bmN0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC8yM0RFU09wYk5uQnBCSFp0MUJSND9wPXByZXZpZXcpKVxuICovXG5leHBvcnQgY2xhc3MgQ29udHJvbCBleHRlbmRzIEFic3RyYWN0Q29udHJvbCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX29uQ2hhbmdlOiBGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogYW55ID0gbnVsbCwgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IG51bGwsXG4gICAgICAgICAgICAgIGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuID0gbnVsbCkge1xuICAgIHN1cGVyKHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMuX2luaXRPYnNlcnZhYmxlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgdG8gYHZhbHVlYC5cbiAgICpcbiAgICogSWYgYG9ubHlTZWxmYCBpcyBgdHJ1ZWAsIHRoaXMgY2hhbmdlIHdpbGwgb25seSBhZmZlY3QgdGhlIHZhbGlkYXRpb24gb2YgdGhpcyBgQ29udHJvbGBcbiAgICogYW5kIG5vdCBpdHMgcGFyZW50IGNvbXBvbmVudC4gSWYgYGVtaXRFdmVudGAgaXMgYHRydWVgLCB0aGlzIGNoYW5nZSB3aWxsIGNhdXNlIGFcbiAgICogYHZhbHVlQ2hhbmdlc2AgZXZlbnQgb24gdGhlIGBDb250cm9sYCB0byBiZSBlbWl0dGVkLiBCb3RoIG9mIHRoZXNlIG9wdGlvbnMgZGVmYXVsdCB0b1xuICAgKiBgZmFsc2VgLlxuICAgKlxuICAgKiBJZiBgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlYCBpcyBgdHJ1ZWAsIHRoZSB2aWV3IHdpbGwgYmUgbm90aWZpZWQgYWJvdXQgdGhlIG5ldyB2YWx1ZVxuICAgKiB2aWEgYW4gYG9uQ2hhbmdlYCBldmVudC4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBpZiBgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlYCBpcyBub3RcbiAgICogc3BlY2lmaWVkLlxuICAgKi9cbiAgdXBkYXRlVmFsdWUodmFsdWU6IGFueSwge29ubHlTZWxmLCBlbWl0RXZlbnQsIGVtaXRNb2RlbFRvVmlld0NoYW5nZX06IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW4sXG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbixcbiAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U/OiBib29sZWFuXG4gIH0gPSB7fSk6IHZvaWQge1xuICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZSA9IGlzUHJlc2VudChlbWl0TW9kZWxUb1ZpZXdDaGFuZ2UpID8gZW1pdE1vZGVsVG9WaWV3Q2hhbmdlIDogdHJ1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fb25DaGFuZ2UpICYmIGVtaXRNb2RlbFRvVmlld0NoYW5nZSkgdGhpcy5fb25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IG9ubHlTZWxmLCBlbWl0RXZlbnQ6IGVtaXRFdmVudH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3VwZGF0ZVZhbHVlKCkge31cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfYW55Q29udHJvbHNIYXZlU3RhdHVzKHN0YXR1czogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxpc3RlbmVyIGZvciBjaGFuZ2UgZXZlbnRzLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHsgdGhpcy5fb25DaGFuZ2UgPSBmbjsgfVxufVxuXG4vKipcbiAqIERlZmluZXMgYSBwYXJ0IG9mIGEgZm9ybSwgb2YgZml4ZWQgbGVuZ3RoLCB0aGF0IGNhbiBjb250YWluIG90aGVyIGNvbnRyb2xzLlxuICpcbiAqIEEgYENvbnRyb2xHcm91cGAgYWdncmVnYXRlcyB0aGUgdmFsdWVzIG9mIGVhY2gge0BsaW5rIENvbnRyb2x9IGluIHRoZSBncm91cC5cbiAqIFRoZSBzdGF0dXMgb2YgYSBgQ29udHJvbEdyb3VwYCBkZXBlbmRzIG9uIHRoZSBzdGF0dXMgb2YgaXRzIGNoaWxkcmVuLlxuICogSWYgb25lIG9mIHRoZSBjb250cm9scyBpbiBhIGdyb3VwIGlzIGludmFsaWQsIHRoZSBlbnRpcmUgZ3JvdXAgaXMgaW52YWxpZC5cbiAqIFNpbWlsYXJseSwgaWYgYSBjb250cm9sIGNoYW5nZXMgaXRzIHZhbHVlLCB0aGUgZW50aXJlIGdyb3VwIGNoYW5nZXMgYXMgd2VsbC5cbiAqXG4gKiBgQ29udHJvbEdyb3VwYCBpcyBvbmUgb2YgdGhlIHRocmVlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyB1c2VkIHRvIGRlZmluZSBmb3JtcyBpbiBBbmd1bGFyLFxuICogYWxvbmcgd2l0aCB7QGxpbmsgQ29udHJvbH0gYW5kIHtAbGluayBDb250cm9sQXJyYXl9LiB7QGxpbmsgQ29udHJvbEFycmF5fSBjYW4gYWxzbyBjb250YWluIG90aGVyXG4gKiBjb250cm9scywgYnV0IGlzIG9mIHZhcmlhYmxlIGxlbmd0aC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvMjNERVNPcGJObkJwQkhadDFCUjQ/cD1wcmV2aWV3KSlcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2xHcm91cCBleHRlbmRzIEFic3RyYWN0Q29udHJvbCB7XG4gIHByaXZhdGUgX29wdGlvbmFsczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250cm9sczoge1trZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sXG4gICAgICAgICAgICAgIG9wdGlvbmFsczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0gbnVsbCwgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IG51bGwsXG4gICAgICAgICAgICAgIGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuID0gbnVsbCkge1xuICAgIHN1cGVyKHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xuICAgIHRoaXMuX29wdGlvbmFscyA9IGlzUHJlc2VudChvcHRpb25hbHMpID8gb3B0aW9uYWxzIDoge307XG4gICAgdGhpcy5faW5pdE9ic2VydmFibGVzKCk7XG4gICAgdGhpcy5fc2V0UGFyZW50Rm9yQ29udHJvbHMoKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY29udHJvbCB0byB0aGlzIGdyb3VwLlxuICAgKi9cbiAgYWRkQ29udHJvbChuYW1lOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbHNbbmFtZV0gPSBjb250cm9sO1xuICAgIGNvbnRyb2wuc2V0UGFyZW50KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGNvbnRyb2wgZnJvbSB0aGlzIGdyb3VwLlxuICAgKi9cbiAgcmVtb3ZlQ29udHJvbChuYW1lOiBzdHJpbmcpOiB2b2lkIHsgU3RyaW5nTWFwV3JhcHBlci5kZWxldGUodGhpcy5jb250cm9scywgbmFtZSk7IH1cblxuICAvKipcbiAgICogTWFyayB0aGUgbmFtZWQgY29udHJvbCBhcyBub24tb3B0aW9uYWwuXG4gICAqL1xuICBpbmNsdWRlKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLnNldCh0aGlzLl9vcHRpb25hbHMsIGNvbnRyb2xOYW1lLCB0cnVlKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIHRoZSBuYW1lZCBjb250cm9sIGFzIG9wdGlvbmFsLlxuICAgKi9cbiAgZXhjbHVkZShjb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5zZXQodGhpcy5fb3B0aW9uYWxzLCBjb250cm9sTmFtZSwgZmFsc2UpO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgYSBjb250cm9sIHdpdGggdGhlIGdpdmVuIG5hbWUgaW4gdGhlIGdyb3VwLlxuICAgKi9cbiAgY29udGFpbnMoY29udHJvbE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHZhciBjID0gU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyh0aGlzLmNvbnRyb2xzLCBjb250cm9sTmFtZSk7XG4gICAgcmV0dXJuIGMgJiYgdGhpcy5faW5jbHVkZWQoY29udHJvbE5hbWUpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc2V0UGFyZW50Rm9yQ29udHJvbHMoKSB7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKFxuICAgICAgICB0aGlzLmNvbnRyb2xzLCAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBuYW1lOiBzdHJpbmcpID0+IHsgY29udHJvbC5zZXRQYXJlbnQodGhpcyk7IH0pO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdXBkYXRlVmFsdWUoKSB7IHRoaXMuX3ZhbHVlID0gdGhpcy5fcmVkdWNlVmFsdWUoKTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHZhciByZXMgPSBmYWxzZTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2godGhpcy5jb250cm9scywgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXMgPSByZXMgfHwgKHRoaXMuY29udGFpbnMobmFtZSkgJiYgY29udHJvbC5zdGF0dXMgPT0gc3RhdHVzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVkdWNlVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKFxuICAgICAgICB7fSwgKGFjYzoge1trOiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGFjY1tuYW1lXSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZWR1Y2VDaGlsZHJlbihpbml0VmFsdWU6IGFueSwgZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlcyA9IGluaXRWYWx1ZTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2godGhpcy5jb250cm9scywgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodGhpcy5faW5jbHVkZWQobmFtZSkpIHtcbiAgICAgICAgcmVzID0gZm4ocmVzLCBjb250cm9sLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaW5jbHVkZWQoY29udHJvbE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHZhciBpc09wdGlvbmFsID0gU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyh0aGlzLl9vcHRpb25hbHMsIGNvbnRyb2xOYW1lKTtcbiAgICByZXR1cm4gIWlzT3B0aW9uYWwgfHwgU3RyaW5nTWFwV3JhcHBlci5nZXQodGhpcy5fb3B0aW9uYWxzLCBjb250cm9sTmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgcGFydCBvZiBhIGZvcm0sIG9mIHZhcmlhYmxlIGxlbmd0aCwgdGhhdCBjYW4gY29udGFpbiBvdGhlciBjb250cm9scy5cbiAqXG4gKiBBIGBDb250cm9sQXJyYXlgIGFnZ3JlZ2F0ZXMgdGhlIHZhbHVlcyBvZiBlYWNoIHtAbGluayBDb250cm9sfSBpbiB0aGUgZ3JvdXAuXG4gKiBUaGUgc3RhdHVzIG9mIGEgYENvbnRyb2xBcnJheWAgZGVwZW5kcyBvbiB0aGUgc3RhdHVzIG9mIGl0cyBjaGlsZHJlbi5cbiAqIElmIG9uZSBvZiB0aGUgY29udHJvbHMgaW4gYSBncm91cCBpcyBpbnZhbGlkLCB0aGUgZW50aXJlIGFycmF5IGlzIGludmFsaWQuXG4gKiBTaW1pbGFybHksIGlmIGEgY29udHJvbCBjaGFuZ2VzIGl0cyB2YWx1ZSwgdGhlIGVudGlyZSBhcnJheSBjaGFuZ2VzIGFzIHdlbGwuXG4gKlxuICogYENvbnRyb2xBcnJheWAgaXMgb25lIG9mIHRoZSB0aHJlZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgdXNlZCB0byBkZWZpbmUgZm9ybXMgaW4gQW5ndWxhcixcbiAqIGFsb25nIHdpdGgge0BsaW5rIENvbnRyb2x9IGFuZCB7QGxpbmsgQ29udHJvbEdyb3VwfS4ge0BsaW5rIENvbnRyb2xHcm91cH0gY2FuIGFsc28gY29udGFpblxuICogb3RoZXIgY29udHJvbHMsIGJ1dCBpcyBvZiBmaXhlZCBsZW5ndGguXG4gKlxuICogIyMgQWRkaW5nIG9yIHJlbW92aW5nIGNvbnRyb2xzXG4gKlxuICogVG8gY2hhbmdlIHRoZSBjb250cm9scyBpbiB0aGUgYXJyYXksIHVzZSB0aGUgYHB1c2hgLCBgaW5zZXJ0YCwgb3IgYHJlbW92ZUF0YCBtZXRob2RzXG4gKiBpbiBgQ29udHJvbEFycmF5YCBpdHNlbGYuIFRoZXNlIG1ldGhvZHMgZW5zdXJlIHRoZSBjb250cm9scyBhcmUgcHJvcGVybHkgdHJhY2tlZCBpbiB0aGVcbiAqIGZvcm0ncyBoaWVyYXJjaHkuIERvIG5vdCBtb2RpZnkgdGhlIGFycmF5IG9mIGBBYnN0cmFjdENvbnRyb2xgcyB1c2VkIHRvIGluc3RhbnRpYXRlXG4gKiB0aGUgYENvbnRyb2xBcnJheWAgZGlyZWN0bHksIGFzIHRoYXQgd2lsbCByZXN1bHQgaW4gc3RyYW5nZSBhbmQgdW5leHBlY3RlZCBiZWhhdmlvciBzdWNoXG4gKiBhcyBicm9rZW4gY2hhbmdlIGRldGVjdGlvbi5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvMjNERVNPcGJObkJwQkhadDFCUjQ/cD1wcmV2aWV3KSlcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2xBcnJheSBleHRlbmRzIEFic3RyYWN0Q29udHJvbCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250cm9sczogQWJzdHJhY3RDb250cm9sW10sIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBudWxsLFxuICAgICAgICAgICAgICBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9IG51bGwpIHtcbiAgICBzdXBlcih2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yKTtcbiAgICB0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKTtcbiAgICB0aGlzLl9zZXRQYXJlbnRGb3JDb250cm9scygpO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHtAbGluayBBYnN0cmFjdENvbnRyb2x9IGF0IHRoZSBnaXZlbiBgaW5kZXhgIGluIHRoZSBhcnJheS5cbiAgICovXG4gIGF0KGluZGV4OiBudW1iZXIpOiBBYnN0cmFjdENvbnRyb2wgeyByZXR1cm4gdGhpcy5jb250cm9sc1tpbmRleF07IH1cblxuICAvKipcbiAgICogSW5zZXJ0IGEgbmV3IHtAbGluayBBYnN0cmFjdENvbnRyb2x9IGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5LlxuICAgKi9cbiAgcHVzaChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xzLnB1c2goY29udHJvbCk7XG4gICAgY29udHJvbC5zZXRQYXJlbnQodGhpcyk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IGEgbmV3IHtAbGluayBBYnN0cmFjdENvbnRyb2x9IGF0IHRoZSBnaXZlbiBgaW5kZXhgIGluIHRoZSBhcnJheS5cbiAgICovXG4gIGluc2VydChpbmRleDogbnVtYmVyLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICBMaXN0V3JhcHBlci5pbnNlcnQodGhpcy5jb250cm9scywgaW5kZXgsIGNvbnRyb2wpO1xuICAgIGNvbnRyb2wuc2V0UGFyZW50KHRoaXMpO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgY29udHJvbCBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBpbiB0aGUgYXJyYXkuXG4gICAqL1xuICByZW1vdmVBdChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgTGlzdFdyYXBwZXIucmVtb3ZlQXQodGhpcy5jb250cm9scywgaW5kZXgpO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExlbmd0aCBvZiB0aGUgY29udHJvbCBhcnJheS5cbiAgICovXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RoOyB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdXBkYXRlVmFsdWUoKTogdm9pZCB7IHRoaXMuX3ZhbHVlID0gdGhpcy5jb250cm9scy5tYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWUpOyB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYW55Q29udHJvbHNIYXZlU3RhdHVzKHN0YXR1czogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMuc29tZShjID0+IGMuc3RhdHVzID09IHN0YXR1cyk7XG4gIH1cblxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NldFBhcmVudEZvckNvbnRyb2xzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4geyBjb250cm9sLnNldFBhcmVudCh0aGlzKTsgfSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar modelModule = require('./model');\r\n/**\r\n * Creates a form object from a user-specified configuration.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ENgZo8EuIECZNensZCVr?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * viewBindings: [FORM_BINDINGS]\r\n * template: `\r\n * <form [ngFormModel]=\"loginForm\">\r\n * <p>Login <input ngControl=\"login\"></p>\r\n * <div ngControlGroup=\"passwordRetry\">\r\n * <p>Password <input type=\"password\" ngControl=\"password\"></p>\r\n * <p>Confirm password <input type=\"password\" ngControl=\"passwordConfirmation\"></p>\r\n * </div>\r\n * </form>\r\n * <h3>Form value:</h3>\r\n * <pre>{{value}}</pre>\r\n * `,\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * loginForm: ControlGroup;\r\n *\r\n * constructor(builder: FormBuilder) {\r\n * this.loginForm = builder.group({\r\n * login: [\"\", Validators.required],\r\n * passwordRetry: builder.group({\r\n * password: [\"\", Validators.required],\r\n * passwordConfirmation: [\"\", Validators.required, asyncValidator]\r\n * })\r\n * });\r\n * }\r\n *\r\n * get value(): string {\r\n * return JSON.stringify(this.loginForm.value, null, 2);\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar FormBuilder = (function () {\r\n function FormBuilder() {\r\n }\r\n /**\r\n * Construct a new {@link ControlGroup} with the given map of configuration.\r\n * Valid keys for the `extra` parameter map are `optionals` and `validator`.\r\n *\r\n * See the {@link ControlGroup} constructor for more details.\r\n */\r\n FormBuilder.prototype.group = function (controlsConfig, extra) {\r\n if (extra === void 0) { extra = null; }\r\n var controls = this._reduceControls(controlsConfig);\r\n var optionals = (lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, \"optionals\") : null);\r\n var validator = lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, \"validator\") : null;\r\n var asyncValidator = lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, \"asyncValidator\") : null;\r\n return new modelModule.ControlGroup(controls, optionals, validator, asyncValidator);\r\n };\r\n /**\r\n * Construct a new {@link Control} with the given `value`,`validator`, and `asyncValidator`.\r\n */\r\n FormBuilder.prototype.control = function (value, validator, asyncValidator) {\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n return new modelModule.Control(value, validator, asyncValidator);\r\n };\r\n /**\r\n * Construct an array of {@link Control}s from the given `controlsConfig` array of\r\n * configuration, with the given optional `validator` and `asyncValidator`.\r\n */\r\n FormBuilder.prototype.array = function (controlsConfig, validator, asyncValidator) {\r\n var _this = this;\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n var controls = controlsConfig.map(function (c) { return _this._createControl(c); });\r\n return new modelModule.ControlArray(controls, validator, asyncValidator);\r\n };\r\n /** @internal */\r\n FormBuilder.prototype._reduceControls = function (controlsConfig) {\r\n var _this = this;\r\n var controls = {};\r\n collection_1.StringMapWrapper.forEach(controlsConfig, function (controlConfig, controlName) {\r\n controls[controlName] = _this._createControl(controlConfig);\r\n });\r\n return controls;\r\n };\r\n /** @internal */\r\n FormBuilder.prototype._createControl = function (controlConfig) {\r\n if (controlConfig instanceof modelModule.Control ||\r\n controlConfig instanceof modelModule.ControlGroup ||\r\n controlConfig instanceof modelModule.ControlArray) {\r\n return controlConfig;\r\n }\r\n else if (lang_1.isArray(controlConfig)) {\r\n var value = controlConfig[0];\r\n var validator = controlConfig.length > 1 ? controlConfig[1] : null;\r\n var asyncValidator = controlConfig.length > 2 ? controlConfig[2] : null;\r\n return this.control(value, validator, asyncValidator);\r\n }\r\n else {\r\n return this.control(controlConfig);\r\n }\r\n };\r\n FormBuilder = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], FormBuilder);\r\n return FormBuilder;\r\n}());\r\nexports.FormBuilder = FormBuilder;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybV9idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9mb3JtX2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUF5QixlQUFlLENBQUMsQ0FBQTtBQUN6QywyQkFBK0IsZ0NBQWdDLENBQUMsQ0FBQTtBQUNoRSxxQkFBbUQsMEJBQTBCLENBQUMsQ0FBQTtBQUM5RSxJQUFZLFdBQVcsV0FBTSxTQUFTLENBQUMsQ0FBQTtBQUl2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQUVIO0lBQUE7SUE4REEsQ0FBQztJQTdEQzs7Ozs7T0FLRztJQUNILDJCQUFLLEdBQUwsVUFBTSxjQUFvQyxFQUNwQyxLQUFrQztRQUFsQyxxQkFBa0MsR0FBbEMsWUFBa0M7UUFDdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxJQUFJLFNBQVMsR0FBNkIsQ0FDdEMsZ0JBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyw2QkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksU0FBUyxHQUFnQixnQkFBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLDZCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2hHLElBQUksY0FBYyxHQUNkLGdCQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsNkJBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM1RSxNQUFNLENBQUMsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRDs7T0FFRztJQUNILDZCQUFPLEdBQVAsVUFBUSxLQUFhLEVBQUUsU0FBNkIsRUFDNUMsY0FBdUM7UUFEeEIseUJBQTZCLEdBQTdCLGdCQUE2QjtRQUM1Qyw4QkFBdUMsR0FBdkMscUJBQXVDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsMkJBQUssR0FBTCxVQUFNLGNBQXFCLEVBQUUsU0FBNkIsRUFDcEQsY0FBdUM7UUFEN0MsaUJBSUM7UUFKNEIseUJBQTZCLEdBQTdCLGdCQUE2QjtRQUNwRCw4QkFBdUMsR0FBdkMscUJBQXVDO1FBQzNDLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUF0QixDQUFzQixDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIscUNBQWUsR0FBZixVQUFnQixjQUN5QjtRQUR6QyxpQkFPQztRQUxDLElBQUksUUFBUSxHQUFpRCxFQUFFLENBQUM7UUFDaEUsNkJBQWdCLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxVQUFDLGFBQWtCLEVBQUUsV0FBbUI7WUFDL0UsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsb0NBQWMsR0FBZCxVQUFlLGFBQWtCO1FBQy9CLEVBQUUsQ0FBQyxDQUFDLGFBQWEsWUFBWSxXQUFXLENBQUMsT0FBTztZQUM1QyxhQUFhLFlBQVksV0FBVyxDQUFDLFlBQVk7WUFDakQsYUFBYSxZQUFZLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFFdkIsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLFNBQVMsR0FBZ0IsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNoRixJQUFJLGNBQWMsR0FBcUIsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXhELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBOURIO1FBQUMsaUJBQVUsRUFBRTs7bUJBQUE7SUErRGIsa0JBQUM7QUFBRCxDQUFDLEFBOURELElBOERDO0FBOURZLG1CQUFXLGNBOER2QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0FycmF5LCBDT05TVF9FWFBSLCBUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0ICogYXMgbW9kZWxNb2R1bGUgZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQge1ZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZufSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycyc7XG5cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9ybSBvYmplY3QgZnJvbSBhIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0VOZ1pvOEV1SUVDWk5lbnNaQ1ZyP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktYXBwJyxcbiAqICAgdmlld0JpbmRpbmdzOiBbRk9STV9CSU5ESU5HU11cbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8Zm9ybSBbbmdGb3JtTW9kZWxdPVwibG9naW5Gb3JtXCI+XG4gKiAgICAgICA8cD5Mb2dpbiA8aW5wdXQgbmdDb250cm9sPVwibG9naW5cIj48L3A+XG4gKiAgICAgICA8ZGl2IG5nQ29udHJvbEdyb3VwPVwicGFzc3dvcmRSZXRyeVwiPlxuICogICAgICAgICA8cD5QYXNzd29yZCA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgbmdDb250cm9sPVwicGFzc3dvcmRcIj48L3A+XG4gKiAgICAgICAgIDxwPkNvbmZpcm0gcGFzc3dvcmQgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG5nQ29udHJvbD1cInBhc3N3b3JkQ29uZmlybWF0aW9uXCI+PC9wPlxuICogICAgICAgPC9kaXY+XG4gKiAgICAgPC9mb3JtPlxuICogICAgIDxoMz5Gb3JtIHZhbHVlOjwvaDM+XG4gKiAgICAgPHByZT57e3ZhbHVlfX08L3ByZT5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU11cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgbG9naW5Gb3JtOiBDb250cm9sR3JvdXA7XG4gKlxuICogICBjb25zdHJ1Y3RvcihidWlsZGVyOiBGb3JtQnVpbGRlcikge1xuICogICAgIHRoaXMubG9naW5Gb3JtID0gYnVpbGRlci5ncm91cCh7XG4gKiAgICAgICBsb2dpbjogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICogICAgICAgcGFzc3dvcmRSZXRyeTogYnVpbGRlci5ncm91cCh7XG4gKiAgICAgICAgIHBhc3N3b3JkOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gKiAgICAgICAgIHBhc3N3b3JkQ29uZmlybWF0aW9uOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZCwgYXN5bmNWYWxpZGF0b3JdXG4gKiAgICAgICB9KVxuICogICAgIH0pO1xuICogICB9XG4gKlxuICogICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5sb2dpbkZvcm0udmFsdWUsIG51bGwsIDIpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdCBhIG5ldyB7QGxpbmsgQ29udHJvbEdyb3VwfSB3aXRoIHRoZSBnaXZlbiBtYXAgb2YgY29uZmlndXJhdGlvbi5cbiAgICogVmFsaWQga2V5cyBmb3IgdGhlIGBleHRyYWAgcGFyYW1ldGVyIG1hcCBhcmUgYG9wdGlvbmFsc2AgYW5kIGB2YWxpZGF0b3JgLlxuICAgKlxuICAgKiBTZWUgdGhlIHtAbGluayBDb250cm9sR3JvdXB9IGNvbnN0cnVjdG9yIGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBncm91cChjb250cm9sc0NvbmZpZzoge1trZXk6IHN0cmluZ106IGFueX0sXG4gICAgICAgIGV4dHJhOiB7W2tleTogc3RyaW5nXTogYW55fSA9IG51bGwpOiBtb2RlbE1vZHVsZS5Db250cm9sR3JvdXAge1xuICAgIHZhciBjb250cm9scyA9IHRoaXMuX3JlZHVjZUNvbnRyb2xzKGNvbnRyb2xzQ29uZmlnKTtcbiAgICB2YXIgb3B0aW9uYWxzID0gPHtba2V5OiBzdHJpbmddOiBib29sZWFufT4oXG4gICAgICAgIGlzUHJlc2VudChleHRyYSkgPyBTdHJpbmdNYXBXcmFwcGVyLmdldChleHRyYSwgXCJvcHRpb25hbHNcIikgOiBudWxsKTtcbiAgICB2YXIgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IGlzUHJlc2VudChleHRyYSkgPyBTdHJpbmdNYXBXcmFwcGVyLmdldChleHRyYSwgXCJ2YWxpZGF0b3JcIikgOiBudWxsO1xuICAgIHZhciBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9XG4gICAgICAgIGlzUHJlc2VudChleHRyYSkgPyBTdHJpbmdNYXBXcmFwcGVyLmdldChleHRyYSwgXCJhc3luY1ZhbGlkYXRvclwiKSA6IG51bGw7XG4gICAgcmV0dXJuIG5ldyBtb2RlbE1vZHVsZS5Db250cm9sR3JvdXAoY29udHJvbHMsIG9wdGlvbmFscywgdmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XG4gIH1cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBhIG5ldyB7QGxpbmsgQ29udHJvbH0gd2l0aCB0aGUgZ2l2ZW4gYHZhbHVlYCxgdmFsaWRhdG9yYCwgYW5kIGBhc3luY1ZhbGlkYXRvcmAuXG4gICAqL1xuICBjb250cm9sKHZhbHVlOiBPYmplY3QsIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBudWxsLFxuICAgICAgICAgIGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuID0gbnVsbCk6IG1vZGVsTW9kdWxlLkNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgbW9kZWxNb2R1bGUuQ29udHJvbCh2YWx1ZSwgdmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0IGFuIGFycmF5IG9mIHtAbGluayBDb250cm9sfXMgZnJvbSB0aGUgZ2l2ZW4gYGNvbnRyb2xzQ29uZmlnYCBhcnJheSBvZlxuICAgKiBjb25maWd1cmF0aW9uLCB3aXRoIHRoZSBnaXZlbiBvcHRpb25hbCBgdmFsaWRhdG9yYCBhbmQgYGFzeW5jVmFsaWRhdG9yYC5cbiAgICovXG4gIGFycmF5KGNvbnRyb2xzQ29uZmlnOiBhbnlbXSwgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IG51bGwsXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuID0gbnVsbCk6IG1vZGVsTW9kdWxlLkNvbnRyb2xBcnJheSB7XG4gICAgdmFyIGNvbnRyb2xzID0gY29udHJvbHNDb25maWcubWFwKGMgPT4gdGhpcy5fY3JlYXRlQ29udHJvbChjKSk7XG4gICAgcmV0dXJuIG5ldyBtb2RlbE1vZHVsZS5Db250cm9sQXJyYXkoY29udHJvbHMsIHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVkdWNlQ29udHJvbHMoY29udHJvbHNDb25maWc6IHtbazogc3RyaW5nXTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueX0pOiB7W2tleTogc3RyaW5nXTogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sfSB7XG4gICAgdmFyIGNvbnRyb2xzOiB7W2tleTogc3RyaW5nXTogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sfSA9IHt9O1xuICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChjb250cm9sc0NvbmZpZywgKGNvbnRyb2xDb25maWc6IGFueSwgY29udHJvbE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29udHJvbHNbY29udHJvbE5hbWVdID0gdGhpcy5fY3JlYXRlQ29udHJvbChjb250cm9sQ29uZmlnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9jcmVhdGVDb250cm9sKGNvbnRyb2xDb25maWc6IGFueSk6IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbCB7XG4gICAgaWYgKGNvbnRyb2xDb25maWcgaW5zdGFuY2VvZiBtb2RlbE1vZHVsZS5Db250cm9sIHx8XG4gICAgICAgIGNvbnRyb2xDb25maWcgaW5zdGFuY2VvZiBtb2RlbE1vZHVsZS5Db250cm9sR3JvdXAgfHxcbiAgICAgICAgY29udHJvbENvbmZpZyBpbnN0YW5jZW9mIG1vZGVsTW9kdWxlLkNvbnRyb2xBcnJheSkge1xuICAgICAgcmV0dXJuIGNvbnRyb2xDb25maWc7XG5cbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoY29udHJvbENvbmZpZykpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGNvbnRyb2xDb25maWdbMF07XG4gICAgICB2YXIgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IGNvbnRyb2xDb25maWcubGVuZ3RoID4gMSA/IGNvbnRyb2xDb25maWdbMV0gOiBudWxsO1xuICAgICAgdmFyIGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuID0gY29udHJvbENvbmZpZy5sZW5ndGggPiAyID8gY29udHJvbENvbmZpZ1syXSA6IG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sKHZhbHVlLCB2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sKGNvbnRyb2xDb25maWcpO1xuICAgIH1cbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Used to provide a {@link ControlValueAccessor} for form controls.\r\n *\r\n * See {@link DefaultValueAccessor} for how to implement one.\r\n */\r\nexports.NG_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"NgValueAccessor\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9jb250cm9sX3ZhbHVlX2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBMEIsZUFBZSxDQUFDLENBQUE7QUFDMUMscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUEyQnBEOzs7O0dBSUc7QUFDVSx5QkFBaUIsR0FBZ0IsaUJBQVUsQ0FBQyxJQUFJLGtCQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGFxdWVUb2tlbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQSBicmlkZ2UgYmV0d2VlbiBhIGNvbnRyb2wgYW5kIGEgbmF0aXZlIGVsZW1lbnQuXG4gKlxuICogQSBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIGFic3RyYWN0cyB0aGUgb3BlcmF0aW9ucyBvZiB3cml0aW5nIGEgbmV3IHZhbHVlIHRvIGFcbiAqIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyBhbiBpbnB1dCBjb250cm9sLlxuICpcbiAqIFBsZWFzZSBzZWUge0BsaW5rIERlZmF1bHRWYWx1ZUFjY2Vzc29yfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBXcml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cbiAgICovXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZDtcblxuICAvKipcbiAgICogU2V0IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQ7XG59XG5cbi8qKlxuICogVXNlZCB0byBwcm92aWRlIGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmb3IgZm9ybSBjb250cm9scy5cbiAqXG4gKiBTZWUge0BsaW5rIERlZmF1bHRWYWx1ZUFjY2Vzc29yfSBmb3IgaG93IHRvIGltcGxlbWVudCBvbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBOR19WQUxVRV9BQ0NFU1NPUjogT3BhcXVlVG9rZW4gPSBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbihcIk5nVmFsdWVBY2Nlc3NvclwiKSk7Il19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * Base class for control directives.\r\n *\r\n * Only used internally in the forms module.\r\n */\r\nvar AbstractControlDirective = (function () {\r\n function AbstractControlDirective() {\r\n }\r\n Object.defineProperty(AbstractControlDirective.prototype, \"control\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"value\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.value : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"valid\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.valid : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"errors\", {\r\n get: function () {\r\n return lang_1.isPresent(this.control) ? this.control.errors : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"pristine\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.pristine : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"dirty\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.dirty : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"touched\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.touched : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"untouched\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.untouched : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"path\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbstractControlDirective;\r\n}());\r\nexports.AbstractControlDirective = AbstractControlDirective;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RfY29udHJvbF9kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvYWJzdHJhY3RfY29udHJvbF9kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ25ELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdEOzs7O0dBSUc7QUFDSDtJQUFBO0lBb0JBLENBQUM7SUFuQkMsc0JBQUksNkNBQU87YUFBWCxjQUFpQyxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFMUQsc0JBQUksMkNBQUs7YUFBVCxjQUFtQixNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFaEYsc0JBQUksMkNBQUs7YUFBVCxjQUF1QixNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFcEYsc0JBQUksNENBQU07YUFBVjtZQUNFLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDOUQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw4Q0FBUTthQUFaLGNBQTBCLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUUxRixzQkFBSSwyQ0FBSzthQUFULGNBQXVCLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUVwRixzQkFBSSw2Q0FBTzthQUFYLGNBQXlCLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUV4RixzQkFBSSwrQ0FBUzthQUFiLGNBQTJCLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUU1RixzQkFBSSwwQ0FBSTthQUFSLGNBQXVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUN2QywrQkFBQztBQUFELENBQUMsQUFwQkQsSUFvQkM7QUFwQnFCLGdDQUF3QiwyQkFvQjdDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29udHJvbCBkaXJlY3RpdmVzLlxuICpcbiAqIE9ubHkgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBmb3JtcyBtb2R1bGUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUge1xuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wgeyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5jb250cm9sKSA/IHRoaXMuY29udHJvbC52YWx1ZSA6IG51bGw7IH1cblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5jb250cm9sKSA/IHRoaXMuY29udHJvbC52YWxpZCA6IG51bGw7IH1cblxuICBnZXQgZXJyb3JzKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udHJvbCkgPyB0aGlzLmNvbnRyb2wuZXJyb3JzIDogbnVsbDtcbiAgfVxuXG4gIGdldCBwcmlzdGluZSgpOiBib29sZWFuIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmNvbnRyb2wpID8gdGhpcy5jb250cm9sLnByaXN0aW5lIDogbnVsbDsgfVxuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmNvbnRyb2wpID8gdGhpcy5jb250cm9sLmRpcnR5IDogbnVsbDsgfVxuXG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udHJvbCkgPyB0aGlzLmNvbnRyb2wudG91Y2hlZCA6IG51bGw7IH1cblxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udHJvbCkgPyB0aGlzLmNvbnRyb2wudW50b3VjaGVkIDogbnVsbDsgfVxuXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar abstract_control_directive_1 = require('./abstract_control_directive');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * A base class that all control directive extend.\r\n * It binds a {@link Control} object to a DOM element.\r\n *\r\n * Used internally by Angular forms.\r\n */\r\nvar NgControl = (function (_super) {\r\n __extends(NgControl, _super);\r\n function NgControl() {\r\n _super.apply(this, arguments);\r\n this.name = null;\r\n this.valueAccessor = null;\r\n }\r\n Object.defineProperty(NgControl.prototype, \"validator\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControl.prototype, \"asyncValidator\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return NgControl;\r\n}(abstract_control_directive_1.AbstractControlDirective));\r\nexports.NgControl = NgControl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDJDQUF1Qyw4QkFBOEIsQ0FBQyxDQUFBO0FBQ3RFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRzdEOzs7OztHQUtHO0FBQ0g7SUFBd0MsNkJBQXdCO0lBQWhFO1FBQXdDLDhCQUF3QjtRQUM5RCxTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQXlCLElBQUksQ0FBQztJQU03QyxDQUFDO0lBSkMsc0JBQUksZ0NBQVM7YUFBYixjQUErQixNQUFNLENBQWMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDckUsc0JBQUkscUNBQWM7YUFBbEIsY0FBeUMsTUFBTSxDQUFtQiwwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUd0RixnQkFBQztBQUFELENBQUMsQUFSRCxDQUF3QyxxREFBd0IsR0FRL0Q7QUFScUIsaUJBQVMsWUFROUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbERpcmVjdGl2ZX0gZnJvbSAnLi9hYnN0cmFjdF9jb250cm9sX2RpcmVjdGl2ZSc7XG5pbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0FzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZufSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyB0aGF0IGFsbCBjb250cm9sIGRpcmVjdGl2ZSBleHRlbmQuXG4gKiBJdCBiaW5kcyBhIHtAbGluayBDb250cm9sfSBvYmplY3QgdG8gYSBET00gZWxlbWVudC5cbiAqXG4gKiBVc2VkIGludGVybmFsbHkgYnkgQW5ndWxhciBmb3Jtcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nQ29udHJvbCBleHRlbmRzIEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB7XG4gIG5hbWU6IHN0cmluZyA9IG51bGw7XG4gIHZhbHVlQWNjZXNzb3I6IENvbnRyb2xWYWx1ZUFjY2Vzc29yID0gbnVsbDtcblxuICBnZXQgdmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHsgcmV0dXJuIDxWYWxpZGF0b3JGbj51bmltcGxlbWVudGVkKCk7IH1cbiAgZ2V0IGFzeW5jVmFsaWRhdG9yKCk6IEFzeW5jVmFsaWRhdG9yRm4geyByZXR1cm4gPEFzeW5jVmFsaWRhdG9yRm4+dW5pbXBsZW1lbnRlZCgpOyB9XG5cbiAgYWJzdHJhY3Qgdmlld1RvTW9kZWxVcGRhdGUobmV3VmFsdWU6IGFueSk6IHZvaWQ7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('angular2/src/common/forms/directives/control_value_accessor');\r\nvar ng_control_1 = require('angular2/src/common/forms/directives/ng_control');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar RADIO_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return RadioControlValueAccessor; }), multi: true }));\r\n/**\r\n * Internal class used by Angular to uncheck radio buttons with the matching name.\r\n */\r\nvar RadioControlRegistry = (function () {\r\n function RadioControlRegistry() {\r\n this._accessors = [];\r\n }\r\n RadioControlRegistry.prototype.add = function (control, accessor) {\r\n this._accessors.push([control, accessor]);\r\n };\r\n RadioControlRegistry.prototype.remove = function (accessor) {\r\n var indexToRemove = -1;\r\n for (var i = 0; i < this._accessors.length; ++i) {\r\n if (this._accessors[i][1] === accessor) {\r\n indexToRemove = i;\r\n }\r\n }\r\n collection_1.ListWrapper.removeAt(this._accessors, indexToRemove);\r\n };\r\n RadioControlRegistry.prototype.select = function (accessor) {\r\n this._accessors.forEach(function (c) {\r\n if (c[0].control.root === accessor._control.control.root && c[1] !== accessor) {\r\n c[1].fireUncheck();\r\n }\r\n });\r\n };\r\n RadioControlRegistry = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], RadioControlRegistry);\r\n return RadioControlRegistry;\r\n}());\r\nexports.RadioControlRegistry = RadioControlRegistry;\r\n/**\r\n * The value provided by the forms API for radio buttons.\r\n */\r\nvar RadioButtonState = (function () {\r\n function RadioButtonState(checked, value) {\r\n this.checked = checked;\r\n this.value = value;\r\n }\r\n return RadioButtonState;\r\n}());\r\nexports.RadioButtonState = RadioButtonState;\r\n/**\r\n * The accessor for writing a radio control value and listening to changes that is used by the\r\n * {@link NgModel}, {@link NgFormControl}, and {@link NgControlName} directives.\r\n *\r\n * ### Example\r\n * ```\r\n * @Component({\r\n * template: `\r\n * <input type=\"radio\" name=\"food\" [(ngModel)]=\"foodChicken\">\r\n * <input type=\"radio\" name=\"food\" [(ngModel)]=\"foodFish\">\r\n * `\r\n * })\r\n * class FoodCmp {\r\n * foodChicken = new RadioButtonState(true, \"chicken\");\r\n * foodFish = new RadioButtonState(false, \"fish\");\r\n * }\r\n * ```\r\n */\r\nvar RadioControlValueAccessor = (function () {\r\n function RadioControlValueAccessor(_renderer, _elementRef, _registry, _injector) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this._registry = _registry;\r\n this._injector = _injector;\r\n this.onChange = function () { };\r\n this.onTouched = function () { };\r\n }\r\n RadioControlValueAccessor.prototype.ngOnInit = function () {\r\n this._control = this._injector.get(ng_control_1.NgControl);\r\n this._registry.add(this._control, this);\r\n };\r\n RadioControlValueAccessor.prototype.ngOnDestroy = function () { this._registry.remove(this); };\r\n RadioControlValueAccessor.prototype.writeValue = function (value) {\r\n this._state = value;\r\n if (lang_1.isPresent(value) && value.checked) {\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', true);\r\n }\r\n };\r\n RadioControlValueAccessor.prototype.registerOnChange = function (fn) {\r\n var _this = this;\r\n this._fn = fn;\r\n this.onChange = function () {\r\n fn(new RadioButtonState(true, _this._state.value));\r\n _this._registry.select(_this);\r\n };\r\n };\r\n RadioControlValueAccessor.prototype.fireUncheck = function () { this._fn(new RadioButtonState(false, this._state.value)); };\r\n RadioControlValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n __decorate([\r\n core_1.Input(), \r\n __metadata('design:type', String)\r\n ], RadioControlValueAccessor.prototype, \"name\", void 0);\r\n RadioControlValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input[type=radio][ngControl],input[type=radio][ngFormControl],input[type=radio][ngModel]',\r\n host: { '(change)': 'onChange()', '(blur)': 'onTouched()' },\r\n providers: [RADIO_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, RadioControlRegistry, core_1.Injector])\r\n ], RadioControlValueAccessor);\r\n return RadioControlValueAccessor;\r\n}());\r\nexports.RadioControlValueAccessor = RadioControlValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9yYWRpb19jb250cm9sX3ZhbHVlX2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFhTyxlQUFlLENBQUMsQ0FBQTtBQUN2Qix1Q0FHTyw2REFBNkQsQ0FBQyxDQUFBO0FBQ3JFLDJCQUF3QixpREFBaUQsQ0FBQyxDQUFBO0FBQzFFLHFCQUFvRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQy9FLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTNELElBQU0sb0JBQW9CLEdBQUcsaUJBQVUsQ0FBQyxJQUFJLGVBQVEsQ0FDaEQsMENBQWlCLEVBQUUsRUFBQyxXQUFXLEVBQUUsaUJBQVUsQ0FBQyxjQUFNLE9BQUEseUJBQXlCLEVBQXpCLENBQXlCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBR2pHOztHQUVHO0FBRUg7SUFBQTtRQUNVLGVBQVUsR0FBVSxFQUFFLENBQUM7SUF1QmpDLENBQUM7SUFyQkMsa0NBQUcsR0FBSCxVQUFJLE9BQWtCLEVBQUUsUUFBbUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQscUNBQU0sR0FBTixVQUFPLFFBQW1DO1FBQ3hDLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxFQUFF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WCxjQUFzQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakYscURBQWlCLEdBQWpCLFVBQWtCLEVBQVksSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFqQzlEO1FBQUMsWUFBSyxFQUFFOzsyREFBQTtJQVpWO1FBQUMsZ0JBQVMsQ0FBQztZQUNULFFBQVEsRUFDSiwwRkFBMEY7WUFDOUYsSUFBSSxFQUFFLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFDO1lBQ3pELFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1NBQ2xDLENBQUM7O2lDQUFBO0lBeUNGLGdDQUFDO0FBQUQsQ0FBQyxBQXhDRCxJQXdDQztBQXhDWSxpQ0FBeUIsNEJBd0NyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcixcbiAgU2VsZixcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIEF0dHJpYnV0ZSxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBJbmplY3RvcixcbiAgSW5qZWN0YWJsZVxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7XG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvclxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtDT05TVF9FWFBSLCBsb29zZUlkZW50aWNhbCwgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuY29uc3QgUkFESU9fVkFMVUVfQUNDRVNTT1IgPSBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihcbiAgICBOR19WQUxVRV9BQ0NFU1NPUiwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuXG4vKipcbiAqIEludGVybmFsIGNsYXNzIHVzZWQgYnkgQW5ndWxhciB0byB1bmNoZWNrIHJhZGlvIGJ1dHRvbnMgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJhZGlvQ29udHJvbFJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBfYWNjZXNzb3JzOiBhbnlbXSA9IFtdO1xuXG4gIGFkZChjb250cm9sOiBOZ0NvbnRyb2wsIGFjY2Vzc29yOiBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yKSB7XG4gICAgdGhpcy5fYWNjZXNzb3JzLnB1c2goW2NvbnRyb2wsIGFjY2Vzc29yXSk7XG4gIH1cblxuICByZW1vdmUoYWNjZXNzb3I6IFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IpIHtcbiAgICB2YXIgaW5kZXhUb1JlbW92ZSA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYWNjZXNzb3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAodGhpcy5fYWNjZXNzb3JzW2ldWzFdID09PSBhY2Nlc3Nvcikge1xuICAgICAgICBpbmRleFRvUmVtb3ZlID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgTGlzdFdyYXBwZXIucmVtb3ZlQXQodGhpcy5fYWNjZXNzb3JzLCBpbmRleFRvUmVtb3ZlKTtcbiAgfVxuXG4gIHNlbGVjdChhY2Nlc3NvcjogUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcikge1xuICAgIHRoaXMuX2FjY2Vzc29ycy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBpZiAoY1swXS5jb250cm9sLnJvb3QgPT09IGFjY2Vzc29yLl9jb250cm9sLmNvbnRyb2wucm9vdCAmJiBjWzFdICE9PSBhY2Nlc3Nvcikge1xuICAgICAgICBjWzFdLmZpcmVVbmNoZWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhlIGZvcm1zIEFQSSBmb3IgcmFkaW8gYnV0dG9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uU3RhdGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2hlY2tlZDogYm9vbGVhbiwgcHVibGljIHZhbHVlOiBzdHJpbmcpIHt9XG59XG5cblxuLyoqXG4gKiBUaGUgYWNjZXNzb3IgZm9yIHdyaXRpbmcgYSByYWRpbyBjb250cm9sIHZhbHVlIGFuZCBsaXN0ZW5pbmcgdG8gY2hhbmdlcyB0aGF0IGlzIHVzZWQgYnkgdGhlXG4gKiB7QGxpbmsgTmdNb2RlbH0sIHtAbGluayBOZ0Zvcm1Db250cm9sfSwgYW5kIHtAbGluayBOZ0NvbnRyb2xOYW1lfSBkaXJlY3RpdmVzLlxuICpcbiAqICAjIyMgRXhhbXBsZVxuICogIGBgYFxuICogIEBDb21wb25lbnQoe1xuICogICAgdGVtcGxhdGU6IGBcbiAqICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJmb29kXCIgWyhuZ01vZGVsKV09XCJmb29kQ2hpY2tlblwiPlxuICogICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cImZvb2RcIiBbKG5nTW9kZWwpXT1cImZvb2RGaXNoXCI+XG4gKiAgICBgXG4gKiAgfSlcbiAqICBjbGFzcyBGb29kQ21wIHtcbiAqICAgIGZvb2RDaGlja2VuID0gbmV3IFJhZGlvQnV0dG9uU3RhdGUodHJ1ZSwgXCJjaGlja2VuXCIpO1xuICogICAgZm9vZEZpc2ggPSBuZXcgUmFkaW9CdXR0b25TdGF0ZShmYWxzZSwgXCJmaXNoXCIpO1xuICogIH1cbiAqICBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOlxuICAgICAgJ2lucHV0W3R5cGU9cmFkaW9dW25nQ29udHJvbF0saW5wdXRbdHlwZT1yYWRpb11bbmdGb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYWRpb11bbmdNb2RlbF0nLFxuICBob3N0OiB7JyhjaGFuZ2UpJzogJ29uQ2hhbmdlKCknLCAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJ30sXG4gIHByb3ZpZGVyczogW1JBRElPX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgT25EZXN0cm95LCBPbkluaXQge1xuICAvKiogQGludGVybmFsICovXG4gIF9zdGF0ZTogUmFkaW9CdXR0b25TdGF0ZTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY29udHJvbDogTmdDb250cm9sO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2ZuOiBGdW5jdGlvbjtcbiAgb25DaGFuZ2UgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9yZWdpc3RyeTogUmFkaW9Db250cm9sUmVnaXN0cnksIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250cm9sID0gdGhpcy5faW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XG4gICAgdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2NvbnRyb2wsIHRoaXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7IHRoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKTsgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gdmFsdWU7XG4gICAgaWYgKGlzUHJlc2VudCh2YWx1ZSkgJiYgdmFsdWUuY2hlY2tlZCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NoZWNrZWQnLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMuX2ZuID0gZm47XG4gICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGZuKG5ldyBSYWRpb0J1dHRvblN0YXRlKHRydWUsIHRoaXMuX3N0YXRlLnZhbHVlKSk7XG4gICAgICB0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIGZpcmVVbmNoZWNrKCk6IHZvaWQgeyB0aGlzLl9mbihuZXcgUmFkaW9CdXR0b25TdGF0ZShmYWxzZSwgdGhpcy5fc3RhdGUudmFsdWUpKTsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * @module\r\n * @description\r\n * This module is used for handling user input, by defining and building a {@link ControlGroup} that\r\n * consists of\r\n * {@link Control} objects, and mapping them onto the DOM. {@link Control} objects can then be used\r\n * to read information\r\n * from the form DOM elements.\r\n *\r\n * This module is not included in the `angular2` module; you must import the forms module\r\n * explicitly.\r\n *\r\n */\r\nvar model_1 = require('./forms/model');\r\nexports.AbstractControl = model_1.AbstractControl;\r\nexports.Control = model_1.Control;\r\nexports.ControlGroup = model_1.ControlGroup;\r\nexports.ControlArray = model_1.ControlArray;\r\nvar abstract_control_directive_1 = require('./forms/directives/abstract_control_directive');\r\nexports.AbstractControlDirective = abstract_control_directive_1.AbstractControlDirective;\r\nvar control_container_1 = require('./forms/directives/control_container');\r\nexports.ControlContainer = control_container_1.ControlContainer;\r\nvar ng_control_name_1 = require('./forms/directives/ng_control_name');\r\nexports.NgControlName = ng_control_name_1.NgControlName;\r\nvar ng_form_control_1 = require('./forms/directives/ng_form_control');\r\nexports.NgFormControl = ng_form_control_1.NgFormControl;\r\nvar ng_model_1 = require('./forms/directives/ng_model');\r\nexports.NgModel = ng_model_1.NgModel;\r\nvar ng_control_1 = require('./forms/directives/ng_control');\r\nexports.NgControl = ng_control_1.NgControl;\r\nvar ng_control_group_1 = require('./forms/directives/ng_control_group');\r\nexports.NgControlGroup = ng_control_group_1.NgControlGroup;\r\nvar ng_form_model_1 = require('./forms/directives/ng_form_model');\r\nexports.NgFormModel = ng_form_model_1.NgFormModel;\r\nvar ng_form_1 = require('./forms/directives/ng_form');\r\nexports.NgForm = ng_form_1.NgForm;\r\nvar control_value_accessor_1 = require('./forms/directives/control_value_accessor');\r\nexports.NG_VALUE_ACCESSOR = control_value_accessor_1.NG_VALUE_ACCESSOR;\r\nvar default_value_accessor_1 = require('./forms/directives/default_value_accessor');\r\nexports.DefaultValueAccessor = default_value_accessor_1.DefaultValueAccessor;\r\nvar ng_control_status_1 = require('./forms/directives/ng_control_status');\r\nexports.NgControlStatus = ng_control_status_1.NgControlStatus;\r\nvar checkbox_value_accessor_1 = require('./forms/directives/checkbox_value_accessor');\r\nexports.CheckboxControlValueAccessor = checkbox_value_accessor_1.CheckboxControlValueAccessor;\r\nvar select_control_value_accessor_1 = require('./forms/directives/select_control_value_accessor');\r\nexports.NgSelectOption = select_control_value_accessor_1.NgSelectOption;\r\nexports.SelectControlValueAccessor = select_control_value_accessor_1.SelectControlValueAccessor;\r\nvar directives_1 = require('./forms/directives');\r\nexports.FORM_DIRECTIVES = directives_1.FORM_DIRECTIVES;\r\nexports.RadioButtonState = directives_1.RadioButtonState;\r\nvar validators_1 = require('./forms/validators');\r\nexports.NG_VALIDATORS = validators_1.NG_VALIDATORS;\r\nexports.NG_ASYNC_VALIDATORS = validators_1.NG_ASYNC_VALIDATORS;\r\nexports.Validators = validators_1.Validators;\r\nvar validators_2 = require('./forms/directives/validators');\r\nexports.RequiredValidator = validators_2.RequiredValidator;\r\nexports.MinLengthValidator = validators_2.MinLengthValidator;\r\nexports.MaxLengthValidator = validators_2.MaxLengthValidator;\r\nexports.PatternValidator = validators_2.PatternValidator;\r\nvar form_builder_1 = require('./forms/form_builder');\r\nexports.FormBuilder = form_builder_1.FormBuilder;\r\nvar form_builder_2 = require('./forms/form_builder');\r\nvar radio_control_value_accessor_1 = require('./forms/directives/radio_control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Shorthand set of providers used for building Angular forms.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * bootstrap(MyApp, [FORM_PROVIDERS]);\r\n * ```\r\n */\r\nexports.FORM_PROVIDERS = lang_1.CONST_EXPR([form_builder_2.FormBuilder, radio_control_value_accessor_1.RadioControlRegistry]);\r\n/**\r\n * See {@link FORM_PROVIDERS} instead.\r\n *\r\n * @deprecated\r\n */\r\nexports.FORM_BINDINGS = exports.FORM_PROVIDERS;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxzQkFBbUUsZUFBZSxDQUFDO0FBQTNFLGtEQUFlO0FBQUUsa0NBQU87QUFBRSw0Q0FBWTtBQUFFLDRDQUFtQztBQUVuRiwyQ0FBdUMsK0NBQStDLENBQUM7QUFBL0UseUZBQStFO0FBRXZGLGtDQUErQixzQ0FBc0MsQ0FBQztBQUE5RCxnRUFBOEQ7QUFDdEUsZ0NBQTRCLG9DQUFvQyxDQUFDO0FBQXpELHdEQUF5RDtBQUNqRSxnQ0FBNEIsb0NBQW9DLENBQUM7QUFBekQsd0RBQXlEO0FBQ2pFLHlCQUFzQiw2QkFBNkIsQ0FBQztBQUE1QyxxQ0FBNEM7QUFDcEQsMkJBQXdCLCtCQUErQixDQUFDO0FBQWhELDJDQUFnRDtBQUN4RCxpQ0FBNkIscUNBQXFDLENBQUM7QUFBM0QsMkRBQTJEO0FBQ25FLDhCQUEwQixrQ0FBa0MsQ0FBQztBQUFyRCxrREFBcUQ7QUFDN0Qsd0JBQXFCLDRCQUE0QixDQUFDO0FBQTFDLGtDQUEwQztBQUNsRCx1Q0FBc0QsMkNBQTJDLENBQUM7QUFBcEUsdUVBQW9FO0FBQ2xHLHVDQUFtQywyQ0FBMkMsQ0FBQztBQUF2RSw2RUFBdUU7QUFDL0Usa0NBQThCLHNDQUFzQyxDQUFDO0FBQTdELDhEQUE2RDtBQUNyRSx3Q0FBMkMsNENBQTRDLENBQUM7QUFBaEYsOEZBQWdGO0FBQ3hGLDhDQUdPLGtEQUFrRCxDQUFDO0FBRnhELHdFQUFjO0FBQ2QsZ0dBQ3dEO0FBQzFELDJCQUFnRCxvQkFBb0IsQ0FBQztBQUE3RCx1REFBZTtBQUFFLHlEQUE0QztBQUNyRSwyQkFBNkQsb0JBQW9CLENBQUM7QUFBMUUsbURBQWE7QUFBRSwrREFBbUI7QUFBRSw2Q0FBc0M7QUFDbEYsMkJBTU8sK0JBQStCLENBQUM7QUFMckMsMkRBQWlCO0FBQ2pCLDZEQUFrQjtBQUNsQiw2REFBa0I7QUFDbEIseURBRXFDO0FBQ3ZDLDZCQUEwQixzQkFBc0IsQ0FBQztBQUF6QyxpREFBeUM7QUFDakQsNkJBQTBCLHNCQUFzQixDQUFDLENBQUE7QUFDakQsNkNBQW1DLGlEQUFpRCxDQUFDLENBQUE7QUFDckYscUJBQStCLDBCQUEwQixDQUFDLENBQUE7QUFFMUQ7Ozs7Ozs7O0dBUUc7QUFDVSxzQkFBYyxHQUFXLGlCQUFVLENBQUMsQ0FBQywwQkFBVyxFQUFFLG1EQUFvQixDQUFDLENBQUMsQ0FBQztBQUV0Rjs7OztHQUlHO0FBQ1UscUJBQWEsR0FBRyxzQkFBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgbW9kdWxlIGlzIHVzZWQgZm9yIGhhbmRsaW5nIHVzZXIgaW5wdXQsIGJ5IGRlZmluaW5nIGFuZCBidWlsZGluZyBhIHtAbGluayBDb250cm9sR3JvdXB9IHRoYXRcbiAqIGNvbnNpc3RzIG9mXG4gKiB7QGxpbmsgQ29udHJvbH0gb2JqZWN0cywgYW5kIG1hcHBpbmcgdGhlbSBvbnRvIHRoZSBET00uIHtAbGluayBDb250cm9sfSBvYmplY3RzIGNhbiB0aGVuIGJlIHVzZWRcbiAqIHRvIHJlYWQgaW5mb3JtYXRpb25cbiAqIGZyb20gdGhlIGZvcm0gRE9NIGVsZW1lbnRzLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYGFuZ3VsYXIyYCBtb2R1bGU7IHlvdSBtdXN0IGltcG9ydCB0aGUgZm9ybXMgbW9kdWxlXG4gKiBleHBsaWNpdGx5LlxuICpcbiAqL1xuZXhwb3J0IHtBYnN0cmFjdENvbnRyb2wsIENvbnRyb2wsIENvbnRyb2xHcm91cCwgQ29udHJvbEFycmF5fSBmcm9tICcuL2Zvcm1zL21vZGVsJztcblxuZXhwb3J0IHtBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmV9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9hYnN0cmFjdF9jb250cm9sX2RpcmVjdGl2ZSc7XG5leHBvcnQge0Zvcm19IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9mb3JtX2ludGVyZmFjZSc7XG5leHBvcnQge0NvbnRyb2xDb250YWluZXJ9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9jb250cm9sX2NvbnRhaW5lcic7XG5leHBvcnQge05nQ29udHJvbE5hbWV9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sX25hbWUnO1xuZXhwb3J0IHtOZ0Zvcm1Db250cm9sfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfZm9ybV9jb250cm9sJztcbmV4cG9ydCB7TmdNb2RlbH0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL25nX21vZGVsJztcbmV4cG9ydCB7TmdDb250cm9sfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfY29udHJvbCc7XG5leHBvcnQge05nQ29udHJvbEdyb3VwfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9ncm91cCc7XG5leHBvcnQge05nRm9ybU1vZGVsfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfZm9ybV9tb2RlbCc7XG5leHBvcnQge05nRm9ybX0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL25nX2Zvcm0nO1xuZXhwb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7RGVmYXVsdFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9kZWZhdWx0X3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7TmdDb250cm9sU3RhdHVzfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9zdGF0dXMnO1xuZXhwb3J0IHtDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvY2hlY2tib3hfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtcbiAgTmdTZWxlY3RPcHRpb24sXG4gIFNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yXG59IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9zZWxlY3RfY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5leHBvcnQge0ZPUk1fRElSRUNUSVZFUywgUmFkaW9CdXR0b25TdGF0ZX0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzJztcbmV4cG9ydCB7TkdfVkFMSURBVE9SUywgTkdfQVNZTkNfVkFMSURBVE9SUywgVmFsaWRhdG9yc30gZnJvbSAnLi9mb3Jtcy92YWxpZGF0b3JzJztcbmV4cG9ydCB7XG4gIFJlcXVpcmVkVmFsaWRhdG9yLFxuICBNaW5MZW5ndGhWYWxpZGF0b3IsXG4gIE1heExlbmd0aFZhbGlkYXRvcixcbiAgUGF0dGVyblZhbGlkYXRvcixcbiAgVmFsaWRhdG9yXG59IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy92YWxpZGF0b3JzJztcbmV4cG9ydCB7Rm9ybUJ1aWxkZXJ9IGZyb20gJy4vZm9ybXMvZm9ybV9idWlsZGVyJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXJ9IGZyb20gJy4vZm9ybXMvZm9ybV9idWlsZGVyJztcbmltcG9ydCB7UmFkaW9Db250cm9sUmVnaXN0cnl9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9yYWRpb19jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7VHlwZSwgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBTaG9ydGhhbmQgc2V0IG9mIHByb3ZpZGVycyB1c2VkIGZvciBidWlsZGluZyBBbmd1bGFyIGZvcm1zLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogYm9vdHN0cmFwKE15QXBwLCBbRk9STV9QUk9WSURFUlNdKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgRk9STV9QUk9WSURFUlM6IFR5cGVbXSA9IENPTlNUX0VYUFIoW0Zvcm1CdWlsZGVyLCBSYWRpb0NvbnRyb2xSZWdpc3RyeV0pO1xuXG4vKipcbiAqIFNlZSB7QGxpbmsgRk9STV9QUk9WSURFUlN9IGluc3RlYWQuXG4gKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IEZPUk1fQklORElOR1MgPSBGT1JNX1BST1ZJREVSUztcbiJdfQ==","/* */ \n\"format global\";\n'use strict';// TS does not have Observables\r\n\"use strict\";\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZV9saXN0X2RpZmYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvb2JzZXJ2YWJsZV9saXN0X2RpZmYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCOztBQVN1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRTIGRvZXMgbm90IGhhdmUgT2JzZXJ2YWJsZXNcblxuLy8gSSBuZWVkIHRvIGJlIGhlcmUgdG8gbWFrZSBUeXBlU2NyaXB0IHRoaW5rIHRoaXMgaXMgYSBtb2R1bGUuXG5pbXBvcnQge30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBUaGlzIG1vZHVsZSBleGlzdHMgaW4gRGFydCwgYnV0IG5vdCBpbiBUeXBlc2NyaXB0LiBUaGlzIGV4cG9ydGVkIHN5bWJvbFxuICogaXMgb25seSBoZXJlIHRvIGhlbHAgVHlwZXNjcmlwdCB0aGluayB0aGlzIGlzIGEgbW9kdWxlLlxuICovXG5leHBvcnQgdmFyIHdvcmthcm91bmRfZW1wdHlfb2JzZXJ2YWJsZV9saXN0X2RpZmY6IGFueTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\n/**\r\n * The `NgClass` directive conditionally adds and removes CSS classes on an HTML element based on\r\n * an expression's evaluation result.\r\n *\r\n * The result of an expression evaluation is interpreted differently depending on type of\r\n * the expression evaluation result:\r\n * - `string` - all the CSS classes listed in a string (space delimited) are added\r\n * - `Array` - all the CSS classes (Array elements) are added\r\n * - `Object` - each key corresponds to a CSS class name while values are interpreted as expressions\r\n * evaluating to `Boolean`. If a given expression evaluates to `true` a corresponding CSS class\r\n * is added - otherwise it is removed.\r\n *\r\n * While the `NgClass` directive can interpret expressions evaluating to `string`, `Array`\r\n * or `Object`, the `Object`-based version is the most often used and has an advantage of keeping\r\n * all the CSS class names in a template.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/a4YdtmWywhJ33uqfpPPn?p=preview)):\r\n *\r\n * ```\r\n * import {Component} from 'angular2/core';\r\n * import {NgClass} from 'angular2/common';\r\n *\r\n * @Component({\r\n * selector: 'toggle-button',\r\n * inputs: ['isDisabled'],\r\n * template: `\r\n * <div class=\"button\" [ngClass]=\"{active: isOn, disabled: isDisabled}\"\r\n * (click)=\"toggle(!isOn)\">\r\n * Click me!\r\n * </div>`,\r\n * styles: [`\r\n * .button {\r\n * width: 120px;\r\n * border: medium solid black;\r\n * }\r\n *\r\n * .active {\r\n * background-color: red;\r\n * }\r\n *\r\n * .disabled {\r\n * color: gray;\r\n * border: medium solid gray;\r\n * }\r\n * `]\r\n * directives: [NgClass]\r\n * })\r\n * class ToggleButton {\r\n * isOn = false;\r\n * isDisabled = false;\r\n *\r\n * toggle(newState) {\r\n * if (!this.isDisabled) {\r\n * this.isOn = newState;\r\n * }\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgClass = (function () {\r\n function NgClass(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\r\n this._iterableDiffers = _iterableDiffers;\r\n this._keyValueDiffers = _keyValueDiffers;\r\n this._ngEl = _ngEl;\r\n this._renderer = _renderer;\r\n this._initialClasses = [];\r\n }\r\n Object.defineProperty(NgClass.prototype, \"initialClasses\", {\r\n set: function (v) {\r\n this._applyInitialClasses(true);\r\n this._initialClasses = lang_1.isPresent(v) && lang_1.isString(v) ? v.split(' ') : [];\r\n this._applyInitialClasses(false);\r\n this._applyClasses(this._rawClass, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgClass.prototype, \"rawClass\", {\r\n set: function (v) {\r\n this._cleanupClasses(this._rawClass);\r\n if (lang_1.isString(v)) {\r\n v = v.split(' ');\r\n }\r\n this._rawClass = v;\r\n this._iterableDiffer = null;\r\n this._keyValueDiffer = null;\r\n if (lang_1.isPresent(v)) {\r\n if (collection_1.isListLikeIterable(v)) {\r\n this._iterableDiffer = this._iterableDiffers.find(v).create(null);\r\n }\r\n else {\r\n this._keyValueDiffer = this._keyValueDiffers.find(v).create(null);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgClass.prototype.ngDoCheck = function () {\r\n if (lang_1.isPresent(this._iterableDiffer)) {\r\n var changes = this._iterableDiffer.diff(this._rawClass);\r\n if (lang_1.isPresent(changes)) {\r\n this._applyIterableChanges(changes);\r\n }\r\n }\r\n if (lang_1.isPresent(this._keyValueDiffer)) {\r\n var changes = this._keyValueDiffer.diff(this._rawClass);\r\n if (lang_1.isPresent(changes)) {\r\n this._applyKeyValueChanges(changes);\r\n }\r\n }\r\n };\r\n NgClass.prototype.ngOnDestroy = function () { this._cleanupClasses(this._rawClass); };\r\n NgClass.prototype._cleanupClasses = function (rawClassVal) {\r\n this._applyClasses(rawClassVal, true);\r\n this._applyInitialClasses(false);\r\n };\r\n NgClass.prototype._applyKeyValueChanges = function (changes) {\r\n var _this = this;\r\n changes.forEachAddedItem(function (record) { _this._toggleClass(record.key, record.currentValue); });\r\n changes.forEachChangedItem(function (record) { _this._toggleClass(record.key, record.currentValue); });\r\n changes.forEachRemovedItem(function (record) {\r\n if (record.previousValue) {\r\n _this._toggleClass(record.key, false);\r\n }\r\n });\r\n };\r\n NgClass.prototype._applyIterableChanges = function (changes) {\r\n var _this = this;\r\n changes.forEachAddedItem(function (record) { _this._toggleClass(record.item, true); });\r\n changes.forEachRemovedItem(function (record) { _this._toggleClass(record.item, false); });\r\n };\r\n NgClass.prototype._applyInitialClasses = function (isCleanup) {\r\n var _this = this;\r\n this._initialClasses.forEach(function (className) { return _this._toggleClass(className, !isCleanup); });\r\n };\r\n NgClass.prototype._applyClasses = function (rawClassVal, isCleanup) {\r\n var _this = this;\r\n if (lang_1.isPresent(rawClassVal)) {\r\n if (lang_1.isArray(rawClassVal)) {\r\n rawClassVal.forEach(function (className) { return _this._toggleClass(className, !isCleanup); });\r\n }\r\n else if (rawClassVal instanceof Set) {\r\n rawClassVal.forEach(function (className) { return _this._toggleClass(className, !isCleanup); });\r\n }\r\n else {\r\n collection_1.StringMapWrapper.forEach(rawClassVal, function (expVal, className) {\r\n if (lang_1.isPresent(expVal))\r\n _this._toggleClass(className, !isCleanup);\r\n });\r\n }\r\n }\r\n };\r\n NgClass.prototype._toggleClass = function (className, enabled) {\r\n className = className.trim();\r\n if (className.length > 0) {\r\n if (className.indexOf(' ') > -1) {\r\n var classes = className.split(/\\s+/g);\r\n for (var i = 0, len = classes.length; i < len; i++) {\r\n this._renderer.setElementClass(this._ngEl.nativeElement, classes[i], enabled);\r\n }\r\n }\r\n else {\r\n this._renderer.setElementClass(this._ngEl.nativeElement, className, enabled);\r\n }\r\n }\r\n };\r\n NgClass = __decorate([\r\n core_1.Directive({ selector: '[ngClass]', inputs: ['rawClass: ngClass', 'initialClasses: class'] }), \r\n __metadata('design:paramtypes', [core_1.IterableDiffers, core_1.KeyValueDiffers, core_1.ElementRef, core_1.Renderer])\r\n ], NgClass);\r\n return NgClass;\r\n}());\r\nexports.NgClass = NgClass;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvbmdfY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUEyQywwQkFBMEIsQ0FBQyxDQUFBO0FBQ3RFLHFCQVlPLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZCLDJCQUFtRCxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXBGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERHO0FBRUg7SUFNRSxpQkFBb0IsZ0JBQWlDLEVBQVUsZ0JBQWlDLEVBQzVFLEtBQWlCLEVBQVUsU0FBbUI7UUFEOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDNUUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFKMUQsb0JBQWUsR0FBYSxFQUFFLENBQUM7SUFJOEIsQ0FBQztJQUV0RSxzQkFBSSxtQ0FBYzthQUFsQixVQUFtQixDQUFTO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBUTthQUFaLFVB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QU8sQ0FBQyxDQUFDO2dCQUNoRixDQUFDO1lBQ0gsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUE3R0g7UUFBQyxnQkFBUyxDQUFDLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxFQUFDLENBQUM7O2VBQUE7SUE4RzNGLGNBQUM7QUFBRCxDQUFDLEFBN0dELElBNkdDO0FBN0dZLGVBQU8sVUE2R25CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudCwgaXNTdHJpbmcsIGlzQXJyYXl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1xuICBEb0NoZWNrLFxuICBPbkRlc3Ryb3ksXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIFJlbmRlcmVyLFxuICBJdGVyYWJsZURpZmZlcixcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsXG4gIEtleVZhbHVlQ2hhbmdlUmVjb3JkXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtTdHJpbmdNYXBXcmFwcGVyLCBpc0xpc3RMaWtlSXRlcmFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbi8qKlxuICogVGhlIGBOZ0NsYXNzYCBkaXJlY3RpdmUgY29uZGl0aW9uYWxseSBhZGRzIGFuZCByZW1vdmVzIENTUyBjbGFzc2VzIG9uIGFuIEhUTUwgZWxlbWVudCBiYXNlZCBvblxuICogYW4gZXhwcmVzc2lvbidzIGV2YWx1YXRpb24gcmVzdWx0LlxuICpcbiAqIFRoZSByZXN1bHQgb2YgYW4gZXhwcmVzc2lvbiBldmFsdWF0aW9uIGlzIGludGVycHJldGVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0eXBlIG9mXG4gKiB0aGUgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHJlc3VsdDpcbiAqIC0gYHN0cmluZ2AgLSBhbGwgdGhlIENTUyBjbGFzc2VzIGxpc3RlZCBpbiBhIHN0cmluZyAoc3BhY2UgZGVsaW1pdGVkKSBhcmUgYWRkZWRcbiAqIC0gYEFycmF5YCAtIGFsbCB0aGUgQ1NTIGNsYXNzZXMgKEFycmF5IGVsZW1lbnRzKSBhcmUgYWRkZWRcbiAqIC0gYE9iamVjdGAgLSBlYWNoIGtleSBjb3JyZXNwb25kcyB0byBhIENTUyBjbGFzcyBuYW1lIHdoaWxlIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgZXhwcmVzc2lvbnNcbiAqIGV2YWx1YXRpbmcgdG8gYEJvb2xlYW5gLiBJZiBhIGdpdmVuIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYCBhIGNvcnJlc3BvbmRpbmcgQ1NTIGNsYXNzXG4gKiBpcyBhZGRlZCAtIG90aGVyd2lzZSBpdCBpcyByZW1vdmVkLlxuICpcbiAqIFdoaWxlIHRoZSBgTmdDbGFzc2AgZGlyZWN0aXZlIGNhbiBpbnRlcnByZXQgZXhwcmVzc2lvbnMgZXZhbHVhdGluZyB0byBgc3RyaW5nYCwgYEFycmF5YFxuICogb3IgYE9iamVjdGAsIHRoZSBgT2JqZWN0YC1iYXNlZCB2ZXJzaW9uIGlzIHRoZSBtb3N0IG9mdGVuIHVzZWQgYW5kIGhhcyBhbiBhZHZhbnRhZ2Ugb2Yga2VlcGluZ1xuICogYWxsIHRoZSBDU1MgY2xhc3MgbmFtZXMgaW4gYSB0ZW1wbGF0ZS5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvYTRZZHRtV3l3aEozM3VxZnBQUG4/cD1wcmV2aWV3KSk6XG4gKlxuICogYGBgXG4gKiBpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG4gKiBpbXBvcnQge05nQ2xhc3N9IGZyb20gJ2FuZ3VsYXIyL2NvbW1vbic7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAndG9nZ2xlLWJ1dHRvbicsXG4gKiAgIGlucHV0czogWydpc0Rpc2FibGVkJ10sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiBbbmdDbGFzc109XCJ7YWN0aXZlOiBpc09uLCBkaXNhYmxlZDogaXNEaXNhYmxlZH1cIlxuICogICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZSghaXNPbilcIj5cbiAqICAgICAgICAgIENsaWNrIG1lIVxuICogICAgICA8L2Rpdj5gLFxuICogICBzdHlsZXM6IFtgXG4gKiAgICAgLmJ1dHRvbiB7XG4gKiAgICAgICB3aWR0aDogMTIwcHg7XG4gKiAgICAgICBib3JkZXI6IG1lZGl1bSBzb2xpZCBibGFjaztcbiAqICAgICB9XG4gKlxuICogICAgIC5hY3RpdmUge1xuICogICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xuICogICAgfVxuICpcbiAqICAgICAuZGlzYWJsZWQge1xuICogICAgICAgY29sb3I6IGdyYXk7XG4gKiAgICAgICBib3JkZXI6IG1lZGl1bSBzb2xpZCBncmF5O1xuICogICAgIH1cbiAqICAgYF1cbiAqICAgZGlyZWN0aXZlczogW05nQ2xhc3NdXG4gKiB9KVxuICogY2xhc3MgVG9nZ2xlQnV0dG9uIHtcbiAqICAgaXNPbiA9IGZhbHNlO1xuICogICBpc0Rpc2FibGVkID0gZmFsc2U7XG4gKlxuICogICB0b2dnbGUobmV3U3RhdGUpIHtcbiAqICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICogICAgICAgdGhpcy5pc09uID0gbmV3U3RhdGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdDbGFzc10nLCBpbnB1dHM6IFsncmF3Q2xhc3M6IG5nQ2xhc3MnLCAnaW5pdGlhbENsYXNzZXM6IGNsYXNzJ119KVxuZXhwb3J0IGNsYXNzIE5nQ2xhc3MgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pdGVyYWJsZURpZmZlcjogSXRlcmFibGVEaWZmZXI7XG4gIHByaXZhdGUgX2tleVZhbHVlRGlmZmVyOiBLZXlWYWx1ZURpZmZlcjtcbiAgcHJpdmF0ZSBfaW5pdGlhbENsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX3Jhd0NsYXNzOiBzdHJpbmdbXSB8IFNldDxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2l0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBwcml2YXRlIF9rZXlWYWx1ZURpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbmdFbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyKSB7fVxuXG4gIHNldCBpbml0aWFsQ2xhc3Nlcyh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKHRydWUpO1xuICAgIHRoaXMuX2luaXRpYWxDbGFzc2VzID0gaXNQcmVzZW50KHYpICYmIGlzU3RyaW5nKHYpID8gdi5zcGxpdCgnICcpIDogW107XG4gICAgdGhpcy5fYXBwbHlJbml0aWFsQ2xhc3NlcyhmYWxzZSk7XG4gICAgdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzLCBmYWxzZSk7XG4gIH1cblxuICBzZXQgcmF3Q2xhc3Modjogc3RyaW5nIHwgc3RyaW5nW10gfCBTZXQ8c3RyaW5nPnwge1trZXk6IHN0cmluZ106IGFueX0pIHtcbiAgICB0aGlzLl9jbGVhbnVwQ2xhc3Nlcyh0aGlzLl9yYXdDbGFzcyk7XG5cbiAgICBpZiAoaXNTdHJpbmcodikpIHtcbiAgICAgIHYgPSAoPHN0cmluZz52KS5zcGxpdCgnICcpO1xuICAgIH1cblxuICAgIHRoaXMuX3Jhd0NsYXNzID0gPHN0cmluZ1tdIHwgU2V0PHN0cmluZz4+djtcbiAgICB0aGlzLl9pdGVyYWJsZURpZmZlciA9IG51bGw7XG4gICAgdGhpcy5fa2V5VmFsdWVEaWZmZXIgPSBudWxsO1xuICAgIGlmIChpc1ByZXNlbnQodikpIHtcbiAgICAgIGlmIChpc0xpc3RMaWtlSXRlcmFibGUodikpIHtcbiAgICAgICAgdGhpcy5faXRlcmFibGVEaWZmZXIgPSB0aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh2KS5jcmVhdGUobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9rZXlWYWx1ZURpZmZlciA9IHRoaXMuX2tleVZhbHVlRGlmZmVycy5maW5kKHYpLmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9pdGVyYWJsZURpZmZlcikpIHtcbiAgICAgIHZhciBjaGFuZ2VzID0gdGhpcy5faXRlcmFibGVEaWZmZXIuZGlmZih0aGlzLl9yYXdDbGFzcyk7XG4gICAgICBpZiAoaXNQcmVzZW50KGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMuX2FwcGx5SXRlcmFibGVDaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2tleVZhbHVlRGlmZmVyKSkge1xuICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLl9rZXlWYWx1ZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoY2hhbmdlcykpIHtcbiAgICAgICAgdGhpcy5fYXBwbHlLZXlWYWx1ZUNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7IHRoaXMuX2NsZWFudXBDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKTsgfVxuXG4gIHByaXZhdGUgX2NsZWFudXBDbGFzc2VzKHJhd0NsYXNzVmFsOiBzdHJpbmdbXSB8IFNldDxzdHJpbmc+fCB7W2tleTogc3RyaW5nXTogYW55fSk6IHZvaWQge1xuICAgIHRoaXMuX2FwcGx5Q2xhc3NlcyhyYXdDbGFzc1ZhbCwgdHJ1ZSk7XG4gICAgdGhpcy5fYXBwbHlJbml0aWFsQ2xhc3NlcyhmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUtleVZhbHVlQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oXG4gICAgICAgIChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSA9PiB7IHRoaXMuX3RvZ2dsZUNsYXNzKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpOyB9KTtcbiAgICBjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbShcbiAgICAgICAgKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpID0+IHsgdGhpcy5fdG9nZ2xlQ2xhc3MocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSk7IH0pO1xuICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSA9PiB7XG4gICAgICBpZiAocmVjb3JkLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlQ2xhc3MocmVjb3JkLmtleSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlJdGVyYWJsZUNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKFxuICAgICAgICAocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKSA9PiB7IHRoaXMuX3RvZ2dsZUNsYXNzKHJlY29yZC5pdGVtLCB0cnVlKTsgfSk7XG4gICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oXG4gICAgICAgIChyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpID0+IHsgdGhpcy5fdG9nZ2xlQ2xhc3MocmVjb3JkLml0ZW0sIGZhbHNlKTsgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUluaXRpYWxDbGFzc2VzKGlzQ2xlYW51cDogYm9vbGVhbikge1xuICAgIHRoaXMuX2luaXRpYWxDbGFzc2VzLmZvckVhY2goY2xhc3NOYW1lID0+IHRoaXMuX3RvZ2dsZUNsYXNzKGNsYXNzTmFtZSwgIWlzQ2xlYW51cCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlDbGFzc2VzKHJhd0NsYXNzVmFsOiBzdHJpbmdbXSB8IFNldDxzdHJpbmc+fCB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2xlYW51cDogYm9vbGVhbikge1xuICAgIGlmIChpc1ByZXNlbnQocmF3Q2xhc3NWYWwpKSB7XG4gICAgICBpZiAoaXNBcnJheShyYXdDbGFzc1ZhbCkpIHtcbiAgICAgICAgKDxzdHJpbmdbXT5yYXdDbGFzc1ZhbCkuZm9yRWFjaChjbGFzc05hbWUgPT4gdGhpcy5fdG9nZ2xlQ2xhc3MoY2xhc3NOYW1lLCAhaXNDbGVhbnVwKSk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NsYXNzVmFsIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICg8U2V0PHN0cmluZz4+cmF3Q2xhc3NWYWwpLmZvckVhY2goY2xhc3NOYW1lID0+IHRoaXMuX3RvZ2dsZUNsYXNzKGNsYXNzTmFtZSwgIWlzQ2xlYW51cCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKDx7W2s6IHN0cmluZ106IGFueX0+cmF3Q2xhc3NWYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwVmFsOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1ByZXNlbnQoZXhwVmFsKSkgdGhpcy5fdG9nZ2xlQ2xhc3MoY2xhc3NOYW1lLCAhaXNDbGVhbnVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lLnRyaW0oKTtcbiAgICBpZiAoY2xhc3NOYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChjbGFzc05hbWUuaW5kZXhPZignICcpID4gLTEpIHtcbiAgICAgICAgdmFyIGNsYXNzZXMgPSBjbGFzc05hbWUuc3BsaXQoL1xccysvZyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudENsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCwgY2xhc3Nlc1tpXSwgZW5hYmxlZCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSwgZW5hYmxlZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require(\"../../facade/exceptions\");\r\n/**\r\n * The `NgFor` directive instantiates a template once per item from an iterable. The context for\r\n * each instantiated template inherits from the outer context with the given loop variable set\r\n * to the current item from the iterable.\r\n *\r\n * ### Local Variables\r\n *\r\n * `NgFor` provides several exported values that can be aliased to local variables:\r\n *\r\n * * `index` will be set to the current loop iteration for each template context.\r\n * * `first` will be set to a boolean value indicating whether the item is the first one in the\r\n * iteration.\r\n * * `last` will be set to a boolean value indicating whether the item is the last one in the\r\n * iteration.\r\n * * `even` will be set to a boolean value indicating whether this item has an even index.\r\n * * `odd` will be set to a boolean value indicating whether this item has an odd index.\r\n *\r\n * ### Change Propagation\r\n *\r\n * When the contents of the iterator changes, `NgFor` makes the corresponding changes to the DOM:\r\n *\r\n * * When an item is added, a new instance of the template is added to the DOM.\r\n * * When an item is removed, its template instance is removed from the DOM.\r\n * * When items are reordered, their respective templates are reordered in the DOM.\r\n * * Otherwise, the DOM element for that item will remain the same.\r\n *\r\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\r\n * those changes in the DOM. This has important implications for animations and any stateful\r\n * controls\r\n * (such as `<input>` elements which accept user input) that are present. Inserted rows can be\r\n * animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state such\r\n * as user input.\r\n *\r\n * It is possible for the identities of elements in the iterator to change while the data does not.\r\n * This can happen, for example, if the iterator produced from an RPC to the server, and that\r\n * RPC is re-run. Even if the data hasn't changed, the second response will produce objects with\r\n * different identities, and Angular will tear down the entire DOM and rebuild it (as if all old\r\n * elements were deleted and all new elements inserted). This is an expensive operation and should\r\n * be avoided if possible.\r\n *\r\n * ### Syntax\r\n *\r\n * - `<li *ngFor=\"let item of items; #i = index\">...</li>`\r\n * - `<li template=\"ngFor #item of items; #i = index\">...</li>`\r\n * - `<template ngFor #item [ngForOf]=\"items\" #i=\"index\"><li>...</li></template>`\r\n *\r\n * ### Example\r\n *\r\n * See a [live demo](http://plnkr.co/edit/KVuXxDp0qinGDyo307QW?p=preview) for a more detailed\r\n * example.\r\n */\r\nvar NgFor = (function () {\r\n function NgFor(_viewContainer, _templateRef, _iterableDiffers, _cdr) {\r\n this._viewContainer = _viewContainer;\r\n this._templateRef = _templateRef;\r\n this._iterableDiffers = _iterableDiffers;\r\n this._cdr = _cdr;\r\n }\r\n Object.defineProperty(NgFor.prototype, \"ngForOf\", {\r\n set: function (value) {\r\n this._ngForOf = value;\r\n if (lang_1.isBlank(this._differ) && lang_1.isPresent(value)) {\r\n try {\r\n this._differ = this._iterableDiffers.find(value).create(this._cdr, this._ngForTrackBy);\r\n }\r\n catch (e) {\r\n throw new exceptions_1.BaseException(\"Cannot find a differ supporting object '\" + value + \"' of type '\" + lang_1.getTypeNameForDebugging(value) + \"'. NgFor only supports binding to Iterables such as Arrays.\");\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFor.prototype, \"ngForTemplate\", {\r\n set: function (value) {\r\n if (lang_1.isPresent(value)) {\r\n this._templateRef = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFor.prototype, \"ngForTrackBy\", {\r\n set: function (value) { this._ngForTrackBy = value; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgFor.prototype.ngDoCheck = function () {\r\n if (lang_1.isPresent(this._differ)) {\r\n var changes = this._differ.diff(this._ngForOf);\r\n if (lang_1.isPresent(changes))\r\n this._applyChanges(changes);\r\n }\r\n };\r\n NgFor.prototype._applyChanges = function (changes) {\r\n var _this = this;\r\n // TODO(rado): check if change detection can produce a change record that is\r\n // easier to consume than current.\r\n var recordViewTuples = [];\r\n changes.forEachRemovedItem(function (removedRecord) {\r\n return recordViewTuples.push(new RecordViewTuple(removedRecord, null));\r\n });\r\n changes.forEachMovedItem(function (movedRecord) {\r\n return recordViewTuples.push(new RecordViewTuple(movedRecord, null));\r\n });\r\n var insertTuples = this._bulkRemove(recordViewTuples);\r\n changes.forEachAddedItem(function (addedRecord) {\r\n return insertTuples.push(new RecordViewTuple(addedRecord, null));\r\n });\r\n this._bulkInsert(insertTuples);\r\n for (var i = 0; i < insertTuples.length; i++) {\r\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\r\n }\r\n for (var i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\r\n var viewRef = this._viewContainer.get(i);\r\n viewRef.setLocal('first', i === 0);\r\n viewRef.setLocal('last', i === ilen - 1);\r\n }\r\n changes.forEachIdentityChange(function (record) {\r\n var viewRef = _this._viewContainer.get(record.currentIndex);\r\n viewRef.setLocal('\\$implicit', record.item);\r\n });\r\n };\r\n NgFor.prototype._perViewChange = function (view, record) {\r\n view.setLocal('\\$implicit', record.item);\r\n view.setLocal('index', record.currentIndex);\r\n view.setLocal('even', (record.currentIndex % 2 == 0));\r\n view.setLocal('odd', (record.currentIndex % 2 == 1));\r\n };\r\n NgFor.prototype._bulkRemove = function (tuples) {\r\n tuples.sort(function (a, b) {\r\n return a.record.previousIndex - b.record.previousIndex;\r\n });\r\n var movedTuples = [];\r\n for (var i = tuples.length - 1; i >= 0; i--) {\r\n var tuple = tuples[i];\r\n // separate moved views from removed views.\r\n if (lang_1.isPresent(tuple.record.currentIndex)) {\r\n tuple.view = this._viewContainer.detach(tuple.record.previousIndex);\r\n movedTuples.push(tuple);\r\n }\r\n else {\r\n this._viewContainer.remove(tuple.record.previousIndex);\r\n }\r\n }\r\n return movedTuples;\r\n };\r\n NgFor.prototype._bulkInsert = function (tuples) {\r\n tuples.sort(function (a, b) { return a.record.currentIndex - b.record.currentIndex; });\r\n for (var i = 0; i < tuples.length; i++) {\r\n var tuple = tuples[i];\r\n if (lang_1.isPresent(tuple.view)) {\r\n this._viewContainer.insert(tuple.view, tuple.record.currentIndex);\r\n }\r\n else {\r\n tuple.view =\r\n this._viewContainer.createEmbeddedView(this._templateRef, tuple.record.currentIndex);\r\n }\r\n }\r\n return tuples;\r\n };\r\n NgFor = __decorate([\r\n core_1.Directive({ selector: '[ngFor][ngForOf]', inputs: ['ngForTrackBy', 'ngForOf', 'ngForTemplate'] }), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, core_1.IterableDiffers, core_1.ChangeDetectorRef])\r\n ], NgFor);\r\n return NgFor;\r\n}());\r\nexports.NgFor = NgFor;\r\nvar RecordViewTuple = (function () {\r\n function RecordViewTuple(record, view) {\r\n this.record = record;\r\n this.view = view;\r\n }\r\n return RecordViewTuple;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX2Zvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBVU8sZUFBZSxDQUFDLENBQUE7QUFDdkIscUJBQXFFLDBCQUEwQixDQUFDLENBQUE7QUFLaEcsMkJBQTRCLHlCQUF5QixDQUFDLENBQUE7QUFFdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUg7SUFPRSxlQUFvQixjQUFnQyxFQUFVLFlBQXlCLEVBQ25FLGdCQUFpQyxFQUFVLElBQXVCO1FBRGxFLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ25FLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFtQjtJQUFHLENBQUM7SUFFMUYsc0JBQUksMEJBQU87YUFBWCxVQUFZLEtBQVU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsRUFBRSxDQUFDLENBQUMsY0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3pGLENBQUU7Z0JBQUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDWCxNQUFNLElBQUksMEJBQWEsQ0FDbkIsNkNB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LENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0YsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUEzR0g7UUFBQyxnQkFBUyxDQUFDLEVBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLEVBQUMsQ0FBQzs7YUFBQTtJQTRHaEcsWUFBQztBQUFELENBQUMsQUEzR0QsSUEyR0M7QUEzR1ksYUFBSyxRQTJHakIsQ0FBQTtBQUVEO0lBR0UseUJBQVksTUFBVyxFQUFFLElBQXFCO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFQRCxJQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRG9DaGVjayxcbiAgRGlyZWN0aXZlLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgSXRlcmFibGVEaWZmZXIsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgVHJhY2tCeUZuXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIHN0cmluZ2lmeSwgZ2V0VHlwZU5hbWVGb3JEZWJ1Z2dpbmd9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1xuICBEZWZhdWx0SXRlcmFibGVEaWZmZXIsXG4gIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmRcbn0gZnJvbSBcIi4uLy4uL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9kaWZmZXJzL2RlZmF1bHRfaXRlcmFibGVfZGlmZmVyXCI7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gXCIuLi8uLi9mYWNhZGUvZXhjZXB0aW9uc1wiO1xuXG4vKipcbiAqIFRoZSBgTmdGb3JgIGRpcmVjdGl2ZSBpbnN0YW50aWF0ZXMgYSB0ZW1wbGF0ZSBvbmNlIHBlciBpdGVtIGZyb20gYW4gaXRlcmFibGUuIFRoZSBjb250ZXh0IGZvclxuICogZWFjaCBpbnN0YW50aWF0ZWQgdGVtcGxhdGUgaW5oZXJpdHMgZnJvbSB0aGUgb3V0ZXIgY29udGV4dCB3aXRoIHRoZSBnaXZlbiBsb29wIHZhcmlhYmxlIHNldFxuICogdG8gdGhlIGN1cnJlbnQgaXRlbSBmcm9tIHRoZSBpdGVyYWJsZS5cbiAqXG4gKiAjIyMgTG9jYWwgVmFyaWFibGVzXG4gKlxuICogYE5nRm9yYCBwcm92aWRlcyBzZXZlcmFsIGV4cG9ydGVkIHZhbHVlcyB0aGF0IGNhbiBiZSBhbGlhc2VkIHRvIGxvY2FsIHZhcmlhYmxlczpcbiAqXG4gKiAqIGBpbmRleGAgd2lsbCBiZSBzZXQgdG8gdGhlIGN1cnJlbnQgbG9vcCBpdGVyYXRpb24gZm9yIGVhY2ggdGVtcGxhdGUgY29udGV4dC5cbiAqICogYGZpcnN0YCB3aWxsIGJlIHNldCB0byBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBpdGVtIGlzIHRoZSBmaXJzdCBvbmUgaW4gdGhlXG4gKiAgIGl0ZXJhdGlvbi5cbiAqICogYGxhc3RgIHdpbGwgYmUgc2V0IHRvIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGl0ZW0gaXMgdGhlIGxhc3Qgb25lIGluIHRoZVxuICogICBpdGVyYXRpb24uXG4gKiAqIGBldmVuYCB3aWxsIGJlIHNldCB0byBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgaXRlbSBoYXMgYW4gZXZlbiBpbmRleC5cbiAqICogYG9kZGAgd2lsbCBiZSBzZXQgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGl0ZW0gaGFzIGFuIG9kZCBpbmRleC5cbiAqXG4gKiAjIyMgQ2hhbmdlIFByb3BhZ2F0aW9uXG4gKlxuICogV2hlbiB0aGUgY29udGVudHMgb2YgdGhlIGl0ZXJhdG9yIGNoYW5nZXMsIGBOZ0ZvcmAgbWFrZXMgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbmdlcyB0byB0aGUgRE9NOlxuICpcbiAqICogV2hlbiBhbiBpdGVtIGlzIGFkZGVkLCBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgdGVtcGxhdGUgaXMgYWRkZWQgdG8gdGhlIERPTS5cbiAqICogV2hlbiBhbiBpdGVtIGlzIHJlbW92ZWQsIGl0cyB0ZW1wbGF0ZSBpbnN0YW5jZSBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAqICogV2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkLCB0aGVpciByZXNwZWN0aXZlIHRlbXBsYXRlcyBhcmUgcmVvcmRlcmVkIGluIHRoZSBET00uXG4gKiAqIE90aGVyd2lzZSwgdGhlIERPTSBlbGVtZW50IGZvciB0aGF0IGl0ZW0gd2lsbCByZW1haW4gdGhlIHNhbWUuXG4gKlxuICogQW5ndWxhciB1c2VzIG9iamVjdCBpZGVudGl0eSB0byB0cmFjayBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMgd2l0aGluIHRoZSBpdGVyYXRvciBhbmQgcmVwcm9kdWNlXG4gKiB0aG9zZSBjaGFuZ2VzIGluIHRoZSBET00uIFRoaXMgaGFzIGltcG9ydGFudCBpbXBsaWNhdGlvbnMgZm9yIGFuaW1hdGlvbnMgYW5kIGFueSBzdGF0ZWZ1bFxuICogY29udHJvbHNcbiAqIChzdWNoIGFzIGA8aW5wdXQ+YCBlbGVtZW50cyB3aGljaCBhY2NlcHQgdXNlciBpbnB1dCkgdGhhdCBhcmUgcHJlc2VudC4gSW5zZXJ0ZWQgcm93cyBjYW4gYmVcbiAqIGFuaW1hdGVkIGluLCBkZWxldGVkIHJvd3MgY2FuIGJlIGFuaW1hdGVkIG91dCwgYW5kIHVuY2hhbmdlZCByb3dzIHJldGFpbiBhbnkgdW5zYXZlZCBzdGF0ZSBzdWNoXG4gKiBhcyB1c2VyIGlucHV0LlxuICpcbiAqIEl0IGlzIHBvc3NpYmxlIGZvciB0aGUgaWRlbnRpdGllcyBvZiBlbGVtZW50cyBpbiB0aGUgaXRlcmF0b3IgdG8gY2hhbmdlIHdoaWxlIHRoZSBkYXRhIGRvZXMgbm90LlxuICogVGhpcyBjYW4gaGFwcGVuLCBmb3IgZXhhbXBsZSwgaWYgdGhlIGl0ZXJhdG9yIHByb2R1Y2VkIGZyb20gYW4gUlBDIHRvIHRoZSBzZXJ2ZXIsIGFuZCB0aGF0XG4gKiBSUEMgaXMgcmUtcnVuLiBFdmVuIGlmIHRoZSBkYXRhIGhhc24ndCBjaGFuZ2VkLCB0aGUgc2Vjb25kIHJlc3BvbnNlIHdpbGwgcHJvZHVjZSBvYmplY3RzIHdpdGhcbiAqIGRpZmZlcmVudCBpZGVudGl0aWVzLCBhbmQgQW5ndWxhciB3aWxsIHRlYXIgZG93biB0aGUgZW50aXJlIERPTSBhbmQgcmVidWlsZCBpdCAoYXMgaWYgYWxsIG9sZFxuICogZWxlbWVudHMgd2VyZSBkZWxldGVkIGFuZCBhbGwgbmV3IGVsZW1lbnRzIGluc2VydGVkKS4gVGhpcyBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIGFuZCBzaG91bGRcbiAqIGJlIGF2b2lkZWQgaWYgcG9zc2libGUuXG4gKlxuICogIyMjIFN5bnRheFxuICpcbiAqIC0gYDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgI2kgPSBpbmRleFwiPi4uLjwvbGk+YFxuICogLSBgPGxpIHRlbXBsYXRlPVwibmdGb3IgI2l0ZW0gb2YgaXRlbXM7ICNpID0gaW5kZXhcIj4uLi48L2xpPmBcbiAqIC0gYDx0ZW1wbGF0ZSBuZ0ZvciAjaXRlbSBbbmdGb3JPZl09XCJpdGVtc1wiICNpPVwiaW5kZXhcIj48bGk+Li4uPC9saT48L3RlbXBsYXRlPmBcbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFNlZSBhIFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0tWdVh4RHAwcWluR0R5bzMwN1FXP3A9cHJldmlldykgZm9yIGEgbW9yZSBkZXRhaWxlZFxuICogZXhhbXBsZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdGb3JdW25nRm9yT2ZdJywgaW5wdXRzOiBbJ25nRm9yVHJhY2tCeScsICduZ0Zvck9mJywgJ25nRm9yVGVtcGxhdGUnXX0pXG5leHBvcnQgY2xhc3MgTmdGb3IgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmdGb3JPZjogYW55O1xuICAvKiogQGludGVybmFsICovXG4gIF9uZ0ZvclRyYWNrQnk6IFRyYWNrQnlGbjtcbiAgcHJpdmF0ZSBfZGlmZmVyOiBJdGVyYWJsZURpZmZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIF90ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2l0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLCBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHNldCBuZ0Zvck9mKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9uZ0Zvck9mID0gdmFsdWU7XG4gICAgaWYgKGlzQmxhbmsodGhpcy5fZGlmZmVyKSAmJiBpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9kaWZmZXIgPSB0aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh2YWx1ZSkuY3JlYXRlKHRoaXMuX2NkciwgdGhpcy5fbmdGb3JUcmFja0J5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgICBgQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyR7dmFsdWV9JyBvZiB0eXBlICcke2dldFR5cGVOYW1lRm9yRGVidWdnaW5nKHZhbHVlKX0nLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldCBuZ0ZvclRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZikge1xuICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICB0aGlzLl90ZW1wbGF0ZVJlZiA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHNldCBuZ0ZvclRyYWNrQnkodmFsdWU6IFRyYWNrQnlGbikgeyB0aGlzLl9uZ0ZvclRyYWNrQnkgPSB2YWx1ZTsgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2RpZmZlcikpIHtcbiAgICAgIHZhciBjaGFuZ2VzID0gdGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdGb3JPZik7XG4gICAgICBpZiAoaXNQcmVzZW50KGNoYW5nZXMpKSB0aGlzLl9hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlDaGFuZ2VzKGNoYW5nZXM6IERlZmF1bHRJdGVyYWJsZURpZmZlcikge1xuICAgIC8vIFRPRE8ocmFkbyk6IGNoZWNrIGlmIGNoYW5nZSBkZXRlY3Rpb24gY2FuIHByb2R1Y2UgYSBjaGFuZ2UgcmVjb3JkIHRoYXQgaXNcbiAgICAvLyBlYXNpZXIgdG8gY29uc3VtZSB0aGFuIGN1cnJlbnQuXG4gICAgdmFyIHJlY29yZFZpZXdUdXBsZXM6IFJlY29yZFZpZXdUdXBsZVtdID0gW107XG4gICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlbW92ZWRSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZFZpZXdUdXBsZXMucHVzaChuZXcgUmVjb3JkVmlld1R1cGxlKHJlbW92ZWRSZWNvcmQsIG51bGwpKSk7XG5cbiAgICBjaGFuZ2VzLmZvckVhY2hNb3ZlZEl0ZW0oKG1vdmVkUmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmlld1R1cGxlcy5wdXNoKG5ldyBSZWNvcmRWaWV3VHVwbGUobW92ZWRSZWNvcmQsIG51bGwpKSk7XG5cbiAgICB2YXIgaW5zZXJ0VHVwbGVzID0gdGhpcy5fYnVsa1JlbW92ZShyZWNvcmRWaWV3VHVwbGVzKTtcblxuICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgoYWRkZWRSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRUdXBsZXMucHVzaChuZXcgUmVjb3JkVmlld1R1cGxlKGFkZGVkUmVjb3JkLCBudWxsKSkpO1xuXG4gICAgdGhpcy5fYnVsa0luc2VydChpbnNlcnRUdXBsZXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnNlcnRUdXBsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuX3BlclZpZXdDaGFuZ2UoaW5zZXJ0VHVwbGVzW2ldLnZpZXcsIGluc2VydFR1cGxlc1tpXS5yZWNvcmQpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwLCBpbGVuID0gdGhpcy5fdmlld0NvbnRhaW5lci5sZW5ndGg7IGkgPCBpbGVuOyBpKyspIHtcbiAgICAgIHZhciB2aWV3UmVmID0gPEVtYmVkZGVkVmlld1JlZj50aGlzLl92aWV3Q29udGFpbmVyLmdldChpKTtcbiAgICAgIHZpZXdSZWYuc2V0TG9jYWwoJ2ZpcnN0JywgaSA9PT0gMCk7XG4gICAgICB2aWV3UmVmLnNldExvY2FsKCdsYXN0JywgaSA9PT0gaWxlbiAtIDEpO1xuICAgIH1cblxuICAgIGNoYW5nZXMuZm9yRWFjaElkZW50aXR5Q2hhbmdlKChyZWNvcmQpID0+IHtcbiAgICAgIHZhciB2aWV3UmVmID0gPEVtYmVkZGVkVmlld1JlZj50aGlzLl92aWV3Q29udGFpbmVyLmdldChyZWNvcmQuY3VycmVudEluZGV4KTtcbiAgICAgIHZpZXdSZWYuc2V0TG9jYWwoJ1xcJGltcGxpY2l0JywgcmVjb3JkLml0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGVyVmlld0NoYW5nZSh2aWV3OiBFbWJlZGRlZFZpZXdSZWYsIHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCkge1xuICAgIHZpZXcuc2V0TG9jYWwoJ1xcJGltcGxpY2l0JywgcmVjb3JkLml0ZW0pO1xuICAgIHZpZXcuc2V0TG9jYWwoJ2luZGV4JywgcmVjb3JkLmN1cnJlbnRJbmRleCk7XG4gICAgdmlldy5zZXRMb2NhbCgnZXZlbicsIChyZWNvcmQuY3VycmVudEluZGV4ICUgMiA9PSAwKSk7XG4gICAgdmlldy5zZXRMb2NhbCgnb2RkJywgKHJlY29yZC5jdXJyZW50SW5kZXggJSAyID09IDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1bGtSZW1vdmUodHVwbGVzOiBSZWNvcmRWaWV3VHVwbGVbXSk6IFJlY29yZFZpZXdUdXBsZVtdIHtcbiAgICB0dXBsZXMuc29ydCgoYTogUmVjb3JkVmlld1R1cGxlLCBiOiBSZWNvcmRWaWV3VHVwbGUpID0+XG4gICAgICAgICAgICAgICAgICAgIGEucmVjb3JkLnByZXZpb3VzSW5kZXggLSBiLnJlY29yZC5wcmV2aW91c0luZGV4KTtcbiAgICB2YXIgbW92ZWRUdXBsZXM6IFJlY29yZFZpZXdUdXBsZVtdID0gW107XG4gICAgZm9yICh2YXIgaSA9IHR1cGxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHR1cGxlID0gdHVwbGVzW2ldO1xuICAgICAgLy8gc2VwYXJhdGUgbW92ZWQgdmlld3MgZnJvbSByZW1vdmVkIHZpZXdzLlxuICAgICAgaWYgKGlzUHJlc2VudCh0dXBsZS5yZWNvcmQuY3VycmVudEluZGV4KSkge1xuICAgICAgICB0dXBsZS52aWV3ID0gPEVtYmVkZGVkVmlld1JlZj50aGlzLl92aWV3Q29udGFpbmVyLmRldGFjaCh0dXBsZS5yZWNvcmQucHJldmlvdXNJbmRleCk7XG4gICAgICAgIG1vdmVkVHVwbGVzLnB1c2godHVwbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lci5yZW1vdmUodHVwbGUucmVjb3JkLnByZXZpb3VzSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW92ZWRUdXBsZXM7XG4gIH1cblxuICBwcml2YXRlIF9idWxrSW5zZXJ0KHR1cGxlczogUmVjb3JkVmlld1R1cGxlW10pOiBSZWNvcmRWaWV3VHVwbGVbXSB7XG4gICAgdHVwbGVzLnNvcnQoKGEsIGIpID0+IGEucmVjb3JkLmN1cnJlbnRJbmRleCAtIGIucmVjb3JkLmN1cnJlbnRJbmRleCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0dXBsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0dXBsZSA9IHR1cGxlc1tpXTtcbiAgICAgIGlmIChpc1ByZXNlbnQodHVwbGUudmlldykpIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lci5pbnNlcnQodHVwbGUudmlldywgdHVwbGUucmVjb3JkLmN1cnJlbnRJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0dXBsZS52aWV3ID1cbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmLCB0dXBsZS5yZWNvcmQuY3VycmVudEluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR1cGxlcztcbiAgfVxufVxuXG5jbGFzcyBSZWNvcmRWaWV3VHVwbGUge1xuICB2aWV3OiBFbWJlZGRlZFZpZXdSZWY7XG4gIHJlY29yZDogYW55O1xuICBjb25zdHJ1Y3RvcihyZWNvcmQ6IGFueSwgdmlldzogRW1iZWRkZWRWaWV3UmVmKSB7XG4gICAgdGhpcy5yZWNvcmQgPSByZWNvcmQ7XG4gICAgdGhpcy52aWV3ID0gdmlldztcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Removes or recreates a portion of the DOM tree based on an {expression}.\r\n *\r\n * If the expression assigned to `ngIf` evaluates to a false value then the element\r\n * is removed from the DOM, otherwise a clone of the element is reinserted into the DOM.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/fe0kgemFBtmQOY31b4tw?p=preview)):\r\n *\r\n * ```\r\n * <div *ngIf=\"errorCount > 0\" class=\"error\">\r\n * <!-- Error message displayed when the errorCount property on the current context is greater\r\n * than 0. -->\r\n * {{errorCount}} errors detected\r\n * </div>\r\n * ```\r\n *\r\n * ### Syntax\r\n *\r\n * - `<div *ngIf=\"condition\">...</div>`\r\n * - `<div template=\"ngIf condition\">...</div>`\r\n * - `<template [ngIf]=\"condition\"><div>...</div></template>`\r\n */\r\nvar NgIf = (function () {\r\n function NgIf(_viewContainer, _templateRef) {\r\n this._viewContainer = _viewContainer;\r\n this._templateRef = _templateRef;\r\n this._prevCondition = null;\r\n }\r\n Object.defineProperty(NgIf.prototype, \"ngIf\", {\r\n set: function (newCondition /* boolean */) {\r\n if (newCondition && (lang_1.isBlank(this._prevCondition) || !this._prevCondition)) {\r\n this._prevCondition = true;\r\n this._viewContainer.createEmbeddedView(this._templateRef);\r\n }\r\n else if (!newCondition && (lang_1.isBlank(this._prevCondition) || this._prevCondition)) {\r\n this._prevCondition = false;\r\n this._viewContainer.clear();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgIf = __decorate([\r\n core_1.Directive({ selector: '[ngIf]', inputs: ['ngIf'] }), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef])\r\n ], NgIf);\r\n return NgIf;\r\n}());\r\nexports.NgIf = NgIf;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfaWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvbmdfaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUF1RCxlQUFlLENBQUMsQ0FBQTtBQUN2RSxxQkFBc0IsMEJBQTBCLENBQUMsQ0FBQTtBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUg7SUFHRSxjQUFvQixjQUFnQyxFQUFVLFlBQXlCO1FBQW5FLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBRi9FLG1CQUFjLEdBQVksSUFBSSxDQUFDO0lBRW1ELENBQUM7SUFFM0Ysc0JBQUksc0JBQUk7YUFBUixVQUFTLFlBQWlCLENBQUMsYUFBYTtZQUN0QyxFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxjQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxjQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDOzs7T0FBQTtJQWRIO1FBQUMsZ0JBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQzs7WUFBQTtJQWVsRCxXQUFDO0FBQUQsQ0FBQyxBQWRELElBY0M7QUFkWSxZQUFJLE9BY2hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIFJlbW92ZXMgb3IgcmVjcmVhdGVzIGEgcG9ydGlvbiBvZiB0aGUgRE9NIHRyZWUgYmFzZWQgb24gYW4ge2V4cHJlc3Npb259LlxuICpcbiAqIElmIHRoZSBleHByZXNzaW9uIGFzc2lnbmVkIHRvIGBuZ0lmYCBldmFsdWF0ZXMgdG8gYSBmYWxzZSB2YWx1ZSB0aGVuIHRoZSBlbGVtZW50XG4gKiBpcyByZW1vdmVkIGZyb20gdGhlIERPTSwgb3RoZXJ3aXNlIGEgY2xvbmUgb2YgdGhlIGVsZW1lbnQgaXMgcmVpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2ZlMGtnZW1GQnRtUU9ZMzFiNHR3P3A9cHJldmlldykpOlxuICpcbiAqIGBgYFxuICogPGRpdiAqbmdJZj1cImVycm9yQ291bnQgPiAwXCIgY2xhc3M9XCJlcnJvclwiPlxuICogICA8IS0tIEVycm9yIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gdGhlIGVycm9yQ291bnQgcHJvcGVydHkgb24gdGhlIGN1cnJlbnQgY29udGV4dCBpcyBncmVhdGVyXG4gKiB0aGFuIDAuIC0tPlxuICogICB7e2Vycm9yQ291bnR9fSBlcnJvcnMgZGV0ZWN0ZWRcbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogIyMjIFN5bnRheFxuICpcbiAqIC0gYDxkaXYgKm5nSWY9XCJjb25kaXRpb25cIj4uLi48L2Rpdj5gXG4gKiAtIGA8ZGl2IHRlbXBsYXRlPVwibmdJZiBjb25kaXRpb25cIj4uLi48L2Rpdj5gXG4gKiAtIGA8dGVtcGxhdGUgW25nSWZdPVwiY29uZGl0aW9uXCI+PGRpdj4uLi48L2Rpdj48L3RlbXBsYXRlPmBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdJZl0nLCBpbnB1dHM6IFsnbmdJZiddfSlcbmV4cG9ydCBjbGFzcyBOZ0lmIHtcbiAgcHJpdmF0ZSBfcHJldkNvbmRpdGlvbjogYm9vbGVhbiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmKSB7fVxuXG4gIHNldCBuZ0lmKG5ld0NvbmRpdGlvbjogYW55IC8qIGJvb2xlYW4gKi8pIHtcbiAgICBpZiAobmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMuX3ByZXZDb25kaXRpb24pIHx8ICF0aGlzLl9wcmV2Q29uZGl0aW9uKSkge1xuICAgICAgdGhpcy5fcHJldkNvbmRpdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZik7XG4gICAgfSBlbHNlIGlmICghbmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMuX3ByZXZDb25kaXRpb24pIHx8IHRoaXMuX3ByZXZDb25kaXRpb24pKSB7XG4gICAgICB0aGlzLl9wcmV2Q29uZGl0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Creates and inserts an embedded view based on a prepared `TemplateRef`.\r\n *\r\n * ### Syntax\r\n * - `<template [ngTemplateOutlet]=\"templateRefExpression\"></template>`\r\n */\r\nvar NgTemplateOutlet = (function () {\r\n function NgTemplateOutlet(_viewContainerRef) {\r\n this._viewContainerRef = _viewContainerRef;\r\n }\r\n Object.defineProperty(NgTemplateOutlet.prototype, \"ngTemplateOutlet\", {\r\n set: function (templateRef) {\r\n if (lang_1.isPresent(this._insertedViewRef)) {\r\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._insertedViewRef));\r\n }\r\n if (lang_1.isPresent(templateRef)) {\r\n this._insertedViewRef = this._viewContainerRef.createEmbeddedView(templateRef);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n __decorate([\r\n core_1.Input(), \r\n __metadata('design:type', core_1.TemplateRef), \r\n __metadata('design:paramtypes', [core_1.TemplateRef])\r\n ], NgTemplateOutlet.prototype, \"ngTemplateOutlet\", null);\r\n NgTemplateOutlet = __decorate([\r\n core_1.Directive({ selector: '[ngTemplateOutlet]' }), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef])\r\n ], NgTemplateOutlet);\r\n return NgTemplateOutlet;\r\n}());\r\nexports.NgTemplateOutlet = NgTemplateOutlet;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfdGVtcGxhdGVfb3V0bGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX3RlbXBsYXRlX291dGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBQXVFLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZGLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBRW5EOzs7OztHQUtHO0FBRUg7SUFHRSwwQkFBb0IsaUJBQW1DO1FBQW5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7SUFBRyxDQUFDO0lBRzNELHNCQUFJLDhDQUFnQjthQUFwQixVQUFxQixXQUF3QjtZQUMzQyxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUVELEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7UUFDSCxDQUFDOzs7T0FBQTtJQVREO1FBQUMsWUFBSyxFQUFFOzs7NERBQUE7SUFOVjtRQUFDLGdCQUFTLENBQUMsRUFBQyxRQUFRLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQzs7d0JBQUE7SUFnQjVDLHVCQUFDO0FBQUQsQ0FBQyxBQWZELElBZUM7QUFmWSx3QkFBZ0IsbUJBZTVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIFZpZXdSZWYsIFRlbXBsYXRlUmVmfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7aXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIGluc2VydHMgYW4gZW1iZWRkZWQgdmlldyBiYXNlZCBvbiBhIHByZXBhcmVkIGBUZW1wbGF0ZVJlZmAuXG4gKlxuICogIyMjIFN5bnRheFxuICogLSBgPHRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlUmVmRXhwcmVzc2lvblwiPjwvdGVtcGxhdGU+YFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ1RlbXBsYXRlT3V0bGV0XSd9KVxuZXhwb3J0IGNsYXNzIE5nVGVtcGxhdGVPdXRsZXQge1xuICBwcml2YXRlIF9pbnNlcnRlZFZpZXdSZWY6IFZpZXdSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICBASW5wdXQoKVxuICBzZXQgbmdUZW1wbGF0ZU91dGxldCh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWYpIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2luc2VydGVkVmlld1JlZikpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYucmVtb3ZlKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl9pbnNlcnRlZFZpZXdSZWYpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KHRlbXBsYXRlUmVmKSkge1xuICAgICAgdGhpcy5faW5zZXJ0ZWRWaWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGVSZWYpO1xuICAgIH1cbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * The `NgStyle` directive changes styles based on a result of expression evaluation.\r\n *\r\n * An expression assigned to the `ngStyle` property must evaluate to an object and the\r\n * corresponding element styles are updated based on changes to this object. Style names to update\r\n * are taken from the object's keys, and values - from the corresponding object's values.\r\n *\r\n * ### Syntax\r\n *\r\n * - `<div [ngStyle]=\"{'font-style': style}\"></div>`\r\n * - `<div [ngStyle]=\"styleExp\"></div>` - here the `styleExp` must evaluate to an object\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/YamGS6GkUh9GqWNQhCyM?p=preview)):\r\n *\r\n * ```\r\n * import {Component} from 'angular2/core';\r\n * import {NgStyle} from 'angular2/common';\r\n *\r\n * @Component({\r\n * selector: 'ngStyle-example',\r\n * template: `\r\n * <h1 [ngStyle]=\"{'font-style': style, 'font-size': size, 'font-weight': weight}\">\r\n * Change style of this text!\r\n * </h1>\r\n *\r\n * <hr>\r\n *\r\n * <label>Italic: <input type=\"checkbox\" (change)=\"changeStyle($event)\"></label>\r\n * <label>Bold: <input type=\"checkbox\" (change)=\"changeWeight($event)\"></label>\r\n * <label>Size: <input type=\"text\" [value]=\"size\" (change)=\"size = $event.target.value\"></label>\r\n * `,\r\n * directives: [NgStyle]\r\n * })\r\n * export class NgStyleExample {\r\n * style = 'normal';\r\n * weight = 'normal';\r\n * size = '20px';\r\n *\r\n * changeStyle($event: any) {\r\n * this.style = $event.target.checked ? 'italic' : 'normal';\r\n * }\r\n *\r\n * changeWeight($event: any) {\r\n * this.weight = $event.target.checked ? 'bold' : 'normal';\r\n * }\r\n * }\r\n * ```\r\n *\r\n * In this example the `font-style`, `font-size` and `font-weight` styles will be updated\r\n * based on the `style` property's value changes.\r\n */\r\nvar NgStyle = (function () {\r\n function NgStyle(_differs, _ngEl, _renderer) {\r\n this._differs = _differs;\r\n this._ngEl = _ngEl;\r\n this._renderer = _renderer;\r\n }\r\n Object.defineProperty(NgStyle.prototype, \"rawStyle\", {\r\n set: function (v) {\r\n this._rawStyle = v;\r\n if (lang_1.isBlank(this._differ) && lang_1.isPresent(v)) {\r\n this._differ = this._differs.find(this._rawStyle).create(null);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgStyle.prototype.ngDoCheck = function () {\r\n if (lang_1.isPresent(this._differ)) {\r\n var changes = this._differ.diff(this._rawStyle);\r\n if (lang_1.isPresent(changes)) {\r\n this._applyChanges(changes);\r\n }\r\n }\r\n };\r\n NgStyle.prototype._applyChanges = function (changes) {\r\n var _this = this;\r\n changes.forEachAddedItem(function (record) { _this._setStyle(record.key, record.currentValue); });\r\n changes.forEachChangedItem(function (record) { _this._setStyle(record.key, record.currentValue); });\r\n changes.forEachRemovedItem(function (record) { _this._setStyle(record.key, null); });\r\n };\r\n NgStyle.prototype._setStyle = function (name, val) {\r\n this._renderer.setElementStyle(this._ngEl.nativeElement, name, val);\r\n };\r\n NgStyle = __decorate([\r\n core_1.Directive({ selector: '[ngStyle]', inputs: ['rawStyle: ngStyle'] }), \r\n __metadata('design:paramtypes', [core_1.KeyValueDiffers, core_1.ElementRef, core_1.Renderer])\r\n ], NgStyle);\r\n return NgStyle;\r\n}());\r\nexports.NgStyle = NgStyle;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfc3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvbmdfc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQU9PLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZCLHFCQUF3QywwQkFBMEIsQ0FBQyxDQUFBO0FBR25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtERztBQUVIO0lBTUUsaUJBQW9CLFFBQXlCLEVBQVUsS0FBaUIsRUFDcEQsU0FBbUI7UUFEbkIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ3BELGNBQVMsR0FBVCxTQUFTLENBQVU7SUFBRyxDQUFDO0lBRTNDLHNCQUFJLDZCQUFRO2FBQVosVUFBYSxDQUEwQjtZQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUM7OztPQUFBO0lBRUQsMkJBQVMsR0FBVDtRQUNFLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sK0JBQWEsR0FBckIsVUFBc0IsT0FBWTtRQUFsQyxpQkFPQztRQU5DLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDcEIsVUFBQyxNQUE0QixJQUFPLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RixPQUFPLENBQUMsa0JBQWtCLENBQ3RCLFVBQUMsTUFBNEIsSUFBTyxLQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUYsT0FBTyxDQUFDLGtCQUFrQixDQUN0QixVQUFDLE1BQTRCLElBQU8sS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLDJCQUFTLEdBQWpCLFVBQWtCLElBQVksRUFBRSxHQUFXO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBckNIO1FBQUMsZ0JBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBQyxDQUFDOztlQUFBO0lBc0NsRSxjQUFDO0FBQUQsQ0FBQyxBQXJDRCxJQXFDQztBQXJDWSxlQUFPLFVBcUNuQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRG9DaGVjayxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgRWxlbWVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBSZW5kZXJlclxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBwcmludH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7S2V5VmFsdWVDaGFuZ2VSZWNvcmR9IGZyb20gXCIuLi8uLi9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9kZWZhdWx0X2tleXZhbHVlX2RpZmZlclwiO1xuXG4vKipcbiAqIFRoZSBgTmdTdHlsZWAgZGlyZWN0aXZlIGNoYW5nZXMgc3R5bGVzIGJhc2VkIG9uIGEgcmVzdWx0IG9mIGV4cHJlc3Npb24gZXZhbHVhdGlvbi5cbiAqXG4gKiBBbiBleHByZXNzaW9uIGFzc2lnbmVkIHRvIHRoZSBgbmdTdHlsZWAgcHJvcGVydHkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgYW5kIHRoZVxuICogY29ycmVzcG9uZGluZyBlbGVtZW50IHN0eWxlcyBhcmUgdXBkYXRlZCBiYXNlZCBvbiBjaGFuZ2VzIHRvIHRoaXMgb2JqZWN0LiBTdHlsZSBuYW1lcyB0byB1cGRhdGVcbiAqIGFyZSB0YWtlbiBmcm9tIHRoZSBvYmplY3QncyBrZXlzLCBhbmQgdmFsdWVzIC0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBvYmplY3QncyB2YWx1ZXMuXG4gKlxuICogIyMjIFN5bnRheFxuICpcbiAqIC0gYDxkaXYgW25nU3R5bGVdPVwieydmb250LXN0eWxlJzogc3R5bGV9XCI+PC9kaXY+YFxuICogLSBgPGRpdiBbbmdTdHlsZV09XCJzdHlsZUV4cFwiPjwvZGl2PmAgLSBoZXJlIHRoZSBgc3R5bGVFeHBgIG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0XG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1lhbUdTNkdrVWg5R3FXTlFoQ3lNP3A9cHJldmlldykpOlxuICpcbiAqIGBgYFxuICogaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuICogaW1wb3J0IHtOZ1N0eWxlfSBmcm9tICdhbmd1bGFyMi9jb21tb24nO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogIHNlbGVjdG9yOiAnbmdTdHlsZS1leGFtcGxlJyxcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPGgxIFtuZ1N0eWxlXT1cInsnZm9udC1zdHlsZSc6IHN0eWxlLCAnZm9udC1zaXplJzogc2l6ZSwgJ2ZvbnQtd2VpZ2h0Jzogd2VpZ2h0fVwiPlxuICogICAgICBDaGFuZ2Ugc3R5bGUgb2YgdGhpcyB0ZXh0IVxuICogICAgPC9oMT5cbiAqXG4gKiAgICA8aHI+XG4gKlxuICogICAgPGxhYmVsPkl0YWxpYzogPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlU3R5bGUoJGV2ZW50KVwiPjwvbGFiZWw+XG4gKiAgICA8bGFiZWw+Qm9sZDogPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlV2VpZ2h0KCRldmVudClcIj48L2xhYmVsPlxuICogICAgPGxhYmVsPlNpemU6IDxpbnB1dCB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJzaXplXCIgKGNoYW5nZSk9XCJzaXplID0gJGV2ZW50LnRhcmdldC52YWx1ZVwiPjwvbGFiZWw+XG4gKiAgYCxcbiAqICBkaXJlY3RpdmVzOiBbTmdTdHlsZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTmdTdHlsZUV4YW1wbGUge1xuICogICAgc3R5bGUgPSAnbm9ybWFsJztcbiAqICAgIHdlaWdodCA9ICdub3JtYWwnO1xuICogICAgc2l6ZSA9ICcyMHB4JztcbiAqXG4gKiAgICBjaGFuZ2VTdHlsZSgkZXZlbnQ6IGFueSkge1xuICogICAgICB0aGlzLnN0eWxlID0gJGV2ZW50LnRhcmdldC5jaGVja2VkID8gJ2l0YWxpYycgOiAnbm9ybWFsJztcbiAqICAgIH1cbiAqXG4gKiAgICBjaGFuZ2VXZWlnaHQoJGV2ZW50OiBhbnkpIHtcbiAqICAgICAgdGhpcy53ZWlnaHQgPSAkZXZlbnQudGFyZ2V0LmNoZWNrZWQgPyAnYm9sZCcgOiAnbm9ybWFsJztcbiAqICAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSB0aGUgYGZvbnQtc3R5bGVgLCBgZm9udC1zaXplYCBhbmQgYGZvbnQtd2VpZ2h0YCBzdHlsZXMgd2lsbCBiZSB1cGRhdGVkXG4gKiBiYXNlZCBvbiB0aGUgYHN0eWxlYCBwcm9wZXJ0eSdzIHZhbHVlIGNoYW5nZXMuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nU3R5bGVdJywgaW5wdXRzOiBbJ3Jhd1N0eWxlOiBuZ1N0eWxlJ119KVxuZXhwb3J0IGNsYXNzIE5nU3R5bGUgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmF3U3R5bGU6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICAvKiogQGludGVybmFsICovXG4gIF9kaWZmZXI6IEtleVZhbHVlRGlmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycywgcHJpdmF0ZSBfbmdFbDogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyKSB7fVxuXG4gIHNldCByYXdTdHlsZSh2OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkge1xuICAgIHRoaXMuX3Jhd1N0eWxlID0gdjtcbiAgICBpZiAoaXNCbGFuayh0aGlzLl9kaWZmZXIpICYmIGlzUHJlc2VudCh2KSkge1xuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKHRoaXMuX3Jhd1N0eWxlKS5jcmVhdGUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fZGlmZmVyKSkge1xuICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9yYXdTdHlsZSk7XG4gICAgICBpZiAoaXNQcmVzZW50KGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKFxuICAgICAgICAocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkgPT4geyB0aGlzLl9zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKTsgfSk7XG4gICAgY2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oXG4gICAgICAgIChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSA9PiB7IHRoaXMuX3NldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpOyB9KTtcbiAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbShcbiAgICAgICAgKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpID0+IHsgdGhpcy5fc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCk7IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U3R5bGUobmFtZTogc3RyaW5nLCB2YWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsIG5hbWUsIHZhbCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar metadata_1 = require('angular2/src/core/di/metadata');\r\n/**\r\n * Specifies that a constant attribute value should be injected.\r\n *\r\n * The directive can inject constant string literals of host element attributes.\r\n *\r\n * ### Example\r\n *\r\n * Suppose we have an `<input>` element and want to know its `type`.\r\n *\r\n * ```html\r\n * <input type=\"text\">\r\n * ```\r\n *\r\n * A decorator can inject string literal `text` like so:\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\r\n */\r\nvar AttributeMetadata = (function (_super) {\r\n __extends(AttributeMetadata, _super);\r\n function AttributeMetadata(attributeName) {\r\n _super.call(this);\r\n this.attributeName = attributeName;\r\n }\r\n Object.defineProperty(AttributeMetadata.prototype, \"token\", {\r\n get: function () {\r\n // Normally one would default a token to a type of an injected value but here\r\n // the type of a variable is \"string\" and we can't use primitive type as a return value\r\n // so we use instance of Attribute instead. This doesn't matter much in practice as arguments\r\n // with @Attribute annotation are injected by ElementInjector that doesn't take tokens into\r\n // account.\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AttributeMetadata.prototype.toString = function () { return \"@Attribute(\" + lang_1.stringify(this.attributeName) + \")\"; };\r\n AttributeMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], AttributeMetadata);\r\n return AttributeMetadata;\r\n}(metadata_1.DependencyMetadata));\r\nexports.AttributeMetadata = AttributeMetadata;\r\n/**\r\n * Declares an injectable parameter to be a live list of directives or variable\r\n * bindings from the content children of a directive.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/lY9m8HLy7z06vDoUaSN2?p=preview))\r\n *\r\n * Assume that `<tabs>` component would like to get a list its children `<pane>`\r\n * components as shown in this example:\r\n *\r\n * ```html\r\n * <tabs>\r\n * <pane title=\"Overview\">...</pane>\r\n * <pane *ngFor=\"let o of objects\" [title]=\"o.title\">{{o.text}}</pane>\r\n * </tabs>\r\n * ```\r\n *\r\n * The preferred solution is to query for `Pane` directives using this decorator.\r\n *\r\n * ```javascript\r\n * @Component({\r\n * selector: 'pane',\r\n * inputs: ['title']\r\n * })\r\n * class Pane {\r\n * title:string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'tabs',\r\n * template: `\r\n * <ul>\r\n * <li *ngFor=\"let pane of panes\">{{pane.title}}</li>\r\n * </ul>\r\n * <ng-content></ng-content>\r\n * `\r\n * })\r\n * class Tabs {\r\n * panes: QueryList<Pane>;\r\n * constructor(@Query(Pane) panes:QueryList<Pane>) {\r\n * this.panes = panes;\r\n * }\r\n * }\r\n * ```\r\n *\r\n * A query can look for variable bindings by passing in a string with desired binding symbol.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/sT2j25cH1dURAyBRCKx1?p=preview))\r\n * ```html\r\n * <seeker>\r\n * <div #findme>...</div>\r\n * </seeker>\r\n *\r\n * @Component({ selector: 'seeker' })\r\n * class Seeker {\r\n * constructor(@Query('findme') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * In this case the object that is injected depend on the type of the variable\r\n * binding. It can be an ElementRef, a directive or a component.\r\n *\r\n * Passing in a comma separated list of variable bindings will query for all of them.\r\n *\r\n * ```html\r\n * <seeker>\r\n * <div #find-me>...</div>\r\n * <div #find-me-too>...</div>\r\n * </seeker>\r\n *\r\n * @Component({\r\n * selector: 'seeker'\r\n * })\r\n * class Seeker {\r\n * constructor(@Query('findMe, findMeToo') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * Configure whether query looks for direct children or all descendants\r\n * of the querying element, by using the `descendants` parameter.\r\n * It is set to `false` by default.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/wtGeB977bv7qvA5FTYl9?p=preview))\r\n * ```html\r\n * <container #first>\r\n * <item>a</item>\r\n * <item>b</item>\r\n * <container #second>\r\n * <item>c</item>\r\n * </container>\r\n * </container>\r\n * ```\r\n *\r\n * When querying for items, the first container will see only `a` and `b` by default,\r\n * but with `Query(TextDirective, {descendants: true})` it will see `c` too.\r\n *\r\n * The queried directives are kept in a depth-first pre-order with respect to their\r\n * positions in the DOM.\r\n *\r\n * Query does not look deep into any subcomponent views.\r\n *\r\n * Query is updated as part of the change-detection cycle. Since change detection\r\n * happens after construction of a directive, QueryList will always be empty when observed in the\r\n * constructor.\r\n *\r\n * The injected object is an unmodifiable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nvar QueryMetadata = (function (_super) {\r\n __extends(QueryMetadata, _super);\r\n function QueryMetadata(_selector, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.descendants, descendants = _c === void 0 ? false : _c, _d = _b.first, first = _d === void 0 ? false : _d, _e = _b.read, read = _e === void 0 ? null : _e;\r\n _super.call(this);\r\n this._selector = _selector;\r\n this.descendants = descendants;\r\n this.first = first;\r\n this.read = read;\r\n }\r\n Object.defineProperty(QueryMetadata.prototype, \"isViewQuery\", {\r\n /**\r\n * always `false` to differentiate it with {@link ViewQueryMetadata}.\r\n */\r\n get: function () { return false; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryMetadata.prototype, \"selector\", {\r\n /**\r\n * what this is querying for.\r\n */\r\n get: function () { return di_1.resolveForwardRef(this._selector); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryMetadata.prototype, \"isVarBindingQuery\", {\r\n /**\r\n * whether this is querying for a variable binding or a directive.\r\n */\r\n get: function () { return lang_1.isString(this.selector); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryMetadata.prototype, \"varBindings\", {\r\n /**\r\n * returns a list of variable bindings this is querying for.\r\n * Only applicable if this is a variable bindings query.\r\n */\r\n get: function () { return this.selector.split(','); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n QueryMetadata.prototype.toString = function () { return \"@Query(\" + lang_1.stringify(this.selector) + \")\"; };\r\n QueryMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], QueryMetadata);\r\n return QueryMetadata;\r\n}(metadata_1.DependencyMetadata));\r\nexports.QueryMetadata = QueryMetadata;\r\n// TODO: add an example after ContentChildren and ViewChildren are in master\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChildren(ChildDirective) contentChildren: QueryList<ChildDirective>;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChildren is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ContentChildrenMetadata = (function (_super) {\r\n __extends(ContentChildrenMetadata, _super);\r\n function ContentChildrenMetadata(_selector, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.descendants, descendants = _c === void 0 ? false : _c, _d = _b.read, read = _d === void 0 ? null : _d;\r\n _super.call(this, _selector, { descendants: descendants, read: read });\r\n }\r\n ContentChildrenMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ContentChildrenMetadata);\r\n return ContentChildrenMetadata;\r\n}(QueryMetadata));\r\nexports.ContentChildrenMetadata = ContentChildrenMetadata;\r\n// TODO: add an example after ContentChild and ViewChild are in master\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChild(ChildDirective) contentChild;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChild is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ContentChildMetadata = (function (_super) {\r\n __extends(ContentChildMetadata, _super);\r\n function ContentChildMetadata(_selector, _a) {\r\n var _b = (_a === void 0 ? {} : _a).read, read = _b === void 0 ? null : _b;\r\n _super.call(this, _selector, { descendants: true, first: true, read: read });\r\n }\r\n ContentChildMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ContentChildMetadata);\r\n return ContentChildMetadata;\r\n}(QueryMetadata));\r\nexports.ContentChildMetadata = ContentChildMetadata;\r\n/**\r\n * Similar to {@link QueryMetadata}, but querying the component view, instead of\r\n * the content children.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/eNsFHDf7YjyM6IzKxM1j?p=preview))\r\n *\r\n * ```javascript\r\n * @Component({\r\n * ...,\r\n * template: `\r\n * <item> a </item>\r\n * <item> b </item>\r\n * <item> c </item>\r\n * `\r\n * })\r\n * class MyComponent {\r\n * shown: boolean;\r\n *\r\n * constructor(private @ViewQuery(Item) items:QueryList<Item>) {\r\n * items.changes.subscribe(() => console.log(items.length));\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Supports the same querying parameters as {@link QueryMetadata}, except\r\n * `descendants`. This always queries the whole view.\r\n *\r\n * As `shown` is flipped between true and false, items will contain zero of one\r\n * items.\r\n *\r\n * Specifies that a {@link QueryList} should be injected.\r\n *\r\n * The injected object is an iterable and observable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nvar ViewQueryMetadata = (function (_super) {\r\n __extends(ViewQueryMetadata, _super);\r\n function ViewQueryMetadata(_selector, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.descendants, descendants = _c === void 0 ? false : _c, _d = _b.first, first = _d === void 0 ? false : _d, _e = _b.read, read = _e === void 0 ? null : _e;\r\n _super.call(this, _selector, { descendants: descendants, first: first, read: read });\r\n }\r\n Object.defineProperty(ViewQueryMetadata.prototype, \"isViewQuery\", {\r\n /**\r\n * always `true` to differentiate it with {@link QueryMetadata}.\r\n */\r\n get: function () { return true; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ViewQueryMetadata.prototype.toString = function () { return \"@ViewQuery(\" + lang_1.stringify(this.selector) + \")\"; };\r\n ViewQueryMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ViewQueryMetadata);\r\n return ViewQueryMetadata;\r\n}(QueryMetadata));\r\nexports.ViewQueryMetadata = ViewQueryMetadata;\r\n/**\r\n * Declares a list of child element references.\r\n *\r\n * Angular automatically updates the list when the DOM is updated.\r\n *\r\n * `ViewChildren` takes an argument to select elements.\r\n *\r\n * - If the argument is a type, directives or components with the type will be bound.\r\n *\r\n * - If the argument is a string, the string is interpreted as a list of comma-separated selectors.\r\n * For each selector, an element containing the matching template variable (e.g. `#child`) will be\r\n * bound.\r\n *\r\n * View children are set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * With type selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: `\r\n * <child-cmp></child-cmp>\r\n * <child-cmp></child-cmp>\r\n * <child-cmp></child-cmp>\r\n * `,\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChildren(ChildCmp) children:QueryList<ChildCmp>;\r\n *\r\n * ngAfterViewInit() {\r\n * // children are set\r\n * this.children.toArray().forEach((child)=>child.doSomething());\r\n * }\r\n * }\r\n * ```\r\n *\r\n * With string selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: `\r\n * <child-cmp #child1></child-cmp>\r\n * <child-cmp #child2></child-cmp>\r\n * <child-cmp #child3></child-cmp>\r\n * `,\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChildren('child1,child2,child3') children:QueryList<ChildCmp>;\r\n *\r\n * ngAfterViewInit() {\r\n * // children are set\r\n * this.children.toArray().forEach((child)=>child.doSomething());\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ViewChildrenMetadata = (function (_super) {\r\n __extends(ViewChildrenMetadata, _super);\r\n function ViewChildrenMetadata(_selector, _a) {\r\n var _b = (_a === void 0 ? {} : _a).read, read = _b === void 0 ? null : _b;\r\n _super.call(this, _selector, { descendants: true, read: read });\r\n }\r\n ViewChildrenMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ViewChildrenMetadata);\r\n return ViewChildrenMetadata;\r\n}(ViewQueryMetadata));\r\nexports.ViewChildrenMetadata = ViewChildrenMetadata;\r\n/**\r\n *\r\n * Declares a reference of child element.\r\n *\r\n * `ViewChildren` takes an argument to select elements.\r\n *\r\n * - If the argument is a type, a directive or a component with the type will be bound.\r\n *\r\n If the argument is a string, the string is interpreted as a selector. An element containing the\r\n matching template variable (e.g. `#child`) will be bound.\r\n *\r\n * In either case, `@ViewChild()` assigns the first (looking from above) element if there are\r\n multiple matches.\r\n *\r\n * View child is set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * With type selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: '<child-cmp></child-cmp>',\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChild(ChildCmp) child:ChildCmp;\r\n *\r\n * ngAfterViewInit() {\r\n * // child is set\r\n * this.child.doSomething();\r\n * }\r\n * }\r\n * ```\r\n *\r\n * With string selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: '<child-cmp #child></child-cmp>',\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChild('child') child:ChildCmp;\r\n *\r\n * ngAfterViewInit() {\r\n * // child is set\r\n * this.child.doSomething();\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ViewChildMetadata = (function (_super) {\r\n __extends(ViewChildMetadata, _super);\r\n function ViewChildMetadata(_selector, _a) {\r\n var _b = (_a === void 0 ? {} : _a).read, read = _b === void 0 ? null : _b;\r\n _super.call(this, _selector, { descendants: true, first: true, read: read });\r\n }\r\n ViewChildMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ViewChildMetadata);\r\n return ViewChildMetadata;\r\n}(ViewQueryMetadata));\r\nexports.ViewChildMetadata = ViewChildMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS9kaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBMEQsMEJBQTBCLENBQUMsQ0FBQTtBQUNyRixtQkFBZ0Msc0JBQXNCLENBQUMsQ0FBQTtBQUN2RCx5QkFBaUMsK0JBQStCLENBQUMsQ0FBQTtBQUVqRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVIO0lBQXVDLHFDQUFrQjtJQUN2RCwyQkFBbUIsYUFBcUI7UUFBSSxpQkFBTyxDQUFDO1FBQWpDLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBQWEsQ0FBQztJQUV0RCxzQkFBSSxvQ0FBSzthQUFUO1lBQ0UsNkVBQTZFO1lBQzdFLHVGQUF1RjtZQUN2Riw2RkFBNkY7WUFDN0YsMkZBQTJGO1lBQzNGLFdBQVc7WUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2QsQ0FBQzs7O09BQUE7SUFDRCxvQ0FBUSxHQUFSLGNBQXFCLE1BQU0sQ0FBQyxnQkFBYyxnQkFBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBRyxDQUFDLENBQUMsQ0FBQztJQVovRTtRQUFDLFlBQUssRUFBRTs7eUJBQUE7SUFhUix3QkFBQztBQUFELENBQUMsQUFaRCxDQUF1Qyw2QkFBa0IsR0FZeEQ7QUFaWSx5QkFBaUIsb0JBWTdCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBHRztBQUVIO0lBQW1DLGlDQUFrQjtJQVluRCx1QkFBb0IsU0FBd0IsRUFDaEMsRUFDd0U7WUFEeEUsNEJBQ3dFLEVBRHZFLG1CQUFtQixFQUFuQix3Q0FBbUIs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T05TVCwgVHlwZSwgc3RyaW5naWZ5LCBpc1ByZXNlbnQsIGlzU3RyaW5nfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtEZXBlbmRlbmN5TWV0YWRhdGF9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL21ldGFkYXRhJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhhdCBhIGNvbnN0YW50IGF0dHJpYnV0ZSB2YWx1ZSBzaG91bGQgYmUgaW5qZWN0ZWQuXG4gKlxuICogVGhlIGRpcmVjdGl2ZSBjYW4gaW5qZWN0IGNvbnN0YW50IHN0cmluZyBsaXRlcmFscyBvZiBob3N0IGVsZW1lbnQgYXR0cmlidXRlcy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFN1cHBvc2Ugd2UgaGF2ZSBhbiBgPGlucHV0PmAgZWxlbWVudCBhbmQgd2FudCB0byBrbm93IGl0cyBgdHlwZWAuXG4gKlxuICogYGBgaHRtbFxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCI+XG4gKiBgYGBcbiAqXG4gKiBBIGRlY29yYXRvciBjYW4gaW5qZWN0IHN0cmluZyBsaXRlcmFsIGB0ZXh0YCBsaWtlIHNvOlxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nYXR0cmlidXRlTWV0YWRhdGEnfVxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZU1ldGFkYXRhIGV4dGVuZHMgRGVwZW5kZW5jeU1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IocHVibGljIGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgeyBzdXBlcigpOyB9XG5cbiAgZ2V0IHRva2VuKCk6IEF0dHJpYnV0ZU1ldGFkYXRhIHtcbiAgICAvLyBOb3JtYWxseSBvbmUgd291bGQgZGVmYXVsdCBhIHRva2VuIHRvIGEgdHlwZSBvZiBhbiBpbmplY3RlZCB2YWx1ZSBidXQgaGVyZVxuICAgIC8vIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgaXMgXCJzdHJpbmdcIiBhbmQgd2UgY2FuJ3QgdXNlIHByaW1pdGl2ZSB0eXBlIGFzIGEgcmV0dXJuIHZhbHVlXG4gICAgLy8gc28gd2UgdXNlIGluc3RhbmNlIG9mIEF0dHJpYnV0ZSBpbnN0ZWFkLiBUaGlzIGRvZXNuJ3QgbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UgYXMgYXJndW1lbnRzXG4gICAgLy8gd2l0aCBAQXR0cmlidXRlIGFubm90YXRpb24gYXJlIGluamVjdGVkIGJ5IEVsZW1lbnRJbmplY3RvciB0aGF0IGRvZXNuJ3QgdGFrZSB0b2tlbnMgaW50b1xuICAgIC8vIGFjY291bnQuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGBAQXR0cmlidXRlKCR7c3RyaW5naWZ5KHRoaXMuYXR0cmlidXRlTmFtZSl9KWA7IH1cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhbiBpbmplY3RhYmxlIHBhcmFtZXRlciB0byBiZSBhIGxpdmUgbGlzdCBvZiBkaXJlY3RpdmVzIG9yIHZhcmlhYmxlXG4gKiBiaW5kaW5ncyBmcm9tIHRoZSBjb250ZW50IGNoaWxkcmVuIG9mIGEgZGlyZWN0aXZlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sWTltOEhMeTd6MDZ2RG9VYVNOMj9wPXByZXZpZXcpKVxuICpcbiAqIEFzc3VtZSB0aGF0IGA8dGFicz5gIGNvbXBvbmVudCB3b3VsZCBsaWtlIHRvIGdldCBhIGxpc3QgaXRzIGNoaWxkcmVuIGA8cGFuZT5gXG4gKiBjb21wb25lbnRzIGFzIHNob3duIGluIHRoaXMgZXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGFicz5cbiAqICAgPHBhbmUgdGl0bGU9XCJPdmVydmlld1wiPi4uLjwvcGFuZT5cbiAqICAgPHBhbmUgKm5nRm9yPVwibGV0IG8gb2Ygb2JqZWN0c1wiIFt0aXRsZV09XCJvLnRpdGxlXCI+e3tvLnRleHR9fTwvcGFuZT5cbiAqIDwvdGFicz5cbiAqIGBgYFxuICpcbiAqIFRoZSBwcmVmZXJyZWQgc29sdXRpb24gaXMgdG8gcXVlcnkgZm9yIGBQYW5lYCBkaXJlY3RpdmVzIHVzaW5nIHRoaXMgZGVjb3JhdG9yLlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhbmUnLFxuICogICBpbnB1dHM6IFsndGl0bGUnXVxuICogfSlcbiAqIGNsYXNzIFBhbmUge1xuICogICB0aXRsZTpzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6ICd0YWJzJyxcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPHVsPlxuICogICAgICA8bGkgKm5nRm9yPVwibGV0IHBhbmUgb2YgcGFuZXNcIj57e3BhbmUudGl0bGV9fTwvbGk+XG4gKiAgICA8L3VsPlxuICogICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICogIGBcbiAqIH0pXG4gKiBjbGFzcyBUYWJzIHtcbiAqICAgcGFuZXM6IFF1ZXJ5TGlzdDxQYW5lPjtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KFBhbmUpIHBhbmVzOlF1ZXJ5TGlzdDxQYW5lPikge1xuICAqICAgIHRoaXMucGFuZXMgPSBwYW5lcztcbiAgKiAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSBxdWVyeSBjYW4gbG9vayBmb3IgdmFyaWFibGUgYmluZGluZ3MgYnkgcGFzc2luZyBpbiBhIHN0cmluZyB3aXRoIGRlc2lyZWQgYmluZGluZyBzeW1ib2wuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3NUMmoyNWNIMWRVUkF5QlJDS3gxP3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8c2Vla2VyPlxuICogICA8ZGl2ICNmaW5kbWU+Li4uPC9kaXY+XG4gKiA8L3NlZWtlcj5cbiAqXG4gKiBAQ29tcG9uZW50KHsgc2VsZWN0b3I6ICdzZWVrZXInIH0pXG4gKiBjbGFzcyBTZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRtZScpIGVsTGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+KSB7Li4ufVxuICogfVxuICogYGBgXG4gKlxuICogSW4gdGhpcyBjYXNlIHRoZSBvYmplY3QgdGhhdCBpcyBpbmplY3RlZCBkZXBlbmQgb24gdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlXG4gKiBiaW5kaW5nLiBJdCBjYW4gYmUgYW4gRWxlbWVudFJlZiwgYSBkaXJlY3RpdmUgb3IgYSBjb21wb25lbnQuXG4gKlxuICogUGFzc2luZyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHZhcmlhYmxlIGJpbmRpbmdzIHdpbGwgcXVlcnkgZm9yIGFsbCBvZiB0aGVtLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzZWVrZXI+XG4gKiAgIDxkaXYgI2ZpbmQtbWU+Li4uPC9kaXY+XG4gKiAgIDxkaXYgI2ZpbmQtbWUtdG9vPi4uLjwvZGl2PlxuICogPC9zZWVrZXI+XG4gKlxuICogIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3NlZWtlcidcbiAqIH0pXG4gKiBjbGFzcyBTZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRNZSwgZmluZE1lVG9vJykgZWxMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pIHsuLi59XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBDb25maWd1cmUgd2hldGhlciBxdWVyeSBsb29rcyBmb3IgZGlyZWN0IGNoaWxkcmVuIG9yIGFsbCBkZXNjZW5kYW50c1xuICogb2YgdGhlIHF1ZXJ5aW5nIGVsZW1lbnQsIGJ5IHVzaW5nIHRoZSBgZGVzY2VuZGFudHNgIHBhcmFtZXRlci5cbiAqIEl0IGlzIHNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3d0R2VCOTc3YnY3cXZBNUZUWWw5P3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8Y29udGFpbmVyICNmaXJzdD5cbiAqICAgPGl0ZW0+YTwvaXRlbT5cbiAqICAgPGl0ZW0+YjwvaXRlbT5cbiAqICAgPGNvbnRhaW5lciAjc2Vjb25kPlxuICogICAgIDxpdGVtPmM8L2l0ZW0+XG4gKiAgIDwvY29udGFpbmVyPlxuICogPC9jb250YWluZXI+XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHF1ZXJ5aW5nIGZvciBpdGVtcywgdGhlIGZpcnN0IGNvbnRhaW5lciB3aWxsIHNlZSBvbmx5IGBhYCBhbmQgYGJgIGJ5IGRlZmF1bHQsXG4gKiBidXQgd2l0aCBgUXVlcnkoVGV4dERpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlgIGl0IHdpbGwgc2VlIGBjYCB0b28uXG4gKlxuICogVGhlIHF1ZXJpZWQgZGlyZWN0aXZlcyBhcmUga2VwdCBpbiBhIGRlcHRoLWZpcnN0IHByZS1vcmRlciB3aXRoIHJlc3BlY3QgdG8gdGhlaXJcbiAqIHBvc2l0aW9ucyBpbiB0aGUgRE9NLlxuICpcbiAqIFF1ZXJ5IGRvZXMgbm90IGxvb2sgZGVlcCBpbnRvIGFueSBzdWJjb21wb25lbnQgdmlld3MuXG4gKlxuICogUXVlcnkgaXMgdXBkYXRlZCBhcyBwYXJ0IG9mIHRoZSBjaGFuZ2UtZGV0ZWN0aW9uIGN5Y2xlLiBTaW5jZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiBoYXBwZW5zIGFmdGVyIGNvbnN0cnVjdGlvbiBvZiBhIGRpcmVjdGl2ZSwgUXVlcnlMaXN0IHdpbGwgYWx3YXlzIGJlIGVtcHR5IHdoZW4gb2JzZXJ2ZWQgaW4gdGhlXG4gKiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBUaGUgaW5qZWN0ZWQgb2JqZWN0IGlzIGFuIHVubW9kaWZpYWJsZSBsaXZlIGxpc3QuXG4gKiBTZWUge0BsaW5rIFF1ZXJ5TGlzdH0gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBRdWVyeU1ldGFkYXRhIGV4dGVuZHMgRGVwZW5kZW5jeU1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIHdoZXRoZXIgd2Ugd2FudCB0byBxdWVyeSBvbmx5IGRpcmVjdCBjaGlsZHJlbiAoZmFsc2UpIG9yIGFsbFxuICAgKiBjaGlsZHJlbiAodHJ1ZSkuXG4gICAqL1xuICBkZXNjZW5kYW50czogYm9vbGVhbjtcbiAgZmlyc3Q6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgREkgdG9rZW4gdG8gcmVhZCBmcm9tIGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3Rvci5cbiAgICovXG4gIHJlYWQ6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZyxcbiAgICAgICAgICAgICAge2Rlc2NlbmRhbnRzID0gZmFsc2UsIGZpcnN0ID0gZmFsc2UsXG4gICAgICAgICAgICAgICByZWFkID0gbnVsbH06IHtkZXNjZW5kYW50cz86IGJvb2xlYW4sIGZpcnN0PzogYm9vbGVhbiwgcmVhZD86IGFueX0gPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzO1xuICAgIHRoaXMuZmlyc3QgPSBmaXJzdDtcbiAgICB0aGlzLnJlYWQgPSByZWFkO1xuICB9XG5cbiAgLyoqXG4gICAqIGFsd2F5cyBgZmFsc2VgIHRvIGRpZmZlcmVudGlhdGUgaXQgd2l0aCB7QGxpbmsgVmlld1F1ZXJ5TWV0YWRhdGF9LlxuICAgKi9cbiAgZ2V0IGlzVmlld1F1ZXJ5KCk6IGJvb2xlYW4geyByZXR1cm4gZmFsc2U7IH1cblxuICAvKipcbiAgICogd2hhdCB0aGlzIGlzIHF1ZXJ5aW5nIGZvci5cbiAgICovXG4gIGdldCBzZWxlY3RvcigpIHsgcmV0dXJuIHJlc29sdmVGb3J3YXJkUmVmKHRoaXMuX3NlbGVjdG9yKTsgfVxuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoaXMgaXMgcXVlcnlpbmcgZm9yIGEgdmFyaWFibGUgYmluZGluZyBvciBhIGRpcmVjdGl2ZS5cbiAgICovXG4gIGdldCBpc1ZhckJpbmRpbmdRdWVyeSgpOiBib29sZWFuIHsgcmV0dXJuIGlzU3RyaW5nKHRoaXMuc2VsZWN0b3IpOyB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBsaXN0IG9mIHZhcmlhYmxlIGJpbmRpbmdzIHRoaXMgaXMgcXVlcnlpbmcgZm9yLlxuICAgKiBPbmx5IGFwcGxpY2FibGUgaWYgdGhpcyBpcyBhIHZhcmlhYmxlIGJpbmRpbmdzIHF1ZXJ5LlxuICAgKi9cbiAgZ2V0IHZhckJpbmRpbmdzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuc2VsZWN0b3Iuc3BsaXQoJywnKTsgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQFF1ZXJ5KCR7c3RyaW5naWZ5KHRoaXMuc2VsZWN0b3IpfSlgOyB9XG59XG5cbi8vIFRPRE86IGFkZCBhbiBleGFtcGxlIGFmdGVyIENvbnRlbnRDaGlsZHJlbiBhbmQgVmlld0NoaWxkcmVuIGFyZSBpbiBtYXN0ZXJcbi8qKlxuICogQ29uZmlndXJlcyBhIGNvbnRlbnQgcXVlcnkuXG4gKlxuICogQ29udGVudCBxdWVyaWVzIGFyZSBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlckNvbnRlbnRJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ3NvbWVEaXInXG4gKiB9KVxuICogY2xhc3MgU29tZURpciB7XG4gKiAgIEBDb250ZW50Q2hpbGRyZW4oQ2hpbGREaXJlY3RpdmUpIGNvbnRlbnRDaGlsZHJlbjogUXVlcnlMaXN0PENoaWxkRGlyZWN0aXZlPjtcbiAqXG4gKiAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGRyZW4gaXMgc2V0XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhIGV4dGVuZHMgUXVlcnlNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZyxcbiAgICAgICAgICAgICAge2Rlc2NlbmRhbnRzID0gZmFsc2UsIHJlYWQgPSBudWxsfToge2Rlc2NlbmRhbnRzPzogYm9vbGVhbiwgcmVhZD86IGFueX0gPSB7fSkge1xuICAgIHN1cGVyKF9zZWxlY3Rvciwge2Rlc2NlbmRhbnRzOiBkZXNjZW5kYW50cywgcmVhZDogcmVhZH0pO1xuICB9XG59XG5cbi8vIFRPRE86IGFkZCBhbiBleGFtcGxlIGFmdGVyIENvbnRlbnRDaGlsZCBhbmQgVmlld0NoaWxkIGFyZSBpbiBtYXN0ZXJcbi8qKlxuICogQ29uZmlndXJlcyBhIGNvbnRlbnQgcXVlcnkuXG4gKlxuICogQ29udGVudCBxdWVyaWVzIGFyZSBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlckNvbnRlbnRJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ3NvbWVEaXInXG4gKiB9KVxuICogY2xhc3MgU29tZURpciB7XG4gKiAgIEBDb250ZW50Q2hpbGQoQ2hpbGREaXJlY3RpdmUpIGNvbnRlbnRDaGlsZDtcbiAqXG4gKiAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGQgaXMgc2V0XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnRDaGlsZE1ldGFkYXRhIGV4dGVuZHMgUXVlcnlNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZywge3JlYWQgPSBudWxsfToge3JlYWQ/OiBhbnl9ID0ge30pIHtcbiAgICBzdXBlcihfc2VsZWN0b3IsIHtkZXNjZW5kYW50czogdHJ1ZSwgZmlyc3Q6IHRydWUsIHJlYWQ6IHJlYWR9KTtcbiAgfVxufVxuXG4vKipcbiAqIFNpbWlsYXIgdG8ge0BsaW5rIFF1ZXJ5TWV0YWRhdGF9LCBidXQgcXVlcnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3LCBpbnN0ZWFkIG9mXG4gKiB0aGUgY29udGVudCBjaGlsZHJlbi5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvZU5zRkhEZjdZanlNNkl6S3hNMWo/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgLi4uLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxpdGVtPiBhIDwvaXRlbT5cbiAqICAgICA8aXRlbT4gYiA8L2l0ZW0+XG4gKiAgICAgPGl0ZW0+IGMgPC9pdGVtPlxuICogICBgXG4gKiB9KVxuICogY2xhc3MgTXlDb21wb25lbnQge1xuICogICBzaG93bjogYm9vbGVhbjtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgQFZpZXdRdWVyeShJdGVtKSBpdGVtczpRdWVyeUxpc3Q8SXRlbT4pIHtcbiAqICAgICBpdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiBjb25zb2xlLmxvZyhpdGVtcy5sZW5ndGgpKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogU3VwcG9ydHMgdGhlIHNhbWUgcXVlcnlpbmcgcGFyYW1ldGVycyBhcyB7QGxpbmsgUXVlcnlNZXRhZGF0YX0sIGV4Y2VwdFxuICogYGRlc2NlbmRhbnRzYC4gVGhpcyBhbHdheXMgcXVlcmllcyB0aGUgd2hvbGUgdmlldy5cbiAqXG4gKiBBcyBgc2hvd25gIGlzIGZsaXBwZWQgYmV0d2VlbiB0cnVlIGFuZCBmYWxzZSwgaXRlbXMgd2lsbCBjb250YWluIHplcm8gb2Ygb25lXG4gKiBpdGVtcy5cbiAqXG4gKiBTcGVjaWZpZXMgdGhhdCBhIHtAbGluayBRdWVyeUxpc3R9IHNob3VsZCBiZSBpbmplY3RlZC5cbiAqXG4gKiBUaGUgaW5qZWN0ZWQgb2JqZWN0IGlzIGFuIGl0ZXJhYmxlIGFuZCBvYnNlcnZhYmxlIGxpdmUgbGlzdC5cbiAqIFNlZSB7QGxpbmsgUXVlcnlMaXN0fSBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFZpZXdRdWVyeU1ldGFkYXRhIGV4dGVuZHMgUXVlcnlNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZyxcbiAgICAgICAgICAgICAge2Rlc2NlbmRhbnRzID0gZmFsc2UsIGZpcnN0ID0gZmFsc2UsXG4gICAgICAgICAgICAgICByZWFkID0gbnVsbH06IHtkZXNjZW5kYW50cz86IGJvb2xlYW4sIGZpcnN0PzogYm9vbGVhbiwgcmVhZD86IGFueX0gPSB7fSkge1xuICAgIHN1cGVyKF9zZWxlY3Rvciwge2Rlc2NlbmRhbnRzOiBkZXNjZW5kYW50cywgZmlyc3Q6IGZpcnN0LCByZWFkOiByZWFkfSk7XG4gIH1cblxuICAvKipcbiAgICogYWx3YXlzIGB0cnVlYCB0byBkaWZmZXJlbnRpYXRlIGl0IHdpdGgge0BsaW5rIFF1ZXJ5TWV0YWRhdGF9LlxuICAgKi9cbiAgZ2V0IGlzVmlld1F1ZXJ5KCkgeyByZXR1cm4gdHJ1ZTsgfVxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYEBWaWV3UXVlcnkoJHtzdHJpbmdpZnkodGhpcy5zZWxlY3Rvcil9KWA7IH1cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhIGxpc3Qgb2YgY2hpbGQgZWxlbWVudCByZWZlcmVuY2VzLlxuICpcbiAqIEFuZ3VsYXIgYXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBsaXN0IHdoZW4gdGhlIERPTSBpcyB1cGRhdGVkLlxuICpcbiAqIGBWaWV3Q2hpbGRyZW5gIHRha2VzIGFuIGFyZ3VtZW50IHRvIHNlbGVjdCBlbGVtZW50cy5cbiAqXG4gKiAtIElmIHRoZSBhcmd1bWVudCBpcyBhIHR5cGUsIGRpcmVjdGl2ZXMgb3IgY29tcG9uZW50cyB3aXRoIHRoZSB0eXBlIHdpbGwgYmUgYm91bmQuXG4gKlxuICogLSBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIHRoZSBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQgYXMgYSBsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBzZWxlY3RvcnMuXG4gKiBGb3IgZWFjaCBzZWxlY3RvciwgYW4gZWxlbWVudCBjb250YWluaW5nIHRoZSBtYXRjaGluZyB0ZW1wbGF0ZSB2YXJpYWJsZSAoZS5nLiBgI2NoaWxkYCkgd2lsbCBiZVxuICogYm91bmQuXG4gKlxuICogVmlldyBjaGlsZHJlbiBhcmUgc2V0IGJlZm9yZSB0aGUgYG5nQWZ0ZXJWaWV3SW5pdGAgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogV2l0aCB0eXBlIHNlbGVjdG9yOlxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnY2hpbGQtY21wJyxcbiAqICAgdGVtcGxhdGU6ICc8cD5jaGlsZDwvcD4nXG4gKiB9KVxuICogY2xhc3MgQ2hpbGRDbXAge1xuICogICBkb1NvbWV0aGluZygpIHt9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZS1jbXAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxjaGlsZC1jbXA+PC9jaGlsZC1jbXA+XG4gKiAgICAgPGNoaWxkLWNtcD48L2NoaWxkLWNtcD5cbiAqICAgICA8Y2hpbGQtY21wPjwvY2hpbGQtY21wPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbQ2hpbGRDbXBdXG4gKiB9KVxuICogY2xhc3MgU29tZUNtcCB7XG4gKiAgIEBWaWV3Q2hpbGRyZW4oQ2hpbGRDbXApIGNoaWxkcmVuOlF1ZXJ5TGlzdDxDaGlsZENtcD47XG4gKlxuICogICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gKiAgICAgLy8gY2hpbGRyZW4gYXJlIHNldFxuICogICAgIHRoaXMuY2hpbGRyZW4udG9BcnJheSgpLmZvckVhY2goKGNoaWxkKT0+Y2hpbGQuZG9Tb21ldGhpbmcoKSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFdpdGggc3RyaW5nIHNlbGVjdG9yOlxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnY2hpbGQtY21wJyxcbiAqICAgdGVtcGxhdGU6ICc8cD5jaGlsZDwvcD4nXG4gKiB9KVxuICogY2xhc3MgQ2hpbGRDbXAge1xuICogICBkb1NvbWV0aGluZygpIHt9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZS1jbXAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxjaGlsZC1jbXAgI2NoaWxkMT48L2NoaWxkLWNtcD5cbiAqICAgICA8Y2hpbGQtY21wICNjaGlsZDI+PC9jaGlsZC1jbXA+XG4gKiAgICAgPGNoaWxkLWNtcCAjY2hpbGQzPjwvY2hpbGQtY21wPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbQ2hpbGRDbXBdXG4gKiB9KVxuICogY2xhc3MgU29tZUNtcCB7XG4gKiAgIEBWaWV3Q2hpbGRyZW4oJ2NoaWxkMSxjaGlsZDIsY2hpbGQzJykgY2hpbGRyZW46UXVlcnlMaXN0PENoaWxkQ21wPjtcbiAqXG4gKiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAqICAgICAvLyBjaGlsZHJlbiBhcmUgc2V0XG4gKiAgICAgdGhpcy5jaGlsZHJlbi50b0FycmF5KCkuZm9yRWFjaCgoY2hpbGQpPT5jaGlsZC5kb1NvbWV0aGluZygpKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgVmlld0NoaWxkcmVuTWV0YWRhdGEgZXh0ZW5kcyBWaWV3UXVlcnlNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZywge3JlYWQgPSBudWxsfToge3JlYWQ/OiBhbnl9ID0ge30pIHtcbiAgICBzdXBlcihfc2VsZWN0b3IsIHtkZXNjZW5kYW50czogdHJ1ZSwgcmVhZDogcmVhZH0pO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIERlY2xhcmVzIGEgcmVmZXJlbmNlIG9mIGNoaWxkIGVsZW1lbnQuXG4gKlxuICogYFZpZXdDaGlsZHJlbmAgdGFrZXMgYW4gYXJndW1lbnQgdG8gc2VsZWN0IGVsZW1lbnRzLlxuICpcbiAqIC0gSWYgdGhlIGFyZ3VtZW50IGlzIGEgdHlwZSwgYSBkaXJlY3RpdmUgb3IgYSBjb21wb25lbnQgd2l0aCB0aGUgdHlwZSB3aWxsIGJlIGJvdW5kLlxuICpcbiBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIHRoZSBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQgYXMgYSBzZWxlY3Rvci4gQW4gZWxlbWVudCBjb250YWluaW5nIHRoZVxuIG1hdGNoaW5nIHRlbXBsYXRlIHZhcmlhYmxlIChlLmcuIGAjY2hpbGRgKSB3aWxsIGJlIGJvdW5kLlxuICpcbiAqIEluIGVpdGhlciBjYXNlLCBgQFZpZXdDaGlsZCgpYCBhc3NpZ25zIHRoZSBmaXJzdCAobG9va2luZyBmcm9tIGFib3ZlKSBlbGVtZW50IGlmIHRoZXJlIGFyZVxuIG11bHRpcGxlIG1hdGNoZXMuXG4gKlxuICogVmlldyBjaGlsZCBpcyBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlclZpZXdJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBXaXRoIHR5cGUgc2VsZWN0b3I6XG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdjaGlsZC1jbXAnLFxuICogICB0ZW1wbGF0ZTogJzxwPmNoaWxkPC9wPidcbiAqIH0pXG4gKiBjbGFzcyBDaGlsZENtcCB7XG4gKiAgIGRvU29tZXRoaW5nKCkge31cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lLWNtcCcsXG4gKiAgIHRlbXBsYXRlOiAnPGNoaWxkLWNtcD48L2NoaWxkLWNtcD4nLFxuICogICBkaXJlY3RpdmVzOiBbQ2hpbGRDbXBdXG4gKiB9KVxuICogY2xhc3MgU29tZUNtcCB7XG4gKiAgIEBWaWV3Q2hpbGQoQ2hpbGRDbXApIGNoaWxkOkNoaWxkQ21wO1xuICpcbiAqICAgbmdBZnRlclZpZXdJbml0KCkge1xuICogICAgIC8vIGNoaWxkIGlzIHNldFxuICogICAgIHRoaXMuY2hpbGQuZG9Tb21ldGhpbmcoKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogV2l0aCBzdHJpbmcgc2VsZWN0b3I6XG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdjaGlsZC1jbXAnLFxuICogICB0ZW1wbGF0ZTogJzxwPmNoaWxkPC9wPidcbiAqIH0pXG4gKiBjbGFzcyBDaGlsZENtcCB7XG4gKiAgIGRvU29tZXRoaW5nKCkge31cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lLWNtcCcsXG4gKiAgIHRlbXBsYXRlOiAnPGNoaWxkLWNtcCAjY2hpbGQ+PC9jaGlsZC1jbXA+JyxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkQ21wXVxuICogfSlcbiAqIGNsYXNzIFNvbWVDbXAge1xuICogICBAVmlld0NoaWxkKCdjaGlsZCcpIGNoaWxkOkNoaWxkQ21wO1xuICpcbiAqICAgbmdBZnRlclZpZXdJbml0KCkge1xuICogICAgIC8vIGNoaWxkIGlzIHNldFxuICogICAgIHRoaXMuY2hpbGQuZG9Tb21ldGhpbmcoKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgVmlld0NoaWxkTWV0YWRhdGEgZXh0ZW5kcyBWaWV3UXVlcnlNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZywge3JlYWQgPSBudWxsfToge3JlYWQ/OiBhbnl9ID0ge30pIHtcbiAgICBzdXBlcihfc2VsZWN0b3IsIHtkZXNjZW5kYW50czogdHJ1ZSwgZmlyc3Q6IHRydWUsIHJlYWQ6IHJlYWR9KTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar metadata_1 = require('angular2/src/core/di/metadata');\r\nvar change_detection_1 = require('angular2/src/core/change_detection');\r\n/**\r\n * Directives allow you to attach behavior to elements in the DOM.\r\n *\r\n * {@link DirectiveMetadata}s with an embedded view are called {@link ComponentMetadata}s.\r\n *\r\n * A directive consists of a single directive annotation and a controller class. When the\r\n * directive's `selector` matches\r\n * elements in the DOM, the following steps occur:\r\n *\r\n * 1. For each directive, the `ElementInjector` attempts to resolve the directive's constructor\r\n * arguments.\r\n * 2. Angular instantiates directives for each matched element using `ElementInjector` in a\r\n * depth-first order,\r\n * as declared in the HTML.\r\n *\r\n * ## Understanding How Injection Works\r\n *\r\n * There are three stages of injection resolution.\r\n * - *Pre-existing Injectors*:\r\n * - The terminal {@link Injector} cannot resolve dependencies. It either throws an error or, if\r\n * the dependency was\r\n * specified as `@Optional`, returns `null`.\r\n * - The platform injector resolves browser singleton resources, such as: cookies, title,\r\n * location, and others.\r\n * - *Component Injectors*: Each component instance has its own {@link Injector}, and they follow\r\n * the same parent-child hierarchy\r\n * as the component instances in the DOM.\r\n * - *Element Injectors*: Each component instance has a Shadow DOM. Within the Shadow DOM each\r\n * element has an `ElementInjector`\r\n * which follow the same parent-child hierarchy as the DOM elements themselves.\r\n *\r\n * When a template is instantiated, it also must instantiate the corresponding directives in a\r\n * depth-first order. The\r\n * current `ElementInjector` resolves the constructor dependencies for each directive.\r\n *\r\n * Angular then resolves dependencies as follows, according to the order in which they appear in the\r\n * {@link ViewMetadata}:\r\n *\r\n * 1. Dependencies on the current element\r\n * 2. Dependencies on element injectors and their parents until it encounters a Shadow DOM boundary\r\n * 3. Dependencies on component injectors and their parents until it encounters the root component\r\n * 4. Dependencies on pre-existing injectors\r\n *\r\n *\r\n * The `ElementInjector` can inject other directives, element-specific special objects, or it can\r\n * delegate to the parent\r\n * injector.\r\n *\r\n * To inject other directives, declare the constructor parameter as:\r\n * - `directive:DirectiveType`: a directive on the current element only\r\n * - `@Host() directive:DirectiveType`: any directive that matches the type between the current\r\n * element and the\r\n * Shadow DOM root.\r\n * - `@Query(DirectiveType) query:QueryList<DirectiveType>`: A live collection of direct child\r\n * directives.\r\n * - `@QueryDescendants(DirectiveType) query:QueryList<DirectiveType>`: A live collection of any\r\n * child directives.\r\n *\r\n * To inject element-specific special objects, declare the constructor parameter as:\r\n * - `element: ElementRef` to obtain a reference to logical element in the view.\r\n * - `viewContainer: ViewContainerRef` to control child template instantiation, for\r\n * {@link DirectiveMetadata} directives only\r\n * - `bindingPropagation: BindingPropagation` to control change detection in a more granular way.\r\n *\r\n * ### Example\r\n *\r\n * The following example demonstrates how dependency injection resolves constructor arguments in\r\n * practice.\r\n *\r\n *\r\n * Assume this HTML template:\r\n *\r\n * ```\r\n * <div dependency=\"1\">\r\n * <div dependency=\"2\">\r\n * <div dependency=\"3\" my-directive>\r\n * <div dependency=\"4\">\r\n * <div dependency=\"5\"></div>\r\n * </div>\r\n * <div dependency=\"6\"></div>\r\n * </div>\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * With the following `dependency` decorator and `SomeService` injectable class.\r\n *\r\n * ```\r\n * @Injectable()\r\n * class SomeService {\r\n * }\r\n *\r\n * @Directive({\r\n * selector: '[dependency]',\r\n * inputs: [\r\n * 'id: dependency'\r\n * ]\r\n * })\r\n * class Dependency {\r\n * id:string;\r\n * }\r\n * ```\r\n *\r\n * Let's step through the different ways in which `MyDirective` could be declared...\r\n *\r\n *\r\n * ### No injection\r\n *\r\n * Here the constructor is declared with no arguments, therefore nothing is injected into\r\n * `MyDirective`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor() {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with no dependencies.\r\n *\r\n *\r\n * ### Component-level injection\r\n *\r\n * Directives can inject any injectable instance from the closest component injector or any of its\r\n * parents.\r\n *\r\n * Here, the constructor declares a parameter, `someService`, and injects the `SomeService` type\r\n * from the parent\r\n * component's injector.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(someService: SomeService) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a dependency on `SomeService`.\r\n *\r\n *\r\n * ### Injecting a directive from the current element\r\n *\r\n * Directives can inject other directives declared on the current element.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(dependency: Dependency) {\r\n * expect(dependency.id).toEqual(3);\r\n * }\r\n * }\r\n * ```\r\n * This directive would be instantiated with `Dependency` declared at the same element, in this case\r\n * `dependency=\"3\"`.\r\n *\r\n * ### Injecting a directive from any ancestor elements\r\n *\r\n * Directives can inject other directives declared on any ancestor element (in the current Shadow\r\n * DOM), i.e. on the current element, the\r\n * parent element, or its parents.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Host() dependency: Dependency) {\r\n * expect(dependency.id).toEqual(2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * `@Host` checks the current element, the parent, as well as its parents recursively. If\r\n * `dependency=\"2\"` didn't\r\n * exist on the direct parent, this injection would\r\n * have returned\r\n * `dependency=\"1\"`.\r\n *\r\n *\r\n * ### Injecting a live collection of direct child directives\r\n *\r\n *\r\n * A directive can also query for other child directives. Since parent directives are instantiated\r\n * before child directives, a directive can't simply inject the list of child directives. Instead,\r\n * the directive injects a {@link QueryList}, which updates its contents as children are added,\r\n * removed, or moved by a directive that uses a {@link ViewContainerRef} such as a `ngFor`, an\r\n * `ngIf`, or an `ngSwitch`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a {@link QueryList} which contains `Dependency` 4 and\r\n * `Dependency` 6. Here, `Dependency` 5 would not be included, because it is not a direct child.\r\n *\r\n * ### Injecting a live collection of descendant directives\r\n *\r\n * By passing the descendant flag to `@Query` above, we can include the children of the child\r\n * elements.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency, {descendants: true}) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a Query which would contain `Dependency` 4, 5 and 6.\r\n *\r\n * ### Optional injection\r\n *\r\n * The normal behavior of directives is to return an error when a specified dependency cannot be\r\n * resolved. If you\r\n * would like to inject `null` on unresolved dependency instead, you can annotate that dependency\r\n * with `@Optional()`.\r\n * This explicitly permits the author of a template to treat some of the surrounding directives as\r\n * optional.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Optional() dependency:Dependency) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a `Dependency` directive found on the current element.\r\n * If none can be\r\n * found, the injector supplies `null` instead of throwing an error.\r\n *\r\n * ### Example\r\n *\r\n * Here we use a decorator directive to simply define basic tool-tip behavior.\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[tooltip]',\r\n * inputs: [\r\n * 'text: tooltip'\r\n * ],\r\n * host: {\r\n * '(mouseenter)': 'onMouseEnter()',\r\n * '(mouseleave)': 'onMouseLeave()'\r\n * }\r\n * })\r\n * class Tooltip{\r\n * text:string;\r\n * overlay:Overlay; // NOT YET IMPLEMENTED\r\n * overlayManager:OverlayManager; // NOT YET IMPLEMENTED\r\n *\r\n * constructor(overlayManager:OverlayManager) {\r\n * this.overlay = overlay;\r\n * }\r\n *\r\n * onMouseEnter() {\r\n * // exact signature to be determined\r\n * this.overlay = this.overlayManager.open(text, ...);\r\n * }\r\n *\r\n * onMouseLeave() {\r\n * this.overlay.close();\r\n * this.overlay = null;\r\n * }\r\n * }\r\n * ```\r\n * In our HTML template, we can then add this behavior to a `<div>` or any other element with the\r\n * `tooltip` selector,\r\n * like so:\r\n *\r\n * ```\r\n * <div tooltip=\"some text here\"></div>\r\n * ```\r\n *\r\n * Directives can also control the instantiation, destruction, and positioning of inline template\r\n * elements:\r\n *\r\n * A directive uses a {@link ViewContainerRef} to instantiate, insert, move, and destroy views at\r\n * runtime.\r\n * The {@link ViewContainerRef} is created as a result of `<template>` element, and represents a\r\n * location in the current view\r\n * where these actions are performed.\r\n *\r\n * Views are always created as children of the current {@link ViewMetadata}, and as siblings of the\r\n * `<template>` element. Thus a\r\n * directive in a child view cannot inject the directive that created it.\r\n *\r\n * Since directives that create views via ViewContainers are common in Angular, and using the full\r\n * `<template>` element syntax is wordy, Angular\r\n * also supports a shorthand notation: `<li *foo=\"bar\">` and `<li template=\"foo: bar\">` are\r\n * equivalent.\r\n *\r\n * Thus,\r\n *\r\n * ```\r\n * <ul>\r\n * <li *foo=\"bar\" title=\"text\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Expands in use to:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [foo]=\"bar\">\r\n * <li title=\"text\"></li>\r\n * </template>\r\n * </ul>\r\n * ```\r\n *\r\n * Notice that although the shorthand places `*foo=\"bar\"` within the `<li>` element, the binding for\r\n * the directive\r\n * controller is correctly instantiated on the `<template>` element rather than the `<li>` element.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the directive class implements some {@link ../../guide/lifecycle-hooks.html} the callbacks\r\n * are called by the change detection at defined points in time during the life of the directive.\r\n *\r\n * ### Example\r\n *\r\n * Let's suppose we want to implement the `unless` behavior, to conditionally include a template.\r\n *\r\n * Here is a simple directive that triggers on an `unless` selector:\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[unless]',\r\n * inputs: ['unless']\r\n * })\r\n * export class Unless {\r\n * viewContainer: ViewContainerRef;\r\n * templateRef: TemplateRef;\r\n * prevCondition: boolean;\r\n *\r\n * constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef) {\r\n * this.viewContainer = viewContainer;\r\n * this.templateRef = templateRef;\r\n * this.prevCondition = null;\r\n * }\r\n *\r\n * set unless(newCondition) {\r\n * if (newCondition && (isBlank(this.prevCondition) || !this.prevCondition)) {\r\n * this.prevCondition = true;\r\n * this.viewContainer.clear();\r\n * } else if (!newCondition && (isBlank(this.prevCondition) || this.prevCondition)) {\r\n * this.prevCondition = false;\r\n * this.viewContainer.create(this.templateRef);\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can then use this `unless` selector in a template:\r\n * ```\r\n * <ul>\r\n * <li *unless=\"expr\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Once the directive instantiates the child view, the shorthand notation for the template expands\r\n * and the result is:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [unless]=\"exp\">\r\n * <li></li>\r\n * </template>\r\n * <li></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Note also that although the `<li></li>` template still exists inside the `<template></template>`,\r\n * the instantiated\r\n * view occurs on the second `<li></li>` which is a sibling to the `<template>` element.\r\n */\r\nvar DirectiveMetadata = (function (_super) {\r\n __extends(DirectiveMetadata, _super);\r\n function DirectiveMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, selector = _b.selector, inputs = _b.inputs, outputs = _b.outputs, properties = _b.properties, events = _b.events, host = _b.host, bindings = _b.bindings, providers = _b.providers, exportAs = _b.exportAs, queries = _b.queries;\r\n _super.call(this);\r\n this.selector = selector;\r\n this._inputs = inputs;\r\n this._properties = properties;\r\n this._outputs = outputs;\r\n this._events = events;\r\n this.host = host;\r\n this.exportAs = exportAs;\r\n this.queries = queries;\r\n this._providers = providers;\r\n this._bindings = bindings;\r\n }\r\n Object.defineProperty(DirectiveMetadata.prototype, \"inputs\", {\r\n /**\r\n * Enumerates the set of data-bound input properties for a directive\r\n *\r\n * Angular automatically updates input properties during change detection.\r\n *\r\n * The `inputs` property defines a set of `directiveProperty` to `bindingProperty`\r\n * configuration:\r\n *\r\n * - `directiveProperty` specifies the component property where the value is written.\r\n * - `bindingProperty` specifies the DOM property where the value is read from.\r\n *\r\n * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ivhfXY?p=preview))\r\n *\r\n * The following example creates a component with two data-bound properties.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'bank-account',\r\n * inputs: ['bankName', 'id: account-id'],\r\n * template: `\r\n * Bank Name: {{bankName}}\r\n * Account Id: {{id}}\r\n * `\r\n * })\r\n * class BankAccount {\r\n * bankName: string;\r\n * id: string;\r\n *\r\n * // this property is not bound, and won't be automatically updated by Angular\r\n * normalizedBankName: string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\r\n * `,\r\n * directives: [BankAccount]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n *\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._properties) && this._properties.length > 0 ? this._properties :\r\n this._inputs;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"properties\", {\r\n get: function () { return this.inputs; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"outputs\", {\r\n /**\r\n * Enumerates the set of event-bound output properties.\r\n *\r\n * When an output property emits an event, an event handler attached to that event\r\n * the template is invoked.\r\n *\r\n * The `outputs` property defines a set of `directiveProperty` to `bindingProperty`\r\n * configuration:\r\n *\r\n * - `directiveProperty` specifies the component property that emits events.\r\n * - `bindingProperty` specifies the DOM property the event handler is attached to.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/d5CNq7?p=preview))\r\n *\r\n * ```typescript\r\n * @Directive({\r\n * selector: 'interval-dir',\r\n * outputs: ['everySecond', 'five5Secs: everyFiveSeconds']\r\n * })\r\n * class IntervalDir {\r\n * everySecond = new EventEmitter();\r\n * five5Secs = new EventEmitter();\r\n *\r\n * constructor() {\r\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\r\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\r\n * </interval-dir>\r\n * `,\r\n * directives: [IntervalDir]\r\n * })\r\n * class App {\r\n * everySecond() { console.log('second'); }\r\n * everyFiveSeconds() { console.log('five seconds'); }\r\n * }\r\n * bootstrap(App);\r\n * ```\r\n *\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._events) && this._events.length > 0 ? this._events : this._outputs;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"events\", {\r\n get: function () { return this.outputs; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"providers\", {\r\n /**\r\n * Defines the set of injectable objects that are visible to a Directive and its light DOM\r\n * children.\r\n *\r\n * ## Simple Example\r\n *\r\n * Here is an example of a class that can be injected:\r\n *\r\n * ```\r\n * class Greeter {\r\n * greet(name:string) {\r\n * return 'Hello ' + name + '!';\r\n * }\r\n * }\r\n *\r\n * @Directive({\r\n * selector: 'greet',\r\n * bindings: [\r\n * Greeter\r\n * ]\r\n * })\r\n * class HelloWorld {\r\n * greeter:Greeter;\r\n *\r\n * constructor(greeter:Greeter) {\r\n * this.greeter = greeter;\r\n * }\r\n * }\r\n * ```\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._bindings) && this._bindings.length > 0 ? this._bindings :\r\n this._providers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"bindings\", {\r\n /** @deprecated */\r\n get: function () { return this.providers; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DirectiveMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], DirectiveMetadata);\r\n return DirectiveMetadata;\r\n}(metadata_1.InjectableMetadata));\r\nexports.DirectiveMetadata = DirectiveMetadata;\r\n/**\r\n * Declare reusable UI building blocks for an application.\r\n *\r\n * Each Angular component requires a single `@Component` annotation. The\r\n * `@Component`\r\n * annotation specifies when a component is instantiated, and which properties and hostListeners it\r\n * binds to.\r\n *\r\n * When a component is instantiated, Angular\r\n * - creates a shadow DOM for the component.\r\n * - loads the selected template into the shadow DOM.\r\n * - creates all the injectable objects configured with `providers` and `viewProviders`.\r\n *\r\n * All template expressions and statements are then evaluated against the component instance.\r\n *\r\n * For details on the `@View` annotation, see {@link ViewMetadata}.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the component class implements some {@link ../../guide/lifecycle-hooks.html} the callbacks\r\n * are called by the change detection at defined points in time during the life of the component.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='component'}\r\n */\r\nvar ComponentMetadata = (function (_super) {\r\n __extends(ComponentMetadata, _super);\r\n function ComponentMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, selector = _b.selector, inputs = _b.inputs, outputs = _b.outputs, properties = _b.properties, events = _b.events, host = _b.host, exportAs = _b.exportAs, moduleId = _b.moduleId, bindings = _b.bindings, providers = _b.providers, viewBindings = _b.viewBindings, viewProviders = _b.viewProviders, _c = _b.changeDetection, changeDetection = _c === void 0 ? change_detection_1.ChangeDetectionStrategy.Default : _c, queries = _b.queries, templateUrl = _b.templateUrl, template = _b.template, styleUrls = _b.styleUrls, styles = _b.styles, directives = _b.directives, pipes = _b.pipes, encapsulation = _b.encapsulation;\r\n _super.call(this, {\r\n selector: selector,\r\n inputs: inputs,\r\n outputs: outputs,\r\n properties: properties,\r\n events: events,\r\n host: host,\r\n exportAs: exportAs,\r\n bindings: bindings,\r\n providers: providers,\r\n queries: queries\r\n });\r\n this.changeDetection = changeDetection;\r\n this._viewProviders = viewProviders;\r\n this._viewBindings = viewBindings;\r\n this.templateUrl = templateUrl;\r\n this.template = template;\r\n this.styleUrls = styleUrls;\r\n this.styles = styles;\r\n this.directives = directives;\r\n this.pipes = pipes;\r\n this.encapsulation = encapsulation;\r\n this.moduleId = moduleId;\r\n }\r\n Object.defineProperty(ComponentMetadata.prototype, \"viewProviders\", {\r\n /**\r\n * Defines the set of injectable objects that are visible to its view DOM children.\r\n *\r\n * ## Simple Example\r\n *\r\n * Here is an example of a class that can be injected:\r\n *\r\n * ```\r\n * class Greeter {\r\n * greet(name:string) {\r\n * return 'Hello ' + name + '!';\r\n * }\r\n * }\r\n *\r\n * @Directive({\r\n * selector: 'needs-greeter'\r\n * })\r\n * class NeedsGreeter {\r\n * greeter:Greeter;\r\n *\r\n * constructor(greeter:Greeter) {\r\n * this.greeter = greeter;\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'greet',\r\n * viewProviders: [\r\n * Greeter\r\n * ],\r\n * template: `<needs-greeter></needs-greeter>`,\r\n * directives: [NeedsGreeter]\r\n * })\r\n * class HelloWorld {\r\n * }\r\n *\r\n * ```\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._viewBindings) && this._viewBindings.length > 0 ? this._viewBindings :\r\n this._viewProviders;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentMetadata.prototype, \"viewBindings\", {\r\n get: function () { return this.viewProviders; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ComponentMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ComponentMetadata);\r\n return ComponentMetadata;\r\n}(DirectiveMetadata));\r\nexports.ComponentMetadata = ComponentMetadata;\r\n/**\r\n * Declare reusable pipe function.\r\n *\r\n * A \"pure\" pipe is only re-evaluated when either the input or any of the arguments change.\r\n *\r\n * When not specified, pipes default to being pure.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='pipe'}\r\n */\r\nvar PipeMetadata = (function (_super) {\r\n __extends(PipeMetadata, _super);\r\n function PipeMetadata(_a) {\r\n var name = _a.name, pure = _a.pure;\r\n _super.call(this);\r\n this.name = name;\r\n this._pure = pure;\r\n }\r\n Object.defineProperty(PipeMetadata.prototype, \"pure\", {\r\n get: function () { return lang_1.isPresent(this._pure) ? this._pure : true; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PipeMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], PipeMetadata);\r\n return PipeMetadata;\r\n}(metadata_1.InjectableMetadata));\r\nexports.PipeMetadata = PipeMetadata;\r\n/**\r\n * Declares a data-bound input property.\r\n *\r\n * Angular automatically updates data-bound properties during change detection.\r\n *\r\n * `InputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a component with two input properties.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'bank-account',\r\n * template: `\r\n * Bank Name: {{bankName}}\r\n * Account Id: {{id}}\r\n * `\r\n * })\r\n * class BankAccount {\r\n * @Input() bankName: string;\r\n * @Input('account-id') id: string;\r\n *\r\n * // this property is not bound, and won't be automatically updated by Angular\r\n * normalizedBankName: string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\r\n * `,\r\n * directives: [BankAccount]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar InputMetadata = (function () {\r\n function InputMetadata(\r\n /**\r\n * Name used when instantiating a component in the template.\r\n */\r\n bindingPropertyName) {\r\n this.bindingPropertyName = bindingPropertyName;\r\n }\r\n InputMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], InputMetadata);\r\n return InputMetadata;\r\n}());\r\nexports.InputMetadata = InputMetadata;\r\n/**\r\n * Declares an event-bound output property.\r\n *\r\n * When an output property emits an event, an event handler attached to that event\r\n * the template is invoked.\r\n *\r\n * `OutputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Directive({\r\n * selector: 'interval-dir',\r\n * })\r\n * class IntervalDir {\r\n * @Output() everySecond = new EventEmitter();\r\n * @Output('everyFiveSeconds') five5Secs = new EventEmitter();\r\n *\r\n * constructor() {\r\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\r\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\r\n * </interval-dir>\r\n * `,\r\n * directives: [IntervalDir]\r\n * })\r\n * class App {\r\n * everySecond() { console.log('second'); }\r\n * everyFiveSeconds() { console.log('five seconds'); }\r\n * }\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar OutputMetadata = (function () {\r\n function OutputMetadata(bindingPropertyName) {\r\n this.bindingPropertyName = bindingPropertyName;\r\n }\r\n OutputMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], OutputMetadata);\r\n return OutputMetadata;\r\n}());\r\nexports.OutputMetadata = OutputMetadata;\r\n/**\r\n * Declares a host property binding.\r\n *\r\n * Angular automatically checks host property bindings during change detection.\r\n * If a binding changes, it will update the host element of the directive.\r\n *\r\n * `HostBindingMetadata` takes an optional parameter that specifies the property\r\n * name of the host element that will be updated. When not provided,\r\n * the class property name is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a directive that sets the `valid` and `invalid` classes\r\n * on the DOM element that has ngModel directive on it.\r\n *\r\n * ```typescript\r\n * @Directive({selector: '[ngModel]'})\r\n * class NgModelStatus {\r\n * constructor(public control:NgModel) {}\r\n * @HostBinding('class.valid') get valid { return this.control.valid; }\r\n * @HostBinding('class.invalid') get invalid { return this.control.invalid; }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<input [(ngModel)]=\"prop\">`,\r\n * directives: [FORM_DIRECTIVES, NgModelStatus]\r\n * })\r\n * class App {\r\n * prop;\r\n * }\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar HostBindingMetadata = (function () {\r\n function HostBindingMetadata(hostPropertyName) {\r\n this.hostPropertyName = hostPropertyName;\r\n }\r\n HostBindingMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], HostBindingMetadata);\r\n return HostBindingMetadata;\r\n}());\r\nexports.HostBindingMetadata = HostBindingMetadata;\r\n/**\r\n * Declares a host listener.\r\n *\r\n * Angular will invoke the decorated method when the host element emits the specified event.\r\n *\r\n * If the decorated method returns `false`, then `preventDefault` is applied on the DOM\r\n * event.\r\n *\r\n * ### Example\r\n *\r\n * The following example declares a directive that attaches a click listener to the button and\r\n * counts clicks.\r\n *\r\n * ```typescript\r\n * @Directive({selector: 'button[counting]'})\r\n * class CountClicks {\r\n * numberOfClicks = 0;\r\n *\r\n * @HostListener('click', ['$event.target'])\r\n * onClick(btn) {\r\n * console.log(\"button\", btn, \"number of clicks:\", this.numberOfClicks++);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<button counting>Increment</button>`,\r\n * directives: [CountClicks]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar HostListenerMetadata = (function () {\r\n function HostListenerMetadata(eventName, args) {\r\n this.eventName = eventName;\r\n this.args = args;\r\n }\r\n HostListenerMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String, Array])\r\n ], HostListenerMetadata);\r\n return HostListenerMetadata;\r\n}());\r\nexports.HostListenerMetadata = HostListenerMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL2RpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUJBQWlELDBCQUEwQixDQUFDLENBQUE7QUFDNUUseUJBQWlDLCtCQUErQixDQUFDLENBQUE7QUFDakUsaUNBQXNDLG9DQUFvQyxDQUFDLENBQUE7QUFHM0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeVhHO0FBRUg7SUFBdUMscUNBQWtCO0lBNlZ2RCwyQkFBWSxFQVlOO1lBWk0sNEJBWU4sRUFaTyxzQkFBUSxFQUFFLGtCQUFNLEVBQUUsb0JBQU8sRUFBRSwwQkFBVSxFQUFFLGtCQUFNLEVBQUUsY0FBSSxFQUFFLHNCQUFRLEVBQUUsd0JBQVMsRUFBRSxzQkFBUSxFQUNsRixvQkFBTztRQVlsQixpQkFBTyxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8s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RyxDQUFDO0lBRmxEO1FBQUMsWUFBSyxFQUFFOzsyQkFBQTtJQUdSLDBCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFGWSwyQkFBbUIsc0JBRS9CLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBRUg7SUFDRSw4QkFBbUIsU0FBaUIsRUFBUyxJQUFlO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFXO0lBQUcsQ0FBQztJQUZsRTtRQUFDLFlBQUssRUFBRTs7NEJBQUE7SUFHUiwyQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksNEJBQW9CLHVCQUVoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIENPTlNULCBDT05TVF9FWFBSLCBUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlTWV0YWRhdGF9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL21ldGFkYXRhJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3l9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5cbi8qKlxuICogRGlyZWN0aXZlcyBhbGxvdyB5b3UgdG8gYXR0YWNoIGJlaGF2aW9yIHRvIGVsZW1lbnRzIGluIHRoZSBET00uXG4gKlxuICoge0BsaW5rIERpcmVjdGl2ZU1ldGFkYXRhfXMgd2l0aCBhbiBlbWJlZGRlZCB2aWV3IGFyZSBjYWxsZWQge0BsaW5rIENvbXBvbmVudE1ldGFkYXRhfXMuXG4gKlxuICogQSBkaXJlY3RpdmUgY29uc2lzdHMgb2YgYSBzaW5nbGUgZGlyZWN0aXZlIGFubm90YXRpb24gYW5kIGEgY29udHJvbGxlciBjbGFzcy4gV2hlbiB0aGVcbiAqIGRpcmVjdGl2ZSdzIGBzZWxlY3RvcmAgbWF0Y2hlc1xuICogZWxlbWVudHMgaW4gdGhlIERPTSwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcbiAqXG4gKiAxLiBGb3IgZWFjaCBkaXJlY3RpdmUsIHRoZSBgRWxlbWVudEluamVjdG9yYCBhdHRlbXB0cyB0byByZXNvbHZlIHRoZSBkaXJlY3RpdmUncyBjb25zdHJ1Y3RvclxuICogYXJndW1lbnRzLlxuICogMi4gQW5ndWxhciBpbnN0YW50aWF0ZXMgZGlyZWN0aXZlcyBmb3IgZWFjaCBtYXRjaGVkIGVsZW1lbnQgdXNpbmcgYEVsZW1lbnRJbmplY3RvcmAgaW4gYVxuICogZGVwdGgtZmlyc3Qgb3JkZXIsXG4gKiAgICBhcyBkZWNsYXJlZCBpbiB0aGUgSFRNTC5cbiAqXG4gKiAjIyBVbmRlcnN0YW5kaW5nIEhvdyBJbmplY3Rpb24gV29ya3NcbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUgc3RhZ2VzIG9mIGluamVjdGlvbiByZXNvbHV0aW9uLlxuICogLSAqUHJlLWV4aXN0aW5nIEluamVjdG9ycyo6XG4gKiAgIC0gVGhlIHRlcm1pbmFsIHtAbGluayBJbmplY3Rvcn0gY2Fubm90IHJlc29sdmUgZGVwZW5kZW5jaWVzLiBJdCBlaXRoZXIgdGhyb3dzIGFuIGVycm9yIG9yLCBpZlxuICogdGhlIGRlcGVuZGVuY3kgd2FzXG4gKiAgICAgc3BlY2lmaWVkIGFzIGBAT3B0aW9uYWxgLCByZXR1cm5zIGBudWxsYC5cbiAqICAgLSBUaGUgcGxhdGZvcm0gaW5qZWN0b3IgcmVzb2x2ZXMgYnJvd3NlciBzaW5nbGV0b24gcmVzb3VyY2VzLCBzdWNoIGFzOiBjb29raWVzLCB0aXRsZSxcbiAqIGxvY2F0aW9uLCBhbmQgb3RoZXJzLlxuICogLSAqQ29tcG9uZW50IEluamVjdG9ycyo6IEVhY2ggY29tcG9uZW50IGluc3RhbmNlIGhhcyBpdHMgb3duIHtAbGluayBJbmplY3Rvcn0sIGFuZCB0aGV5IGZvbGxvd1xuICogdGhlIHNhbWUgcGFyZW50LWNoaWxkIGhpZXJhcmNoeVxuICogICAgIGFzIHRoZSBjb21wb25lbnQgaW5zdGFuY2VzIGluIHRoZSBET00uXG4gKiAtICpFbGVtZW50IEluamVjdG9ycyo6IEVhY2ggY29tcG9uZW50IGluc3RhbmNlIGhhcyBhIFNoYWRvdyBET00uIFdpdGhpbiB0aGUgU2hhZG93IERPTSBlYWNoXG4gKiBlbGVtZW50IGhhcyBhbiBgRWxlbWVudEluamVjdG9yYFxuICogICAgIHdoaWNoIGZvbGxvdyB0aGUgc2FtZSBwYXJlbnQtY2hpbGQgaGllcmFyY2h5IGFzIHRoZSBET00gZWxlbWVudHMgdGhlbXNlbHZlcy5cbiAqXG4gKiBXaGVuIGEgdGVtcGxhdGUgaXMgaW5zdGFudGlhdGVkLCBpdCBhbHNvIG11c3QgaW5zdGFudGlhdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGlyZWN0aXZlcyBpbiBhXG4gKiBkZXB0aC1maXJzdCBvcmRlci4gVGhlXG4gKiBjdXJyZW50IGBFbGVtZW50SW5qZWN0b3JgIHJlc29sdmVzIHRoZSBjb25zdHJ1Y3RvciBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggZGlyZWN0aXZlLlxuICpcbiAqIEFuZ3VsYXIgdGhlbiByZXNvbHZlcyBkZXBlbmRlbmNpZXMgYXMgZm9sbG93cywgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhciBpbiB0aGVcbiAqIHtAbGluayBWaWV3TWV0YWRhdGF9OlxuICpcbiAqIDEuIERlcGVuZGVuY2llcyBvbiB0aGUgY3VycmVudCBlbGVtZW50XG4gKiAyLiBEZXBlbmRlbmNpZXMgb24gZWxlbWVudCBpbmplY3RvcnMgYW5kIHRoZWlyIHBhcmVudHMgdW50aWwgaXQgZW5jb3VudGVycyBhIFNoYWRvdyBET00gYm91bmRhcnlcbiAqIDMuIERlcGVuZGVuY2llcyBvbiBjb21wb25lbnQgaW5qZWN0b3JzIGFuZCB0aGVpciBwYXJlbnRzIHVudGlsIGl0IGVuY291bnRlcnMgdGhlIHJvb3QgY29tcG9uZW50XG4gKiA0LiBEZXBlbmRlbmNpZXMgb24gcHJlLWV4aXN0aW5nIGluamVjdG9yc1xuICpcbiAqXG4gKiBUaGUgYEVsZW1lbnRJbmplY3RvcmAgY2FuIGluamVjdCBvdGhlciBkaXJlY3RpdmVzLCBlbGVtZW50LXNwZWNpZmljIHNwZWNpYWwgb2JqZWN0cywgb3IgaXQgY2FuXG4gKiBkZWxlZ2F0ZSB0byB0aGUgcGFyZW50XG4gKiBpbmplY3Rvci5cbiAqXG4gKiBUbyBpbmplY3Qgb3RoZXIgZGlyZWN0aXZlcywgZGVjbGFyZSB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIGFzOlxuICogLSBgZGlyZWN0aXZlOkRpcmVjdGl2ZVR5cGVgOiBhIGRpcmVjdGl2ZSBvbiB0aGUgY3VycmVudCBlbGVtZW50IG9ubHlcbiAqIC0gYEBIb3N0KCkgZGlyZWN0aXZlOkRpcmVjdGl2ZVR5cGVgOiBhbnkgZGlyZWN0aXZlIHRoYXQgbWF0Y2hlcyB0aGUgdHlwZSBiZXR3ZWVuIHRoZSBjdXJyZW50XG4gKiBlbGVtZW50IGFuZCB0aGVcbiAqICAgIFNoYWRvdyBET00gcm9vdC5cbiAqIC0gYEBRdWVyeShEaXJlY3RpdmVUeXBlKSBxdWVyeTpRdWVyeUxpc3Q8RGlyZWN0aXZlVHlwZT5gOiBBIGxpdmUgY29sbGVjdGlvbiBvZiBkaXJlY3QgY2hpbGRcbiAqIGRpcmVjdGl2ZXMuXG4gKiAtIGBAUXVlcnlEZXNjZW5kYW50cyhEaXJlY3RpdmVUeXBlKSBxdWVyeTpRdWVyeUxpc3Q8RGlyZWN0aXZlVHlwZT5gOiBBIGxpdmUgY29sbGVjdGlvbiBvZiBhbnlcbiAqIGNoaWxkIGRpcmVjdGl2ZXMuXG4gKlxuICogVG8gaW5qZWN0IGVsZW1lbnQtc3BlY2lmaWMgc3BlY2lhbCBvYmplY3RzLCBkZWNsYXJlIHRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgYXM6XG4gKiAtIGBlbGVtZW50OiBFbGVtZW50UmVmYCB0byBvYnRhaW4gYSByZWZlcmVuY2UgdG8gbG9naWNhbCBlbGVtZW50IGluIHRoZSB2aWV3LlxuICogLSBgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZmAgdG8gY29udHJvbCBjaGlsZCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uLCBmb3JcbiAqIHtAbGluayBEaXJlY3RpdmVNZXRhZGF0YX0gZGlyZWN0aXZlcyBvbmx5XG4gKiAtIGBiaW5kaW5nUHJvcGFnYXRpb246IEJpbmRpbmdQcm9wYWdhdGlvbmAgdG8gY29udHJvbCBjaGFuZ2UgZGV0ZWN0aW9uIGluIGEgbW9yZSBncmFudWxhciB3YXkuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGhvdyBkZXBlbmRlbmN5IGluamVjdGlvbiByZXNvbHZlcyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgaW5cbiAqIHByYWN0aWNlLlxuICpcbiAqXG4gKiBBc3N1bWUgdGhpcyBIVE1MIHRlbXBsYXRlOlxuICpcbiAqIGBgYFxuICogPGRpdiBkZXBlbmRlbmN5PVwiMVwiPlxuICogICA8ZGl2IGRlcGVuZGVuY3k9XCIyXCI+XG4gKiAgICAgPGRpdiBkZXBlbmRlbmN5PVwiM1wiIG15LWRpcmVjdGl2ZT5cbiAqICAgICAgIDxkaXYgZGVwZW5kZW5jeT1cIjRcIj5cbiAqICAgICAgICAgPGRpdiBkZXBlbmRlbmN5PVwiNVwiPjwvZGl2PlxuICogICAgICAgPC9kaXY+XG4gKiAgICAgICA8ZGl2IGRlcGVuZGVuY3k9XCI2XCI+PC9kaXY+XG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBXaXRoIHRoZSBmb2xsb3dpbmcgYGRlcGVuZGVuY3lgIGRlY29yYXRvciBhbmQgYFNvbWVTZXJ2aWNlYCBpbmplY3RhYmxlIGNsYXNzLlxuICpcbiAqIGBgYFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgU29tZVNlcnZpY2Uge1xuICogfVxuICpcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ1tkZXBlbmRlbmN5XScsXG4gKiAgIGlucHV0czogW1xuICogICAgICdpZDogZGVwZW5kZW5jeSdcbiAqICAgXVxuICogfSlcbiAqIGNsYXNzIERlcGVuZGVuY3kge1xuICogICBpZDpzdHJpbmc7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBMZXQncyBzdGVwIHRocm91Z2ggdGhlIGRpZmZlcmVudCB3YXlzIGluIHdoaWNoIGBNeURpcmVjdGl2ZWAgY291bGQgYmUgZGVjbGFyZWQuLi5cbiAqXG4gKlxuICogIyMjIE5vIGluamVjdGlvblxuICpcbiAqIEhlcmUgdGhlIGNvbnN0cnVjdG9yIGlzIGRlY2xhcmVkIHdpdGggbm8gYXJndW1lbnRzLCB0aGVyZWZvcmUgbm90aGluZyBpcyBpbmplY3RlZCBpbnRvXG4gKiBgTXlEaXJlY3RpdmVgLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBubyBkZXBlbmRlbmNpZXMuXG4gKlxuICpcbiAqICMjIyBDb21wb25lbnQtbGV2ZWwgaW5qZWN0aW9uXG4gKlxuICogRGlyZWN0aXZlcyBjYW4gaW5qZWN0IGFueSBpbmplY3RhYmxlIGluc3RhbmNlIGZyb20gdGhlIGNsb3Nlc3QgY29tcG9uZW50IGluamVjdG9yIG9yIGFueSBvZiBpdHNcbiAqIHBhcmVudHMuXG4gKlxuICogSGVyZSwgdGhlIGNvbnN0cnVjdG9yIGRlY2xhcmVzIGEgcGFyYW1ldGVyLCBgc29tZVNlcnZpY2VgLCBhbmQgaW5qZWN0cyB0aGUgYFNvbWVTZXJ2aWNlYCB0eXBlXG4gKiBmcm9tIHRoZSBwYXJlbnRcbiAqIGNvbXBvbmVudCdzIGluamVjdG9yLlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3Ioc29tZVNlcnZpY2U6IFNvbWVTZXJ2aWNlKSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGVwZW5kZW5jeSBvbiBgU29tZVNlcnZpY2VgLlxuICpcbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgZGlyZWN0aXZlIGZyb20gdGhlIGN1cnJlbnQgZWxlbWVudFxuICpcbiAqIERpcmVjdGl2ZXMgY2FuIGluamVjdCBvdGhlciBkaXJlY3RpdmVzIGRlY2xhcmVkIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoZGVwZW5kZW5jeTogRGVwZW5kZW5jeSkge1xuICogICAgIGV4cGVjdChkZXBlbmRlbmN5LmlkKS50b0VxdWFsKDMpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGBEZXBlbmRlbmN5YCBkZWNsYXJlZCBhdCB0aGUgc2FtZSBlbGVtZW50LCBpbiB0aGlzIGNhc2VcbiAqIGBkZXBlbmRlbmN5PVwiM1wiYC5cbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgZGlyZWN0aXZlIGZyb20gYW55IGFuY2VzdG9yIGVsZW1lbnRzXG4gKlxuICogRGlyZWN0aXZlcyBjYW4gaW5qZWN0IG90aGVyIGRpcmVjdGl2ZXMgZGVjbGFyZWQgb24gYW55IGFuY2VzdG9yIGVsZW1lbnQgKGluIHRoZSBjdXJyZW50IFNoYWRvd1xuICogRE9NKSwgaS5lLiBvbiB0aGUgY3VycmVudCBlbGVtZW50LCB0aGVcbiAqIHBhcmVudCBlbGVtZW50LCBvciBpdHMgcGFyZW50cy5cbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgZGVwZW5kZW5jeTogRGVwZW5kZW5jeSkge1xuICogICAgIGV4cGVjdChkZXBlbmRlbmN5LmlkKS50b0VxdWFsKDIpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgQEhvc3RgIGNoZWNrcyB0aGUgY3VycmVudCBlbGVtZW50LCB0aGUgcGFyZW50LCBhcyB3ZWxsIGFzIGl0cyBwYXJlbnRzIHJlY3Vyc2l2ZWx5LiBJZlxuICogYGRlcGVuZGVuY3k9XCIyXCJgIGRpZG4ndFxuICogZXhpc3Qgb24gdGhlIGRpcmVjdCBwYXJlbnQsIHRoaXMgaW5qZWN0aW9uIHdvdWxkXG4gKiBoYXZlIHJldHVybmVkXG4gKiBgZGVwZW5kZW5jeT1cIjFcImAuXG4gKlxuICpcbiAqICMjIyBJbmplY3RpbmcgYSBsaXZlIGNvbGxlY3Rpb24gb2YgZGlyZWN0IGNoaWxkIGRpcmVjdGl2ZXNcbiAqXG4gKlxuICogQSBkaXJlY3RpdmUgY2FuIGFsc28gcXVlcnkgZm9yIG90aGVyIGNoaWxkIGRpcmVjdGl2ZXMuIFNpbmNlIHBhcmVudCBkaXJlY3RpdmVzIGFyZSBpbnN0YW50aWF0ZWRcbiAqIGJlZm9yZSBjaGlsZCBkaXJlY3RpdmVzLCBhIGRpcmVjdGl2ZSBjYW4ndCBzaW1wbHkgaW5qZWN0IHRoZSBsaXN0IG9mIGNoaWxkIGRpcmVjdGl2ZXMuIEluc3RlYWQsXG4gKiB0aGUgZGlyZWN0aXZlIGluamVjdHMgYSB7QGxpbmsgUXVlcnlMaXN0fSwgd2hpY2ggdXBkYXRlcyBpdHMgY29udGVudHMgYXMgY2hpbGRyZW4gYXJlIGFkZGVkLFxuICogcmVtb3ZlZCwgb3IgbW92ZWQgYnkgYSBkaXJlY3RpdmUgdGhhdCB1c2VzIGEge0BsaW5rIFZpZXdDb250YWluZXJSZWZ9IHN1Y2ggYXMgYSBgbmdGb3JgLCBhblxuICogYG5nSWZgLCBvciBhbiBgbmdTd2l0Y2hgLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKEBRdWVyeShEZXBlbmRlbmN5KSBkZXBlbmRlbmNpZXM6UXVlcnlMaXN0PERlcGVuZGVuY3k+KSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEge0BsaW5rIFF1ZXJ5TGlzdH0gd2hpY2ggY29udGFpbnMgYERlcGVuZGVuY3lgIDQgYW5kXG4gKiBgRGVwZW5kZW5jeWAgNi4gSGVyZSwgYERlcGVuZGVuY3lgIDUgd291bGQgbm90IGJlIGluY2x1ZGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZC5cbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgbGl2ZSBjb2xsZWN0aW9uIG9mIGRlc2NlbmRhbnQgZGlyZWN0aXZlc1xuICpcbiAqIEJ5IHBhc3NpbmcgdGhlIGRlc2NlbmRhbnQgZmxhZyB0byBgQFF1ZXJ5YCBhYm92ZSwgd2UgY2FuIGluY2x1ZGUgdGhlIGNoaWxkcmVuIG9mIHRoZSBjaGlsZFxuICogZWxlbWVudHMuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KERlcGVuZGVuY3ksIHtkZXNjZW5kYW50czogdHJ1ZX0pIGRlcGVuZGVuY2llczpRdWVyeUxpc3Q8RGVwZW5kZW5jeT4pIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBRdWVyeSB3aGljaCB3b3VsZCBjb250YWluIGBEZXBlbmRlbmN5YCA0LCA1IGFuZCA2LlxuICpcbiAqICMjIyBPcHRpb25hbCBpbmplY3Rpb25cbiAqXG4gKiBUaGUgbm9ybWFsIGJlaGF2aW9yIG9mIGRpcmVjdGl2ZXMgaXMgdG8gcmV0dXJuIGFuIGVycm9yIHdoZW4gYSBzcGVjaWZpZWQgZGVwZW5kZW5jeSBjYW5ub3QgYmVcbiAqIHJlc29sdmVkLiBJZiB5b3VcbiAqIHdvdWxkIGxpa2UgdG8gaW5qZWN0IGBudWxsYCBvbiB1bnJlc29sdmVkIGRlcGVuZGVuY3kgaW5zdGVhZCwgeW91IGNhbiBhbm5vdGF0ZSB0aGF0IGRlcGVuZGVuY3lcbiAqIHdpdGggYEBPcHRpb25hbCgpYC5cbiAqIFRoaXMgZXhwbGljaXRseSBwZXJtaXRzIHRoZSBhdXRob3Igb2YgYSB0ZW1wbGF0ZSB0byB0cmVhdCBzb21lIG9mIHRoZSBzdXJyb3VuZGluZyBkaXJlY3RpdmVzIGFzXG4gKiBvcHRpb25hbC5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBkZXBlbmRlbmN5OkRlcGVuZGVuY3kpIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBgRGVwZW5kZW5jeWAgZGlyZWN0aXZlIGZvdW5kIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKiBJZiBub25lIGNhbiBiZVxuICogZm91bmQsIHRoZSBpbmplY3RvciBzdXBwbGllcyBgbnVsbGAgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEhlcmUgd2UgdXNlIGEgZGVjb3JhdG9yIGRpcmVjdGl2ZSB0byBzaW1wbHkgZGVmaW5lIGJhc2ljIHRvb2wtdGlwIGJlaGF2aW9yLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnW3Rvb2x0aXBdJyxcbiAqICAgaW5wdXRzOiBbXG4gKiAgICAgJ3RleHQ6IHRvb2x0aXAnXG4gKiAgIF0sXG4gKiAgIGhvc3Q6IHtcbiAqICAgICAnKG1vdXNlZW50ZXIpJzogJ29uTW91c2VFbnRlcigpJyxcbiAqICAgICAnKG1vdXNlbGVhdmUpJzogJ29uTW91c2VMZWF2ZSgpJ1xuICogICB9XG4gKiB9KVxuICogY2xhc3MgVG9vbHRpcHtcbiAqICAgdGV4dDpzdHJpbmc7XG4gKiAgIG92ZXJsYXk6T3ZlcmxheTsgLy8gTk9UIFlFVCBJTVBMRU1FTlRFRFxuICogICBvdmVybGF5TWFuYWdlcjpPdmVybGF5TWFuYWdlcjsgLy8gTk9UIFlFVCBJTVBMRU1FTlRFRFxuICpcbiAqICAgY29uc3RydWN0b3Iob3ZlcmxheU1hbmFnZXI6T3ZlcmxheU1hbmFnZXIpIHtcbiAqICAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICogICB9XG4gKlxuICogICBvbk1vdXNlRW50ZXIoKSB7XG4gKiAgICAgLy8gZXhhY3Qgc2lnbmF0dXJlIHRvIGJlIGRldGVybWluZWRcbiAqICAgICB0aGlzLm92ZXJsYXkgPSB0aGlzLm92ZXJsYXlNYW5hZ2VyLm9wZW4odGV4dCwgLi4uKTtcbiAqICAgfVxuICpcbiAqICAgb25Nb3VzZUxlYXZlKCkge1xuICogICAgIHRoaXMub3ZlcmxheS5jbG9zZSgpO1xuICogICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogSW4gb3VyIEhUTUwgdGVtcGxhdGUsIHdlIGNhbiB0aGVuIGFkZCB0aGlzIGJlaGF2aW9yIHRvIGEgYDxkaXY+YCBvciBhbnkgb3RoZXIgZWxlbWVudCB3aXRoIHRoZVxuICogYHRvb2x0aXBgIHNlbGVjdG9yLFxuICogbGlrZSBzbzpcbiAqXG4gKiBgYGBcbiAqIDxkaXYgdG9vbHRpcD1cInNvbWUgdGV4dCBoZXJlXCI+PC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBEaXJlY3RpdmVzIGNhbiBhbHNvIGNvbnRyb2wgdGhlIGluc3RhbnRpYXRpb24sIGRlc3RydWN0aW9uLCBhbmQgcG9zaXRpb25pbmcgb2YgaW5saW5lIHRlbXBsYXRlXG4gKiBlbGVtZW50czpcbiAqXG4gKiBBIGRpcmVjdGl2ZSB1c2VzIGEge0BsaW5rIFZpZXdDb250YWluZXJSZWZ9IHRvIGluc3RhbnRpYXRlLCBpbnNlcnQsIG1vdmUsIGFuZCBkZXN0cm95IHZpZXdzIGF0XG4gKiBydW50aW1lLlxuICogVGhlIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfSBpcyBjcmVhdGVkIGFzIGEgcmVzdWx0IG9mIGA8dGVtcGxhdGU+YCBlbGVtZW50LCBhbmQgcmVwcmVzZW50cyBhXG4gKiBsb2NhdGlvbiBpbiB0aGUgY3VycmVudCB2aWV3XG4gKiB3aGVyZSB0aGVzZSBhY3Rpb25zIGFyZSBwZXJmb3JtZWQuXG4gKlxuICogVmlld3MgYXJlIGFsd2F5cyBjcmVhdGVkIGFzIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IHtAbGluayBWaWV3TWV0YWRhdGF9LCBhbmQgYXMgc2libGluZ3Mgb2YgdGhlXG4gKiBgPHRlbXBsYXRlPmAgZWxlbWVudC4gVGh1cyBhXG4gKiBkaXJlY3RpdmUgaW4gYSBjaGlsZCB2aWV3IGNhbm5vdCBpbmplY3QgdGhlIGRpcmVjdGl2ZSB0aGF0IGNyZWF0ZWQgaXQuXG4gKlxuICogU2luY2UgZGlyZWN0aXZlcyB0aGF0IGNyZWF0ZSB2aWV3cyB2aWEgVmlld0NvbnRhaW5lcnMgYXJlIGNvbW1vbiBpbiBBbmd1bGFyLCBhbmQgdXNpbmcgdGhlIGZ1bGxcbiAqIGA8dGVtcGxhdGU+YCBlbGVtZW50IHN5bnRheCBpcyB3b3JkeSwgQW5ndWxhclxuICogYWxzbyBzdXBwb3J0cyBhIHNob3J0aGFuZCBub3RhdGlvbjogYDxsaSAqZm9vPVwiYmFyXCI+YCBhbmQgYDxsaSB0ZW1wbGF0ZT1cImZvbzogYmFyXCI+YCBhcmVcbiAqIGVxdWl2YWxlbnQuXG4gKlxuICogVGh1cyxcbiAqXG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPGxpICpmb289XCJiYXJcIiB0aXRsZT1cInRleHRcIj48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIEV4cGFuZHMgaW4gdXNlIHRvOlxuICpcbiAqIGBgYFxuICogPHVsPlxuICogICA8dGVtcGxhdGUgW2Zvb109XCJiYXJcIj5cbiAqICAgICA8bGkgdGl0bGU9XCJ0ZXh0XCI+PC9saT5cbiAqICAgPC90ZW1wbGF0ZT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBOb3RpY2UgdGhhdCBhbHRob3VnaCB0aGUgc2hvcnRoYW5kIHBsYWNlcyBgKmZvbz1cImJhclwiYCB3aXRoaW4gdGhlIGA8bGk+YCBlbGVtZW50LCB0aGUgYmluZGluZyBmb3JcbiAqIHRoZSBkaXJlY3RpdmVcbiAqIGNvbnRyb2xsZXIgaXMgY29ycmVjdGx5IGluc3RhbnRpYXRlZCBvbiB0aGUgYDx0ZW1wbGF0ZT5gIGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIGA8bGk+YCBlbGVtZW50LlxuICpcbiAqICMjIExpZmVjeWNsZSBob29rc1xuICpcbiAqIFdoZW4gdGhlIGRpcmVjdGl2ZSBjbGFzcyBpbXBsZW1lbnRzIHNvbWUge0BsaW5rIC4uLy4uL2d1aWRlL2xpZmVjeWNsZS1ob29rcy5odG1sfSB0aGUgY2FsbGJhY2tzXG4gKiBhcmUgY2FsbGVkIGJ5IHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIGF0IGRlZmluZWQgcG9pbnRzIGluIHRpbWUgZHVyaW5nIHRoZSBsaWZlIG9mIHRoZSBkaXJlY3RpdmUuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBMZXQncyBzdXBwb3NlIHdlIHdhbnQgdG8gaW1wbGVtZW50IHRoZSBgdW5sZXNzYCBiZWhhdmlvciwgdG8gY29uZGl0aW9uYWxseSBpbmNsdWRlIGEgdGVtcGxhdGUuXG4gKlxuICogSGVyZSBpcyBhIHNpbXBsZSBkaXJlY3RpdmUgdGhhdCB0cmlnZ2VycyBvbiBhbiBgdW5sZXNzYCBzZWxlY3RvcjpcbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ1t1bmxlc3NdJyxcbiAqICAgaW5wdXRzOiBbJ3VubGVzcyddXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFVubGVzcyB7XG4gKiAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gKiAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjtcbiAqICAgcHJldkNvbmRpdGlvbjogYm9vbGVhbjtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZikge1xuICogICAgIHRoaXMudmlld0NvbnRhaW5lciA9IHZpZXdDb250YWluZXI7XG4gKiAgICAgdGhpcy50ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICogICAgIHRoaXMucHJldkNvbmRpdGlvbiA9IG51bGw7XG4gKiAgIH1cbiAqXG4gKiAgIHNldCB1bmxlc3MobmV3Q29uZGl0aW9uKSB7XG4gKiAgICAgaWYgKG5ld0NvbmRpdGlvbiAmJiAoaXNCbGFuayh0aGlzLnByZXZDb25kaXRpb24pIHx8ICF0aGlzLnByZXZDb25kaXRpb24pKSB7XG4gKiAgICAgICB0aGlzLnByZXZDb25kaXRpb24gPSB0cnVlO1xuICogICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gKiAgICAgfSBlbHNlIGlmICghbmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMucHJldkNvbmRpdGlvbikgfHwgdGhpcy5wcmV2Q29uZGl0aW9uKSkge1xuICogICAgICAgdGhpcy5wcmV2Q29uZGl0aW9uID0gZmFsc2U7XG4gKiAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlKHRoaXMudGVtcGxhdGVSZWYpO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogV2UgY2FuIHRoZW4gdXNlIHRoaXMgYHVubGVzc2Agc2VsZWN0b3IgaW4gYSB0ZW1wbGF0ZTpcbiAqIGBgYFxuICogPHVsPlxuICogICA8bGkgKnVubGVzcz1cImV4cHJcIj48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIE9uY2UgdGhlIGRpcmVjdGl2ZSBpbnN0YW50aWF0ZXMgdGhlIGNoaWxkIHZpZXcsIHRoZSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIHRoZSB0ZW1wbGF0ZSBleHBhbmRzXG4gKiBhbmQgdGhlIHJlc3VsdCBpczpcbiAqXG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPHRlbXBsYXRlIFt1bmxlc3NdPVwiZXhwXCI+XG4gKiAgICAgPGxpPjwvbGk+XG4gKiAgIDwvdGVtcGxhdGU+XG4gKiAgIDxsaT48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIE5vdGUgYWxzbyB0aGF0IGFsdGhvdWdoIHRoZSBgPGxpPjwvbGk+YCB0ZW1wbGF0ZSBzdGlsbCBleGlzdHMgaW5zaWRlIHRoZSBgPHRlbXBsYXRlPjwvdGVtcGxhdGU+YCxcbiAqIHRoZSBpbnN0YW50aWF0ZWRcbiAqIHZpZXcgb2NjdXJzIG9uIHRoZSBzZWNvbmQgYDxsaT48L2xpPmAgd2hpY2ggaXMgYSBzaWJsaW5nIHRvIHRoZSBgPHRlbXBsYXRlPmAgZWxlbWVudC5cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBEaXJlY3RpdmVNZXRhZGF0YSBleHRlbmRzIEluamVjdGFibGVNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgQ1NTIHNlbGVjdG9yIHRoYXQgdHJpZ2dlcnMgdGhlIGluc3RhbnRpYXRpb24gb2YgYSBkaXJlY3RpdmUuXG4gICAqXG4gICAqIEFuZ3VsYXIgb25seSBhbGxvd3MgZGlyZWN0aXZlcyB0byB0cmlnZ2VyIG9uIENTUyBzZWxlY3RvcnMgdGhhdCBkbyBub3QgY3Jvc3MgZWxlbWVudFxuICAgKiBib3VuZGFyaWVzLlxuICAgKlxuICAgKiBgc2VsZWN0b3JgIG1heSBiZSBkZWNsYXJlZCBhcyBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiAgICpcbiAgICogLSBgZWxlbWVudC1uYW1lYDogc2VsZWN0IGJ5IGVsZW1lbnQgbmFtZS5cbiAgICogLSBgLmNsYXNzYDogc2VsZWN0IGJ5IGNsYXNzIG5hbWUuXG4gICAqIC0gYFthdHRyaWJ1dGVdYDogc2VsZWN0IGJ5IGF0dHJpYnV0ZSBuYW1lLlxuICAgKiAtIGBbYXR0cmlidXRlPXZhbHVlXWA6IHNlbGVjdCBieSBhdHRyaWJ1dGUgbmFtZSBhbmQgdmFsdWUuXG4gICAqIC0gYDpub3Qoc3ViX3NlbGVjdG9yKWA6IHNlbGVjdCBvbmx5IGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IG1hdGNoIHRoZSBgc3ViX3NlbGVjdG9yYC5cbiAgICogLSBgc2VsZWN0b3IxLCBzZWxlY3RvcjJgOiBzZWxlY3QgaWYgZWl0aGVyIGBzZWxlY3RvcjFgIG9yIGBzZWxlY3RvcjJgIG1hdGNoZXMuXG4gICAqXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIFN1cHBvc2Ugd2UgaGF2ZSBhIGRpcmVjdGl2ZSB3aXRoIGFuIGBpbnB1dFt0eXBlPXRleHRdYCBzZWxlY3Rvci5cbiAgICpcbiAgICogQW5kIHRoZSBmb2xsb3dpbmcgSFRNTDpcbiAgICpcbiAgICogYGBgaHRtbFxuICAgKiA8Zm9ybT5cbiAgICogICA8aW5wdXQgdHlwZT1cInRleHRcIj5cbiAgICogICA8aW5wdXQgdHlwZT1cInJhZGlvXCI+XG4gICAqIDxmb3JtPlxuICAgKiBgYGBcbiAgICpcbiAgICogVGhlIGRpcmVjdGl2ZSB3b3VsZCBvbmx5IGJlIGluc3RhbnRpYXRlZCBvbiB0aGUgYDxpbnB1dCB0eXBlPVwidGV4dFwiPmAgZWxlbWVudC5cbiAgICpcbiAgICovXG4gIHNlbGVjdG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudW1lcmF0ZXMgdGhlIHNldCBvZiBkYXRhLWJvdW5kIGlucHV0IHByb3BlcnRpZXMgZm9yIGEgZGlyZWN0aXZlXG4gICAqXG4gICAqIEFuZ3VsYXIgYXV0b21hdGljYWxseSB1cGRhdGVzIGlucHV0IHByb3BlcnRpZXMgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqXG4gICAqIFRoZSBgaW5wdXRzYCBwcm9wZXJ0eSBkZWZpbmVzIGEgc2V0IG9mIGBkaXJlY3RpdmVQcm9wZXJ0eWAgdG8gYGJpbmRpbmdQcm9wZXJ0eWBcbiAgICogY29uZmlndXJhdGlvbjpcbiAgICpcbiAgICogLSBgZGlyZWN0aXZlUHJvcGVydHlgIHNwZWNpZmllcyB0aGUgY29tcG9uZW50IHByb3BlcnR5IHdoZXJlIHRoZSB2YWx1ZSBpcyB3cml0dGVuLlxuICAgKiAtIGBiaW5kaW5nUHJvcGVydHlgIHNwZWNpZmllcyB0aGUgRE9NIHByb3BlcnR5IHdoZXJlIHRoZSB2YWx1ZSBpcyByZWFkIGZyb20uXG4gICAqXG4gICAqIFdoZW4gYGJpbmRpbmdQcm9wZXJ0eWAgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGVxdWFsIHRvIGBkaXJlY3RpdmVQcm9wZXJ0eWAuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9pdmhmWFk/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYSBjb21wb25lbnQgd2l0aCB0d28gZGF0YS1ib3VuZCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnYmFuay1hY2NvdW50JyxcbiAgICogICBpbnB1dHM6IFsnYmFua05hbWUnLCAnaWQ6IGFjY291bnQtaWQnXSxcbiAgICogICB0ZW1wbGF0ZTogYFxuICAgKiAgICAgQmFuayBOYW1lOiB7e2JhbmtOYW1lfX1cbiAgICogICAgIEFjY291bnQgSWQ6IHt7aWR9fVxuICAgKiAgIGBcbiAgICogfSlcbiAgICogY2xhc3MgQmFua0FjY291bnQge1xuICAgKiAgIGJhbmtOYW1lOiBzdHJpbmc7XG4gICAqICAgaWQ6IHN0cmluZztcbiAgICpcbiAgICogICAvLyB0aGlzIHByb3BlcnR5IGlzIG5vdCBib3VuZCwgYW5kIHdvbid0IGJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCBieSBBbmd1bGFyXG4gICAqICAgbm9ybWFsaXplZEJhbmtOYW1lOiBzdHJpbmc7XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHRlbXBsYXRlOiBgXG4gICAqICAgICA8YmFuay1hY2NvdW50IGJhbmstbmFtZT1cIlJCQ1wiIGFjY291bnQtaWQ9XCI0NzQ3XCI+PC9iYW5rLWFjY291bnQ+XG4gICAqICAgYCxcbiAgICogICBkaXJlY3RpdmVzOiBbQmFua0FjY291bnRdXG4gICAqIH0pXG4gICAqIGNsYXNzIEFwcCB7fVxuICAgKlxuICAgKiBib290c3RyYXAoQXBwKTtcbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBnZXQgaW5wdXRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX3Byb3BlcnRpZXMpICYmIHRoaXMuX3Byb3BlcnRpZXMubGVuZ3RoID4gMCA/IHRoaXMuX3Byb3BlcnRpZXMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXRzO1xuICB9XG4gIGdldCBwcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuaW5wdXRzOyB9XG4gIHByaXZhdGUgX2lucHV0czogc3RyaW5nW107XG4gIHByaXZhdGUgX3Byb3BlcnRpZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbnVtZXJhdGVzIHRoZSBzZXQgb2YgZXZlbnQtYm91bmQgb3V0cHV0IHByb3BlcnRpZXMuXG4gICAqXG4gICAqIFdoZW4gYW4gb3V0cHV0IHByb3BlcnR5IGVtaXRzIGFuIGV2ZW50LCBhbiBldmVudCBoYW5kbGVyIGF0dGFjaGVkIHRvIHRoYXQgZXZlbnRcbiAgICogdGhlIHRlbXBsYXRlIGlzIGludm9rZWQuXG4gICAqXG4gICAqIFRoZSBgb3V0cHV0c2AgcHJvcGVydHkgZGVmaW5lcyBhIHNldCBvZiBgZGlyZWN0aXZlUHJvcGVydHlgIHRvIGBiaW5kaW5nUHJvcGVydHlgXG4gICAqIGNvbmZpZ3VyYXRpb246XG4gICAqXG4gICAqIC0gYGRpcmVjdGl2ZVByb3BlcnR5YCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBwcm9wZXJ0eSB0aGF0IGVtaXRzIGV2ZW50cy5cbiAgICogLSBgYmluZGluZ1Byb3BlcnR5YCBzcGVjaWZpZXMgdGhlIERPTSBwcm9wZXJ0eSB0aGUgZXZlbnQgaGFuZGxlciBpcyBhdHRhY2hlZCB0by5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2Q1Q05xNz9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnaW50ZXJ2YWwtZGlyJyxcbiAgICogICBvdXRwdXRzOiBbJ2V2ZXJ5U2Vjb25kJywgJ2ZpdmU1U2VjczogZXZlcnlGaXZlU2Vjb25kcyddXG4gICAqIH0pXG4gICAqIGNsYXNzIEludGVydmFsRGlyIHtcbiAgICogICBldmVyeVNlY29uZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICogICBmaXZlNVNlY3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IoKSB7XG4gICAqICAgICBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmV2ZXJ5U2Vjb25kLmVtaXQoXCJldmVudFwiKSwgMTAwMCk7XG4gICAqICAgICBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmZpdmU1U2Vjcy5lbWl0KFwiZXZlbnRcIiksIDUwMDApO1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ2FwcCcsXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIDxpbnRlcnZhbC1kaXIgKGV2ZXJ5U2Vjb25kKT1cImV2ZXJ5U2Vjb25kKClcIiAoZXZlcnlGaXZlU2Vjb25kcyk9XCJldmVyeUZpdmVTZWNvbmRzKClcIj5cbiAgICogICAgIDwvaW50ZXJ2YWwtZGlyPlxuICAgKiAgIGAsXG4gICAqICAgZGlyZWN0aXZlczogW0ludGVydmFsRGlyXVxuICAgKiB9KVxuICAgKiBjbGFzcyBBcHAge1xuICAgKiAgIGV2ZXJ5U2Vjb25kKCkgeyBjb25zb2xlLmxvZygnc2Vjb25kJyk7IH1cbiAgICogICBldmVyeUZpdmVTZWNvbmRzKCkgeyBjb25zb2xlLmxvZygnZml2ZSBzZWNvbmRzJyk7IH1cbiAgICogfVxuICAgKiBib290c3RyYXAoQXBwKTtcbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBnZXQgb3V0cHV0cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9ldmVudHMpICYmIHRoaXMuX2V2ZW50cy5sZW5ndGggPiAwID8gdGhpcy5fZXZlbnRzIDogdGhpcy5fb3V0cHV0cztcbiAgfVxuICBnZXQgZXZlbnRzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMub3V0cHV0czsgfVxuICBwcml2YXRlIF9vdXRwdXRzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfZXZlbnRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZXZlbnRzLCBhY3Rpb25zLCBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gdGhlIGhvc3QgZWxlbWVudC5cbiAgICpcbiAgICogIyMgSG9zdCBMaXN0ZW5lcnNcbiAgICpcbiAgICogU3BlY2lmaWVzIHdoaWNoIERPTSBldmVudHMgYSBkaXJlY3RpdmUgbGlzdGVucyB0byB2aWEgYSBzZXQgb2YgYChldmVudClgIHRvIGBtZXRob2RgXG4gICAqIGtleS12YWx1ZSBwYWlyczpcbiAgICpcbiAgICogLSBgZXZlbnRgOiB0aGUgRE9NIGV2ZW50IHRoYXQgdGhlIGRpcmVjdGl2ZSBsaXN0ZW5zIHRvLlxuICAgKiAtIGBzdGF0ZW1lbnRgOiB0aGUgc3RhdGVtZW50IHRvIGV4ZWN1dGUgd2hlbiB0aGUgZXZlbnQgb2NjdXJzLlxuICAgKiBJZiB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgc3RhdGVtZW50IHJldHVybnMgYGZhbHNlYCwgdGhlbiBgcHJldmVudERlZmF1bHRgaXMgYXBwbGllZCBvbiB0aGUgRE9NXG4gICAqIGV2ZW50LlxuICAgKlxuICAgKiBUbyBsaXN0ZW4gdG8gZ2xvYmFsIGV2ZW50cywgYSB0YXJnZXQgbXVzdCBiZSBhZGRlZCB0byB0aGUgZXZlbnQgbmFtZS5cbiAgICogVGhlIHRhcmdldCBjYW4gYmUgYHdpbmRvd2AsIGBkb2N1bWVudGAgb3IgYGJvZHlgLlxuICAgKlxuICAgKiBXaGVuIHdyaXRpbmcgYSBkaXJlY3RpdmUgZXZlbnQgYmluZGluZywgeW91IGNhbiBhbHNvIHJlZmVyIHRvIHRoZSAkZXZlbnQgbG9jYWwgdmFyaWFibGUuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9EbEE1S1U/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlY2xhcmVzIGEgZGlyZWN0aXZlIHRoYXQgYXR0YWNoZXMgYSBjbGljayBsaXN0ZW5lciB0byB0aGUgYnV0dG9uIGFuZFxuICAgKiBjb3VudHMgY2xpY2tzLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnYnV0dG9uW2NvdW50aW5nXScsXG4gICAqICAgaG9zdDoge1xuICAgKiAgICAgJyhjbGljayknOiAnb25DbGljaygkZXZlbnQudGFyZ2V0KSdcbiAgICogICB9XG4gICAqIH0pXG4gICAqIGNsYXNzIENvdW50Q2xpY2tzIHtcbiAgICogICBudW1iZXJPZkNsaWNrcyA9IDA7XG4gICAqXG4gICAqICAgb25DbGljayhidG4pIHtcbiAgICogICAgIGNvbnNvbGUubG9nKFwiYnV0dG9uXCIsIGJ0biwgXCJudW1iZXIgb2YgY2xpY2tzOlwiLCB0aGlzLm51bWJlck9mQ2xpY2tzKyspO1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ2FwcCcsXG4gICAqICAgdGVtcGxhdGU6IGA8YnV0dG9uIGNvdW50aW5nPkluY3JlbWVudDwvYnV0dG9uPmAsXG4gICAqICAgZGlyZWN0aXZlczogW0NvdW50Q2xpY2tzXVxuICAgKiB9KVxuICAgKiBjbGFzcyBBcHAge31cbiAgICpcbiAgICogYm9vdHN0cmFwKEFwcCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiAjIyBIb3N0IFByb3BlcnR5IEJpbmRpbmdzXG4gICAqXG4gICAqIFNwZWNpZmllcyB3aGljaCBET00gcHJvcGVydGllcyBhIGRpcmVjdGl2ZSB1cGRhdGVzLlxuICAgKlxuICAgKiBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgY2hlY2tzIGhvc3QgcHJvcGVydHkgYmluZGluZ3MgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqIElmIGEgYmluZGluZyBjaGFuZ2VzLCBpdCB3aWxsIHVwZGF0ZSB0aGUgaG9zdCBlbGVtZW50IG9mIHRoZSBkaXJlY3RpdmUuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9nTmcwRUQ/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYSBkaXJlY3RpdmUgdGhhdCBzZXRzIHRoZSBgdmFsaWRgIGFuZCBgaW52YWxpZGAgY2xhc3Nlc1xuICAgKiBvbiB0aGUgRE9NIGVsZW1lbnQgdGhhdCBoYXMgbmdNb2RlbCBkaXJlY3RpdmUgb24gaXQuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogQERpcmVjdGl2ZSh7XG4gICAqICAgc2VsZWN0b3I6ICdbbmdNb2RlbF0nLFxuICAgKiAgIGhvc3Q6IHtcbiAgICogICAgICdbY2xhc3MudmFsaWRdJzogJ3ZhbGlkJyxcbiAgICogICAgICdbY2xhc3MuaW52YWxpZF0nOiAnaW52YWxpZCdcbiAgICogICB9XG4gICAqIH0pXG4gICAqIGNsYXNzIE5nTW9kZWxTdGF0dXMge1xuICAgKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250cm9sOk5nTW9kZWwpIHt9XG4gICAqICAgZ2V0IHZhbGlkIHsgcmV0dXJuIHRoaXMuY29udHJvbC52YWxpZDsgfVxuICAgKiAgIGdldCBpbnZhbGlkIHsgcmV0dXJuIHRoaXMuY29udHJvbC5pbnZhbGlkOyB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHRlbXBsYXRlOiBgPGlucHV0IFsobmdNb2RlbCldPVwicHJvcFwiPmAsXG4gICAqICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFUywgTmdNb2RlbFN0YXR1c11cbiAgICogfSlcbiAgICogY2xhc3MgQXBwIHtcbiAgICogICBwcm9wO1xuICAgKiB9XG4gICAqXG4gICAqIGJvb3RzdHJhcChBcHApO1xuICAgKiBgYGBcbiAgICpcbiAgICogIyMgQXR0cmlidXRlc1xuICAgKlxuICAgKiBTcGVjaWZpZXMgc3RhdGljIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgcHJvcGFnYXRlZCB0byBhIGhvc3QgZWxlbWVudC5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogSW4gdGhpcyBleGFtcGxlIHVzaW5nIGBteS1idXR0b25gIGRpcmVjdGl2ZSAoZXguOiBgPGRpdiBteS1idXR0b24+PC9kaXY+YCkgb24gYSBob3N0IGVsZW1lbnRcbiAgICogKGhlcmU6IGA8ZGl2PmAgKSB3aWxsIGVuc3VyZSB0aGF0IHRoaXMgZWxlbWVudCB3aWxsIGdldCB0aGUgXCJidXR0b25cIiByb2xlLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnW215LWJ1dHRvbl0nLFxuICAgKiAgIGhvc3Q6IHtcbiAgICogICAgICdyb2xlJzogJ2J1dHRvbidcbiAgICogICB9XG4gICAqIH0pXG4gICAqIGNsYXNzIE15QnV0dG9uIHtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGhvc3Q6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzZXQgb2YgaW5qZWN0YWJsZSBvYmplY3RzIHRoYXQgYXJlIHZpc2libGUgdG8gYSBEaXJlY3RpdmUgYW5kIGl0cyBsaWdodCBET01cbiAgICogY2hpbGRyZW4uXG4gICAqXG4gICAqICMjIFNpbXBsZSBFeGFtcGxlXG4gICAqXG4gICAqIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIGNsYXNzIHRoYXQgY2FuIGJlIGluamVjdGVkOlxuICAgKlxuICAgKiBgYGBcbiAgICogY2xhc3MgR3JlZXRlciB7XG4gICAqICAgIGdyZWV0KG5hbWU6c3RyaW5nKSB7XG4gICAqICAgICAgcmV0dXJuICdIZWxsbyAnICsgbmFtZSArICchJztcbiAgICogICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnZ3JlZXQnLFxuICAgKiAgIGJpbmRpbmdzOiBbXG4gICAqICAgICBHcmVldGVyXG4gICAqICAgXVxuICAgKiB9KVxuICAgKiBjbGFzcyBIZWxsb1dvcmxkIHtcbiAgICogICBncmVldGVyOkdyZWV0ZXI7XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IoZ3JlZXRlcjpHcmVldGVyKSB7XG4gICAqICAgICB0aGlzLmdyZWV0ZXIgPSBncmVldGVyO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGdldCBwcm92aWRlcnMoKTogYW55W10ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fYmluZGluZ3MpICYmIHRoaXMuX2JpbmRpbmdzLmxlbmd0aCA+IDAgPyB0aGlzLl9iaW5kaW5ncyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb3ZpZGVycztcbiAgfVxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgZ2V0IGJpbmRpbmdzKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMucHJvdmlkZXJzOyB9XG4gIHByaXZhdGUgX3Byb3ZpZGVyczogYW55W107XG4gIHByaXZhdGUgX2JpbmRpbmdzOiBhbnlbXTtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbmFtZSB0aGF0IGNhbiBiZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0byBhc3NpZ24gdGhpcyBkaXJlY3RpdmUgdG8gYSB2YXJpYWJsZS5cbiAgICpcbiAgICogIyMgU2ltcGxlIEV4YW1wbGVcbiAgICpcbiAgICogYGBgXG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnY2hpbGQtZGlyJyxcbiAgICogICBleHBvcnRBczogJ2NoaWxkJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBDaGlsZERpciB7XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdtYWluJyxcbiAgICogICB0ZW1wbGF0ZTogYDxjaGlsZC1kaXIgI2M9XCJjaGlsZFwiPjwvY2hpbGQtZGlyPmAsXG4gICAqICAgZGlyZWN0aXZlczogW0NoaWxkRGlyXVxuICAgKiB9KVxuICAgKiBjbGFzcyBNYWluQ29tcG9uZW50IHtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIGV4cG9ydEFzOiBzdHJpbmc7XG5cbiAgLy8gVE9ETzogYWRkIGFuIGV4YW1wbGUgYWZ0ZXIgQ29udGVudENoaWxkcmVuIGFuZCBWaWV3Q2hpbGRyZW4gYXJlIGluIG1hc3RlclxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgcXVlcmllcyB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUgZGlyZWN0aXZlLlxuICAgKlxuICAgKiBDb250ZW50IHF1ZXJpZXMgYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyQ29udGVudEluaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICogVmlldyBxdWVyaWVzIGFyZSBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlclZpZXdJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIGBgYFxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ3NvbWVEaXInLFxuICAgKiAgIHF1ZXJpZXM6IHtcbiAgICogICAgIGNvbnRlbnRDaGlsZHJlbjogbmV3IENvbnRlbnRDaGlsZHJlbihDaGlsZERpcmVjdGl2ZSksXG4gICAqICAgICB2aWV3Q2hpbGRyZW46IG5ldyBWaWV3Q2hpbGRyZW4oQ2hpbGREaXJlY3RpdmUpXG4gICAqICAgfSxcbiAgICogICB0ZW1wbGF0ZTogJzxjaGlsZC1kaXJlY3RpdmU+PC9jaGlsZC1kaXJlY3RpdmU+JyxcbiAgICogICBkaXJlY3RpdmVzOiBbQ2hpbGREaXJlY3RpdmVdXG4gICAqIH0pXG4gICAqIGNsYXNzIFNvbWVEaXIge1xuICAgKiAgIGNvbnRlbnRDaGlsZHJlbjogUXVlcnlMaXN0PENoaWxkRGlyZWN0aXZlPixcbiAgICogICB2aWV3Q2hpbGRyZW46IFF1ZXJ5TGlzdDxDaGlsZERpcmVjdGl2ZT5cbiAgICpcbiAgICogICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAqICAgICAvLyBjb250ZW50Q2hpbGRyZW4gaXMgc2V0XG4gICAqICAgfVxuICAgKlxuICAgKiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICogICAgIC8vIHZpZXdDaGlsZHJlbiBpcyBzZXRcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBxdWVyaWVzOiB7W2tleTogc3RyaW5nXTogYW55fTtcblxuICBjb25zdHJ1Y3Rvcih7c2VsZWN0b3IsIGlucHV0cywgb3V0cHV0cywgcHJvcGVydGllcywgZXZlbnRzLCBob3N0LCBiaW5kaW5ncywgcHJvdmlkZXJzLCBleHBvcnRBcyxcbiAgICAgICAgICAgICAgIHF1ZXJpZXN9OiB7XG4gICAgc2VsZWN0b3I/OiBzdHJpbmcsXG4gICAgaW5wdXRzPzogc3RyaW5nW10sXG4gICAgb3V0cHV0cz86IHN0cmluZ1tdLFxuICAgIHByb3BlcnRpZXM/OiBzdHJpbmdbXSxcbiAgICBldmVudHM/OiBzdHJpbmdbXSxcbiAgICBob3N0Pzoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgcHJvdmlkZXJzPzogYW55W10sXG4gICAgLyoqIEBkZXByZWNhdGVkICovIGJpbmRpbmdzPzogYW55W10sXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgcXVlcmllcz86IHtba2V5OiBzdHJpbmddOiBhbnl9XG4gIH0gPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgICB0aGlzLl9ldmVudHMgPSBldmVudHM7XG4gICAgdGhpcy5ob3N0ID0gaG9zdDtcbiAgICB0aGlzLmV4cG9ydEFzID0gZXhwb3J0QXM7XG4gICAgdGhpcy5xdWVyaWVzID0gcXVlcmllcztcbiAgICB0aGlzLl9wcm92aWRlcnMgPSBwcm92aWRlcnM7XG4gICAgdGhpcy5fYmluZGluZ3MgPSBiaW5kaW5ncztcbiAgfVxufVxuXG4vKipcbiAqIERlY2xhcmUgcmV1c2FibGUgVUkgYnVpbGRpbmcgYmxvY2tzIGZvciBhbiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBFYWNoIEFuZ3VsYXIgY29tcG9uZW50IHJlcXVpcmVzIGEgc2luZ2xlIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLiBUaGVcbiAqIGBAQ29tcG9uZW50YFxuICogYW5ub3RhdGlvbiBzcGVjaWZpZXMgd2hlbiBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQsIGFuZCB3aGljaCBwcm9wZXJ0aWVzIGFuZCBob3N0TGlzdGVuZXJzIGl0XG4gKiBiaW5kcyB0by5cbiAqXG4gKiBXaGVuIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCwgQW5ndWxhclxuICogLSBjcmVhdGVzIGEgc2hhZG93IERPTSBmb3IgdGhlIGNvbXBvbmVudC5cbiAqIC0gbG9hZHMgdGhlIHNlbGVjdGVkIHRlbXBsYXRlIGludG8gdGhlIHNoYWRvdyBET00uXG4gKiAtIGNyZWF0ZXMgYWxsIHRoZSBpbmplY3RhYmxlIG9iamVjdHMgY29uZmlndXJlZCB3aXRoIGBwcm92aWRlcnNgIGFuZCBgdmlld1Byb3ZpZGVyc2AuXG4gKlxuICogQWxsIHRlbXBsYXRlIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSB0aGVuIGV2YWx1YXRlZCBhZ2FpbnN0IHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gKlxuICogRm9yIGRldGFpbHMgb24gdGhlIGBAVmlld2AgYW5ub3RhdGlvbiwgc2VlIHtAbGluayBWaWV3TWV0YWRhdGF9LlxuICpcbiAqICMjIExpZmVjeWNsZSBob29rc1xuICpcbiAqIFdoZW4gdGhlIGNvbXBvbmVudCBjbGFzcyBpbXBsZW1lbnRzIHNvbWUge0BsaW5rIC4uLy4uL2d1aWRlL2xpZmVjeWNsZS1ob29rcy5odG1sfSB0aGUgY2FsbGJhY2tzXG4gKiBhcmUgY2FsbGVkIGJ5IHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIGF0IGRlZmluZWQgcG9pbnRzIGluIHRpbWUgZHVyaW5nIHRoZSBsaWZlIG9mIHRoZSBjb21wb25lbnQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS90cy9tZXRhZGF0YS9tZXRhZGF0YS50cyByZWdpb249J2NvbXBvbmVudCd9XG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TWV0YWRhdGEgZXh0ZW5kcyBEaXJlY3RpdmVNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSB1c2VkIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kuXG4gICAqXG4gICAqIFdoZW4gYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkLCBBbmd1bGFyIGNyZWF0ZXMgYSBjaGFuZ2UgZGV0ZWN0b3IsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvclxuICAgKiBwcm9wYWdhdGluZyB0aGUgY29tcG9uZW50J3MgYmluZGluZ3MuXG4gICAqXG4gICAqIFRoZSBgY2hhbmdlRGV0ZWN0aW9uYCBwcm9wZXJ0eSBkZWZpbmVzLCB3aGV0aGVyIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHdpbGwgYmUgY2hlY2tlZCBldmVyeSB0aW1lXG4gICAqIG9yIG9ubHkgd2hlbiB0aGUgY29tcG9uZW50IHRlbGxzIGl0IHRvIGRvIHNvLlxuICAgKi9cbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneTtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgc2V0IG9mIGluamVjdGFibGUgb2JqZWN0cyB0aGF0IGFyZSB2aXNpYmxlIHRvIGl0cyB2aWV3IERPTSBjaGlsZHJlbi5cbiAgICpcbiAgICogIyMgU2ltcGxlIEV4YW1wbGVcbiAgICpcbiAgICogSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgY2xhc3MgdGhhdCBjYW4gYmUgaW5qZWN0ZWQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjbGFzcyBHcmVldGVyIHtcbiAgICogICAgZ3JlZXQobmFtZTpzdHJpbmcpIHtcbiAgICogICAgICByZXR1cm4gJ0hlbGxvICcgKyBuYW1lICsgJyEnO1xuICAgKiAgICB9XG4gICAqIH1cbiAgICpcbiAgICogQERpcmVjdGl2ZSh7XG4gICAqICAgc2VsZWN0b3I6ICduZWVkcy1ncmVldGVyJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBOZWVkc0dyZWV0ZXIge1xuICAgKiAgIGdyZWV0ZXI6R3JlZXRlcjtcbiAgICpcbiAgICogICBjb25zdHJ1Y3RvcihncmVldGVyOkdyZWV0ZXIpIHtcbiAgICogICAgIHRoaXMuZ3JlZXRlciA9IGdyZWV0ZXI7XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnZ3JlZXQnLFxuICAgKiAgIHZpZXdQcm92aWRlcnM6IFtcbiAgICogICAgIEdyZWV0ZXJcbiAgICogICBdLFxuICAgKiAgIHRlbXBsYXRlOiBgPG5lZWRzLWdyZWV0ZXI+PC9uZWVkcy1ncmVldGVyPmAsXG4gICAqICAgZGlyZWN0aXZlczogW05lZWRzR3JlZXRlcl1cbiAgICogfSlcbiAgICogY2xhc3MgSGVsbG9Xb3JsZCB7XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBnZXQgdmlld1Byb3ZpZGVycygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl92aWV3QmluZGluZ3MpICYmIHRoaXMuX3ZpZXdCaW5kaW5ncy5sZW5ndGggPiAwID8gdGhpcy5fdmlld0JpbmRpbmdzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92aWV3UHJvdmlkZXJzO1xuICB9XG4gIGdldCB2aWV3QmluZGluZ3MoKTogYW55W10geyByZXR1cm4gdGhpcy52aWV3UHJvdmlkZXJzOyB9XG4gIHByaXZhdGUgX3ZpZXdQcm92aWRlcnM6IGFueVtdO1xuICBwcml2YXRlIF92aWV3QmluZGluZ3M6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kdWxlIGlkIG9mIHRoZSBtb2R1bGUgdGhhdCBjb250YWlucyB0aGUgY29tcG9uZW50LlxuICAgKiBOZWVkZWQgdG8gYmUgYWJsZSB0byByZXNvbHZlIHJlbGF0aXZlIHVybHMgZm9yIHRlbXBsYXRlcyBhbmQgc3R5bGVzLlxuICAgKiBJbiBEYXJ0LCB0aGlzIGNhbiBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgc2V0LlxuICAgKiBJbiBDb21tb25KUywgdGhpcyBjYW4gYWx3YXlzIGJlIHNldCB0byBgbW9kdWxlLmlkYC5cbiAgICpcbiAgICogIyMgU2ltcGxlIEV4YW1wbGVcbiAgICpcbiAgICogYGBgXG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnc29tZURpcicsXG4gICAqICAgbW9kdWxlSWQ6IG1vZHVsZS5pZFxuICAgKiB9KVxuICAgKiBjbGFzcyBTb21lRGlyIHtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIG1vZHVsZUlkOiBzdHJpbmc7XG5cbiAgdGVtcGxhdGVVcmw6IHN0cmluZztcblxuICB0ZW1wbGF0ZTogc3RyaW5nO1xuXG4gIHN0eWxlVXJsczogc3RyaW5nW107XG5cbiAgc3R5bGVzOiBzdHJpbmdbXTtcblxuICBkaXJlY3RpdmVzOiBBcnJheTxUeXBlIHwgYW55W10+O1xuXG4gIHBpcGVzOiBBcnJheTxUeXBlIHwgYW55W10+O1xuXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHtzZWxlY3RvciwgaW5wdXRzLCBvdXRwdXRzLCBwcm9wZXJ0aWVzLCBldmVudHMsIGhvc3QsIGV4cG9ydEFzLCBtb2R1bGVJZCwgYmluZGluZ3MsXG4gICAgICAgICAgICAgICBwcm92aWRlcnMsIHZpZXdCaW5kaW5ncywgdmlld1Byb3ZpZGVycyxcbiAgICAgICAgICAgICAgIGNoYW5nZURldGVjdGlvbiA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsIHF1ZXJpZXMsIHRlbXBsYXRlVXJsLCB0ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgIHN0eWxlVXJscywgc3R5bGVzLCBkaXJlY3RpdmVzLCBwaXBlcywgZW5jYXBzdWxhdGlvbn06IHtcbiAgICBzZWxlY3Rvcj86IHN0cmluZyxcbiAgICBpbnB1dHM/OiBzdHJpbmdbXSxcbiAgICBvdXRwdXRzPzogc3RyaW5nW10sXG4gICAgcHJvcGVydGllcz86IHN0cmluZ1tdLFxuICAgIGV2ZW50cz86IHN0cmluZ1tdLFxuICAgIGhvc3Q/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICAvKiogQGRlcHJlY2F0ZWQgKi8gYmluZGluZ3M/OiBhbnlbXSxcbiAgICBwcm92aWRlcnM/OiBhbnlbXSxcbiAgICBleHBvcnRBcz86IHN0cmluZyxcbiAgICBtb2R1bGVJZD86IHN0cmluZyxcbiAgICAvKiogQGRlcHJlY2F0ZWQgKi8gdmlld0JpbmRpbmdzPzogYW55W10sXG4gICAgdmlld1Byb3ZpZGVycz86IGFueVtdLFxuICAgIHF1ZXJpZXM/OiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICBjaGFuZ2VEZXRlY3Rpb24/OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICB0ZW1wbGF0ZVVybD86IHN0cmluZyxcbiAgICB0ZW1wbGF0ZT86IHN0cmluZyxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBkaXJlY3RpdmVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBwaXBlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgZW5jYXBzdWxhdGlvbj86IFZpZXdFbmNhcHN1bGF0aW9uXG4gIH0gPSB7fSkge1xuICAgIHN1cGVyKHtcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgb3V0cHV0czogb3V0cHV0cyxcbiAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG4gICAgICBldmVudHM6IGV2ZW50cyxcbiAgICAgIGhvc3Q6IGhvc3QsXG4gICAgICBleHBvcnRBczogZXhwb3J0QXMsXG4gICAgICBiaW5kaW5nczogYmluZGluZ3MsXG4gICAgICBwcm92aWRlcnM6IHByb3ZpZGVycyxcbiAgICAgIHF1ZXJpZXM6IHF1ZXJpZXNcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uID0gY2hhbmdlRGV0ZWN0aW9uO1xuICAgIHRoaXMuX3ZpZXdQcm92aWRlcnMgPSB2aWV3UHJvdmlkZXJzO1xuICAgIHRoaXMuX3ZpZXdCaW5kaW5ncyA9IHZpZXdCaW5kaW5ncztcbiAgICB0aGlzLnRlbXBsYXRlVXJsID0gdGVtcGxhdGVVcmw7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIHRoaXMuc3R5bGVVcmxzID0gc3R5bGVVcmxzO1xuICAgIHRoaXMuc3R5bGVzID0gc3R5bGVzO1xuICAgIHRoaXMuZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXM7XG4gICAgdGhpcy5waXBlcyA9IHBpcGVzO1xuICAgIHRoaXMuZW5jYXBzdWxhdGlvbiA9IGVuY2Fwc3VsYXRpb247XG4gICAgdGhpcy5tb2R1bGVJZCA9IG1vZHVsZUlkO1xuICB9XG59XG5cbi8qKlxuICogRGVjbGFyZSByZXVzYWJsZSBwaXBlIGZ1bmN0aW9uLlxuICpcbiAqIEEgXCJwdXJlXCIgcGlwZSBpcyBvbmx5IHJlLWV2YWx1YXRlZCB3aGVuIGVpdGhlciB0aGUgaW5wdXQgb3IgYW55IG9mIHRoZSBhcmd1bWVudHMgY2hhbmdlLlxuICpcbiAqIFdoZW4gbm90IHNwZWNpZmllZCwgcGlwZXMgZGVmYXVsdCB0byBiZWluZyBwdXJlLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvdHMvbWV0YWRhdGEvbWV0YWRhdGEudHMgcmVnaW9uPSdwaXBlJ31cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBQaXBlTWV0YWRhdGEgZXh0ZW5kcyBJbmplY3RhYmxlTWV0YWRhdGEge1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B1cmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe25hbWUsIHB1cmV9OiB7bmFtZTogc3RyaW5nLCBwdXJlPzogYm9vbGVhbn0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5fcHVyZSA9IHB1cmU7XG4gIH1cblxuICBnZXQgcHVyZSgpOiBib29sZWFuIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9wdXJlKSA/IHRoaXMuX3B1cmUgOiB0cnVlOyB9XG59XG5cbi8qKlxuICogRGVjbGFyZXMgYSBkYXRhLWJvdW5kIGlucHV0IHByb3BlcnR5LlxuICpcbiAqIEFuZ3VsYXIgYXV0b21hdGljYWxseSB1cGRhdGVzIGRhdGEtYm91bmQgcHJvcGVydGllcyBkdXJpbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAqXG4gKiBgSW5wdXRNZXRhZGF0YWAgdGFrZXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBuYW1lXG4gKiB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGNvbXBvbmVudCBpbiB0aGUgdGVtcGxhdGUuIFdoZW4gbm90IHByb3ZpZGVkLFxuICogdGhlIG5hbWUgb2YgdGhlIGRlY29yYXRlZCBwcm9wZXJ0eSBpcyB1c2VkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYSBjb21wb25lbnQgd2l0aCB0d28gaW5wdXQgcHJvcGVydGllcy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdiYW5rLWFjY291bnQnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIEJhbmsgTmFtZToge3tiYW5rTmFtZX19XG4gKiAgICAgQWNjb3VudCBJZDoge3tpZH19XG4gKiAgIGBcbiAqIH0pXG4gKiBjbGFzcyBCYW5rQWNjb3VudCB7XG4gKiAgIEBJbnB1dCgpIGJhbmtOYW1lOiBzdHJpbmc7XG4gKiAgIEBJbnB1dCgnYWNjb3VudC1pZCcpIGlkOiBzdHJpbmc7XG4gKlxuICogICAvLyB0aGlzIHByb3BlcnR5IGlzIG5vdCBib3VuZCwgYW5kIHdvbid0IGJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCBieSBBbmd1bGFyXG4gKiAgIG5vcm1hbGl6ZWRCYW5rTmFtZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGJhbmstYWNjb3VudCBiYW5rLW5hbWU9XCJSQkNcIiBhY2NvdW50LWlkPVwiNDc0N1wiPjwvYmFuay1hY2NvdW50PlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbQmFua0FjY291bnRdXG4gKiB9KVxuICogY2xhc3MgQXBwIHt9XG4gKlxuICogYm9vdHN0cmFwKEFwcCk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBJbnB1dE1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICAvKipcbiAgICAgICAqIE5hbWUgdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBjb21wb25lbnQgaW4gdGhlIHRlbXBsYXRlLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgYmluZGluZ1Byb3BlcnR5TmFtZT86IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhbiBldmVudC1ib3VuZCBvdXRwdXQgcHJvcGVydHkuXG4gKlxuICogV2hlbiBhbiBvdXRwdXQgcHJvcGVydHkgZW1pdHMgYW4gZXZlbnQsIGFuIGV2ZW50IGhhbmRsZXIgYXR0YWNoZWQgdG8gdGhhdCBldmVudFxuICogdGhlIHRlbXBsYXRlIGlzIGludm9rZWQuXG4gKlxuICogYE91dHB1dE1ldGFkYXRhYCB0YWtlcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIG5hbWVcbiAqIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgY29tcG9uZW50IGluIHRoZSB0ZW1wbGF0ZS4gV2hlbiBub3QgcHJvdmlkZWQsXG4gKiB0aGUgbmFtZSBvZiB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IGlzIHVzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBARGlyZWN0aXZlKHtcbiAqICAgc2VsZWN0b3I6ICdpbnRlcnZhbC1kaXInLFxuICogfSlcbiAqIGNsYXNzIEludGVydmFsRGlyIHtcbiAqICAgQE91dHB1dCgpIGV2ZXJ5U2Vjb25kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICogICBAT3V0cHV0KCdldmVyeUZpdmVTZWNvbmRzJykgZml2ZTVTZWNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5ldmVyeVNlY29uZC5lbWl0KFwiZXZlbnRcIiksIDEwMDApO1xuICogICAgIHNldEludGVydmFsKCgpID0+IHRoaXMuZml2ZTVTZWNzLmVtaXQoXCJldmVudFwiKSwgNTAwMCk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxpbnRlcnZhbC1kaXIgKGV2ZXJ5U2Vjb25kKT1cImV2ZXJ5U2Vjb25kKClcIiAoZXZlcnlGaXZlU2Vjb25kcyk9XCJldmVyeUZpdmVTZWNvbmRzKClcIj5cbiAqICAgICA8L2ludGVydmFsLWRpcj5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0ludGVydmFsRGlyXVxuICogfSlcbiAqIGNsYXNzIEFwcCB7XG4gKiAgIGV2ZXJ5U2Vjb25kKCkgeyBjb25zb2xlLmxvZygnc2Vjb25kJyk7IH1cbiAqICAgZXZlcnlGaXZlU2Vjb25kcygpIHsgY29uc29sZS5sb2coJ2ZpdmUgc2Vjb25kcycpOyB9XG4gKiB9XG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIE91dHB1dE1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IocHVibGljIGJpbmRpbmdQcm9wZXJ0eU5hbWU/OiBzdHJpbmcpIHt9XG59XG5cbi8qKlxuICogRGVjbGFyZXMgYSBob3N0IHByb3BlcnR5IGJpbmRpbmcuXG4gKlxuICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNoZWNrcyBob3N0IHByb3BlcnR5IGJpbmRpbmdzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICogSWYgYSBiaW5kaW5nIGNoYW5nZXMsIGl0IHdpbGwgdXBkYXRlIHRoZSBob3N0IGVsZW1lbnQgb2YgdGhlIGRpcmVjdGl2ZS5cbiAqXG4gKiBgSG9zdEJpbmRpbmdNZXRhZGF0YWAgdGFrZXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBwcm9wZXJ0eVxuICogbmFtZSBvZiB0aGUgaG9zdCBlbGVtZW50IHRoYXQgd2lsbCBiZSB1cGRhdGVkLiBXaGVuIG5vdCBwcm92aWRlZCxcbiAqIHRoZSBjbGFzcyBwcm9wZXJ0eSBuYW1lIGlzIHVzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGRpcmVjdGl2ZSB0aGF0IHNldHMgdGhlIGB2YWxpZGAgYW5kIGBpbnZhbGlkYCBjbGFzc2VzXG4gKiBvbiB0aGUgRE9NIGVsZW1lbnQgdGhhdCBoYXMgbmdNb2RlbCBkaXJlY3RpdmUgb24gaXQuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdNb2RlbF0nfSlcbiAqIGNsYXNzIE5nTW9kZWxTdGF0dXMge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbDpOZ01vZGVsKSB7fVxuICogICBASG9zdEJpbmRpbmcoJ2NsYXNzLnZhbGlkJykgZ2V0IHZhbGlkIHsgcmV0dXJuIHRoaXMuY29udHJvbC52YWxpZDsgfVxuICogICBASG9zdEJpbmRpbmcoJ2NsYXNzLmludmFsaWQnKSBnZXQgaW52YWxpZCB7IHJldHVybiB0aGlzLmNvbnRyb2wuaW52YWxpZDsgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgPGlucHV0IFsobmdNb2RlbCldPVwicHJvcFwiPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVMsIE5nTW9kZWxTdGF0dXNdXG4gKiB9KVxuICogY2xhc3MgQXBwIHtcbiAqICAgcHJvcDtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEhvc3RCaW5kaW5nTWV0YWRhdGEge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaG9zdFByb3BlcnR5TmFtZT86IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhIGhvc3QgbGlzdGVuZXIuXG4gKlxuICogQW5ndWxhciB3aWxsIGludm9rZSB0aGUgZGVjb3JhdGVkIG1ldGhvZCB3aGVuIHRoZSBob3N0IGVsZW1lbnQgZW1pdHMgdGhlIHNwZWNpZmllZCBldmVudC5cbiAqXG4gKiBJZiB0aGUgZGVjb3JhdGVkIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAsIHRoZW4gYHByZXZlbnREZWZhdWx0YCBpcyBhcHBsaWVkIG9uIHRoZSBET01cbiAqIGV2ZW50LlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlY2xhcmVzIGEgZGlyZWN0aXZlIHRoYXQgYXR0YWNoZXMgYSBjbGljayBsaXN0ZW5lciB0byB0aGUgYnV0dG9uIGFuZFxuICogY291bnRzIGNsaWNrcy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBARGlyZWN0aXZlKHtzZWxlY3RvcjogJ2J1dHRvbltjb3VudGluZ10nfSlcbiAqIGNsYXNzIENvdW50Q2xpY2tzIHtcbiAqICAgbnVtYmVyT2ZDbGlja3MgPSAwO1xuICpcbiAqICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAqICAgb25DbGljayhidG4pIHtcbiAqICAgICBjb25zb2xlLmxvZyhcImJ1dHRvblwiLCBidG4sIFwibnVtYmVyIG9mIGNsaWNrczpcIiwgdGhpcy5udW1iZXJPZkNsaWNrcysrKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgPGJ1dHRvbiBjb3VudGluZz5JbmNyZW1lbnQ8L2J1dHRvbj5gLFxuICogICBkaXJlY3RpdmVzOiBbQ291bnRDbGlja3NdXG4gKiB9KVxuICogY2xhc3MgQXBwIHt9XG4gKlxuICogYm9vdHN0cmFwKEFwcCk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBIb3N0TGlzdGVuZXJNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBldmVudE5hbWU6IHN0cmluZywgcHVibGljIGFyZ3M/OiBzdHJpbmdbXSkge31cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Defines template and style encapsulation options available for Component's {@link View}.\r\n *\r\n * See {@link ViewMetadata#encapsulation}.\r\n */\r\n(function (ViewEncapsulation) {\r\n /**\r\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\r\n * Element and pre-processing the style rules provided via\r\n * {@link ViewMetadata#styles} or {@link ViewMetadata#stylesUrls}, and adding the new Host Element\r\n * attribute to all selectors.\r\n *\r\n * This is the default option.\r\n */\r\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\r\n /**\r\n * Use the native encapsulation mechanism of the renderer.\r\n *\r\n * For the DOM this means using [Shadow DOM](https://w3c.github.io/webcomponents/spec/shadow/) and\r\n * creating a ShadowRoot for Component's Host Element.\r\n */\r\n ViewEncapsulation[ViewEncapsulation[\"Native\"] = 1] = \"Native\";\r\n /**\r\n * Don't provide any template or style encapsulation.\r\n */\r\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\r\n})(exports.ViewEncapsulation || (exports.ViewEncapsulation = {}));\r\nvar ViewEncapsulation = exports.ViewEncapsulation;\r\nexports.VIEW_ENCAPSULATION_VALUES = [ViewEncapsulation.Emulated, ViewEncapsulation.Native, ViewEncapsulation.None];\r\n/**\r\n * Metadata properties available for configuring Views.\r\n *\r\n * Each Angular component requires a single `@Component` and at least one `@View` annotation. The\r\n * `@View` annotation specifies the HTML template to use, and lists the directives that are active\r\n * within the template.\r\n *\r\n * When a component is instantiated, the template is loaded into the component's shadow root, and\r\n * the expressions and statements in the template are evaluated against the component.\r\n *\r\n * For details on the `@Component` annotation, see {@link ComponentMetadata}.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'greet',\r\n * template: 'Hello {{name}}!',\r\n * directives: [GreetUser, Bold]\r\n * })\r\n * class Greet {\r\n * name: string;\r\n *\r\n * constructor() {\r\n * this.name = 'World';\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ViewMetadata = (function () {\r\n function ViewMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, templateUrl = _b.templateUrl, template = _b.template, directives = _b.directives, pipes = _b.pipes, encapsulation = _b.encapsulation, styles = _b.styles, styleUrls = _b.styleUrls;\r\n this.templateUrl = templateUrl;\r\n this.template = template;\r\n this.styleUrls = styleUrls;\r\n this.styles = styles;\r\n this.directives = directives;\r\n this.pipes = pipes;\r\n this.encapsulation = encapsulation;\r\n }\r\n ViewMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ViewMetadata);\r\n return ViewMetadata;\r\n}());\r\nexports.ViewMetadata = ViewMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUEwQiwwQkFBMEIsQ0FBQyxDQUFBO0FBRXJEOzs7O0dBSUc7QUFDSCxXQUFZLGlCQUFpQjtJQUMzQjs7Ozs7OztPQU9HO0lBQ0gsaUVBQVEsQ0FBQTtJQUNSOzs7OztPQUtHO0lBQ0gsNkRBQU0sQ0FBQTtJQUNOOztPQUVHO0lBQ0gseURBQUksQ0FBQTtBQUNOLENBQUMsRUFyQlcseUJBQWlCLEtBQWpCLHlCQUFpQixRQXFCNUI7QUFyQkQsSUFBWSxpQkFBaUIsR0FBakIseUJBcUJYLENBQUE7QUFFVSxpQ0FBeUIsR0FDaEMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBR25GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBRUg7SUE2REUsc0JBQVksRUFRTjtZQVJNLDRCQVFOLEVBUk8sNEJBQVcsRUFBRSxzQkFBUSxFQUFFLDBCQUFVLEVBQUUsZ0JBQUssRUFBRSxnQ0FBYSxFQUFFLGtCQUFNLEVBQUUsd0JBQVM7UUFTckYsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQTlFSDtRQUFDLFlBQUssRUFBRTs7b0JBQUE7SUErRVIsbUJBQUM7QUFBRCxDQUFDLEFBOUVELElBOEVDO0FBOUVZLG9CQUFZLGVBOEV4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVCwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBEZWZpbmVzIHRlbXBsYXRlIGFuZCBzdHlsZSBlbmNhcHN1bGF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBDb21wb25lbnQncyB7QGxpbmsgVmlld30uXG4gKlxuICogU2VlIHtAbGluayBWaWV3TWV0YWRhdGEjZW5jYXBzdWxhdGlvbn0uXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdFbmNhcHN1bGF0aW9uIHtcbiAgLyoqXG4gICAqIEVtdWxhdGUgYE5hdGl2ZWAgc2NvcGluZyBvZiBzdHlsZXMgYnkgYWRkaW5nIGFuIGF0dHJpYnV0ZSBjb250YWluaW5nIHN1cnJvZ2F0ZSBpZCB0byB0aGUgSG9zdFxuICAgKiBFbGVtZW50IGFuZCBwcmUtcHJvY2Vzc2luZyB0aGUgc3R5bGUgcnVsZXMgcHJvdmlkZWQgdmlhXG4gICAqIHtAbGluayBWaWV3TWV0YWRhdGEjc3R5bGVzfSBvciB7QGxpbmsgVmlld01ldGFkYXRhI3N0eWxlc1VybHN9LCBhbmQgYWRkaW5nIHRoZSBuZXcgSG9zdCBFbGVtZW50XG4gICAqIGF0dHJpYnV0ZSB0byBhbGwgc2VsZWN0b3JzLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbi5cbiAgICovXG4gIEVtdWxhdGVkLFxuICAvKipcbiAgICogVXNlIHRoZSBuYXRpdmUgZW5jYXBzdWxhdGlvbiBtZWNoYW5pc20gb2YgdGhlIHJlbmRlcmVyLlxuICAgKlxuICAgKiBGb3IgdGhlIERPTSB0aGlzIG1lYW5zIHVzaW5nIFtTaGFkb3cgRE9NXShodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8pIGFuZFxuICAgKiBjcmVhdGluZyBhIFNoYWRvd1Jvb3QgZm9yIENvbXBvbmVudCdzIEhvc3QgRWxlbWVudC5cbiAgICovXG4gIE5hdGl2ZSxcbiAgLyoqXG4gICAqIERvbid0IHByb3ZpZGUgYW55IHRlbXBsYXRlIG9yIHN0eWxlIGVuY2Fwc3VsYXRpb24uXG4gICAqL1xuICBOb25lXG59XG5cbmV4cG9ydCB2YXIgVklFV19FTkNBUFNVTEFUSU9OX1ZBTFVFUyA9XG4gICAgW1ZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLCBWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmUsIFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVdO1xuXG5cbi8qKlxuICogTWV0YWRhdGEgcHJvcGVydGllcyBhdmFpbGFibGUgZm9yIGNvbmZpZ3VyaW5nIFZpZXdzLlxuICpcbiAqIEVhY2ggQW5ndWxhciBjb21wb25lbnQgcmVxdWlyZXMgYSBzaW5nbGUgYEBDb21wb25lbnRgIGFuZCBhdCBsZWFzdCBvbmUgYEBWaWV3YCBhbm5vdGF0aW9uLiBUaGVcbiAqIGBAVmlld2AgYW5ub3RhdGlvbiBzcGVjaWZpZXMgdGhlIEhUTUwgdGVtcGxhdGUgdG8gdXNlLCBhbmQgbGlzdHMgdGhlIGRpcmVjdGl2ZXMgdGhhdCBhcmUgYWN0aXZlXG4gKiB3aXRoaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIFdoZW4gYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkLCB0aGUgdGVtcGxhdGUgaXMgbG9hZGVkIGludG8gdGhlIGNvbXBvbmVudCdzIHNoYWRvdyByb290LCBhbmRcbiAqIHRoZSBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBpbiB0aGUgdGVtcGxhdGUgYXJlIGV2YWx1YXRlZCBhZ2FpbnN0IHRoZSBjb21wb25lbnQuXG4gKlxuICogRm9yIGRldGFpbHMgb24gdGhlIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLCBzZWUge0BsaW5rIENvbXBvbmVudE1ldGFkYXRhfS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnZ3JlZXQnLFxuICogICB0ZW1wbGF0ZTogJ0hlbGxvIHt7bmFtZX19IScsXG4gKiAgIGRpcmVjdGl2ZXM6IFtHcmVldFVzZXIsIEJvbGRdXG4gKiB9KVxuICogY2xhc3MgR3JlZXQge1xuICogICBuYW1lOiBzdHJpbmc7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICB0aGlzLm5hbWUgPSAnV29ybGQnO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBWaWV3TWV0YWRhdGEge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGVtcGxhdGUgVVJMIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudC5cbiAgICpcbiAgICogTk9URTogT25seSBvbmUgb2YgYHRlbXBsYXRlVXJsYCBvciBgdGVtcGxhdGVgIGNhbiBiZSBkZWZpbmVkIHBlciBWaWV3LlxuICAgKlxuICAgKiA8IS0tIFRPRE86IHdoYXQncyB0aGUgdXJsIHJlbGF0aXZlIHRvPyAtLT5cbiAgICovXG4gIHRlbXBsYXRlVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBpbmxpbmUgdGVtcGxhdGUgZm9yIGFuIEFuZ3VsYXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBOT1RFOiBPbmx5IG9uZSBvZiBgdGVtcGxhdGVVcmxgIG9yIGB0ZW1wbGF0ZWAgY2FuIGJlIGRlZmluZWQgcGVyIFZpZXcuXG4gICAqL1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgc3R5bGVzaGVldCBVUkxzIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudC5cbiAgICpcbiAgICogPCEtLSBUT0RPOiB3aGF0J3MgdGhlIHVybCByZWxhdGl2ZSB0bz8gLS0+XG4gICAqL1xuICBzdHlsZVVybHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gaW5saW5lIHN0eWxlc2hlZXQgZm9yIGFuIEFuZ3VsYXIgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgbGlzdCBvZiBkaXJlY3RpdmVzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aGluIGEgdGVtcGxhdGUuXG4gICAqXG4gICAqIERpcmVjdGl2ZXMgbXVzdCBiZSBsaXN0ZWQgZXhwbGljaXRseSB0byBwcm92aWRlIHByb3BlciBjb21wb25lbnQgZW5jYXBzdWxhdGlvbi5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gICAqICAgZGlyZWN0aXZlczogW05nRm9yXVxuICAgKiAgIHRlbXBsYXRlOiAnXG4gICAqICAgPHVsPlxuICAgKiAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+e3tpdGVtfX08L2xpPlxuICAgKiAgIDwvdWw+J1xuICAgKiB9KVxuICAgKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBkaXJlY3RpdmVzOiBBcnJheTxUeXBlIHwgYW55W10+O1xuXG4gIHBpcGVzOiBBcnJheTxUeXBlIHwgYW55W10+O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyB0aGUgdGVtcGxhdGUgYW5kIHRoZSBzdHlsZXMgc2hvdWxkIGJlIGVuY2Fwc3VsYXRlZC5cbiAgICogVGhlIGRlZmF1bHQgaXMge0BsaW5rIFZpZXdFbmNhcHN1bGF0aW9uI0VtdWxhdGVkIGBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZGB9IGlmIHRoZSB2aWV3XG4gICAqIGhhcyBzdHlsZXMsXG4gICAqIG90aGVyd2lzZSB7QGxpbmsgVmlld0VuY2Fwc3VsYXRpb24jTm9uZSBgVmlld0VuY2Fwc3VsYXRpb24uTm9uZWB9LlxuICAgKi9cbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb247XG5cbiAgY29uc3RydWN0b3Ioe3RlbXBsYXRlVXJsLCB0ZW1wbGF0ZSwgZGlyZWN0aXZlcywgcGlwZXMsIGVuY2Fwc3VsYXRpb24sIHN0eWxlcywgc3R5bGVVcmxzfToge1xuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgc3R5bGVzPzogc3RyaW5nW10sXG4gICAgc3R5bGVVcmxzPzogc3RyaW5nW10sXG4gIH0gPSB7fSkge1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSB0ZW1wbGF0ZVVybDtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgdGhpcy5zdHlsZVVybHMgPSBzdHlsZVVybHM7XG4gICAgdGhpcy5zdHlsZXMgPSBzdHlsZXM7XG4gICAgdGhpcy5kaXJlY3RpdmVzID0gZGlyZWN0aXZlcztcbiAgICB0aGlzLnBpcGVzID0gcGlwZXM7XG4gICAgdGhpcy5lbmNhcHN1bGF0aW9uID0gZW5jYXBzdWxhdGlvbjtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * This indirection is needed to free up Component, etc symbols in the public API\r\n * to be used by the decorator versions of these annotations.\r\n */\r\n\"use strict\";\r\nvar di_1 = require('./metadata/di');\r\nexports.QueryMetadata = di_1.QueryMetadata;\r\nexports.ContentChildrenMetadata = di_1.ContentChildrenMetadata;\r\nexports.ContentChildMetadata = di_1.ContentChildMetadata;\r\nexports.ViewChildrenMetadata = di_1.ViewChildrenMetadata;\r\nexports.ViewQueryMetadata = di_1.ViewQueryMetadata;\r\nexports.ViewChildMetadata = di_1.ViewChildMetadata;\r\nexports.AttributeMetadata = di_1.AttributeMetadata;\r\nvar directives_1 = require('./metadata/directives');\r\nexports.ComponentMetadata = directives_1.ComponentMetadata;\r\nexports.DirectiveMetadata = directives_1.DirectiveMetadata;\r\nexports.PipeMetadata = directives_1.PipeMetadata;\r\nexports.InputMetadata = directives_1.InputMetadata;\r\nexports.OutputMetadata = directives_1.OutputMetadata;\r\nexports.HostBindingMetadata = directives_1.HostBindingMetadata;\r\nexports.HostListenerMetadata = directives_1.HostListenerMetadata;\r\nvar view_1 = require('./metadata/view');\r\nexports.ViewMetadata = view_1.ViewMetadata;\r\nexports.ViewEncapsulation = view_1.ViewEncapsulation;\r\nvar di_2 = require('./metadata/di');\r\nvar directives_2 = require('./metadata/directives');\r\nvar view_2 = require('./metadata/view');\r\nvar decorators_1 = require('./util/decorators');\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ComponentMetadata.\r\n/**\r\n * Declare reusable UI building blocks for an application.\r\n *\r\n * Each Angular component requires a single `@Component` annotation. The `@Component`\r\n * annotation specifies when a component is instantiated, and which properties and hostListeners it\r\n * binds to.\r\n *\r\n * When a component is instantiated, Angular\r\n * - creates a shadow DOM for the component.\r\n * - loads the selected template into the shadow DOM.\r\n * - creates all the injectable objects configured with `providers` and `viewProviders`.\r\n *\r\n * All template expressions and statements are then evaluated against the component instance.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the component class implements some {@link ../../guide/lifecycle-hooks.html} the callbacks\r\n * are called by the change detection at defined points in time during the life of the component.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='component'}\r\n */\r\nexports.Component = decorators_1.makeDecorator(directives_2.ComponentMetadata, function (fn) { return fn.View = View; });\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from DirectiveMetadata.\r\n/**\r\n * Directives allow you to attach behavior to elements in the DOM.\r\n *\r\n * {@link DirectiveMetadata}s with an embedded view are called {@link ComponentMetadata}s.\r\n *\r\n * A directive consists of a single directive annotation and a controller class. When the\r\n * directive's `selector` matches\r\n * elements in the DOM, the following steps occur:\r\n *\r\n * 1. For each directive, the `ElementInjector` attempts to resolve the directive's constructor\r\n * arguments.\r\n * 2. Angular instantiates directives for each matched element using `ElementInjector` in a\r\n * depth-first order,\r\n * as declared in the HTML.\r\n *\r\n * ## Understanding How Injection Works\r\n *\r\n * There are three stages of injection resolution.\r\n * - *Pre-existing Injectors*:\r\n * - The terminal {@link Injector} cannot resolve dependencies. It either throws an error or, if\r\n * the dependency was\r\n * specified as `@Optional`, returns `null`.\r\n * - The platform injector resolves browser singleton resources, such as: cookies, title,\r\n * location, and others.\r\n * - *Component Injectors*: Each component instance has its own {@link Injector}, and they follow\r\n * the same parent-child hierarchy\r\n * as the component instances in the DOM.\r\n * - *Element Injectors*: Each component instance has a Shadow DOM. Within the Shadow DOM each\r\n * element has an `ElementInjector`\r\n * which follow the same parent-child hierarchy as the DOM elements themselves.\r\n *\r\n * When a template is instantiated, it also must instantiate the corresponding directives in a\r\n * depth-first order. The\r\n * current `ElementInjector` resolves the constructor dependencies for each directive.\r\n *\r\n * Angular then resolves dependencies as follows, according to the order in which they appear in the\r\n * {@link ViewMetadata}:\r\n *\r\n * 1. Dependencies on the current element\r\n * 2. Dependencies on element injectors and their parents until it encounters a Shadow DOM boundary\r\n * 3. Dependencies on component injectors and their parents until it encounters the root component\r\n * 4. Dependencies on pre-existing injectors\r\n *\r\n *\r\n * The `ElementInjector` can inject other directives, element-specific special objects, or it can\r\n * delegate to the parent\r\n * injector.\r\n *\r\n * To inject other directives, declare the constructor parameter as:\r\n * - `directive:DirectiveType`: a directive on the current element only\r\n * - `@Host() directive:DirectiveType`: any directive that matches the type between the current\r\n * element and the\r\n * Shadow DOM root.\r\n * - `@Query(DirectiveType) query:QueryList<DirectiveType>`: A live collection of direct child\r\n * directives.\r\n * - `@QueryDescendants(DirectiveType) query:QueryList<DirectiveType>`: A live collection of any\r\n * child directives.\r\n *\r\n * To inject element-specific special objects, declare the constructor parameter as:\r\n * - `element: ElementRef` to obtain a reference to logical element in the view.\r\n * - `viewContainer: ViewContainerRef` to control child template instantiation, for\r\n * {@link DirectiveMetadata} directives only\r\n * - `bindingPropagation: BindingPropagation` to control change detection in a more granular way.\r\n *\r\n * ### Example\r\n *\r\n * The following example demonstrates how dependency injection resolves constructor arguments in\r\n * practice.\r\n *\r\n *\r\n * Assume this HTML template:\r\n *\r\n * ```\r\n * <div dependency=\"1\">\r\n * <div dependency=\"2\">\r\n * <div dependency=\"3\" my-directive>\r\n * <div dependency=\"4\">\r\n * <div dependency=\"5\"></div>\r\n * </div>\r\n * <div dependency=\"6\"></div>\r\n * </div>\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * With the following `dependency` decorator and `SomeService` injectable class.\r\n *\r\n * ```\r\n * @Injectable()\r\n * class SomeService {\r\n * }\r\n *\r\n * @Directive({\r\n * selector: '[dependency]',\r\n * inputs: [\r\n * 'id: dependency'\r\n * ]\r\n * })\r\n * class Dependency {\r\n * id:string;\r\n * }\r\n * ```\r\n *\r\n * Let's step through the different ways in which `MyDirective` could be declared...\r\n *\r\n *\r\n * ### No injection\r\n *\r\n * Here the constructor is declared with no arguments, therefore nothing is injected into\r\n * `MyDirective`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor() {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with no dependencies.\r\n *\r\n *\r\n * ### Component-level injection\r\n *\r\n * Directives can inject any injectable instance from the closest component injector or any of its\r\n * parents.\r\n *\r\n * Here, the constructor declares a parameter, `someService`, and injects the `SomeService` type\r\n * from the parent\r\n * component's injector.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(someService: SomeService) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a dependency on `SomeService`.\r\n *\r\n *\r\n * ### Injecting a directive from the current element\r\n *\r\n * Directives can inject other directives declared on the current element.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(dependency: Dependency) {\r\n * expect(dependency.id).toEqual(3);\r\n * }\r\n * }\r\n * ```\r\n * This directive would be instantiated with `Dependency` declared at the same element, in this case\r\n * `dependency=\"3\"`.\r\n *\r\n * ### Injecting a directive from any ancestor elements\r\n *\r\n * Directives can inject other directives declared on any ancestor element (in the current Shadow\r\n * DOM), i.e. on the current element, the\r\n * parent element, or its parents.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Host() dependency: Dependency) {\r\n * expect(dependency.id).toEqual(2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * `@Host` checks the current element, the parent, as well as its parents recursively. If\r\n * `dependency=\"2\"` didn't\r\n * exist on the direct parent, this injection would\r\n * have returned\r\n * `dependency=\"1\"`.\r\n *\r\n *\r\n * ### Injecting a live collection of direct child directives\r\n *\r\n *\r\n * A directive can also query for other child directives. Since parent directives are instantiated\r\n * before child directives, a directive can't simply inject the list of child directives. Instead,\r\n * the directive injects a {@link QueryList}, which updates its contents as children are added,\r\n * removed, or moved by a directive that uses a {@link ViewContainerRef} such as a `ngFor`, an\r\n * `ngIf`, or an `ngSwitch`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a {@link QueryList} which contains `Dependency` 4 and\r\n * 6. Here, `Dependency` 5 would not be included, because it is not a direct child.\r\n *\r\n * ### Injecting a live collection of descendant directives\r\n *\r\n * By passing the descendant flag to `@Query` above, we can include the children of the child\r\n * elements.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency, {descendants: true}) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a Query which would contain `Dependency` 4, 5 and 6.\r\n *\r\n * ### Optional injection\r\n *\r\n * The normal behavior of directives is to return an error when a specified dependency cannot be\r\n * resolved. If you\r\n * would like to inject `null` on unresolved dependency instead, you can annotate that dependency\r\n * with `@Optional()`.\r\n * This explicitly permits the author of a template to treat some of the surrounding directives as\r\n * optional.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Optional() dependency:Dependency) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a `Dependency` directive found on the current element.\r\n * If none can be\r\n * found, the injector supplies `null` instead of throwing an error.\r\n *\r\n * ### Example\r\n *\r\n * Here we use a decorator directive to simply define basic tool-tip behavior.\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[tooltip]',\r\n * inputs: [\r\n * 'text: tooltip'\r\n * ],\r\n * host: {\r\n * '(mouseenter)': 'onMouseEnter()',\r\n * '(mouseleave)': 'onMouseLeave()'\r\n * }\r\n * })\r\n * class Tooltip{\r\n * text:string;\r\n * overlay:Overlay; // NOT YET IMPLEMENTED\r\n * overlayManager:OverlayManager; // NOT YET IMPLEMENTED\r\n *\r\n * constructor(overlayManager:OverlayManager) {\r\n * this.overlay = overlay;\r\n * }\r\n *\r\n * onMouseEnter() {\r\n * // exact signature to be determined\r\n * this.overlay = this.overlayManager.open(text, ...);\r\n * }\r\n *\r\n * onMouseLeave() {\r\n * this.overlay.close();\r\n * this.overlay = null;\r\n * }\r\n * }\r\n * ```\r\n * In our HTML template, we can then add this behavior to a `<div>` or any other element with the\r\n * `tooltip` selector,\r\n * like so:\r\n *\r\n * ```\r\n * <div tooltip=\"some text here\"></div>\r\n * ```\r\n *\r\n * Directives can also control the instantiation, destruction, and positioning of inline template\r\n * elements:\r\n *\r\n * A directive uses a {@link ViewContainerRef} to instantiate, insert, move, and destroy views at\r\n * runtime.\r\n * The {@link ViewContainerRef} is created as a result of `<template>` element, and represents a\r\n * location in the current view\r\n * where these actions are performed.\r\n *\r\n * Views are always created as children of the current {@link ViewMetadata}, and as siblings of the\r\n * `<template>` element. Thus a\r\n * directive in a child view cannot inject the directive that created it.\r\n *\r\n * Since directives that create views via ViewContainers are common in Angular, and using the full\r\n * `<template>` element syntax is wordy, Angular\r\n * also supports a shorthand notation: `<li *foo=\"bar\">` and `<li template=\"foo: bar\">` are\r\n * equivalent.\r\n *\r\n * Thus,\r\n *\r\n * ```\r\n * <ul>\r\n * <li *foo=\"bar\" title=\"text\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Expands in use to:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [foo]=\"bar\">\r\n * <li title=\"text\"></li>\r\n * </template>\r\n * </ul>\r\n * ```\r\n *\r\n * Notice that although the shorthand places `*foo=\"bar\"` within the `<li>` element, the binding for\r\n * the directive\r\n * controller is correctly instantiated on the `<template>` element rather than the `<li>` element.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the directive class implements some {@link ../../guide/lifecycle-hooks.html} the callbacks\r\n * are called by the change detection at defined points in time during the life of the directive.\r\n *\r\n * ### Example\r\n *\r\n * Let's suppose we want to implement the `unless` behavior, to conditionally include a template.\r\n *\r\n * Here is a simple directive that triggers on an `unless` selector:\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[unless]',\r\n * inputs: ['unless']\r\n * })\r\n * export class Unless {\r\n * viewContainer: ViewContainerRef;\r\n * templateRef: TemplateRef;\r\n * prevCondition: boolean;\r\n *\r\n * constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef) {\r\n * this.viewContainer = viewContainer;\r\n * this.templateRef = templateRef;\r\n * this.prevCondition = null;\r\n * }\r\n *\r\n * set unless(newCondition) {\r\n * if (newCondition && (isBlank(this.prevCondition) || !this.prevCondition)) {\r\n * this.prevCondition = true;\r\n * this.viewContainer.clear();\r\n * } else if (!newCondition && (isBlank(this.prevCondition) || this.prevCondition)) {\r\n * this.prevCondition = false;\r\n * this.viewContainer.create(this.templateRef);\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can then use this `unless` selector in a template:\r\n * ```\r\n * <ul>\r\n * <li *unless=\"expr\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Once the directive instantiates the child view, the shorthand notation for the template expands\r\n * and the result is:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [unless]=\"exp\">\r\n * <li></li>\r\n * </template>\r\n * <li></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Note also that although the `<li></li>` template still exists inside the `<template></template>`,\r\n * the instantiated\r\n * view occurs on the second `<li></li>` which is a sibling to the `<template>` element.\r\n */\r\nexports.Directive = decorators_1.makeDecorator(directives_2.DirectiveMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewMetadata.\r\n/**\r\n * Metadata properties available for configuring Views.\r\n *\r\n * Each Angular component requires a single `@Component` and at least one `@View` annotation. The\r\n * `@View` annotation specifies the HTML template to use, and lists the directives that are active\r\n * within the template.\r\n *\r\n * When a component is instantiated, the template is loaded into the component's shadow root, and\r\n * the expressions and statements in the template are evaluated against the component.\r\n *\r\n * For details on the `@Component` annotation, see {@link ComponentMetadata}.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'greet',\r\n * template: 'Hello {{name}}!',\r\n * directives: [GreetUser, Bold]\r\n * })\r\n * class Greet {\r\n * name: string;\r\n *\r\n * constructor() {\r\n * this.name = 'World';\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar View = decorators_1.makeDecorator(view_2.ViewMetadata, function (fn) { return fn.View = View; });\r\n/**\r\n * Specifies that a constant attribute value should be injected.\r\n *\r\n * The directive can inject constant string literals of host element attributes.\r\n *\r\n * ### Example\r\n *\r\n * Suppose we have an `<input>` element and want to know its `type`.\r\n *\r\n * ```html\r\n * <input type=\"text\">\r\n * ```\r\n *\r\n * A decorator can inject string literal `text` like so:\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\r\n */\r\nexports.Attribute = decorators_1.makeParamDecorator(di_2.AttributeMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from QueryMetadata.\r\n/**\r\n * Declares an injectable parameter to be a live list of directives or variable\r\n * bindings from the content children of a directive.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/lY9m8HLy7z06vDoUaSN2?p=preview))\r\n *\r\n * Assume that `<tabs>` component would like to get a list its children `<pane>`\r\n * components as shown in this example:\r\n *\r\n * ```html\r\n * <tabs>\r\n * <pane title=\"Overview\">...</pane>\r\n * <pane *ngFor=\"let o of objects\" [title]=\"o.title\">{{o.text}}</pane>\r\n * </tabs>\r\n * ```\r\n *\r\n * The preferred solution is to query for `Pane` directives using this decorator.\r\n *\r\n * ```javascript\r\n * @Component({\r\n * selector: 'pane',\r\n * inputs: ['title']\r\n * })\r\n * class Pane {\r\n * title:string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'tabs',\r\n * template: `\r\n * <ul>\r\n * <li *ngFor=\"let pane of panes\">{{pane.title}}</li>\r\n * </ul>\r\n * <ng-content></ng-content>\r\n * `\r\n * })\r\n * class Tabs {\r\n * panes: QueryList<Pane>;\r\n * constructor(@Query(Pane) panes:QueryList<Pane>) {\r\n * this.panes = panes;\r\n * }\r\n * }\r\n * ```\r\n *\r\n * A query can look for variable bindings by passing in a string with desired binding symbol.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/sT2j25cH1dURAyBRCKx1?p=preview))\r\n * ```html\r\n * <seeker>\r\n * <div #findme>...</div>\r\n * </seeker>\r\n *\r\n * @Component({ selector: 'seeker' })\r\n * class seeker {\r\n * constructor(@Query('findme') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * In this case the object that is injected depend on the type of the variable\r\n * binding. It can be an ElementRef, a directive or a component.\r\n *\r\n * Passing in a comma separated list of variable bindings will query for all of them.\r\n *\r\n * ```html\r\n * <seeker>\r\n * <div #findMe>...</div>\r\n * <div #findMeToo>...</div>\r\n * </seeker>\r\n *\r\n * @Component({\r\n * selector: 'seeker'\r\n * })\r\n * class Seeker {\r\n * constructor(@Query('findMe, findMeToo') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * Configure whether query looks for direct children or all descendants\r\n * of the querying element, by using the `descendants` parameter.\r\n * It is set to `false` by default.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/wtGeB977bv7qvA5FTYl9?p=preview))\r\n * ```html\r\n * <container #first>\r\n * <item>a</item>\r\n * <item>b</item>\r\n * <container #second>\r\n * <item>c</item>\r\n * </container>\r\n * </container>\r\n * ```\r\n *\r\n * When querying for items, the first container will see only `a` and `b` by default,\r\n * but with `Query(TextDirective, {descendants: true})` it will see `c` too.\r\n *\r\n * The queried directives are kept in a depth-first pre-order with respect to their\r\n * positions in the DOM.\r\n *\r\n * Query does not look deep into any subcomponent views.\r\n *\r\n * Query is updated as part of the change-detection cycle. Since change detection\r\n * happens after construction of a directive, QueryList will always be empty when observed in the\r\n * constructor.\r\n *\r\n * The injected object is an unmodifiable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nexports.Query = decorators_1.makeParamDecorator(di_2.QueryMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ContentChildrenMetadata.\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChildren(ChildDirective) contentChildren: QueryList<ChildDirective>;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChildren is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nexports.ContentChildren = decorators_1.makePropDecorator(di_2.ContentChildrenMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ContentChildMetadata.\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChild(ChildDirective) contentChild;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChild is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nexports.ContentChild = decorators_1.makePropDecorator(di_2.ContentChildMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewChildrenMetadata.\r\n/**\r\n * Declares a list of child element references.\r\n *\r\n * Angular automatically updates the list when the DOM is updated.\r\n *\r\n * `ViewChildren` takes a argument to select elements.\r\n *\r\n * - If the argument is a type, directives or components with the type will be bound.\r\n *\r\n * - If the argument is a string, the string is interpreted as a list of comma-separated selectors.\r\n * For each selector, an element containing the matching template variable (e.g. `#child`) will be\r\n * bound.\r\n *\r\n * View children are set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * With type selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: `\r\n * <child-cmp></child-cmp>\r\n * <child-cmp></child-cmp>\r\n * <child-cmp></child-cmp>\r\n * `,\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChildren(ChildCmp) children:QueryList<ChildCmp>;\r\n *\r\n * ngAfterViewInit() {\r\n * // children are set\r\n * this.children.toArray().forEach((child)=>child.doSomething());\r\n * }\r\n * }\r\n * ```\r\n *\r\n * With string selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: `\r\n * <child-cmp #child1></child-cmp>\r\n * <child-cmp #child2></child-cmp>\r\n * <child-cmp #child3></child-cmp>\r\n * `,\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChildren('child1,child2,child3') children:QueryList<ChildCmp>;\r\n *\r\n * ngAfterViewInit() {\r\n * // children are set\r\n * this.children.toArray().forEach((child)=>child.doSomething());\r\n * }\r\n * }\r\n * ```\r\n *\r\n * See also: [ViewChildrenMetadata]\r\n */\r\nexports.ViewChildren = decorators_1.makePropDecorator(di_2.ViewChildrenMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewChildMetadata.\r\n/**\r\n * Declares a reference to a child element.\r\n *\r\n * `ViewChildren` takes a argument to select elements.\r\n *\r\n * - If the argument is a type, a directive or a component with the type will be bound.\r\n *\r\n * - If the argument is a string, the string is interpreted as a selector. An element containing the\r\n * matching template variable (e.g. `#child`) will be bound.\r\n *\r\n * In either case, `@ViewChild()` assigns the first (looking from above) element if there are\r\n * multiple matches.\r\n *\r\n * View child is set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * With type selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: '<child-cmp></child-cmp>',\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChild(ChildCmp) child:ChildCmp;\r\n *\r\n * ngAfterViewInit() {\r\n * // child is set\r\n * this.child.doSomething();\r\n * }\r\n * }\r\n * ```\r\n *\r\n * With string selector:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'child-cmp',\r\n * template: '<p>child</p>'\r\n * })\r\n * class ChildCmp {\r\n * doSomething() {}\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'some-cmp',\r\n * template: '<child-cmp #child></child-cmp>',\r\n * directives: [ChildCmp]\r\n * })\r\n * class SomeCmp {\r\n * @ViewChild('child') child:ChildCmp;\r\n *\r\n * ngAfterViewInit() {\r\n * // child is set\r\n * this.child.doSomething();\r\n * }\r\n * }\r\n * ```\r\n * See also: [ViewChildMetadata]\r\n */\r\nexports.ViewChild = decorators_1.makePropDecorator(di_2.ViewChildMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewQueryMetadata.\r\n/**\r\n * Similar to {@link QueryMetadata}, but querying the component view, instead of\r\n * the content children.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/eNsFHDf7YjyM6IzKxM1j?p=preview))\r\n *\r\n * ```javascript\r\n * @Component({\r\n * ...,\r\n * template: `\r\n * <item> a </item>\r\n * <item> b </item>\r\n * <item> c </item>\r\n * `\r\n * })\r\n * class MyComponent {\r\n * shown: boolean;\r\n *\r\n * constructor(private @Query(Item) items:QueryList<Item>) {\r\n * items.changes.subscribe(() => console.log(items.length));\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Supports the same querying parameters as {@link QueryMetadata}, except\r\n * `descendants`. This always queries the whole view.\r\n *\r\n * As `shown` is flipped between true and false, items will contain zero of one\r\n * items.\r\n *\r\n * Specifies that a {@link QueryList} should be injected.\r\n *\r\n * The injected object is an iterable and observable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nexports.ViewQuery = decorators_1.makeParamDecorator(di_2.ViewQueryMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from PipeMetadata.\r\n/**\r\n * Declare reusable pipe function.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='pipe'}\r\n */\r\nexports.Pipe = decorators_1.makeDecorator(directives_2.PipeMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from InputMetadata.\r\n/**\r\n * Declares a data-bound input property.\r\n *\r\n * Angular automatically updates data-bound properties during change detection.\r\n *\r\n * `InputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a component with two input properties.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'bank-account',\r\n * template: `\r\n * Bank Name: {{bankName}}\r\n * Account Id: {{id}}\r\n * `\r\n * })\r\n * class BankAccount {\r\n * @Input() bankName: string;\r\n * @Input('account-id') id: string;\r\n *\r\n * // this property is not bound, and won't be automatically updated by Angular\r\n * normalizedBankName: string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\r\n * `,\r\n * directives: [BankAccount]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.Input = decorators_1.makePropDecorator(directives_2.InputMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from OutputMetadata.\r\n/**\r\n * Declares an event-bound output property.\r\n *\r\n * When an output property emits an event, an event handler attached to that event\r\n * the template is invoked.\r\n *\r\n * `OutputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Directive({\r\n * selector: 'interval-dir',\r\n * })\r\n * class IntervalDir {\r\n * @Output() everySecond = new EventEmitter();\r\n * @Output('everyFiveSeconds') five5Secs = new EventEmitter();\r\n *\r\n * constructor() {\r\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\r\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\r\n * </interval-dir>\r\n * `,\r\n * directives: [IntervalDir]\r\n * })\r\n * class App {\r\n * everySecond() { console.log('second'); }\r\n * everyFiveSeconds() { console.log('five seconds'); }\r\n * }\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.Output = decorators_1.makePropDecorator(directives_2.OutputMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from HostBindingMetadata.\r\n/**\r\n * Declares a host property binding.\r\n *\r\n * Angular automatically checks host property bindings during change detection.\r\n * If a binding changes, it will update the host element of the directive.\r\n *\r\n * `HostBindingMetadata` takes an optional parameter that specifies the property\r\n * name of the host element that will be updated. When not provided,\r\n * the class property name is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a directive that sets the `valid` and `invalid` classes\r\n * on the DOM element that has ngModel directive on it.\r\n *\r\n * ```typescript\r\n * @Directive({selector: '[ngModel]'})\r\n * class NgModelStatus {\r\n * constructor(public control:NgModel) {}\r\n * @HostBinding('[class.valid]') get valid { return this.control.valid; }\r\n * @HostBinding('[class.invalid]') get invalid { return this.control.invalid; }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<input [(ngModel)]=\"prop\">`,\r\n * directives: [FORM_DIRECTIVES, NgModelStatus]\r\n * })\r\n * class App {\r\n * prop;\r\n * }\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.HostBinding = decorators_1.makePropDecorator(directives_2.HostBindingMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from HostListenerMetadata.\r\n/**\r\n * Declares a host listener.\r\n *\r\n * Angular will invoke the decorated method when the host element emits the specified event.\r\n *\r\n * If the decorated method returns `false`, then `preventDefault` is applied on the DOM\r\n * event.\r\n *\r\n * ### Example\r\n *\r\n * The following example declares a directive that attaches a click listener to the button and\r\n * counts clicks.\r\n *\r\n * ```typescript\r\n * @Directive({selector: 'button[counting]'})\r\n * class CountClicks {\r\n * numberOfClicks = 0;\r\n *\r\n * @HostListener('click', ['$event.target'])\r\n * onClick(btn) {\r\n * console.log(\"button\", btn, \"number of clicks:\", this.numberOfClicks++);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<button counting>Increment</button>`,\r\n * directives: [CountClicks]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.HostListener = decorators_1.makePropDecorator(directives_2.HostListenerMetadata);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7O0FBRUgsbUJBUU8sZUFBZSxDQUFDO0FBUHJCLDJDQUFhO0FBQ2IsK0RBQXVCO0FBQ3ZCLHlEQUFvQjtBQUNwQix5REFBb0I7QUFDcEIsbURBQWlCO0FBQ2pCLG1EQUFpQjtBQUNqQixtREFDcUI7QUFFdkIsMkJBUU8sdUJBQXVCLENBQUM7QUFQN0IsMkRBQWlCO0FBQ2pCLDJEQUFpQjtBQUNqQixpREFBWTtBQUNaLG1EQUFhO0FBQ2IscURBQWM7QUFDZCwrREFBbUI7QUFDbkIsaUVBQzZCO0FBRS9CLHFCQUE4QyxpQkFBaUIsQ0FBQztBQUF4RCwyQ0FBWTtBQUFFLHFEQUEwQztBQWFoRSxtQkFRTyxlQUFlLENBQUMsQ0FBQTtBQUV2QiwyQkFRTyx1QkFBdUIsQ0FBQyxDQUFBO0FBRS9CLHFCQUE4QyxpQkFBaUIsQ0FBQyxDQUFBO0FBR2hFLDJCQU1PLG1CQUFtQixDQUFDLENBQUE7QUF5YTNCLDRGQUE0RjtBQUM1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNRLGlCQUFTLEdBQ1UsMEJBQWEsQ0FBQyw4QkFBaUIsRUFBRSxVQUFDLEVBQU8sSUFBSyxPQUFBLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFkLENBQWMsQ0FBQyxDQUFDO0FBRTVGLDRGQUE0RjtBQUM1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5WEc7QUFDUSxpQkFBUyxHQUNVLDBCQUFhLENBQUMsOEJBQWlCLENBQUMsQ0FBQztBQUUvRCx1RkFBdUY7QUFDdkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxJQUFJLElBQUksR0FDaUIsMEJBQWEsQ0FBQyxtQkFBWSxFQUFFLFVBQUMsRUFBTyxJQUFLLE9BQUEsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQWQsQ0FBYyxDQUFDLENBQUM7QUFFbEY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDUSxpQkFBUyxHQUE2QiwrQkFBa0IsQ0FBQyxzQkFBaUIsQ0FBQyxDQUFDO0FBRXZGLHdGQUF3RjtBQUN4Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBHRztBQUNRLGFBQUssR0FBeUIsK0JBQWtCLENBQUMsa0JBQWEsQ0FBQyxDQUFDO0FBRTNFLGtHQUFrRztBQUNsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNRLHVCQUFlLEdBQ3RCLDhCQUFpQixDQUFDLDRCQUF1QixDQUFDLENBQUM7QUFFL0MsK0ZBQStGO0FBQy9GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ1Esb0JBQVksR0FBZ0MsOEJBQWlCLENBQUMseUJBQW9CLENBQUMsQ0FBQztBQUUvRiwrRkFBK0Y7QUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThFRztBQUNRLG9CQUFZLEdBQWdDLDhCQUFpQixDQUFDLHlCQUFvQixDQUFDLENBQUM7QUFFL0YsNEZBQTRGO0FBQzVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxRUc7QUFDUSxpQkFBUyxHQUE2Qiw4QkFBaUIsQ0FBQyxzQkFBaUIsQ0FBQyxDQUFDO0FBRXRGLDRGQUE0RjtBQUM1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNRLGlCQUFTLEdBQXlCLCtCQUFrQixDQUFDLHNCQUFpQixDQUFDLENBQUM7QUFFbkYsdUZBQXVGO0FBQ3ZGOzs7Ozs7R0FNRztBQUNRLFlBQUksR0FBNkMsMEJBQWEsQ0FBQyx5QkFBWSxDQUFDLENBQUM7QUFFeEYsd0ZBQXdGO0FBQ3hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ1EsYUFBSyxHQUF5Qiw4QkFBaUIsQ0FBQywwQkFBYSxDQUFDLENBQUM7QUFFMUUseUZBQXlGO0FBQ3pGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ1EsY0FBTSxHQUEwQiw4QkFBaUIsQ0FBQywyQkFBYyxDQUFDLENBQUM7QUFFN0UsOEZBQThGO0FBQzlGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ1EsbUJBQVcsR0FBK0IsOEJBQWlCLENBQUMsZ0NBQW1CLENBQUMsQ0FBQztBQUU1RiwrRkFBK0Y7QUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNRLG9CQUFZLEdBQWdDLDhCQUFpQixDQUFDLGlDQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgaW5kaXJlY3Rpb24gaXMgbmVlZGVkIHRvIGZyZWUgdXAgQ29tcG9uZW50LCBldGMgc3ltYm9scyBpbiB0aGUgcHVibGljIEFQSVxuICogdG8gYmUgdXNlZCBieSB0aGUgZGVjb3JhdG9yIHZlcnNpb25zIG9mIHRoZXNlIGFubm90YXRpb25zLlxuICovXG5cbmV4cG9ydCB7XG4gIFF1ZXJ5TWV0YWRhdGEsXG4gIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhLFxuICBDb250ZW50Q2hpbGRNZXRhZGF0YSxcbiAgVmlld0NoaWxkcmVuTWV0YWRhdGEsXG4gIFZpZXdRdWVyeU1ldGFkYXRhLFxuICBWaWV3Q2hpbGRNZXRhZGF0YSxcbiAgQXR0cmlidXRlTWV0YWRhdGFcbn0gZnJvbSAnLi9tZXRhZGF0YS9kaSc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudE1ldGFkYXRhLFxuICBEaXJlY3RpdmVNZXRhZGF0YSxcbiAgUGlwZU1ldGFkYXRhLFxuICBJbnB1dE1ldGFkYXRhLFxuICBPdXRwdXRNZXRhZGF0YSxcbiAgSG9zdEJpbmRpbmdNZXRhZGF0YSxcbiAgSG9zdExpc3RlbmVyTWV0YWRhdGFcbn0gZnJvbSAnLi9tZXRhZGF0YS9kaXJlY3RpdmVzJztcblxuZXhwb3J0IHtWaWV3TWV0YWRhdGEsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICcuL21ldGFkYXRhL3ZpZXcnO1xuXG5leHBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBEb0NoZWNrXG59IGZyb20gJy4vbWV0YWRhdGEvbGlmZWN5Y2xlX2hvb2tzJztcblxuaW1wb3J0IHtcbiAgUXVlcnlNZXRhZGF0YSxcbiAgQ29udGVudENoaWxkcmVuTWV0YWRhdGEsXG4gIENvbnRlbnRDaGlsZE1ldGFkYXRhLFxuICBWaWV3Q2hpbGRyZW5NZXRhZGF0YSxcbiAgVmlld0NoaWxkTWV0YWRhdGEsXG4gIFZpZXdRdWVyeU1ldGFkYXRhLFxuICBBdHRyaWJ1dGVNZXRhZGF0YVxufSBmcm9tICcuL21ldGFkYXRhL2RpJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50TWV0YWRhdGEsXG4gIERpcmVjdGl2ZU1ldGFkYXRhLFxuICBQaXBlTWV0YWRhdGEsXG4gIElucHV0TWV0YWRhdGEsXG4gIE91dHB1dE1ldGFkYXRhLFxuICBIb3N0QmluZGluZ01ldGFkYXRhLFxuICBIb3N0TGlzdGVuZXJNZXRhZGF0YVxufSBmcm9tICcuL21ldGFkYXRhL2RpcmVjdGl2ZXMnO1xuXG5pbXBvcnQge1ZpZXdNZXRhZGF0YSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJy4vbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuXG5pbXBvcnQge1xuICBtYWtlRGVjb3JhdG9yLFxuICBtYWtlUGFyYW1EZWNvcmF0b3IsXG4gIG1ha2VQcm9wRGVjb3JhdG9yLFxuICBUeXBlRGVjb3JhdG9yLFxuICBDbGFzc1xufSBmcm9tICcuL3V0aWwvZGVjb3JhdG9ycyc7XG5pbXBvcnQge1R5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciB0aGUge0BsaW5rIERpcmVjdGl2ZU1ldGFkYXRhfSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gKlxuICogU2VlIHtAbGluayBEaXJlY3RpdmVGYWN0b3J5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVEZWNvcmF0b3IgZXh0ZW5kcyBUeXBlRGVjb3JhdG9yIHt9XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciB0aGUge0BsaW5rIENvbXBvbmVudE1ldGFkYXRhfSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gKlxuICogU2VlIHtAbGluayBDb21wb25lbnRGYWN0b3J5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREZWNvcmF0b3IgZXh0ZW5kcyBUeXBlRGVjb3JhdG9yIHtcbiAgLyoqXG4gICAqIENoYWluIHtAbGluayBWaWV3TWV0YWRhdGF9IGFubm90YXRpb24uXG4gICAqL1xuICBWaWV3KG9iajoge1xuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICByZW5kZXJlcj86IHN0cmluZyxcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgfSk6IFZpZXdEZWNvcmF0b3I7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciB0aGUge0BsaW5rIFZpZXdNZXRhZGF0YX0gZGVjb3JhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIFNlZSB7QGxpbmsgVmlld0ZhY3Rvcnl9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdEZWNvcmF0b3IgZXh0ZW5kcyBUeXBlRGVjb3JhdG9yIHtcbiAgLyoqXG4gICAqIENoYWluIHtAbGluayBWaWV3TWV0YWRhdGF9IGFubm90YXRpb24uXG4gICAqL1xuICBWaWV3KG9iajoge1xuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICByZW5kZXJlcj86IHN0cmluZyxcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgfSk6IFZpZXdEZWNvcmF0b3I7XG59XG5cbi8qKlxuICoge0BsaW5rIERpcmVjdGl2ZU1ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBhbm5vdGF0aW9ucywgZGVjb3JhdG9ycyBvciBEU0wuXG4gKlxuICogIyMjIEV4YW1wbGUgYXMgVHlwZVNjcmlwdCBEZWNvcmF0b3JcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS90cy9tZXRhZGF0YS9tZXRhZGF0YS50cyByZWdpb249J2RpcmVjdGl2ZSd9XG4gKlxuICogIyMjIEV4YW1wbGUgYXMgRVM1IERTTFxuICpcbiAqIGBgYFxuICogdmFyIE15RGlyZWN0aXZlID0gbmdcbiAqICAgLkRpcmVjdGl2ZSh7Li4ufSlcbiAqICAgLkNsYXNzKHtcbiAqICAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XG4gKiAgIH0pXG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgYW5ub3RhdGlvblxuICpcbiAqIGBgYFxuICogdmFyIE15RGlyZWN0aXZlID0gZnVuY3Rpb24oKSB7XG4gKiAgIC4uLlxuICogfTtcbiAqXG4gKiBNeURpcmVjdGl2ZS5hbm5vdGF0aW9ucyA9IFtcbiAqICAgbmV3IG5nLkRpcmVjdGl2ZSh7Li4ufSlcbiAqIF1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGl2ZU1ldGFkYXRhRmFjdG9yeSB7XG4gIChvYmo6IHtcbiAgICBzZWxlY3Rvcj86IHN0cmluZyxcbiAgICBpbnB1dHM/OiBzdHJpbmdbXSxcbiAgICBvdXRwdXRzPzogc3RyaW5nW10sXG4gICAgcHJvcGVydGllcz86IHN0cmluZ1tdLFxuICAgIGV2ZW50cz86IHN0cmluZ1tdLFxuICAgIGhvc3Q/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBiaW5kaW5ncz86IGFueVtdLFxuICAgIHByb3ZpZGVycz86IGFueVtdLFxuICAgIGV4cG9ydEFzPzogc3RyaW5nLFxuICAgIHF1ZXJpZXM/OiB7W2tleTogc3RyaW5nXTogYW55fVxuICB9KTogRGlyZWN0aXZlRGVjb3JhdG9yO1xuICBuZXcgKG9iajoge1xuICAgIHNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGlucHV0cz86IHN0cmluZ1tdLFxuICAgIG91dHB1dHM/OiBzdHJpbmdbXSxcbiAgICBwcm9wZXJ0aWVzPzogc3RyaW5nW10sXG4gICAgZXZlbnRzPzogc3RyaW5nW10sXG4gICAgaG9zdD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIGJpbmRpbmdzPzogYW55W10sXG4gICAgcHJvdmlkZXJzPzogYW55W10sXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgcXVlcmllcz86IHtba2V5OiBzdHJpbmddOiBhbnl9XG4gIH0pOiBEaXJlY3RpdmVNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgQ29tcG9uZW50TWV0YWRhdGF9IGZhY3RvcnkgZm9yIGNyZWF0aW5nIGFubm90YXRpb25zLCBkZWNvcmF0b3JzIG9yIERTTC5cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBUeXBlU2NyaXB0IERlY29yYXRvclxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nY29tcG9uZW50J31cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgRFNMXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBuZ1xuICogICAuQ29tcG9uZW50KHsuLi59KVxuICogICAuQ2xhc3Moe1xuICogICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIC4uLlxuICogICAgIH1cbiAqICAgfSlcbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBhbm5vdGF0aW9uXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBmdW5jdGlvbigpIHtcbiAqICAgLi4uXG4gKiB9O1xuICpcbiAqIE15Q29tcG9uZW50LmFubm90YXRpb25zID0gW1xuICogICBuZXcgbmcuQ29tcG9uZW50KHsuLi59KVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGFGYWN0b3J5IHtcbiAgKG9iajoge1xuICAgIHNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGlucHV0cz86IHN0cmluZ1tdLFxuICAgIG91dHB1dHM/OiBzdHJpbmdbXSxcbiAgICBwcm9wZXJ0aWVzPzogc3RyaW5nW10sXG4gICAgZXZlbnRzPzogc3RyaW5nW10sXG4gICAgaG9zdD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIC8qIEBkZXByZWNhdGVkICovXG4gICAgYmluZGluZ3M/OiBhbnlbXSxcbiAgICBwcm92aWRlcnM/OiBhbnlbXSxcbiAgICBleHBvcnRBcz86IHN0cmluZyxcbiAgICBtb2R1bGVJZD86IHN0cmluZyxcbiAgICBxdWVyaWVzPzoge1trZXk6IHN0cmluZ106IGFueX0sXG4gICAgdmlld0JpbmRpbmdzPzogYW55W10sXG4gICAgdmlld1Byb3ZpZGVycz86IGFueVtdLFxuICAgIGNoYW5nZURldGVjdGlvbj86IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIHN0eWxlVXJscz86IHN0cmluZ1tdLFxuICAgIHN0eWxlcz86IHN0cmluZ1tdLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb25cbiAgfSk6IENvbXBvbmVudERlY29yYXRvcjtcbiAgbmV3IChvYmo6IHtcbiAgICBzZWxlY3Rvcj86IHN0cmluZyxcbiAgICBpbnB1dHM/OiBzdHJpbmdbXSxcbiAgICBvdXRwdXRzPzogc3RyaW5nW10sXG4gICAgcHJvcGVydGllcz86IHN0cmluZ1tdLFxuICAgIGV2ZW50cz86IHN0cmluZ1tdLFxuICAgIGhvc3Q/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICAvKiBAZGVwcmVjYXRlZCAqL1xuICAgIGJpbmRpbmdzPzogYW55W10sXG4gICAgcHJvdmlkZXJzPzogYW55W10sXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgbW9kdWxlSWQ/OiBzdHJpbmcsXG4gICAgcXVlcmllcz86IHtba2V5OiBzdHJpbmddOiBhbnl9LFxuICAgIC8qIEBkZXByZWNhdGVkICovXG4gICAgdmlld0JpbmRpbmdzPzogYW55W10sXG4gICAgdmlld1Byb3ZpZGVycz86IGFueVtdLFxuICAgIGNoYW5nZURldGVjdGlvbj86IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIHN0eWxlVXJscz86IHN0cmluZ1tdLFxuICAgIHN0eWxlcz86IHN0cmluZ1tdLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb25cbiAgfSk6IENvbXBvbmVudE1ldGFkYXRhO1xufVxuXG4vKipcbiAqIHtAbGluayBWaWV3TWV0YWRhdGF9IGZhY3RvcnkgZm9yIGNyZWF0aW5nIGFubm90YXRpb25zLCBkZWNvcmF0b3JzIG9yIERTTC5cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBUeXBlU2NyaXB0IERlY29yYXRvclxuICpcbiAqIGBgYFxuICogaW1wb3J0IHtDb21wb25lbnQsIFZpZXd9IGZyb20gXCJhbmd1bGFyMi9jb3JlXCI7XG4gKlxuICogQENvbXBvbmVudCh7Li4ufSlcbiAqIGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBEU0xcbiAqXG4gKiBgYGBcbiAqIHZhciBNeUNvbXBvbmVudCA9IG5nXG4gKiAgIC5Db21wb25lbnQoey4uLn0pXG4gKiAgIC5WaWV3KHsuLi59KVxuICogICAuQ2xhc3Moe1xuICogICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIC4uLlxuICogICAgIH1cbiAqICAgfSlcbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBhbm5vdGF0aW9uXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBmdW5jdGlvbigpIHtcbiAqICAgLi4uXG4gKiB9O1xuICpcbiAqIE15Q29tcG9uZW50LmFubm90YXRpb25zID0gW1xuICogICBuZXcgbmcuQ29tcG9uZW50KHsuLi59KSxcbiAqICAgbmV3IG5nLlZpZXcoey4uLn0pXG4gKiBdXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaWV3TWV0YWRhdGFGYWN0b3J5IHtcbiAgKG9iajoge1xuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgc3R5bGVzPzogc3RyaW5nW10sXG4gICAgc3R5bGVVcmxzPzogc3RyaW5nW10sXG4gIH0pOiBWaWV3RGVjb3JhdG9yO1xuICBuZXcgKG9iajoge1xuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgc3R5bGVzPzogc3RyaW5nW10sXG4gICAgc3R5bGVVcmxzPzogc3RyaW5nW10sXG4gIH0pOiBWaWV3TWV0YWRhdGE7XG59XG5cbi8qKlxuICoge0BsaW5rIEF0dHJpYnV0ZU1ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBhbm5vdGF0aW9ucywgZGVjb3JhdG9ycyBvciBEU0wuXG4gKlxuICogIyMjIEV4YW1wbGUgYXMgVHlwZVNjcmlwdCBEZWNvcmF0b3JcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS90cy9tZXRhZGF0YS9tZXRhZGF0YS50cyByZWdpb249J2F0dHJpYnV0ZUZhY3RvcnknfVxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBEU0xcbiAqXG4gKiBgYGBcbiAqIHZhciBNeUNvbXBvbmVudCA9IG5nXG4gKiAgIC5Db21wb25lbnQoey4uLn0pXG4gKiAgIC5DbGFzcyh7XG4gKiAgICAgY29uc3RydWN0b3I6IFtuZXcgbmcuQXR0cmlidXRlKCd0aXRsZScpLCBmdW5jdGlvbih0aXRsZSkge1xuICogICAgICAgLi4uXG4gKiAgICAgfV1cbiAqICAgfSlcbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBhbm5vdGF0aW9uXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBmdW5jdGlvbih0aXRsZSkge1xuICogICAuLi5cbiAqIH07XG4gKlxuICogTXlDb21wb25lbnQuYW5ub3RhdGlvbnMgPSBbXG4gKiAgIG5ldyBuZy5Db21wb25lbnQoey4uLn0pXG4gKiBdXG4gKiBNeUNvbXBvbmVudC5wYXJhbWV0ZXJzID0gW1xuICogICBbbmV3IG5nLkF0dHJpYnV0ZSgndGl0bGUnKV1cbiAqIF1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZU1ldGFkYXRhRmFjdG9yeSB7XG4gIChuYW1lOiBzdHJpbmcpOiBUeXBlRGVjb3JhdG9yO1xuICBuZXcgKG5hbWU6IHN0cmluZyk6IEF0dHJpYnV0ZU1ldGFkYXRhO1xufVxuXG4vKipcbiAqIHtAbGluayBRdWVyeU1ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBhbm5vdGF0aW9ucywgZGVjb3JhdG9ycyBvciBEU0wuXG4gKlxuICogIyMjIEV4YW1wbGUgYXMgVHlwZVNjcmlwdCBEZWNvcmF0b3JcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7UXVlcnksIFF1ZXJ5TGlzdCwgQ29tcG9uZW50fSBmcm9tIFwiYW5ndWxhcjIvY29yZVwiO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKEBRdWVyeShTb21lVHlwZSkgcXVlcnlMaXN0OiBRdWVyeUxpc3Q8U29tZVR5cGU+KSB7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBEU0xcbiAqXG4gKiBgYGBcbiAqIHZhciBNeUNvbXBvbmVudCA9IG5nXG4gKiAgIC5Db21wb25lbnQoey4uLn0pXG4gKiAgIC5DbGFzcyh7XG4gKiAgICAgY29uc3RydWN0b3I6IFtuZXcgbmcuUXVlcnkoU29tZVR5cGUpLCBmdW5jdGlvbihxdWVyeUxpc3QpIHtcbiAqICAgICAgIC4uLlxuICogICAgIH1dXG4gKiAgIH0pXG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgYW5ub3RhdGlvblxuICpcbiAqIGBgYFxuICogdmFyIE15Q29tcG9uZW50ID0gZnVuY3Rpb24ocXVlcnlMaXN0KSB7XG4gKiAgIC4uLlxuICogfTtcbiAqXG4gKiBNeUNvbXBvbmVudC5hbm5vdGF0aW9ucyA9IFtcbiAqICAgbmV3IG5nLkNvbXBvbmVudCh7Li4ufSlcbiAqIF1cbiAqIE15Q29tcG9uZW50LnBhcmFtZXRlcnMgPSBbXG4gKiAgIFtuZXcgbmcuUXVlcnkoU29tZVR5cGUpXVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlNZXRhZGF0YUZhY3Rvcnkge1xuICAoc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsXG4gICB7ZGVzY2VuZGFudHMsIHJlYWR9Pzoge2Rlc2NlbmRhbnRzPzogYm9vbGVhbiwgcmVhZD86IGFueX0pOiBQYXJhbWV0ZXJEZWNvcmF0b3I7XG4gIG5ldyAoc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsXG4gICAgICAge2Rlc2NlbmRhbnRzLCByZWFkfT86IHtkZXNjZW5kYW50cz86IGJvb2xlYW4sIHJlYWQ/OiBhbnl9KTogUXVlcnlNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciB7QGxpbmsgQ29udGVudENoaWxkcmVufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250ZW50Q2hpbGRyZW5NZXRhZGF0YUZhY3Rvcnkge1xuICAoc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsIHtkZXNjZW5kYW50cywgcmVhZH0/OiB7ZGVzY2VuZGFudHM/OiBib29sZWFuLCByZWFkPzogYW55fSk6IGFueTtcbiAgbmV3IChzZWxlY3RvcjogVHlwZSB8IHN0cmluZyxcbiAgICAgICB7ZGVzY2VuZGFudHMsIHJlYWR9Pzoge2Rlc2NlbmRhbnRzPzogYm9vbGVhbiwgcmVhZD86IGFueX0pOiBDb250ZW50Q2hpbGRyZW5NZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciB7QGxpbmsgQ29udGVudENoaWxkfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250ZW50Q2hpbGRNZXRhZGF0YUZhY3Rvcnkge1xuICAoc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsIHtyZWFkfT86IHtyZWFkPzogYW55fSk6IGFueTtcbiAgbmV3IChzZWxlY3RvcjogVHlwZSB8IHN0cmluZywge3JlYWR9Pzoge3JlYWQ/OiBhbnl9KTogQ29udGVudENoaWxkTWV0YWRhdGFGYWN0b3J5O1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIHtAbGluayBWaWV3Q2hpbGRyZW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdDaGlsZHJlbk1ldGFkYXRhRmFjdG9yeSB7XG4gIChzZWxlY3RvcjogVHlwZSB8IHN0cmluZywge3JlYWR9Pzoge3JlYWQ/OiBhbnl9KTogYW55O1xuICBuZXcgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nLCB7cmVhZH0/OiB7cmVhZD86IGFueX0pOiBWaWV3Q2hpbGRyZW5NZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciB7QGxpbmsgVmlld0NoaWxkfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaWV3Q2hpbGRNZXRhZGF0YUZhY3Rvcnkge1xuICAoc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsIHtyZWFkfT86IHtyZWFkPzogYW55fSk6IGFueTtcbiAgbmV3IChzZWxlY3RvcjogVHlwZSB8IHN0cmluZywge3JlYWR9Pzoge3JlYWQ/OiBhbnl9KTogVmlld0NoaWxkTWV0YWRhdGFGYWN0b3J5O1xufVxuXG5cbi8qKlxuICoge0BsaW5rIFBpcGVNZXRhZGF0YX0gZmFjdG9yeSBmb3IgY3JlYXRpbmcgZGVjb3JhdG9ycy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0ncGlwZSd9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZU1ldGFkYXRhRmFjdG9yeSB7XG4gIChvYmo6IHtuYW1lOiBzdHJpbmcsIHB1cmU/OiBib29sZWFufSk6IGFueTtcbiAgbmV3IChvYmo6IHtuYW1lOiBzdHJpbmcsIHB1cmU/OiBib29sZWFufSk6IGFueTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgSW5wdXRNZXRhZGF0YX0gZmFjdG9yeSBmb3IgY3JlYXRpbmcgZGVjb3JhdG9ycy5cbiAqXG4gKiBTZWUge0BsaW5rIElucHV0TWV0YWRhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0TWV0YWRhdGFGYWN0b3J5IHtcbiAgKGJpbmRpbmdQcm9wZXJ0eU5hbWU/OiBzdHJpbmcpOiBhbnk7XG4gIG5ldyAoYmluZGluZ1Byb3BlcnR5TmFtZT86IHN0cmluZyk6IGFueTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgT3V0cHV0TWV0YWRhdGF9IGZhY3RvcnkgZm9yIGNyZWF0aW5nIGRlY29yYXRvcnMuXG4gKlxuICogU2VlIHtAbGluayBPdXRwdXRNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0TWV0YWRhdGFGYWN0b3J5IHtcbiAgKGJpbmRpbmdQcm9wZXJ0eU5hbWU/OiBzdHJpbmcpOiBhbnk7XG4gIG5ldyAoYmluZGluZ1Byb3BlcnR5TmFtZT86IHN0cmluZyk6IGFueTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgSG9zdEJpbmRpbmdNZXRhZGF0YX0gZmFjdG9yeSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3N0QmluZGluZ01ldGFkYXRhRmFjdG9yeSB7XG4gIChob3N0UHJvcGVydHlOYW1lPzogc3RyaW5nKTogYW55O1xuICBuZXcgKGhvc3RQcm9wZXJ0eU5hbWU/OiBzdHJpbmcpOiBhbnk7XG59XG5cbi8qKlxuICoge0BsaW5rIEhvc3RMaXN0ZW5lck1ldGFkYXRhfSBmYWN0b3J5IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RMaXN0ZW5lck1ldGFkYXRhRmFjdG9yeSB7XG4gIChldmVudE5hbWU6IHN0cmluZywgYXJncz86IHN0cmluZ1tdKTogYW55O1xuICBuZXcgKGV2ZW50TmFtZTogc3RyaW5nLCBhcmdzPzogc3RyaW5nW10pOiBhbnk7XG59XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gQ29tcG9uZW50TWV0YWRhdGEuXG4vKipcbiAqIERlY2xhcmUgcmV1c2FibGUgVUkgYnVpbGRpbmcgYmxvY2tzIGZvciBhbiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBFYWNoIEFuZ3VsYXIgY29tcG9uZW50IHJlcXVpcmVzIGEgc2luZ2xlIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLiBUaGUgYEBDb21wb25lbnRgXG4gKiBhbm5vdGF0aW9uIHNwZWNpZmllcyB3aGVuIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCwgYW5kIHdoaWNoIHByb3BlcnRpZXMgYW5kIGhvc3RMaXN0ZW5lcnMgaXRcbiAqIGJpbmRzIHRvLlxuICpcbiAqIFdoZW4gYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkLCBBbmd1bGFyXG4gKiAtIGNyZWF0ZXMgYSBzaGFkb3cgRE9NIGZvciB0aGUgY29tcG9uZW50LlxuICogLSBsb2FkcyB0aGUgc2VsZWN0ZWQgdGVtcGxhdGUgaW50byB0aGUgc2hhZG93IERPTS5cbiAqIC0gY3JlYXRlcyBhbGwgdGhlIGluamVjdGFibGUgb2JqZWN0cyBjb25maWd1cmVkIHdpdGggYHByb3ZpZGVyc2AgYW5kIGB2aWV3UHJvdmlkZXJzYC5cbiAqXG4gKiBBbGwgdGVtcGxhdGUgZXhwcmVzc2lvbnMgYW5kIHN0YXRlbWVudHMgYXJlIHRoZW4gZXZhbHVhdGVkIGFnYWluc3QgdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAqXG4gKiAjIyBMaWZlY3ljbGUgaG9va3NcbiAqXG4gKiBXaGVuIHRoZSBjb21wb25lbnQgY2xhc3MgaW1wbGVtZW50cyBzb21lIHtAbGluayAuLi8uLi9ndWlkZS9saWZlY3ljbGUtaG9va3MuaHRtbH0gdGhlIGNhbGxiYWNrc1xuICogYXJlIGNhbGxlZCBieSB0aGUgY2hhbmdlIGRldGVjdGlvbiBhdCBkZWZpbmVkIHBvaW50cyBpbiB0aW1lIGR1cmluZyB0aGUgbGlmZSBvZiB0aGUgY29tcG9uZW50LlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvdHMvbWV0YWRhdGEvbWV0YWRhdGEudHMgcmVnaW9uPSdjb21wb25lbnQnfVxuICovXG5leHBvcnQgdmFyIENvbXBvbmVudDogQ29tcG9uZW50TWV0YWRhdGFGYWN0b3J5ID1cbiAgICA8Q29tcG9uZW50TWV0YWRhdGFGYWN0b3J5Pm1ha2VEZWNvcmF0b3IoQ29tcG9uZW50TWV0YWRhdGEsIChmbjogYW55KSA9PiBmbi5WaWV3ID0gVmlldyk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gRGlyZWN0aXZlTWV0YWRhdGEuXG4vKipcbiAqIERpcmVjdGl2ZXMgYWxsb3cgeW91IHRvIGF0dGFjaCBiZWhhdmlvciB0byBlbGVtZW50cyBpbiB0aGUgRE9NLlxuICpcbiAqIHtAbGluayBEaXJlY3RpdmVNZXRhZGF0YX1zIHdpdGggYW4gZW1iZWRkZWQgdmlldyBhcmUgY2FsbGVkIHtAbGluayBDb21wb25lbnRNZXRhZGF0YX1zLlxuICpcbiAqIEEgZGlyZWN0aXZlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIGRpcmVjdGl2ZSBhbm5vdGF0aW9uIGFuZCBhIGNvbnRyb2xsZXIgY2xhc3MuIFdoZW4gdGhlXG4gKiBkaXJlY3RpdmUncyBgc2VsZWN0b3JgIG1hdGNoZXNcbiAqIGVsZW1lbnRzIGluIHRoZSBET00sIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG4gKlxuICogMS4gRm9yIGVhY2ggZGlyZWN0aXZlLCB0aGUgYEVsZW1lbnRJbmplY3RvcmAgYXR0ZW1wdHMgdG8gcmVzb2x2ZSB0aGUgZGlyZWN0aXZlJ3MgY29uc3RydWN0b3JcbiAqIGFyZ3VtZW50cy5cbiAqIDIuIEFuZ3VsYXIgaW5zdGFudGlhdGVzIGRpcmVjdGl2ZXMgZm9yIGVhY2ggbWF0Y2hlZCBlbGVtZW50IHVzaW5nIGBFbGVtZW50SW5qZWN0b3JgIGluIGFcbiAqIGRlcHRoLWZpcnN0IG9yZGVyLFxuICogICAgYXMgZGVjbGFyZWQgaW4gdGhlIEhUTUwuXG4gKlxuICogIyMgVW5kZXJzdGFuZGluZyBIb3cgSW5qZWN0aW9uIFdvcmtzXG4gKlxuICogVGhlcmUgYXJlIHRocmVlIHN0YWdlcyBvZiBpbmplY3Rpb24gcmVzb2x1dGlvbi5cbiAqIC0gKlByZS1leGlzdGluZyBJbmplY3RvcnMqOlxuICogICAtIFRoZSB0ZXJtaW5hbCB7QGxpbmsgSW5qZWN0b3J9IGNhbm5vdCByZXNvbHZlIGRlcGVuZGVuY2llcy4gSXQgZWl0aGVyIHRocm93cyBhbiBlcnJvciBvciwgaWZcbiAqIHRoZSBkZXBlbmRlbmN5IHdhc1xuICogICAgIHNwZWNpZmllZCBhcyBgQE9wdGlvbmFsYCwgcmV0dXJucyBgbnVsbGAuXG4gKiAgIC0gVGhlIHBsYXRmb3JtIGluamVjdG9yIHJlc29sdmVzIGJyb3dzZXIgc2luZ2xldG9uIHJlc291cmNlcywgc3VjaCBhczogY29va2llcywgdGl0bGUsXG4gKiBsb2NhdGlvbiwgYW5kIG90aGVycy5cbiAqIC0gKkNvbXBvbmVudCBJbmplY3RvcnMqOiBFYWNoIGNvbXBvbmVudCBpbnN0YW5jZSBoYXMgaXRzIG93biB7QGxpbmsgSW5qZWN0b3J9LCBhbmQgdGhleSBmb2xsb3dcbiAqIHRoZSBzYW1lIHBhcmVudC1jaGlsZCBoaWVyYXJjaHlcbiAqICAgICBhcyB0aGUgY29tcG9uZW50IGluc3RhbmNlcyBpbiB0aGUgRE9NLlxuICogLSAqRWxlbWVudCBJbmplY3RvcnMqOiBFYWNoIGNvbXBvbmVudCBpbnN0YW5jZSBoYXMgYSBTaGFkb3cgRE9NLiBXaXRoaW4gdGhlIFNoYWRvdyBET00gZWFjaFxuICogZWxlbWVudCBoYXMgYW4gYEVsZW1lbnRJbmplY3RvcmBcbiAqICAgICB3aGljaCBmb2xsb3cgdGhlIHNhbWUgcGFyZW50LWNoaWxkIGhpZXJhcmNoeSBhcyB0aGUgRE9NIGVsZW1lbnRzIHRoZW1zZWx2ZXMuXG4gKlxuICogV2hlbiBhIHRlbXBsYXRlIGlzIGluc3RhbnRpYXRlZCwgaXQgYWxzbyBtdXN0IGluc3RhbnRpYXRlIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdGl2ZXMgaW4gYVxuICogZGVwdGgtZmlyc3Qgb3JkZXIuIFRoZVxuICogY3VycmVudCBgRWxlbWVudEluamVjdG9yYCByZXNvbHZlcyB0aGUgY29uc3RydWN0b3IgZGVwZW5kZW5jaWVzIGZvciBlYWNoIGRpcmVjdGl2ZS5cbiAqXG4gKiBBbmd1bGFyIHRoZW4gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzIGFzIGZvbGxvd3MsIGFjY29yZGluZyB0byB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlXG4gKiB7QGxpbmsgVmlld01ldGFkYXRhfTpcbiAqXG4gKiAxLiBEZXBlbmRlbmNpZXMgb24gdGhlIGN1cnJlbnQgZWxlbWVudFxuICogMi4gRGVwZW5kZW5jaWVzIG9uIGVsZW1lbnQgaW5qZWN0b3JzIGFuZCB0aGVpciBwYXJlbnRzIHVudGlsIGl0IGVuY291bnRlcnMgYSBTaGFkb3cgRE9NIGJvdW5kYXJ5XG4gKiAzLiBEZXBlbmRlbmNpZXMgb24gY29tcG9uZW50IGluamVjdG9ycyBhbmQgdGhlaXIgcGFyZW50cyB1bnRpbCBpdCBlbmNvdW50ZXJzIHRoZSByb290IGNvbXBvbmVudFxuICogNC4gRGVwZW5kZW5jaWVzIG9uIHByZS1leGlzdGluZyBpbmplY3RvcnNcbiAqXG4gKlxuICogVGhlIGBFbGVtZW50SW5qZWN0b3JgIGNhbiBpbmplY3Qgb3RoZXIgZGlyZWN0aXZlcywgZWxlbWVudC1zcGVjaWZpYyBzcGVjaWFsIG9iamVjdHMsIG9yIGl0IGNhblxuICogZGVsZWdhdGUgdG8gdGhlIHBhcmVudFxuICogaW5qZWN0b3IuXG4gKlxuICogVG8gaW5qZWN0IG90aGVyIGRpcmVjdGl2ZXMsIGRlY2xhcmUgdGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBhczpcbiAqIC0gYGRpcmVjdGl2ZTpEaXJlY3RpdmVUeXBlYDogYSBkaXJlY3RpdmUgb24gdGhlIGN1cnJlbnQgZWxlbWVudCBvbmx5XG4gKiAtIGBASG9zdCgpIGRpcmVjdGl2ZTpEaXJlY3RpdmVUeXBlYDogYW55IGRpcmVjdGl2ZSB0aGF0IG1hdGNoZXMgdGhlIHR5cGUgYmV0d2VlbiB0aGUgY3VycmVudFxuICogZWxlbWVudCBhbmQgdGhlXG4gKiAgICBTaGFkb3cgRE9NIHJvb3QuXG4gKiAtIGBAUXVlcnkoRGlyZWN0aXZlVHlwZSkgcXVlcnk6UXVlcnlMaXN0PERpcmVjdGl2ZVR5cGU+YDogQSBsaXZlIGNvbGxlY3Rpb24gb2YgZGlyZWN0IGNoaWxkXG4gKiBkaXJlY3RpdmVzLlxuICogLSBgQFF1ZXJ5RGVzY2VuZGFudHMoRGlyZWN0aXZlVHlwZSkgcXVlcnk6UXVlcnlMaXN0PERpcmVjdGl2ZVR5cGU+YDogQSBsaXZlIGNvbGxlY3Rpb24gb2YgYW55XG4gKiBjaGlsZCBkaXJlY3RpdmVzLlxuICpcbiAqIFRvIGluamVjdCBlbGVtZW50LXNwZWNpZmljIHNwZWNpYWwgb2JqZWN0cywgZGVjbGFyZSB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIGFzOlxuICogLSBgZWxlbWVudDogRWxlbWVudFJlZmAgdG8gb2J0YWluIGEgcmVmZXJlbmNlIHRvIGxvZ2ljYWwgZWxlbWVudCBpbiB0aGUgdmlldy5cbiAqIC0gYHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZgIHRvIGNvbnRyb2wgY2hpbGQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiwgZm9yXG4gKiB7QGxpbmsgRGlyZWN0aXZlTWV0YWRhdGF9IGRpcmVjdGl2ZXMgb25seVxuICogLSBgYmluZGluZ1Byb3BhZ2F0aW9uOiBCaW5kaW5nUHJvcGFnYXRpb25gIHRvIGNvbnRyb2wgY2hhbmdlIGRldGVjdGlvbiBpbiBhIG1vcmUgZ3JhbnVsYXIgd2F5LlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBob3cgZGVwZW5kZW5jeSBpbmplY3Rpb24gcmVzb2x2ZXMgY29uc3RydWN0b3IgYXJndW1lbnRzIGluXG4gKiBwcmFjdGljZS5cbiAqXG4gKlxuICogQXNzdW1lIHRoaXMgSFRNTCB0ZW1wbGF0ZTpcbiAqXG4gKiBgYGBcbiAqIDxkaXYgZGVwZW5kZW5jeT1cIjFcIj5cbiAqICAgPGRpdiBkZXBlbmRlbmN5PVwiMlwiPlxuICogICAgIDxkaXYgZGVwZW5kZW5jeT1cIjNcIiBteS1kaXJlY3RpdmU+XG4gKiAgICAgICA8ZGl2IGRlcGVuZGVuY3k9XCI0XCI+XG4gKiAgICAgICAgIDxkaXYgZGVwZW5kZW5jeT1cIjVcIj48L2Rpdj5cbiAqICAgICAgIDwvZGl2PlxuICogICAgICAgPGRpdiBkZXBlbmRlbmN5PVwiNlwiPjwvZGl2PlxuICogICAgIDwvZGl2PlxuICogICA8L2Rpdj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogV2l0aCB0aGUgZm9sbG93aW5nIGBkZXBlbmRlbmN5YCBkZWNvcmF0b3IgYW5kIGBTb21lU2VydmljZWAgaW5qZWN0YWJsZSBjbGFzcy5cbiAqXG4gKiBgYGBcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIFNvbWVTZXJ2aWNlIHtcbiAqIH1cbiAqXG4gKiBARGlyZWN0aXZlKHtcbiAqICAgc2VsZWN0b3I6ICdbZGVwZW5kZW5jeV0nLFxuICogICBpbnB1dHM6IFtcbiAqICAgICAnaWQ6IGRlcGVuZGVuY3knXG4gKiAgIF1cbiAqIH0pXG4gKiBjbGFzcyBEZXBlbmRlbmN5IHtcbiAqICAgaWQ6c3RyaW5nO1xuICogfVxuICogYGBgXG4gKlxuICogTGV0J3Mgc3RlcCB0aHJvdWdoIHRoZSBkaWZmZXJlbnQgd2F5cyBpbiB3aGljaCBgTXlEaXJlY3RpdmVgIGNvdWxkIGJlIGRlY2xhcmVkLi4uXG4gKlxuICpcbiAqICMjIyBObyBpbmplY3Rpb25cbiAqXG4gKiBIZXJlIHRoZSBjb25zdHJ1Y3RvciBpcyBkZWNsYXJlZCB3aXRoIG5vIGFyZ3VtZW50cywgdGhlcmVmb3JlIG5vdGhpbmcgaXMgaW5qZWN0ZWQgaW50b1xuICogYE15RGlyZWN0aXZlYC5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggbm8gZGVwZW5kZW5jaWVzLlxuICpcbiAqXG4gKiAjIyMgQ29tcG9uZW50LWxldmVsIGluamVjdGlvblxuICpcbiAqIERpcmVjdGl2ZXMgY2FuIGluamVjdCBhbnkgaW5qZWN0YWJsZSBpbnN0YW5jZSBmcm9tIHRoZSBjbG9zZXN0IGNvbXBvbmVudCBpbmplY3RvciBvciBhbnkgb2YgaXRzXG4gKiBwYXJlbnRzLlxuICpcbiAqIEhlcmUsIHRoZSBjb25zdHJ1Y3RvciBkZWNsYXJlcyBhIHBhcmFtZXRlciwgYHNvbWVTZXJ2aWNlYCwgYW5kIGluamVjdHMgdGhlIGBTb21lU2VydmljZWAgdHlwZVxuICogZnJvbSB0aGUgcGFyZW50XG4gKiBjb21wb25lbnQncyBpbmplY3Rvci5cbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKHNvbWVTZXJ2aWNlOiBTb21lU2VydmljZSkge1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRlcGVuZGVuY3kgb24gYFNvbWVTZXJ2aWNlYC5cbiAqXG4gKlxuICogIyMjIEluamVjdGluZyBhIGRpcmVjdGl2ZSBmcm9tIHRoZSBjdXJyZW50IGVsZW1lbnRcbiAqXG4gKiBEaXJlY3RpdmVzIGNhbiBpbmplY3Qgb3RoZXIgZGlyZWN0aXZlcyBkZWNsYXJlZCBvbiB0aGUgY3VycmVudCBlbGVtZW50LlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKGRlcGVuZGVuY3k6IERlcGVuZGVuY3kpIHtcbiAqICAgICBleHBlY3QoZGVwZW5kZW5jeS5pZCkudG9FcXVhbCgzKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiBUaGlzIGRpcmVjdGl2ZSB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBgRGVwZW5kZW5jeWAgZGVjbGFyZWQgYXQgdGhlIHNhbWUgZWxlbWVudCwgaW4gdGhpcyBjYXNlXG4gKiBgZGVwZW5kZW5jeT1cIjNcImAuXG4gKlxuICogIyMjIEluamVjdGluZyBhIGRpcmVjdGl2ZSBmcm9tIGFueSBhbmNlc3RvciBlbGVtZW50c1xuICpcbiAqIERpcmVjdGl2ZXMgY2FuIGluamVjdCBvdGhlciBkaXJlY3RpdmVzIGRlY2xhcmVkIG9uIGFueSBhbmNlc3RvciBlbGVtZW50IChpbiB0aGUgY3VycmVudCBTaGFkb3dcbiAqIERPTSksIGkuZS4gb24gdGhlIGN1cnJlbnQgZWxlbWVudCwgdGhlXG4gKiBwYXJlbnQgZWxlbWVudCwgb3IgaXRzIHBhcmVudHMuXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihASG9zdCgpIGRlcGVuZGVuY3k6IERlcGVuZGVuY3kpIHtcbiAqICAgICBleHBlY3QoZGVwZW5kZW5jeS5pZCkudG9FcXVhbCgyKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogYEBIb3N0YCBjaGVja3MgdGhlIGN1cnJlbnQgZWxlbWVudCwgdGhlIHBhcmVudCwgYXMgd2VsbCBhcyBpdHMgcGFyZW50cyByZWN1cnNpdmVseS4gSWZcbiAqIGBkZXBlbmRlbmN5PVwiMlwiYCBkaWRuJ3RcbiAqIGV4aXN0IG9uIHRoZSBkaXJlY3QgcGFyZW50LCB0aGlzIGluamVjdGlvbiB3b3VsZFxuICogaGF2ZSByZXR1cm5lZFxuICogYGRlcGVuZGVuY3k9XCIxXCJgLlxuICpcbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgbGl2ZSBjb2xsZWN0aW9uIG9mIGRpcmVjdCBjaGlsZCBkaXJlY3RpdmVzXG4gKlxuICpcbiAqIEEgZGlyZWN0aXZlIGNhbiBhbHNvIHF1ZXJ5IGZvciBvdGhlciBjaGlsZCBkaXJlY3RpdmVzLiBTaW5jZSBwYXJlbnQgZGlyZWN0aXZlcyBhcmUgaW5zdGFudGlhdGVkXG4gKiBiZWZvcmUgY2hpbGQgZGlyZWN0aXZlcywgYSBkaXJlY3RpdmUgY2FuJ3Qgc2ltcGx5IGluamVjdCB0aGUgbGlzdCBvZiBjaGlsZCBkaXJlY3RpdmVzLiBJbnN0ZWFkLFxuICogdGhlIGRpcmVjdGl2ZSBpbmplY3RzIGEge0BsaW5rIFF1ZXJ5TGlzdH0sIHdoaWNoIHVwZGF0ZXMgaXRzIGNvbnRlbnRzIGFzIGNoaWxkcmVuIGFyZSBhZGRlZCxcbiAqIHJlbW92ZWQsIG9yIG1vdmVkIGJ5IGEgZGlyZWN0aXZlIHRoYXQgdXNlcyBhIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfSBzdWNoIGFzIGEgYG5nRm9yYCwgYW5cbiAqIGBuZ0lmYCwgb3IgYW4gYG5nU3dpdGNoYC5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoRGVwZW5kZW5jeSkgZGVwZW5kZW5jaWVzOlF1ZXJ5TGlzdDxEZXBlbmRlbmN5Pikge1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIHtAbGluayBRdWVyeUxpc3R9IHdoaWNoIGNvbnRhaW5zIGBEZXBlbmRlbmN5YCA0IGFuZFxuICogNi4gSGVyZSwgYERlcGVuZGVuY3lgIDUgd291bGQgbm90IGJlIGluY2x1ZGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZC5cbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgbGl2ZSBjb2xsZWN0aW9uIG9mIGRlc2NlbmRhbnQgZGlyZWN0aXZlc1xuICpcbiAqIEJ5IHBhc3NpbmcgdGhlIGRlc2NlbmRhbnQgZmxhZyB0byBgQFF1ZXJ5YCBhYm92ZSwgd2UgY2FuIGluY2x1ZGUgdGhlIGNoaWxkcmVuIG9mIHRoZSBjaGlsZFxuICogZWxlbWVudHMuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KERlcGVuZGVuY3ksIHtkZXNjZW5kYW50czogdHJ1ZX0pIGRlcGVuZGVuY2llczpRdWVyeUxpc3Q8RGVwZW5kZW5jeT4pIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBRdWVyeSB3aGljaCB3b3VsZCBjb250YWluIGBEZXBlbmRlbmN5YCA0LCA1IGFuZCA2LlxuICpcbiAqICMjIyBPcHRpb25hbCBpbmplY3Rpb25cbiAqXG4gKiBUaGUgbm9ybWFsIGJlaGF2aW9yIG9mIGRpcmVjdGl2ZXMgaXMgdG8gcmV0dXJuIGFuIGVycm9yIHdoZW4gYSBzcGVjaWZpZWQgZGVwZW5kZW5jeSBjYW5ub3QgYmVcbiAqIHJlc29sdmVkLiBJZiB5b3VcbiAqIHdvdWxkIGxpa2UgdG8gaW5qZWN0IGBudWxsYCBvbiB1bnJlc29sdmVkIGRlcGVuZGVuY3kgaW5zdGVhZCwgeW91IGNhbiBhbm5vdGF0ZSB0aGF0IGRlcGVuZGVuY3lcbiAqIHdpdGggYEBPcHRpb25hbCgpYC5cbiAqIFRoaXMgZXhwbGljaXRseSBwZXJtaXRzIHRoZSBhdXRob3Igb2YgYSB0ZW1wbGF0ZSB0byB0cmVhdCBzb21lIG9mIHRoZSBzdXJyb3VuZGluZyBkaXJlY3RpdmVzIGFzXG4gKiBvcHRpb25hbC5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBkZXBlbmRlbmN5OkRlcGVuZGVuY3kpIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBgRGVwZW5kZW5jeWAgZGlyZWN0aXZlIGZvdW5kIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKiBJZiBub25lIGNhbiBiZVxuICogZm91bmQsIHRoZSBpbmplY3RvciBzdXBwbGllcyBgbnVsbGAgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEhlcmUgd2UgdXNlIGEgZGVjb3JhdG9yIGRpcmVjdGl2ZSB0byBzaW1wbHkgZGVmaW5lIGJhc2ljIHRvb2wtdGlwIGJlaGF2aW9yLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnW3Rvb2x0aXBdJyxcbiAqICAgaW5wdXRzOiBbXG4gKiAgICAgJ3RleHQ6IHRvb2x0aXAnXG4gKiAgIF0sXG4gKiAgIGhvc3Q6IHtcbiAqICAgICAnKG1vdXNlZW50ZXIpJzogJ29uTW91c2VFbnRlcigpJyxcbiAqICAgICAnKG1vdXNlbGVhdmUpJzogJ29uTW91c2VMZWF2ZSgpJ1xuICogICB9XG4gKiB9KVxuICogY2xhc3MgVG9vbHRpcHtcbiAqICAgdGV4dDpzdHJpbmc7XG4gKiAgIG92ZXJsYXk6T3ZlcmxheTsgLy8gTk9UIFlFVCBJTVBMRU1FTlRFRFxuICogICBvdmVybGF5TWFuYWdlcjpPdmVybGF5TWFuYWdlcjsgLy8gTk9UIFlFVCBJTVBMRU1FTlRFRFxuICpcbiAqICAgY29uc3RydWN0b3Iob3ZlcmxheU1hbmFnZXI6T3ZlcmxheU1hbmFnZXIpIHtcbiAqICAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICogICB9XG4gKlxuICogICBvbk1vdXNlRW50ZXIoKSB7XG4gKiAgICAgLy8gZXhhY3Qgc2lnbmF0dXJlIHRvIGJlIGRldGVybWluZWRcbiAqICAgICB0aGlzLm92ZXJsYXkgPSB0aGlzLm92ZXJsYXlNYW5hZ2VyLm9wZW4odGV4dCwgLi4uKTtcbiAqICAgfVxuICpcbiAqICAgb25Nb3VzZUxlYXZlKCkge1xuICogICAgIHRoaXMub3ZlcmxheS5jbG9zZSgpO1xuICogICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogSW4gb3VyIEhUTUwgdGVtcGxhdGUsIHdlIGNhbiB0aGVuIGFkZCB0aGlzIGJlaGF2aW9yIHRvIGEgYDxkaXY+YCBvciBhbnkgb3RoZXIgZWxlbWVudCB3aXRoIHRoZVxuICogYHRvb2x0aXBgIHNlbGVjdG9yLFxuICogbGlrZSBzbzpcbiAqXG4gKiBgYGBcbiAqIDxkaXYgdG9vbHRpcD1cInNvbWUgdGV4dCBoZXJlXCI+PC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBEaXJlY3RpdmVzIGNhbiBhbHNvIGNvbnRyb2wgdGhlIGluc3RhbnRpYXRpb24sIGRlc3RydWN0aW9uLCBhbmQgcG9zaXRpb25pbmcgb2YgaW5saW5lIHRlbXBsYXRlXG4gKiBlbGVtZW50czpcbiAqXG4gKiBBIGRpcmVjdGl2ZSB1c2VzIGEge0BsaW5rIFZpZXdDb250YWluZXJSZWZ9IHRvIGluc3RhbnRpYXRlLCBpbnNlcnQsIG1vdmUsIGFuZCBkZXN0cm95IHZpZXdzIGF0XG4gKiBydW50aW1lLlxuICogVGhlIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfSBpcyBjcmVhdGVkIGFzIGEgcmVzdWx0IG9mIGA8dGVtcGxhdGU+YCBlbGVtZW50LCBhbmQgcmVwcmVzZW50cyBhXG4gKiBsb2NhdGlvbiBpbiB0aGUgY3VycmVudCB2aWV3XG4gKiB3aGVyZSB0aGVzZSBhY3Rpb25zIGFyZSBwZXJmb3JtZWQuXG4gKlxuICogVmlld3MgYXJlIGFsd2F5cyBjcmVhdGVkIGFzIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IHtAbGluayBWaWV3TWV0YWRhdGF9LCBhbmQgYXMgc2libGluZ3Mgb2YgdGhlXG4gKiBgPHRlbXBsYXRlPmAgZWxlbWVudC4gVGh1cyBhXG4gKiBkaXJlY3RpdmUgaW4gYSBjaGlsZCB2aWV3IGNhbm5vdCBpbmplY3QgdGhlIGRpcmVjdGl2ZSB0aGF0IGNyZWF0ZWQgaXQuXG4gKlxuICogU2luY2UgZGlyZWN0aXZlcyB0aGF0IGNyZWF0ZSB2aWV3cyB2aWEgVmlld0NvbnRhaW5lcnMgYXJlIGNvbW1vbiBpbiBBbmd1bGFyLCBhbmQgdXNpbmcgdGhlIGZ1bGxcbiAqIGA8dGVtcGxhdGU+YCBlbGVtZW50IHN5bnRheCBpcyB3b3JkeSwgQW5ndWxhclxuICogYWxzbyBzdXBwb3J0cyBhIHNob3J0aGFuZCBub3RhdGlvbjogYDxsaSAqZm9vPVwiYmFyXCI+YCBhbmQgYDxsaSB0ZW1wbGF0ZT1cImZvbzogYmFyXCI+YCBhcmVcbiAqIGVxdWl2YWxlbnQuXG4gKlxuICogVGh1cyxcbiAqXG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPGxpICpmb289XCJiYXJcIiB0aXRsZT1cInRleHRcIj48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIEV4cGFuZHMgaW4gdXNlIHRvOlxuICpcbiAqIGBgYFxuICogPHVsPlxuICogICA8dGVtcGxhdGUgW2Zvb109XCJiYXJcIj5cbiAqICAgICA8bGkgdGl0bGU9XCJ0ZXh0XCI+PC9saT5cbiAqICAgPC90ZW1wbGF0ZT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBOb3RpY2UgdGhhdCBhbHRob3VnaCB0aGUgc2hvcnRoYW5kIHBsYWNlcyBgKmZvbz1cImJhclwiYCB3aXRoaW4gdGhlIGA8bGk+YCBlbGVtZW50LCB0aGUgYmluZGluZyBmb3JcbiAqIHRoZSBkaXJlY3RpdmVcbiAqIGNvbnRyb2xsZXIgaXMgY29ycmVjdGx5IGluc3RhbnRpYXRlZCBvbiB0aGUgYDx0ZW1wbGF0ZT5gIGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIGA8bGk+YCBlbGVtZW50LlxuICpcbiAqICMjIExpZmVjeWNsZSBob29rc1xuICpcbiAqIFdoZW4gdGhlIGRpcmVjdGl2ZSBjbGFzcyBpbXBsZW1lbnRzIHNvbWUge0BsaW5rIC4uLy4uL2d1aWRlL2xpZmVjeWNsZS1ob29rcy5odG1sfSB0aGUgY2FsbGJhY2tzXG4gKiBhcmUgY2FsbGVkIGJ5IHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIGF0IGRlZmluZWQgcG9pbnRzIGluIHRpbWUgZHVyaW5nIHRoZSBsaWZlIG9mIHRoZSBkaXJlY3RpdmUuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBMZXQncyBzdXBwb3NlIHdlIHdhbnQgdG8gaW1wbGVtZW50IHRoZSBgdW5sZXNzYCBiZWhhdmlvciwgdG8gY29uZGl0aW9uYWxseSBpbmNsdWRlIGEgdGVtcGxhdGUuXG4gKlxuICogSGVyZSBpcyBhIHNpbXBsZSBkaXJlY3RpdmUgdGhhdCB0cmlnZ2VycyBvbiBhbiBgdW5sZXNzYCBzZWxlY3RvcjpcbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ1t1bmxlc3NdJyxcbiAqICAgaW5wdXRzOiBbJ3VubGVzcyddXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFVubGVzcyB7XG4gKiAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gKiAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjtcbiAqICAgcHJldkNvbmRpdGlvbjogYm9vbGVhbjtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZikge1xuICogICAgIHRoaXMudmlld0NvbnRhaW5lciA9IHZpZXdDb250YWluZXI7XG4gKiAgICAgdGhpcy50ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICogICAgIHRoaXMucHJldkNvbmRpdGlvbiA9IG51bGw7XG4gKiAgIH1cbiAqXG4gKiAgIHNldCB1bmxlc3MobmV3Q29uZGl0aW9uKSB7XG4gKiAgICAgaWYgKG5ld0NvbmRpdGlvbiAmJiAoaXNCbGFuayh0aGlzLnByZXZDb25kaXRpb24pIHx8ICF0aGlzLnByZXZDb25kaXRpb24pKSB7XG4gKiAgICAgICB0aGlzLnByZXZDb25kaXRpb24gPSB0cnVlO1xuICogICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gKiAgICAgfSBlbHNlIGlmICghbmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMucHJldkNvbmRpdGlvbikgfHwgdGhpcy5wcmV2Q29uZGl0aW9uKSkge1xuICogICAgICAgdGhpcy5wcmV2Q29uZGl0aW9uID0gZmFsc2U7XG4gKiAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlKHRoaXMudGVtcGxhdGVSZWYpO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogV2UgY2FuIHRoZW4gdXNlIHRoaXMgYHVubGVzc2Agc2VsZWN0b3IgaW4gYSB0ZW1wbGF0ZTpcbiAqIGBgYFxuICogPHVsPlxuICogICA8bGkgKnVubGVzcz1cImV4cHJcIj48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIE9uY2UgdGhlIGRpcmVjdGl2ZSBpbnN0YW50aWF0ZXMgdGhlIGNoaWxkIHZpZXcsIHRoZSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIHRoZSB0ZW1wbGF0ZSBleHBhbmRzXG4gKiBhbmQgdGhlIHJlc3VsdCBpczpcbiAqXG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPHRlbXBsYXRlIFt1bmxlc3NdPVwiZXhwXCI+XG4gKiAgICAgPGxpPjwvbGk+XG4gKiAgIDwvdGVtcGxhdGU+XG4gKiAgIDxsaT48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIE5vdGUgYWxzbyB0aGF0IGFsdGhvdWdoIHRoZSBgPGxpPjwvbGk+YCB0ZW1wbGF0ZSBzdGlsbCBleGlzdHMgaW5zaWRlIHRoZSBgPHRlbXBsYXRlPjwvdGVtcGxhdGU+YCxcbiAqIHRoZSBpbnN0YW50aWF0ZWRcbiAqIHZpZXcgb2NjdXJzIG9uIHRoZSBzZWNvbmQgYDxsaT48L2xpPmAgd2hpY2ggaXMgYSBzaWJsaW5nIHRvIHRoZSBgPHRlbXBsYXRlPmAgZWxlbWVudC5cbiAqL1xuZXhwb3J0IHZhciBEaXJlY3RpdmU6IERpcmVjdGl2ZU1ldGFkYXRhRmFjdG9yeSA9XG4gICAgPERpcmVjdGl2ZU1ldGFkYXRhRmFjdG9yeT5tYWtlRGVjb3JhdG9yKERpcmVjdGl2ZU1ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBWaWV3TWV0YWRhdGEuXG4vKipcbiAqIE1ldGFkYXRhIHByb3BlcnRpZXMgYXZhaWxhYmxlIGZvciBjb25maWd1cmluZyBWaWV3cy5cbiAqXG4gKiBFYWNoIEFuZ3VsYXIgY29tcG9uZW50IHJlcXVpcmVzIGEgc2luZ2xlIGBAQ29tcG9uZW50YCBhbmQgYXQgbGVhc3Qgb25lIGBAVmlld2AgYW5ub3RhdGlvbi4gVGhlXG4gKiBgQFZpZXdgIGFubm90YXRpb24gc3BlY2lmaWVzIHRoZSBIVE1MIHRlbXBsYXRlIHRvIHVzZSwgYW5kIGxpc3RzIHRoZSBkaXJlY3RpdmVzIHRoYXQgYXJlIGFjdGl2ZVxuICogd2l0aGluIHRoZSB0ZW1wbGF0ZS5cbiAqXG4gKiBXaGVuIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCwgdGhlIHRlbXBsYXRlIGlzIGxvYWRlZCBpbnRvIHRoZSBjb21wb25lbnQncyBzaGFkb3cgcm9vdCwgYW5kXG4gKiB0aGUgZXhwcmVzc2lvbnMgYW5kIHN0YXRlbWVudHMgaW4gdGhlIHRlbXBsYXRlIGFyZSBldmFsdWF0ZWQgYWdhaW5zdCB0aGUgY29tcG9uZW50LlxuICpcbiAqIEZvciBkZXRhaWxzIG9uIHRoZSBgQENvbXBvbmVudGAgYW5ub3RhdGlvbiwgc2VlIHtAbGluayBDb21wb25lbnRNZXRhZGF0YX0uXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2dyZWV0JyxcbiAqICAgdGVtcGxhdGU6ICdIZWxsbyB7e25hbWV9fSEnLFxuICogICBkaXJlY3RpdmVzOiBbR3JlZXRVc2VyLCBCb2xkXVxuICogfSlcbiAqIGNsYXNzIEdyZWV0IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgdGhpcy5uYW1lID0gJ1dvcmxkJztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbnZhciBWaWV3OiBWaWV3TWV0YWRhdGFGYWN0b3J5ID1cbiAgICA8Vmlld01ldGFkYXRhRmFjdG9yeT5tYWtlRGVjb3JhdG9yKFZpZXdNZXRhZGF0YSwgKGZuOiBhbnkpID0+IGZuLlZpZXcgPSBWaWV3KTtcblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhhdCBhIGNvbnN0YW50IGF0dHJpYnV0ZSB2YWx1ZSBzaG91bGQgYmUgaW5qZWN0ZWQuXG4gKlxuICogVGhlIGRpcmVjdGl2ZSBjYW4gaW5qZWN0IGNvbnN0YW50IHN0cmluZyBsaXRlcmFscyBvZiBob3N0IGVsZW1lbnQgYXR0cmlidXRlcy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFN1cHBvc2Ugd2UgaGF2ZSBhbiBgPGlucHV0PmAgZWxlbWVudCBhbmQgd2FudCB0byBrbm93IGl0cyBgdHlwZWAuXG4gKlxuICogYGBgaHRtbFxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCI+XG4gKiBgYGBcbiAqXG4gKiBBIGRlY29yYXRvciBjYW4gaW5qZWN0IHN0cmluZyBsaXRlcmFsIGB0ZXh0YCBsaWtlIHNvOlxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nYXR0cmlidXRlTWV0YWRhdGEnfVxuICovXG5leHBvcnQgdmFyIEF0dHJpYnV0ZTogQXR0cmlidXRlTWV0YWRhdGFGYWN0b3J5ID0gbWFrZVBhcmFtRGVjb3JhdG9yKEF0dHJpYnV0ZU1ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBRdWVyeU1ldGFkYXRhLlxuLyoqXG4gKiBEZWNsYXJlcyBhbiBpbmplY3RhYmxlIHBhcmFtZXRlciB0byBiZSBhIGxpdmUgbGlzdCBvZiBkaXJlY3RpdmVzIG9yIHZhcmlhYmxlXG4gKiBiaW5kaW5ncyBmcm9tIHRoZSBjb250ZW50IGNoaWxkcmVuIG9mIGEgZGlyZWN0aXZlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sWTltOEhMeTd6MDZ2RG9VYVNOMj9wPXByZXZpZXcpKVxuICpcbiAqIEFzc3VtZSB0aGF0IGA8dGFicz5gIGNvbXBvbmVudCB3b3VsZCBsaWtlIHRvIGdldCBhIGxpc3QgaXRzIGNoaWxkcmVuIGA8cGFuZT5gXG4gKiBjb21wb25lbnRzIGFzIHNob3duIGluIHRoaXMgZXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGFicz5cbiAqICAgPHBhbmUgdGl0bGU9XCJPdmVydmlld1wiPi4uLjwvcGFuZT5cbiAqICAgPHBhbmUgKm5nRm9yPVwibGV0IG8gb2Ygb2JqZWN0c1wiIFt0aXRsZV09XCJvLnRpdGxlXCI+e3tvLnRleHR9fTwvcGFuZT5cbiAqIDwvdGFicz5cbiAqIGBgYFxuICpcbiAqIFRoZSBwcmVmZXJyZWQgc29sdXRpb24gaXMgdG8gcXVlcnkgZm9yIGBQYW5lYCBkaXJlY3RpdmVzIHVzaW5nIHRoaXMgZGVjb3JhdG9yLlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhbmUnLFxuICogICBpbnB1dHM6IFsndGl0bGUnXVxuICogfSlcbiAqIGNsYXNzIFBhbmUge1xuICogICB0aXRsZTpzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6ICd0YWJzJyxcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPHVsPlxuICogICAgICA8bGkgKm5nRm9yPVwibGV0IHBhbmUgb2YgcGFuZXNcIj57e3BhbmUudGl0bGV9fTwvbGk+XG4gKiAgICA8L3VsPlxuICogICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICogIGBcbiAqIH0pXG4gKiBjbGFzcyBUYWJzIHtcbiAqICAgcGFuZXM6IFF1ZXJ5TGlzdDxQYW5lPjtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KFBhbmUpIHBhbmVzOlF1ZXJ5TGlzdDxQYW5lPikge1xuICogICAgIHRoaXMucGFuZXMgPSBwYW5lcztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSBxdWVyeSBjYW4gbG9vayBmb3IgdmFyaWFibGUgYmluZGluZ3MgYnkgcGFzc2luZyBpbiBhIHN0cmluZyB3aXRoIGRlc2lyZWQgYmluZGluZyBzeW1ib2wuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3NUMmoyNWNIMWRVUkF5QlJDS3gxP3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8c2Vla2VyPlxuICogICA8ZGl2ICNmaW5kbWU+Li4uPC9kaXY+XG4gKiA8L3NlZWtlcj5cbiAqXG4gKiBAQ29tcG9uZW50KHsgc2VsZWN0b3I6ICdzZWVrZXInIH0pXG4gKiBjbGFzcyBzZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRtZScpIGVsTGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+KSB7Li4ufVxuICogfVxuICogYGBgXG4gKlxuICogSW4gdGhpcyBjYXNlIHRoZSBvYmplY3QgdGhhdCBpcyBpbmplY3RlZCBkZXBlbmQgb24gdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlXG4gKiBiaW5kaW5nLiBJdCBjYW4gYmUgYW4gRWxlbWVudFJlZiwgYSBkaXJlY3RpdmUgb3IgYSBjb21wb25lbnQuXG4gKlxuICogUGFzc2luZyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHZhcmlhYmxlIGJpbmRpbmdzIHdpbGwgcXVlcnkgZm9yIGFsbCBvZiB0aGVtLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzZWVrZXI+XG4gKiAgIDxkaXYgI2ZpbmRNZT4uLi48L2Rpdj5cbiAqICAgPGRpdiAjZmluZE1lVG9vPi4uLjwvZGl2PlxuICogPC9zZWVrZXI+XG4gKlxuICogIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3NlZWtlcidcbiAqIH0pXG4gKiBjbGFzcyBTZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRNZSwgZmluZE1lVG9vJykgZWxMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pIHsuLi59XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBDb25maWd1cmUgd2hldGhlciBxdWVyeSBsb29rcyBmb3IgZGlyZWN0IGNoaWxkcmVuIG9yIGFsbCBkZXNjZW5kYW50c1xuICogb2YgdGhlIHF1ZXJ5aW5nIGVsZW1lbnQsIGJ5IHVzaW5nIHRoZSBgZGVzY2VuZGFudHNgIHBhcmFtZXRlci5cbiAqIEl0IGlzIHNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3d0R2VCOTc3YnY3cXZBNUZUWWw5P3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8Y29udGFpbmVyICNmaXJzdD5cbiAqICAgPGl0ZW0+YTwvaXRlbT5cbiAqICAgPGl0ZW0+YjwvaXRlbT5cbiAqICAgPGNvbnRhaW5lciAjc2Vjb25kPlxuICogICAgIDxpdGVtPmM8L2l0ZW0+XG4gKiAgIDwvY29udGFpbmVyPlxuICogPC9jb250YWluZXI+XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHF1ZXJ5aW5nIGZvciBpdGVtcywgdGhlIGZpcnN0IGNvbnRhaW5lciB3aWxsIHNlZSBvbmx5IGBhYCBhbmQgYGJgIGJ5IGRlZmF1bHQsXG4gKiBidXQgd2l0aCBgUXVlcnkoVGV4dERpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlgIGl0IHdpbGwgc2VlIGBjYCB0b28uXG4gKlxuICogVGhlIHF1ZXJpZWQgZGlyZWN0aXZlcyBhcmUga2VwdCBpbiBhIGRlcHRoLWZpcnN0IHByZS1vcmRlciB3aXRoIHJlc3BlY3QgdG8gdGhlaXJcbiAqIHBvc2l0aW9ucyBpbiB0aGUgRE9NLlxuICpcbiAqIFF1ZXJ5IGRvZXMgbm90IGxvb2sgZGVlcCBpbnRvIGFueSBzdWJjb21wb25lbnQgdmlld3MuXG4gKlxuICogUXVlcnkgaXMgdXBkYXRlZCBhcyBwYXJ0IG9mIHRoZSBjaGFuZ2UtZGV0ZWN0aW9uIGN5Y2xlLiBTaW5jZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiBoYXBwZW5zIGFmdGVyIGNvbnN0cnVjdGlvbiBvZiBhIGRpcmVjdGl2ZSwgUXVlcnlMaXN0IHdpbGwgYWx3YXlzIGJlIGVtcHR5IHdoZW4gb2JzZXJ2ZWQgaW4gdGhlXG4gKiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBUaGUgaW5qZWN0ZWQgb2JqZWN0IGlzIGFuIHVubW9kaWZpYWJsZSBsaXZlIGxpc3QuXG4gKiBTZWUge0BsaW5rIFF1ZXJ5TGlzdH0gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IHZhciBRdWVyeTogUXVlcnlNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUGFyYW1EZWNvcmF0b3IoUXVlcnlNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gQ29udGVudENoaWxkcmVuTWV0YWRhdGEuXG4vKipcbiAqIENvbmZpZ3VyZXMgYSBjb250ZW50IHF1ZXJ5LlxuICpcbiAqIENvbnRlbnQgcXVlcmllcyBhcmUgc2V0IGJlZm9yZSB0aGUgYG5nQWZ0ZXJDb250ZW50SW5pdGAgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHtcbiAqICAgc2VsZWN0b3I6ICdzb21lRGlyJ1xuICogfSlcbiAqIGNsYXNzIFNvbWVEaXIge1xuICogICBAQ29udGVudENoaWxkcmVuKENoaWxkRGlyZWN0aXZlKSBjb250ZW50Q2hpbGRyZW46IFF1ZXJ5TGlzdDxDaGlsZERpcmVjdGl2ZT47XG4gKlxuICogICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gKiAgICAgLy8gY29udGVudENoaWxkcmVuIGlzIHNldFxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHZhciBDb250ZW50Q2hpbGRyZW46IENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhRmFjdG9yeSA9XG4gICAgbWFrZVByb3BEZWNvcmF0b3IoQ29udGVudENoaWxkcmVuTWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIENvbnRlbnRDaGlsZE1ldGFkYXRhLlxuLyoqXG4gKiBDb25maWd1cmVzIGEgY29udGVudCBxdWVyeS5cbiAqXG4gKiBDb250ZW50IHF1ZXJpZXMgYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyQ29udGVudEluaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZURpcidcbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQENvbnRlbnRDaGlsZChDaGlsZERpcmVjdGl2ZSkgY29udGVudENoaWxkO1xuICpcbiAqICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICogICAgIC8vIGNvbnRlbnRDaGlsZCBpcyBzZXRcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCB2YXIgQ29udGVudENoaWxkOiBDb250ZW50Q2hpbGRNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihDb250ZW50Q2hpbGRNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gVmlld0NoaWxkcmVuTWV0YWRhdGEuXG4vKipcbiAqIERlY2xhcmVzIGEgbGlzdCBvZiBjaGlsZCBlbGVtZW50IHJlZmVyZW5jZXMuXG4gKlxuICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIGxpc3Qgd2hlbiB0aGUgRE9NIGlzIHVwZGF0ZWQuXG4gKlxuICogYFZpZXdDaGlsZHJlbmAgdGFrZXMgYSBhcmd1bWVudCB0byBzZWxlY3QgZWxlbWVudHMuXG4gKlxuICogLSBJZiB0aGUgYXJndW1lbnQgaXMgYSB0eXBlLCBkaXJlY3RpdmVzIG9yIGNvbXBvbmVudHMgd2l0aCB0aGUgdHlwZSB3aWxsIGJlIGJvdW5kLlxuICpcbiAqIC0gSWYgdGhlIGFyZ3VtZW50IGlzIGEgc3RyaW5nLCB0aGUgc3RyaW5nIGlzIGludGVycHJldGVkIGFzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgc2VsZWN0b3JzLlxuICogRm9yIGVhY2ggc2VsZWN0b3IsIGFuIGVsZW1lbnQgY29udGFpbmluZyB0aGUgbWF0Y2hpbmcgdGVtcGxhdGUgdmFyaWFibGUgKGUuZy4gYCNjaGlsZGApIHdpbGwgYmVcbiAqIGJvdW5kLlxuICpcbiAqIFZpZXcgY2hpbGRyZW4gYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyVmlld0luaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFdpdGggdHlwZSBzZWxlY3RvcjpcbiAqXG4gKiBgYGBcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2NoaWxkLWNtcCcsXG4gKiAgIHRlbXBsYXRlOiAnPHA+Y2hpbGQ8L3A+J1xuICogfSlcbiAqIGNsYXNzIENoaWxkQ21wIHtcbiAqICAgZG9Tb21ldGhpbmcoKSB7fVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3NvbWUtY21wJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8Y2hpbGQtY21wPjwvY2hpbGQtY21wPlxuICogICAgIDxjaGlsZC1jbXA+PC9jaGlsZC1jbXA+XG4gKiAgICAgPGNoaWxkLWNtcD48L2NoaWxkLWNtcD5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkQ21wXVxuICogfSlcbiAqIGNsYXNzIFNvbWVDbXAge1xuICogICBAVmlld0NoaWxkcmVuKENoaWxkQ21wKSBjaGlsZHJlbjpRdWVyeUxpc3Q8Q2hpbGRDbXA+O1xuICpcbiAqICAgbmdBZnRlclZpZXdJbml0KCkge1xuICogICAgIC8vIGNoaWxkcmVuIGFyZSBzZXRcbiAqICAgICB0aGlzLmNoaWxkcmVuLnRvQXJyYXkoKS5mb3JFYWNoKChjaGlsZCk9PmNoaWxkLmRvU29tZXRoaW5nKCkpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBXaXRoIHN0cmluZyBzZWxlY3RvcjpcbiAqXG4gKiBgYGBcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2NoaWxkLWNtcCcsXG4gKiAgIHRlbXBsYXRlOiAnPHA+Y2hpbGQ8L3A+J1xuICogfSlcbiAqIGNsYXNzIENoaWxkQ21wIHtcbiAqICAgZG9Tb21ldGhpbmcoKSB7fVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3NvbWUtY21wJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8Y2hpbGQtY21wICNjaGlsZDE+PC9jaGlsZC1jbXA+XG4gKiAgICAgPGNoaWxkLWNtcCAjY2hpbGQyPjwvY2hpbGQtY21wPlxuICogICAgIDxjaGlsZC1jbXAgI2NoaWxkMz48L2NoaWxkLWNtcD5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkQ21wXVxuICogfSlcbiAqIGNsYXNzIFNvbWVDbXAge1xuICogICBAVmlld0NoaWxkcmVuKCdjaGlsZDEsY2hpbGQyLGNoaWxkMycpIGNoaWxkcmVuOlF1ZXJ5TGlzdDxDaGlsZENtcD47XG4gKlxuICogICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gKiAgICAgLy8gY2hpbGRyZW4gYXJlIHNldFxuICogICAgIHRoaXMuY2hpbGRyZW4udG9BcnJheSgpLmZvckVhY2goKGNoaWxkKT0+Y2hpbGQuZG9Tb21ldGhpbmcoKSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFNlZSBhbHNvOiBbVmlld0NoaWxkcmVuTWV0YWRhdGFdXG4gKi9cbmV4cG9ydCB2YXIgVmlld0NoaWxkcmVuOiBWaWV3Q2hpbGRyZW5NZXRhZGF0YUZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihWaWV3Q2hpbGRyZW5NZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gVmlld0NoaWxkTWV0YWRhdGEuXG4vKipcbiAqIERlY2xhcmVzIGEgcmVmZXJlbmNlIHRvIGEgY2hpbGQgZWxlbWVudC5cbiAqXG4gKiBgVmlld0NoaWxkcmVuYCB0YWtlcyBhIGFyZ3VtZW50IHRvIHNlbGVjdCBlbGVtZW50cy5cbiAqXG4gKiAtIElmIHRoZSBhcmd1bWVudCBpcyBhIHR5cGUsIGEgZGlyZWN0aXZlIG9yIGEgY29tcG9uZW50IHdpdGggdGhlIHR5cGUgd2lsbCBiZSBib3VuZC5cbiAqXG4gKiAtIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgdGhlIHN0cmluZyBpcyBpbnRlcnByZXRlZCBhcyBhIHNlbGVjdG9yLiBBbiBlbGVtZW50IGNvbnRhaW5pbmcgdGhlXG4gKiBtYXRjaGluZyB0ZW1wbGF0ZSB2YXJpYWJsZSAoZS5nLiBgI2NoaWxkYCkgd2lsbCBiZSBib3VuZC5cbiAqXG4gKiBJbiBlaXRoZXIgY2FzZSwgYEBWaWV3Q2hpbGQoKWAgYXNzaWducyB0aGUgZmlyc3QgKGxvb2tpbmcgZnJvbSBhYm92ZSkgZWxlbWVudCBpZiB0aGVyZSBhcmVcbiAqIG11bHRpcGxlIG1hdGNoZXMuXG4gKlxuICogVmlldyBjaGlsZCBpcyBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlclZpZXdJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBXaXRoIHR5cGUgc2VsZWN0b3I6XG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdjaGlsZC1jbXAnLFxuICogICB0ZW1wbGF0ZTogJzxwPmNoaWxkPC9wPidcbiAqIH0pXG4gKiBjbGFzcyBDaGlsZENtcCB7XG4gKiAgIGRvU29tZXRoaW5nKCkge31cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lLWNtcCcsXG4gKiAgIHRlbXBsYXRlOiAnPGNoaWxkLWNtcD48L2NoaWxkLWNtcD4nLFxuICogICBkaXJlY3RpdmVzOiBbQ2hpbGRDbXBdXG4gKiB9KVxuICogY2xhc3MgU29tZUNtcCB7XG4gKiAgIEBWaWV3Q2hpbGQoQ2hpbGRDbXApIGNoaWxkOkNoaWxkQ21wO1xuICpcbiAqICAgbmdBZnRlclZpZXdJbml0KCkge1xuICogICAgIC8vIGNoaWxkIGlzIHNldFxuICogICAgIHRoaXMuY2hpbGQuZG9Tb21ldGhpbmcoKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogV2l0aCBzdHJpbmcgc2VsZWN0b3I6XG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdjaGlsZC1jbXAnLFxuICogICB0ZW1wbGF0ZTogJzxwPmNoaWxkPC9wPidcbiAqIH0pXG4gKiBjbGFzcyBDaGlsZENtcCB7XG4gKiAgIGRvU29tZXRoaW5nKCkge31cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lLWNtcCcsXG4gKiAgIHRlbXBsYXRlOiAnPGNoaWxkLWNtcCAjY2hpbGQ+PC9jaGlsZC1jbXA+JyxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkQ21wXVxuICogfSlcbiAqIGNsYXNzIFNvbWVDbXAge1xuICogICBAVmlld0NoaWxkKCdjaGlsZCcpIGNoaWxkOkNoaWxkQ21wO1xuICpcbiAqICAgbmdBZnRlclZpZXdJbml0KCkge1xuICogICAgIC8vIGNoaWxkIGlzIHNldFxuICogICAgIHRoaXMuY2hpbGQuZG9Tb21ldGhpbmcoKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKiBTZWUgYWxzbzogW1ZpZXdDaGlsZE1ldGFkYXRhXVxuICovXG5leHBvcnQgdmFyIFZpZXdDaGlsZDogVmlld0NoaWxkTWV0YWRhdGFGYWN0b3J5ID0gbWFrZVByb3BEZWNvcmF0b3IoVmlld0NoaWxkTWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIFZpZXdRdWVyeU1ldGFkYXRhLlxuLyoqXG4gKiBTaW1pbGFyIHRvIHtAbGluayBRdWVyeU1ldGFkYXRhfSwgYnV0IHF1ZXJ5aW5nIHRoZSBjb21wb25lbnQgdmlldywgaW5zdGVhZCBvZlxuICogdGhlIGNvbnRlbnQgY2hpbGRyZW4uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2VOc0ZIRGY3WWp5TTZJekt4TTFqP3A9cHJldmlldykpXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIC4uLixcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8aXRlbT4gYSA8L2l0ZW0+XG4gKiAgICAgPGl0ZW0+IGIgPC9pdGVtPlxuICogICAgIDxpdGVtPiBjIDwvaXRlbT5cbiAqICAgYFxuICogfSlcbiAqIGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgc2hvd246IGJvb2xlYW47XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIEBRdWVyeShJdGVtKSBpdGVtczpRdWVyeUxpc3Q8SXRlbT4pIHtcbiAqICAgICBpdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiBjb25zb2xlLmxvZyhpdGVtcy5sZW5ndGgpKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogU3VwcG9ydHMgdGhlIHNhbWUgcXVlcnlpbmcgcGFyYW1ldGVycyBhcyB7QGxpbmsgUXVlcnlNZXRhZGF0YX0sIGV4Y2VwdFxuICogYGRlc2NlbmRhbnRzYC4gVGhpcyBhbHdheXMgcXVlcmllcyB0aGUgd2hvbGUgdmlldy5cbiAqXG4gKiBBcyBgc2hvd25gIGlzIGZsaXBwZWQgYmV0d2VlbiB0cnVlIGFuZCBmYWxzZSwgaXRlbXMgd2lsbCBjb250YWluIHplcm8gb2Ygb25lXG4gKiBpdGVtcy5cbiAqXG4gKiBTcGVjaWZpZXMgdGhhdCBhIHtAbGluayBRdWVyeUxpc3R9IHNob3VsZCBiZSBpbmplY3RlZC5cbiAqXG4gKiBUaGUgaW5qZWN0ZWQgb2JqZWN0IGlzIGFuIGl0ZXJhYmxlIGFuZCBvYnNlcnZhYmxlIGxpdmUgbGlzdC5cbiAqIFNlZSB7QGxpbmsgUXVlcnlMaXN0fSBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG5leHBvcnQgdmFyIFZpZXdRdWVyeTogUXVlcnlNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUGFyYW1EZWNvcmF0b3IoVmlld1F1ZXJ5TWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIFBpcGVNZXRhZGF0YS5cbi8qKlxuICogRGVjbGFyZSByZXVzYWJsZSBwaXBlIGZ1bmN0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvdHMvbWV0YWRhdGEvbWV0YWRhdGEudHMgcmVnaW9uPSdwaXBlJ31cbiAqL1xuZXhwb3J0IHZhciBQaXBlOiBQaXBlTWV0YWRhdGFGYWN0b3J5ID0gPFBpcGVNZXRhZGF0YUZhY3Rvcnk+bWFrZURlY29yYXRvcihQaXBlTWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIElucHV0TWV0YWRhdGEuXG4vKipcbiAqIERlY2xhcmVzIGEgZGF0YS1ib3VuZCBpbnB1dCBwcm9wZXJ0eS5cbiAqXG4gKiBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyBkYXRhLWJvdW5kIHByb3BlcnRpZXMgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gKlxuICogYElucHV0TWV0YWRhdGFgIHRha2VzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgbmFtZVxuICogdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBjb21wb25lbnQgaW4gdGhlIHRlbXBsYXRlLiBXaGVuIG5vdCBwcm92aWRlZCxcbiAqIHRoZSBuYW1lIG9mIHRoZSBkZWNvcmF0ZWQgcHJvcGVydHkgaXMgdXNlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjcmVhdGVzIGEgY29tcG9uZW50IHdpdGggdHdvIGlucHV0IHByb3BlcnRpZXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYmFuay1hY2NvdW50JyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICBCYW5rIE5hbWU6IHt7YmFua05hbWV9fVxuICogICAgIEFjY291bnQgSWQ6IHt7aWR9fVxuICogICBgXG4gKiB9KVxuICogY2xhc3MgQmFua0FjY291bnQge1xuICogICBASW5wdXQoKSBiYW5rTmFtZTogc3RyaW5nO1xuICogICBASW5wdXQoJ2FjY291bnQtaWQnKSBpZDogc3RyaW5nO1xuICpcbiAqICAgLy8gdGhpcyBwcm9wZXJ0eSBpcyBub3QgYm91bmQsIGFuZCB3b24ndCBiZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgYnkgQW5ndWxhclxuICogICBub3JtYWxpemVkQmFua05hbWU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxiYW5rLWFjY291bnQgYmFuay1uYW1lPVwiUkJDXCIgYWNjb3VudC1pZD1cIjQ3NDdcIj48L2JhbmstYWNjb3VudD5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0JhbmtBY2NvdW50XVxuICogfSlcbiAqIGNsYXNzIEFwcCB7fVxuICpcbiAqIGJvb3RzdHJhcChBcHApO1xuICogYGBgXG4gKi9cbmV4cG9ydCB2YXIgSW5wdXQ6IElucHV0TWV0YWRhdGFGYWN0b3J5ID0gbWFrZVByb3BEZWNvcmF0b3IoSW5wdXRNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gT3V0cHV0TWV0YWRhdGEuXG4vKipcbiAqIERlY2xhcmVzIGFuIGV2ZW50LWJvdW5kIG91dHB1dCBwcm9wZXJ0eS5cbiAqXG4gKiBXaGVuIGFuIG91dHB1dCBwcm9wZXJ0eSBlbWl0cyBhbiBldmVudCwgYW4gZXZlbnQgaGFuZGxlciBhdHRhY2hlZCB0byB0aGF0IGV2ZW50XG4gKiB0aGUgdGVtcGxhdGUgaXMgaW52b2tlZC5cbiAqXG4gKiBgT3V0cHV0TWV0YWRhdGFgIHRha2VzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgbmFtZVxuICogdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBjb21wb25lbnQgaW4gdGhlIHRlbXBsYXRlLiBXaGVuIG5vdCBwcm92aWRlZCxcbiAqIHRoZSBuYW1lIG9mIHRoZSBkZWNvcmF0ZWQgcHJvcGVydHkgaXMgdXNlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ2ludGVydmFsLWRpcicsXG4gKiB9KVxuICogY2xhc3MgSW50ZXJ2YWxEaXIge1xuICogICBAT3V0cHV0KCkgZXZlcnlTZWNvbmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gKiAgIEBPdXRwdXQoJ2V2ZXJ5Rml2ZVNlY29uZHMnKSBmaXZlNVNlY3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmV2ZXJ5U2Vjb25kLmVtaXQoXCJldmVudFwiKSwgMTAwMCk7XG4gKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5maXZlNVNlY3MuZW1pdChcImV2ZW50XCIpLCA1MDAwKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGludGVydmFsLWRpciAoZXZlcnlTZWNvbmQpPVwiZXZlcnlTZWNvbmQoKVwiIChldmVyeUZpdmVTZWNvbmRzKT1cImV2ZXJ5Rml2ZVNlY29uZHMoKVwiPlxuICogICAgIDwvaW50ZXJ2YWwtZGlyPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbSW50ZXJ2YWxEaXJdXG4gKiB9KVxuICogY2xhc3MgQXBwIHtcbiAqICAgZXZlcnlTZWNvbmQoKSB7IGNvbnNvbGUubG9nKCdzZWNvbmQnKTsgfVxuICogICBldmVyeUZpdmVTZWNvbmRzKCkgeyBjb25zb2xlLmxvZygnZml2ZSBzZWNvbmRzJyk7IH1cbiAqIH1cbiAqIGJvb3RzdHJhcChBcHApO1xuICogYGBgXG4gKi9cbmV4cG9ydCB2YXIgT3V0cHV0OiBPdXRwdXRNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihPdXRwdXRNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gSG9zdEJpbmRpbmdNZXRhZGF0YS5cbi8qKlxuICogRGVjbGFyZXMgYSBob3N0IHByb3BlcnR5IGJpbmRpbmcuXG4gKlxuICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNoZWNrcyBob3N0IHByb3BlcnR5IGJpbmRpbmdzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICogSWYgYSBiaW5kaW5nIGNoYW5nZXMsIGl0IHdpbGwgdXBkYXRlIHRoZSBob3N0IGVsZW1lbnQgb2YgdGhlIGRpcmVjdGl2ZS5cbiAqXG4gKiBgSG9zdEJpbmRpbmdNZXRhZGF0YWAgdGFrZXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBwcm9wZXJ0eVxuICogbmFtZSBvZiB0aGUgaG9zdCBlbGVtZW50IHRoYXQgd2lsbCBiZSB1cGRhdGVkLiBXaGVuIG5vdCBwcm92aWRlZCxcbiAqIHRoZSBjbGFzcyBwcm9wZXJ0eSBuYW1lIGlzIHVzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGRpcmVjdGl2ZSB0aGF0IHNldHMgdGhlIGB2YWxpZGAgYW5kIGBpbnZhbGlkYCBjbGFzc2VzXG4gKiBvbiB0aGUgRE9NIGVsZW1lbnQgdGhhdCBoYXMgbmdNb2RlbCBkaXJlY3RpdmUgb24gaXQuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdNb2RlbF0nfSlcbiAqIGNsYXNzIE5nTW9kZWxTdGF0dXMge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbDpOZ01vZGVsKSB7fVxuICogICBASG9zdEJpbmRpbmcoJ1tjbGFzcy52YWxpZF0nKSBnZXQgdmFsaWQgeyByZXR1cm4gdGhpcy5jb250cm9sLnZhbGlkOyB9XG4gKiAgIEBIb3N0QmluZGluZygnW2NsYXNzLmludmFsaWRdJykgZ2V0IGludmFsaWQgeyByZXR1cm4gdGhpcy5jb250cm9sLmludmFsaWQ7IH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYDxpbnB1dCBbKG5nTW9kZWwpXT1cInByb3BcIj5gLFxuICogICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTLCBOZ01vZGVsU3RhdHVzXVxuICogfSlcbiAqIGNsYXNzIEFwcCB7XG4gKiAgIHByb3A7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHZhciBIb3N0QmluZGluZzogSG9zdEJpbmRpbmdNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihIb3N0QmluZGluZ01ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBIb3N0TGlzdGVuZXJNZXRhZGF0YS5cbi8qKlxuICogRGVjbGFyZXMgYSBob3N0IGxpc3RlbmVyLlxuICpcbiAqIEFuZ3VsYXIgd2lsbCBpbnZva2UgdGhlIGRlY29yYXRlZCBtZXRob2Qgd2hlbiB0aGUgaG9zdCBlbGVtZW50IGVtaXRzIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogSWYgdGhlIGRlY29yYXRlZCBtZXRob2QgcmV0dXJucyBgZmFsc2VgLCB0aGVuIGBwcmV2ZW50RGVmYXVsdGAgaXMgYXBwbGllZCBvbiB0aGUgRE9NXG4gKiBldmVudC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWNsYXJlcyBhIGRpcmVjdGl2ZSB0aGF0IGF0dGFjaGVzIGEgY2xpY2sgbGlzdGVuZXIgdG8gdGhlIGJ1dHRvbiBhbmRcbiAqIGNvdW50cyBjbGlja3MuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdidXR0b25bY291bnRpbmddJ30pXG4gKiBjbGFzcyBDb3VudENsaWNrcyB7XG4gKiAgIG51bWJlck9mQ2xpY2tzID0gMDtcbiAqXG4gKiAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gKiAgIG9uQ2xpY2soYnRuKSB7XG4gKiAgICAgY29uc29sZS5sb2coXCJidXR0b25cIiwgYnRuLCBcIm51bWJlciBvZiBjbGlja3M6XCIsIHRoaXMubnVtYmVyT2ZDbGlja3MrKyk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYDxidXR0b24gY291bnRpbmc+SW5jcmVtZW50PC9idXR0b24+YCxcbiAqICAgZGlyZWN0aXZlczogW0NvdW50Q2xpY2tzXVxuICogfSlcbiAqIGNsYXNzIEFwcCB7fVxuICpcbiAqIGJvb3RzdHJhcChBcHApO1xuICogYGBgXG4gKi9cbmV4cG9ydCB2YXIgSG9zdExpc3RlbmVyOiBIb3N0TGlzdGVuZXJNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihIb3N0TGlzdGVuZXJNZXRhZGF0YSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n// Public API for util\r\nvar decorators_1 = require('./util/decorators');\r\nexports.Class = decorators_1.Class;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNCQUFzQjtBQUN0QiwyQkFBb0QsbUJBQW1CLENBQUM7QUFBaEUsbUNBQWdFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHVibGljIEFQSSBmb3IgdXRpbFxuZXhwb3J0IHtDbGFzcywgQ2xhc3NEZWZpbml0aW9uLCBUeXBlRGVjb3JhdG9yfSBmcm9tICcuL3V0aWwvZGVjb3JhdG9ycyc7Il19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.enableProdMode = lang_1.enableProdMode;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZF9tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvcHJvZF9tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBNkIsMEJBQTBCLENBQUM7QUFBaEQsK0NBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtlbmFibGVQcm9kTW9kZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJzsiXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n// Public API for Facade\r\nvar lang_1 = require('./lang');\r\nexports.Type = lang_1.Type;\r\nvar async_1 = require('./async');\r\nexports.EventEmitter = async_1.EventEmitter;\r\nvar exceptions_1 = require('./exceptions');\r\nexports.WrappedException = exceptions_1.WrappedException;\r\nvar exception_handler_1 = require('./exception_handler');\r\nexports.ExceptionHandler = exception_handler_1.ExceptionHandler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjYWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2ZhY2FkZS9mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUF3QjtBQUN4QixxQkFBaUMsUUFBUSxDQUFDO0FBQXBCLDJCQUFvQjtBQUMxQyxzQkFBMkIsU0FBUyxDQUFDO0FBQTdCLDRDQUE2QjtBQUNyQywyQkFBK0IsY0FBYyxDQUFDO0FBQXRDLHlEQUFzQztBQUM5QyxrQ0FBK0IscUJBQXFCLENBQUM7QUFBN0MsZ0VBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHVibGljIEFQSSBmb3IgRmFjYWRlXG5leHBvcnQge0NvbmNyZXRlVHlwZSwgVHlwZX0gZnJvbSAnLi9sYW5nJztcbmV4cG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tICcuL2FzeW5jJztcbmV4cG9ydCB7V3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnLi9leGNlcHRpb25zJztcbmV4cG9ydCB7RXhjZXB0aW9uSGFuZGxlcn0gZnJvbSAnLi9leGNlcHRpb25faGFuZGxlcic7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n// Public API for Zone\r\nvar ng_zone_1 = require('./zone/ng_zone');\r\nexports.NgZone = ng_zone_1.NgZone;\r\nexports.NgZoneError = ng_zone_1.NgZoneError;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3pvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNCQUFzQjtBQUN0Qix3QkFBa0MsZ0JBQWdCLENBQUM7QUFBM0Msa0NBQU07QUFBRSw0Q0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQdWJsaWMgQVBJIGZvciBab25lXG5leHBvcnQge05nWm9uZSwgTmdab25lRXJyb3J9IGZyb20gJy4vem9uZS9uZ196b25lJztcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n// Public API for render\r\nvar api_1 = require('./render/api');\r\nexports.RootRenderer = api_1.RootRenderer;\r\nexports.Renderer = api_1.Renderer;\r\nexports.RenderComponentType = api_1.RenderComponentType;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3QkFBd0I7QUFDeEIsb0JBQTBELGNBQWMsQ0FBQztBQUFqRSwwQ0FBWTtBQUFFLGtDQUFRO0FBQUUsd0RBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHVibGljIEFQSSBmb3IgcmVuZGVyXG5leHBvcnQge1Jvb3RSZW5kZXJlciwgUmVuZGVyZXIsIFJlbmRlckNvbXBvbmVudFR5cGV9IGZyb20gJy4vcmVuZGVyL2FwaSc7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\n/**\r\n * An unmodifiable list of items that Angular keeps up to date when the state\r\n * of the application changes.\r\n *\r\n * The type of object that {@link QueryMetadata} and {@link ViewQueryMetadata} provide.\r\n *\r\n * Implements an iterable interface, therefore it can be used in both ES6\r\n * javascript `for (var i of items)` loops as well as in Angular templates with\r\n * `*ngFor=\"let i of myList\"`.\r\n *\r\n * Changes can be observed by subscribing to the changes `Observable`.\r\n *\r\n * NOTE: In the future this class will implement an `Observable` interface.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/RX8sJnQYl9FWuSCWme5z?p=preview))\r\n * ```typescript\r\n * @Component({...})\r\n * class Container {\r\n * constructor(@Query(Item) items: QueryList<Item>) {\r\n * items.changes.subscribe(_ => console.log(items.length));\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar QueryList = (function () {\r\n function QueryList() {\r\n this._dirty = true;\r\n this._results = [];\r\n this._emitter = new async_1.EventEmitter();\r\n }\r\n Object.defineProperty(QueryList.prototype, \"changes\", {\r\n get: function () { return this._emitter; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryList.prototype, \"length\", {\r\n get: function () { return this._results.length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryList.prototype, \"first\", {\r\n get: function () { return collection_1.ListWrapper.first(this._results); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryList.prototype, \"last\", {\r\n get: function () { return collection_1.ListWrapper.last(this._results); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * returns a new array with the passed in function applied to each element.\r\n */\r\n QueryList.prototype.map = function (fn) { return this._results.map(fn); };\r\n /**\r\n * returns a filtered array.\r\n */\r\n QueryList.prototype.filter = function (fn) { return this._results.filter(fn); };\r\n /**\r\n * returns a reduced value.\r\n */\r\n QueryList.prototype.reduce = function (fn, init) { return this._results.reduce(fn, init); };\r\n /**\r\n * executes function for each element in a query.\r\n */\r\n QueryList.prototype.forEach = function (fn) { this._results.forEach(fn); };\r\n /**\r\n * converts QueryList into an array\r\n */\r\n QueryList.prototype.toArray = function () { return collection_1.ListWrapper.clone(this._results); };\r\n QueryList.prototype[lang_1.getSymbolIterator()] = function () { return this._results[lang_1.getSymbolIterator()](); };\r\n QueryList.prototype.toString = function () { return this._results.toString(); };\r\n /**\r\n * @internal\r\n */\r\n QueryList.prototype.reset = function (res) {\r\n this._results = collection_1.ListWrapper.flatten(res);\r\n this._dirty = false;\r\n };\r\n /** @internal */\r\n QueryList.prototype.notifyOnChanges = function () { this._emitter.emit(this); };\r\n /** internal */\r\n QueryList.prototype.setDirty = function () { this._dirty = true; };\r\n Object.defineProperty(QueryList.prototype, \"dirty\", {\r\n /** internal */\r\n get: function () { return this._dirty; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return QueryList;\r\n}());\r\nexports.QueryList = QueryList;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlfbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9xdWVyeV9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQkFBc0MsZ0NBQWdDLENBQUMsQ0FBQTtBQUN2RSxxQkFBZ0MsMEJBQTBCLENBQUMsQ0FBQTtBQUMzRCxzQkFBdUMsMkJBQTJCLENBQUMsQ0FBQTtBQUduRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSDtJQUFBO1FBQ1UsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIsYUFBUSxHQUFHLElBQUksb0JBQVksRUFBRSxDQUFDO0lBb0R4QyxDQUFDO0lBbERDLHNCQUFJLDhCQUFPO2FBQVgsY0FBaUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUN4RCxzQkFBSSw2QkFBTTthQUFWLGNBQXVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ3JELHNCQUFJLDRCQUFLO2FBQVQsY0FBaUIsTUFBTSxDQUFDLHdCQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQzNELHNCQUFJLDJCQUFJO2FBQVIsY0FBZ0IsTUFBTSxDQUFDLHdCQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBRXpEOztPQUVHO0lBQ0gsdUJBQUcsR0FBSCxVQUFPLEVBQWtCLElBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqRTs7T0FFRztJQUNILDBCQUFNLEdBQU4sVUFBTyxFQUF3QixJQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUU7O09BRUc7SUFDSCwwQkFBTSxHQUFOLFVBQVUsRUFBMEIsRUFBRSxJQUFPLElBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUY7O09BRUc7SUFDSCwyQkFBTyxHQUFQLFVBQVEsRUFBcUIsSUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkU7O09BRUc7SUFDSCwyQkFBTyxHQUFQLGNBQWlCLE1BQU0sQ0FBQyx3QkFBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNELG9CQUFDLHdCQUFpQixFQUFFLENBQUMsR0FBckIsY0FBK0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTdFLDRCQUFRLEdBQVIsY0FBcUIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZEOztPQUVHO0lBQ0gseUJBQUssR0FBTCxVQUFNLEdBQXFCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsd0JBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixtQ0FBZSxHQUFmLGNBQTBCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVyRCxlQUFlO0lBQ2YsNEJBQVEsR0FBUixjQUFhLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUdsQyxzQkFBSSw0QkFBSztRQURULGVBQWU7YUFDZixjQUFjLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDckMsZ0JBQUM7QUFBRCxDQUFDLEFBdkRELElBdURDO0FBdkRZLGlCQUFTLFlBdURyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0V3JhcHBlciwgTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7Z2V0U3ltYm9sSXRlcmF0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge09ic2VydmFibGUsIEV2ZW50RW1pdHRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5cblxuLyoqXG4gKiBBbiB1bm1vZGlmaWFibGUgbGlzdCBvZiBpdGVtcyB0aGF0IEFuZ3VsYXIga2VlcHMgdXAgdG8gZGF0ZSB3aGVuIHRoZSBzdGF0ZVxuICogb2YgdGhlIGFwcGxpY2F0aW9uIGNoYW5nZXMuXG4gKlxuICogVGhlIHR5cGUgb2Ygb2JqZWN0IHRoYXQge0BsaW5rIFF1ZXJ5TWV0YWRhdGF9IGFuZCB7QGxpbmsgVmlld1F1ZXJ5TWV0YWRhdGF9IHByb3ZpZGUuXG4gKlxuICogSW1wbGVtZW50cyBhbiBpdGVyYWJsZSBpbnRlcmZhY2UsIHRoZXJlZm9yZSBpdCBjYW4gYmUgdXNlZCBpbiBib3RoIEVTNlxuICogamF2YXNjcmlwdCBgZm9yICh2YXIgaSBvZiBpdGVtcylgIGxvb3BzIGFzIHdlbGwgYXMgaW4gQW5ndWxhciB0ZW1wbGF0ZXMgd2l0aFxuICogYCpuZ0Zvcj1cImxldCBpIG9mIG15TGlzdFwiYC5cbiAqXG4gKiBDaGFuZ2VzIGNhbiBiZSBvYnNlcnZlZCBieSBzdWJzY3JpYmluZyB0byB0aGUgY2hhbmdlcyBgT2JzZXJ2YWJsZWAuXG4gKlxuICogTk9URTogSW4gdGhlIGZ1dHVyZSB0aGlzIGNsYXNzIHdpbGwgaW1wbGVtZW50IGFuIGBPYnNlcnZhYmxlYCBpbnRlcmZhY2UuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1JYOHNKblFZbDlGV3VTQ1dtZTV6P3A9cHJldmlldykpXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogY2xhc3MgQ29udGFpbmVyIHtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KEl0ZW0pIGl0ZW1zOiBRdWVyeUxpc3Q8SXRlbT4pIHtcbiAqICAgICBpdGVtcy5jaGFuZ2VzLnN1YnNjcmliZShfID0+IGNvbnNvbGUubG9nKGl0ZW1zLmxlbmd0aCkpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXJ5TGlzdDxUPiB7XG4gIHByaXZhdGUgX2RpcnR5ID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfcmVzdWx0czogQXJyYXk8VD4gPSBbXTtcbiAgcHJpdmF0ZSBfZW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBnZXQgY2hhbmdlcygpOiBPYnNlcnZhYmxlPGFueT4geyByZXR1cm4gdGhpcy5fZW1pdHRlcjsgfVxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9yZXN1bHRzLmxlbmd0aDsgfVxuICBnZXQgZmlyc3QoKTogVCB7IHJldHVybiBMaXN0V3JhcHBlci5maXJzdCh0aGlzLl9yZXN1bHRzKTsgfVxuICBnZXQgbGFzdCgpOiBUIHsgcmV0dXJuIExpc3RXcmFwcGVyLmxhc3QodGhpcy5fcmVzdWx0cyk7IH1cblxuICAvKipcbiAgICogcmV0dXJucyBhIG5ldyBhcnJheSB3aXRoIHRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gYXBwbGllZCB0byBlYWNoIGVsZW1lbnQuXG4gICAqL1xuICBtYXA8VT4oZm46IChpdGVtOiBUKSA9PiBVKTogVVtdIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdHMubWFwKGZuKTsgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIGEgZmlsdGVyZWQgYXJyYXkuXG4gICAqL1xuICBmaWx0ZXIoZm46IChpdGVtOiBUKSA9PiBib29sZWFuKTogVFtdIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmlsdGVyKGZuKTsgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIGEgcmVkdWNlZCB2YWx1ZS5cbiAgICovXG4gIHJlZHVjZTxVPihmbjogKGFjYzogVSwgaXRlbTogVCkgPT4gVSwgaW5pdDogVSk6IFUgeyByZXR1cm4gdGhpcy5fcmVzdWx0cy5yZWR1Y2UoZm4sIGluaXQpOyB9XG5cbiAgLyoqXG4gICAqIGV4ZWN1dGVzIGZ1bmN0aW9uIGZvciBlYWNoIGVsZW1lbnQgaW4gYSBxdWVyeS5cbiAgICovXG4gIGZvckVhY2goZm46IChpdGVtOiBUKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMuX3Jlc3VsdHMuZm9yRWFjaChmbik7IH1cblxuICAvKipcbiAgICogY29udmVydHMgUXVlcnlMaXN0IGludG8gYW4gYXJyYXlcbiAgICovXG4gIHRvQXJyYXkoKTogVFtdIHsgcmV0dXJuIExpc3RXcmFwcGVyLmNsb25lKHRoaXMuX3Jlc3VsdHMpOyB9XG5cbiAgW2dldFN5bWJvbEl0ZXJhdG9yKCldKCk6IGFueSB7IHJldHVybiB0aGlzLl9yZXN1bHRzW2dldFN5bWJvbEl0ZXJhdG9yKCldKCk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fcmVzdWx0cy50b1N0cmluZygpOyB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVzZXQocmVzOiBBcnJheTxUIHwgYW55W10+KTogdm9pZCB7XG4gICAgdGhpcy5fcmVzdWx0cyA9IExpc3RXcmFwcGVyLmZsYXR0ZW4ocmVzKTtcbiAgICB0aGlzLl9kaXJ0eSA9IGZhbHNlO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBub3RpZnlPbkNoYW5nZXMoKTogdm9pZCB7IHRoaXMuX2VtaXR0ZXIuZW1pdCh0aGlzKTsgfVxuXG4gIC8qKiBpbnRlcm5hbCAqL1xuICBzZXREaXJ0eSgpIHsgdGhpcy5fZGlydHkgPSB0cnVlOyB9XG5cbiAgLyoqIGludGVybmFsICovXG4gIGdldCBkaXJ0eSgpIHsgcmV0dXJuIHRoaXMuX2RpcnR5OyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n/**\r\n * Represents an Embedded Template that can be used to instantiate Embedded Views.\r\n *\r\n * You can access a `TemplateRef`, in two ways. Via a directive placed on a `<template>` element (or\r\n * directive prefixed with `*`) and have the `TemplateRef` for this Embedded View injected into the\r\n * constructor of the directive using the `TemplateRef` Token. Alternatively you can query for the\r\n * `TemplateRef` from a Component or a Directive via {@link Query}.\r\n *\r\n * To instantiate Embedded Views based on a Template, use\r\n * {@link ViewContainerRef#createEmbeddedView}, which will create the View and attach it to the\r\n * View Container.\r\n */\r\nvar TemplateRef = (function () {\r\n function TemplateRef() {\r\n }\r\n Object.defineProperty(TemplateRef.prototype, \"elementRef\", {\r\n /**\r\n * The location in the View where the Embedded View logically belongs to.\r\n *\r\n * The data-binding and injection contexts of Embedded Views created from this `TemplateRef`\r\n * inherit from the contexts of this location.\r\n *\r\n * Typically new Embedded Views are attached to the View Container of this location, but in\r\n * advanced use-cases, the View can be attached to a different container while keeping the\r\n * data-binding and injection context from the original location.\r\n *\r\n */\r\n // TODO(i): rename to anchor or location\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TemplateRef;\r\n}());\r\nexports.TemplateRef = TemplateRef;\r\nvar TemplateRef_ = (function (_super) {\r\n __extends(TemplateRef_, _super);\r\n function TemplateRef_(_appElement, _viewFactory) {\r\n _super.call(this);\r\n this._appElement = _appElement;\r\n this._viewFactory = _viewFactory;\r\n }\r\n TemplateRef_.prototype.createEmbeddedView = function () {\r\n var view = this._viewFactory(this._appElement.parentView.viewUtils, this._appElement.parentInjector, this._appElement);\r\n view.create(null, null);\r\n return view.ref;\r\n };\r\n Object.defineProperty(TemplateRef_.prototype, \"elementRef\", {\r\n get: function () { return this._appElement.elementRef; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TemplateRef_;\r\n}(TemplateRef));\r\nexports.TemplateRef_ = TemplateRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3RlbXBsYXRlX3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQTs7Ozs7Ozs7Ozs7R0FXRztBQUNIO0lBQUE7SUFnQkEsQ0FBQztJQUhDLHNCQUFJLG1DQUFVO1FBWmQ7Ozs7Ozs7Ozs7V0FVRztRQUNILHdDQUF3QzthQUN4QyxjQUErQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFHL0Msa0JBQUM7QUFBRCxDQUFDLEFBaEJELElBZ0JDO0FBaEJxQixtQkFBVyxjQWdCaEMsQ0FBQTtBQUVEO0lBQWtDLGdDQUFXO0lBQzNDLHNCQUFvQixXQUF1QixFQUFVLFlBQXNCO1FBQUksaUJBQU8sQ0FBQztRQUFuRSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFVO0lBQWEsQ0FBQztJQUV6Rix5Q0FBa0IsR0FBbEI7UUFDRSxJQUFJLElBQUksR0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsc0JBQUksb0NBQVU7YUFBZCxjQUErQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUN0RSxtQkFBQztBQUFELENBQUMsQUFYRCxDQUFrQyxXQUFXLEdBVzVDO0FBWFksb0JBQVksZUFXeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnLi9lbGVtZW50X3JlZic7XG5pbXBvcnQge0FwcEVsZW1lbnR9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQge0FwcFZpZXd9IGZyb20gJy4vdmlldyc7XG5pbXBvcnQge0VtYmVkZGVkVmlld1JlZn0gZnJvbSAnLi92aWV3X3JlZic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFbWJlZGRlZCBUZW1wbGF0ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGluc3RhbnRpYXRlIEVtYmVkZGVkIFZpZXdzLlxuICpcbiAqIFlvdSBjYW4gYWNjZXNzIGEgYFRlbXBsYXRlUmVmYCwgaW4gdHdvIHdheXMuIFZpYSBhIGRpcmVjdGl2ZSBwbGFjZWQgb24gYSBgPHRlbXBsYXRlPmAgZWxlbWVudCAob3JcbiAqIGRpcmVjdGl2ZSBwcmVmaXhlZCB3aXRoIGAqYCkgYW5kIGhhdmUgdGhlIGBUZW1wbGF0ZVJlZmAgZm9yIHRoaXMgRW1iZWRkZWQgVmlldyBpbmplY3RlZCBpbnRvIHRoZVxuICogY29uc3RydWN0b3Igb2YgdGhlIGRpcmVjdGl2ZSB1c2luZyB0aGUgYFRlbXBsYXRlUmVmYCBUb2tlbi4gQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHF1ZXJ5IGZvciB0aGVcbiAqIGBUZW1wbGF0ZVJlZmAgZnJvbSBhIENvbXBvbmVudCBvciBhIERpcmVjdGl2ZSB2aWEge0BsaW5rIFF1ZXJ5fS5cbiAqXG4gKiBUbyBpbnN0YW50aWF0ZSBFbWJlZGRlZCBWaWV3cyBiYXNlZCBvbiBhIFRlbXBsYXRlLCB1c2VcbiAqIHtAbGluayBWaWV3Q29udGFpbmVyUmVmI2NyZWF0ZUVtYmVkZGVkVmlld30sIHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBWaWV3IGFuZCBhdHRhY2ggaXQgdG8gdGhlXG4gKiBWaWV3IENvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRlbXBsYXRlUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBpbiB0aGUgVmlldyB3aGVyZSB0aGUgRW1iZWRkZWQgVmlldyBsb2dpY2FsbHkgYmVsb25ncyB0by5cbiAgICpcbiAgICogVGhlIGRhdGEtYmluZGluZyBhbmQgaW5qZWN0aW9uIGNvbnRleHRzIG9mIEVtYmVkZGVkIFZpZXdzIGNyZWF0ZWQgZnJvbSB0aGlzIGBUZW1wbGF0ZVJlZmBcbiAgICogaW5oZXJpdCBmcm9tIHRoZSBjb250ZXh0cyBvZiB0aGlzIGxvY2F0aW9uLlxuICAgKlxuICAgKiBUeXBpY2FsbHkgbmV3IEVtYmVkZGVkIFZpZXdzIGFyZSBhdHRhY2hlZCB0byB0aGUgVmlldyBDb250YWluZXIgb2YgdGhpcyBsb2NhdGlvbiwgYnV0IGluXG4gICAqIGFkdmFuY2VkIHVzZS1jYXNlcywgdGhlIFZpZXcgY2FuIGJlIGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGNvbnRhaW5lciB3aGlsZSBrZWVwaW5nIHRoZVxuICAgKiBkYXRhLWJpbmRpbmcgYW5kIGluamVjdGlvbiBjb250ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGxvY2F0aW9uLlxuICAgKlxuICAgKi9cbiAgLy8gVE9ETyhpKTogcmVuYW1lIHRvIGFuY2hvciBvciBsb2NhdGlvblxuICBnZXQgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHsgcmV0dXJuIG51bGw7IH1cblxuICBhYnN0cmFjdCBjcmVhdGVFbWJlZGRlZFZpZXcoKTogRW1iZWRkZWRWaWV3UmVmO1xufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVSZWZfIGV4dGVuZHMgVGVtcGxhdGVSZWYge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcHBFbGVtZW50OiBBcHBFbGVtZW50LCBwcml2YXRlIF92aWV3RmFjdG9yeTogRnVuY3Rpb24pIHsgc3VwZXIoKTsgfVxuXG4gIGNyZWF0ZUVtYmVkZGVkVmlldygpOiBFbWJlZGRlZFZpZXdSZWYge1xuICAgIHZhciB2aWV3OiBBcHBWaWV3PGFueT4gPSB0aGlzLl92aWV3RmFjdG9yeSh0aGlzLl9hcHBFbGVtZW50LnBhcmVudFZpZXcudmlld1V0aWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBFbGVtZW50LnBhcmVudEluamVjdG9yLCB0aGlzLl9hcHBFbGVtZW50KTtcbiAgICB2aWV3LmNyZWF0ZShudWxsLCBudWxsKTtcbiAgICByZXR1cm4gdmlldy5yZWY7XG4gIH1cblxuICBnZXQgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHsgcmV0dXJuIHRoaXMuX2FwcEVsZW1lbnQuZWxlbWVudFJlZjsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar change_detector_ref_1 = require('../change_detection/change_detector_ref');\r\nvar constants_1 = require('angular2/src/core/change_detection/constants');\r\nvar ViewRef = (function (_super) {\r\n __extends(ViewRef, _super);\r\n function ViewRef() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(ViewRef.prototype, \"changeDetectorRef\", {\r\n /**\r\n * @internal\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ViewRef.prototype, \"destroyed\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ViewRef;\r\n}(change_detector_ref_1.ChangeDetectorRef));\r\nexports.ViewRef = ViewRef;\r\n/**\r\n * Represents an Angular View.\r\n *\r\n * <!-- TODO: move the next two paragraphs to the dev guide -->\r\n * A View is a fundamental building block of the application UI. It is the smallest grouping of\r\n * Elements which are created and destroyed together.\r\n *\r\n * Properties of elements in a View can change, but the structure (number and order) of elements in\r\n * a View cannot. Changing the structure of Elements can only be done by inserting, moving or\r\n * removing nested Views via a {@link ViewContainerRef}. Each View can contain many View Containers.\r\n * <!-- /TODO -->\r\n *\r\n * ### Example\r\n *\r\n * Given this template...\r\n *\r\n * ```\r\n * Count: {{items.length}}\r\n * <ul>\r\n * <li *ngFor=\"let item of items\">{{item}}</li>\r\n * </ul>\r\n * ```\r\n *\r\n * ... we have two {@link ProtoViewRef}s:\r\n *\r\n * Outer {@link ProtoViewRef}:\r\n * ```\r\n * Count: {{items.length}}\r\n * <ul>\r\n * <template ngFor let-item [ngForOf]=\"items\"></template>\r\n * </ul>\r\n * ```\r\n *\r\n * Inner {@link ProtoViewRef}:\r\n * ```\r\n * <li>{{item}}</li>\r\n * ```\r\n *\r\n * Notice that the original template is broken down into two separate {@link ProtoViewRef}s.\r\n *\r\n * The outer/inner {@link ProtoViewRef}s are then assembled into views like so:\r\n *\r\n * ```\r\n * <!-- ViewRef: outer-0 -->\r\n * Count: 2\r\n * <ul>\r\n * <template view-container-ref></template>\r\n * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->\r\n * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->\r\n * </ul>\r\n * <!-- /ViewRef: outer-0 -->\r\n * ```\r\n */\r\nvar EmbeddedViewRef = (function (_super) {\r\n __extends(EmbeddedViewRef, _super);\r\n function EmbeddedViewRef() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(EmbeddedViewRef.prototype, \"rootNodes\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return EmbeddedViewRef;\r\n}(ViewRef));\r\nexports.EmbeddedViewRef = EmbeddedViewRef;\r\nvar ViewRef_ = (function () {\r\n function ViewRef_(_view) {\r\n this._view = _view;\r\n this._view = _view;\r\n }\r\n Object.defineProperty(ViewRef_.prototype, \"internalView\", {\r\n get: function () { return this._view; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewRef_.prototype, \"changeDetectorRef\", {\r\n /**\r\n * Return `ChangeDetectorRef`\r\n */\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewRef_.prototype, \"rootNodes\", {\r\n get: function () { return this._view.flatRootNodes; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ViewRef_.prototype.setLocal = function (variableName, value) { this._view.setLocal(variableName, value); };\r\n ViewRef_.prototype.hasLocal = function (variableName) { return this._view.hasLocal(variableName); };\r\n Object.defineProperty(ViewRef_.prototype, \"destroyed\", {\r\n get: function () { return this._view.destroyed; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ViewRef_.prototype.markForCheck = function () { this._view.markPathToRootAsCheckOnce(); };\r\n ViewRef_.prototype.detach = function () { this._view.cdMode = constants_1.ChangeDetectionStrategy.Detached; };\r\n ViewRef_.prototype.detectChanges = function () { this._view.detectChanges(false); };\r\n ViewRef_.prototype.checkNoChanges = function () { this._view.detectChanges(true); };\r\n ViewRef_.prototype.reattach = function () {\r\n this._view.cdMode = constants_1.ChangeDetectionStrategy.CheckAlways;\r\n this.markForCheck();\r\n };\r\n ViewRef_.prototype.onDestroy = function (callback) { this._view.disposables.push(callback); };\r\n ViewRef_.prototype.destroy = function () { this._view.destroy(); };\r\n return ViewRef_;\r\n}());\r\nexports.ViewRef_ = ViewRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld19yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFFN0Qsb0NBQWdDLHlDQUF5QyxDQUFDLENBQUE7QUFFMUUsMEJBQXNDLDhDQUE4QyxDQUFDLENBQUE7QUFFckY7SUFBc0MsMkJBQWlCO0lBQXZEO1FBQXNDLDhCQUFpQjtJQVN2RCxDQUFDO0lBTEMsc0JBQUksc0NBQWlCO1FBSHJCOztXQUVHO2FBQ0gsY0FBNkMsTUFBTSxDQUFvQiwwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTs7SUFFekYsc0JBQUksOEJBQVM7YUFBYixjQUEyQixNQUFNLENBQVUsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFHL0QsY0FBQztBQUFELENBQUMsQUFURCxDQUFzQyx1Q0FBaUIsR0FTdEQ7QUFUcUIsZUFBTyxVQVM1QixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvREc7QUFDSDtJQUE4QyxtQ0FBTztJQUFyRDtRQUE4Qyw4QkFBTztJQWlCckQsQ0FBQztJQU5DLHNCQUFJLHNDQUFTO2FBQWIsY0FBeUIsTUFBTSxDQUFRLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBOztJQU0zRCxzQkFBQztBQUFELENBQUMsQUFqQkQsQ0FBOEMsT0FBTyxHQWlCcEQ7QUFqQnFCLHVCQUFlLGtCQWlCcEMsQ0FBQTtBQUVEO0lBQ0Usa0JBQW9CLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUFDLENBQUM7SUFFaEUsc0JBQUksa0NBQVk7YUFBaEIsY0FBbUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUt2RCxzQkFBSSx1Q0FBaUI7UUFIckI7O1dBRUc7YUFDSCxjQUE2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFM0Qsc0JBQUksK0JBQVM7YUFBYixjQUF5QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUUzRCwyQkFBUSxHQUFSLFVBQVMsWUFBb0IsRUFBRSxLQUFVLElBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5RiwyQkFBUSxHQUFSLFVBQVMsWUFBb0IsSUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJGLHNCQUFJLCtCQUFTO2FBQWIsY0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFekQsK0JBQVksR0FBWixjQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLHlCQUFNLEdBQU4sY0FBaUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsbUNBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4RSxnQ0FBYSxHQUFiLGNBQXdCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxpQ0FBYyxHQUFkLGNBQXlCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCwyQkFBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsbUNBQXVCLENBQUMsV0FBVyxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsNEJBQVMsR0FBVCxVQUFVLFFBQWtCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4RSwwQkFBTyxHQUFQLGNBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckMsZUFBQztBQUFELENBQUMsQUE5QkQsSUE4QkM7QUE5QlksZ0JBQVEsV0E4QnBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdG9yX3JlZic7XG5pbXBvcnQge0FwcFZpZXd9IGZyb20gJy4vdmlldyc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWaWV3UmVmIGV4dGVuZHMgQ2hhbmdlRGV0ZWN0b3JSZWYge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgY2hhbmdlRGV0ZWN0b3JSZWYoKTogQ2hhbmdlRGV0ZWN0b3JSZWYgeyByZXR1cm4gPENoYW5nZURldGVjdG9yUmVmPnVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICBnZXQgZGVzdHJveWVkKCk6IGJvb2xlYW4geyByZXR1cm4gPGJvb2xlYW4+dW5pbXBsZW1lbnRlZCgpOyB9XG5cbiAgYWJzdHJhY3Qgb25EZXN0cm95KGNhbGxiYWNrOiBGdW5jdGlvbik7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBBbmd1bGFyIFZpZXcuXG4gKlxuICogPCEtLSBUT0RPOiBtb3ZlIHRoZSBuZXh0IHR3byBwYXJhZ3JhcGhzIHRvIHRoZSBkZXYgZ3VpZGUgLS0+XG4gKiBBIFZpZXcgaXMgYSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jayBvZiB0aGUgYXBwbGljYXRpb24gVUkuIEl0IGlzIHRoZSBzbWFsbGVzdCBncm91cGluZyBvZlxuICogRWxlbWVudHMgd2hpY2ggYXJlIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCB0b2dldGhlci5cbiAqXG4gKiBQcm9wZXJ0aWVzIG9mIGVsZW1lbnRzIGluIGEgVmlldyBjYW4gY2hhbmdlLCBidXQgdGhlIHN0cnVjdHVyZSAobnVtYmVyIGFuZCBvcmRlcikgb2YgZWxlbWVudHMgaW5cbiAqIGEgVmlldyBjYW5ub3QuIENoYW5naW5nIHRoZSBzdHJ1Y3R1cmUgb2YgRWxlbWVudHMgY2FuIG9ubHkgYmUgZG9uZSBieSBpbnNlcnRpbmcsIG1vdmluZyBvclxuICogcmVtb3ZpbmcgbmVzdGVkIFZpZXdzIHZpYSBhIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfS4gRWFjaCBWaWV3IGNhbiBjb250YWluIG1hbnkgVmlldyBDb250YWluZXJzLlxuICogPCEtLSAvVE9ETyAtLT5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEdpdmVuIHRoaXMgdGVtcGxhdGUuLi5cbiAqXG4gKiBgYGBcbiAqIENvdW50OiB7e2l0ZW1zLmxlbmd0aH19XG4gKiA8dWw+XG4gKiAgIDxsaSAqbmdGb3I9XCJsZXQgIGl0ZW0gb2YgaXRlbXNcIj57e2l0ZW19fTwvbGk+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogLi4uIHdlIGhhdmUgdHdvIHtAbGluayBQcm90b1ZpZXdSZWZ9czpcbiAqXG4gKiBPdXRlciB7QGxpbmsgUHJvdG9WaWV3UmVmfTpcbiAqIGBgYFxuICogQ291bnQ6IHt7aXRlbXMubGVuZ3RofX1cbiAqIDx1bD5cbiAqICAgPHRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIFtuZ0Zvck9mXT1cIml0ZW1zXCI+PC90ZW1wbGF0ZT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBJbm5lciB7QGxpbmsgUHJvdG9WaWV3UmVmfTpcbiAqIGBgYFxuICogICA8bGk+e3tpdGVtfX08L2xpPlxuICogYGBgXG4gKlxuICogTm90aWNlIHRoYXQgdGhlIG9yaWdpbmFsIHRlbXBsYXRlIGlzIGJyb2tlbiBkb3duIGludG8gdHdvIHNlcGFyYXRlIHtAbGluayBQcm90b1ZpZXdSZWZ9cy5cbiAqXG4gKiBUaGUgb3V0ZXIvaW5uZXIge0BsaW5rIFByb3RvVmlld1JlZn1zIGFyZSB0aGVuIGFzc2VtYmxlZCBpbnRvIHZpZXdzIGxpa2Ugc286XG4gKlxuICogYGBgXG4gKiA8IS0tIFZpZXdSZWY6IG91dGVyLTAgLS0+XG4gKiBDb3VudDogMlxuICogPHVsPlxuICogICA8dGVtcGxhdGUgdmlldy1jb250YWluZXItcmVmPjwvdGVtcGxhdGU+XG4gKiAgIDwhLS0gVmlld1JlZjogaW5uZXItMSAtLT48bGk+Zmlyc3Q8L2xpPjwhLS0gL1ZpZXdSZWY6IGlubmVyLTEgLS0+XG4gKiAgIDwhLS0gVmlld1JlZjogaW5uZXItMiAtLT48bGk+c2Vjb25kPC9saT48IS0tIC9WaWV3UmVmOiBpbm5lci0yIC0tPlxuICogPC91bD5cbiAqIDwhLS0gL1ZpZXdSZWY6IG91dGVyLTAgLS0+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVtYmVkZGVkVmlld1JlZiBleHRlbmRzIFZpZXdSZWYge1xuICAvKipcbiAgICogU2V0cyBgdmFsdWVgIG9mIGxvY2FsIHZhcmlhYmxlIGNhbGxlZCBgdmFyaWFibGVOYW1lYCBpbiB0aGlzIFZpZXcuXG4gICAqL1xuICBhYnN0cmFjdCBzZXRMb2NhbCh2YXJpYWJsZU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoaXMgdmlldyBoYXMgYSBsb2NhbCB2YXJpYWJsZSBjYWxsZWQgYHZhcmlhYmxlTmFtZWAuXG4gICAqL1xuICBhYnN0cmFjdCBoYXNMb2NhbCh2YXJpYWJsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgZ2V0IHJvb3ROb2RlcygpOiBhbnlbXSB7IHJldHVybiA8YW55W10+dW5pbXBsZW1lbnRlZCgpOyB9O1xuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgdmlldyBhbmQgYWxsIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICAgKi9cbiAgYWJzdHJhY3QgZGVzdHJveSgpO1xufVxuXG5leHBvcnQgY2xhc3MgVmlld1JlZl8gaW1wbGVtZW50cyBFbWJlZGRlZFZpZXdSZWYge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3OiBBcHBWaWV3PGFueT4pIHsgdGhpcy5fdmlldyA9IF92aWV3OyB9XG5cbiAgZ2V0IGludGVybmFsVmlldygpOiBBcHBWaWV3PGFueT4geyByZXR1cm4gdGhpcy5fdmlldzsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYENoYW5nZURldGVjdG9yUmVmYFxuICAgKi9cbiAgZ2V0IGNoYW5nZURldGVjdG9yUmVmKCk6IENoYW5nZURldGVjdG9yUmVmIHsgcmV0dXJuIHRoaXM7IH1cblxuICBnZXQgcm9vdE5vZGVzKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuX3ZpZXcuZmxhdFJvb3ROb2RlczsgfVxuXG4gIHNldExvY2FsKHZhcmlhYmxlTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7IHRoaXMuX3ZpZXcuc2V0TG9jYWwodmFyaWFibGVOYW1lLCB2YWx1ZSk7IH1cblxuICBoYXNMb2NhbCh2YXJpYWJsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdmlldy5oYXNMb2NhbCh2YXJpYWJsZU5hbWUpOyB9XG5cbiAgZ2V0IGRlc3Ryb3llZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3ZpZXcuZGVzdHJveWVkOyB9XG5cbiAgbWFya0ZvckNoZWNrKCk6IHZvaWQgeyB0aGlzLl92aWV3Lm1hcmtQYXRoVG9Sb290QXNDaGVja09uY2UoKTsgfVxuICBkZXRhY2goKTogdm9pZCB7IHRoaXMuX3ZpZXcuY2RNb2RlID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGV0YWNoZWQ7IH1cbiAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHsgdGhpcy5fdmlldy5kZXRlY3RDaGFuZ2VzKGZhbHNlKTsgfVxuICBjaGVja05vQ2hhbmdlcygpOiB2b2lkIHsgdGhpcy5fdmlldy5kZXRlY3RDaGFuZ2VzKHRydWUpOyB9XG4gIHJlYXR0YWNoKCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXcuY2RNb2RlID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tBbHdheXM7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uRGVzdHJveShjYWxsYmFjazogRnVuY3Rpb24pIHsgdGhpcy5fdmlldy5kaXNwb3NhYmxlcy5wdXNoKGNhbGxiYWNrKTsgfVxuXG4gIGRlc3Ryb3koKSB7IHRoaXMuX3ZpZXcuZGVzdHJveSgpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n// Public API for compiler\r\nvar component_resolver_1 = require('./linker/component_resolver');\r\nexports.ComponentResolver = component_resolver_1.ComponentResolver;\r\nvar query_list_1 = require('./linker/query_list');\r\nexports.QueryList = query_list_1.QueryList;\r\nvar dynamic_component_loader_1 = require('./linker/dynamic_component_loader');\r\nexports.DynamicComponentLoader = dynamic_component_loader_1.DynamicComponentLoader;\r\nvar element_ref_1 = require('./linker/element_ref');\r\nexports.ElementRef = element_ref_1.ElementRef;\r\nvar template_ref_1 = require('./linker/template_ref');\r\nexports.TemplateRef = template_ref_1.TemplateRef;\r\nvar view_ref_1 = require('./linker/view_ref');\r\nexports.EmbeddedViewRef = view_ref_1.EmbeddedViewRef;\r\nexports.ViewRef = view_ref_1.ViewRef;\r\nvar view_container_ref_1 = require('./linker/view_container_ref');\r\nexports.ViewContainerRef = view_container_ref_1.ViewContainerRef;\r\nvar component_factory_1 = require('./linker/component_factory');\r\nexports.ComponentRef = component_factory_1.ComponentRef;\r\nexports.ComponentFactory = component_factory_1.ComponentFactory;\r\nvar exceptions_1 = require('./linker/exceptions');\r\nexports.ExpressionChangedAfterItHasBeenCheckedException = exceptions_1.ExpressionChangedAfterItHasBeenCheckedException;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwQkFBMEI7QUFDMUIsbUNBQWdDLDZCQUE2QixDQUFDO0FBQXRELG1FQUFzRDtBQUM5RCwyQkFBd0IscUJBQXFCLENBQUM7QUFBdEMsMkNBQXNDO0FBQzlDLHlDQUFxQyxtQ0FBbUMsQ0FBQztBQUFqRSxtRkFBaUU7QUFDekUsNEJBQXlCLHNCQUFzQixDQUFDO0FBQXhDLDhDQUF3QztBQUNoRCw2QkFBMEIsdUJBQXVCLENBQUM7QUFBMUMsaURBQTBDO0FBQ2xELHlCQUF1QyxtQkFBbUIsQ0FBQztBQUFuRCxxREFBZTtBQUFFLHFDQUFrQztBQUMzRCxtQ0FBK0IsNkJBQTZCLENBQUM7QUFBckQsaUVBQXFEO0FBQzdELGtDQUE2Qyw0QkFBNEIsQ0FBQztBQUFsRSx3REFBWTtBQUFFLGdFQUFvRDtBQUMxRSwyQkFBOEQscUJBQXFCLENBQUM7QUFBNUUsdUhBQTRFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHVibGljIEFQSSBmb3IgY29tcGlsZXJcbmV4cG9ydCB7Q29tcG9uZW50UmVzb2x2ZXJ9IGZyb20gJy4vbGlua2VyL2NvbXBvbmVudF9yZXNvbHZlcic7XG5leHBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnLi9saW5rZXIvcXVlcnlfbGlzdCc7XG5leHBvcnQge0R5bmFtaWNDb21wb25lbnRMb2FkZXJ9IGZyb20gJy4vbGlua2VyL2R5bmFtaWNfY29tcG9uZW50X2xvYWRlcic7XG5leHBvcnQge0VsZW1lbnRSZWZ9IGZyb20gJy4vbGlua2VyL2VsZW1lbnRfcmVmJztcbmV4cG9ydCB7VGVtcGxhdGVSZWZ9IGZyb20gJy4vbGlua2VyL3RlbXBsYXRlX3JlZic7XG5leHBvcnQge0VtYmVkZGVkVmlld1JlZiwgVmlld1JlZn0gZnJvbSAnLi9saW5rZXIvdmlld19yZWYnO1xuZXhwb3J0IHtWaWV3Q29udGFpbmVyUmVmfSBmcm9tICcuL2xpbmtlci92aWV3X2NvbnRhaW5lcl9yZWYnO1xuZXhwb3J0IHtDb21wb25lbnRSZWYsIENvbXBvbmVudEZhY3Rvcnl9IGZyb20gJy4vbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5JztcbmV4cG9ydCB7RXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFeGNlcHRpb259IGZyb20gJy4vbGlua2VyL2V4Y2VwdGlvbnMnOyJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar EventListener = (function () {\r\n function EventListener(name, callback) {\r\n this.name = name;\r\n this.callback = callback;\r\n }\r\n ;\r\n return EventListener;\r\n}());\r\nexports.EventListener = EventListener;\r\nvar DebugNode = (function () {\r\n function DebugNode(nativeNode, parent, _debugInfo) {\r\n this._debugInfo = _debugInfo;\r\n this.nativeNode = nativeNode;\r\n if (lang_1.isPresent(parent) && parent instanceof DebugElement) {\r\n parent.addChild(this);\r\n }\r\n else {\r\n this.parent = null;\r\n }\r\n this.listeners = [];\r\n }\r\n Object.defineProperty(DebugNode.prototype, \"injector\", {\r\n get: function () { return lang_1.isPresent(this._debugInfo) ? this._debugInfo.injector : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugNode.prototype, \"componentInstance\", {\r\n get: function () {\r\n return lang_1.isPresent(this._debugInfo) ? this._debugInfo.component : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugNode.prototype, \"locals\", {\r\n get: function () {\r\n return lang_1.isPresent(this._debugInfo) ? this._debugInfo.locals : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugNode.prototype, \"providerTokens\", {\r\n get: function () {\r\n return lang_1.isPresent(this._debugInfo) ? this._debugInfo.providerTokens : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DebugNode.prototype, \"source\", {\r\n get: function () { return lang_1.isPresent(this._debugInfo) ? this._debugInfo.source : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DebugNode.prototype.inject = function (token) { return this.injector.get(token); };\r\n DebugNode.prototype.getLocal = function (name) { return this.locals[name]; };\r\n return DebugNode;\r\n}());\r\nexports.DebugNode = DebugNode;\r\nvar DebugElement = (function (_super) {\r\n __extends(DebugElement, _super);\r\n function DebugElement(nativeNode, parent, _debugInfo) {\r\n _super.call(this, nativeNode, parent, _debugInfo);\r\n this.properties = {};\r\n this.attributes = {};\r\n this.childNodes = [];\r\n this.nativeElement = nativeNode;\r\n }\r\n DebugElement.prototype.addChild = function (child) {\r\n if (lang_1.isPresent(child)) {\r\n this.childNodes.push(child);\r\n child.parent = this;\r\n }\r\n };\r\n DebugElement.prototype.removeChild = function (child) {\r\n var childIndex = this.childNodes.indexOf(child);\r\n if (childIndex !== -1) {\r\n child.parent = null;\r\n this.childNodes.splice(childIndex, 1);\r\n }\r\n };\r\n DebugElement.prototype.insertChildrenAfter = function (child, newChildren) {\r\n var siblingIndex = this.childNodes.indexOf(child);\r\n if (siblingIndex !== -1) {\r\n var previousChildren = this.childNodes.slice(0, siblingIndex + 1);\r\n var nextChildren = this.childNodes.slice(siblingIndex + 1);\r\n this.childNodes =\r\n collection_1.ListWrapper.concat(collection_1.ListWrapper.concat(previousChildren, newChildren), nextChildren);\r\n for (var i = 0; i < newChildren.length; ++i) {\r\n var newChild = newChildren[i];\r\n if (lang_1.isPresent(newChild.parent)) {\r\n newChild.parent.removeChild(newChild);\r\n }\r\n newChild.parent = this;\r\n }\r\n }\r\n };\r\n DebugElement.prototype.query = function (predicate) {\r\n var results = this.queryAll(predicate);\r\n return results.length > 0 ? results[0] : null;\r\n };\r\n DebugElement.prototype.queryAll = function (predicate) {\r\n var matches = [];\r\n _queryElementChildren(this, predicate, matches);\r\n return matches;\r\n };\r\n DebugElement.prototype.queryAllNodes = function (predicate) {\r\n var matches = [];\r\n _queryNodeChildren(this, predicate, matches);\r\n return matches;\r\n };\r\n Object.defineProperty(DebugElement.prototype, \"children\", {\r\n get: function () {\r\n var children = [];\r\n this.childNodes.forEach(function (node) {\r\n if (node instanceof DebugElement) {\r\n children.push(node);\r\n }\r\n });\r\n return children;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DebugElement.prototype.triggerEventHandler = function (eventName, eventObj) {\r\n this.listeners.forEach(function (listener) {\r\n if (listener.name == eventName) {\r\n listener.callback(eventObj);\r\n }\r\n });\r\n };\r\n return DebugElement;\r\n}(DebugNode));\r\nexports.DebugElement = DebugElement;\r\nfunction asNativeElements(debugEls) {\r\n return debugEls.map(function (el) { return el.nativeElement; });\r\n}\r\nexports.asNativeElements = asNativeElements;\r\nfunction _queryElementChildren(element, predicate, matches) {\r\n element.childNodes.forEach(function (node) {\r\n if (node instanceof DebugElement) {\r\n if (predicate(node)) {\r\n matches.push(node);\r\n }\r\n _queryElementChildren(node, predicate, matches);\r\n }\r\n });\r\n}\r\nfunction _queryNodeChildren(parentNode, predicate, matches) {\r\n if (parentNode instanceof DebugElement) {\r\n parentNode.childNodes.forEach(function (node) {\r\n if (predicate(node)) {\r\n matches.push(node);\r\n }\r\n if (node instanceof DebugElement) {\r\n _queryNodeChildren(node, predicate, matches);\r\n }\r\n });\r\n }\r\n}\r\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\r\nvar _nativeNodeToDebugNode = new Map();\r\nfunction getDebugNode(nativeNode) {\r\n return _nativeNodeToDebugNode.get(nativeNode);\r\n}\r\nexports.getDebugNode = getDebugNode;\r\nfunction getAllDebugNodes() {\r\n return collection_1.MapWrapper.values(_nativeNodeToDebugNode);\r\n}\r\nexports.getAllDebugNodes = getAllDebugNodes;\r\nfunction indexDebugNode(node) {\r\n _nativeNodeToDebugNode.set(node.nativeNode, node);\r\n}\r\nexports.indexDebugNode = indexDebugNode;\r\nfunction removeDebugNodeFromIndex(node) {\r\n _nativeNodeToDebugNode.delete(node.nativeNode);\r\n}\r\nexports.removeDebugNodeFromIndex = removeDebugNodeFromIndex;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2RlYnVnL2RlYnVnX25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscUJBQThCLDBCQUEwQixDQUFDLENBQUE7QUFDekQsMkJBQWlELGdDQUFnQyxDQUFDLENBQUE7QUFJbEY7SUFBNkIsdUJBQW1CLElBQVksRUFBUyxRQUFrQjtRQUF2QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFFLENBQUM7O0lBQUUsb0JBQUM7QUFBRCxDQUFDLEFBQTdGLElBQTZGO0FBQWhGLHFCQUFhLGdCQUFtRSxDQUFBO0FBRTdGO0lBS0UsbUJBQVksVUFBZSxFQUFFLE1BQWlCLEVBQVUsVUFBMkI7UUFBM0IsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFDakYsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsc0JBQUksK0JBQVE7YUFBWixjQUEyQixNQUFNLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFakcsc0JBQUksd0NBQWlCO2FBQXJCO1lB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QUFDcEQsQ0FBQztBQUZlLHNCQUFjLGlCQUU3QixDQUFBO0FBRUQsa0NBQXlDLElBQWU7SUFDdEQsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRmUsZ0NBQXdCLDJCQUV2QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIFR5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1ByZWRpY2F0ZSwgTGlzdFdyYXBwZXIsIE1hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1JlbmRlckRlYnVnSW5mb30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaSc7XG5cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RlbmVyIHsgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGNhbGxiYWNrOiBGdW5jdGlvbil7fTsgfVxuXG5leHBvcnQgY2xhc3MgRGVidWdOb2RlIHtcbiAgbmF0aXZlTm9kZTogYW55O1xuICBsaXN0ZW5lcnM6IEV2ZW50TGlzdGVuZXJbXTtcbiAgcGFyZW50OiBEZWJ1Z0VsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IobmF0aXZlTm9kZTogYW55LCBwYXJlbnQ6IERlYnVnTm9kZSwgcHJpdmF0ZSBfZGVidWdJbmZvOiBSZW5kZXJEZWJ1Z0luZm8pIHtcbiAgICB0aGlzLm5hdGl2ZU5vZGUgPSBuYXRpdmVOb2RlO1xuICAgIGlmIChpc1ByZXNlbnQocGFyZW50KSAmJiBwYXJlbnQgaW5zdGFuY2VvZiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgIHBhcmVudC5hZGRDaGlsZCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmxpc3RlbmVycyA9IFtdO1xuICB9XG5cbiAgZ2V0IGluamVjdG9yKCk6IEluamVjdG9yIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9kZWJ1Z0luZm8pID8gdGhpcy5fZGVidWdJbmZvLmluamVjdG9yIDogbnVsbDsgfVxuXG4gIGdldCBjb21wb25lbnRJbnN0YW5jZSgpOiBhbnkge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fZGVidWdJbmZvKSA/IHRoaXMuX2RlYnVnSW5mby5jb21wb25lbnQgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGxvY2FscygpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9kZWJ1Z0luZm8pID8gdGhpcy5fZGVidWdJbmZvLmxvY2FscyA6IG51bGw7XG4gIH1cblxuICBnZXQgcHJvdmlkZXJUb2tlbnMoKTogYW55W10ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fZGVidWdJbmZvKSA/IHRoaXMuX2RlYnVnSW5mby5wcm92aWRlclRva2VucyA6IG51bGw7XG4gIH1cblxuICBnZXQgc291cmNlKCk6IHN0cmluZyB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5fZGVidWdJbmZvKSA/IHRoaXMuX2RlYnVnSW5mby5zb3VyY2UgOiBudWxsOyB9XG5cbiAgaW5qZWN0KHRva2VuOiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQodG9rZW4pOyB9XG5cbiAgZ2V0TG9jYWwobmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMubG9jYWxzW25hbWVdOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z0VsZW1lbnQgZXh0ZW5kcyBEZWJ1Z05vZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICBhdHRyaWJ1dGVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgY2hpbGROb2RlczogRGVidWdOb2RlW107XG4gIG5hdGl2ZUVsZW1lbnQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihuYXRpdmVOb2RlOiBhbnksIHBhcmVudDogYW55LCBfZGVidWdJbmZvOiBSZW5kZXJEZWJ1Z0luZm8pIHtcbiAgICBzdXBlcihuYXRpdmVOb2RlLCBwYXJlbnQsIF9kZWJ1Z0luZm8pO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdO1xuICAgIHRoaXMubmF0aXZlRWxlbWVudCA9IG5hdGl2ZU5vZGU7XG4gIH1cblxuICBhZGRDaGlsZChjaGlsZDogRGVidWdOb2RlKSB7XG4gICAgaWYgKGlzUHJlc2VudChjaGlsZCkpIHtcbiAgICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKTtcbiAgICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQ2hpbGQoY2hpbGQ6IERlYnVnTm9kZSkge1xuICAgIHZhciBjaGlsZEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoY2hpbGQpO1xuICAgIGlmIChjaGlsZEluZGV4ICE9PSAtMSkge1xuICAgICAgY2hpbGQucGFyZW50ID0gbnVsbDtcbiAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoY2hpbGRJbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgaW5zZXJ0Q2hpbGRyZW5BZnRlcihjaGlsZDogRGVidWdOb2RlLCBuZXdDaGlsZHJlbjogRGVidWdOb2RlW10pIHtcbiAgICB2YXIgc2libGluZ0luZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoY2hpbGQpO1xuICAgIGlmIChzaWJsaW5nSW5kZXggIT09IC0xKSB7XG4gICAgICB2YXIgcHJldmlvdXNDaGlsZHJlbiA9IHRoaXMuY2hpbGROb2Rlcy5zbGljZSgwLCBzaWJsaW5nSW5kZXggKyAxKTtcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW4gPSB0aGlzLmNoaWxkTm9kZXMuc2xpY2Uoc2libGluZ0luZGV4ICsgMSk7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMgPVxuICAgICAgICAgIExpc3RXcmFwcGVyLmNvbmNhdChMaXN0V3JhcHBlci5jb25jYXQocHJldmlvdXNDaGlsZHJlbiwgbmV3Q2hpbGRyZW4pLCBuZXh0Q2hpbGRyZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgbmV3Q2hpbGQgPSBuZXdDaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGlzUHJlc2VudChuZXdDaGlsZC5wYXJlbnQpKSB7XG4gICAgICAgICAgbmV3Q2hpbGQucGFyZW50LnJlbW92ZUNoaWxkKG5ld0NoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDaGlsZC5wYXJlbnQgPSB0aGlzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHF1ZXJ5KHByZWRpY2F0ZTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4pOiBEZWJ1Z0VsZW1lbnQge1xuICAgIHZhciByZXN1bHRzID0gdGhpcy5xdWVyeUFsbChwcmVkaWNhdGUpO1xuICAgIHJldHVybiByZXN1bHRzLmxlbmd0aCA+IDAgPyByZXN1bHRzWzBdIDogbnVsbDtcbiAgfVxuXG4gIHF1ZXJ5QWxsKHByZWRpY2F0ZTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4pOiBEZWJ1Z0VsZW1lbnRbXSB7XG4gICAgdmFyIG1hdGNoZXM6IERlYnVnRWxlbWVudFtdID0gW107XG4gICAgX3F1ZXJ5RWxlbWVudENoaWxkcmVuKHRoaXMsIHByZWRpY2F0ZSwgbWF0Y2hlcyk7XG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBxdWVyeUFsbE5vZGVzKHByZWRpY2F0ZTogUHJlZGljYXRlPERlYnVnTm9kZT4pOiBEZWJ1Z05vZGVbXSB7XG4gICAgdmFyIG1hdGNoZXM6IERlYnVnTm9kZVtdID0gW107XG4gICAgX3F1ZXJ5Tm9kZUNoaWxkcmVuKHRoaXMsIHByZWRpY2F0ZSwgbWF0Y2hlcyk7XG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBnZXQgY2hpbGRyZW4oKTogRGVidWdFbGVtZW50W10ge1xuICAgIHZhciBjaGlsZHJlbjogRGVidWdFbGVtZW50W10gPSBbXTtcbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cblxuICB0cmlnZ2VyRXZlbnRIYW5kbGVyKGV2ZW50TmFtZTogc3RyaW5nLCBldmVudE9iajogYW55KSB7XG4gICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgIGlmIChsaXN0ZW5lci5uYW1lID09IGV2ZW50TmFtZSkge1xuICAgICAgICBsaXN0ZW5lci5jYWxsYmFjayhldmVudE9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzTmF0aXZlRWxlbWVudHMoZGVidWdFbHM6IERlYnVnRWxlbWVudFtdKTogYW55IHtcbiAgcmV0dXJuIGRlYnVnRWxzLm1hcCgoZWwpID0+IGVsLm5hdGl2ZUVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBfcXVlcnlFbGVtZW50Q2hpbGRyZW4oZWxlbWVudDogRGVidWdFbGVtZW50LCBwcmVkaWNhdGU6IFByZWRpY2F0ZTxEZWJ1Z0VsZW1lbnQ+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IERlYnVnRWxlbWVudFtdKSB7XG4gIGVsZW1lbnQuY2hpbGROb2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgIGlmIChub2RlIGluc3RhbmNlb2YgRGVidWdFbGVtZW50KSB7XG4gICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgIG1hdGNoZXMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICAgIF9xdWVyeUVsZW1lbnRDaGlsZHJlbihub2RlLCBwcmVkaWNhdGUsIG1hdGNoZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIF9xdWVyeU5vZGVDaGlsZHJlbihwYXJlbnROb2RlOiBEZWJ1Z05vZGUsIHByZWRpY2F0ZTogUHJlZGljYXRlPERlYnVnTm9kZT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlczogRGVidWdOb2RlW10pIHtcbiAgaWYgKHBhcmVudE5vZGUgaW5zdGFuY2VvZiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGlmIChwcmVkaWNhdGUobm9kZSkpIHtcbiAgICAgICAgbWF0Y2hlcy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgICAgX3F1ZXJ5Tm9kZUNoaWxkcmVuKG5vZGUsIHByZWRpY2F0ZSwgbWF0Y2hlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gTmVlZCB0byBrZWVwIHRoZSBub2RlcyBpbiBhIGdsb2JhbCBNYXAgc28gdGhhdCBtdWx0aXBsZSBhbmd1bGFyIGFwcHMgYXJlIHN1cHBvcnRlZC5cbnZhciBfbmF0aXZlTm9kZVRvRGVidWdOb2RlID0gbmV3IE1hcDxhbnksIERlYnVnTm9kZT4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnTm9kZShuYXRpdmVOb2RlOiBhbnkpOiBEZWJ1Z05vZGUge1xuICByZXR1cm4gX25hdGl2ZU5vZGVUb0RlYnVnTm9kZS5nZXQobmF0aXZlTm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxEZWJ1Z05vZGVzKCk6IERlYnVnTm9kZVtdIHtcbiAgcmV0dXJuIE1hcFdyYXBwZXIudmFsdWVzKF9uYXRpdmVOb2RlVG9EZWJ1Z05vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhEZWJ1Z05vZGUobm9kZTogRGVidWdOb2RlKSB7XG4gIF9uYXRpdmVOb2RlVG9EZWJ1Z05vZGUuc2V0KG5vZGUubmF0aXZlTm9kZSwgbm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEZWJ1Z05vZGVGcm9tSW5kZXgobm9kZTogRGVidWdOb2RlKSB7XG4gIF9uYXRpdmVOb2RlVG9EZWJ1Z05vZGUuZGVsZXRlKG5vZGUubmF0aXZlTm9kZSk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * Change detection enables data binding in Angular.\r\n */\r\n\"use strict\";\r\nvar change_detection_1 = require('./change_detection/change_detection');\r\nexports.ChangeDetectionStrategy = change_detection_1.ChangeDetectionStrategy;\r\nexports.ChangeDetectorRef = change_detection_1.ChangeDetectorRef;\r\nexports.WrappedValue = change_detection_1.WrappedValue;\r\nexports.SimpleChange = change_detection_1.SimpleChange;\r\nexports.IterableDiffers = change_detection_1.IterableDiffers;\r\nexports.KeyValueDiffers = change_detection_1.KeyValueDiffers;\r\nexports.CollectionChangeRecord = change_detection_1.CollectionChangeRecord;\r\nexports.KeyValueChangeRecord = change_detection_1.KeyValueChangeRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRzs7QUFFSCxpQ0FpQk8scUNBQXFDLENBQUM7QUFoQjNDLDZFQUF1QjtBQUV2QixpRUFBaUI7QUFFakIsdURBQVk7QUFDWix1REFBWTtBQUVaLDZEQUFlO0FBR2YsNkRBQWU7QUFHZiwyRUFBc0I7QUFDdEIsdUVBRTJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlXG4gKiBAZGVzY3JpcHRpb25cbiAqIENoYW5nZSBkZXRlY3Rpb24gZW5hYmxlcyBkYXRhIGJpbmRpbmcgaW4gQW5ndWxhci5cbiAqL1xuXG5leHBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblxuICBDaGFuZ2VEZXRlY3RvclJlZixcblxuICBXcmFwcGVkVmFsdWUsXG4gIFNpbXBsZUNoYW5nZSxcbiAgUGlwZVRyYW5zZm9ybSxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBJdGVyYWJsZURpZmZlcixcbiAgSXRlcmFibGVEaWZmZXJGYWN0b3J5LFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlckZhY3RvcnksXG4gIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsXG4gIEtleVZhbHVlQ2hhbmdlUmVjb3JkLFxuICBUcmFja0J5Rm5cbn0gZnJvbSAnLi9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar di_1 = require(\"angular2/src/core/di\");\r\nvar lang_1 = require(\"angular2/src/facade/lang\");\r\n/**\r\n * A token that can be provided when bootstraping an application to make an array of directives\r\n * available in every component of the application.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * import {PLATFORM_DIRECTIVES} from 'angular2/core';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * template: `\r\n * <!-- can use other directive even though the component does not list it in `directives` -->\r\n * <other-directive></other-directive>\r\n * `\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n *\r\n * bootstrap(MyComponent, [provide(PLATFORM_DIRECTIVES, {useValue: [OtherDirective], multi:true})]);\r\n * ```\r\n */\r\nexports.PLATFORM_DIRECTIVES = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Platform Directives\"));\r\n/**\r\n * A token that can be provided when bootstraping an application to make an array of pipes\r\n * available in every component of the application.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * import {PLATFORM_PIPES} from 'angular2/core';\r\n * import {OtherPipe} from './myPipe';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * template: `\r\n * {{123 | other-pipe}}\r\n * `\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n *\r\n * bootstrap(MyComponent, [provide(PLATFORM_PIPES, {useValue: [OtherPipe], multi:true})]);\r\n * ```\r\n */\r\nexports.PLATFORM_PIPES = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Platform Pipes\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm1fZGlyZWN0aXZlc19hbmRfcGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9wbGF0Zm9ybV9kaXJlY3RpdmVzX2FuZF9waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQTBCLHNCQUFzQixDQUFDLENBQUE7QUFDakQscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ1UsMkJBQW1CLEdBQWdCLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztBQUVuRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNVLHNCQUFjLEdBQWdCLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3BhcXVlVG9rZW59IGZyb20gXCJhbmd1bGFyMi9zcmMvY29yZS9kaVwiO1xuaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nXCI7XG5cbi8qKlxuICogQSB0b2tlbiB0aGF0IGNhbiBiZSBwcm92aWRlZCB3aGVuIGJvb3RzdHJhcGluZyBhbiBhcHBsaWNhdGlvbiB0byBtYWtlIGFuIGFycmF5IG9mIGRpcmVjdGl2ZXNcbiAqIGF2YWlsYWJsZSBpbiBldmVyeSBjb21wb25lbnQgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHtQTEFURk9STV9ESVJFQ1RJVkVTfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbiAqIGltcG9ydCB7T3RoZXJEaXJlY3RpdmV9IGZyb20gJy4vbXlEaXJlY3RpdmVzJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1jb21wb25lbnQnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDwhLS0gY2FuIHVzZSBvdGhlciBkaXJlY3RpdmUgZXZlbiB0aG91Z2ggdGhlIGNvbXBvbmVudCBkb2VzIG5vdCBsaXN0IGl0IGluIGBkaXJlY3RpdmVzYCAtLT5cbiAqICAgICA8b3RoZXItZGlyZWN0aXZlPjwvb3RoZXItZGlyZWN0aXZlPlxuICogICBgXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgLi4uXG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKE15Q29tcG9uZW50LCBbcHJvdmlkZShQTEFURk9STV9ESVJFQ1RJVkVTLCB7dXNlVmFsdWU6IFtPdGhlckRpcmVjdGl2ZV0sIG11bHRpOnRydWV9KV0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STV9ESVJFQ1RJVkVTOiBPcGFxdWVUb2tlbiA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiUGxhdGZvcm0gRGlyZWN0aXZlc1wiKSk7XG5cbi8qKlxuICogQSB0b2tlbiB0aGF0IGNhbiBiZSBwcm92aWRlZCB3aGVuIGJvb3RzdHJhcGluZyBhbiBhcHBsaWNhdGlvbiB0byBtYWtlIGFuIGFycmF5IG9mIHBpcGVzXG4gKiBhdmFpbGFibGUgaW4gZXZlcnkgY29tcG9uZW50IG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7UExBVEZPUk1fUElQRVN9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuICogaW1wb3J0IHtPdGhlclBpcGV9IGZyb20gJy4vbXlQaXBlJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1jb21wb25lbnQnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIHt7MTIzIHwgb3RoZXItcGlwZX19XG4gKiAgIGBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICAuLi5cbiAqIH1cbiAqXG4gKiBib290c3RyYXAoTXlDb21wb25lbnQsIFtwcm92aWRlKFBMQVRGT1JNX1BJUEVTLCB7dXNlVmFsdWU6IFtPdGhlclBpcGVdLCBtdWx0aTp0cnVlfSldKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgUExBVEZPUk1fUElQRVM6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJQbGF0Zm9ybSBQaXBlc1wiKSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar console_1 = require('angular2/src/core/console');\r\nvar reflection_1 = require('./reflection/reflection');\r\nvar reflector_reader_1 = require('./reflection/reflector_reader');\r\nvar testability_1 = require('angular2/src/core/testability/testability');\r\nvar application_ref_1 = require('./application_ref');\r\nfunction _reflector() {\r\n return reflection_1.reflector;\r\n}\r\n/**\r\n * A default set of providers which should be included in any Angular platform.\r\n */\r\nexports.PLATFORM_COMMON_PROVIDERS = lang_1.CONST_EXPR([\r\n application_ref_1.PLATFORM_CORE_PROVIDERS,\r\n new di_1.Provider(reflection_1.Reflector, { useFactory: _reflector, deps: [] }),\r\n new di_1.Provider(reflector_reader_1.ReflectorReader, { useExisting: reflection_1.Reflector }),\r\n testability_1.TestabilityRegistry,\r\n console_1.Console\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm1fY29tbW9uX3Byb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3BsYXRmb3JtX2NvbW1vbl9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUFzRSwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pHLG1CQUF1RCxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlFLHdCQUFzQiwyQkFBMkIsQ0FBQyxDQUFBO0FBQ2xELDJCQUFtQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQzdELGlDQUE4QiwrQkFBK0IsQ0FBQyxDQUFBO0FBQzlELDRCQUFrQywyQ0FBMkMsQ0FBQyxDQUFBO0FBQzlFLGdDQUFzQyxtQkFBbUIsQ0FBQyxDQUFBO0FBRTFEO0lBQ0UsTUFBTSxDQUFDLHNCQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOztHQUVHO0FBQ1UsaUNBQXlCLEdBQW1DLGlCQUFVLENBQUM7SUFDbEYseUNBQXVCO0lBQ3ZCLElBQUksYUFBUSxDQUFDLHNCQUFTLEVBQUUsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUMzRCxJQUFJLGFBQVEsQ0FBQyxrQ0FBZSxFQUFFLEVBQUMsV0FBVyxFQUFFLHNCQUFTLEVBQUMsQ0FBQztJQUN2RCxpQ0FBbUI7SUFDbkIsaUJBQU87Q0FDUixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGUsIGlzQmxhbmssIGlzUHJlc2VudCwgYXNzZXJ0aW9uc0VuYWJsZWQsIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3Byb3ZpZGUsIFByb3ZpZGVyLCBJbmplY3RvciwgT3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7Q29uc29sZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY29uc29sZSc7XG5pbXBvcnQge1JlZmxlY3RvciwgcmVmbGVjdG9yfSBmcm9tICcuL3JlZmxlY3Rpb24vcmVmbGVjdGlvbic7XG5pbXBvcnQge1JlZmxlY3RvclJlYWRlcn0gZnJvbSAnLi9yZWZsZWN0aW9uL3JlZmxlY3Rvcl9yZWFkZXInO1xuaW1wb3J0IHtUZXN0YWJpbGl0eVJlZ2lzdHJ5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS90ZXN0YWJpbGl0eS90ZXN0YWJpbGl0eSc7XG5pbXBvcnQge1BMQVRGT1JNX0NPUkVfUFJPVklERVJTfSBmcm9tICcuL2FwcGxpY2F0aW9uX3JlZic7XG5cbmZ1bmN0aW9uIF9yZWZsZWN0b3IoKTogUmVmbGVjdG9yIHtcbiAgcmV0dXJuIHJlZmxlY3Rvcjtcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgc2V0IG9mIHByb3ZpZGVycyB3aGljaCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gYW55IEFuZ3VsYXIgcGxhdGZvcm0uXG4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STV9DT01NT05fUFJPVklERVJTOiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4gPSBDT05TVF9FWFBSKFtcbiAgUExBVEZPUk1fQ09SRV9QUk9WSURFUlMsXG4gIG5ldyBQcm92aWRlcihSZWZsZWN0b3IsIHt1c2VGYWN0b3J5OiBfcmVmbGVjdG9yLCBkZXBzOiBbXX0pLFxuICBuZXcgUHJvdmlkZXIoUmVmbGVjdG9yUmVhZGVyLCB7dXNlRXhpc3Rpbmc6IFJlZmxlY3Rvcn0pLFxuICBUZXN0YWJpbGl0eVJlZ2lzdHJ5LFxuICBDb25zb2xlXG5dKTsiXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * Stores error information; delivered via [NgZone.onError] stream.\r\n */\r\nvar NgZoneError = (function () {\r\n function NgZoneError(error, stackTrace) {\r\n this.error = error;\r\n this.stackTrace = stackTrace;\r\n }\r\n return NgZoneError;\r\n}());\r\nexports.NgZoneError = NgZoneError;\r\nvar NgZoneImpl = (function () {\r\n function NgZoneImpl(_a) {\r\n var _this = this;\r\n var trace = _a.trace, onEnter = _a.onEnter, onLeave = _a.onLeave, setMicrotask = _a.setMicrotask, setMacrotask = _a.setMacrotask, onError = _a.onError;\r\n this.onEnter = onEnter;\r\n this.onLeave = onLeave;\r\n this.setMicrotask = setMicrotask;\r\n this.setMacrotask = setMacrotask;\r\n this.onError = onError;\r\n if (Zone) {\r\n this.outer = this.inner = Zone.current;\r\n if (Zone['wtfZoneSpec']) {\r\n this.inner = this.inner.fork(Zone['wtfZoneSpec']);\r\n }\r\n if (trace && Zone['longStackTraceZoneSpec']) {\r\n this.inner = this.inner.fork(Zone['longStackTraceZoneSpec']);\r\n }\r\n this.inner = this.inner.fork({\r\n name: 'angular',\r\n properties: { 'isAngularZone': true },\r\n onInvokeTask: function (delegate, current, target, task, applyThis, applyArgs) {\r\n try {\r\n _this.onEnter();\r\n return delegate.invokeTask(target, task, applyThis, applyArgs);\r\n }\r\n finally {\r\n _this.onLeave();\r\n }\r\n },\r\n onInvoke: function (delegate, current, target, callback, applyThis, applyArgs, source) {\r\n try {\r\n _this.onEnter();\r\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\r\n }\r\n finally {\r\n _this.onLeave();\r\n }\r\n },\r\n onHasTask: function (delegate, current, target, hasTaskState) {\r\n delegate.hasTask(target, hasTaskState);\r\n if (current == target) {\r\n // We are only interested in hasTask events which originate from our zone\r\n // (A child hasTask event is not interesting to us)\r\n if (hasTaskState.change == 'microTask') {\r\n _this.setMicrotask(hasTaskState.microTask);\r\n }\r\n else if (hasTaskState.change == 'macroTask') {\r\n _this.setMacrotask(hasTaskState.macroTask);\r\n }\r\n }\r\n },\r\n onHandleError: function (delegate, current, target, error) {\r\n delegate.handleError(target, error);\r\n _this.onError(new NgZoneError(error, error.stack));\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n throw new Error('Angular2 needs to be run with Zone.js polyfill.');\r\n }\r\n }\r\n NgZoneImpl.isInAngularZone = function () { return Zone.current.get('isAngularZone') === true; };\r\n NgZoneImpl.prototype.runInner = function (fn) { return this.inner.run(fn); };\r\n ;\r\n NgZoneImpl.prototype.runInnerGuarded = function (fn) { return this.inner.runGuarded(fn); };\r\n ;\r\n NgZoneImpl.prototype.runOuter = function (fn) { return this.outer.run(fn); };\r\n ;\r\n return NgZoneImpl;\r\n}());\r\nexports.NgZoneImpl = NgZoneImpl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfem9uZV9pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvem9uZS9uZ196b25lX2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBOztHQUVHO0FBQ0g7SUFDRSxxQkFBbUIsS0FBVSxFQUFTLFVBQWU7UUFBbEMsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUFTLGVBQVUsR0FBVixVQUFVLENBQUs7SUFBRyxDQUFDO0lBQzNELGtCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFGWSxtQkFBVyxjQUV2QixDQUFBO0FBR0Q7SUFjRSxvQkFBWSxFQU9YO1FBckJILGlCQXlGQztZQTNFYyxnQkFBSyxFQUFFLG9CQUFPLEVBQUUsb0JBQU8sRUFBRSw4QkFBWSxFQUFFLDhCQUFZLEVBQUUsb0JBQU87UUFRdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELEVBQUUsQ0FBQyxDQUFDLEtB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TSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7SUFDM0Qsb0NBQWUsR0FBZixVQUFnQixFQUFhLElBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7SUFDekUsNkJBQVEsR0FBUixVQUFTLEVBQWEsSUFBUyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDOztJQUM3RCxpQkFBQztBQUFELENBQUMsQUF6RkQsSUF5RkM7QUF6Rlksa0JBQVUsYUF5RnRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dsb2JhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBTdG9yZXMgZXJyb3IgaW5mb3JtYXRpb247IGRlbGl2ZXJlZCB2aWEgW05nWm9uZS5vbkVycm9yXSBzdHJlYW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ1pvbmVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlcnJvcjogYW55LCBwdWJsaWMgc3RhY2tUcmFjZTogYW55KSB7fVxufVxuXG5cbmV4cG9ydCBjbGFzcyBOZ1pvbmVJbXBsIHtcbiAgc3RhdGljIGlzSW5Bbmd1bGFyWm9uZSgpOiBib29sZWFuIHsgcmV0dXJuIFpvbmUuY3VycmVudC5nZXQoJ2lzQW5ndWxhclpvbmUnKSA9PT0gdHJ1ZTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBvdXRlcjogWm9uZTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGlubmVyOiBab25lO1xuXG4gIHByaXZhdGUgb25FbnRlcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbkxlYXZlOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHNldE1pY3JvdGFzazogKGhhc01pY3JvdGFza3M6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHByaXZhdGUgc2V0TWFjcm90YXNrOiAoaGFzTWFjcm90YXNrczogYm9vbGVhbikgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbkVycm9yOiAoZXJyb3I6IE5nWm9uZUVycm9yKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHt0cmFjZSwgb25FbnRlciwgb25MZWF2ZSwgc2V0TWljcm90YXNrLCBzZXRNYWNyb3Rhc2ssIG9uRXJyb3J9OiB7XG4gICAgdHJhY2U6IGJvb2xlYW4sXG4gICAgb25FbnRlcjogKCkgPT4gdm9pZCxcbiAgICBvbkxlYXZlOiAoKSA9PiB2b2lkLFxuICAgIHNldE1pY3JvdGFzazogKGhhc01pY3JvdGFza3M6IGJvb2xlYW4pID0+IHZvaWQsXG4gICAgc2V0TWFjcm90YXNrOiAoaGFzTWFjcm90YXNrczogYm9vbGVhbikgPT4gdm9pZCxcbiAgICBvbkVycm9yOiAoZXJyb3I6IE5nWm9uZUVycm9yKSA9PiB2b2lkXG4gIH0pIHtcbiAgICB0aGlzLm9uRW50ZXIgPSBvbkVudGVyO1xuICAgIHRoaXMub25MZWF2ZSA9IG9uTGVhdmU7XG4gICAgdGhpcy5zZXRNaWNyb3Rhc2sgPSBzZXRNaWNyb3Rhc2s7XG4gICAgdGhpcy5zZXRNYWNyb3Rhc2sgPSBzZXRNYWNyb3Rhc2s7XG4gICAgdGhpcy5vbkVycm9yID0gb25FcnJvcjtcblxuICAgIGlmIChab25lKSB7XG4gICAgICB0aGlzLm91dGVyID0gdGhpcy5pbm5lciA9IFpvbmUuY3VycmVudDtcbiAgICAgIGlmIChab25lWyd3dGZab25lU3BlYyddKSB7XG4gICAgICAgIHRoaXMuaW5uZXIgPSB0aGlzLmlubmVyLmZvcmsoWm9uZVsnd3RmWm9uZVNwZWMnXSk7XG4gICAgICB9XG4gICAgICBpZiAodHJhY2UgJiYgWm9uZVsnbG9uZ1N0YWNrVHJhY2Vab25lU3BlYyddKSB7XG4gICAgICAgIHRoaXMuaW5uZXIgPSB0aGlzLmlubmVyLmZvcmsoWm9uZVsnbG9uZ1N0YWNrVHJhY2Vab25lU3BlYyddKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5uZXIgPSB0aGlzLmlubmVyLmZvcmsoe1xuICAgICAgICBuYW1lOiAnYW5ndWxhcicsXG4gICAgICAgIHByb3BlcnRpZXM6PGFueT57J2lzQW5ndWxhclpvbmUnOiB0cnVlfSxcbiAgICAgICAgb25JbnZva2VUYXNrOiAoZGVsZWdhdGU6IFpvbmVEZWxlZ2F0ZSwgY3VycmVudDogWm9uZSwgdGFyZ2V0OiBab25lLCB0YXNrOiBUYXNrLFxuICAgICAgICAgICAgICAgICAgICAgICBhcHBseVRoaXM6IGFueSwgYXBwbHlBcmdzOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm9uRW50ZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5pbnZva2VUYXNrKHRhcmdldCwgdGFzaywgYXBwbHlUaGlzLCBhcHBseUFyZ3MpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLm9uTGVhdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cblxuICAgICAgICBvbkludm9rZTogKGRlbGVnYXRlOiBab25lRGVsZWdhdGUsIGN1cnJlbnQ6IFpvbmUsIHRhcmdldDogWm9uZSwgY2FsbGJhY2s6IEZ1bmN0aW9uLFxuICAgICAgICAgICAgICAgICAgIGFwcGx5VGhpczogYW55LCBhcHBseUFyZ3M6IGFueVtdLCBzb3VyY2U6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMub25FbnRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmludm9rZSh0YXJnZXQsIGNhbGxiYWNrLCBhcHBseVRoaXMsIGFwcGx5QXJncywgc291cmNlKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG9uSGFzVGFzazpcbiAgICAgICAgICAgIChkZWxlZ2F0ZTogWm9uZURlbGVnYXRlLCBjdXJyZW50OiBab25lLCB0YXJnZXQ6IFpvbmUsIGhhc1Rhc2tTdGF0ZTogSGFzVGFza1N0YXRlKSA9PiB7XG4gICAgICAgICAgICAgIGRlbGVnYXRlLmhhc1Rhc2sodGFyZ2V0LCBoYXNUYXNrU3RhdGUpO1xuICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGhhc1Rhc2sgZXZlbnRzIHdoaWNoIG9yaWdpbmF0ZSBmcm9tIG91ciB6b25lXG4gICAgICAgICAgICAgICAgLy8gKEEgY2hpbGQgaGFzVGFzayBldmVudCBpcyBub3QgaW50ZXJlc3RpbmcgdG8gdXMpXG4gICAgICAgICAgICAgICAgaWYgKGhhc1Rhc2tTdGF0ZS5jaGFuZ2UgPT0gJ21pY3JvVGFzaycpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TWljcm90YXNrKGhhc1Rhc2tTdGF0ZS5taWNyb1Rhc2spO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzVGFza1N0YXRlLmNoYW5nZSA9PSAnbWFjcm9UYXNrJykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRNYWNyb3Rhc2soaGFzVGFza1N0YXRlLm1hY3JvVGFzayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgIG9uSGFuZGxlRXJyb3I6IChkZWxlZ2F0ZTogWm9uZURlbGVnYXRlLCBjdXJyZW50OiBab25lLCB0YXJnZXQ6IFpvbmUsIGVycm9yOiBhbnkpOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmhhbmRsZUVycm9yKHRhcmdldCwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IobmV3IE5nWm9uZUVycm9yKGVycm9yLCBlcnJvci5zdGFjaykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbmd1bGFyMiBuZWVkcyB0byBiZSBydW4gd2l0aCBab25lLmpzIHBvbHlmaWxsLicpO1xuICAgIH1cbiAgfVxuXG4gIHJ1bklubmVyKGZuOiAoKSA9PiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5pbm5lci5ydW4oZm4pOyB9O1xuICBydW5Jbm5lckd1YXJkZWQoZm46ICgpID0+IGFueSk6IGFueSB7IHJldHVybiB0aGlzLmlubmVyLnJ1bkd1YXJkZWQoZm4pOyB9O1xuICBydW5PdXRlcihmbjogKCkgPT4gYW55KTogYW55IHsgcmV0dXJuIHRoaXMub3V0ZXIucnVuKGZuKTsgfTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar ng_zone_impl_1 = require('./ng_zone_impl');\r\nvar exceptions_1 = require('../../facade/exceptions');\r\nvar ng_zone_impl_2 = require('./ng_zone_impl');\r\nexports.NgZoneError = ng_zone_impl_2.NgZoneError;\r\n/**\r\n * An injectable service for executing work inside or outside of the Angular zone.\r\n *\r\n * The most common use of this service is to optimize performance when starting a work consisting of\r\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\r\n * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks\r\n * can reenter the Angular zone via {@link #run}.\r\n *\r\n * <!-- TODO: add/fix links to:\r\n * - docs explaining zones and the use of zones in Angular and change-detection\r\n * - link to runOutsideAngular/run (throughout this file!)\r\n * -->\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/lY9m8HLy7z06vDoUaSN2?p=preview))\r\n * ```\r\n * import {Component, View, NgZone} from 'angular2/core';\r\n * import {NgIf} from 'angular2/common';\r\n *\r\n * @Component({\r\n * selector: 'ng-zone-demo'.\r\n * template: `\r\n * <h2>Demo: NgZone</h2>\r\n *\r\n * <p>Progress: {{progress}}%</p>\r\n * <p *ngIf=\"progress >= 100\">Done processing {{label}} of Angular zone!</p>\r\n *\r\n * <button (click)=\"processWithinAngularZone()\">Process within Angular zone</button>\r\n * <button (click)=\"processOutsideOfAngularZone()\">Process outside of Angular zone</button>\r\n * `,\r\n * directives: [NgIf]\r\n * })\r\n * export class NgZoneDemo {\r\n * progress: number = 0;\r\n * label: string;\r\n *\r\n * constructor(private _ngZone: NgZone) {}\r\n *\r\n * // Loop inside the Angular zone\r\n * // so the UI DOES refresh after each setTimeout cycle\r\n * processWithinAngularZone() {\r\n * this.label = 'inside';\r\n * this.progress = 0;\r\n * this._increaseProgress(() => console.log('Inside Done!'));\r\n * }\r\n *\r\n * // Loop outside of the Angular zone\r\n * // so the UI DOES NOT refresh after each setTimeout cycle\r\n * processOutsideOfAngularZone() {\r\n * this.label = 'outside';\r\n * this.progress = 0;\r\n * this._ngZone.runOutsideAngular(() => {\r\n * this._increaseProgress(() => {\r\n * // reenter the Angular zone and display done\r\n * this._ngZone.run(() => {console.log('Outside Done!') });\r\n * }}));\r\n * }\r\n *\r\n *\r\n * _increaseProgress(doneCallback: () => void) {\r\n * this.progress += 1;\r\n * console.log(`Current progress: ${this.progress}%`);\r\n *\r\n * if (this.progress < 100) {\r\n * window.setTimeout(() => this._increaseProgress(doneCallback)), 10)\r\n * } else {\r\n * doneCallback();\r\n * }\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgZone = (function () {\r\n /**\r\n * @param {bool} enableLongStackTrace whether to enable long stack trace. They should only be\r\n * enabled in development mode as they significantly impact perf.\r\n */\r\n function NgZone(_a) {\r\n var _this = this;\r\n var _b = _a.enableLongStackTrace, enableLongStackTrace = _b === void 0 ? false : _b;\r\n this._hasPendingMicrotasks = false;\r\n this._hasPendingMacrotasks = false;\r\n /** @internal */\r\n this._isStable = true;\r\n /** @internal */\r\n this._nesting = 0;\r\n /** @internal */\r\n this._onUnstable = new async_1.EventEmitter(false);\r\n /** @internal */\r\n this._onMicrotaskEmpty = new async_1.EventEmitter(false);\r\n /** @internal */\r\n this._onStable = new async_1.EventEmitter(false);\r\n /** @internal */\r\n this._onErrorEvents = new async_1.EventEmitter(false);\r\n this._zoneImpl = new ng_zone_impl_1.NgZoneImpl({\r\n trace: enableLongStackTrace,\r\n onEnter: function () {\r\n // console.log('ZONE.enter', this._nesting, this._isStable);\r\n _this._nesting++;\r\n if (_this._isStable) {\r\n _this._isStable = false;\r\n _this._onUnstable.emit(null);\r\n }\r\n },\r\n onLeave: function () {\r\n _this._nesting--;\r\n // console.log('ZONE.leave', this._nesting, this._isStable);\r\n _this._checkStable();\r\n },\r\n setMicrotask: function (hasMicrotasks) {\r\n _this._hasPendingMicrotasks = hasMicrotasks;\r\n _this._checkStable();\r\n },\r\n setMacrotask: function (hasMacrotasks) { _this._hasPendingMacrotasks = hasMacrotasks; },\r\n onError: function (error) { return _this._onErrorEvents.emit(error); }\r\n });\r\n }\r\n NgZone.isInAngularZone = function () { return ng_zone_impl_1.NgZoneImpl.isInAngularZone(); };\r\n NgZone.assertInAngularZone = function () {\r\n if (!ng_zone_impl_1.NgZoneImpl.isInAngularZone()) {\r\n throw new exceptions_1.BaseException('Expected to be in Angular Zone, but it is not!');\r\n }\r\n };\r\n NgZone.assertNotInAngularZone = function () {\r\n if (ng_zone_impl_1.NgZoneImpl.isInAngularZone()) {\r\n throw new exceptions_1.BaseException('Expected to not be in Angular Zone, but it is!');\r\n }\r\n };\r\n NgZone.prototype._checkStable = function () {\r\n var _this = this;\r\n if (this._nesting == 0) {\r\n if (!this._hasPendingMicrotasks && !this._isStable) {\r\n try {\r\n // console.log('ZONE.microtaskEmpty');\r\n this._nesting++;\r\n this._onMicrotaskEmpty.emit(null);\r\n }\r\n finally {\r\n this._nesting--;\r\n if (!this._hasPendingMicrotasks) {\r\n try {\r\n // console.log('ZONE.stable', this._nesting, this._isStable);\r\n this.runOutsideAngular(function () { return _this._onStable.emit(null); });\r\n }\r\n finally {\r\n this._isStable = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n ;\r\n Object.defineProperty(NgZone.prototype, \"onUnstable\", {\r\n /**\r\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\r\n */\r\n get: function () { return this._onUnstable; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"onMicrotaskEmpty\", {\r\n /**\r\n * Notifies when there is no more microtasks enqueue in the current VM Turn.\r\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\r\n * For this reason this event can fire multiple times per VM Turn.\r\n */\r\n get: function () { return this._onMicrotaskEmpty; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"onStable\", {\r\n /**\r\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\r\n * implies we are about to relinquish VM turn.\r\n * This event gets called just once.\r\n */\r\n get: function () { return this._onStable; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"onError\", {\r\n /**\r\n * Notify that an error has been delivered.\r\n */\r\n get: function () { return this._onErrorEvents; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"hasPendingMicrotasks\", {\r\n /**\r\n * Whether there are any outstanding microtasks.\r\n */\r\n get: function () { return this._hasPendingMicrotasks; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"hasPendingMacrotasks\", {\r\n /**\r\n * Whether there are any outstanding microtasks.\r\n */\r\n get: function () { return this._hasPendingMacrotasks; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\r\n * the function.\r\n *\r\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\r\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\r\n *\r\n * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n * within the Angular zone.\r\n *\r\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\r\n */\r\n NgZone.prototype.run = function (fn) { return this._zoneImpl.runInner(fn); };\r\n /**\r\n * Same as #run, except that synchronous errors are caught and forwarded\r\n * via `onError` and not rethrown.\r\n */\r\n NgZone.prototype.runGuarded = function (fn) { return this._zoneImpl.runInnerGuarded(fn); };\r\n /**\r\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\r\n * the function.\r\n *\r\n * Running functions via `runOutsideAngular` allows you to escape Angular's zone and do work that\r\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\r\n *\r\n * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n * outside of the Angular zone.\r\n *\r\n * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\r\n */\r\n NgZone.prototype.runOutsideAngular = function (fn) { return this._zoneImpl.runOuter(fn); };\r\n return NgZone;\r\n}());\r\nexports.NgZone = NgZone;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3pvbmUvbmdfem9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0JBQTJCLDJCQUEyQixDQUFDLENBQUE7QUFDdkQsNkJBQXNDLGdCQUFnQixDQUFDLENBQUE7QUFDdkQsMkJBQTRCLHlCQUF5QixDQUFDLENBQUE7QUFDdEQsNkJBQTBCLGdCQUFnQixDQUFDO0FBQW5DLGlEQUFtQztBQUczQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNFRztBQUNIO0lBK0JFOzs7T0FHRztJQUNILGdCQUFZLEVBQThCO1FBbkM1QyxpQkFxSkM7WUFsSGMsNEJBQTRCLEVBQTVCLGlEQUE0QjtRQXBCakMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUUvQyxnQkFBZ0I7UUFDUixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLGdCQUFnQjtRQUNSLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDckIsZ0JBQWdCO1FBQ1IsZ0JBQVcsR0FBc0IsSUFBSSxvQkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLGdCQUFnQjtRQUNSLHNCQUFpQixHQUFzQixJQUFJLG9CQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsZ0JBQWdCO1FBQ1IsY0FBUyxHQUFzQixJQUFJLG9CQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsZ0JBQWdCO1FBQ1IsbUJBQWMsR0FBc0IsSUFBSSxvQkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBT2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx5QkFBVSxDQUFDO1lBQzlCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0Is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Ozs7T0FBQTtJQU81RSxzQkFBSSw0QkFBUTtRQUxaOzs7O1dBSUc7YUFDSCxjQUFvQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBSzVELHNCQUFJLDJCQUFPO1FBSFg7O1dBRUc7YUFDSCxjQUFtQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBS2hFLHNCQUFJLHdDQUFvQjtRQUh4Qjs7V0FFRzthQUNILGNBQXNDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUsxRSxzQkFBSSx3Q0FBb0I7UUFIeEI7O1dBRUc7YUFDSCxjQUFzQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFMUU7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxvQkFBRyxHQUFILFVBQUksRUFBYSxJQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0Q7OztPQUdHO0lBQ0gsMkJBQVUsR0FBVixVQUFXLEVBQWEsSUFBUyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdFOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsa0NBQWlCLEdBQWpCLFVBQWtCLEVBQWEsSUFBUyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLGFBQUM7QUFBRCxDQUFDLEFBckpELElBcUpDO0FBckpZLGNBQU0sU0FxSmxCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge05nWm9uZUltcGwsIE5nWm9uZUVycm9yfSBmcm9tICcuL25nX3pvbmVfaW1wbCc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJy4uLy4uL2ZhY2FkZS9leGNlcHRpb25zJztcbmV4cG9ydCB7Tmdab25lRXJyb3J9IGZyb20gJy4vbmdfem9uZV9pbXBsJztcblxuXG4vKipcbiAqIEFuIGluamVjdGFibGUgc2VydmljZSBmb3IgZXhlY3V0aW5nIHdvcmsgaW5zaWRlIG9yIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZS5cbiAqXG4gKiBUaGUgbW9zdCBjb21tb24gdXNlIG9mIHRoaXMgc2VydmljZSBpcyB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZSB3aGVuIHN0YXJ0aW5nIGEgd29yayBjb25zaXN0aW5nIG9mXG4gKiBvbmUgb3IgbW9yZSBhc3luY2hyb25vdXMgdGFza3MgdGhhdCBkb24ndCByZXF1aXJlIFVJIHVwZGF0ZXMgb3IgZXJyb3IgaGFuZGxpbmcgdG8gYmUgaGFuZGxlZCBieVxuICogQW5ndWxhci4gU3VjaCB0YXNrcyBjYW4gYmUga2lja2VkIG9mZiB2aWEge0BsaW5rICNydW5PdXRzaWRlQW5ndWxhcn0gYW5kIGlmIG5lZWRlZCwgdGhlc2UgdGFza3NcbiAqIGNhbiByZWVudGVyIHRoZSBBbmd1bGFyIHpvbmUgdmlhIHtAbGluayAjcnVufS5cbiAqXG4gKiA8IS0tIFRPRE86IGFkZC9maXggbGlua3MgdG86XG4gKiAgIC0gZG9jcyBleHBsYWluaW5nIHpvbmVzIGFuZCB0aGUgdXNlIG9mIHpvbmVzIGluIEFuZ3VsYXIgYW5kIGNoYW5nZS1kZXRlY3Rpb25cbiAqICAgLSBsaW5rIHRvIHJ1bk91dHNpZGVBbmd1bGFyL3J1biAodGhyb3VnaG91dCB0aGlzIGZpbGUhKVxuICogICAtLT5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvbFk5bThITHk3ejA2dkRvVWFTTjI/cD1wcmV2aWV3KSlcbiAqIGBgYFxuICogaW1wb3J0IHtDb21wb25lbnQsIFZpZXcsIE5nWm9uZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG4gKiBpbXBvcnQge05nSWZ9IGZyb20gJ2FuZ3VsYXIyL2NvbW1vbic7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbmctem9uZS1kZW1vJy5cbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8aDI+RGVtbzogTmdab25lPC9oMj5cbiAqXG4gKiAgICAgPHA+UHJvZ3Jlc3M6IHt7cHJvZ3Jlc3N9fSU8L3A+XG4gKiAgICAgPHAgKm5nSWY9XCJwcm9ncmVzcyA+PSAxMDBcIj5Eb25lIHByb2Nlc3Npbmcge3tsYWJlbH19IG9mIEFuZ3VsYXIgem9uZSE8L3A+XG4gKlxuICogICAgIDxidXR0b24gKGNsaWNrKT1cInByb2Nlc3NXaXRoaW5Bbmd1bGFyWm9uZSgpXCI+UHJvY2VzcyB3aXRoaW4gQW5ndWxhciB6b25lPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJvY2Vzc091dHNpZGVPZkFuZ3VsYXJab25lKClcIj5Qcm9jZXNzIG91dHNpZGUgb2YgQW5ndWxhciB6b25lPC9idXR0b24+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ0lmXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBOZ1pvbmVEZW1vIHtcbiAqICAgcHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gKiAgIGxhYmVsOiBzdHJpbmc7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkge31cbiAqXG4gKiAgIC8vIExvb3AgaW5zaWRlIHRoZSBBbmd1bGFyIHpvbmVcbiAqICAgLy8gc28gdGhlIFVJIERPRVMgcmVmcmVzaCBhZnRlciBlYWNoIHNldFRpbWVvdXQgY3ljbGVcbiAqICAgcHJvY2Vzc1dpdGhpbkFuZ3VsYXJab25lKCkge1xuICogICAgIHRoaXMubGFiZWwgPSAnaW5zaWRlJztcbiAqICAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAqICAgICB0aGlzLl9pbmNyZWFzZVByb2dyZXNzKCgpID0+IGNvbnNvbGUubG9nKCdJbnNpZGUgRG9uZSEnKSk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIExvb3Agb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lXG4gKiAgIC8vIHNvIHRoZSBVSSBET0VTIE5PVCByZWZyZXNoIGFmdGVyIGVhY2ggc2V0VGltZW91dCBjeWNsZVxuICogICBwcm9jZXNzT3V0c2lkZU9mQW5ndWxhclpvbmUoKSB7XG4gKiAgICAgdGhpcy5sYWJlbCA9ICdvdXRzaWRlJztcbiAqICAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAqICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICogICAgICAgdGhpcy5faW5jcmVhc2VQcm9ncmVzcygoKSA9PiB7XG4gKiAgICAgICAvLyByZWVudGVyIHRoZSBBbmd1bGFyIHpvbmUgYW5kIGRpc3BsYXkgZG9uZVxuICogICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7Y29uc29sZS5sb2coJ091dHNpZGUgRG9uZSEnKSB9KTtcbiAqICAgICB9fSkpO1xuICogICB9XG4gKlxuICpcbiAqICAgX2luY3JlYXNlUHJvZ3Jlc3MoZG9uZUNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gKiAgICAgdGhpcy5wcm9ncmVzcyArPSAxO1xuICogICAgIGNvbnNvbGUubG9nKGBDdXJyZW50IHByb2dyZXNzOiAke3RoaXMucHJvZ3Jlc3N9JWApO1xuICpcbiAqICAgICBpZiAodGhpcy5wcm9ncmVzcyA8IDEwMCkge1xuICogICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5faW5jcmVhc2VQcm9ncmVzcyhkb25lQ2FsbGJhY2spKSwgMTApXG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIGRvbmVDYWxsYmFjaygpO1xuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ1pvbmUge1xuICBzdGF0aWMgaXNJbkFuZ3VsYXJab25lKCk6IGJvb2xlYW4geyByZXR1cm4gTmdab25lSW1wbC5pc0luQW5ndWxhclpvbmUoKTsgfVxuICBzdGF0aWMgYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpOiB2b2lkIHtcbiAgICBpZiAoIU5nWm9uZUltcGwuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdFeHBlY3RlZCB0byBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1dCBpdCBpcyBub3QhJyk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyBhc3NlcnROb3RJbkFuZ3VsYXJab25lKCk6IHZvaWQge1xuICAgIGlmIChOZ1pvbmVJbXBsLmlzSW5Bbmd1bGFyWm9uZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignRXhwZWN0ZWQgdG8gbm90IGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzIScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3pvbmVJbXBsOiBOZ1pvbmVJbXBsO1xuXG4gIHByaXZhdGUgX2hhc1BlbmRpbmdNaWNyb3Rhc2tzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2hhc1BlbmRpbmdNYWNyb3Rhc2tzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9pc1N0YWJsZSA9IHRydWU7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfbmVzdGluZyA9IDA7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfb25VbnN0YWJsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9vbk1pY3JvdGFza0VtcHR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoZmFsc2UpO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX29uU3RhYmxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoZmFsc2UpO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX29uRXJyb3JFdmVudHM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbH0gZW5hYmxlTG9uZ1N0YWNrVHJhY2Ugd2hldGhlciB0byBlbmFibGUgbG9uZyBzdGFjayB0cmFjZS4gVGhleSBzaG91bGQgb25seSBiZVxuICAgKiAgICAgICAgICAgICAgIGVuYWJsZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSBhcyB0aGV5IHNpZ25pZmljYW50bHkgaW1wYWN0IHBlcmYuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZW5hYmxlTG9uZ1N0YWNrVHJhY2UgPSBmYWxzZX0pIHtcbiAgICB0aGlzLl96b25lSW1wbCA9IG5ldyBOZ1pvbmVJbXBsKHtcbiAgICAgIHRyYWNlOiBlbmFibGVMb25nU3RhY2tUcmFjZSxcbiAgICAgIG9uRW50ZXI6ICgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1pPTkUuZW50ZXInLCB0aGlzLl9uZXN0aW5nLCB0aGlzLl9pc1N0YWJsZSk7XG4gICAgICAgIHRoaXMuX25lc3RpbmcrKztcbiAgICAgICAgaWYgKHRoaXMuX2lzU3RhYmxlKSB7XG4gICAgICAgICAgdGhpcy5faXNTdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9vblVuc3RhYmxlLmVtaXQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbkxlYXZlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX25lc3RpbmctLTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1pPTkUubGVhdmUnLCB0aGlzLl9uZXN0aW5nLCB0aGlzLl9pc1N0YWJsZSk7XG4gICAgICAgIHRoaXMuX2NoZWNrU3RhYmxlKCk7XG4gICAgICB9LFxuICAgICAgc2V0TWljcm90YXNrOiAoaGFzTWljcm90YXNrczogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcyA9IGhhc01pY3JvdGFza3M7XG4gICAgICAgIHRoaXMuX2NoZWNrU3RhYmxlKCk7XG4gICAgICB9LFxuICAgICAgc2V0TWFjcm90YXNrOiAoaGFzTWFjcm90YXNrczogYm9vbGVhbikgPT4geyB0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNrcyA9IGhhc01hY3JvdGFza3M7IH0sXG4gICAgICBvbkVycm9yOiAoZXJyb3I6IE5nWm9uZUVycm9yKSA9PiB0aGlzLl9vbkVycm9yRXZlbnRzLmVtaXQoZXJyb3IpXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja1N0YWJsZSgpIHtcbiAgICBpZiAodGhpcy5fbmVzdGluZyA9PSAwKSB7XG4gICAgICBpZiAoIXRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzICYmICF0aGlzLl9pc1N0YWJsZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdaT05FLm1pY3JvdGFza0VtcHR5Jyk7XG4gICAgICAgICAgdGhpcy5fbmVzdGluZysrO1xuICAgICAgICAgIHRoaXMuX29uTWljcm90YXNrRW1wdHkuZW1pdChudWxsKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLl9uZXN0aW5nLS07XG4gICAgICAgICAgaWYgKCF0aGlzLl9oYXNQZW5kaW5nTWljcm90YXNrcykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1pPTkUuc3RhYmxlJywgdGhpcy5fbmVzdGluZywgdGhpcy5faXNTdGFibGUpO1xuICAgICAgICAgICAgICB0aGlzLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuX29uU3RhYmxlLmVtaXQobnVsbCkpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgdGhpcy5faXNTdGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogTm90aWZpZXMgd2hlbiBjb2RlIGVudGVycyBBbmd1bGFyIFpvbmUuIFRoaXMgZ2V0cyBmaXJlZCBmaXJzdCBvbiBWTSBUdXJuLlxuICAgKi9cbiAgZ2V0IG9uVW5zdGFibGUoKTogRXZlbnRFbWl0dGVyPGFueT4geyByZXR1cm4gdGhpcy5fb25VbnN0YWJsZTsgfVxuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgbWljcm90YXNrcyBlbnF1ZXVlIGluIHRoZSBjdXJyZW50IFZNIFR1cm4uXG4gICAqIFRoaXMgaXMgYSBoaW50IGZvciBBbmd1bGFyIHRvIGRvIGNoYW5nZSBkZXRlY3Rpb24sIHdoaWNoIG1heSBlbnF1ZXVlIG1vcmUgbWljcm90YXNrcy5cbiAgICogRm9yIHRoaXMgcmVhc29uIHRoaXMgZXZlbnQgY2FuIGZpcmUgbXVsdGlwbGUgdGltZXMgcGVyIFZNIFR1cm4uXG4gICAqL1xuICBnZXQgb25NaWNyb3Rhc2tFbXB0eSgpOiBFdmVudEVtaXR0ZXI8YW55PiB7IHJldHVybiB0aGlzLl9vbk1pY3JvdGFza0VtcHR5OyB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHdoZW4gdGhlIGxhc3QgYG9uTWljcm90YXNrRW1wdHlgIGhhcyBydW4gYW5kIHRoZXJlIGFyZSBubyBtb3JlIG1pY3JvdGFza3MsIHdoaWNoXG4gICAqIGltcGxpZXMgd2UgYXJlIGFib3V0IHRvIHJlbGlucXVpc2ggVk0gdHVybi5cbiAgICogVGhpcyBldmVudCBnZXRzIGNhbGxlZCBqdXN0IG9uY2UuXG4gICAqL1xuICBnZXQgb25TdGFibGUoKTogRXZlbnRFbWl0dGVyPGFueT4geyByZXR1cm4gdGhpcy5fb25TdGFibGU7IH1cblxuICAvKipcbiAgICogTm90aWZ5IHRoYXQgYW4gZXJyb3IgaGFzIGJlZW4gZGVsaXZlcmVkLlxuICAgKi9cbiAgZ2V0IG9uRXJyb3IoKTogRXZlbnRFbWl0dGVyPGFueT4geyByZXR1cm4gdGhpcy5fb25FcnJvckV2ZW50czsgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZXJlIGFyZSBhbnkgb3V0c3RhbmRpbmcgbWljcm90YXNrcy5cbiAgICovXG4gIGdldCBoYXNQZW5kaW5nTWljcm90YXNrcygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzOyB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdXRzdGFuZGluZyBtaWNyb3Rhc2tzLlxuICAgKi9cbiAgZ2V0IGhhc1BlbmRpbmdNYWNyb3Rhc2tzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGFzUGVuZGluZ01hY3JvdGFza3M7IH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGBmbmAgZnVuY3Rpb24gc3luY2hyb25vdXNseSB3aXRoaW4gdGhlIEFuZ3VsYXIgem9uZSBhbmQgcmV0dXJucyB2YWx1ZSByZXR1cm5lZCBieVxuICAgKiB0aGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIFJ1bm5pbmcgZnVuY3Rpb25zIHZpYSBgcnVuYCBhbGxvd3MgeW91IHRvIHJlZW50ZXIgQW5ndWxhciB6b25lIGZyb20gYSB0YXNrIHRoYXQgd2FzIGV4ZWN1dGVkXG4gICAqIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZSAodHlwaWNhbGx5IHN0YXJ0ZWQgdmlhIHtAbGluayAjcnVuT3V0c2lkZUFuZ3VsYXJ9KS5cbiAgICpcbiAgICogQW55IGZ1dHVyZSB0YXNrcyBvciBtaWNyb3Rhc2tzIHNjaGVkdWxlZCBmcm9tIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udGludWUgZXhlY3V0aW5nIGZyb21cbiAgICogd2l0aGluIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqXG4gICAqIElmIGEgc3luY2hyb25vdXMgZXJyb3IgaGFwcGVucyBpdCB3aWxsIGJlIHJldGhyb3duIGFuZCBub3QgcmVwb3J0ZWQgdmlhIGBvbkVycm9yYC5cbiAgICovXG4gIHJ1bihmbjogKCkgPT4gYW55KTogYW55IHsgcmV0dXJuIHRoaXMuX3pvbmVJbXBsLnJ1bklubmVyKGZuKTsgfVxuXG4gIC8qKlxuICAgKiBTYW1lIGFzICNydW4sIGV4Y2VwdCB0aGF0IHN5bmNocm9ub3VzIGVycm9ycyBhcmUgY2F1Z2h0IGFuZCBmb3J3YXJkZWRcbiAgICogdmlhIGBvbkVycm9yYCBhbmQgbm90IHJldGhyb3duLlxuICAgKi9cbiAgcnVuR3VhcmRlZChmbjogKCkgPT4gYW55KTogYW55IHsgcmV0dXJuIHRoaXMuX3pvbmVJbXBsLnJ1bklubmVyR3VhcmRlZChmbik7IH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGBmbmAgZnVuY3Rpb24gc3luY2hyb25vdXNseSBpbiBBbmd1bGFyJ3MgcGFyZW50IHpvbmUgYW5kIHJldHVybnMgdmFsdWUgcmV0dXJuZWQgYnlcbiAgICogdGhlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBSdW5uaW5nIGZ1bmN0aW9ucyB2aWEgYHJ1bk91dHNpZGVBbmd1bGFyYCBhbGxvd3MgeW91IHRvIGVzY2FwZSBBbmd1bGFyJ3Mgem9uZSBhbmQgZG8gd29yayB0aGF0XG4gICAqIGRvZXNuJ3QgdHJpZ2dlciBBbmd1bGFyIGNoYW5nZS1kZXRlY3Rpb24gb3IgaXMgc3ViamVjdCB0byBBbmd1bGFyJ3MgZXJyb3IgaGFuZGxpbmcuXG4gICAqXG4gICAqIEFueSBmdXR1cmUgdGFza3Mgb3IgbWljcm90YXNrcyBzY2hlZHVsZWQgZnJvbSB3aXRoaW4gdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnRpbnVlIGV4ZWN1dGluZyBmcm9tXG4gICAqIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICpcbiAgICogVXNlIHtAbGluayAjcnVufSB0byByZWVudGVyIHRoZSBBbmd1bGFyIHpvbmUgYW5kIGRvIHdvcmsgdGhhdCB1cGRhdGVzIHRoZSBhcHBsaWNhdGlvbiBtb2RlbC5cbiAgICovXG4gIHJ1bk91dHNpZGVBbmd1bGFyKGZuOiAoKSA9PiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5fem9uZUltcGwucnVuT3V0ZXIoZm4pOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar ng_zone_1 = require('../zone/ng_zone');\r\nvar async_1 = require('angular2/src/facade/async');\r\n/**\r\n * The Testability service provides testing hooks that can be accessed from\r\n * the browser and by services such as Protractor. Each bootstrapped Angular\r\n * application on the page will have an instance of Testability.\r\n */\r\nvar Testability = (function () {\r\n function Testability(_ngZone) {\r\n this._ngZone = _ngZone;\r\n /** @internal */\r\n this._pendingCount = 0;\r\n /** @internal */\r\n this._isZoneStable = true;\r\n /**\r\n * Whether any work was done since the last 'whenStable' callback. This is\r\n * useful to detect if this could have potentially destabilized another\r\n * component while it is stabilizing.\r\n * @internal\r\n */\r\n this._didWork = false;\r\n /** @internal */\r\n this._callbacks = [];\r\n this._watchAngularEvents();\r\n }\r\n /** @internal */\r\n Testability.prototype._watchAngularEvents = function () {\r\n var _this = this;\r\n async_1.ObservableWrapper.subscribe(this._ngZone.onUnstable, function (_) {\r\n _this._didWork = true;\r\n _this._isZoneStable = false;\r\n });\r\n this._ngZone.runOutsideAngular(function () {\r\n async_1.ObservableWrapper.subscribe(_this._ngZone.onStable, function (_) {\r\n ng_zone_1.NgZone.assertNotInAngularZone();\r\n lang_1.scheduleMicroTask(function () {\r\n _this._isZoneStable = true;\r\n _this._runCallbacksIfReady();\r\n });\r\n });\r\n });\r\n };\r\n Testability.prototype.increasePendingRequestCount = function () {\r\n this._pendingCount += 1;\r\n this._didWork = true;\r\n return this._pendingCount;\r\n };\r\n Testability.prototype.decreasePendingRequestCount = function () {\r\n this._pendingCount -= 1;\r\n if (this._pendingCount < 0) {\r\n throw new exceptions_1.BaseException('pending async requests below zero');\r\n }\r\n this._runCallbacksIfReady();\r\n return this._pendingCount;\r\n };\r\n Testability.prototype.isStable = function () {\r\n return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;\r\n };\r\n /** @internal */\r\n Testability.prototype._runCallbacksIfReady = function () {\r\n var _this = this;\r\n if (this.isStable()) {\r\n // Schedules the call backs in a new frame so that it is always async.\r\n lang_1.scheduleMicroTask(function () {\r\n while (_this._callbacks.length !== 0) {\r\n (_this._callbacks.pop())(_this._didWork);\r\n }\r\n _this._didWork = false;\r\n });\r\n }\r\n else {\r\n // Not Ready\r\n this._didWork = true;\r\n }\r\n };\r\n Testability.prototype.whenStable = function (callback) {\r\n this._callbacks.push(callback);\r\n this._runCallbacksIfReady();\r\n };\r\n Testability.prototype.getPendingRequestCount = function () { return this._pendingCount; };\r\n Testability.prototype.findBindings = function (using, provider, exactMatch) {\r\n // TODO(juliemr): implement.\r\n return [];\r\n };\r\n Testability.prototype.findProviders = function (using, provider, exactMatch) {\r\n // TODO(juliemr): implement.\r\n return [];\r\n };\r\n Testability = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [ng_zone_1.NgZone])\r\n ], Testability);\r\n return Testability;\r\n}());\r\nexports.Testability = Testability;\r\n/**\r\n * A global registry of {@link Testability} instances for specific elements.\r\n */\r\nvar TestabilityRegistry = (function () {\r\n function TestabilityRegistry() {\r\n /** @internal */\r\n this._applications = new collection_1.Map();\r\n _testabilityGetter.addToWindow(this);\r\n }\r\n TestabilityRegistry.prototype.registerApplication = function (token, testability) {\r\n this._applications.set(token, testability);\r\n };\r\n TestabilityRegistry.prototype.getTestability = function (elem) { return this._applications.get(elem); };\r\n TestabilityRegistry.prototype.getAllTestabilities = function () { return collection_1.MapWrapper.values(this._applications); };\r\n TestabilityRegistry.prototype.getAllRootElements = function () { return collection_1.MapWrapper.keys(this._applications); };\r\n TestabilityRegistry.prototype.findTestabilityInTree = function (elem, findInAncestors) {\r\n if (findInAncestors === void 0) { findInAncestors = true; }\r\n return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);\r\n };\r\n TestabilityRegistry = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], TestabilityRegistry);\r\n return TestabilityRegistry;\r\n}());\r\nexports.TestabilityRegistry = TestabilityRegistry;\r\nvar _NoopGetTestability = (function () {\r\n function _NoopGetTestability() {\r\n }\r\n _NoopGetTestability.prototype.addToWindow = function (registry) { };\r\n _NoopGetTestability.prototype.findTestabilityInTree = function (registry, elem, findInAncestors) {\r\n return null;\r\n };\r\n _NoopGetTestability = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], _NoopGetTestability);\r\n return _NoopGetTestability;\r\n}());\r\n/**\r\n * Set the {@link GetTestability} implementation used by the Angular testing framework.\r\n */\r\nfunction setTestabilityGetter(getter) {\r\n _testabilityGetter = getter;\r\n}\r\nexports.setTestabilityGetter = setTestabilityGetter;\r\nvar _testabilityGetter = lang_1.CONST_EXPR(new _NoopGetTestability());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS90ZXN0YWJpbGl0eS90ZXN0YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQsMkJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFDNUUscUJBQW1ELDBCQUEwQixDQUFDLENBQUE7QUFDOUUsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0Qsd0JBQXFCLGlCQUFpQixDQUFDLENBQUE7QUFDdkMsc0JBQWdDLDJCQUEyQixDQUFDLENBQUE7QUFHNUQ7Ozs7R0FJRztBQUVIO0lBY0UscUJBQW9CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBYm5DLGdCQUFnQjtRQUNoQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixnQkFBZ0I7UUFDaEIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUI7Ozs7O1dBS0c7UUFDSCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFnQjtRQUNoQixlQUFVLEdBQWUsRUFBRSxDQUFDO1FBQ1csSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFBQyxDQUFDO0lBRXBFLGdCQUFnQjtJQUNoQix5Q0FBbUIsR0FBbkI7UUFBQSxpQkFlQztRQWRDLHlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFDLENBQUM7WUFDckQsS0FBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsS0FBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQzdCLHlCQUFpQixDQUFDLFNBQVMsQ0FB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QUFFRCxJQUFJLGtCQUFrQixHQUFtQixpQkFBVSxDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge01hcCwgTWFwV3JhcHBlciwgTGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0NPTlNULCBDT05TVF9FWFBSLCBzY2hlZHVsZU1pY3JvVGFza30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7Tmdab25lfSBmcm9tICcuLi96b25lL25nX3pvbmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5cblxuLyoqXG4gKiBUaGUgVGVzdGFiaWxpdHkgc2VydmljZSBwcm92aWRlcyB0ZXN0aW5nIGhvb2tzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGZyb21cbiAqIHRoZSBicm93c2VyIGFuZCBieSBzZXJ2aWNlcyBzdWNoIGFzIFByb3RyYWN0b3IuIEVhY2ggYm9vdHN0cmFwcGVkIEFuZ3VsYXJcbiAqIGFwcGxpY2F0aW9uIG9uIHRoZSBwYWdlIHdpbGwgaGF2ZSBhbiBpbnN0YW5jZSBvZiBUZXN0YWJpbGl0eS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlc3RhYmlsaXR5IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcGVuZGluZ0NvdW50OiBudW1iZXIgPSAwO1xuICAvKiogQGludGVybmFsICovXG4gIF9pc1pvbmVTdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAvKipcbiAgICogV2hldGhlciBhbnkgd29yayB3YXMgZG9uZSBzaW5jZSB0aGUgbGFzdCAnd2hlblN0YWJsZScgY2FsbGJhY2suIFRoaXMgaXNcbiAgICogdXNlZnVsIHRvIGRldGVjdCBpZiB0aGlzIGNvdWxkIGhhdmUgcG90ZW50aWFsbHkgZGVzdGFiaWxpemVkIGFub3RoZXJcbiAgICogY29tcG9uZW50IHdoaWxlIGl0IGlzIHN0YWJpbGl6aW5nLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9kaWRXb3JrOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NhbGxiYWNrczogRnVuY3Rpb25bXSA9IFtdO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkgeyB0aGlzLl93YXRjaEFuZ3VsYXJFdmVudHMoKTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3dhdGNoQW5ndWxhckV2ZW50cygpOiB2b2lkIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fbmdab25lLm9uVW5zdGFibGUsIChfKSA9PiB7XG4gICAgICB0aGlzLl9kaWRXb3JrID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2lzWm9uZVN0YWJsZSA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIE9ic2VydmFibGVXcmFwcGVyLnN1YnNjcmliZSh0aGlzLl9uZ1pvbmUub25TdGFibGUsIChfKSA9PiB7XG4gICAgICAgIE5nWm9uZS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCk7XG4gICAgICAgIHNjaGVkdWxlTWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc1pvbmVTdGFibGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCgpOiBudW1iZXIge1xuICAgIHRoaXMuX3BlbmRpbmdDb3VudCArPSAxO1xuICAgIHRoaXMuX2RpZFdvcmsgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQ291bnQ7XG4gIH1cblxuICBkZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKTogbnVtYmVyIHtcbiAgICB0aGlzLl9wZW5kaW5nQ291bnQgLT0gMTtcbiAgICBpZiAodGhpcy5fcGVuZGluZ0NvdW50IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ3BlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybycpO1xuICAgIH1cbiAgICB0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCk7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudDtcbiAgfVxuXG4gIGlzU3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1pvbmVTdGFibGUgJiYgdGhpcy5fcGVuZGluZ0NvdW50ID09IDAgJiYgIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3J1bkNhbGxiYWNrc0lmUmVhZHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTdGFibGUoKSkge1xuICAgICAgLy8gU2NoZWR1bGVzIHRoZSBjYWxsIGJhY2tzIGluIGEgbmV3IGZyYW1lIHNvIHRoYXQgaXQgaXMgYWx3YXlzIGFzeW5jLlxuICAgICAgc2NoZWR1bGVNaWNyb1Rhc2soKCkgPT4ge1xuICAgICAgICB3aGlsZSAodGhpcy5fY2FsbGJhY2tzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICh0aGlzLl9jYWxsYmFja3MucG9wKCkpKHRoaXMuX2RpZFdvcmspO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RpZFdvcmsgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgUmVhZHlcbiAgICAgIHRoaXMuX2RpZFdvcmsgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHdoZW5TdGFibGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKTtcbiAgfVxuXG4gIGdldFBlbmRpbmdSZXF1ZXN0Q291bnQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudDsgfVxuXG4gIGZpbmRCaW5kaW5ncyh1c2luZzogYW55LCBwcm92aWRlcjogc3RyaW5nLCBleGFjdE1hdGNoOiBib29sZWFuKTogYW55W10ge1xuICAgIC8vIFRPRE8oanVsaWVtcik6IGltcGxlbWVudC5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBmaW5kUHJvdmlkZXJzKHVzaW5nOiBhbnksIHByb3ZpZGVyOiBzdHJpbmcsIGV4YWN0TWF0Y2g6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgLy8gVE9ETyhqdWxpZW1yKTogaW1wbGVtZW50LlxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZ2xvYmFsIHJlZ2lzdHJ5IG9mIHtAbGluayBUZXN0YWJpbGl0eX0gaW5zdGFuY2VzIGZvciBzcGVjaWZpYyBlbGVtZW50cy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlc3RhYmlsaXR5UmVnaXN0cnkge1xuICAvKiogQGludGVybmFsICovXG4gIF9hcHBsaWNhdGlvbnMgPSBuZXcgTWFwPGFueSwgVGVzdGFiaWxpdHk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IF90ZXN0YWJpbGl0eUdldHRlci5hZGRUb1dpbmRvdyh0aGlzKTsgfVxuXG4gIHJlZ2lzdGVyQXBwbGljYXRpb24odG9rZW46IGFueSwgdGVzdGFiaWxpdHk6IFRlc3RhYmlsaXR5KSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25zLnNldCh0b2tlbiwgdGVzdGFiaWxpdHkpO1xuICB9XG5cbiAgZ2V0VGVzdGFiaWxpdHkoZWxlbTogYW55KTogVGVzdGFiaWxpdHkgeyByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25zLmdldChlbGVtKTsgfVxuXG4gIGdldEFsbFRlc3RhYmlsaXRpZXMoKTogVGVzdGFiaWxpdHlbXSB7IHJldHVybiBNYXBXcmFwcGVyLnZhbHVlcyh0aGlzLl9hcHBsaWNhdGlvbnMpOyB9XG5cbiAgZ2V0QWxsUm9vdEVsZW1lbnRzKCk6IGFueVtdIHsgcmV0dXJuIE1hcFdyYXBwZXIua2V5cyh0aGlzLl9hcHBsaWNhdGlvbnMpOyB9XG5cbiAgZmluZFRlc3RhYmlsaXR5SW5UcmVlKGVsZW06IE5vZGUsIGZpbmRJbkFuY2VzdG9yczogYm9vbGVhbiA9IHRydWUpOiBUZXN0YWJpbGl0eSB7XG4gICAgcmV0dXJuIF90ZXN0YWJpbGl0eUdldHRlci5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcywgZWxlbSwgZmluZEluQW5jZXN0b3JzKTtcbiAgfVxufVxuXG4vKipcbiAqIEFkYXB0ZXIgaW50ZXJmYWNlIGZvciByZXRyaWV2aW5nIHRoZSBgVGVzdGFiaWxpdHlgIHNlcnZpY2UgYXNzb2NpYXRlZCBmb3IgYVxuICogcGFydGljdWxhciBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFRlc3RhYmlsaXR5IHtcbiAgYWRkVG9XaW5kb3cocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnkpOiB2b2lkO1xuICBmaW5kVGVzdGFiaWxpdHlJblRyZWUocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnksIGVsZW06IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRJbkFuY2VzdG9yczogYm9vbGVhbik6IFRlc3RhYmlsaXR5O1xufVxuXG5AQ09OU1QoKVxuY2xhc3MgX05vb3BHZXRUZXN0YWJpbGl0eSBpbXBsZW1lbnRzIEdldFRlc3RhYmlsaXR5IHtcbiAgYWRkVG9XaW5kb3cocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnkpOiB2b2lkIHt9XG4gIGZpbmRUZXN0YWJpbGl0eUluVHJlZShyZWdpc3RyeTogVGVzdGFiaWxpdHlSZWdpc3RyeSwgZWxlbTogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmluZEluQW5jZXN0b3JzOiBib29sZWFuKTogVGVzdGFiaWxpdHkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogU2V0IHRoZSB7QGxpbmsgR2V0VGVzdGFiaWxpdHl9IGltcGxlbWVudGF0aW9uIHVzZWQgYnkgdGhlIEFuZ3VsYXIgdGVzdGluZyBmcmFtZXdvcmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUZXN0YWJpbGl0eUdldHRlcihnZXR0ZXI6IEdldFRlc3RhYmlsaXR5KTogdm9pZCB7XG4gIF90ZXN0YWJpbGl0eUdldHRlciA9IGdldHRlcjtcbn1cblxudmFyIF90ZXN0YWJpbGl0eUdldHRlcjogR2V0VGVzdGFiaWxpdHkgPSBDT05TVF9FWFBSKG5ldyBfTm9vcEdldFRlc3RhYmlsaXR5KCkpO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n// Note: Need to rename warn as in Dart\r\n// class members and imports can't use the same name.\r\nvar _warnImpl = lang_1.warn;\r\nvar Console = (function () {\r\n function Console() {\r\n }\r\n Console.prototype.log = function (message) { lang_1.print(message); };\r\n // Note: for reporting errors use `DOM.logError()` as it is platform specific\r\n Console.prototype.warn = function (message) { _warnImpl(message); };\r\n Console = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], Console);\r\n return Console;\r\n}());\r\nexports.Console = Console;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2NvbnNvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLG1CQUF5QixzQkFBc0IsQ0FBQyxDQUFBO0FBQ2hELHFCQUEwQiwwQkFBMEIsQ0FBQyxDQUFBO0FBRXJELHVDQUF1QztBQUN2QyxxREFBcUQ7QUFDckQsSUFBSSxTQUFTLEdBQUcsV0FBSSxDQUFDO0FBR3JCO0lBQUE7SUFJQSxDQUFDO0lBSEMscUJBQUcsR0FBSCxVQUFJLE9BQWUsSUFBVSxZQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLDZFQUE2RTtJQUM3RSxzQkFBSSxHQUFKLFVBQUssT0FBZSxJQUFVLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFKckQ7UUFBQyxlQUFVLEVBQUU7O2VBQUE7SUFLYixjQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxlQUFPLFVBSW5CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7cHJpbnQsIHdhcm59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8vIE5vdGU6IE5lZWQgdG8gcmVuYW1lIHdhcm4gYXMgaW4gRGFydFxuLy8gY2xhc3MgbWVtYmVycyBhbmQgaW1wb3J0cyBjYW4ndCB1c2UgdGhlIHNhbWUgbmFtZS5cbmxldCBfd2FybkltcGwgPSB3YXJuO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uc29sZSB7XG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHsgcHJpbnQobWVzc2FnZSk7IH1cbiAgLy8gTm90ZTogZm9yIHJlcG9ydGluZyBlcnJvcnMgdXNlIGBET00ubG9nRXJyb3IoKWAgYXMgaXQgaXMgcGxhdGZvcm0gc3BlY2lmaWNcbiAgd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHsgX3dhcm5JbXBsKG1lc3NhZ2UpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar ng_zone_1 = require('angular2/src/core/zone/ng_zone');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar application_tokens_1 = require('./application_tokens');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar testability_1 = require('angular2/src/core/testability/testability');\r\nvar component_resolver_1 = require('angular2/src/core/linker/component_resolver');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar console_1 = require('angular2/src/core/console');\r\nvar profile_1 = require('./profile/profile');\r\n/**\r\n * Create an Angular zone.\r\n */\r\nfunction createNgZone() {\r\n return new ng_zone_1.NgZone({ enableLongStackTrace: lang_1.assertionsEnabled() });\r\n}\r\nexports.createNgZone = createNgZone;\r\nvar _platform;\r\nvar _inPlatformCreate = false;\r\n/**\r\n * Creates a platform.\r\n * Platforms have to be eagerly created via this function.\r\n */\r\nfunction createPlatform(injector) {\r\n if (_inPlatformCreate) {\r\n throw new exceptions_1.BaseException('Already creating a platform...');\r\n }\r\n if (lang_1.isPresent(_platform) && !_platform.disposed) {\r\n throw new exceptions_1.BaseException(\"There can be only one platform. Destroy the previous one to create a new one.\");\r\n }\r\n lang_1.lockMode();\r\n _inPlatformCreate = true;\r\n try {\r\n _platform = injector.get(PlatformRef);\r\n }\r\n finally {\r\n _inPlatformCreate = false;\r\n }\r\n return _platform;\r\n}\r\nexports.createPlatform = createPlatform;\r\n/**\r\n * Checks that there currently is a platform\r\n * which contains the given token as a provider.\r\n */\r\nfunction assertPlatform(requiredToken) {\r\n var platform = getPlatform();\r\n if (lang_1.isBlank(platform)) {\r\n throw new exceptions_1.BaseException('Not platform exists!');\r\n }\r\n if (lang_1.isPresent(platform) && lang_1.isBlank(platform.injector.get(requiredToken, null))) {\r\n throw new exceptions_1.BaseException('A platform with a different configuration has been created. Please destroy it first.');\r\n }\r\n return platform;\r\n}\r\nexports.assertPlatform = assertPlatform;\r\n/**\r\n * Dispose the existing platform.\r\n */\r\nfunction disposePlatform() {\r\n if (lang_1.isPresent(_platform) && !_platform.disposed) {\r\n _platform.dispose();\r\n }\r\n}\r\nexports.disposePlatform = disposePlatform;\r\n/**\r\n * Returns the current platform.\r\n */\r\nfunction getPlatform() {\r\n return lang_1.isPresent(_platform) && !_platform.disposed ? _platform : null;\r\n}\r\nexports.getPlatform = getPlatform;\r\n/**\r\n * Shortcut for ApplicationRef.bootstrap.\r\n * Requires a platform the be created first.\r\n */\r\nfunction coreBootstrap(injector, componentFactory) {\r\n var appRef = injector.get(ApplicationRef);\r\n return appRef.bootstrap(componentFactory);\r\n}\r\nexports.coreBootstrap = coreBootstrap;\r\n/**\r\n * Resolves the componentFactory for the given component,\r\n * waits for asynchronous initializers and bootstraps the component.\r\n * Requires a platform the be created first.\r\n */\r\nfunction coreLoadAndBootstrap(injector, componentType) {\r\n var appRef = injector.get(ApplicationRef);\r\n return appRef.run(function () {\r\n var componentResolver = injector.get(component_resolver_1.ComponentResolver);\r\n return async_1.PromiseWrapper\r\n .all([componentResolver.resolveComponent(componentType), appRef.waitForAsyncInitializers()])\r\n .then(function (arr) { return appRef.bootstrap(arr[0]); });\r\n });\r\n}\r\nexports.coreLoadAndBootstrap = coreLoadAndBootstrap;\r\n/**\r\n * The Angular platform is the entry point for Angular on a web page. Each page\r\n * has exactly one platform, and services (such as reflection) which are common\r\n * to every Angular application running on the page are bound in its scope.\r\n *\r\n * A page's platform is initialized implicitly when {@link bootstrap}() is called, or\r\n * explicitly by calling {@link createPlatform}().\r\n */\r\nvar PlatformRef = (function () {\r\n function PlatformRef() {\r\n }\r\n Object.defineProperty(PlatformRef.prototype, \"injector\", {\r\n /**\r\n * Retrieve the platform {@link Injector}, which is the parent injector for\r\n * every Angular application on the page and provides singleton providers.\r\n */\r\n get: function () { throw exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(PlatformRef.prototype, \"disposed\", {\r\n get: function () { throw exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PlatformRef;\r\n}());\r\nexports.PlatformRef = PlatformRef;\r\nvar PlatformRef_ = (function (_super) {\r\n __extends(PlatformRef_, _super);\r\n function PlatformRef_(_injector) {\r\n _super.call(this);\r\n this._injector = _injector;\r\n /** @internal */\r\n this._applications = [];\r\n /** @internal */\r\n this._disposeListeners = [];\r\n this._disposed = false;\r\n if (!_inPlatformCreate) {\r\n throw new exceptions_1.BaseException('Platforms have to be created via `createPlatform`!');\r\n }\r\n var inits = _injector.get(application_tokens_1.PLATFORM_INITIALIZER, null);\r\n if (lang_1.isPresent(inits))\r\n inits.forEach(function (init) { return init(); });\r\n }\r\n PlatformRef_.prototype.registerDisposeListener = function (dispose) { this._disposeListeners.push(dispose); };\r\n Object.defineProperty(PlatformRef_.prototype, \"injector\", {\r\n get: function () { return this._injector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PlatformRef_.prototype, \"disposed\", {\r\n get: function () { return this._disposed; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PlatformRef_.prototype.addApplication = function (appRef) { this._applications.push(appRef); };\r\n PlatformRef_.prototype.dispose = function () {\r\n collection_1.ListWrapper.clone(this._applications).forEach(function (app) { return app.dispose(); });\r\n this._disposeListeners.forEach(function (dispose) { return dispose(); });\r\n this._disposed = true;\r\n };\r\n /** @internal */\r\n PlatformRef_.prototype._applicationDisposed = function (app) { collection_1.ListWrapper.remove(this._applications, app); };\r\n PlatformRef_ = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [di_1.Injector])\r\n ], PlatformRef_);\r\n return PlatformRef_;\r\n}(PlatformRef));\r\nexports.PlatformRef_ = PlatformRef_;\r\n/**\r\n * A reference to an Angular application running on a page.\r\n *\r\n * For more about Angular applications, see the documentation for {@link bootstrap}.\r\n */\r\nvar ApplicationRef = (function () {\r\n function ApplicationRef() {\r\n }\r\n Object.defineProperty(ApplicationRef.prototype, \"injector\", {\r\n /**\r\n * Retrieve the application {@link Injector}.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ApplicationRef.prototype, \"zone\", {\r\n /**\r\n * Retrieve the application {@link NgZone}.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ApplicationRef.prototype, \"componentTypes\", {\r\n /**\r\n * Get a list of component types registered to this application.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return ApplicationRef;\r\n}());\r\nexports.ApplicationRef = ApplicationRef;\r\nvar ApplicationRef_ = (function (_super) {\r\n __extends(ApplicationRef_, _super);\r\n function ApplicationRef_(_platform, _zone, _injector) {\r\n var _this = this;\r\n _super.call(this);\r\n this._platform = _platform;\r\n this._zone = _zone;\r\n this._injector = _injector;\r\n /** @internal */\r\n this._bootstrapListeners = [];\r\n /** @internal */\r\n this._disposeListeners = [];\r\n /** @internal */\r\n this._rootComponents = [];\r\n /** @internal */\r\n this._rootComponentTypes = [];\r\n /** @internal */\r\n this._changeDetectorRefs = [];\r\n /** @internal */\r\n this._runningTick = false;\r\n /** @internal */\r\n this._enforceNoNewChanges = false;\r\n var zone = _injector.get(ng_zone_1.NgZone);\r\n this._enforceNoNewChanges = lang_1.assertionsEnabled();\r\n zone.run(function () { _this._exceptionHandler = _injector.get(exceptions_1.ExceptionHandler); });\r\n this._asyncInitDonePromise = this.run(function () {\r\n var inits = _injector.get(application_tokens_1.APP_INITIALIZER, null);\r\n var asyncInitResults = [];\r\n var asyncInitDonePromise;\r\n if (lang_1.isPresent(inits)) {\r\n for (var i = 0; i < inits.length; i++) {\r\n var initResult = inits[i]();\r\n if (lang_1.isPromise(initResult)) {\r\n asyncInitResults.push(initResult);\r\n }\r\n }\r\n }\r\n if (asyncInitResults.length > 0) {\r\n asyncInitDonePromise =\r\n async_1.PromiseWrapper.all(asyncInitResults).then(function (_) { return _this._asyncInitDone = true; });\r\n _this._asyncInitDone = false;\r\n }\r\n else {\r\n _this._asyncInitDone = true;\r\n asyncInitDonePromise = async_1.PromiseWrapper.resolve(true);\r\n }\r\n return asyncInitDonePromise;\r\n });\r\n async_1.ObservableWrapper.subscribe(zone.onError, function (error) {\r\n _this._exceptionHandler.call(error.error, error.stackTrace);\r\n });\r\n async_1.ObservableWrapper.subscribe(this._zone.onMicrotaskEmpty, function (_) { _this._zone.run(function () { _this.tick(); }); });\r\n }\r\n ApplicationRef_.prototype.registerBootstrapListener = function (listener) {\r\n this._bootstrapListeners.push(listener);\r\n };\r\n ApplicationRef_.prototype.registerDisposeListener = function (dispose) { this._disposeListeners.push(dispose); };\r\n ApplicationRef_.prototype.registerChangeDetector = function (changeDetector) {\r\n this._changeDetectorRefs.push(changeDetector);\r\n };\r\n ApplicationRef_.prototype.unregisterChangeDetector = function (changeDetector) {\r\n collection_1.ListWrapper.remove(this._changeDetectorRefs, changeDetector);\r\n };\r\n ApplicationRef_.prototype.waitForAsyncInitializers = function () { return this._asyncInitDonePromise; };\r\n ApplicationRef_.prototype.run = function (callback) {\r\n var _this = this;\r\n var zone = this.injector.get(ng_zone_1.NgZone);\r\n var result;\r\n // Note: Don't use zone.runGuarded as we want to know about\r\n // the thrown exception!\r\n // Note: the completer needs to be created outside\r\n // of `zone.run` as Dart swallows rejected promises\r\n // via the onError callback of the promise.\r\n var completer = async_1.PromiseWrapper.completer();\r\n zone.run(function () {\r\n try {\r\n result = callback();\r\n if (lang_1.isPromise(result)) {\r\n async_1.PromiseWrapper.then(result, function (ref) { completer.resolve(ref); }, function (err, stackTrace) {\r\n completer.reject(err, stackTrace);\r\n _this._exceptionHandler.call(err, stackTrace);\r\n });\r\n }\r\n }\r\n catch (e) {\r\n _this._exceptionHandler.call(e, e.stack);\r\n throw e;\r\n }\r\n });\r\n return lang_1.isPromise(result) ? completer.promise : result;\r\n };\r\n ApplicationRef_.prototype.bootstrap = function (componentFactory) {\r\n var _this = this;\r\n if (!this._asyncInitDone) {\r\n throw new exceptions_1.BaseException('Cannot bootstrap as there are still asynchronous initializers running. Wait for them using waitForAsyncInitializers().');\r\n }\r\n return this.run(function () {\r\n _this._rootComponentTypes.push(componentFactory.componentType);\r\n var compRef = componentFactory.create(_this._injector, [], componentFactory.selector);\r\n compRef.onDestroy(function () { _this._unloadComponent(compRef); });\r\n var testability = compRef.injector.get(testability_1.Testability, null);\r\n if (lang_1.isPresent(testability)) {\r\n compRef.injector.get(testability_1.TestabilityRegistry)\r\n .registerApplication(compRef.location.nativeElement, testability);\r\n }\r\n _this._loadComponent(compRef);\r\n var c = _this._injector.get(console_1.Console);\r\n if (lang_1.assertionsEnabled()) {\r\n c.log(\"Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.\");\r\n }\r\n return compRef;\r\n });\r\n };\r\n /** @internal */\r\n ApplicationRef_.prototype._loadComponent = function (componentRef) {\r\n this._changeDetectorRefs.push(componentRef.changeDetectorRef);\r\n this.tick();\r\n this._rootComponents.push(componentRef);\r\n this._bootstrapListeners.forEach(function (listener) { return listener(componentRef); });\r\n };\r\n /** @internal */\r\n ApplicationRef_.prototype._unloadComponent = function (componentRef) {\r\n if (!collection_1.ListWrapper.contains(this._rootComponents, componentRef)) {\r\n return;\r\n }\r\n this.unregisterChangeDetector(componentRef.changeDetectorRef);\r\n collection_1.ListWrapper.remove(this._rootComponents, componentRef);\r\n };\r\n Object.defineProperty(ApplicationRef_.prototype, \"injector\", {\r\n get: function () { return this._injector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApplicationRef_.prototype, \"zone\", {\r\n get: function () { return this._zone; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ApplicationRef_.prototype.tick = function () {\r\n if (this._runningTick) {\r\n throw new exceptions_1.BaseException(\"ApplicationRef.tick is called recursively\");\r\n }\r\n var s = ApplicationRef_._tickScope();\r\n try {\r\n this._runningTick = true;\r\n this._changeDetectorRefs.forEach(function (detector) { return detector.detectChanges(); });\r\n if (this._enforceNoNewChanges) {\r\n this._changeDetectorRefs.forEach(function (detector) { return detector.checkNoChanges(); });\r\n }\r\n }\r\n finally {\r\n this._runningTick = false;\r\n profile_1.wtfLeave(s);\r\n }\r\n };\r\n ApplicationRef_.prototype.dispose = function () {\r\n // TODO(alxhub): Dispose of the NgZone.\r\n collection_1.ListWrapper.clone(this._rootComponents).forEach(function (ref) { return ref.destroy(); });\r\n this._disposeListeners.forEach(function (dispose) { return dispose(); });\r\n this._platform._applicationDisposed(this);\r\n };\r\n Object.defineProperty(ApplicationRef_.prototype, \"componentTypes\", {\r\n get: function () { return this._rootComponentTypes; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n ApplicationRef_._tickScope = profile_1.wtfCreateScope('ApplicationRef#tick()');\r\n ApplicationRef_ = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [PlatformRef_, ng_zone_1.NgZone, di_1.Injector])\r\n ], ApplicationRef_);\r\n return ApplicationRef_;\r\n}(ApplicationRef));\r\nexports.ApplicationRef_ = ApplicationRef_;\r\n/**\r\n * @internal\r\n */\r\nexports.PLATFORM_CORE_PROVIDERS = lang_1.CONST_EXPR([PlatformRef_, lang_1.CONST_EXPR(new di_1.Provider(PlatformRef, { useExisting: PlatformRef_ }))]);\r\n/**\r\n * @internal\r\n */\r\nexports.APPLICATION_CORE_PROVIDERS = lang_1.CONST_EXPR([\r\n lang_1.CONST_EXPR(new di_1.Provider(ng_zone_1.NgZone, { useFactory: createNgZone, deps: lang_1.CONST_EXPR([]) })),\r\n ApplicationRef_,\r\n lang_1.CONST_EXPR(new di_1.Provider(ApplicationRef, { useExisting: ApplicationRef_ }))\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdCQUFrQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ25FLHFCQVVPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsbUJBQXNELHNCQUFzQixDQUFDLENBQUE7QUFDN0UsbUNBQTRFLHNCQUFzQixDQUFDLENBQUE7QUFDbkcsc0JBQWtFLDJCQUEyQixDQUFDLENBQUE7QUFDOUYsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFDM0QsNEJBQStDLDJDQUEyQyxDQUFDLENBQUE7QUFDM0YsbUNBQWdDLDZDQUE2QyxDQUFDLENBQUE7QUFFOUUsMkJBS08sZ0NBQWdDLENBQUMsQ0FBQTtBQUN4Qyx3QkFBc0IsMkJBQTJCLENBQUMsQ0FBQTtBQUNsRCx3QkFBbUQsbUJBQW1CLENBQUMsQ0FBQTtBQUd2RTs7R0FFRztBQUNIO0lBQ0UsTUFBTSxDQUFDLElBQUksZ0JBQU0sQ0FBQyxFQUFDLG9CQUFvQixFQUFFLHdCQUFpQixFQUFFLEVBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFGZSxvQkFBWSxlQUUzQixDQUFBO0FBRUQsSUFBSSxTQUFzQixDQUFDO0FBQzNCLElBQUksaUJBQWlCLEdBQVksS0FBSyxDQUFDO0FBRXZDOzs7R0FHRztBQUNILHdCQUErQixRQUFrQjtJQUMvQyxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLDBCQUFhLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMs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QUMsZ0JBQU0sRUFBRSxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFVLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ2xGLGVBQWU7SUFDZixpQkFBVSxDQUFDLElBQUksYUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDO0NBQ3pFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Tmdab25lLCBOZ1pvbmVFcnJvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvem9uZS9uZ196b25lJztcbmltcG9ydCB7XG4gIFR5cGUsXG4gIGlzQmxhbmssXG4gIGlzUHJlc2VudCxcbiAgYXNzZXJ0aW9uc0VuYWJsZWQsXG4gIHByaW50LFxuICBJU19EQVJULFxuICBDT05TVF9FWFBSLFxuICBsb2NrTW9kZSxcbiAgaXNQcm9taXNlXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3Byb3ZpZGUsIFByb3ZpZGVyLCBJbmplY3RvciwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtBUFBfSURfUkFORE9NX1BST1ZJREVSLCBQTEFURk9STV9JTklUSUFMSVpFUiwgQVBQX0lOSVRJQUxJWkVSfSBmcm9tICcuL2FwcGxpY2F0aW9uX3Rva2Vucyc7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyLCBQcm9taXNlQ29tcGxldGVyLCBPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtUZXN0YWJpbGl0eVJlZ2lzdHJ5LCBUZXN0YWJpbGl0eX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvdGVzdGFiaWxpdHkvdGVzdGFiaWxpdHknO1xuaW1wb3J0IHtDb21wb25lbnRSZXNvbHZlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2NvbXBvbmVudF9yZXNvbHZlcic7XG5pbXBvcnQge0NvbXBvbmVudFJlZiwgQ29tcG9uZW50RmFjdG9yeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5JztcbmltcG9ydCB7XG4gIEJhc2VFeGNlcHRpb24sXG4gIFdyYXBwZWRFeGNlcHRpb24sXG4gIEV4Y2VwdGlvbkhhbmRsZXIsXG4gIHVuaW1wbGVtZW50ZWRcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7Q29uc29sZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY29uc29sZSc7XG5pbXBvcnQge3d0ZkxlYXZlLCB3dGZDcmVhdGVTY29wZSwgV3RmU2NvcGVGbn0gZnJvbSAnLi9wcm9maWxlL3Byb2ZpbGUnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0b3JfcmVmJztcblxuLyoqXG4gKiBDcmVhdGUgYW4gQW5ndWxhciB6b25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmdab25lKCk6IE5nWm9uZSB7XG4gIHJldHVybiBuZXcgTmdab25lKHtlbmFibGVMb25nU3RhY2tUcmFjZTogYXNzZXJ0aW9uc0VuYWJsZWQoKX0pO1xufVxuXG52YXIgX3BsYXRmb3JtOiBQbGF0Zm9ybVJlZjtcbnZhciBfaW5QbGF0Zm9ybUNyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBwbGF0Zm9ybS5cbiAqIFBsYXRmb3JtcyBoYXZlIHRvIGJlIGVhZ2VybHkgY3JlYXRlZCB2aWEgdGhpcyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBsYXRmb3JtKGluamVjdG9yOiBJbmplY3Rvcik6IFBsYXRmb3JtUmVmIHtcbiAgaWYgKF9pblBsYXRmb3JtQ3JlYXRlKSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ0FscmVhZHkgY3JlYXRpbmcgYSBwbGF0Zm9ybS4uLicpO1xuICB9XG4gIGlmIChpc1ByZXNlbnQoX3BsYXRmb3JtKSAmJiAhX3BsYXRmb3JtLmRpc3Bvc2VkKSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgIFwiVGhlcmUgY2FuIGJlIG9ubHkgb25lIHBsYXRmb3JtLiBEZXN0cm95IHRoZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS5cIik7XG4gIH1cbiAgbG9ja01vZGUoKTtcbiAgX2luUGxhdGZvcm1DcmVhdGUgPSB0cnVlO1xuICB0cnkge1xuICAgIF9wbGF0Zm9ybSA9IGluamVjdG9yLmdldChQbGF0Zm9ybVJlZik7XG4gIH0gZmluYWxseSB7XG4gICAgX2luUGxhdGZvcm1DcmVhdGUgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gX3BsYXRmb3JtO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGF0IHRoZXJlIGN1cnJlbnRseSBpcyBhIHBsYXRmb3JtXG4gKiB3aGljaCBjb250YWlucyB0aGUgZ2l2ZW4gdG9rZW4gYXMgYSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFBsYXRmb3JtKHJlcXVpcmVkVG9rZW46IGFueSk6IFBsYXRmb3JtUmVmIHtcbiAgdmFyIHBsYXRmb3JtID0gZ2V0UGxhdGZvcm0oKTtcbiAgaWYgKGlzQmxhbmsocGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ05vdCBwbGF0Zm9ybSBleGlzdHMhJyk7XG4gIH1cbiAgaWYgKGlzUHJlc2VudChwbGF0Zm9ybSkgJiYgaXNCbGFuayhwbGF0Zm9ybS5pbmplY3Rvci5nZXQocmVxdWlyZWRUb2tlbiwgbnVsbCkpKSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICdBIHBsYXRmb3JtIHdpdGggYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBjcmVhdGVkLiBQbGVhc2UgZGVzdHJveSBpdCBmaXJzdC4nKTtcbiAgfVxuICByZXR1cm4gcGxhdGZvcm07XG59XG5cbi8qKlxuICogRGlzcG9zZSB0aGUgZXhpc3RpbmcgcGxhdGZvcm0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwb3NlUGxhdGZvcm0oKTogdm9pZCB7XG4gIGlmIChpc1ByZXNlbnQoX3BsYXRmb3JtKSAmJiAhX3BsYXRmb3JtLmRpc3Bvc2VkKSB7XG4gICAgX3BsYXRmb3JtLmRpc3Bvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbGF0Zm9ybSgpOiBQbGF0Zm9ybVJlZiB7XG4gIHJldHVybiBpc1ByZXNlbnQoX3BsYXRmb3JtKSAmJiAhX3BsYXRmb3JtLmRpc3Bvc2VkID8gX3BsYXRmb3JtIDogbnVsbDtcbn1cblxuLyoqXG4gKiBTaG9ydGN1dCBmb3IgQXBwbGljYXRpb25SZWYuYm9vdHN0cmFwLlxuICogUmVxdWlyZXMgYSBwbGF0Zm9ybSB0aGUgYmUgY3JlYXRlZCBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcmVCb290c3RyYXAoaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSk6IENvbXBvbmVudFJlZiB7XG4gIHZhciBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmID0gaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcmV0dXJuIGFwcFJlZi5ib290c3RyYXAoY29tcG9uZW50RmFjdG9yeSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGNvbXBvbmVudEZhY3RvcnkgZm9yIHRoZSBnaXZlbiBjb21wb25lbnQsXG4gKiB3YWl0cyBmb3IgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBhbmQgYm9vdHN0cmFwcyB0aGUgY29tcG9uZW50LlxuICogUmVxdWlyZXMgYSBwbGF0Zm9ybSB0aGUgYmUgY3JlYXRlZCBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcmVMb2FkQW5kQm9vdHN0cmFwKGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRUeXBlOiBUeXBlKTogUHJvbWlzZTxDb21wb25lbnRSZWY+IHtcbiAgdmFyIGFwcFJlZjogQXBwbGljYXRpb25SZWYgPSBpbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xuICByZXR1cm4gYXBwUmVmLnJ1bigoKSA9PiB7XG4gICAgdmFyIGNvbXBvbmVudFJlc29sdmVyOiBDb21wb25lbnRSZXNvbHZlciA9IGluamVjdG9yLmdldChDb21wb25lbnRSZXNvbHZlcik7XG4gICAgcmV0dXJuIFByb21pc2VXcmFwcGVyXG4gICAgICAgIC5hbGwoW2NvbXBvbmVudFJlc29sdmVyLnJlc29sdmVDb21wb25lbnQoY29tcG9uZW50VHlwZSksIGFwcFJlZi53YWl0Rm9yQXN5bmNJbml0aWFsaXplcnMoKV0pXG4gICAgICAgIC50aGVuKChhcnIpID0+IGFwcFJlZi5ib290c3RyYXAoYXJyWzBdKSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBBbmd1bGFyIHBsYXRmb3JtIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgQW5ndWxhciBvbiBhIHdlYiBwYWdlLiBFYWNoIHBhZ2VcbiAqIGhhcyBleGFjdGx5IG9uZSBwbGF0Zm9ybSwgYW5kIHNlcnZpY2VzIChzdWNoIGFzIHJlZmxlY3Rpb24pIHdoaWNoIGFyZSBjb21tb25cbiAqIHRvIGV2ZXJ5IEFuZ3VsYXIgYXBwbGljYXRpb24gcnVubmluZyBvbiB0aGUgcGFnZSBhcmUgYm91bmQgaW4gaXRzIHNjb3BlLlxuICpcbiAqIEEgcGFnZSdzIHBsYXRmb3JtIGlzIGluaXRpYWxpemVkIGltcGxpY2l0bHkgd2hlbiB7QGxpbmsgYm9vdHN0cmFwfSgpIGlzIGNhbGxlZCwgb3JcbiAqIGV4cGxpY2l0bHkgYnkgY2FsbGluZyB7QGxpbmsgY3JlYXRlUGxhdGZvcm19KCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbGF0Zm9ybVJlZiB7XG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBwbGF0Zm9ybSBpcyBkaXNwb3NlZC5cbiAgICovXG4gIGFic3RyYWN0IHJlZ2lzdGVyRGlzcG9zZUxpc3RlbmVyKGRpc3Bvc2U6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgcGxhdGZvcm0ge0BsaW5rIEluamVjdG9yfSwgd2hpY2ggaXMgdGhlIHBhcmVudCBpbmplY3RvciBmb3JcbiAgICogZXZlcnkgQW5ndWxhciBhcHBsaWNhdGlvbiBvbiB0aGUgcGFnZSBhbmQgcHJvdmlkZXMgc2luZ2xldG9uIHByb3ZpZGVycy5cbiAgICovXG4gIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7IHRocm93IHVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICAvKipcbiAgICogRGVzdHJveSB0aGUgQW5ndWxhciBwbGF0Zm9ybSBhbmQgYWxsIEFuZ3VsYXIgYXBwbGljYXRpb25zIG9uIHRoZSBwYWdlLlxuICAgKi9cbiAgYWJzdHJhY3QgZGlzcG9zZSgpOiB2b2lkO1xuXG4gIGdldCBkaXNwb3NlZCgpOiBib29sZWFuIHsgdGhyb3cgdW5pbXBsZW1lbnRlZCgpOyB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVJlZl8gZXh0ZW5kcyBQbGF0Zm9ybVJlZiB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FwcGxpY2F0aW9uczogQXBwbGljYXRpb25SZWZbXSA9IFtdO1xuICAvKiogQGludGVybmFsICovXG4gIF9kaXNwb3NlTGlzdGVuZXJzOiBGdW5jdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghX2luUGxhdGZvcm1DcmVhdGUpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdQbGF0Zm9ybXMgaGF2ZSB0byBiZSBjcmVhdGVkIHZpYSBgY3JlYXRlUGxhdGZvcm1gIScpO1xuICAgIH1cbiAgICBsZXQgaW5pdHM6IEZ1bmN0aW9uW10gPSA8RnVuY3Rpb25bXT5faW5qZWN0b3IuZ2V0KFBMQVRGT1JNX0lOSVRJQUxJWkVSLCBudWxsKTtcbiAgICBpZiAoaXNQcmVzZW50KGluaXRzKSkgaW5pdHMuZm9yRWFjaChpbml0ID0+IGluaXQoKSk7XG4gIH1cblxuICByZWdpc3RlckRpc3Bvc2VMaXN0ZW5lcihkaXNwb3NlOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lcnMucHVzaChkaXNwb3NlKTsgfVxuXG4gIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7IHJldHVybiB0aGlzLl9pbmplY3RvcjsgfVxuXG4gIGdldCBkaXNwb3NlZCgpIHsgcmV0dXJuIHRoaXMuX2Rpc3Bvc2VkOyB9XG5cbiAgYWRkQXBwbGljYXRpb24oYXBwUmVmOiBBcHBsaWNhdGlvblJlZikgeyB0aGlzLl9hcHBsaWNhdGlvbnMucHVzaChhcHBSZWYpOyB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBMaXN0V3JhcHBlci5jbG9uZSh0aGlzLl9hcHBsaWNhdGlvbnMpLmZvckVhY2goKGFwcCkgPT4gYXBwLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fZGlzcG9zZUxpc3RlbmVycy5mb3JFYWNoKChkaXNwb3NlKSA9PiBkaXNwb3NlKCkpO1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FwcGxpY2F0aW9uRGlzcG9zZWQoYXBwOiBBcHBsaWNhdGlvblJlZik6IHZvaWQgeyBMaXN0V3JhcHBlci5yZW1vdmUodGhpcy5fYXBwbGljYXRpb25zLCBhcHApOyB9XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGEgcGFnZS5cbiAqXG4gKiBGb3IgbW9yZSBhYm91dCBBbmd1bGFyIGFwcGxpY2F0aW9ucywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsgYm9vdHN0cmFwfS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGxpY2F0aW9uUmVmIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIGVhY2ggdGltZSBgYm9vdHN0cmFwKClgIGlzIGNhbGxlZCB0byBib290c3RyYXBcbiAgICogYSBuZXcgcm9vdCBjb21wb25lbnQuXG4gICAqL1xuICBhYnN0cmFjdCByZWdpc3RlckJvb3RzdHJhcExpc3RlbmVyKGxpc3RlbmVyOiAocmVmOiBDb21wb25lbnRSZWYpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBkaXNwb3NlZC5cbiAgICovXG4gIGFic3RyYWN0IHJlZ2lzdGVyRGlzcG9zZUxpc3RlbmVyKGRpc3Bvc2U6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGFzeW5jaHJvbm91cyBhcHBsaWNhdGlvbiBpbml0aWFsaXplcnNcbiAgICogYXJlIGRvbmUuXG4gICAqL1xuICBhYnN0cmFjdCB3YWl0Rm9yQXN5bmNJbml0aWFsaXplcnMoKTogUHJvbWlzZTxhbnk+O1xuXG4gIC8qKlxuICAgKiBSdW5zIHRoZSBnaXZlbiBjYWxsYmFjayBpbiB0aGUgem9uZSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsYmFjay5cbiAgICogRXhjZXB0aW9ucyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgRXhjZXB0aW9uSGFuZGxlciBhbmQgcmV0aHJvd24uXG4gICAqL1xuICBhYnN0cmFjdCBydW4oY2FsbGJhY2s6IEZ1bmN0aW9uKTogYW55O1xuXG4gIC8qKlxuICAgKiBCb290c3RyYXAgYSBuZXcgY29tcG9uZW50IGF0IHRoZSByb290IGxldmVsIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogIyMjIEJvb3RzdHJhcCBwcm9jZXNzXG4gICAqXG4gICAqIFdoZW4gYm9vdHN0cmFwcGluZyBhIG5ldyByb290IGNvbXBvbmVudCBpbnRvIGFuIGFwcGxpY2F0aW9uLCBBbmd1bGFyIG1vdW50cyB0aGVcbiAgICogc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGNvbXBvbmVudCBvbnRvIERPTSBlbGVtZW50cyBpZGVudGlmaWVkIGJ5IHRoZSBbY29tcG9uZW50VHlwZV0nc1xuICAgKiBzZWxlY3RvciBhbmQga2lja3Mgb2ZmIGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uIHRvIGZpbmlzaCBpbml0aWFsaXppbmcgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICoge0BleGFtcGxlIGNvcmUvdHMvcGxhdGZvcm0vcGxhdGZvcm0udHMgcmVnaW9uPSdsb25nZm9ybSd9XG4gICAqL1xuICBhYnN0cmFjdCBib290c3RyYXAoY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSk6IENvbXBvbmVudFJlZjtcblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uIHtAbGluayBJbmplY3Rvcn0uXG4gICAqL1xuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gPEluamVjdG9yPnVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uIHtAbGluayBOZ1pvbmV9LlxuICAgKi9cbiAgZ2V0IHpvbmUoKTogTmdab25lIHsgcmV0dXJuIDxOZ1pvbmU+dW5pbXBsZW1lbnRlZCgpOyB9O1xuXG4gIC8qKlxuICAgKiBEaXNwb3NlIG9mIHRoaXMgYXBwbGljYXRpb24gYW5kIGFsbCBvZiBpdHMgY29tcG9uZW50cy5cbiAgICovXG4gIGFic3RyYWN0IGRpc3Bvc2UoKTogdm9pZDtcblxuICAvKipcbiAgICogSW52b2tlIHRoaXMgbWV0aG9kIHRvIGV4cGxpY2l0bHkgcHJvY2VzcyBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCBpdHMgc2lkZS1lZmZlY3RzLlxuICAgKlxuICAgKiBJbiBkZXZlbG9wbWVudCBtb2RlLCBgdGljaygpYCBhbHNvIHBlcmZvcm1zIGEgc2Vjb25kIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgdG8gZW5zdXJlIHRoYXQgbm9cbiAgICogZnVydGhlciBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4gSWYgYWRkaXRpb25hbCBjaGFuZ2VzIGFyZSBwaWNrZWQgdXAgZHVyaW5nIHRoaXMgc2Vjb25kIGN5Y2xlLFxuICAgKiBiaW5kaW5ncyBpbiB0aGUgYXBwIGhhdmUgc2lkZS1lZmZlY3RzIHRoYXQgY2Fubm90IGJlIHJlc29sdmVkIGluIGEgc2luZ2xlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogcGFzcy5cbiAgICogSW4gdGhpcyBjYXNlLCBBbmd1bGFyIHRocm93cyBhbiBlcnJvciwgc2luY2UgYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBjYW4gb25seSBoYXZlIG9uZSBjaGFuZ2VcbiAgICogZGV0ZWN0aW9uIHBhc3MgZHVyaW5nIHdoaWNoIGFsbCBjaGFuZ2UgZGV0ZWN0aW9uIG11c3QgY29tcGxldGUuXG4gICAqL1xuICBhYnN0cmFjdCB0aWNrKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgY29tcG9uZW50IHR5cGVzIHJlZ2lzdGVyZWQgdG8gdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIGdldCBjb21wb25lbnRUeXBlcygpOiBUeXBlW10geyByZXR1cm4gPFR5cGVbXT51bmltcGxlbWVudGVkKCk7IH07XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblJlZl8gZXh0ZW5kcyBBcHBsaWNhdGlvblJlZiB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF90aWNrU2NvcGU6IFd0ZlNjb3BlRm4gPSB3dGZDcmVhdGVTY29wZSgnQXBwbGljYXRpb25SZWYjdGljaygpJyk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9ib290c3RyYXBMaXN0ZW5lcnM6IEZ1bmN0aW9uW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9kaXNwb3NlTGlzdGVuZXJzOiBGdW5jdGlvbltdID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfcm9vdENvbXBvbmVudHM6IENvbXBvbmVudFJlZltdID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfcm9vdENvbXBvbmVudFR5cGVzOiBUeXBlW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZnM6IENoYW5nZURldGVjdG9yUmVmW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9ydW5uaW5nVGljazogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX2VuZm9yY2VOb05ld0NoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9leGNlcHRpb25IYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyO1xuXG4gIHByaXZhdGUgX2FzeW5jSW5pdERvbmVQcm9taXNlOiBQcm9taXNlPGFueT47XG4gIHByaXZhdGUgX2FzeW5jSW5pdERvbmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtUmVmXywgcHJpdmF0ZSBfem9uZTogTmdab25lLCBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHZhciB6b25lOiBOZ1pvbmUgPSBfaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgdGhpcy5fZW5mb3JjZU5vTmV3Q2hhbmdlcyA9IGFzc2VydGlvbnNFbmFibGVkKCk7XG4gICAgem9uZS5ydW4oKCkgPT4geyB0aGlzLl9leGNlcHRpb25IYW5kbGVyID0gX2luamVjdG9yLmdldChFeGNlcHRpb25IYW5kbGVyKTsgfSk7XG4gICAgdGhpcy5fYXN5bmNJbml0RG9uZVByb21pc2UgPSB0aGlzLnJ1bigoKSA9PiB7XG4gICAgICBsZXQgaW5pdHM6IEZ1bmN0aW9uW10gPSBfaW5qZWN0b3IuZ2V0KEFQUF9JTklUSUFMSVpFUiwgbnVsbCk7XG4gICAgICB2YXIgYXN5bmNJbml0UmVzdWx0cyA9IFtdO1xuICAgICAgdmFyIGFzeW5jSW5pdERvbmVQcm9taXNlO1xuICAgICAgaWYgKGlzUHJlc2VudChpbml0cykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBpbml0UmVzdWx0ID0gaW5pdHNbaV0oKTtcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKGluaXRSZXN1bHQpKSB7XG4gICAgICAgICAgICBhc3luY0luaXRSZXN1bHRzLnB1c2goaW5pdFJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYXN5bmNJbml0UmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzeW5jSW5pdERvbmVQcm9taXNlID1cbiAgICAgICAgICAgIFByb21pc2VXcmFwcGVyLmFsbChhc3luY0luaXRSZXN1bHRzKS50aGVuKChfKSA9PiB0aGlzLl9hc3luY0luaXREb25lID0gdHJ1ZSk7XG4gICAgICAgIHRoaXMuX2FzeW5jSW5pdERvbmUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2FzeW5jSW5pdERvbmUgPSB0cnVlO1xuICAgICAgICBhc3luY0luaXREb25lUHJvbWlzZSA9IFByb21pc2VXcmFwcGVyLnJlc29sdmUodHJ1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXN5bmNJbml0RG9uZVByb21pc2U7XG4gICAgfSk7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHpvbmUub25FcnJvciwgKGVycm9yOiBOZ1pvbmVFcnJvcikgPT4ge1xuICAgICAgdGhpcy5fZXhjZXB0aW9uSGFuZGxlci5jYWxsKGVycm9yLmVycm9yLCBlcnJvci5zdGFja1RyYWNlKTtcbiAgICB9KTtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fem9uZS5vbk1pY3JvdGFza0VtcHR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXykgPT4geyB0aGlzLl96b25lLnJ1bigoKSA9PiB7IHRoaXMudGljaygpOyB9KTsgfSk7XG4gIH1cblxuICByZWdpc3RlckJvb3RzdHJhcExpc3RlbmVyKGxpc3RlbmVyOiAocmVmOiBDb21wb25lbnRSZWYpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9ib290c3RyYXBMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gIH1cblxuICByZWdpc3RlckRpc3Bvc2VMaXN0ZW5lcihkaXNwb3NlOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lcnMucHVzaChkaXNwb3NlKTsgfVxuXG4gIHJlZ2lzdGVyQ2hhbmdlRGV0ZWN0b3IoY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLnB1c2goY2hhbmdlRGV0ZWN0b3IpO1xuICB9XG5cbiAgdW5yZWdpc3RlckNoYW5nZURldGVjdG9yKGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xuICAgIExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZnMsIGNoYW5nZURldGVjdG9yKTtcbiAgfVxuXG4gIHdhaXRGb3JBc3luY0luaXRpYWxpemVycygpOiBQcm9taXNlPGFueT4geyByZXR1cm4gdGhpcy5fYXN5bmNJbml0RG9uZVByb21pc2U7IH1cblxuICBydW4oY2FsbGJhY2s6IEZ1bmN0aW9uKTogYW55IHtcbiAgICB2YXIgem9uZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgdmFyIHJlc3VsdDtcbiAgICAvLyBOb3RlOiBEb24ndCB1c2Ugem9uZS5ydW5HdWFyZGVkIGFzIHdlIHdhbnQgdG8ga25vdyBhYm91dFxuICAgIC8vIHRoZSB0aHJvd24gZXhjZXB0aW9uIVxuICAgIC8vIE5vdGU6IHRoZSBjb21wbGV0ZXIgbmVlZHMgdG8gYmUgY3JlYXRlZCBvdXRzaWRlXG4gICAgLy8gb2YgYHpvbmUucnVuYCBhcyBEYXJ0IHN3YWxsb3dzIHJlamVjdGVkIHByb21pc2VzXG4gICAgLy8gdmlhIHRoZSBvbkVycm9yIGNhbGxiYWNrIG9mIHRoZSBwcm9taXNlLlxuICAgIHZhciBjb21wbGV0ZXIgPSBQcm9taXNlV3JhcHBlci5jb21wbGV0ZXIoKTtcbiAgICB6b25lLnJ1bigoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjaygpO1xuICAgICAgICBpZiAoaXNQcm9taXNlKHJlc3VsdCkpIHtcbiAgICAgICAgICBQcm9taXNlV3JhcHBlci50aGVuKHJlc3VsdCwgKHJlZikgPT4geyBjb21wbGV0ZXIucmVzb2x2ZShyZWYpOyB9LCAoZXJyLCBzdGFja1RyYWNlKSA9PiB7XG4gICAgICAgICAgICBjb21wbGV0ZXIucmVqZWN0KGVyciwgc3RhY2tUcmFjZSk7XG4gICAgICAgICAgICB0aGlzLl9leGNlcHRpb25IYW5kbGVyLmNhbGwoZXJyLCBzdGFja1RyYWNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLl9leGNlcHRpb25IYW5kbGVyLmNhbGwoZSwgZS5zdGFjayk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzUHJvbWlzZShyZXN1bHQpID8gY29tcGxldGVyLnByb21pc2UgOiByZXN1bHQ7XG4gIH1cblxuICBib290c3RyYXAoY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSk6IENvbXBvbmVudFJlZiB7XG4gICAgaWYgKCF0aGlzLl9hc3luY0luaXREb25lKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICAnQ2Fubm90IGJvb3RzdHJhcCBhcyB0aGVyZSBhcmUgc3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5nLiBXYWl0IGZvciB0aGVtIHVzaW5nIHdhaXRGb3JBc3luY0luaXRpYWxpemVycygpLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5fcm9vdENvbXBvbmVudFR5cGVzLnB1c2goY29tcG9uZW50RmFjdG9yeS5jb21wb25lbnRUeXBlKTtcbiAgICAgIHZhciBjb21wUmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5faW5qZWN0b3IsIFtdLCBjb21wb25lbnRGYWN0b3J5LnNlbGVjdG9yKTtcbiAgICAgIGNvbXBSZWYub25EZXN0cm95KCgpID0+IHsgdGhpcy5fdW5sb2FkQ29tcG9uZW50KGNvbXBSZWYpOyB9KTtcbiAgICAgIHZhciB0ZXN0YWJpbGl0eSA9IGNvbXBSZWYuaW5qZWN0b3IuZ2V0KFRlc3RhYmlsaXR5LCBudWxsKTtcbiAgICAgIGlmIChpc1ByZXNlbnQodGVzdGFiaWxpdHkpKSB7XG4gICAgICAgIGNvbXBSZWYuaW5qZWN0b3IuZ2V0KFRlc3RhYmlsaXR5UmVnaXN0cnkpXG4gICAgICAgICAgICAucmVnaXN0ZXJBcHBsaWNhdGlvbihjb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIHRlc3RhYmlsaXR5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9hZENvbXBvbmVudChjb21wUmVmKTtcbiAgICAgIGxldCBjID0gdGhpcy5faW5qZWN0b3IuZ2V0KENvbnNvbGUpO1xuICAgICAgaWYgKGFzc2VydGlvbnNFbmFibGVkKCkpIHtcbiAgICAgICAgYy5sb2coXG4gICAgICAgICAgICBcIkFuZ3VsYXIgMiBpcyBydW5uaW5nIGluIHRoZSBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8gZW5hYmxlIHRoZSBwcm9kdWN0aW9uIG1vZGUuXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXBSZWY7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9sb2FkQ29tcG9uZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLnB1c2goY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB0aGlzLnRpY2soKTtcbiAgICB0aGlzLl9yb290Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudFJlZik7XG4gICAgdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihjb21wb25lbnRSZWYpKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VubG9hZENvbXBvbmVudChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZik6IHZvaWQge1xuICAgIGlmICghTGlzdFdyYXBwZXIuY29udGFpbnModGhpcy5fcm9vdENvbXBvbmVudHMsIGNvbXBvbmVudFJlZikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51bnJlZ2lzdGVyQ2hhbmdlRGV0ZWN0b3IoY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmKTtcbiAgICBMaXN0V3JhcHBlci5yZW1vdmUodGhpcy5fcm9vdENvbXBvbmVudHMsIGNvbXBvbmVudFJlZik7XG4gIH1cblxuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdGhpcy5faW5qZWN0b3I7IH1cblxuICBnZXQgem9uZSgpOiBOZ1pvbmUgeyByZXR1cm4gdGhpcy5fem9uZTsgfVxuXG4gIHRpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3J1bm5pbmdUaWNrKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcIkFwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5XCIpO1xuICAgIH1cblxuICAgIHZhciBzID0gQXBwbGljYXRpb25SZWZfLl90aWNrU2NvcGUoKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5fcnVubmluZ1RpY2sgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLmZvckVhY2goKGRldGVjdG9yKSA9PiBkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgaWYgKHRoaXMuX2VuZm9yY2VOb05ld0NoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLmZvckVhY2goKGRldGVjdG9yKSA9PiBkZXRlY3Rvci5jaGVja05vQ2hhbmdlcygpKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcnVubmluZ1RpY2sgPSBmYWxzZTtcbiAgICAgIHd0ZkxlYXZlKHMpO1xuICAgIH1cbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgLy8gVE9ETyhhbHhodWIpOiBEaXNwb3NlIG9mIHRoZSBOZ1pvbmUuXG4gICAgTGlzdFdyYXBwZXIuY2xvbmUodGhpcy5fcm9vdENvbXBvbmVudHMpLmZvckVhY2goKHJlZikgPT4gcmVmLmRlc3Ryb3koKSk7XG4gICAgdGhpcy5fZGlzcG9zZUxpc3RlbmVycy5mb3JFYWNoKChkaXNwb3NlKSA9PiBkaXNwb3NlKCkpO1xuICAgIHRoaXMuX3BsYXRmb3JtLl9hcHBsaWNhdGlvbkRpc3Bvc2VkKHRoaXMpO1xuICB9XG5cbiAgZ2V0IGNvbXBvbmVudFR5cGVzKCk6IFR5cGVbXSB7IHJldHVybiB0aGlzLl9yb290Q29tcG9uZW50VHlwZXM7IH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0NPUkVfUFJPVklERVJTID1cbiAgICBDT05TVF9FWFBSKFtQbGF0Zm9ybVJlZl8sIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKFBsYXRmb3JtUmVmLCB7dXNlRXhpc3Rpbmc6IFBsYXRmb3JtUmVmX30pKV0pO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgQVBQTElDQVRJT05fQ09SRV9QUk9WSURFUlMgPSBDT05TVF9FWFBSKFtcbiAgQ09OU1RfRVhQUihuZXcgUHJvdmlkZXIoTmdab25lLCB7dXNlRmFjdG9yeTogY3JlYXRlTmdab25lLCBkZXBzOiBDT05TVF9FWFBSKFtdKX0pKSxcbiAgQXBwbGljYXRpb25SZWZfLFxuICBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihBcHBsaWNhdGlvblJlZiwge3VzZUV4aXN0aW5nOiBBcHBsaWNhdGlvblJlZl99KSlcbl0pO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar PromiseCompleter = (function () {\r\n function PromiseCompleter() {\r\n var _this = this;\r\n this.promise = new Promise(function (res, rej) {\r\n _this.resolve = res;\r\n _this.reject = rej;\r\n });\r\n }\r\n return PromiseCompleter;\r\n}());\r\nexports.PromiseCompleter = PromiseCompleter;\r\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n }\r\n PromiseWrapper.resolve = function (obj) { return Promise.resolve(obj); };\r\n PromiseWrapper.reject = function (obj, _) { return Promise.reject(obj); };\r\n // Note: We can't rename this method into `catch`, as this is not a valid\r\n // method name in Dart.\r\n PromiseWrapper.catchError = function (promise, onError) {\r\n return promise.catch(onError);\r\n };\r\n PromiseWrapper.all = function (promises) {\r\n if (promises.length == 0)\r\n return Promise.resolve([]);\r\n return Promise.all(promises);\r\n };\r\n PromiseWrapper.then = function (promise, success, rejection) {\r\n return promise.then(success, rejection);\r\n };\r\n PromiseWrapper.wrap = function (computation) {\r\n return new Promise(function (res, rej) {\r\n try {\r\n res(computation());\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n };\r\n PromiseWrapper.scheduleMicrotask = function (computation) {\r\n PromiseWrapper.then(PromiseWrapper.resolve(null), computation, function (_) { });\r\n };\r\n PromiseWrapper.isPromise = function (obj) { return obj instanceof Promise; };\r\n PromiseWrapper.completer = function () { return new PromiseCompleter(); };\r\n return PromiseWrapper;\r\n}());\r\nexports.PromiseWrapper = PromiseWrapper;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvcHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0E7SUFLRTtRQUxGLGlCQVdDO1FBTEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFDLEdBQUcsRUFBRSxHQUFHO1lBQ2xDLEtBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQ25CLEtBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNILHVCQUFDO0FBQUQsQ0FBQyxBQVhELElBV0M7QUFYWSx3QkFBZ0IsbUJBVzVCLENBQUE7QUFFRDtJQUFBO0lBdUNBLENBQUM7SUF0Q1Esc0JBQU8sR0FBZCxVQUFrQixHQUFNLElBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvRCxxQkFBTSxHQUFiLFVBQWMsR0FBUSxFQUFFLENBQUMsSUFBa0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhFLHlFQUF5RTtJQUN6RSx1QkFBdUI7SUFDaEIseUJBQVUsR0FBakIsVUFBcUIsT0FBbUIsRUFDbkIsT0FBMkM7UUFDOUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGtCQUFHLEdBQVYsVUFBYyxRQUE0QjtRQUN4QyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxtQkFBSSxHQUFYLFVBQWtCLE9BQW1CLEVBQUUsT0FBeUMsRUFDOUQsU0FBMkQ7UUFDM0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxtQkFBSSxHQUFYLFVBQWUsV0FBb0I7UUFDakMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFVBQUMsR0FBRyxFQUFFLEdBQUc7WUFDMUIsSUFBSSxDQUFDO2dCQUNILEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JCLENBQUU7WUFBQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNYLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNULENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxnQ0FBaUIsR0FBeEIsVUFBeUIsV0FBc0I7UUFDN0MsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFDLENBQUMsSUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sd0JBQVMsR0FBaEIsVUFBaUIsR0FBUSxJQUFhLE1BQU0sQ0FBQyxHQUFHLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUvRCx3QkFBUyxHQUFoQixjQUE2QyxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsRUFBSyxDQUFDLENBQUMsQ0FBQztJQUNsRixxQkFBQztBQUFELENBQUMsQUF2Q0QsSUF1Q0M7QUF2Q1ksc0JBQWMsaUJBdUMxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgY2xhc3MgUHJvbWlzZUNvbXBsZXRlcjxSPiB7XG4gIHByb21pc2U6IFByb21pc2U8Uj47XG4gIHJlc29sdmU6ICh2YWx1ZT86IFIgfCBQcm9taXNlTGlrZTxSPikgPT4gdm9pZDtcbiAgcmVqZWN0OiAoZXJyb3I/OiBhbnksIHN0YWNrVHJhY2U/OiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmUgPSByZXM7XG4gICAgICB0aGlzLnJlamVjdCA9IHJlajtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvbWlzZVdyYXBwZXIge1xuICBzdGF0aWMgcmVzb2x2ZTxUPihvYmo6IFQpOiBQcm9taXNlPFQ+IHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZShvYmopOyB9XG5cbiAgc3RhdGljIHJlamVjdChvYmo6IGFueSwgXyk6IFByb21pc2U8YW55PiB7IHJldHVybiBQcm9taXNlLnJlamVjdChvYmopOyB9XG5cbiAgLy8gTm90ZTogV2UgY2FuJ3QgcmVuYW1lIHRoaXMgbWV0aG9kIGludG8gYGNhdGNoYCwgYXMgdGhpcyBpcyBub3QgYSB2YWxpZFxuICAvLyBtZXRob2QgbmFtZSBpbiBEYXJ0LlxuICBzdGF0aWMgY2F0Y2hFcnJvcjxUPihwcm9taXNlOiBQcm9taXNlPFQ+LFxuICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yOiAoZXJyb3I6IGFueSkgPT4gVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHByb21pc2UuY2F0Y2gob25FcnJvcik7XG4gIH1cblxuICBzdGF0aWMgYWxsPFQ+KHByb21pc2VzOiAoVCB8IFByb21pc2U8VD4pW10pOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT0gMCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuXG4gIHN0YXRpYyB0aGVuPFQsIFU+KHByb21pc2U6IFByb21pc2U8VD4sIHN1Y2Nlc3M6ICh2YWx1ZTogVCkgPT4gVSB8IFByb21pc2VMaWtlPFU+LFxuICAgICAgICAgICAgICAgICAgICByZWplY3Rpb24/OiAoZXJyb3I6IGFueSwgc3RhY2s/OiBhbnkpID0+IFUgfCBQcm9taXNlTGlrZTxVPik6IFByb21pc2U8VT4ge1xuICAgIHJldHVybiBwcm9taXNlLnRoZW4oc3VjY2VzcywgcmVqZWN0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyB3cmFwPFQ+KGNvbXB1dGF0aW9uOiAoKSA9PiBUKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzKGNvbXB1dGF0aW9uKCkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWooZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgc2NoZWR1bGVNaWNyb3Rhc2soY29tcHV0YXRpb246ICgpID0+IGFueSk6IHZvaWQge1xuICAgIFByb21pc2VXcmFwcGVyLnRoZW4oUHJvbWlzZVdyYXBwZXIucmVzb2x2ZShudWxsKSwgY29tcHV0YXRpb24sIChfKSA9PiB7fSk7XG4gIH1cblxuICBzdGF0aWMgaXNQcm9taXNlKG9iajogYW55KTogYm9vbGVhbiB7IHJldHVybiBvYmogaW5zdGFuY2VvZiBQcm9taXNlOyB9XG5cbiAgc3RhdGljIGNvbXBsZXRlcjxUPigpOiBQcm9taXNlQ29tcGxldGVyPFQ+IHsgcmV0dXJuIG5ldyBQcm9taXNlQ29tcGxldGVyPFQ+KCk7IH1cbn1cbiJdfQ==","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = require('./Subscription');\nvar SubjectSubscription = (function(_super) {\n __extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, observer) {\n _super.call(this);\n this.subject = subject;\n this.observer = observer;\n this.isUnsubscribed = false;\n }\n SubjectSubscription.prototype.unsubscribe = function() {\n if (this.isUnsubscribed) {\n return;\n }\n this.isUnsubscribed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isUnsubscribed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.observer);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription_1.Subscription));\nexports.SubjectSubscription = SubjectSubscription;\n","/* */ \n\"use strict\";\nfunction throwError(e) { throw e; }\nexports.throwError = throwError;\n//# sourceMappingURL=throwError.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nvar ObjectUnsubscribedError = (function (_super) {\n __extends(ObjectUnsubscribedError, _super);\n function ObjectUnsubscribedError() {\n _super.call(this, 'object unsubscribed');\n this.name = 'ObjectUnsubscribedError';\n }\n return ObjectUnsubscribedError;\n}(Error));\nexports.ObjectUnsubscribedError = ObjectUnsubscribedError;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('./Observable');\nvar Subscriber_1 = require('./Subscriber');\nvar Subscription_1 = require('./Subscription');\nvar SubjectSubscription_1 = require('./SubjectSubscription');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\nvar throwError_1 = require('./util/throwError');\nvar ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError');\nvar Subject = (function(_super) {\n __extends(Subject, _super);\n function Subject(destination, source) {\n _super.call(this);\n this.destination = destination;\n this.source = source;\n this.observers = [];\n this.isUnsubscribed = false;\n this.isStopped = false;\n this.hasErrored = false;\n this.dispatching = false;\n this.hasCompleted = false;\n this.source = source;\n }\n Subject.prototype.lift = function(operator) {\n var subject = new Subject(this.destination || this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.add = function(subscription) {\n return Subscription_1.Subscription.prototype.add.call(this, subscription);\n };\n Subject.prototype.remove = function(subscription) {\n Subscription_1.Subscription.prototype.remove.call(this, subscription);\n };\n Subject.prototype.unsubscribe = function() {\n Subscription_1.Subscription.prototype.unsubscribe.call(this);\n };\n Subject.prototype._subscribe = function(subscriber) {\n if (this.source) {\n return this.source.subscribe(subscriber);\n } else {\n if (subscriber.isUnsubscribed) {\n return;\n } else if (this.hasErrored) {\n return subscriber.error(this.errorValue);\n } else if (this.hasCompleted) {\n return subscriber.complete();\n }\n this.throwIfUnsubscribed();\n var subscription = new SubjectSubscription_1.SubjectSubscription(this, subscriber);\n this.observers.push(subscriber);\n return subscription;\n }\n };\n Subject.prototype._unsubscribe = function() {\n this.source = null;\n this.isStopped = true;\n this.observers = null;\n this.destination = null;\n };\n Subject.prototype.next = function(value) {\n this.throwIfUnsubscribed();\n if (this.isStopped) {\n return;\n }\n this.dispatching = true;\n this._next(value);\n this.dispatching = false;\n if (this.hasErrored) {\n this._error(this.errorValue);\n } else if (this.hasCompleted) {\n this._complete();\n }\n };\n Subject.prototype.error = function(err) {\n this.throwIfUnsubscribed();\n if (this.isStopped) {\n return;\n }\n this.isStopped = true;\n this.hasErrored = true;\n this.errorValue = err;\n if (this.dispatching) {\n return;\n }\n this._error(err);\n };\n Subject.prototype.complete = function() {\n this.throwIfUnsubscribed();\n if (this.isStopped) {\n return;\n }\n this.isStopped = true;\n this.hasCompleted = true;\n if (this.dispatching) {\n return;\n }\n this._complete();\n };\n Subject.prototype.asObservable = function() {\n var observable = new SubjectObservable(this);\n return observable;\n };\n Subject.prototype._next = function(value) {\n if (this.destination) {\n this.destination.next(value);\n } else {\n this._finalNext(value);\n }\n };\n Subject.prototype._finalNext = function(value) {\n var index = -1;\n var observers = this.observers.slice(0);\n var len = observers.length;\n while (++index < len) {\n observers[index].next(value);\n }\n };\n Subject.prototype._error = function(err) {\n if (this.destination) {\n this.destination.error(err);\n } else {\n this._finalError(err);\n }\n };\n Subject.prototype._finalError = function(err) {\n var index = -1;\n var observers = this.observers;\n this.observers = null;\n this.isUnsubscribed = true;\n if (observers) {\n var len = observers.length;\n while (++index < len) {\n observers[index].error(err);\n }\n }\n this.isUnsubscribed = false;\n this.unsubscribe();\n };\n Subject.prototype._complete = function() {\n if (this.destination) {\n this.destination.complete();\n } else {\n this._finalComplete();\n }\n };\n Subject.prototype._finalComplete = function() {\n var index = -1;\n var observers = this.observers;\n this.observers = null;\n this.isUnsubscribed = true;\n if (observers) {\n var len = observers.length;\n while (++index < len) {\n observers[index].complete();\n }\n }\n this.isUnsubscribed = false;\n this.unsubscribe();\n };\n Subject.prototype.throwIfUnsubscribed = function() {\n if (this.isUnsubscribed) {\n throwError_1.throwError(new ObjectUnsubscribedError_1.ObjectUnsubscribedError());\n }\n };\n Subject.prototype[rxSubscriber_1.$$rxSubscriber] = function() {\n return new Subscriber_1.Subscriber(this);\n };\n Subject.create = function(destination, source) {\n return new Subject(destination, source);\n };\n return Subject;\n}(Observable_1.Observable));\nexports.Subject = Subject;\nvar SubjectObservable = (function(_super) {\n __extends(SubjectObservable, _super);\n function SubjectObservable(source) {\n _super.call(this);\n this.source = source;\n }\n return SubjectObservable;\n}(Observable_1.Observable));\n","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\nvar PromiseObservable = (function(_super) {\n __extends(PromiseObservable, _super);\n function PromiseObservable(promise, scheduler) {\n if (scheduler === void 0) {\n scheduler = null;\n }\n _super.call(this);\n this.promise = promise;\n this.scheduler = scheduler;\n }\n PromiseObservable.create = function(promise, scheduler) {\n if (scheduler === void 0) {\n scheduler = null;\n }\n return new PromiseObservable(promise, scheduler);\n };\n PromiseObservable.prototype._subscribe = function(subscriber) {\n var _this = this;\n var promise = this.promise;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.isUnsubscribed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n } else {\n promise.then(function(value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.isUnsubscribed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function(err) {\n if (!subscriber.isUnsubscribed) {\n subscriber.error(err);\n }\n }).then(null, function(err) {\n root_1.root.setTimeout(function() {\n throw err;\n });\n });\n }\n } else {\n if (this._isScalar) {\n if (!subscriber.isUnsubscribed) {\n return scheduler.schedule(dispatchNext, 0, {\n value: this.value,\n subscriber: subscriber\n });\n }\n } else {\n promise.then(function(value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.isUnsubscribed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, {\n value: value,\n subscriber: subscriber\n }));\n }\n }, function(err) {\n if (!subscriber.isUnsubscribed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, {\n err: err,\n subscriber: subscriber\n }));\n }\n }).then(null, function(err) {\n root_1.root.setTimeout(function() {\n throw err;\n });\n });\n }\n }\n };\n return PromiseObservable;\n}(Observable_1.Observable));\nexports.PromiseObservable = PromiseObservable;\nfunction dispatchNext(arg) {\n var value = arg.value,\n subscriber = arg.subscriber;\n if (!subscriber.isUnsubscribed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\nfunction dispatchError(arg) {\n var err = arg.err,\n subscriber = arg.subscriber;\n if (!subscriber.isUnsubscribed) {\n subscriber.error(err);\n }\n}\n","/* */ \n\"use strict\";\nvar root_1 = require('../util/root');\nfunction toPromise(PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n } else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function(resolve, reject) {\n var value;\n _this.subscribe(function(x) {\n return value = x;\n }, function(err) {\n return reject(err);\n }, function() {\n return resolve(value);\n });\n });\n}\nexports.toPromise = toPromise;\n","/* */ \n\"use strict\";\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map","/* */ \n\"use strict\";\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","/* */ \n\"use strict\";\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","/* */ \n\"use strict\";\nvar errorObject_1 = require('./errorObject');\nvar tryCatchTarget;\nfunction tryCatcher() {\n try {\n return tryCatchTarget.apply(this, arguments);\n } catch (e) {\n errorObject_1.errorObject.e = e;\n return errorObject_1.errorObject;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n","/* */ \n\"use strict\";\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = (function (_super) {\n __extends(UnsubscriptionError, _super);\n function UnsubscriptionError(errors) {\n _super.call(this);\n this.errors = errors;\n this.name = 'UnsubscriptionError';\n this.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n') : '';\n }\n return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n//# sourceMappingURL=UnsubscriptionError.js.map","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = require(\"npm:process@0.11.2/browser.js\");","module.exports = System._nodeRequire ? process : require('process');","module.exports = require(\"github:jspm/nodelibs-process@0.1.2/index\");","/* */ \n(function(process) {\n \"use strict\";\n var isArray_1 = require('./util/isArray');\n var isObject_1 = require('./util/isObject');\n var isFunction_1 = require('./util/isFunction');\n var tryCatch_1 = require('./util/tryCatch');\n var errorObject_1 = require('./util/errorObject');\n var UnsubscriptionError_1 = require('./util/UnsubscriptionError');\n var Subscription = (function() {\n function Subscription(unsubscribe) {\n this.isUnsubscribed = false;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function() {\n var hasErrors = false;\n var errors;\n if (this.isUnsubscribed) {\n return;\n }\n this.isUnsubscribed = true;\n var _a = this,\n _unsubscribe = _a._unsubscribe,\n _subscriptions = _a._subscriptions;\n this._subscriptions = null;\n if (isFunction_1.isFunction(_unsubscribe)) {\n var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n (errors = errors || []).push(errorObject_1.errorObject.e);\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || [];\n var err = errorObject_1.errorObject.e;\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(err.errors);\n } else {\n errors.push(err);\n }\n }\n }\n }\n }\n if (hasErrors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function(teardown) {\n if (!teardown || (teardown === this) || (teardown === Subscription.EMPTY)) {\n return;\n }\n var sub = teardown;\n switch (typeof teardown) {\n case 'function':\n sub = new Subscription(teardown);\n case 'object':\n if (sub.isUnsubscribed || typeof sub.unsubscribe !== 'function') {\n break;\n } else if (this.isUnsubscribed) {\n sub.unsubscribe();\n } else {\n (this._subscriptions || (this._subscriptions = [])).push(sub);\n }\n break;\n default:\n throw new Error('Unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n return sub;\n };\n Subscription.prototype.remove = function(subscription) {\n if (subscription == null || (subscription === this) || (subscription === Subscription.EMPTY)) {\n return;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function(empty) {\n empty.isUnsubscribed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n }());\n exports.Subscription = Subscription;\n})(require('process'));\n","/* */ \n\"use strict\";\nexports.empty = {\n isUnsubscribed: true,\n next: function (value) { },\n error: function (err) { throw err; },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = require('./util/isFunction');\nvar Subscription_1 = require('./Subscription');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\nvar Observer_1 = require('./Observer');\nvar Subscriber = (function(_super) {\n __extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n _super.call(this);\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.destination = destinationOrNext;\n this.destination.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n Subscriber.create = function(next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function() {\n if (this.isUnsubscribed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function(value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function(err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function() {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype[rxSubscriber_1.$$rxSubscriber] = function() {\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar SafeSubscriber = (function(_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parent, observerOrNext, error, complete) {\n _super.call(this);\n this._parent = _parent;\n var next;\n var context = this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n } else if (observerOrNext) {\n context = observerOrNext;\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (isFunction_1.isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n SafeSubscriber.prototype.next = function(value) {\n if (!this.isStopped && this._next) {\n var _parent = this._parent;\n if (!_parent.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parent, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function(err) {\n if (!this.isStopped) {\n var _parent = this._parent;\n if (this._error) {\n if (!_parent.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parent, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parent.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n } else {\n _parent.syncErrorValue = err;\n _parent.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function() {\n if (!this.isStopped) {\n var _parent = this._parent;\n if (this._complete) {\n if (!_parent.syncErrorThrowable) {\n this.__tryOrUnsub(this._complete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parent, this._complete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function(fn, value) {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n throw err;\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function(parent, fn, value) {\n try {\n fn.call(this._context, value);\n } catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function() {\n var _parent = this._parent;\n this._context = null;\n this._parent = null;\n _parent.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\n","/* */ \n\"use strict\";\nvar objectTypes = {\n 'boolean': false,\n 'function': true,\n 'object': true,\n 'number': false,\n 'string': false,\n 'undefined': false\n};\nexports.root = (objectTypes[typeof self] && self) || (objectTypes[typeof window] && window);\n/* tslint:disable:no-unused-variable */\nvar freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\nvar freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\nvar freeGlobal = objectTypes[typeof global] && global;\nif (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {\n exports.root = freeGlobal;\n}\n//# sourceMappingURL=root.js.map","/* */ \n\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nexports.$$rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ? Symbol.for('rxSubscriber') : '@@rxSubscriber';\n","/* */ \n\"use strict\";\nvar Subscriber_1 = require('../Subscriber');\nvar rxSubscriber_1 = require('../symbol/rxSubscriber');\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver === 'object') {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n } else if (typeof nextOrObserver[rxSubscriber_1.$$rxSubscriber] === 'function') {\n return nextOrObserver[rxSubscriber_1.$$rxSubscriber]();\n }\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n","/* */ \n'use strict';\n\nmodule.exports = function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* */ \n'use strict';\nmodule.exports = require('./ponyfill')(global || window || this);\n","module.exports = require(\"npm:symbol-observable@0.2.4/index\");","/* */ \n\"use strict\";\nvar root_1 = require('./util/root');\nvar toSubscriber_1 = require('./util/toSubscriber');\nvar $$observable = require('symbol-observable');\nvar Observable = (function() {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function(operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function(observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n sink.add(operator ? operator.call(sink, this) : this._subscribe(sink));\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n return sink;\n };\n Observable.prototype.forEach = function(next, PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n } else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function(resolve, reject) {\n var subscription = _this.subscribe(function(value) {\n if (subscription) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n } else {\n next(value);\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function(subscriber) {\n return this.source.subscribe(subscriber);\n };\n Observable.prototype[$$observable] = function() {\n return this;\n };\n Observable.create = function(subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\n","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nexports.PromiseWrapper = promise_1.PromiseWrapper;\r\nexports.PromiseCompleter = promise_1.PromiseCompleter;\r\nvar Subject_1 = require('rxjs/Subject');\r\nvar PromiseObservable_1 = require('rxjs/observable/PromiseObservable');\r\nvar toPromise_1 = require('rxjs/operator/toPromise');\r\nvar Observable_1 = require('rxjs/Observable');\r\nexports.Observable = Observable_1.Observable;\r\nvar Subject_2 = require('rxjs/Subject');\r\nexports.Subject = Subject_2.Subject;\r\nvar TimerWrapper = (function () {\r\n function TimerWrapper() {\r\n }\r\n TimerWrapper.setTimeout = function (fn, millis) {\r\n return lang_1.global.setTimeout(fn, millis);\r\n };\r\n TimerWrapper.clearTimeout = function (id) { lang_1.global.clearTimeout(id); };\r\n TimerWrapper.setInterval = function (fn, millis) {\r\n return lang_1.global.setInterval(fn, millis);\r\n };\r\n TimerWrapper.clearInterval = function (id) { lang_1.global.clearInterval(id); };\r\n return TimerWrapper;\r\n}());\r\nexports.TimerWrapper = TimerWrapper;\r\nvar ObservableWrapper = (function () {\r\n function ObservableWrapper() {\r\n }\r\n // TODO(vsavkin): when we use rxnext, try inferring the generic type from the first arg\r\n ObservableWrapper.subscribe = function (emitter, onNext, onError, onComplete) {\r\n if (onComplete === void 0) { onComplete = function () { }; }\r\n onError = (typeof onError === \"function\") && onError || lang_1.noop;\r\n onComplete = (typeof onComplete === \"function\") && onComplete || lang_1.noop;\r\n return emitter.subscribe({ next: onNext, error: onError, complete: onComplete });\r\n };\r\n ObservableWrapper.isObservable = function (obs) { return !!obs.subscribe; };\r\n /**\r\n * Returns whether `obs` has any subscribers listening to events.\r\n */\r\n ObservableWrapper.hasSubscribers = function (obs) { return obs.observers.length > 0; };\r\n ObservableWrapper.dispose = function (subscription) { subscription.unsubscribe(); };\r\n /**\r\n * @deprecated - use callEmit() instead\r\n */\r\n ObservableWrapper.callNext = function (emitter, value) { emitter.next(value); };\r\n ObservableWrapper.callEmit = function (emitter, value) { emitter.emit(value); };\r\n ObservableWrapper.callError = function (emitter, error) { emitter.error(error); };\r\n ObservableWrapper.callComplete = function (emitter) { emitter.complete(); };\r\n ObservableWrapper.fromPromise = function (promise) {\r\n return PromiseObservable_1.PromiseObservable.create(promise);\r\n };\r\n ObservableWrapper.toPromise = function (obj) { return toPromise_1.toPromise.call(obj); };\r\n return ObservableWrapper;\r\n}());\r\nexports.ObservableWrapper = ObservableWrapper;\r\n/**\r\n * Use by directives and components to emit custom Events.\r\n *\r\n * ### Examples\r\n *\r\n * In the following example, `Zippy` alternatively emits `open` and `close` events when its\r\n * title gets clicked:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'zippy',\r\n * template: `\r\n * <div class=\"zippy\">\r\n * <div (click)=\"toggle()\">Toggle</div>\r\n * <div [hidden]=\"!visible\">\r\n * <ng-content></ng-content>\r\n * </div>\r\n * </div>`})\r\n * export class Zippy {\r\n * visible: boolean = true;\r\n * @Output() open: EventEmitter<any> = new EventEmitter();\r\n * @Output() close: EventEmitter<any> = new EventEmitter();\r\n *\r\n * toggle() {\r\n * this.visible = !this.visible;\r\n * if (this.visible) {\r\n * this.open.emit(null);\r\n * } else {\r\n * this.close.emit(null);\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Use Rx.Observable but provides an adapter to make it work as specified here:\r\n * https://github.com/jhusain/observable-spec\r\n *\r\n * Once a reference implementation of the spec is available, switch to it.\r\n */\r\nvar EventEmitter = (function (_super) {\r\n __extends(EventEmitter, _super);\r\n /**\r\n * Creates an instance of [EventEmitter], which depending on [isAsync],\r\n * delivers events synchronously or asynchronously.\r\n */\r\n function EventEmitter(isAsync) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n _super.call(this);\r\n this._isAsync = isAsync;\r\n }\r\n EventEmitter.prototype.emit = function (value) { _super.prototype.next.call(this, value); };\r\n /**\r\n * @deprecated - use .emit(value) instead\r\n */\r\n EventEmitter.prototype.next = function (value) { _super.prototype.next.call(this, value); };\r\n EventEmitter.prototype.subscribe = function (generatorOrNext, error, complete) {\r\n var schedulerFn;\r\n var errorFn = function (err) { return null; };\r\n var completeFn = function () { return null; };\r\n if (generatorOrNext && typeof generatorOrNext === 'object') {\r\n schedulerFn = this._isAsync ? function (value) { setTimeout(function () { return generatorOrNext.next(value); }); } :\r\n function (value) { generatorOrNext.next(value); };\r\n if (generatorOrNext.error) {\r\n errorFn = this._isAsync ? function (err) { setTimeout(function () { return generatorOrNext.error(err); }); } :\r\n function (err) { generatorOrNext.error(err); };\r\n }\r\n if (generatorOrNext.complete) {\r\n completeFn = this._isAsync ? function () { setTimeout(function () { return generatorOrNext.complete(); }); } :\r\n function () { generatorOrNext.complete(); };\r\n }\r\n }\r\n else {\r\n schedulerFn = this._isAsync ? function (value) { setTimeout(function () { return generatorOrNext(value); }); } :\r\n function (value) { generatorOrNext(value); };\r\n if (error) {\r\n errorFn =\r\n this._isAsync ? function (err) { setTimeout(function () { return error(err); }); } : function (err) { error(err); };\r\n }\r\n if (complete) {\r\n completeFn =\r\n this._isAsync ? function () { setTimeout(function () { return complete(); }); } : function () { complete(); };\r\n }\r\n }\r\n return _super.prototype.subscribe.call(this, schedulerFn, errorFn, completeFn);\r\n };\r\n return EventEmitter;\r\n}(Subject_1.Subject));\r\nexports.EventEmitter = EventEmitter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFCQUEyQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3RELHdCQUErQyw2QkFBNkIsQ0FBQztBQUFyRSxrREFBYztBQUFFLHNEQUFxRDtBQUc3RSx3QkFBc0IsY0FBYyxDQUFDLENBQUE7QUFFckMsa0NBQWdDLG1DQUFtQyxDQUFDLENBQUE7QUFDcEUsMEJBQXdCLHlCQUF5QixDQUFDLENBQUE7QUFFbEQsMkJBQXlCLGlCQUFpQixDQUFDO0FBQW5DLDZDQUFtQztBQUMzQyx3QkFBc0IsY0FBYyxDQUFDO0FBQTdCLG9DQUE2QjtBQUVyQztJQUFBO0lBVUEsQ0FBQztJQVRRLHVCQUFVLEdBQWpCLFVBQWtCLEVBQTRCLEVBQUUsTUFBYztRQUM1RCxNQUFNLENBQUMsYUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNNLHlCQUFZLEdBQW5CLFVBQW9CLEVBQVUsSUFBVSxhQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzRCx3QkFBVyxHQUFsQixVQUFtQixFQUE0QixFQUFFLE1BQWM7UUFDN0QsTUFBTSxDQUFDLGFBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDTSwwQkFBYSxHQUFwQixVQUFxQixFQUFVLElBQVUsYUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsbUJBQUM7QUFBRCxDQUFDLEFBVkQsSUFVQztBQVZZLG9CQUFZLGVBVXhCLENBQUE7QUFFRDtJQUFBO0lBa0NBLENBQUM7SUFqQ0MsdUZBQXVGO0lBQ2hG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QUMsQ0FBQyxDQUFDLENBQUM7WUFFckUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDVixPQUFPO29CQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBQyxHQUFHLElBQU8sVUFBVSxDQUFDLGNBQU0sT0FBQSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQVYsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBQyxHQUFHLElBQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNiLFVBQVU7b0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFRLFVBQVUsQ0FBQyxjQUFNLE9BQUEsUUFBUSxFQUFFLEVBQVYsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sQ0FBQyxnQkFBSyxDQUFDLFNBQVMsWUFBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDSCxtQkFBQztBQUFELENBQUMsQUF2REQsQ0FBcUMsaUJBQU8sR0F1RDNDO0FBdkRZLG9CQUFZLGVBdUR4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnbG9iYWwsIG5vb3B9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5leHBvcnQge1Byb21pc2VXcmFwcGVyLCBQcm9taXNlQ29tcGxldGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL3Byb21pc2UnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMvU3ViamVjdCc7XG5cbmltcG9ydCB7UHJvbWlzZU9ic2VydmFibGV9IGZyb20gJ3J4anMvb2JzZXJ2YWJsZS9Qcm9taXNlT2JzZXJ2YWJsZSc7XG5pbXBvcnQge3RvUHJvbWlzZX0gZnJvbSAncnhqcy9vcGVyYXRvci90b1Byb21pc2UnO1xuXG5leHBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5leHBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMvU3ViamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBUaW1lcldyYXBwZXIge1xuICBzdGF0aWMgc2V0VGltZW91dChmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBtaWxsaXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGdsb2JhbC5zZXRUaW1lb3V0KGZuLCBtaWxsaXMpO1xuICB9XG4gIHN0YXRpYyBjbGVhclRpbWVvdXQoaWQ6IG51bWJlcik6IHZvaWQgeyBnbG9iYWwuY2xlYXJUaW1lb3V0KGlkKTsgfVxuXG4gIHN0YXRpYyBzZXRJbnRlcnZhbChmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBtaWxsaXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGdsb2JhbC5zZXRJbnRlcnZhbChmbiwgbWlsbGlzKTtcbiAgfVxuICBzdGF0aWMgY2xlYXJJbnRlcnZhbChpZDogbnVtYmVyKTogdm9pZCB7IGdsb2JhbC5jbGVhckludGVydmFsKGlkKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZVdyYXBwZXIge1xuICAvLyBUT0RPKHZzYXZraW4pOiB3aGVuIHdlIHVzZSByeG5leHQsIHRyeSBpbmZlcnJpbmcgdGhlIGdlbmVyaWMgdHlwZSBmcm9tIHRoZSBmaXJzdCBhcmdcbiAgc3RhdGljIHN1YnNjcmliZTxUPihlbWl0dGVyOiBhbnksIG9uTmV4dDogKHZhbHVlOiBUKSA9PiB2b2lkLCBvbkVycm9yPzogKGV4Y2VwdGlvbjogYW55KSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6ICgpID0+IHZvaWQgPSAoKSA9PiB7fSk6IE9iamVjdCB7XG4gICAgb25FcnJvciA9ICh0eXBlb2Ygb25FcnJvciA9PT0gXCJmdW5jdGlvblwiKSAmJiBvbkVycm9yIHx8IG5vb3A7XG4gICAgb25Db21wbGV0ZSA9ICh0eXBlb2Ygb25Db21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSAmJiBvbkNvbXBsZXRlIHx8IG5vb3A7XG4gICAgcmV0dXJuIGVtaXR0ZXIuc3Vic2NyaWJlKHtuZXh0OiBvbk5leHQsIGVycm9yOiBvbkVycm9yLCBjb21wbGV0ZTogb25Db21wbGV0ZX0pO1xuICB9XG5cbiAgc3RhdGljIGlzT2JzZXJ2YWJsZShvYnM6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gISFvYnMuc3Vic2NyaWJlOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBgb2JzYCBoYXMgYW55IHN1YnNjcmliZXJzIGxpc3RlbmluZyB0byBldmVudHMuXG4gICAqL1xuICBzdGF0aWMgaGFzU3Vic2NyaWJlcnMob2JzOiBFdmVudEVtaXR0ZXI8YW55Pik6IGJvb2xlYW4geyByZXR1cm4gb2JzLm9ic2VydmVycy5sZW5ndGggPiAwOyB9XG5cbiAgc3RhdGljIGRpc3Bvc2Uoc3Vic2NyaXB0aW9uOiBhbnkpIHsgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgY2FsbEVtaXQoKSBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgY2FsbE5leHQoZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4sIHZhbHVlOiBhbnkpIHsgZW1pdHRlci5uZXh0KHZhbHVlKTsgfVxuXG4gIHN0YXRpYyBjYWxsRW1pdChlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiwgdmFsdWU6IGFueSkgeyBlbWl0dGVyLmVtaXQodmFsdWUpOyB9XG5cbiAgc3RhdGljIGNhbGxFcnJvcihlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiwgZXJyb3I6IGFueSkgeyBlbWl0dGVyLmVycm9yKGVycm9yKTsgfVxuXG4gIHN0YXRpYyBjYWxsQ29tcGxldGUoZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4pIHsgZW1pdHRlci5jb21wbGV0ZSgpOyB9XG5cbiAgc3RhdGljIGZyb21Qcm9taXNlKHByb21pc2U6IFByb21pc2U8YW55Pik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2VPYnNlcnZhYmxlLmNyZWF0ZShwcm9taXNlKTtcbiAgfVxuXG4gIHN0YXRpYyB0b1Byb21pc2Uob2JqOiBPYnNlcnZhYmxlPGFueT4pOiBQcm9taXNlPGFueT4geyByZXR1cm4gdG9Qcm9taXNlLmNhbGwob2JqKTsgfVxufVxuXG4vKipcbiAqIFVzZSBieSBkaXJlY3RpdmVzIGFuZCBjb21wb25lbnRzIHRvIGVtaXQgY3VzdG9tIEV2ZW50cy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGBaaXBweWAgYWx0ZXJuYXRpdmVseSBlbWl0cyBgb3BlbmAgYW5kIGBjbG9zZWAgZXZlbnRzIHdoZW4gaXRzXG4gKiB0aXRsZSBnZXRzIGNsaWNrZWQ6XG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICd6aXBweScsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgIDxkaXYgY2xhc3M9XCJ6aXBweVwiPlxuICogICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZSgpXCI+VG9nZ2xlPC9kaXY+XG4gKiAgICAgPGRpdiBbaGlkZGVuXT1cIiF2aXNpYmxlXCI+XG4gKiAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gKiAgICAgPC9kaXY+XG4gKiAgPC9kaXY+YH0pXG4gKiBleHBvcnQgY2xhc3MgWmlwcHkge1xuICogICB2aXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAqICAgQE91dHB1dCgpIG9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICogICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICpcbiAqICAgdG9nZ2xlKCkge1xuICogICAgIHRoaXMudmlzaWJsZSA9ICF0aGlzLnZpc2libGU7XG4gKiAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICogICAgICAgdGhpcy5vcGVuLmVtaXQobnVsbCk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHRoaXMuY2xvc2UuZW1pdChudWxsKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFVzZSBSeC5PYnNlcnZhYmxlIGJ1dCBwcm92aWRlcyBhbiBhZGFwdGVyIHRvIG1ha2UgaXQgd29yayBhcyBzcGVjaWZpZWQgaGVyZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qaHVzYWluL29ic2VydmFibGUtc3BlY1xuICpcbiAqIE9uY2UgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNwZWMgaXMgYXZhaWxhYmxlLCBzd2l0Y2ggdG8gaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEVtaXR0ZXI8VD4gZXh0ZW5kcyBTdWJqZWN0PFQ+IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaXNBc3luYzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBbRXZlbnRFbWl0dGVyXSwgd2hpY2ggZGVwZW5kaW5nIG9uIFtpc0FzeW5jXSxcbiAgICogZGVsaXZlcnMgZXZlbnRzIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihpc0FzeW5jOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5faXNBc3luYyA9IGlzQXN5bmM7XG4gIH1cblxuICBlbWl0KHZhbHVlOiBUKSB7IHN1cGVyLm5leHQodmFsdWUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIC5lbWl0KHZhbHVlKSBpbnN0ZWFkXG4gICAqL1xuICBuZXh0KHZhbHVlOiBhbnkpIHsgc3VwZXIubmV4dCh2YWx1ZSk7IH1cblxuICBzdWJzY3JpYmUoZ2VuZXJhdG9yT3JOZXh0PzogYW55LCBlcnJvcj86IGFueSwgY29tcGxldGU/OiBhbnkpOiBhbnkge1xuICAgIGxldCBzY2hlZHVsZXJGbjtcbiAgICBsZXQgZXJyb3JGbiA9IChlcnI6IGFueSkgPT4gbnVsbDtcbiAgICBsZXQgY29tcGxldGVGbiA9ICgpID0+IG51bGw7XG5cbiAgICBpZiAoZ2VuZXJhdG9yT3JOZXh0ICYmIHR5cGVvZiBnZW5lcmF0b3JPck5leHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBzY2hlZHVsZXJGbiA9IHRoaXMuX2lzQXN5bmMgPyAodmFsdWUpID0+IHsgc2V0VGltZW91dCgoKSA9PiBnZW5lcmF0b3JPck5leHQubmV4dCh2YWx1ZSkpOyB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSkgPT4geyBnZW5lcmF0b3JPck5leHQubmV4dCh2YWx1ZSk7IH07XG5cbiAgICAgIGlmIChnZW5lcmF0b3JPck5leHQuZXJyb3IpIHtcbiAgICAgICAgZXJyb3JGbiA9IHRoaXMuX2lzQXN5bmMgPyAoZXJyKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZ2VuZXJhdG9yT3JOZXh0LmVycm9yKGVycikpOyB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyKSA9PiB7IGdlbmVyYXRvck9yTmV4dC5lcnJvcihlcnIpOyB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2VuZXJhdG9yT3JOZXh0LmNvbXBsZXRlKSB7XG4gICAgICAgIGNvbXBsZXRlRm4gPSB0aGlzLl9pc0FzeW5jID8gKCkgPT4geyBzZXRUaW1lb3V0KCgpID0+IGdlbmVyYXRvck9yTmV4dC5jb21wbGV0ZSgpKTsgfSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4geyBnZW5lcmF0b3JPck5leHQuY29tcGxldGUoKTsgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZWR1bGVyRm4gPSB0aGlzLl9pc0FzeW5jID8gKHZhbHVlKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZ2VuZXJhdG9yT3JOZXh0KHZhbHVlKSk7IH0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlKSA9PiB7IGdlbmVyYXRvck9yTmV4dCh2YWx1ZSk7IH07XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBlcnJvckZuID1cbiAgICAgICAgICAgIHRoaXMuX2lzQXN5bmMgPyAoZXJyKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZXJyb3IoZXJyKSk7IH0gOiAoZXJyKSA9PiB7IGVycm9yKGVycik7IH07XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21wbGV0ZSkge1xuICAgICAgICBjb21wbGV0ZUZuID1cbiAgICAgICAgICAgIHRoaXMuX2lzQXN5bmMgPyAoKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gY29tcGxldGUoKSk7IH0gOiAoKSA9PiB7IGNvbXBsZXRlKCk7IH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLnN1YnNjcmliZShzY2hlZHVsZXJGbiwgZXJyb3JGbiwgY29tcGxldGVGbik7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n(function (ViewType) {\r\n // A view that contains the host element with bound component directive.\r\n // Contains a COMPONENT view\r\n ViewType[ViewType[\"HOST\"] = 0] = \"HOST\";\r\n // The view of the component\r\n // Can contain 0 to n EMBEDDED views\r\n ViewType[ViewType[\"COMPONENT\"] = 1] = \"COMPONENT\";\r\n // A view that is embedded into another View via a <template> element\r\n // inside of a COMPONENT view\r\n ViewType[ViewType[\"EMBEDDED\"] = 2] = \"EMBEDDED\";\r\n})(exports.ViewType || (exports.ViewType = {}));\r\nvar ViewType = exports.ViewType;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld190eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsV0FBWSxRQUFRO0lBQ2xCLHdFQUF3RTtJQUN4RSw0QkFBNEI7SUFDNUIsdUNBQUksQ0FBQTtJQUNKLDRCQUE0QjtJQUM1QixvQ0FBb0M7SUFDcEMsaURBQVMsQ0FBQTtJQUNULHFFQUFxRTtJQUNyRSw2QkFBNkI7SUFDN0IsK0NBQVEsQ0FBQTtBQUNWLENBQUMsRUFWVyxnQkFBUSxLQUFSLGdCQUFRLFFBVW5CO0FBVkQsSUFBWSxRQUFRLEdBQVIsZ0JBVVgsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFZpZXdUeXBlIHtcbiAgLy8gQSB2aWV3IHRoYXQgY29udGFpbnMgdGhlIGhvc3QgZWxlbWVudCB3aXRoIGJvdW5kIGNvbXBvbmVudCBkaXJlY3RpdmUuXG4gIC8vIENvbnRhaW5zIGEgQ09NUE9ORU5UIHZpZXdcbiAgSE9TVCxcbiAgLy8gVGhlIHZpZXcgb2YgdGhlIGNvbXBvbmVudFxuICAvLyBDYW4gY29udGFpbiAwIHRvIG4gRU1CRURERUQgdmlld3NcbiAgQ09NUE9ORU5ULFxuICAvLyBBIHZpZXcgdGhhdCBpcyBlbWJlZGRlZCBpbnRvIGFub3RoZXIgVmlldyB2aWEgYSA8dGVtcGxhdGU+IGVsZW1lbnRcbiAgLy8gaW5zaWRlIG9mIGEgQ09NUE9ORU5UIHZpZXdcbiAgRU1CRURERURcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * A wrapper around a native element inside of a View.\r\n *\r\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\r\n * element.\r\n */\r\n// Note: We don't expose things like `Injector`, `ViewContainer`, ... here,\r\n// i.e. users have to ask for what they need. With that, we can build better analysis tools\r\n// and could do better codegen in the future.\r\nvar ElementRef = (function () {\r\n function ElementRef(nativeElement) {\r\n this.nativeElement = nativeElement;\r\n }\r\n return ElementRef;\r\n}());\r\nexports.ElementRef = ElementRef;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZWxlbWVudF9yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHO0FBQ0gsMkVBQTJFO0FBQzNFLDJGQUEyRjtBQUMzRiw2Q0FBNkM7QUFDN0M7SUFzQkUsb0JBQVksYUFBa0I7UUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUFDLENBQUM7SUFDekUsaUJBQUM7QUFBRCxDQUFDLEFBdkJELElBdUJDO0FBdkJZLGtCQUFVLGFBdUJ0QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGEgbmF0aXZlIGVsZW1lbnQgaW5zaWRlIG9mIGEgVmlldy5cbiAqXG4gKiBBbiBgRWxlbWVudFJlZmAgaXMgYmFja2VkIGJ5IGEgcmVuZGVyLXNwZWNpZmljIGVsZW1lbnQuIEluIHRoZSBicm93c2VyLCB0aGlzIGlzIHVzdWFsbHkgYSBET01cbiAqIGVsZW1lbnQuXG4gKi9cbi8vIE5vdGU6IFdlIGRvbid0IGV4cG9zZSB0aGluZ3MgbGlrZSBgSW5qZWN0b3JgLCBgVmlld0NvbnRhaW5lcmAsIC4uLiBoZXJlLFxuLy8gaS5lLiB1c2VycyBoYXZlIHRvIGFzayBmb3Igd2hhdCB0aGV5IG5lZWQuIFdpdGggdGhhdCwgd2UgY2FuIGJ1aWxkIGJldHRlciBhbmFseXNpcyB0b29sc1xuLy8gYW5kIGNvdWxkIGRvIGJldHRlciBjb2RlZ2VuIGluIHRoZSBmdXR1cmUuXG5leHBvcnQgY2xhc3MgRWxlbWVudFJlZiB7XG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBuYXRpdmUgZWxlbWVudCBvciBgbnVsbGAgaWYgZGlyZWN0IGFjY2VzcyB0byBuYXRpdmUgZWxlbWVudHMgaXMgbm90IHN1cHBvcnRlZFxuICAgKiAoZS5nLiB3aGVuIHRoZSBhcHBsaWNhdGlvbiBydW5zIGluIGEgd2ViIHdvcmtlcikuXG4gICAqXG4gICAqIDxkaXYgY2xhc3M9XCJjYWxsb3V0IGlzLWNyaXRpY2FsXCI+XG4gICAqICAgPGhlYWRlcj5Vc2Ugd2l0aCBjYXV0aW9uPC9oZWFkZXI+XG4gICAqICAgPHA+XG4gICAqICAgIFVzZSB0aGlzIEFQSSBhcyB0aGUgbGFzdCByZXNvcnQgd2hlbiBkaXJlY3QgYWNjZXNzIHRvIERPTSBpcyBuZWVkZWQuIFVzZSB0ZW1wbGF0aW5nIGFuZFxuICAgKiAgICBkYXRhLWJpbmRpbmcgcHJvdmlkZWQgYnkgQW5ndWxhciBpbnN0ZWFkLiBBbHRlcm5hdGl2ZWx5IHlvdSB0YWtlIGEgbG9vayBhdCB7QGxpbmsgUmVuZGVyZXJ9XG4gICAqICAgIHdoaWNoIHByb3ZpZGVzIEFQSSB0aGF0IGNhbiBzYWZlbHkgYmUgdXNlZCBldmVuIHdoZW4gZGlyZWN0IGFjY2VzcyB0byBuYXRpdmUgZWxlbWVudHMgaXMgbm90XG4gICAqICAgIHN1cHBvcnRlZC5cbiAgICogICA8L3A+XG4gICAqICAgPHA+XG4gICAqICAgIFJlbHlpbmcgb24gZGlyZWN0IERPTSBhY2Nlc3MgY3JlYXRlcyB0aWdodCBjb3VwbGluZyBiZXR3ZWVuIHlvdXIgYXBwbGljYXRpb24gYW5kIHJlbmRlcmluZ1xuICAgKiAgICBsYXllcnMgd2hpY2ggd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gc2VwYXJhdGUgdGhlIHR3byBhbmQgZGVwbG95IHlvdXIgYXBwbGljYXRpb24gaW50byBhXG4gICAqICAgIHdlYiB3b3JrZXIuXG4gICAqICAgPC9wPlxuICAgKiA8L2Rpdj5cbiAgICovXG4gIHB1YmxpYyBuYXRpdmVFbGVtZW50OiBhbnk7XG5cbiAgY29uc3RydWN0b3IobmF0aXZlRWxlbWVudDogYW55KSB7IHRoaXMubmF0aXZlRWxlbWVudCA9IG5hdGl2ZUVsZW1lbnQ7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar trace;\r\nvar events;\r\nfunction detectWTF() {\r\n var wtf = lang_1.global['wtf'];\r\n if (wtf) {\r\n trace = wtf['trace'];\r\n if (trace) {\r\n events = trace['events'];\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexports.detectWTF = detectWTF;\r\nfunction createScope(signature, flags) {\r\n if (flags === void 0) { flags = null; }\r\n return events.createScope(signature, flags);\r\n}\r\nexports.createScope = createScope;\r\nfunction leave(scope, returnValue) {\r\n trace.leaveScope(scope, returnValue);\r\n return returnValue;\r\n}\r\nexports.leave = leave;\r\nfunction startTimeRange(rangeType, action) {\r\n return trace.beginTimeRange(rangeType, action);\r\n}\r\nexports.startTimeRange = startTimeRange;\r\nfunction endTimeRange(range) {\r\n trace.endTimeRange(range);\r\n}\r\nexports.endTimeRange = endTimeRange;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3RmX2ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9wcm9maWxlL3d0Zl9pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBcUIsMEJBQTBCLENBQUMsQ0FBQTtBQTBCaEQsSUFBSSxLQUFZLENBQUM7QUFDakIsSUFBSSxNQUFjLENBQUM7QUFFbkI7SUFDRSxJQUFJLEdBQUcsR0FBUSxhQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNSLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNWLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNmLENBQUM7QUFWZSxpQkFBUyxZQVV4QixDQUFBO0FBRUQscUJBQTRCLFNBQWlCLEVBQUUsS0FBaUI7SUFBakIscUJBQWlCLEdBQWpCLFlBQWlCO0lBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRmUsbUJBQVcsY0FFMUIsQ0FBQTtBQUVELGVBQXlCLEtBQVksRUFBRSxXQUFlO0lBQ3BELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUhlLGFBQUssUUFHcEIsQ0FBQTtBQUVELHdCQUErQixTQUFpQixFQUFFLE1BQWM7SUFDOUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFGZSxzQkFBYyxpQkFFN0IsQ0FBQTtBQUVELHNCQUE2QixLQUFZO0lBQ3ZDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUZlLG9CQUFZLGVBRTNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dsb2JhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBBIHNjb3BlIGZ1bmN0aW9uIGZvciB0aGUgV2ViIFRyYWNpbmcgRnJhbWV3b3JrIChXVEYpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFd0ZlNjb3BlRm4geyAoYXJnMD86IGFueSwgYXJnMT86IGFueSk6IGFueTsgfVxuXG5pbnRlcmZhY2UgV1RGIHtcbiAgdHJhY2U6IFRyYWNlO1xufVxuXG5pbnRlcmZhY2UgVHJhY2Uge1xuICBldmVudHM6IEV2ZW50cztcbiAgbGVhdmVTY29wZShzY29wZTogU2NvcGUsIHJldHVyblZhbHVlOiBhbnkpO1xuICBiZWdpblRpbWVSYW5nZShyYW5nZVR5cGU6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpOiBSYW5nZTtcbiAgZW5kVGltZVJhbmdlKHJhbmdlOiBSYW5nZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2Uge31cblxuaW50ZXJmYWNlIEV2ZW50cyB7XG4gIGNyZWF0ZVNjb3BlKHNpZ25hdHVyZTogc3RyaW5nLCBmbGFnczogYW55KTogU2NvcGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGUgeyAoLi4uYXJncyk6IGFueTsgfVxuXG52YXIgdHJhY2U6IFRyYWNlO1xudmFyIGV2ZW50czogRXZlbnRzO1xuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0V1RGKCk6IGJvb2xlYW4ge1xuICB2YXIgd3RmOiBXVEYgPSBnbG9iYWxbJ3d0ZiddO1xuICBpZiAod3RmKSB7XG4gICAgdHJhY2UgPSB3dGZbJ3RyYWNlJ107XG4gICAgaWYgKHRyYWNlKSB7XG4gICAgICBldmVudHMgPSB0cmFjZVsnZXZlbnRzJ107XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2NvcGUoc2lnbmF0dXJlOiBzdHJpbmcsIGZsYWdzOiBhbnkgPSBudWxsKTogYW55IHtcbiAgcmV0dXJuIGV2ZW50cy5jcmVhdGVTY29wZShzaWduYXR1cmUsIGZsYWdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlYXZlPFQ+KHNjb3BlOiBTY29wZSwgcmV0dXJuVmFsdWU/OiBUKTogVCB7XG4gIHRyYWNlLmxlYXZlU2NvcGUoc2NvcGUsIHJldHVyblZhbHVlKTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRUaW1lUmFuZ2UocmFuZ2VUeXBlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKTogUmFuZ2Uge1xuICByZXR1cm4gdHJhY2UuYmVnaW5UaW1lUmFuZ2UocmFuZ2VUeXBlLCBhY3Rpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5kVGltZVJhbmdlKHJhbmdlOiBSYW5nZSk6IHZvaWQge1xuICB0cmFjZS5lbmRUaW1lUmFuZ2UocmFuZ2UpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar impl = require(\"./wtf_impl\");\r\n// Change exports to const once https://github.com/angular/ts2dart/issues/150\r\n/**\r\n * True if WTF is enabled.\r\n */\r\nexports.wtfEnabled = impl.detectWTF();\r\nfunction noopScope(arg0, arg1) {\r\n return null;\r\n}\r\n/**\r\n * Create trace scope.\r\n *\r\n * Scopes must be strictly nested and are analogous to stack frames, but\r\n * do not have to follow the stack frames. Instead it is recommended that they follow logical\r\n * nesting. You may want to use\r\n * [Event\r\n * Signatures](http://google.github.io/tracing-framework/instrumenting-code.html#custom-events)\r\n * as they are defined in WTF.\r\n *\r\n * Used to mark scope entry. The return value is used to leave the scope.\r\n *\r\n * var myScope = wtfCreateScope('MyClass#myMethod(ascii someVal)');\r\n *\r\n * someMethod() {\r\n * var s = myScope('Foo'); // 'Foo' gets stored in tracing UI\r\n * // DO SOME WORK HERE\r\n * return wtfLeave(s, 123); // Return value 123\r\n * }\r\n *\r\n * Note, adding try-finally block around the work to ensure that `wtfLeave` gets called can\r\n * negatively impact the performance of your application. For this reason we recommend that\r\n * you don't add them to ensure that `wtfLeave` gets called. In production `wtfLeave` is a noop and\r\n * so try-finally block has no value. When debugging perf issues, skipping `wtfLeave`, do to\r\n * exception, will produce incorrect trace, but presence of exception signifies logic error which\r\n * needs to be fixed before the app should be profiled. Add try-finally only when you expect that\r\n * an exception is expected during normal execution while profiling.\r\n *\r\n */\r\nexports.wtfCreateScope = exports.wtfEnabled ? impl.createScope : function (signature, flags) { return noopScope; };\r\n/**\r\n * Used to mark end of Scope.\r\n *\r\n * - `scope` to end.\r\n * - `returnValue` (optional) to be passed to the WTF.\r\n *\r\n * Returns the `returnValue for easy chaining.\r\n */\r\nexports.wtfLeave = exports.wtfEnabled ? impl.leave : function (s, r) { return r; };\r\n/**\r\n * Used to mark Async start. Async are similar to scope but they don't have to be strictly nested.\r\n * The return value is used in the call to [endAsync]. Async ranges only work if WTF has been\r\n * enabled.\r\n *\r\n * someMethod() {\r\n * var s = wtfStartTimeRange('HTTP:GET', 'some.url');\r\n * var future = new Future.delay(5).then((_) {\r\n * wtfEndTimeRange(s);\r\n * });\r\n * }\r\n */\r\nexports.wtfStartTimeRange = exports.wtfEnabled ? impl.startTimeRange : function (rangeType, action) { return null; };\r\n/**\r\n * Ends a async time range operation.\r\n * [range] is the return value from [wtfStartTimeRange] Async ranges only work if WTF has been\r\n * enabled.\r\n */\r\nexports.wtfEndTimeRange = exports.wtfEnabled ? impl.endTimeRange : function (r) {\r\n return null;\r\n};\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3Byb2ZpbGUvcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsSUFBWSxJQUFJLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFFbkMsNkVBQTZFO0FBRTdFOztHQUVHO0FBQ1Esa0JBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7QUFFekMsbUJBQW1CLElBQVUsRUFBRSxJQUFVO0lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDUSxzQkFBYyxHQUNyQixrQkFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBQyxTQUFpQixFQUFFLEtBQVcsSUFBSyxPQUFBLFNBQVMsRUFBVCxDQUFTLENBQUM7QUFFbEY7Ozs7Ozs7R0FPRztBQUNRLGdCQUFRLEdBQ2Ysa0JBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQUMsQ0FBTSxFQUFFLENBQU8sSUFBSyxPQUFBLENBQUMsRUFBRCxDQUFDLENBQUM7QUFFckQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDUSx5QkFBaUIsR0FDeEIsa0JBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQUMsU0FBaUIsRUFBRSxNQUFjLElBQUssT0FBQSxJQUFJLEVBQUosQ0FBSSxDQUFDO0FBRW5GOzs7O0dBSUc7QUFDUSx1QkFBZSxHQUF5QixrQkFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBQyxDQUFNO0lBQ0gsT0FBQSxJQUFJO0FBQUosQ0FBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtXdGZTY29wZUZufSBmcm9tICcuL3d0Zl9pbXBsJztcblxuaW1wb3J0ICogYXMgaW1wbCBmcm9tIFwiLi93dGZfaW1wbFwiO1xuXG4vLyBDaGFuZ2UgZXhwb3J0cyB0byBjb25zdCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3RzMmRhcnQvaXNzdWVzLzE1MFxuXG4vKipcbiAqIFRydWUgaWYgV1RGIGlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCB2YXIgd3RmRW5hYmxlZCA9IGltcGwuZGV0ZWN0V1RGKCk7XG5cbmZ1bmN0aW9uIG5vb3BTY29wZShhcmcwPzogYW55LCBhcmcxPzogYW55KTogYW55IHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRyYWNlIHNjb3BlLlxuICpcbiAqIFNjb3BlcyBtdXN0IGJlIHN0cmljdGx5IG5lc3RlZCBhbmQgYXJlIGFuYWxvZ291cyB0byBzdGFjayBmcmFtZXMsIGJ1dFxuICogZG8gbm90IGhhdmUgdG8gZm9sbG93IHRoZSBzdGFjayBmcmFtZXMuIEluc3RlYWQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGV5IGZvbGxvdyBsb2dpY2FsXG4gKiBuZXN0aW5nLiBZb3UgbWF5IHdhbnQgdG8gdXNlXG4gKiBbRXZlbnRcbiAqIFNpZ25hdHVyZXNdKGh0dHA6Ly9nb29nbGUuZ2l0aHViLmlvL3RyYWNpbmctZnJhbWV3b3JrL2luc3RydW1lbnRpbmctY29kZS5odG1sI2N1c3RvbS1ldmVudHMpXG4gKiBhcyB0aGV5IGFyZSBkZWZpbmVkIGluIFdURi5cbiAqXG4gKiBVc2VkIHRvIG1hcmsgc2NvcGUgZW50cnkuIFRoZSByZXR1cm4gdmFsdWUgaXMgdXNlZCB0byBsZWF2ZSB0aGUgc2NvcGUuXG4gKlxuICogICAgIHZhciBteVNjb3BlID0gd3RmQ3JlYXRlU2NvcGUoJ015Q2xhc3MjbXlNZXRob2QoYXNjaWkgc29tZVZhbCknKTtcbiAqXG4gKiAgICAgc29tZU1ldGhvZCgpIHtcbiAqICAgICAgICB2YXIgcyA9IG15U2NvcGUoJ0ZvbycpOyAvLyAnRm9vJyBnZXRzIHN0b3JlZCBpbiB0cmFjaW5nIFVJXG4gKiAgICAgICAgLy8gRE8gU09NRSBXT1JLIEhFUkVcbiAqICAgICAgICByZXR1cm4gd3RmTGVhdmUocywgMTIzKTsgLy8gUmV0dXJuIHZhbHVlIDEyM1xuICogICAgIH1cbiAqXG4gKiBOb3RlLCBhZGRpbmcgdHJ5LWZpbmFsbHkgYmxvY2sgYXJvdW5kIHRoZSB3b3JrIHRvIGVuc3VyZSB0aGF0IGB3dGZMZWF2ZWAgZ2V0cyBjYWxsZWQgY2FuXG4gKiBuZWdhdGl2ZWx5IGltcGFjdCB0aGUgcGVyZm9ybWFuY2Ugb2YgeW91ciBhcHBsaWNhdGlvbi4gRm9yIHRoaXMgcmVhc29uIHdlIHJlY29tbWVuZCB0aGF0XG4gKiB5b3UgZG9uJ3QgYWRkIHRoZW0gdG8gZW5zdXJlIHRoYXQgYHd0ZkxlYXZlYCBnZXRzIGNhbGxlZC4gSW4gcHJvZHVjdGlvbiBgd3RmTGVhdmVgIGlzIGEgbm9vcCBhbmRcbiAqIHNvIHRyeS1maW5hbGx5IGJsb2NrIGhhcyBubyB2YWx1ZS4gV2hlbiBkZWJ1Z2dpbmcgcGVyZiBpc3N1ZXMsIHNraXBwaW5nIGB3dGZMZWF2ZWAsIGRvIHRvXG4gKiBleGNlcHRpb24sIHdpbGwgcHJvZHVjZSBpbmNvcnJlY3QgdHJhY2UsIGJ1dCBwcmVzZW5jZSBvZiBleGNlcHRpb24gc2lnbmlmaWVzIGxvZ2ljIGVycm9yIHdoaWNoXG4gKiBuZWVkcyB0byBiZSBmaXhlZCBiZWZvcmUgdGhlIGFwcCBzaG91bGQgYmUgcHJvZmlsZWQuIEFkZCB0cnktZmluYWxseSBvbmx5IHdoZW4geW91IGV4cGVjdCB0aGF0XG4gKiBhbiBleGNlcHRpb24gaXMgZXhwZWN0ZWQgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24gd2hpbGUgcHJvZmlsaW5nLlxuICpcbiAqL1xuZXhwb3J0IHZhciB3dGZDcmVhdGVTY29wZTogKHNpZ25hdHVyZTogc3RyaW5nLCBmbGFncz86IGFueSkgPT4gaW1wbC5XdGZTY29wZUZuID1cbiAgICB3dGZFbmFibGVkID8gaW1wbC5jcmVhdGVTY29wZSA6IChzaWduYXR1cmU6IHN0cmluZywgZmxhZ3M/OiBhbnkpID0+IG5vb3BTY29wZTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hcmsgZW5kIG9mIFNjb3BlLlxuICpcbiAqIC0gYHNjb3BlYCB0byBlbmQuXG4gKiAtIGByZXR1cm5WYWx1ZWAgKG9wdGlvbmFsKSB0byBiZSBwYXNzZWQgdG8gdGhlIFdURi5cbiAqXG4gKiBSZXR1cm5zIHRoZSBgcmV0dXJuVmFsdWUgZm9yIGVhc3kgY2hhaW5pbmcuXG4gKi9cbmV4cG9ydCB2YXIgd3RmTGVhdmU6PFQ+KHNjb3BlOiBhbnksIHJldHVyblZhbHVlPzogVCkgPT4gVCA9XG4gICAgd3RmRW5hYmxlZCA/IGltcGwubGVhdmUgOiAoczogYW55LCByPzogYW55KSA9PiByO1xuXG4vKipcbiAqIFVzZWQgdG8gbWFyayBBc3luYyBzdGFydC4gQXN5bmMgYXJlIHNpbWlsYXIgdG8gc2NvcGUgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0byBiZSBzdHJpY3RseSBuZXN0ZWQuXG4gKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGNhbGwgdG8gW2VuZEFzeW5jXS4gQXN5bmMgcmFuZ2VzIG9ubHkgd29yayBpZiBXVEYgaGFzIGJlZW5cbiAqIGVuYWJsZWQuXG4gKlxuICogICAgIHNvbWVNZXRob2QoKSB7XG4gKiAgICAgICAgdmFyIHMgPSB3dGZTdGFydFRpbWVSYW5nZSgnSFRUUDpHRVQnLCAnc29tZS51cmwnKTtcbiAqICAgICAgICB2YXIgZnV0dXJlID0gbmV3IEZ1dHVyZS5kZWxheSg1KS50aGVuKChfKSB7XG4gKiAgICAgICAgICB3dGZFbmRUaW1lUmFuZ2Uocyk7XG4gKiAgICAgICAgfSk7XG4gKiAgICAgfVxuICovXG5leHBvcnQgdmFyIHd0ZlN0YXJ0VGltZVJhbmdlOiAocmFuZ2VUeXBlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKSA9PiBhbnkgPVxuICAgIHd0ZkVuYWJsZWQgPyBpbXBsLnN0YXJ0VGltZVJhbmdlIDogKHJhbmdlVHlwZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZykgPT4gbnVsbDtcblxuLyoqXG4gKiBFbmRzIGEgYXN5bmMgdGltZSByYW5nZSBvcGVyYXRpb24uXG4gKiBbcmFuZ2VdIGlzIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBbd3RmU3RhcnRUaW1lUmFuZ2VdIEFzeW5jIHJhbmdlcyBvbmx5IHdvcmsgaWYgV1RGIGhhcyBiZWVuXG4gKiBlbmFibGVkLlxuICovXG5leHBvcnQgdmFyIHd0ZkVuZFRpbWVSYW5nZTogKHJhbmdlOiBhbnkpID0+IHZvaWQgPSB3dGZFbmFibGVkID8gaW1wbC5lbmRUaW1lUmFuZ2UgOiAocjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar profile_1 = require('../profile/profile');\r\n/**\r\n * Represents a container where one or more Views can be attached.\r\n *\r\n * The container can contain two kinds of Views. Host Views, created by instantiating a\r\n * {@link Component} via {@link #createComponent}, and Embedded Views, created by instantiating an\r\n * {@link TemplateRef Embedded Template} via {@link #createEmbeddedView}.\r\n *\r\n * The location of the View Container within the containing View is specified by the Anchor\r\n * `element`. Each View Container can have only one Anchor Element and each Anchor Element can only\r\n * have a single View Container.\r\n *\r\n * Root elements of Views attached to this container become siblings of the Anchor Element in\r\n * the Rendered View.\r\n *\r\n * To access a `ViewContainerRef` of an Element, you can either place a {@link Directive} injected\r\n * with `ViewContainerRef` on the Element, or you obtain it via a {@link ViewChild} query.\r\n */\r\nvar ViewContainerRef = (function () {\r\n function ViewContainerRef() {\r\n }\r\n Object.defineProperty(ViewContainerRef.prototype, \"element\", {\r\n /**\r\n * Anchor element that specifies the location of this container in the containing View.\r\n * <!-- TODO: rename to anchorElement -->\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef.prototype, \"injector\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef.prototype, \"parentInjector\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef.prototype, \"length\", {\r\n /**\r\n * Returns the number of Views currently attached to this container.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return ViewContainerRef;\r\n}());\r\nexports.ViewContainerRef = ViewContainerRef;\r\nvar ViewContainerRef_ = (function () {\r\n function ViewContainerRef_(_element) {\r\n this._element = _element;\r\n /** @internal */\r\n this._createComponentInContainerScope = profile_1.wtfCreateScope('ViewContainerRef#createComponent()');\r\n /** @internal */\r\n this._insertScope = profile_1.wtfCreateScope('ViewContainerRef#insert()');\r\n /** @internal */\r\n this._removeScope = profile_1.wtfCreateScope('ViewContainerRef#remove()');\r\n /** @internal */\r\n this._detachScope = profile_1.wtfCreateScope('ViewContainerRef#detach()');\r\n }\r\n ViewContainerRef_.prototype.get = function (index) { return this._element.nestedViews[index].ref; };\r\n Object.defineProperty(ViewContainerRef_.prototype, \"length\", {\r\n get: function () {\r\n var views = this._element.nestedViews;\r\n return lang_1.isPresent(views) ? views.length : 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef_.prototype, \"element\", {\r\n get: function () { return this._element.elementRef; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef_.prototype, \"injector\", {\r\n get: function () { return this._element.injector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef_.prototype, \"parentInjector\", {\r\n get: function () { return this._element.parentInjector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n // TODO(rado): profile and decide whether bounds checks should be added\r\n // to the methods below.\r\n ViewContainerRef_.prototype.createEmbeddedView = function (templateRef, index) {\r\n if (index === void 0) { index = -1; }\r\n var viewRef = templateRef.createEmbeddedView();\r\n this.insert(viewRef, index);\r\n return viewRef;\r\n };\r\n ViewContainerRef_.prototype.createComponent = function (componentFactory, index, injector, projectableNodes) {\r\n if (index === void 0) { index = -1; }\r\n if (injector === void 0) { injector = null; }\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n var s = this._createComponentInContainerScope();\r\n var contextInjector = lang_1.isPresent(injector) ? injector : this._element.parentInjector;\r\n var componentRef = componentFactory.create(contextInjector, projectableNodes);\r\n this.insert(componentRef.hostView, index);\r\n return profile_1.wtfLeave(s, componentRef);\r\n };\r\n // TODO(i): refactor insert+remove into move\r\n ViewContainerRef_.prototype.insert = function (viewRef, index) {\r\n if (index === void 0) { index = -1; }\r\n var s = this._insertScope();\r\n if (index == -1)\r\n index = this.length;\r\n var viewRef_ = viewRef;\r\n this._element.attachView(viewRef_.internalView, index);\r\n return profile_1.wtfLeave(s, viewRef_);\r\n };\r\n ViewContainerRef_.prototype.indexOf = function (viewRef) {\r\n return collection_1.ListWrapper.indexOf(this._element.nestedViews, viewRef.internalView);\r\n };\r\n // TODO(i): rename to destroy\r\n ViewContainerRef_.prototype.remove = function (index) {\r\n if (index === void 0) { index = -1; }\r\n var s = this._removeScope();\r\n if (index == -1)\r\n index = this.length - 1;\r\n var view = this._element.detachView(index);\r\n view.destroy();\r\n // view is intentionally not returned to the client.\r\n profile_1.wtfLeave(s);\r\n };\r\n // TODO(i): refactor insert+remove into move\r\n ViewContainerRef_.prototype.detach = function (index) {\r\n if (index === void 0) { index = -1; }\r\n var s = this._detachScope();\r\n if (index == -1)\r\n index = this.length - 1;\r\n var view = this._element.detachView(index);\r\n return profile_1.wtfLeave(s, view.ref);\r\n };\r\n ViewContainerRef_.prototype.clear = function () {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this.remove(i);\r\n }\r\n };\r\n return ViewContainerRef_;\r\n}());\r\nexports.ViewContainerRef_ = ViewContainerRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19jb250YWluZXJfcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfY29udGFpbmVyX3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFDM0QsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFFN0QscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFDNUQsd0JBQW1ELG9CQUFvQixDQUFDLENBQUE7QUFTeEU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSDtJQUFBO0lBZ0ZBLENBQUM7SUEzRUMsc0JBQUkscUNBQU87UUFKWDs7O1dBR0c7YUFDSCxjQUE0QixNQUFNLENBQWEsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFakUsc0JBQUksc0NBQVE7YUFBWixjQUEyQixNQUFNLENBQVcsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFOUQsc0JBQUksNENBQWM7YUFBbEIsY0FBaUMsTUFBTSxDQUFXLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBZXBFLHNCQUFJLG9DQUFNO1FBSFY7O1dBRUc7YUFDSCxjQUF1QixNQUFNLENBQVMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7O0lBd0QxRCx1QkFBQztBQUFELENBQUMsQUFoRkQsSUFnRkM7QUFoRnFCLHdCQUFnQixtQkFnRnJDLENBQUE7QUFFRDtJQUNFLDJCQUFvQixRQUFvQjtRQUFwQixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBc0J4QyxnQkFBZ0I7UUFDaEIscUNBQWdDLEdBQzVCLHdCQUFjLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQVd6RCxnQkFBZ0I7UUFDaEIsaUJBQVksR0FBRyx3QkFBYyxDQUFDLDJCQUEyQixDQUFDLENB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LElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFqRkQsSUFpRkM7QUFqRlkseUJBQWlCLG9CQWlGN0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaS9pbmplY3Rvcic7XG5pbXBvcnQge2lzUHJlc2VudCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7d3RmQ3JlYXRlU2NvcGUsIHd0ZkxlYXZlLCBXdGZTY29wZUZufSBmcm9tICcuLi9wcm9maWxlL3Byb2ZpbGUnO1xuXG5pbXBvcnQge0FwcEVsZW1lbnR9IGZyb20gJy4vZWxlbWVudCc7XG5cbmltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnLi9lbGVtZW50X3JlZic7XG5pbXBvcnQge1RlbXBsYXRlUmVmLCBUZW1wbGF0ZVJlZl99IGZyb20gJy4vdGVtcGxhdGVfcmVmJztcbmltcG9ydCB7RW1iZWRkZWRWaWV3UmVmLCBWaWV3UmVmLCBWaWV3UmVmX30gZnJvbSAnLi92aWV3X3JlZic7XG5pbXBvcnQge0NvbXBvbmVudEZhY3RvcnksIENvbXBvbmVudFJlZn0gZnJvbSAnLi9jb21wb25lbnRfZmFjdG9yeSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbnRhaW5lciB3aGVyZSBvbmUgb3IgbW9yZSBWaWV3cyBjYW4gYmUgYXR0YWNoZWQuXG4gKlxuICogVGhlIGNvbnRhaW5lciBjYW4gY29udGFpbiB0d28ga2luZHMgb2YgVmlld3MuIEhvc3QgVmlld3MsIGNyZWF0ZWQgYnkgaW5zdGFudGlhdGluZyBhXG4gKiB7QGxpbmsgQ29tcG9uZW50fSB2aWEge0BsaW5rICNjcmVhdGVDb21wb25lbnR9LCBhbmQgRW1iZWRkZWQgVmlld3MsIGNyZWF0ZWQgYnkgaW5zdGFudGlhdGluZyBhblxuICoge0BsaW5rIFRlbXBsYXRlUmVmIEVtYmVkZGVkIFRlbXBsYXRlfSB2aWEge0BsaW5rICNjcmVhdGVFbWJlZGRlZFZpZXd9LlxuICpcbiAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgVmlldyBDb250YWluZXIgd2l0aGluIHRoZSBjb250YWluaW5nIFZpZXcgaXMgc3BlY2lmaWVkIGJ5IHRoZSBBbmNob3JcbiAqIGBlbGVtZW50YC4gRWFjaCBWaWV3IENvbnRhaW5lciBjYW4gaGF2ZSBvbmx5IG9uZSBBbmNob3IgRWxlbWVudCBhbmQgZWFjaCBBbmNob3IgRWxlbWVudCBjYW4gb25seVxuICogaGF2ZSBhIHNpbmdsZSBWaWV3IENvbnRhaW5lci5cbiAqXG4gKiBSb290IGVsZW1lbnRzIG9mIFZpZXdzIGF0dGFjaGVkIHRvIHRoaXMgY29udGFpbmVyIGJlY29tZSBzaWJsaW5ncyBvZiB0aGUgQW5jaG9yIEVsZW1lbnQgaW5cbiAqIHRoZSBSZW5kZXJlZCBWaWV3LlxuICpcbiAqIFRvIGFjY2VzcyBhIGBWaWV3Q29udGFpbmVyUmVmYCBvZiBhbiBFbGVtZW50LCB5b3UgY2FuIGVpdGhlciBwbGFjZSBhIHtAbGluayBEaXJlY3RpdmV9IGluamVjdGVkXG4gKiB3aXRoIGBWaWV3Q29udGFpbmVyUmVmYCBvbiB0aGUgRWxlbWVudCwgb3IgeW91IG9idGFpbiBpdCB2aWEgYSB7QGxpbmsgVmlld0NoaWxkfSBxdWVyeS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZpZXdDb250YWluZXJSZWYge1xuICAvKipcbiAgICogQW5jaG9yIGVsZW1lbnQgdGhhdCBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoaXMgY29udGFpbmVyIGluIHRoZSBjb250YWluaW5nIFZpZXcuXG4gICAqIDwhLS0gVE9ETzogcmVuYW1lIHRvIGFuY2hvckVsZW1lbnQgLS0+XG4gICAqL1xuICBnZXQgZWxlbWVudCgpOiBFbGVtZW50UmVmIHsgcmV0dXJuIDxFbGVtZW50UmVmPnVuaW1wbGVtZW50ZWQoKTsgfVxuXG4gIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7IHJldHVybiA8SW5qZWN0b3I+dW5pbXBsZW1lbnRlZCgpOyB9XG5cbiAgZ2V0IHBhcmVudEluamVjdG9yKCk6IEluamVjdG9yIHsgcmV0dXJuIDxJbmplY3Rvcj51bmltcGxlbWVudGVkKCk7IH1cblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIFZpZXdzIGluIHRoaXMgY29udGFpbmVyLlxuICAgKi9cbiAgYWJzdHJhY3QgY2xlYXIoKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUge0BsaW5rIFZpZXdSZWZ9IGZvciB0aGUgVmlldyBsb2NhdGVkIGluIHRoaXMgY29udGFpbmVyIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqL1xuICBhYnN0cmFjdCBnZXQoaW5kZXg6IG51bWJlcik6IFZpZXdSZWY7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBWaWV3cyBjdXJyZW50bHkgYXR0YWNoZWQgdG8gdGhpcyBjb250YWluZXIuXG4gICAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7IHJldHVybiA8bnVtYmVyPnVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICAvKipcbiAgICogSW5zdGFudGlhdGVzIGFuIEVtYmVkZGVkIFZpZXcgYmFzZWQgb24gdGhlIHtAbGluayBUZW1wbGF0ZVJlZiBgdGVtcGxhdGVSZWZgfSBhbmQgaW5zZXJ0cyBpdFxuICAgKiBpbnRvIHRoaXMgY29udGFpbmVyIGF0IHRoZSBzcGVjaWZpZWQgYGluZGV4YC5cbiAgICpcbiAgICogSWYgYGluZGV4YCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IFZpZXcgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgbGFzdCBWaWV3IGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHtAbGluayBWaWV3UmVmfSBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgVmlldy5cbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWYsIGluZGV4PzogbnVtYmVyKTogRW1iZWRkZWRWaWV3UmVmO1xuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZXMgYSBzaW5nbGUge0BsaW5rIENvbXBvbmVudH0gYW5kIGluc2VydHMgaXRzIEhvc3QgVmlldyBpbnRvIHRoaXMgY29udGFpbmVyIGF0IHRoZVxuICAgKiBzcGVjaWZpZWQgYGluZGV4YC5cbiAgICpcbiAgICogVGhlIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgdXNpbmcgaXRzIHtAbGluayBDb21wb25lbnRGYWN0b3J5fSB3aGljaCBjYW4gYmVcbiAgICogb2J0YWluZWQgdmlhIHtAbGluayBDb21wb25lbnRSZXNvbHZlciNyZXNvbHZlQ29tcG9uZW50fS5cbiAgICpcbiAgICogSWYgYGluZGV4YCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IFZpZXcgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgbGFzdCBWaWV3IGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IHRoZSB7QGxpbmsgSW5qZWN0b3J9IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHBhcmVudCBmb3IgdGhlIENvbXBvbmVudC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUge0BsaW5rIENvbXBvbmVudFJlZn0gb2YgdGhlIEhvc3QgVmlldyBjcmVhdGVkIGZvciB0aGUgbmV3bHkgaW5zdGFudGlhdGVkIENvbXBvbmVudC5cbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5LCBpbmRleD86IG51bWJlciwgaW5qZWN0b3I/OiBJbmplY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RhYmxlTm9kZXM/OiBhbnlbXVtdKTogQ29tcG9uZW50UmVmO1xuXG4gIC8qKlxuICAgKiBJbnNlcnRzIGEgVmlldyBpZGVudGlmaWVkIGJ5IGEge0BsaW5rIFZpZXdSZWZ9IGludG8gdGhlIGNvbnRhaW5lciBhdCB0aGUgc3BlY2lmaWVkIGBpbmRleGAuXG4gICAqXG4gICAqIElmIGBpbmRleGAgaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBWaWV3IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGxhc3QgVmlldyBpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBpbnNlcnRlZCB7QGxpbmsgVmlld1JlZn0uXG4gICAqL1xuICBhYnN0cmFjdCBpbnNlcnQodmlld1JlZjogVmlld1JlZiwgaW5kZXg/OiBudW1iZXIpOiBWaWV3UmVmO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgVmlldywgc3BlY2lmaWVkIHZpYSB7QGxpbmsgVmlld1JlZn0sIHdpdGhpbiB0aGUgY3VycmVudCBjb250YWluZXIgb3JcbiAgICogYC0xYCBpZiB0aGlzIGNvbnRhaW5lciBkb2Vzbid0IGNvbnRhaW4gdGhlIFZpZXcuXG4gICAqL1xuICBhYnN0cmFjdCBpbmRleE9mKHZpZXdSZWY6IFZpZXdSZWYpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGEgVmlldyBhdHRhY2hlZCB0byB0aGlzIGNvbnRhaW5lciBhdCB0aGUgc3BlY2lmaWVkIGBpbmRleGAuXG4gICAqXG4gICAqIElmIGBpbmRleGAgaXMgbm90IHNwZWNpZmllZCwgdGhlIGxhc3QgVmlldyBpbiB0aGUgY29udGFpbmVyIHdpbGwgYmUgcmVtb3ZlZC5cbiAgICovXG4gIGFic3RyYWN0IHJlbW92ZShpbmRleD86IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVzZSBhbG9uZyB3aXRoIHtAbGluayAjaW5zZXJ0fSB0byBtb3ZlIGEgVmlldyB3aXRoaW4gdGhlIGN1cnJlbnQgY29udGFpbmVyLlxuICAgKlxuICAgKiBJZiB0aGUgYGluZGV4YCBwYXJhbSBpcyBvbWl0dGVkLCB0aGUgbGFzdCB7QGxpbmsgVmlld1JlZn0gaXMgZGV0YWNoZWQuXG4gICAqL1xuICBhYnN0cmFjdCBkZXRhY2goaW5kZXg/OiBudW1iZXIpOiBWaWV3UmVmO1xufVxuXG5leHBvcnQgY2xhc3MgVmlld0NvbnRhaW5lclJlZl8gaW1wbGVtZW50cyBWaWV3Q29udGFpbmVyUmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogQXBwRWxlbWVudCkge31cblxuICBnZXQoaW5kZXg6IG51bWJlcik6IEVtYmVkZGVkVmlld1JlZiB7IHJldHVybiB0aGlzLl9lbGVtZW50Lm5lc3RlZFZpZXdzW2luZGV4XS5yZWY7IH1cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHZhciB2aWV3cyA9IHRoaXMuX2VsZW1lbnQubmVzdGVkVmlld3M7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh2aWV3cykgPyB2aWV3cy5sZW5ndGggOiAwO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKTogRWxlbWVudFJlZiB7IHJldHVybiB0aGlzLl9lbGVtZW50LmVsZW1lbnRSZWY7IH1cblxuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdGhpcy5fZWxlbWVudC5pbmplY3RvcjsgfVxuXG4gIGdldCBwYXJlbnRJbmplY3RvcigpOiBJbmplY3RvciB7IHJldHVybiB0aGlzLl9lbGVtZW50LnBhcmVudEluamVjdG9yOyB9XG5cbiAgLy8gVE9ETyhyYWRvKTogcHJvZmlsZSBhbmQgZGVjaWRlIHdoZXRoZXIgYm91bmRzIGNoZWNrcyBzaG91bGQgYmUgYWRkZWRcbiAgLy8gdG8gdGhlIG1ldGhvZHMgYmVsb3cuXG4gIGNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWYsIGluZGV4OiBudW1iZXIgPSAtMSk6IEVtYmVkZGVkVmlld1JlZiB7XG4gICAgdmFyIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZiA9IHRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldygpO1xuICAgIHRoaXMuaW5zZXJ0KHZpZXdSZWYsIGluZGV4KTtcbiAgICByZXR1cm4gdmlld1JlZjtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NyZWF0ZUNvbXBvbmVudEluQ29udGFpbmVyU2NvcGU6IFd0ZlNjb3BlRm4gPVxuICAgICAgd3RmQ3JlYXRlU2NvcGUoJ1ZpZXdDb250YWluZXJSZWYjY3JlYXRlQ29tcG9uZW50KCknKTtcblxuICBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSwgaW5kZXg6IG51bWJlciA9IC0xLCBpbmplY3RvcjogSW5qZWN0b3IgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2RlczogYW55W11bXSA9IG51bGwpOiBDb21wb25lbnRSZWYge1xuICAgIHZhciBzID0gdGhpcy5fY3JlYXRlQ29tcG9uZW50SW5Db250YWluZXJTY29wZSgpO1xuICAgIHZhciBjb250ZXh0SW5qZWN0b3IgPSBpc1ByZXNlbnQoaW5qZWN0b3IpID8gaW5qZWN0b3IgOiB0aGlzLl9lbGVtZW50LnBhcmVudEluamVjdG9yO1xuICAgIHZhciBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZShjb250ZXh0SW5qZWN0b3IsIHByb2plY3RhYmxlTm9kZXMpO1xuICAgIHRoaXMuaW5zZXJ0KGNvbXBvbmVudFJlZi5ob3N0VmlldywgaW5kZXgpO1xuICAgIHJldHVybiB3dGZMZWF2ZShzLCBjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaW5zZXJ0U2NvcGUgPSB3dGZDcmVhdGVTY29wZSgnVmlld0NvbnRhaW5lclJlZiNpbnNlcnQoKScpO1xuXG4gIC8vIFRPRE8oaSk6IHJlZmFjdG9yIGluc2VydCtyZW1vdmUgaW50byBtb3ZlXG4gIGluc2VydCh2aWV3UmVmOiBWaWV3UmVmLCBpbmRleDogbnVtYmVyID0gLTEpOiBWaWV3UmVmIHtcbiAgICB2YXIgcyA9IHRoaXMuX2luc2VydFNjb3BlKCk7XG4gICAgaWYgKGluZGV4ID09IC0xKSBpbmRleCA9IHRoaXMubGVuZ3RoO1xuICAgIHZhciB2aWV3UmVmXyA9IDxWaWV3UmVmXz52aWV3UmVmO1xuICAgIHRoaXMuX2VsZW1lbnQuYXR0YWNoVmlldyh2aWV3UmVmXy5pbnRlcm5hbFZpZXcsIGluZGV4KTtcbiAgICByZXR1cm4gd3RmTGVhdmUocywgdmlld1JlZl8pO1xuICB9XG5cbiAgaW5kZXhPZih2aWV3UmVmOiBWaWV3UmVmKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTGlzdFdyYXBwZXIuaW5kZXhPZih0aGlzLl9lbGVtZW50Lm5lc3RlZFZpZXdzLCAoPFZpZXdSZWZfPnZpZXdSZWYpLmludGVybmFsVmlldyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZW1vdmVTY29wZSA9IHd0ZkNyZWF0ZVNjb3BlKCdWaWV3Q29udGFpbmVyUmVmI3JlbW92ZSgpJyk7XG5cbiAgLy8gVE9ETyhpKTogcmVuYW1lIHRvIGRlc3Ryb3lcbiAgcmVtb3ZlKGluZGV4OiBudW1iZXIgPSAtMSk6IHZvaWQge1xuICAgIHZhciBzID0gdGhpcy5fcmVtb3ZlU2NvcGUoKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIGluZGV4ID0gdGhpcy5sZW5ndGggLSAxO1xuICAgIHZhciB2aWV3ID0gdGhpcy5fZWxlbWVudC5kZXRhY2hWaWV3KGluZGV4KTtcbiAgICB2aWV3LmRlc3Ryb3koKTtcbiAgICAvLyB2aWV3IGlzIGludGVudGlvbmFsbHkgbm90IHJldHVybmVkIHRvIHRoZSBjbGllbnQuXG4gICAgd3RmTGVhdmUocyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9kZXRhY2hTY29wZSA9IHd0ZkNyZWF0ZVNjb3BlKCdWaWV3Q29udGFpbmVyUmVmI2RldGFjaCgpJyk7XG5cbiAgLy8gVE9ETyhpKTogcmVmYWN0b3IgaW5zZXJ0K3JlbW92ZSBpbnRvIG1vdmVcbiAgZGV0YWNoKGluZGV4OiBudW1iZXIgPSAtMSk6IFZpZXdSZWYge1xuICAgIHZhciBzID0gdGhpcy5fZGV0YWNoU2NvcGUoKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIGluZGV4ID0gdGhpcy5sZW5ndGggLSAxO1xuICAgIHZhciB2aWV3ID0gdGhpcy5fZWxlbWVudC5kZXRhY2hWaWV3KGluZGV4KTtcbiAgICByZXR1cm4gd3RmTGVhdmUocywgdmlldy5yZWYpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucmVtb3ZlKGkpO1xuICAgIH1cbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar view_type_1 = require('./view_type');\r\nvar element_ref_1 = require('./element_ref');\r\nvar view_container_ref_1 = require('./view_container_ref');\r\n/**\r\n * An AppElement is created for elements that have a ViewContainerRef,\r\n * a nested component or a <template> element to keep data around\r\n * that is needed for later instantiations.\r\n */\r\nvar AppElement = (function () {\r\n function AppElement(index, parentIndex, parentView, nativeElement) {\r\n this.index = index;\r\n this.parentIndex = parentIndex;\r\n this.parentView = parentView;\r\n this.nativeElement = nativeElement;\r\n this.nestedViews = null;\r\n this.componentView = null;\r\n }\r\n Object.defineProperty(AppElement.prototype, \"elementRef\", {\r\n get: function () { return new element_ref_1.ElementRef(this.nativeElement); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppElement.prototype, \"vcRef\", {\r\n get: function () { return new view_container_ref_1.ViewContainerRef_(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AppElement.prototype.initComponent = function (component, componentConstructorViewQueries, view) {\r\n this.component = component;\r\n this.componentConstructorViewQueries = componentConstructorViewQueries;\r\n this.componentView = view;\r\n };\r\n Object.defineProperty(AppElement.prototype, \"parentInjector\", {\r\n get: function () { return this.parentView.injector(this.parentIndex); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppElement.prototype, \"injector\", {\r\n get: function () { return this.parentView.injector(this.index); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AppElement.prototype.mapNestedViews = function (nestedViewClass, callback) {\r\n var result = [];\r\n if (lang_1.isPresent(this.nestedViews)) {\r\n this.nestedViews.forEach(function (nestedView) {\r\n if (nestedView.clazz === nestedViewClass) {\r\n result.push(callback(nestedView));\r\n }\r\n });\r\n }\r\n return result;\r\n };\r\n AppElement.prototype.attachView = function (view, viewIndex) {\r\n if (view.type === view_type_1.ViewType.COMPONENT) {\r\n throw new exceptions_1.BaseException(\"Component views can't be moved!\");\r\n }\r\n var nestedViews = this.nestedViews;\r\n if (nestedViews == null) {\r\n nestedViews = [];\r\n this.nestedViews = nestedViews;\r\n }\r\n collection_1.ListWrapper.insert(nestedViews, viewIndex, view);\r\n var refRenderNode;\r\n if (viewIndex > 0) {\r\n var prevView = nestedViews[viewIndex - 1];\r\n refRenderNode = prevView.lastRootNode;\r\n }\r\n else {\r\n refRenderNode = this.nativeElement;\r\n }\r\n if (lang_1.isPresent(refRenderNode)) {\r\n view.renderer.attachViewAfter(refRenderNode, view.flatRootNodes);\r\n }\r\n view.addToContentChildren(this);\r\n };\r\n AppElement.prototype.detachView = function (viewIndex) {\r\n var view = collection_1.ListWrapper.removeAt(this.nestedViews, viewIndex);\r\n if (view.type === view_type_1.ViewType.COMPONENT) {\r\n throw new exceptions_1.BaseException(\"Component views can't be moved!\");\r\n }\r\n view.renderer.detachView(view.flatRootNodes);\r\n view.removeFromContentChildren(this);\r\n return view;\r\n };\r\n return AppElement;\r\n}());\r\nexports.AppElement = AppElement;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMzRCwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUs3RCwwQkFBdUIsYUFBYSxDQUFDLENBQUE7QUFDckMsNEJBQXlCLGVBQWUsQ0FBQyxDQUFBO0FBRXpDLG1DQUFrRCxzQkFBc0IsQ0FBQyxDQUFBO0FBSXpFOzs7O0dBSUc7QUFDSDtJQU9FLG9CQUFtQixLQUFhLEVBQVMsV0FBbUIsRUFBUyxVQUF3QixFQUMxRSxhQUFrQjtRQURsQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQzFFLGtCQUFhLEdBQWIsYUFBYSxDQUFLO1FBUDlCLGdCQUFXLEdBQW1CLElBQUksQ0FBQztRQUNuQyxrQkFBYSxHQUFpQixJQUFJLENBQUM7SUFNRixDQUFDO0lBRXpDLHNCQUFJLGtDQUFVO2FBQWQsY0FBK0IsTUFBTSxDQUFDLElBQUksd0JBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUUzRSxzQkFBSSw2QkFBSzthQUFULGNBQWlDLE1BQU0sQ0FBQyxJQUFJLHNDQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFdEUsa0NBQWEsR0FBYixVQUFjLFNBQWMsRUFBRSwrQkFBaUQsRUFDakUsSUFBa0I7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLCtCQUErQixHQUFHLCtCQUErQixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxzQkFBSSxzQ0FBYzthQUFsQixjQUFpQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDckYsc0JBQUksZ0NBQVE7YUFBWixjQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFekUsbUNBQWMsR0FBZCxVQUFlLGVBQW9CLEVBQUUsUUFBa0I7UUFDckQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFDLFVBQVU7Z0JBQ2xDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUdELCtCQUFVLEdBQVYsVUFBVyxJQUFrQixFQUFFLFNBQWlCO1FBQzlDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssb0JBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sSUFBSSwwQkFBYSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbkMsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNqQyxDQUFDO1FBQ0Qsd0JBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLGFBQWEsQ0FBQztRQUNsQixFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFDLGFBQWEsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3hDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELCtCQUFVLEdBQVYsVUFBVyxTQUFpQjtRQUMxQixJQUFJLElBQUksR0FBRyx3QkFBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssb0JBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sSUFBSSwwQkFBYSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF2RUQsSUF1RUM7QUF2RVksa0JBQVUsYUF1RXRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudCwgaXNCbGFuaywgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuaW1wb3J0IHtBcHBWaWV3fSBmcm9tICcuL3ZpZXcnO1xuaW1wb3J0IHtWaWV3VHlwZX0gZnJvbSAnLi92aWV3X3R5cGUnO1xuaW1wb3J0IHtFbGVtZW50UmVmfSBmcm9tICcuL2VsZW1lbnRfcmVmJztcblxuaW1wb3J0IHtWaWV3Q29udGFpbmVyUmVmLCBWaWV3Q29udGFpbmVyUmVmX30gZnJvbSAnLi92aWV3X2NvbnRhaW5lcl9yZWYnO1xuXG5pbXBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnLi9xdWVyeV9saXN0JztcblxuLyoqXG4gKiBBbiBBcHBFbGVtZW50IGlzIGNyZWF0ZWQgZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIFZpZXdDb250YWluZXJSZWYsXG4gKiBhIG5lc3RlZCBjb21wb25lbnQgb3IgYSA8dGVtcGxhdGU+IGVsZW1lbnQgdG8ga2VlcCBkYXRhIGFyb3VuZFxuICogdGhhdCBpcyBuZWVkZWQgZm9yIGxhdGVyIGluc3RhbnRpYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQXBwRWxlbWVudCB7XG4gIHB1YmxpYyBuZXN0ZWRWaWV3czogQXBwVmlldzxhbnk+W10gPSBudWxsO1xuICBwdWJsaWMgY29tcG9uZW50VmlldzogQXBwVmlldzxhbnk+ID0gbnVsbDtcblxuICBwdWJsaWMgY29tcG9uZW50OiBhbnk7XG4gIHB1YmxpYyBjb21wb25lbnRDb25zdHJ1Y3RvclZpZXdRdWVyaWVzOiBRdWVyeUxpc3Q8YW55PltdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgcGFyZW50SW5kZXg6IG51bWJlciwgcHVibGljIHBhcmVudFZpZXc6IEFwcFZpZXc8YW55PixcbiAgICAgICAgICAgICAgcHVibGljIG5hdGl2ZUVsZW1lbnQ6IGFueSkge31cblxuICBnZXQgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHsgcmV0dXJuIG5ldyBFbGVtZW50UmVmKHRoaXMubmF0aXZlRWxlbWVudCk7IH1cblxuICBnZXQgdmNSZWYoKTogVmlld0NvbnRhaW5lclJlZl8geyByZXR1cm4gbmV3IFZpZXdDb250YWluZXJSZWZfKHRoaXMpOyB9XG5cbiAgaW5pdENvbXBvbmVudChjb21wb25lbnQ6IGFueSwgY29tcG9uZW50Q29uc3RydWN0b3JWaWV3UXVlcmllczogUXVlcnlMaXN0PGFueT5bXSxcbiAgICAgICAgICAgICAgICB2aWV3OiBBcHBWaWV3PGFueT4pIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmNvbXBvbmVudENvbnN0cnVjdG9yVmlld1F1ZXJpZXMgPSBjb21wb25lbnRDb25zdHJ1Y3RvclZpZXdRdWVyaWVzO1xuICAgIHRoaXMuY29tcG9uZW50VmlldyA9IHZpZXc7XG4gIH1cblxuICBnZXQgcGFyZW50SW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdGhpcy5wYXJlbnRWaWV3LmluamVjdG9yKHRoaXMucGFyZW50SW5kZXgpOyB9XG4gIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7IHJldHVybiB0aGlzLnBhcmVudFZpZXcuaW5qZWN0b3IodGhpcy5pbmRleCk7IH1cblxuICBtYXBOZXN0ZWRWaWV3cyhuZXN0ZWRWaWV3Q2xhc3M6IGFueSwgY2FsbGJhY2s6IEZ1bmN0aW9uKTogYW55W10ge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMubmVzdGVkVmlld3MpKSB7XG4gICAgICB0aGlzLm5lc3RlZFZpZXdzLmZvckVhY2goKG5lc3RlZFZpZXcpID0+IHtcbiAgICAgICAgaWYgKG5lc3RlZFZpZXcuY2xhenogPT09IG5lc3RlZFZpZXdDbGFzcykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNhbGxiYWNrKG5lc3RlZFZpZXcpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG4gIGF0dGFjaFZpZXcodmlldzogQXBwVmlldzxhbnk+LCB2aWV3SW5kZXg6IG51bWJlcikge1xuICAgIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLkNPTVBPTkVOVCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENvbXBvbmVudCB2aWV3cyBjYW4ndCBiZSBtb3ZlZCFgKTtcbiAgICB9XG4gICAgdmFyIG5lc3RlZFZpZXdzID0gdGhpcy5uZXN0ZWRWaWV3cztcbiAgICBpZiAobmVzdGVkVmlld3MgPT0gbnVsbCkge1xuICAgICAgbmVzdGVkVmlld3MgPSBbXTtcbiAgICAgIHRoaXMubmVzdGVkVmlld3MgPSBuZXN0ZWRWaWV3cztcbiAgICB9XG4gICAgTGlzdFdyYXBwZXIuaW5zZXJ0KG5lc3RlZFZpZXdzLCB2aWV3SW5kZXgsIHZpZXcpO1xuICAgIHZhciByZWZSZW5kZXJOb2RlO1xuICAgIGlmICh2aWV3SW5kZXggPiAwKSB7XG4gICAgICB2YXIgcHJldlZpZXcgPSBuZXN0ZWRWaWV3c1t2aWV3SW5kZXggLSAxXTtcbiAgICAgIHJlZlJlbmRlck5vZGUgPSBwcmV2Vmlldy5sYXN0Um9vdE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZlJlbmRlck5vZGUgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQocmVmUmVuZGVyTm9kZSkpIHtcbiAgICAgIHZpZXcucmVuZGVyZXIuYXR0YWNoVmlld0FmdGVyKHJlZlJlbmRlck5vZGUsIHZpZXcuZmxhdFJvb3ROb2Rlcyk7XG4gICAgfVxuICAgIHZpZXcuYWRkVG9Db250ZW50Q2hpbGRyZW4odGhpcyk7XG4gIH1cblxuICBkZXRhY2hWaWV3KHZpZXdJbmRleDogbnVtYmVyKTogQXBwVmlldzxhbnk+IHtcbiAgICB2YXIgdmlldyA9IExpc3RXcmFwcGVyLnJlbW92ZUF0KHRoaXMubmVzdGVkVmlld3MsIHZpZXdJbmRleCk7XG4gICAgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ29tcG9uZW50IHZpZXdzIGNhbid0IGJlIG1vdmVkIWApO1xuICAgIH1cblxuICAgIHZpZXcucmVuZGVyZXIuZGV0YWNoVmlldyh2aWV3LmZsYXRSb290Tm9kZXMpO1xuXG4gICAgdmlldy5yZW1vdmVGcm9tQ29udGVudENoaWxkcmVuKHRoaXMpO1xuICAgIHJldHVybiB2aWV3O1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar exceptions_1 = require(\"angular2/src/facade/exceptions\");\r\n/**\r\n * An error thrown if application changes model breaking the top-down data flow.\r\n *\r\n * This exception is only thrown in dev mode.\r\n *\r\n * <!-- TODO: Add a link once the dev mode option is configurable -->\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'parent',\r\n * template: `\r\n * <child [prop]=\"parentProp\"></child>\r\n * `,\r\n * directives: [forwardRef(() => Child)]\r\n * })\r\n * class Parent {\r\n * parentProp = \"init\";\r\n * }\r\n *\r\n * @Directive({selector: 'child', inputs: ['prop']})\r\n * class Child {\r\n * constructor(public parent: Parent) {}\r\n *\r\n * set prop(v) {\r\n * // this updates the parent property, which is disallowed during change detection\r\n * // this will result in ExpressionChangedAfterItHasBeenCheckedException\r\n * this.parent.parentProp = \"updated\";\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ExpressionChangedAfterItHasBeenCheckedException = (function (_super) {\r\n __extends(ExpressionChangedAfterItHasBeenCheckedException, _super);\r\n function ExpressionChangedAfterItHasBeenCheckedException(oldValue, currValue, context) {\r\n _super.call(this, \"Expression has changed after it was checked. \" +\r\n (\"Previous value: '\" + oldValue + \"'. Current value: '\" + currValue + \"'\"));\r\n }\r\n return ExpressionChangedAfterItHasBeenCheckedException;\r\n}(exceptions_1.BaseException));\r\nexports.ExpressionChangedAfterItHasBeenCheckedException = ExpressionChangedAfterItHasBeenCheckedException;\r\n/**\r\n * Thrown when an exception was raised during view creation, change detection or destruction.\r\n *\r\n * This error wraps the original exception to attach additional contextual information that can\r\n * be useful for debugging.\r\n */\r\nvar ViewWrappedException = (function (_super) {\r\n __extends(ViewWrappedException, _super);\r\n function ViewWrappedException(originalException, originalStack, context) {\r\n _super.call(this, \"Error in \" + context.source, originalException, originalStack, context);\r\n }\r\n return ViewWrappedException;\r\n}(exceptions_1.WrappedException));\r\nexports.ViewWrappedException = ViewWrappedException;\r\n/**\r\n * Thrown when a destroyed view is used.\r\n *\r\n * This error indicates a bug in the framework.\r\n *\r\n * This is an internal Angular error.\r\n */\r\nvar ViewDestroyedException = (function (_super) {\r\n __extends(ViewDestroyedException, _super);\r\n function ViewDestroyedException(details) {\r\n _super.call(this, \"Attempt to use a destroyed view: \" + details);\r\n }\r\n return ViewDestroyedException;\r\n}(exceptions_1.BaseException));\r\nexports.ViewDestroyedException = ViewDestroyedException;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9leGNlcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJCQUE4QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQUNIO0lBQXFFLG1FQUFhO0lBQ2hGLHlEQUFZLFFBQWEsRUFBRSxTQUFjLEVBQUUsT0FBWTtRQUNyRCxrQkFBTSwrQ0FBK0M7WUFDL0MsdUJBQW9CLFFBQVEsMkJBQXNCLFNBQVMsT0FBRyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNILHNEQUFDO0FBQUQsQ0FBQyxBQUxELENBQXFFLDBCQUFhLEdBS2pGO0FBTFksdURBQStDLGtEQUszRCxDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDSDtJQUEwQyx3Q0FBZ0I7SUFDeEQsOEJBQVksaUJBQXNCLEVBQUUsYUFBa0IsRUFBRSxPQUFZO1FBQ2xFLGtCQUFNLGNBQVksT0FBTyxDQUFDLE1BQVEsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNILDJCQUFDO0FBQUQsQ0FBQyxBQUpELENBQTBDLDZCQUFnQixHQUl6RDtBQUpZLDRCQUFvQix1QkFJaEMsQ0FBQTtBQUVEOzs7Ozs7R0FNRztBQUNIO0lBQTRDLDBDQUFhO0lBQ3ZELGdDQUFZLE9BQWU7UUFBSSxrQkFBTSxzQ0FBb0MsT0FBUyxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3hGLDZCQUFDO0FBQUQsQ0FBQyxBQUZELENBQTRDLDBCQUFhLEdBRXhEO0FBRlksOEJBQXNCLHlCQUVsQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zXCI7XG5cbi8qKlxuICogQW4gZXJyb3IgdGhyb3duIGlmIGFwcGxpY2F0aW9uIGNoYW5nZXMgbW9kZWwgYnJlYWtpbmcgdGhlIHRvcC1kb3duIGRhdGEgZmxvdy5cbiAqXG4gKiBUaGlzIGV4Y2VwdGlvbiBpcyBvbmx5IHRocm93biBpbiBkZXYgbW9kZS5cbiAqXG4gKiA8IS0tIFRPRE86IEFkZCBhIGxpbmsgb25jZSB0aGUgZGV2IG1vZGUgb3B0aW9uIGlzIGNvbmZpZ3VyYWJsZSAtLT5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhcmVudCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGNoaWxkIFtwcm9wXT1cInBhcmVudFByb3BcIj48L2NoaWxkPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbZm9yd2FyZFJlZigoKSA9PiBDaGlsZCldXG4gKiB9KVxuICogY2xhc3MgUGFyZW50IHtcbiAqICAgcGFyZW50UHJvcCA9IFwiaW5pdFwiO1xuICogfVxuICpcbiAqIEBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnY2hpbGQnLCBpbnB1dHM6IFsncHJvcCddfSlcbiAqIGNsYXNzIENoaWxkIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIHBhcmVudDogUGFyZW50KSB7fVxuICpcbiAqICAgc2V0IHByb3Aodikge1xuICogICAgIC8vIHRoaXMgdXBkYXRlcyB0aGUgcGFyZW50IHByb3BlcnR5LCB3aGljaCBpcyBkaXNhbGxvd2VkIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiAgICAgLy8gdGhpcyB3aWxsIHJlc3VsdCBpbiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvblxuICogICAgIHRoaXMucGFyZW50LnBhcmVudFByb3AgPSBcInVwZGF0ZWRcIjtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihvbGRWYWx1ZTogYW55LCBjdXJyVmFsdWU6IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgc3VwZXIoYEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIGAgK1xuICAgICAgICAgIGBQcmV2aW91cyB2YWx1ZTogJyR7b2xkVmFsdWV9Jy4gQ3VycmVudCB2YWx1ZTogJyR7Y3VyclZhbHVlfSdgKTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGR1cmluZyB2aWV3IGNyZWF0aW9uLCBjaGFuZ2UgZGV0ZWN0aW9uIG9yIGRlc3RydWN0aW9uLlxuICpcbiAqIFRoaXMgZXJyb3Igd3JhcHMgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiB0byBhdHRhY2ggYWRkaXRpb25hbCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHRoYXQgY2FuXG4gKiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZpZXdXcmFwcGVkRXhjZXB0aW9uIGV4dGVuZHMgV3JhcHBlZEV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG9yaWdpbmFsRXhjZXB0aW9uOiBhbnksIG9yaWdpbmFsU3RhY2s6IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgc3VwZXIoYEVycm9yIGluICR7Y29udGV4dC5zb3VyY2V9YCwgb3JpZ2luYWxFeGNlcHRpb24sIG9yaWdpbmFsU3RhY2ssIGNvbnRleHQpO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSBkZXN0cm95ZWQgdmlldyBpcyB1c2VkLlxuICpcbiAqIFRoaXMgZXJyb3IgaW5kaWNhdGVzIGEgYnVnIGluIHRoZSBmcmFtZXdvcmsuXG4gKlxuICogVGhpcyBpcyBhbiBpbnRlcm5hbCBBbmd1bGFyIGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgVmlld0Rlc3Ryb3llZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihkZXRhaWxzOiBzdHJpbmcpIHsgc3VwZXIoYEF0dGVtcHQgdG8gdXNlIGEgZGVzdHJveWVkIHZpZXc6ICR7ZGV0YWlsc31gKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar di_1 = require('angular2/src/core/di');\r\n/**\r\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\r\n */\r\nvar IterableDiffers = (function () {\r\n function IterableDiffers(factories) {\r\n this.factories = factories;\r\n }\r\n IterableDiffers.create = function (factories, parent) {\r\n if (lang_1.isPresent(parent)) {\r\n var copied = collection_1.ListWrapper.clone(parent.factories);\r\n factories = factories.concat(copied);\r\n return new IterableDiffers(factories);\r\n }\r\n else {\r\n return new IterableDiffers(factories);\r\n }\r\n };\r\n /**\r\n * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the\r\n * inherited {@link IterableDiffers} instance with the provided factories and return a new\r\n * {@link IterableDiffers} instance.\r\n *\r\n * The following example shows how to extend an existing list of factories,\r\n * which will only be applied to the injector for this component and its children.\r\n * This step is all that's required to make a new {@link IterableDiffer} available.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * viewProviders: [\r\n * IterableDiffers.extend([new ImmutableListDiffer()])\r\n * ]\r\n * })\r\n * ```\r\n */\r\n IterableDiffers.extend = function (factories) {\r\n return new di_1.Provider(IterableDiffers, {\r\n useFactory: function (parent) {\r\n if (lang_1.isBlank(parent)) {\r\n // Typically would occur when calling IterableDiffers.extend inside of dependencies passed\r\n // to\r\n // bootstrap(), which would override default pipes instead of extending them.\r\n throw new exceptions_1.BaseException('Cannot extend IterableDiffers without a parent injector');\r\n }\r\n return IterableDiffers.create(factories, parent);\r\n },\r\n // Dependency technically isn't optional, but we can provide a better error message this way.\r\n deps: [[IterableDiffers, new di_1.SkipSelfMetadata(), new di_1.OptionalMetadata()]]\r\n });\r\n };\r\n IterableDiffers.prototype.find = function (iterable) {\r\n var factory = this.factories.find(function (f) { return f.supports(iterable); });\r\n if (lang_1.isPresent(factory)) {\r\n return factory;\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Cannot find a differ supporting object '\" + iterable + \"' of type '\" + lang_1.getTypeNameForDebugging(iterable) + \"'\");\r\n }\r\n };\r\n IterableDiffers = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Array])\r\n ], IterableDiffers);\r\n return IterableDiffers;\r\n}());\r\nexports.IterableDiffers = IterableDiffers;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmFibGVfZGlmZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9pdGVyYWJsZV9kaWZmZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBaUUsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RiwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUUzRCxtQkFBdUUsc0JBQXNCLENBQUMsQ0FBQTtBQTBCOUY7O0dBRUc7QUFFSDtJQUNFLHlCQUFtQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtJQUFHLENBQUM7SUFFbEQsc0JBQU0sR0FBYixVQUFjLFNBQWtDLEVBQUUsTUFBd0I7UUFDeEUsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxNQUFNLEdBQUcsd0JBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0ksc0JBQU0sR0FBYixVQUFjLFNBQWtDO1FBQzlDLE1BQU0sQ0FBQyxJQUFJLGFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDbkMsVUFBVSxFQUFFLFVBQUMsTUFBdUI7Z0JBQ2xDLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLDBGQUEwRjtvQkFDMUYsS0FBSztvQkFDTCw2RUFBNkU7b0JBQzdFLE1BQU0sSUFBSSwwQkFBYSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFDRCw2RkFBNkY7WUFDN0YsSUFBSSxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxxQkFBZ0IsRUFBRSxFQUFFLElBQUkscUJBQWdCLEVBQUUsQ0FBQyxDQUFDO1NBQzFFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw4QkFBSSxHQUFKLFVBQUssUUFBYTtRQUNoQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQXBCLENBQW9CLENBQUMsQ0FBQztRQUM3RCxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSwwQkFBYSxDQUNuQiw2Q0FBMkMsUUFBUSxtQkFBYyw4QkFBdUIsQ0FBQyxRQUFRLENBQUMsTUFBRyxDQUFDLENBQUM7UUFDN0csQ0FBQztJQUNILENBQUM7SUF6REg7UUFBQyxZQUFLLEVBQUU7O3VCQUFBO0lBMERSLHNCQUFDO0FBQUQsQ0FBQyxBQXpERCxJQXlEQztBQXpEWSx1QkFBZSxrQkF5RDNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudCwgQ09OU1QsIGdldFR5cGVOYW1lRm9yRGVidWdnaW5nfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuaW1wb3J0IHtQcm92aWRlciwgU2tpcFNlbGZNZXRhZGF0YSwgT3B0aW9uYWxNZXRhZGF0YSwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG4vKipcbiAqIEEgc3RyYXRlZ3kgZm9yIHRyYWNraW5nIGNoYW5nZXMgb3ZlciB0aW1lIHRvIGFuIGl0ZXJhYmxlLiBVc2VkIGZvciB7QGxpbmsgTmdGb3J9IHRvXG4gKiByZXNwb25kIHRvIGNoYW5nZXMgaW4gYW4gaXRlcmFibGUgYnkgZWZmZWN0aW5nIGVxdWl2YWxlbnQgY2hhbmdlcyBpbiB0aGUgRE9NLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhYmxlRGlmZmVyIHtcbiAgZGlmZihvYmplY3Q6IGFueSk6IGFueTtcbiAgb25EZXN0cm95KCk7XG59XG5cbi8qKlxuICAqIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHBhc3NlZCBpbnRvIHtAbGluayBOZ0Zvcn0gdGhhdCBkZWZpbmVzIGhvdyB0byB0cmFja1xuICAqIGl0ZW1zIGluIGFuIGl0ZXJhYmxlIChlLmcuIGJ5IGluZGV4IG9yIGlkKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrQnlGbiB7IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBhbnk7IH1cblxuXG4vKipcbiAqIFByb3ZpZGVzIGEgZmFjdG9yeSBmb3Ige0BsaW5rIEl0ZXJhYmxlRGlmZmVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJdGVyYWJsZURpZmZlckZhY3Rvcnkge1xuICBzdXBwb3J0cyhvYmplY3RzOiBhbnkpOiBib29sZWFuO1xuICBjcmVhdGUoY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCB0cmFja0J5Rm4/OiBUcmFja0J5Rm4pOiBJdGVyYWJsZURpZmZlcjtcbn1cblxuLyoqXG4gKiBBIHJlcG9zaXRvcnkgb2YgZGlmZmVyZW50IGl0ZXJhYmxlIGRpZmZpbmcgc3RyYXRlZ2llcyB1c2VkIGJ5IE5nRm9yLCBOZ0NsYXNzLCBhbmQgb3RoZXJzLlxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEl0ZXJhYmxlRGlmZmVycyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmYWN0b3JpZXM6IEl0ZXJhYmxlRGlmZmVyRmFjdG9yeVtdKSB7fVxuXG4gIHN0YXRpYyBjcmVhdGUoZmFjdG9yaWVzOiBJdGVyYWJsZURpZmZlckZhY3RvcnlbXSwgcGFyZW50PzogSXRlcmFibGVEaWZmZXJzKTogSXRlcmFibGVEaWZmZXJzIHtcbiAgICBpZiAoaXNQcmVzZW50KHBhcmVudCkpIHtcbiAgICAgIHZhciBjb3BpZWQgPSBMaXN0V3JhcHBlci5jbG9uZShwYXJlbnQuZmFjdG9yaWVzKTtcbiAgICAgIGZhY3RvcmllcyA9IGZhY3Rvcmllcy5jb25jYXQoY29waWVkKTtcbiAgICAgIHJldHVybiBuZXcgSXRlcmFibGVEaWZmZXJzKGZhY3Rvcmllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgSXRlcmFibGVEaWZmZXJzKGZhY3Rvcmllcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGFuIGFycmF5IG9mIHtAbGluayBJdGVyYWJsZURpZmZlckZhY3Rvcnl9IGFuZCByZXR1cm5zIGEgcHJvdmlkZXIgdXNlZCB0byBleHRlbmQgdGhlXG4gICAqIGluaGVyaXRlZCB7QGxpbmsgSXRlcmFibGVEaWZmZXJzfSBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBmYWN0b3JpZXMgYW5kIHJldHVybiBhIG5ld1xuICAgKiB7QGxpbmsgSXRlcmFibGVEaWZmZXJzfSBpbnN0YW5jZS5cbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBleHRlbmQgYW4gZXhpc3RpbmcgbGlzdCBvZiBmYWN0b3JpZXMsXG4gICAgICAgICAqIHdoaWNoIHdpbGwgb25seSBiZSBhcHBsaWVkIHRvIHRoZSBpbmplY3RvciBmb3IgdGhpcyBjb21wb25lbnQgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICAgICAgICogVGhpcyBzdGVwIGlzIGFsbCB0aGF0J3MgcmVxdWlyZWQgdG8gbWFrZSBhIG5ldyB7QGxpbmsgSXRlcmFibGVEaWZmZXJ9IGF2YWlsYWJsZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHZpZXdQcm92aWRlcnM6IFtcbiAgICogICAgIEl0ZXJhYmxlRGlmZmVycy5leHRlbmQoW25ldyBJbW11dGFibGVMaXN0RGlmZmVyKCldKVxuICAgKiAgIF1cbiAgICogfSlcbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgZXh0ZW5kKGZhY3RvcmllczogSXRlcmFibGVEaWZmZXJGYWN0b3J5W10pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBQcm92aWRlcihJdGVyYWJsZURpZmZlcnMsIHtcbiAgICAgIHVzZUZhY3Rvcnk6IChwYXJlbnQ6IEl0ZXJhYmxlRGlmZmVycykgPT4ge1xuICAgICAgICBpZiAoaXNCbGFuayhwYXJlbnQpKSB7XG4gICAgICAgICAgLy8gVHlwaWNhbGx5IHdvdWxkIG9jY3VyIHdoZW4gY2FsbGluZyBJdGVyYWJsZURpZmZlcnMuZXh0ZW5kIGluc2lkZSBvZiBkZXBlbmRlbmNpZXMgcGFzc2VkXG4gICAgICAgICAgLy8gdG9cbiAgICAgICAgICAvLyBib290c3RyYXAoKSwgd2hpY2ggd291bGQgb3ZlcnJpZGUgZGVmYXVsdCBwaXBlcyBpbnN0ZWFkIG9mIGV4dGVuZGluZyB0aGVtLlxuICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdDYW5ub3QgZXh0ZW5kIEl0ZXJhYmxlRGlmZmVycyB3aXRob3V0IGEgcGFyZW50IGluamVjdG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEl0ZXJhYmxlRGlmZmVycy5jcmVhdGUoZmFjdG9yaWVzLCBwYXJlbnQpO1xuICAgICAgfSxcbiAgICAgIC8vIERlcGVuZGVuY3kgdGVjaG5pY2FsbHkgaXNuJ3Qgb3B0aW9uYWwsIGJ1dCB3ZSBjYW4gcHJvdmlkZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIHRoaXMgd2F5LlxuICAgICAgZGVwczogW1tJdGVyYWJsZURpZmZlcnMsIG5ldyBTa2lwU2VsZk1ldGFkYXRhKCksIG5ldyBPcHRpb25hbE1ldGFkYXRhKCldXVxuICAgIH0pO1xuICB9XG5cbiAgZmluZChpdGVyYWJsZTogYW55KTogSXRlcmFibGVEaWZmZXJGYWN0b3J5IHtcbiAgICB2YXIgZmFjdG9yeSA9IHRoaXMuZmFjdG9yaWVzLmZpbmQoZiA9PiBmLnN1cHBvcnRzKGl0ZXJhYmxlKSk7XG4gICAgaWYgKGlzUHJlc2VudChmYWN0b3J5KSkge1xuICAgICAgcmV0dXJuIGZhY3Rvcnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgIGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHtpdGVyYWJsZX0nIG9mIHR5cGUgJyR7Z2V0VHlwZU5hbWVGb3JEZWJ1Z2dpbmcoaXRlcmFibGUpfSdgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar DefaultIterableDifferFactory = (function () {\r\n function DefaultIterableDifferFactory() {\r\n }\r\n DefaultIterableDifferFactory.prototype.supports = function (obj) { return collection_1.isListLikeIterable(obj); };\r\n DefaultIterableDifferFactory.prototype.create = function (cdRef, trackByFn) {\r\n return new DefaultIterableDiffer(trackByFn);\r\n };\r\n DefaultIterableDifferFactory = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], DefaultIterableDifferFactory);\r\n return DefaultIterableDifferFactory;\r\n}());\r\nexports.DefaultIterableDifferFactory = DefaultIterableDifferFactory;\r\nvar trackByIdentity = function (index, item) { return item; };\r\nvar DefaultIterableDiffer = (function () {\r\n function DefaultIterableDiffer(_trackByFn) {\r\n this._trackByFn = _trackByFn;\r\n this._length = null;\r\n this._collection = null;\r\n // Keeps track of the used records at any point in time (during & across `_check()` calls)\r\n this._linkedRecords = null;\r\n // Keeps track of the removed records at any point in time during `_check()` calls.\r\n this._unlinkedRecords = null;\r\n this._previousItHead = null;\r\n this._itHead = null;\r\n this._itTail = null;\r\n this._additionsHead = null;\r\n this._additionsTail = null;\r\n this._movesHead = null;\r\n this._movesTail = null;\r\n this._removalsHead = null;\r\n this._removalsTail = null;\r\n // Keeps track of records where custom track by is the same, but item identity has changed\r\n this._identityChangesHead = null;\r\n this._identityChangesTail = null;\r\n this._trackByFn = lang_1.isPresent(this._trackByFn) ? this._trackByFn : trackByIdentity;\r\n }\r\n Object.defineProperty(DefaultIterableDiffer.prototype, \"collection\", {\r\n get: function () { return this._collection; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DefaultIterableDiffer.prototype, \"length\", {\r\n get: function () { return this._length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DefaultIterableDiffer.prototype.forEachItem = function (fn) {\r\n var record;\r\n for (record = this._itHead; record !== null; record = record._next) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachPreviousItem = function (fn) {\r\n var record;\r\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachAddedItem = function (fn) {\r\n var record;\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachMovedItem = function (fn) {\r\n var record;\r\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachRemovedItem = function (fn) {\r\n var record;\r\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachIdentityChange = function (fn) {\r\n var record;\r\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.diff = function (collection) {\r\n if (lang_1.isBlank(collection))\r\n collection = [];\r\n if (!collection_1.isListLikeIterable(collection)) {\r\n throw new exceptions_1.BaseException(\"Error trying to diff '\" + collection + \"'\");\r\n }\r\n if (this.check(collection)) {\r\n return this;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.onDestroy = function () { };\r\n // todo(vicb): optim for UnmodifiableListView (frozen arrays)\r\n DefaultIterableDiffer.prototype.check = function (collection) {\r\n var _this = this;\r\n this._reset();\r\n var record = this._itHead;\r\n var mayBeDirty = false;\r\n var index;\r\n var item;\r\n var itemTrackBy;\r\n if (lang_1.isArray(collection)) {\r\n var list = collection;\r\n this._length = collection.length;\r\n for (index = 0; index < this._length; index++) {\r\n item = list[index];\r\n itemTrackBy = this._trackByFn(index, item);\r\n if (record === null || !lang_1.looseIdentical(record.trackById, itemTrackBy)) {\r\n record = this._mismatch(record, item, itemTrackBy, index);\r\n mayBeDirty = true;\r\n }\r\n else {\r\n if (mayBeDirty) {\r\n // TODO(misko): can we limit this to duplicates only?\r\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\r\n }\r\n if (!lang_1.looseIdentical(record.item, item))\r\n this._addIdentityChange(record, item);\r\n }\r\n record = record._next;\r\n }\r\n }\r\n else {\r\n index = 0;\r\n collection_1.iterateListLike(collection, function (item) {\r\n itemTrackBy = _this._trackByFn(index, item);\r\n if (record === null || !lang_1.looseIdentical(record.trackById, itemTrackBy)) {\r\n record = _this._mismatch(record, item, itemTrackBy, index);\r\n mayBeDirty = true;\r\n }\r\n else {\r\n if (mayBeDirty) {\r\n // TODO(misko): can we limit this to duplicates only?\r\n record = _this._verifyReinsertion(record, item, itemTrackBy, index);\r\n }\r\n if (!lang_1.looseIdentical(record.item, item))\r\n _this._addIdentityChange(record, item);\r\n }\r\n record = record._next;\r\n index++;\r\n });\r\n this._length = index;\r\n }\r\n this._truncate(record);\r\n this._collection = collection;\r\n return this.isDirty;\r\n };\r\n Object.defineProperty(DefaultIterableDiffer.prototype, \"isDirty\", {\r\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\r\n * changes.\r\n */\r\n get: function () {\r\n return this._additionsHead !== null || this._movesHead !== null ||\r\n this._removalsHead !== null || this._identityChangesHead !== null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Reset the state of the change objects to show no changes. This means set previousKey to\r\n * currentKey, and clear all of the queues (additions, moves, removals).\r\n * Set the previousIndexes of moved and added items to their currentIndexes\r\n * Reset the list of additions, moves and removals\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._reset = function () {\r\n if (this.isDirty) {\r\n var record;\r\n var nextRecord;\r\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\r\n record._nextPrevious = record._next;\r\n }\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n record.previousIndex = record.currentIndex;\r\n }\r\n this._additionsHead = this._additionsTail = null;\r\n for (record = this._movesHead; record !== null; record = nextRecord) {\r\n record.previousIndex = record.currentIndex;\r\n nextRecord = record._nextMoved;\r\n }\r\n this._movesHead = this._movesTail = null;\r\n this._removalsHead = this._removalsTail = null;\r\n this._identityChangesHead = this._identityChangesTail = null;\r\n }\r\n };\r\n /**\r\n * This is the core function which handles differences between collections.\r\n *\r\n * - `record` is the record which we saw at this position last time. If null then it is a new\r\n * item.\r\n * - `item` is the current item in the collection\r\n * - `index` is the position of the item in the collection\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._mismatch = function (record, item, itemTrackBy, index) {\r\n // The previous record after which we will append the current one.\r\n var previousRecord;\r\n if (record === null) {\r\n previousRecord = this._itTail;\r\n }\r\n else {\r\n previousRecord = record._prev;\r\n // Remove the record from the collection since we know it does not match the item.\r\n this._remove(record);\r\n }\r\n // Attempt to see if we have seen the item before.\r\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\r\n if (record !== null) {\r\n // We have seen this before, we need to move it forward in the collection.\r\n // But first we need to check if identity changed, so we can update in view if necessary\r\n if (!lang_1.looseIdentical(record.item, item))\r\n this._addIdentityChange(record, item);\r\n this._moveAfter(record, previousRecord, index);\r\n }\r\n else {\r\n // Never seen it, check evicted list.\r\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\r\n if (record !== null) {\r\n // It is an item which we have evicted earlier: reinsert it back into the list.\r\n // But first we need to check if identity changed, so we can update in view if necessary\r\n if (!lang_1.looseIdentical(record.item, item))\r\n this._addIdentityChange(record, item);\r\n this._reinsertAfter(record, previousRecord, index);\r\n }\r\n else {\r\n // It is a new item: add it.\r\n record =\r\n this._addAfter(new CollectionChangeRecord(item, itemTrackBy), previousRecord, index);\r\n }\r\n }\r\n return record;\r\n };\r\n /**\r\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\r\n *\r\n * Use case: `[a, a]` => `[b, a, a]`\r\n *\r\n * If we did not have this check then the insertion of `b` would:\r\n * 1) evict first `a`\r\n * 2) insert `b` at `0` index.\r\n * 3) leave `a` at index `1` as is. <-- this is wrong!\r\n * 3) reinsert `a` at index 2. <-- this is wrong!\r\n *\r\n * The correct behavior is:\r\n * 1) evict first `a`\r\n * 2) insert `b` at `0` index.\r\n * 3) reinsert `a` at index 1.\r\n * 3) move `a` at from `1` to `2`.\r\n *\r\n *\r\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\r\n * have already been removed:\r\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\r\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\r\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\r\n * at the end.\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._verifyReinsertion = function (record, item, itemTrackBy, index) {\r\n var reinsertRecord = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\r\n if (reinsertRecord !== null) {\r\n record = this._reinsertAfter(reinsertRecord, record._prev, index);\r\n }\r\n else if (record.currentIndex != index) {\r\n record.currentIndex = index;\r\n this._addToMoves(record, index);\r\n }\r\n return record;\r\n };\r\n /**\r\n * Get rid of any excess {@link CollectionChangeRecord}s from the previous collection\r\n *\r\n * - `record` The first excess {@link CollectionChangeRecord}.\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._truncate = function (record) {\r\n // Anything after that needs to be removed;\r\n while (record !== null) {\r\n var nextRecord = record._next;\r\n this._addToRemovals(this._unlink(record));\r\n record = nextRecord;\r\n }\r\n if (this._unlinkedRecords !== null) {\r\n this._unlinkedRecords.clear();\r\n }\r\n if (this._additionsTail !== null) {\r\n this._additionsTail._nextAdded = null;\r\n }\r\n if (this._movesTail !== null) {\r\n this._movesTail._nextMoved = null;\r\n }\r\n if (this._itTail !== null) {\r\n this._itTail._next = null;\r\n }\r\n if (this._removalsTail !== null) {\r\n this._removalsTail._nextRemoved = null;\r\n }\r\n if (this._identityChangesTail !== null) {\r\n this._identityChangesTail._nextIdentityChange = null;\r\n }\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._reinsertAfter = function (record, prevRecord, index) {\r\n if (this._unlinkedRecords !== null) {\r\n this._unlinkedRecords.remove(record);\r\n }\r\n var prev = record._prevRemoved;\r\n var next = record._nextRemoved;\r\n if (prev === null) {\r\n this._removalsHead = next;\r\n }\r\n else {\r\n prev._nextRemoved = next;\r\n }\r\n if (next === null) {\r\n this._removalsTail = prev;\r\n }\r\n else {\r\n next._prevRemoved = prev;\r\n }\r\n this._insertAfter(record, prevRecord, index);\r\n this._addToMoves(record, index);\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._moveAfter = function (record, prevRecord, index) {\r\n this._unlink(record);\r\n this._insertAfter(record, prevRecord, index);\r\n this._addToMoves(record, index);\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addAfter = function (record, prevRecord, index) {\r\n this._insertAfter(record, prevRecord, index);\r\n if (this._additionsTail === null) {\r\n // todo(vicb)\r\n // assert(this._additionsHead === null);\r\n this._additionsTail = this._additionsHead = record;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(_additionsTail._nextAdded === null);\r\n // assert(record._nextAdded === null);\r\n this._additionsTail = this._additionsTail._nextAdded = record;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._insertAfter = function (record, prevRecord, index) {\r\n // todo(vicb)\r\n // assert(record != prevRecord);\r\n // assert(record._next === null);\r\n // assert(record._prev === null);\r\n var next = prevRecord === null ? this._itHead : prevRecord._next;\r\n // todo(vicb)\r\n // assert(next != record);\r\n // assert(prevRecord != record);\r\n record._next = next;\r\n record._prev = prevRecord;\r\n if (next === null) {\r\n this._itTail = record;\r\n }\r\n else {\r\n next._prev = record;\r\n }\r\n if (prevRecord === null) {\r\n this._itHead = record;\r\n }\r\n else {\r\n prevRecord._next = record;\r\n }\r\n if (this._linkedRecords === null) {\r\n this._linkedRecords = new _DuplicateMap();\r\n }\r\n this._linkedRecords.put(record);\r\n record.currentIndex = index;\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._remove = function (record) {\r\n return this._addToRemovals(this._unlink(record));\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._unlink = function (record) {\r\n if (this._linkedRecords !== null) {\r\n this._linkedRecords.remove(record);\r\n }\r\n var prev = record._prev;\r\n var next = record._next;\r\n // todo(vicb)\r\n // assert((record._prev = null) === null);\r\n // assert((record._next = null) === null);\r\n if (prev === null) {\r\n this._itHead = next;\r\n }\r\n else {\r\n prev._next = next;\r\n }\r\n if (next === null) {\r\n this._itTail = prev;\r\n }\r\n else {\r\n next._prev = prev;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addToMoves = function (record, toIndex) {\r\n // todo(vicb)\r\n // assert(record._nextMoved === null);\r\n if (record.previousIndex === toIndex) {\r\n return record;\r\n }\r\n if (this._movesTail === null) {\r\n // todo(vicb)\r\n // assert(_movesHead === null);\r\n this._movesTail = this._movesHead = record;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(_movesTail._nextMoved === null);\r\n this._movesTail = this._movesTail._nextMoved = record;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addToRemovals = function (record) {\r\n if (this._unlinkedRecords === null) {\r\n this._unlinkedRecords = new _DuplicateMap();\r\n }\r\n this._unlinkedRecords.put(record);\r\n record.currentIndex = null;\r\n record._nextRemoved = null;\r\n if (this._removalsTail === null) {\r\n // todo(vicb)\r\n // assert(_removalsHead === null);\r\n this._removalsTail = this._removalsHead = record;\r\n record._prevRemoved = null;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(_removalsTail._nextRemoved === null);\r\n // assert(record._nextRemoved === null);\r\n record._prevRemoved = this._removalsTail;\r\n this._removalsTail = this._removalsTail._nextRemoved = record;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addIdentityChange = function (record, item) {\r\n record.item = item;\r\n if (this._identityChangesTail === null) {\r\n this._identityChangesTail = this._identityChangesHead = record;\r\n }\r\n else {\r\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\r\n }\r\n return record;\r\n };\r\n DefaultIterableDiffer.prototype.toString = function () {\r\n var list = [];\r\n this.forEachItem(function (record) { return list.push(record); });\r\n var previous = [];\r\n this.forEachPreviousItem(function (record) { return previous.push(record); });\r\n var additions = [];\r\n this.forEachAddedItem(function (record) { return additions.push(record); });\r\n var moves = [];\r\n this.forEachMovedItem(function (record) { return moves.push(record); });\r\n var removals = [];\r\n this.forEachRemovedItem(function (record) { return removals.push(record); });\r\n var identityChanges = [];\r\n this.forEachIdentityChange(function (record) { return identityChanges.push(record); });\r\n return \"collection: \" + list.join(', ') + \"\\n\" + \"previous: \" + previous.join(', ') + \"\\n\" +\r\n \"additions: \" + additions.join(', ') + \"\\n\" + \"moves: \" + moves.join(', ') + \"\\n\" +\r\n \"removals: \" + removals.join(', ') + \"\\n\" + \"identityChanges: \" +\r\n identityChanges.join(', ') + \"\\n\";\r\n };\r\n return DefaultIterableDiffer;\r\n}());\r\nexports.DefaultIterableDiffer = DefaultIterableDiffer;\r\nvar CollectionChangeRecord = (function () {\r\n function CollectionChangeRecord(item, trackById) {\r\n this.item = item;\r\n this.trackById = trackById;\r\n this.currentIndex = null;\r\n this.previousIndex = null;\r\n /** @internal */\r\n this._nextPrevious = null;\r\n /** @internal */\r\n this._prev = null;\r\n /** @internal */\r\n this._next = null;\r\n /** @internal */\r\n this._prevDup = null;\r\n /** @internal */\r\n this._nextDup = null;\r\n /** @internal */\r\n this._prevRemoved = null;\r\n /** @internal */\r\n this._nextRemoved = null;\r\n /** @internal */\r\n this._nextAdded = null;\r\n /** @internal */\r\n this._nextMoved = null;\r\n /** @internal */\r\n this._nextIdentityChange = null;\r\n }\r\n CollectionChangeRecord.prototype.toString = function () {\r\n return this.previousIndex === this.currentIndex ?\r\n lang_1.stringify(this.item) :\r\n lang_1.stringify(this.item) + '[' + lang_1.stringify(this.previousIndex) + '->' +\r\n lang_1.stringify(this.currentIndex) + ']';\r\n };\r\n return CollectionChangeRecord;\r\n}());\r\nexports.CollectionChangeRecord = CollectionChangeRecord;\r\n// A linked list of CollectionChangeRecords with the same CollectionChangeRecord.item\r\nvar _DuplicateItemRecordList = (function () {\r\n function _DuplicateItemRecordList() {\r\n /** @internal */\r\n this._head = null;\r\n /** @internal */\r\n this._tail = null;\r\n }\r\n /**\r\n * Append the record to the list of duplicates.\r\n *\r\n * Note: by design all records in the list of duplicates hold the same value in record.item.\r\n */\r\n _DuplicateItemRecordList.prototype.add = function (record) {\r\n if (this._head === null) {\r\n this._head = this._tail = record;\r\n record._nextDup = null;\r\n record._prevDup = null;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(record.item == _head.item ||\r\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\r\n this._tail._nextDup = record;\r\n record._prevDup = this._tail;\r\n record._nextDup = null;\r\n this._tail = record;\r\n }\r\n };\r\n // Returns a CollectionChangeRecord having CollectionChangeRecord.trackById == trackById and\r\n // CollectionChangeRecord.currentIndex >= afterIndex\r\n _DuplicateItemRecordList.prototype.get = function (trackById, afterIndex) {\r\n var record;\r\n for (record = this._head; record !== null; record = record._nextDup) {\r\n if ((afterIndex === null || afterIndex < record.currentIndex) &&\r\n lang_1.looseIdentical(record.trackById, trackById)) {\r\n return record;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Remove one {@link CollectionChangeRecord} from the list of duplicates.\r\n *\r\n * Returns whether the list of duplicates is empty.\r\n */\r\n _DuplicateItemRecordList.prototype.remove = function (record) {\r\n // todo(vicb)\r\n // assert(() {\r\n // // verify that the record being removed is in the list.\r\n // for (CollectionChangeRecord cursor = _head; cursor != null; cursor = cursor._nextDup) {\r\n // if (identical(cursor, record)) return true;\r\n // }\r\n // return false;\r\n //});\r\n var prev = record._prevDup;\r\n var next = record._nextDup;\r\n if (prev === null) {\r\n this._head = next;\r\n }\r\n else {\r\n prev._nextDup = next;\r\n }\r\n if (next === null) {\r\n this._tail = prev;\r\n }\r\n else {\r\n next._prevDup = prev;\r\n }\r\n return this._head === null;\r\n };\r\n return _DuplicateItemRecordList;\r\n}());\r\nvar _DuplicateMap = (function () {\r\n function _DuplicateMap() {\r\n this.map = new Map();\r\n }\r\n _DuplicateMap.prototype.put = function (record) {\r\n // todo(vicb) handle corner cases\r\n var key = lang_1.getMapKey(record.trackById);\r\n var duplicates = this.map.get(key);\r\n if (!lang_1.isPresent(duplicates)) {\r\n duplicates = new _DuplicateItemRecordList();\r\n this.map.set(key, duplicates);\r\n }\r\n duplicates.add(record);\r\n };\r\n /**\r\n * Retrieve the `value` using key. Because the CollectionChangeRecord value may be one which we\r\n * have already iterated over, we use the afterIndex to pretend it is not there.\r\n *\r\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\r\n * have any more `a`s needs to return the last `a` not the first or second.\r\n */\r\n _DuplicateMap.prototype.get = function (trackById, afterIndex) {\r\n if (afterIndex === void 0) { afterIndex = null; }\r\n var key = lang_1.getMapKey(trackById);\r\n var recordList = this.map.get(key);\r\n return lang_1.isBlank(recordList) ? null : recordList.get(trackById, afterIndex);\r\n };\r\n /**\r\n * Removes a {@link CollectionChangeRecord} from the list of duplicates.\r\n *\r\n * The list of duplicates also is removed from the map if it gets empty.\r\n */\r\n _DuplicateMap.prototype.remove = function (record) {\r\n var key = lang_1.getMapKey(record.trackById);\r\n // todo(vicb)\r\n // assert(this.map.containsKey(key));\r\n var recordList = this.map.get(key);\r\n // Remove the list of duplicates when it gets empty\r\n if (recordList.remove(record)) {\r\n this.map.delete(key);\r\n }\r\n return record;\r\n };\r\n Object.defineProperty(_DuplicateMap.prototype, \"isEmpty\", {\r\n get: function () { return this.map.size === 0; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n _DuplicateMap.prototype.clear = function () { this.map.clear(); };\r\n _DuplicateMap.prototype.toString = function () { return '_DuplicateMap(' + lang_1.stringify(this.map) + ')'; };\r\n return _DuplicateMap;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9pdGVyYWJsZV9kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2RpZmZlcnMvZGVmYXVsdF9pdGVyYWJsZV9kaWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUErRCxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRWhHLHFCQVFPLDBCQUEwQixDQUFDLENBQUE7QUFNbEM7SUFBQTtJQUtBLENBQUM7SUFKQywrQ0FBUSxHQUFSLFVBQVMsR0FBVyxJQUFhLE1BQU0sQ0FBQywrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsNkNBQU0sR0FBTixVQUFPLEtBQXdCLEVBQUUsU0FBcUI7UUFDcEQsTUFBTSxDQUFDLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUxIO1FBQUMsWUFBSyxFQUFFOztvQ0FBQTtJQU1SLG1DQUFDO0FBQUQsQ0FBQyxBQUxELElBS0M7QUFMWSxvQ0FBNEIsK0JBS3hDLENBQUE7QUFFRCxJQUFJLGVBQWUsR0FBRyxVQUFDLEtBQWEsRUFBRSxJQUFTLElBQUssT0FBQSxJQUFJLEVBQUosQ0FBSSxDQUFDO0FBRXpEO0lBb0JFLCtCQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBbkJsQyxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzNCLDBGQUEwRjtRQUNsRixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFDN0MsbUZBQW1GO1FBQzNFLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdkMsb0JBQWUsR0FBMkIsSUFBSSxDQUFDO1FBQy9DLFlBQU8sR0FBMkIs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ZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge2lzTGlzdExpa2VJdGVyYWJsZSwgaXRlcmF0ZUxpc3RMaWtlLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0IHtcbiAgQ09OU1QsXG4gIGlzQmxhbmssXG4gIGlzUHJlc2VudCxcbiAgc3RyaW5naWZ5LFxuICBnZXRNYXBLZXksXG4gIGxvb3NlSWRlbnRpY2FsLFxuICBpc0FycmF5XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuaW1wb3J0IHtJdGVyYWJsZURpZmZlciwgSXRlcmFibGVEaWZmZXJGYWN0b3J5LCBUcmFja0J5Rm59IGZyb20gJy4uL2RpZmZlcnMvaXRlcmFibGVfZGlmZmVycyc7XG5cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEl0ZXJhYmxlRGlmZmVyRmFjdG9yeSBpbXBsZW1lbnRzIEl0ZXJhYmxlRGlmZmVyRmFjdG9yeSB7XG4gIHN1cHBvcnRzKG9iajogT2JqZWN0KTogYm9vbGVhbiB7IHJldHVybiBpc0xpc3RMaWtlSXRlcmFibGUob2JqKTsgfVxuICBjcmVhdGUoY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCB0cmFja0J5Rm4/OiBUcmFja0J5Rm4pOiBEZWZhdWx0SXRlcmFibGVEaWZmZXIge1xuICAgIHJldHVybiBuZXcgRGVmYXVsdEl0ZXJhYmxlRGlmZmVyKHRyYWNrQnlGbik7XG4gIH1cbn1cblxudmFyIHRyYWNrQnlJZGVudGl0eSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpID0+IGl0ZW07XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0SXRlcmFibGVEaWZmZXIgaW1wbGVtZW50cyBJdGVyYWJsZURpZmZlciB7XG4gIHByaXZhdGUgX2xlbmd0aDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBfY29sbGVjdGlvbiA9IG51bGw7XG4gIC8vIEtlZXBzIHRyYWNrIG9mIHRoZSB1c2VkIHJlY29yZHMgYXQgYW55IHBvaW50IGluIHRpbWUgKGR1cmluZyAmIGFjcm9zcyBgX2NoZWNrKClgIGNhbGxzKVxuICBwcml2YXRlIF9saW5rZWRSZWNvcmRzOiBfRHVwbGljYXRlTWFwID0gbnVsbDtcbiAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIHJlbW92ZWQgcmVjb3JkcyBhdCBhbnkgcG9pbnQgaW4gdGltZSBkdXJpbmcgYF9jaGVjaygpYCBjYWxscy5cbiAgcHJpdmF0ZSBfdW5saW5rZWRSZWNvcmRzOiBfRHVwbGljYXRlTWFwID0gbnVsbDtcbiAgcHJpdmF0ZSBfcHJldmlvdXNJdEhlYWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9pdEhlYWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9pdFRhaWw6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9hZGRpdGlvbnNIZWFkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfYWRkaXRpb25zVGFpbDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX21vdmVzSGVhZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX21vdmVzVGFpbDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX3JlbW92YWxzSGVhZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX3JlbW92YWxzVGFpbDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8vIEtlZXBzIHRyYWNrIG9mIHJlY29yZHMgd2hlcmUgY3VzdG9tIHRyYWNrIGJ5IGlzIHRoZSBzYW1lLCBidXQgaXRlbSBpZGVudGl0eSBoYXMgY2hhbmdlZFxuICBwcml2YXRlIF9pZGVudGl0eUNoYW5nZXNIZWFkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfaWRlbnRpdHlDaGFuZ2VzVGFpbDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdHJhY2tCeUZuPzogVHJhY2tCeUZuKSB7XG4gICAgdGhpcy5fdHJhY2tCeUZuID0gaXNQcmVzZW50KHRoaXMuX3RyYWNrQnlGbikgPyB0aGlzLl90cmFja0J5Rm4gOiB0cmFja0J5SWRlbnRpdHk7XG4gIH1cblxuICBnZXQgY29sbGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb247IH1cblxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9sZW5ndGg7IH1cblxuICBmb3JFYWNoSXRlbShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5faXRIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dCkge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoUHJldmlvdXNJdGVtKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9wcmV2aW91c0l0SGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRQcmV2aW91cykge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoQWRkZWRJdGVtKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9hZGRpdGlvbnNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dEFkZGVkKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hNb3ZlZEl0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX21vdmVzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRNb3ZlZCkge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoUmVtb3ZlZEl0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3JlbW92YWxzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRSZW1vdmVkKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hJZGVudGl0eUNoYW5nZShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRJZGVudGl0eUNoYW5nZSkge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBkaWZmKGNvbGxlY3Rpb246IGFueSk6IERlZmF1bHRJdGVyYWJsZURpZmZlciB7XG4gICAgaWYgKGlzQmxhbmsoY29sbGVjdGlvbikpIGNvbGxlY3Rpb24gPSBbXTtcbiAgICBpZiAoIWlzTGlzdExpa2VJdGVyYWJsZShjb2xsZWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYEVycm9yIHRyeWluZyB0byBkaWZmICcke2NvbGxlY3Rpb259J2ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoZWNrKGNvbGxlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgb25EZXN0cm95KCkge31cblxuICAvLyB0b2RvKHZpY2IpOiBvcHRpbSBmb3IgVW5tb2RpZmlhYmxlTGlzdFZpZXcgKGZyb3plbiBhcnJheXMpXG4gIGNoZWNrKGNvbGxlY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICAgIHRoaXMuX3Jlc2V0KCk7XG5cbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gdGhpcy5faXRIZWFkO1xuICAgIHZhciBtYXlCZURpcnR5OiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFyIGluZGV4OiBudW1iZXI7XG4gICAgdmFyIGl0ZW07XG4gICAgdmFyIGl0ZW1UcmFja0J5O1xuICAgIGlmIChpc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICB2YXIgbGlzdCA9IGNvbGxlY3Rpb247XG4gICAgICB0aGlzLl9sZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblxuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGl0ZW0gPSBsaXN0W2luZGV4XTtcbiAgICAgICAgaXRlbVRyYWNrQnkgPSB0aGlzLl90cmFja0J5Rm4oaW5kZXgsIGl0ZW0pO1xuICAgICAgICBpZiAocmVjb3JkID09PSBudWxsIHx8ICFsb29zZUlkZW50aWNhbChyZWNvcmQudHJhY2tCeUlkLCBpdGVtVHJhY2tCeSkpIHtcbiAgICAgICAgICByZWNvcmQgPSB0aGlzLl9taXNtYXRjaChyZWNvcmQsIGl0ZW0sIGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgICAgICAgbWF5QmVEaXJ0eSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG1heUJlRGlydHkpIHtcbiAgICAgICAgICAgIC8vIFRPRE8obWlza28pOiBjYW4gd2UgbGltaXQgdGhpcyB0byBkdXBsaWNhdGVzIG9ubHk/XG4gICAgICAgICAgICByZWNvcmQgPSB0aGlzLl92ZXJpZnlSZWluc2VydGlvbihyZWNvcmQsIGl0ZW0sIGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbG9vc2VJZGVudGljYWwocmVjb3JkLml0ZW0sIGl0ZW0pKSB0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShyZWNvcmQsIGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVjb3JkID0gcmVjb3JkLl9uZXh0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IDA7XG4gICAgICBpdGVyYXRlTGlzdExpa2UoY29sbGVjdGlvbiwgKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbVRyYWNrQnkgPSB0aGlzLl90cmFja0J5Rm4oaW5kZXgsIGl0ZW0pO1xuICAgICAgICBpZiAocmVjb3JkID09PSBudWxsIHx8ICFsb29zZUlkZW50aWNhbChyZWNvcmQudHJhY2tCeUlkLCBpdGVtVHJhY2tCeSkpIHtcbiAgICAgICAgICByZWNvcmQgPSB0aGlzLl9taXNtYXRjaChyZWNvcmQsIGl0ZW0sIGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgICAgICAgbWF5QmVEaXJ0eSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG1heUJlRGlydHkpIHtcbiAgICAgICAgICAgIC8vIFRPRE8obWlza28pOiBjYW4gd2UgbGltaXQgdGhpcyB0byBkdXBsaWNhdGVzIG9ubHk/XG4gICAgICAgICAgICByZWNvcmQgPSB0aGlzLl92ZXJpZnlSZWluc2VydGlvbihyZWNvcmQsIGl0ZW0sIGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbG9vc2VJZGVudGljYWwocmVjb3JkLml0ZW0sIGl0ZW0pKSB0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShyZWNvcmQsIGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZCA9IHJlY29yZC5fbmV4dDtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fbGVuZ3RoID0gaW5kZXg7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJ1bmNhdGUocmVjb3JkKTtcbiAgICB0aGlzLl9jb2xsZWN0aW9uID0gY29sbGVjdGlvbjtcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5O1xuICB9XG5cbiAgLyogQ29sbGVjdGlvbkNoYW5nZXMgaXMgY29uc2lkZXJlZCBkaXJ0eSBpZiBpdCBoYXMgYW55IGFkZGl0aW9ucywgbW92ZXMsIHJlbW92YWxzLCBvciBpZGVudGl0eVxuICAgKiBjaGFuZ2VzLlxuICAgKi9cbiAgZ2V0IGlzRGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZGl0aW9uc0hlYWQgIT09IG51bGwgfHwgdGhpcy5fbW92ZXNIZWFkICE9PSBudWxsIHx8XG4gICAgICAgICAgIHRoaXMuX3JlbW92YWxzSGVhZCAhPT0gbnVsbCB8fCB0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgY2hhbmdlIG9iamVjdHMgdG8gc2hvdyBubyBjaGFuZ2VzLiBUaGlzIG1lYW5zIHNldCBwcmV2aW91c0tleSB0b1xuICAgKiBjdXJyZW50S2V5LCBhbmQgY2xlYXIgYWxsIG9mIHRoZSBxdWV1ZXMgKGFkZGl0aW9ucywgbW92ZXMsIHJlbW92YWxzKS5cbiAgICogU2V0IHRoZSBwcmV2aW91c0luZGV4ZXMgb2YgbW92ZWQgYW5kIGFkZGVkIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnRJbmRleGVzXG4gICAqIFJlc2V0IHRoZSBsaXN0IG9mIGFkZGl0aW9ucywgbW92ZXMgYW5kIHJlbW92YWxzXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3Jlc2V0KCkge1xuICAgIGlmICh0aGlzLmlzRGlydHkpIHtcbiAgICAgIHZhciByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQ7XG4gICAgICB2YXIgbmV4dFJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcblxuICAgICAgZm9yIChyZWNvcmQgPSB0aGlzLl9wcmV2aW91c0l0SGVhZCA9IHRoaXMuX2l0SGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHQpIHtcbiAgICAgICAgcmVjb3JkLl9uZXh0UHJldmlvdXMgPSByZWNvcmQuX25leHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAocmVjb3JkID0gdGhpcy5fYWRkaXRpb25zSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRBZGRlZCkge1xuICAgICAgICByZWNvcmQucHJldmlvdXNJbmRleCA9IHJlY29yZC5jdXJyZW50SW5kZXg7XG4gICAgICB9XG4gICAgICB0aGlzLl9hZGRpdGlvbnNIZWFkID0gdGhpcy5fYWRkaXRpb25zVGFpbCA9IG51bGw7XG5cbiAgICAgIGZvciAocmVjb3JkID0gdGhpcy5fbW92ZXNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IG5leHRSZWNvcmQpIHtcbiAgICAgICAgcmVjb3JkLnByZXZpb3VzSW5kZXggPSByZWNvcmQuY3VycmVudEluZGV4O1xuICAgICAgICBuZXh0UmVjb3JkID0gcmVjb3JkLl9uZXh0TW92ZWQ7XG4gICAgICB9XG4gICAgICB0aGlzLl9tb3Zlc0hlYWQgPSB0aGlzLl9tb3Zlc1RhaWwgPSBudWxsO1xuICAgICAgdGhpcy5fcmVtb3ZhbHNIZWFkID0gdGhpcy5fcmVtb3ZhbHNUYWlsID0gbnVsbDtcbiAgICAgIHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQgPSB0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsID0gbnVsbDtcblxuICAgICAgLy8gdG9kbyh2aWNiKSB3aGVuIGFzc2VydCBnZXRzIHN1cHBvcnRlZFxuICAgICAgLy8gYXNzZXJ0KCF0aGlzLmlzRGlydHkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIHdoaWNoIGhhbmRsZXMgZGlmZmVyZW5jZXMgYmV0d2VlbiBjb2xsZWN0aW9ucy5cbiAgICpcbiAgICogLSBgcmVjb3JkYCBpcyB0aGUgcmVjb3JkIHdoaWNoIHdlIHNhdyBhdCB0aGlzIHBvc2l0aW9uIGxhc3QgdGltZS4gSWYgbnVsbCB0aGVuIGl0IGlzIGEgbmV3XG4gICAqICAgaXRlbS5cbiAgICogLSBgaXRlbWAgaXMgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgY29sbGVjdGlvblxuICAgKiAtIGBpbmRleGAgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBpdGVtIGluIHRoZSBjb2xsZWN0aW9uXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX21pc21hdGNoKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCwgaXRlbTogYW55LCBpdGVtVHJhY2tCeTogYW55LFxuICAgICAgICAgICAgaW5kZXg6IG51bWJlcik6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIC8vIFRoZSBwcmV2aW91cyByZWNvcmQgYWZ0ZXIgd2hpY2ggd2Ugd2lsbCBhcHBlbmQgdGhlIGN1cnJlbnQgb25lLlxuICAgIHZhciBwcmV2aW91c1JlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcblxuICAgIGlmIChyZWNvcmQgPT09IG51bGwpIHtcbiAgICAgIHByZXZpb3VzUmVjb3JkID0gdGhpcy5faXRUYWlsO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2aW91c1JlY29yZCA9IHJlY29yZC5fcHJldjtcbiAgICAgIC8vIFJlbW92ZSB0aGUgcmVjb3JkIGZyb20gdGhlIGNvbGxlY3Rpb24gc2luY2Ugd2Uga25vdyBpdCBkb2VzIG5vdCBtYXRjaCB0aGUgaXRlbS5cbiAgICAgIHRoaXMuX3JlbW92ZShyZWNvcmQpO1xuICAgIH1cblxuICAgIC8vIEF0dGVtcHQgdG8gc2VlIGlmIHdlIGhhdmUgc2VlbiB0aGUgaXRlbSBiZWZvcmUuXG4gICAgcmVjb3JkID0gdGhpcy5fbGlua2VkUmVjb3JkcyA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLl9saW5rZWRSZWNvcmRzLmdldChpdGVtVHJhY2tCeSwgaW5kZXgpO1xuICAgIGlmIChyZWNvcmQgIT09IG51bGwpIHtcbiAgICAgIC8vIFdlIGhhdmUgc2VlbiB0aGlzIGJlZm9yZSwgd2UgbmVlZCB0byBtb3ZlIGl0IGZvcndhcmQgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICAvLyBCdXQgZmlyc3Qgd2UgbmVlZCB0byBjaGVjayBpZiBpZGVudGl0eSBjaGFuZ2VkLCBzbyB3ZSBjYW4gdXBkYXRlIGluIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHJlY29yZC5pdGVtLCBpdGVtKSkgdGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UocmVjb3JkLCBpdGVtKTtcblxuICAgICAgdGhpcy5fbW92ZUFmdGVyKHJlY29yZCwgcHJldmlvdXNSZWNvcmQsIGluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmV2ZXIgc2VlbiBpdCwgY2hlY2sgZXZpY3RlZCBsaXN0LlxuICAgICAgcmVjb3JkID0gdGhpcy5fdW5saW5rZWRSZWNvcmRzID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQoaXRlbVRyYWNrQnkpO1xuICAgICAgaWYgKHJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgICAvLyBJdCBpcyBhbiBpdGVtIHdoaWNoIHdlIGhhdmUgZXZpY3RlZCBlYXJsaWVyOiByZWluc2VydCBpdCBiYWNrIGludG8gdGhlIGxpc3QuXG4gICAgICAgIC8vIEJ1dCBmaXJzdCB3ZSBuZWVkIHRvIGNoZWNrIGlmIGlkZW50aXR5IGNoYW5nZWQsIHNvIHdlIGNhbiB1cGRhdGUgaW4gdmlldyBpZiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKCFsb29zZUlkZW50aWNhbChyZWNvcmQuaXRlbSwgaXRlbSkpIHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHJlY29yZCwgaXRlbSk7XG5cbiAgICAgICAgdGhpcy5fcmVpbnNlcnRBZnRlcihyZWNvcmQsIHByZXZpb3VzUmVjb3JkLCBpbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCBpcyBhIG5ldyBpdGVtOiBhZGQgaXQuXG4gICAgICAgIHJlY29yZCA9XG4gICAgICAgICAgICB0aGlzLl9hZGRBZnRlcihuZXcgQ29sbGVjdGlvbkNoYW5nZVJlY29yZChpdGVtLCBpdGVtVHJhY2tCeSksIHByZXZpb3VzUmVjb3JkLCBpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBpZiBhbiBhcnJheSBjb250YWlucyBkdXBsaWNhdGVzLiAoU2hvcnQgY2lyY3VpdCBvZiBub3RoaW5nIGRpcnR5KVxuICAgKlxuICAgKiBVc2UgY2FzZTogYFthLCBhXWAgPT4gYFtiLCBhLCBhXWBcbiAgICpcbiAgICogSWYgd2UgZGlkIG5vdCBoYXZlIHRoaXMgY2hlY2sgdGhlbiB0aGUgaW5zZXJ0aW9uIG9mIGBiYCB3b3VsZDpcbiAgICogICAxKSBldmljdCBmaXJzdCBgYWBcbiAgICogICAyKSBpbnNlcnQgYGJgIGF0IGAwYCBpbmRleC5cbiAgICogICAzKSBsZWF2ZSBgYWAgYXQgaW5kZXggYDFgIGFzIGlzLiA8LS0gdGhpcyBpcyB3cm9uZyFcbiAgICogICAzKSByZWluc2VydCBgYWAgYXQgaW5kZXggMi4gPC0tIHRoaXMgaXMgd3JvbmchXG4gICAqXG4gICAqIFRoZSBjb3JyZWN0IGJlaGF2aW9yIGlzOlxuICAgKiAgIDEpIGV2aWN0IGZpcnN0IGBhYFxuICAgKiAgIDIpIGluc2VydCBgYmAgYXQgYDBgIGluZGV4LlxuICAgKiAgIDMpIHJlaW5zZXJ0IGBhYCBhdCBpbmRleCAxLlxuICAgKiAgIDMpIG1vdmUgYGFgIGF0IGZyb20gYDFgIHRvIGAyYC5cbiAgICpcbiAgICpcbiAgICogRG91YmxlIGNoZWNrIHRoYXQgd2UgaGF2ZSBub3QgZXZpY3RlZCBhIGR1cGxpY2F0ZSBpdGVtLiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpdGVtIHR5cGUgbWF5XG4gICAqIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQ6XG4gICAqIFRoZSBpbnNlcnRpb24gb2YgYiB3aWxsIGV2aWN0IHRoZSBmaXJzdCAnYScuIElmIHdlIGRvbid0IHJlaW5zZXJ0IGl0IG5vdyBpdCB3aWxsIGJlIHJlaW5zZXJ0ZWRcbiAgICogYXQgdGhlIGVuZC4gV2hpY2ggd2lsbCBzaG93IHVwIGFzIHRoZSB0d28gJ2EncyBzd2l0Y2hpbmcgcG9zaXRpb24uIFRoaXMgaXMgaW5jb3JyZWN0LCBzaW5jZSBhXG4gICAqIGJldHRlciB3YXkgdG8gdGhpbmsgb2YgaXQgaXMgYXMgaW5zZXJ0IG9mICdiJyByYXRoZXIgdGhlbiBzd2l0Y2ggJ2EnIHdpdGggJ2InIGFuZCB0aGVuIGFkZCAnYSdcbiAgICogYXQgdGhlIGVuZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdmVyaWZ5UmVpbnNlcnRpb24ocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLCBpdGVtOiBhbnksIGl0ZW1UcmFja0J5OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICBpbmRleDogbnVtYmVyKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgdmFyIHJlaW5zZXJ0UmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID1cbiAgICAgICAgdGhpcy5fdW5saW5rZWRSZWNvcmRzID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQoaXRlbVRyYWNrQnkpO1xuICAgIGlmIChyZWluc2VydFJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgcmVjb3JkID0gdGhpcy5fcmVpbnNlcnRBZnRlcihyZWluc2VydFJlY29yZCwgcmVjb3JkLl9wcmV2LCBpbmRleCk7XG4gICAgfSBlbHNlIGlmIChyZWNvcmQuY3VycmVudEluZGV4ICE9IGluZGV4KSB7XG4gICAgICByZWNvcmQuY3VycmVudEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLl9hZGRUb01vdmVzKHJlY29yZCwgaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByaWQgb2YgYW55IGV4Y2VzcyB7QGxpbmsgQ29sbGVjdGlvbkNoYW5nZVJlY29yZH1zIGZyb20gdGhlIHByZXZpb3VzIGNvbGxlY3Rpb25cbiAgICpcbiAgICogLSBgcmVjb3JkYCBUaGUgZmlyc3QgZXhjZXNzIHtAbGluayBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkfS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdHJ1bmNhdGUocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKSB7XG4gICAgLy8gQW55dGhpbmcgYWZ0ZXIgdGhhdCBuZWVkcyB0byBiZSByZW1vdmVkO1xuICAgIHdoaWxlIChyZWNvcmQgIT09IG51bGwpIHtcbiAgICAgIHZhciBuZXh0UmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gcmVjb3JkLl9uZXh0O1xuICAgICAgdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsocmVjb3JkKSk7XG4gICAgICByZWNvcmQgPSBuZXh0UmVjb3JkO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdW5saW5rZWRSZWNvcmRzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl91bmxpbmtlZFJlY29yZHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYWRkaXRpb25zVGFpbCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21vdmVzVGFpbCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5faXRUYWlsICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9pdFRhaWwuX25leHQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmVtb3ZhbHNUYWlsICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVpbnNlcnRBZnRlcihyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsIHByZXZSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsXG4gICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICBpZiAodGhpcy5fdW5saW5rZWRSZWNvcmRzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKHJlY29yZCk7XG4gICAgfVxuICAgIHZhciBwcmV2ID0gcmVjb3JkLl9wcmV2UmVtb3ZlZDtcbiAgICB2YXIgbmV4dCA9IHJlY29yZC5fbmV4dFJlbW92ZWQ7XG5cbiAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fcmVtb3ZhbHNIZWFkID0gbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldi5fbmV4dFJlbW92ZWQgPSBuZXh0O1xuICAgIH1cbiAgICBpZiAobmV4dCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fcmVtb3ZhbHNUYWlsID0gcHJldjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dC5fcHJldlJlbW92ZWQgPSBwcmV2O1xuICAgIH1cblxuICAgIHRoaXMuX2luc2VydEFmdGVyKHJlY29yZCwgcHJldlJlY29yZCwgaW5kZXgpO1xuICAgIHRoaXMuX2FkZFRvTW92ZXMocmVjb3JkLCBpbmRleCk7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX21vdmVBZnRlcihyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsIHByZXZSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsXG4gICAgICAgICAgICAgaW5kZXg6IG51bWJlcik6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIHRoaXMuX3VubGluayhyZWNvcmQpO1xuICAgIHRoaXMuX2luc2VydEFmdGVyKHJlY29yZCwgcHJldlJlY29yZCwgaW5kZXgpO1xuICAgIHRoaXMuX2FkZFRvTW92ZXMocmVjb3JkLCBpbmRleCk7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZEFmdGVyKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCwgcHJldlJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCxcbiAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICB0aGlzLl9pbnNlcnRBZnRlcihyZWNvcmQsIHByZXZSZWNvcmQsIGluZGV4KTtcblxuICAgIGlmICh0aGlzLl9hZGRpdGlvbnNUYWlsID09PSBudWxsKSB7XG4gICAgICAvLyB0b2RvKHZpY2IpXG4gICAgICAvLyBhc3NlcnQodGhpcy5fYWRkaXRpb25zSGVhZCA9PT0gbnVsbCk7XG4gICAgICB0aGlzLl9hZGRpdGlvbnNUYWlsID0gdGhpcy5fYWRkaXRpb25zSGVhZCA9IHJlY29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdG9kbyh2aWNiKVxuICAgICAgLy8gYXNzZXJ0KF9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQgPT09IG51bGwpO1xuICAgICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dEFkZGVkID09PSBudWxsKTtcbiAgICAgIHRoaXMuX2FkZGl0aW9uc1RhaWwgPSB0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQgPSByZWNvcmQ7XG4gICAgfVxuICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9pbnNlcnRBZnRlcihyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsIHByZXZSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsXG4gICAgICAgICAgICAgICBpbmRleDogbnVtYmVyKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgLy8gdG9kbyh2aWNiKVxuICAgIC8vIGFzc2VydChyZWNvcmQgIT0gcHJldlJlY29yZCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dCA9PT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fcHJldiA9PT0gbnVsbCk7XG5cbiAgICB2YXIgbmV4dDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IHByZXZSZWNvcmQgPT09IG51bGwgPyB0aGlzLl9pdEhlYWQgOiBwcmV2UmVjb3JkLl9uZXh0O1xuICAgIC8vIHRvZG8odmljYilcbiAgICAvLyBhc3NlcnQobmV4dCAhPSByZWNvcmQpO1xuICAgIC8vIGFzc2VydChwcmV2UmVjb3JkICE9IHJlY29yZCk7XG4gICAgcmVjb3JkLl9uZXh0ID0gbmV4dDtcbiAgICByZWNvcmQuX3ByZXYgPSBwcmV2UmVjb3JkO1xuICAgIGlmIChuZXh0ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9pdFRhaWwgPSByZWNvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuX3ByZXYgPSByZWNvcmQ7XG4gICAgfVxuICAgIGlmIChwcmV2UmVjb3JkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9pdEhlYWQgPSByZWNvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXZSZWNvcmQuX25leHQgPSByZWNvcmQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpbmtlZFJlY29yZHMgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2xpbmtlZFJlY29yZHMgPSBuZXcgX0R1cGxpY2F0ZU1hcCgpO1xuICAgIH1cbiAgICB0aGlzLl9saW5rZWRSZWNvcmRzLnB1dChyZWNvcmQpO1xuXG4gICAgcmVjb3JkLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZW1vdmUocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHJlY29yZCkpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdW5saW5rKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCk6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIGlmICh0aGlzLl9saW5rZWRSZWNvcmRzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZShyZWNvcmQpO1xuICAgIH1cblxuICAgIHZhciBwcmV2ID0gcmVjb3JkLl9wcmV2O1xuICAgIHZhciBuZXh0ID0gcmVjb3JkLl9uZXh0O1xuXG4gICAgLy8gdG9kbyh2aWNiKVxuICAgIC8vIGFzc2VydCgocmVjb3JkLl9wcmV2ID0gbnVsbCkgPT09IG51bGwpO1xuICAgIC8vIGFzc2VydCgocmVjb3JkLl9uZXh0ID0gbnVsbCkgPT09IG51bGwpO1xuXG4gICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2l0SGVhZCA9IG5leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXYuX25leHQgPSBuZXh0O1xuICAgIH1cbiAgICBpZiAobmV4dCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5faXRUYWlsID0gcHJldjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dC5fcHJldiA9IHByZXY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZFRvTW92ZXMocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLCB0b0luZGV4OiBudW1iZXIpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICAvLyB0b2RvKHZpY2IpXG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dE1vdmVkID09PSBudWxsKTtcblxuICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCA9PT0gdG9JbmRleCkge1xuICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbW92ZXNUYWlsID09PSBudWxsKSB7XG4gICAgICAvLyB0b2RvKHZpY2IpXG4gICAgICAvLyBhc3NlcnQoX21vdmVzSGVhZCA9PT0gbnVsbCk7XG4gICAgICB0aGlzLl9tb3Zlc1RhaWwgPSB0aGlzLl9tb3Zlc0hlYWQgPSByZWNvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvZG8odmljYilcbiAgICAgIC8vIGFzc2VydChfbW92ZXNUYWlsLl9uZXh0TW92ZWQgPT09IG51bGwpO1xuICAgICAgdGhpcy5fbW92ZXNUYWlsID0gdGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQgPSByZWNvcmQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZFRvUmVtb3ZhbHMocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgaWYgKHRoaXMuX3VubGlua2VkUmVjb3JkcyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fdW5saW5rZWRSZWNvcmRzID0gbmV3IF9EdXBsaWNhdGVNYXAoKTtcbiAgICB9XG4gICAgdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dChyZWNvcmQpO1xuICAgIHJlY29yZC5jdXJyZW50SW5kZXggPSBudWxsO1xuICAgIHJlY29yZC5fbmV4dFJlbW92ZWQgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuX3JlbW92YWxzVGFpbCA9PT0gbnVsbCkge1xuICAgICAgLy8gdG9kbyh2aWNiKVxuICAgICAgLy8gYXNzZXJ0KF9yZW1vdmFsc0hlYWQgPT09IG51bGwpO1xuICAgICAgdGhpcy5fcmVtb3ZhbHNUYWlsID0gdGhpcy5fcmVtb3ZhbHNIZWFkID0gcmVjb3JkO1xuICAgICAgcmVjb3JkLl9wcmV2UmVtb3ZlZCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvZG8odmljYilcbiAgICAgIC8vIGFzc2VydChfcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZCA9PT0gbnVsbCk7XG4gICAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0UmVtb3ZlZCA9PT0gbnVsbCk7XG4gICAgICByZWNvcmQuX3ByZXZSZW1vdmVkID0gdGhpcy5fcmVtb3ZhbHNUYWlsO1xuICAgICAgdGhpcy5fcmVtb3ZhbHNUYWlsID0gdGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZCA9IHJlY29yZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZElkZW50aXR5Q2hhbmdlKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCwgaXRlbTogYW55KSB7XG4gICAgcmVjb3JkLml0ZW0gPSBpdGVtO1xuICAgIGlmICh0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsID0gdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZCA9IHJlY29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCA9IHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZSA9IHJlY29yZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIHRoaXMuZm9yRWFjaEl0ZW0oKHJlY29yZCkgPT4gbGlzdC5wdXNoKHJlY29yZCkpO1xuXG4gICAgdmFyIHByZXZpb3VzID0gW107XG4gICAgdGhpcy5mb3JFYWNoUHJldmlvdXNJdGVtKChyZWNvcmQpID0+IHByZXZpb3VzLnB1c2gocmVjb3JkKSk7XG5cbiAgICB2YXIgYWRkaXRpb25zID0gW107XG4gICAgdGhpcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQpID0+IGFkZGl0aW9ucy5wdXNoKHJlY29yZCkpO1xuXG4gICAgdmFyIG1vdmVzID0gW107XG4gICAgdGhpcy5mb3JFYWNoTW92ZWRJdGVtKChyZWNvcmQpID0+IG1vdmVzLnB1c2gocmVjb3JkKSk7XG5cbiAgICB2YXIgcmVtb3ZhbHMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hSZW1vdmVkSXRlbSgocmVjb3JkKSA9PiByZW1vdmFscy5wdXNoKHJlY29yZCkpO1xuXG4gICAgdmFyIGlkZW50aXR5Q2hhbmdlcyA9IFtdO1xuICAgIHRoaXMuZm9yRWFjaElkZW50aXR5Q2hhbmdlKChyZWNvcmQpID0+IGlkZW50aXR5Q2hhbmdlcy5wdXNoKHJlY29yZCkpO1xuXG4gICAgcmV0dXJuIFwiY29sbGVjdGlvbjogXCIgKyBsaXN0LmpvaW4oJywgJykgKyBcIlxcblwiICsgXCJwcmV2aW91czogXCIgKyBwcmV2aW91cy5qb2luKCcsICcpICsgXCJcXG5cIiArXG4gICAgICAgICAgIFwiYWRkaXRpb25zOiBcIiArIGFkZGl0aW9ucy5qb2luKCcsICcpICsgXCJcXG5cIiArIFwibW92ZXM6IFwiICsgbW92ZXMuam9pbignLCAnKSArIFwiXFxuXCIgK1xuICAgICAgICAgICBcInJlbW92YWxzOiBcIiArIHJlbW92YWxzLmpvaW4oJywgJykgKyBcIlxcblwiICsgXCJpZGVudGl0eUNoYW5nZXM6IFwiICtcbiAgICAgICAgICAgaWRlbnRpdHlDaGFuZ2VzLmpvaW4oJywgJykgKyBcIlxcblwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgY3VycmVudEluZGV4OiBudW1iZXIgPSBudWxsO1xuICBwcmV2aW91c0luZGV4OiBudW1iZXIgPSBudWxsO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHRQcmV2aW91czogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ByZXY6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0OiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHJldkR1cDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHREdXA6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9wcmV2UmVtb3ZlZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHRSZW1vdmVkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dEFkZGVkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dE1vdmVkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dElkZW50aXR5Q2hhbmdlOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcblxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtOiBhbnksIHB1YmxpYyB0cmFja0J5SWQ6IGFueSkge31cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByZXZpb3VzSW5kZXggPT09IHRoaXMuY3VycmVudEluZGV4ID9cbiAgICAgICAgICAgICAgIHN0cmluZ2lmeSh0aGlzLml0ZW0pIDpcbiAgICAgICAgICAgICAgIHN0cmluZ2lmeSh0aGlzLml0ZW0pICsgJ1snICsgc3RyaW5naWZ5KHRoaXMucHJldmlvdXNJbmRleCkgKyAnLT4nICtcbiAgICAgICAgICAgICAgICAgICBzdHJpbmdpZnkodGhpcy5jdXJyZW50SW5kZXgpICsgJ10nO1xuICB9XG59XG5cbi8vIEEgbGlua2VkIGxpc3Qgb2YgQ29sbGVjdGlvbkNoYW5nZVJlY29yZHMgd2l0aCB0aGUgc2FtZSBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLml0ZW1cbmNsYXNzIF9EdXBsaWNhdGVJdGVtUmVjb3JkTGlzdCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2hlYWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF90YWlsOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcblxuICAvKipcbiAgICogQXBwZW5kIHRoZSByZWNvcmQgdG8gdGhlIGxpc3Qgb2YgZHVwbGljYXRlcy5cbiAgICpcbiAgICogTm90ZTogYnkgZGVzaWduIGFsbCByZWNvcmRzIGluIHRoZSBsaXN0IG9mIGR1cGxpY2F0ZXMgaG9sZCB0aGUgc2FtZSB2YWx1ZSBpbiByZWNvcmQuaXRlbS5cbiAgICovXG4gIGFkZChyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGVhZCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5faGVhZCA9IHRoaXMuX3RhaWwgPSByZWNvcmQ7XG4gICAgICByZWNvcmQuX25leHREdXAgPSBudWxsO1xuICAgICAgcmVjb3JkLl9wcmV2RHVwID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdG9kbyh2aWNiKVxuICAgICAgLy8gYXNzZXJ0KHJlY29yZC5pdGVtID09ICBfaGVhZC5pdGVtIHx8XG4gICAgICAvLyAgICAgICByZWNvcmQuaXRlbSBpcyBudW0gJiYgcmVjb3JkLml0ZW0uaXNOYU4gJiYgX2hlYWQuaXRlbSBpcyBudW0gJiYgX2hlYWQuaXRlbS5pc05hTik7XG4gICAgICB0aGlzLl90YWlsLl9uZXh0RHVwID0gcmVjb3JkO1xuICAgICAgcmVjb3JkLl9wcmV2RHVwID0gdGhpcy5fdGFpbDtcbiAgICAgIHJlY29yZC5fbmV4dER1cCA9IG51bGw7XG4gICAgICB0aGlzLl90YWlsID0gcmVjb3JkO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgYSBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIGhhdmluZyBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLnRyYWNrQnlJZCA9PSB0cmFja0J5SWQgYW5kXG4gIC8vIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQuY3VycmVudEluZGV4ID49IGFmdGVySW5kZXhcbiAgZ2V0KHRyYWNrQnlJZDogYW55LCBhZnRlckluZGV4OiBudW1iZXIpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5faGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHREdXApIHtcbiAgICAgIGlmICgoYWZ0ZXJJbmRleCA9PT0gbnVsbCB8fCBhZnRlckluZGV4IDwgcmVjb3JkLmN1cnJlbnRJbmRleCkgJiZcbiAgICAgICAgICBsb29zZUlkZW50aWNhbChyZWNvcmQudHJhY2tCeUlkLCB0cmFja0J5SWQpKSB7XG4gICAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBvbmUge0BsaW5rIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmR9IGZyb20gdGhlIGxpc3Qgb2YgZHVwbGljYXRlcy5cbiAgICpcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBsaXN0IG9mIGR1cGxpY2F0ZXMgaXMgZW1wdHkuXG4gICAqL1xuICByZW1vdmUocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKTogYm9vbGVhbiB7XG4gICAgLy8gdG9kbyh2aWNiKVxuICAgIC8vIGFzc2VydCgoKSB7XG4gICAgLy8gIC8vIHZlcmlmeSB0aGF0IHRoZSByZWNvcmQgYmVpbmcgcmVtb3ZlZCBpcyBpbiB0aGUgbGlzdC5cbiAgICAvLyAgZm9yIChDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIGN1cnNvciA9IF9oZWFkOyBjdXJzb3IgIT0gbnVsbDsgY3Vyc29yID0gY3Vyc29yLl9uZXh0RHVwKSB7XG4gICAgLy8gICAgaWYgKGlkZW50aWNhbChjdXJzb3IsIHJlY29yZCkpIHJldHVybiB0cnVlO1xuICAgIC8vICB9XG4gICAgLy8gIHJldHVybiBmYWxzZTtcbiAgICAvL30pO1xuXG4gICAgdmFyIHByZXY6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSByZWNvcmQuX3ByZXZEdXA7XG4gICAgdmFyIG5leHQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSByZWNvcmQuX25leHREdXA7XG4gICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2hlYWQgPSBuZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2Ll9uZXh0RHVwID0gbmV4dDtcbiAgICB9XG4gICAgaWYgKG5leHQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3RhaWwgPSBwcmV2O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Ll9wcmV2RHVwID0gcHJldjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2hlYWQgPT09IG51bGw7XG4gIH1cbn1cblxuY2xhc3MgX0R1cGxpY2F0ZU1hcCB7XG4gIG1hcCA9IG5ldyBNYXA8YW55LCBfRHVwbGljYXRlSXRlbVJlY29yZExpc3Q+KCk7XG5cbiAgcHV0KHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCkge1xuICAgIC8vIHRvZG8odmljYikgaGFuZGxlIGNvcm5lciBjYXNlc1xuICAgIHZhciBrZXkgPSBnZXRNYXBLZXkocmVjb3JkLnRyYWNrQnlJZCk7XG5cbiAgICB2YXIgZHVwbGljYXRlcyA9IHRoaXMubWFwLmdldChrZXkpO1xuICAgIGlmICghaXNQcmVzZW50KGR1cGxpY2F0ZXMpKSB7XG4gICAgICBkdXBsaWNhdGVzID0gbmV3IF9EdXBsaWNhdGVJdGVtUmVjb3JkTGlzdCgpO1xuICAgICAgdGhpcy5tYXAuc2V0KGtleSwgZHVwbGljYXRlcyk7XG4gICAgfVxuICAgIGR1cGxpY2F0ZXMuYWRkKHJlY29yZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGB2YWx1ZWAgdXNpbmcga2V5LiBCZWNhdXNlIHRoZSBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHZhbHVlIG1heSBiZSBvbmUgd2hpY2ggd2VcbiAgICogaGF2ZSBhbHJlYWR5IGl0ZXJhdGVkIG92ZXIsIHdlIHVzZSB0aGUgYWZ0ZXJJbmRleCB0byBwcmV0ZW5kIGl0IGlzIG5vdCB0aGVyZS5cbiAgICpcbiAgICogVXNlIGNhc2U6IGBbYSwgYiwgYywgYSwgYV1gIGlmIHdlIGFyZSBhdCBpbmRleCBgM2Agd2hpY2ggaXMgdGhlIHNlY29uZCBgYWAgdGhlbiBhc2tpbmcgaWYgd2VcbiAgICogaGF2ZSBhbnkgbW9yZSBgYWBzIG5lZWRzIHRvIHJldHVybiB0aGUgbGFzdCBgYWAgbm90IHRoZSBmaXJzdCBvciBzZWNvbmQuXG4gICAqL1xuICBnZXQodHJhY2tCeUlkOiBhbnksIGFmdGVySW5kZXg6IG51bWJlciA9IG51bGwpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICB2YXIga2V5ID0gZ2V0TWFwS2V5KHRyYWNrQnlJZCk7XG5cbiAgICB2YXIgcmVjb3JkTGlzdCA9IHRoaXMubWFwLmdldChrZXkpO1xuICAgIHJldHVybiBpc0JsYW5rKHJlY29yZExpc3QpID8gbnVsbCA6IHJlY29yZExpc3QuZ2V0KHRyYWNrQnlJZCwgYWZ0ZXJJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHtAbGluayBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkfSBmcm9tIHRoZSBsaXN0IG9mIGR1cGxpY2F0ZXMuXG4gICAqXG4gICAqIFRoZSBsaXN0IG9mIGR1cGxpY2F0ZXMgYWxzbyBpcyByZW1vdmVkIGZyb20gdGhlIG1hcCBpZiBpdCBnZXRzIGVtcHR5LlxuICAgKi9cbiAgcmVtb3ZlKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCk6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIHZhciBrZXkgPSBnZXRNYXBLZXkocmVjb3JkLnRyYWNrQnlJZCk7XG4gICAgLy8gdG9kbyh2aWNiKVxuICAgIC8vIGFzc2VydCh0aGlzLm1hcC5jb250YWluc0tleShrZXkpKTtcbiAgICB2YXIgcmVjb3JkTGlzdDogX0R1cGxpY2F0ZUl0ZW1SZWNvcmRMaXN0ID0gdGhpcy5tYXAuZ2V0KGtleSk7XG4gICAgLy8gUmVtb3ZlIHRoZSBsaXN0IG9mIGR1cGxpY2F0ZXMgd2hlbiBpdCBnZXRzIGVtcHR5XG4gICAgaWYgKHJlY29yZExpc3QucmVtb3ZlKHJlY29yZCkpIHtcbiAgICAgIHRoaXMubWFwLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLm1hcC5zaXplID09PSAwOyB9XG5cbiAgY2xlYXIoKSB7IHRoaXMubWFwLmNsZWFyKCk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gJ19EdXBsaWNhdGVNYXAoJyArIHN0cmluZ2lmeSh0aGlzLm1hcCkgKyAnKSc7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar di_1 = require('angular2/src/core/di');\r\n/**\r\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\r\n */\r\nvar KeyValueDiffers = (function () {\r\n function KeyValueDiffers(factories) {\r\n this.factories = factories;\r\n }\r\n KeyValueDiffers.create = function (factories, parent) {\r\n if (lang_1.isPresent(parent)) {\r\n var copied = collection_1.ListWrapper.clone(parent.factories);\r\n factories = factories.concat(copied);\r\n return new KeyValueDiffers(factories);\r\n }\r\n else {\r\n return new KeyValueDiffers(factories);\r\n }\r\n };\r\n /**\r\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\r\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\r\n * {@link KeyValueDiffers} instance.\r\n *\r\n * The following example shows how to extend an existing list of factories,\r\n * which will only be applied to the injector for this component and its children.\r\n * This step is all that's required to make a new {@link KeyValueDiffer} available.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * viewProviders: [\r\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\r\n * ]\r\n * })\r\n * ```\r\n */\r\n KeyValueDiffers.extend = function (factories) {\r\n return new di_1.Provider(KeyValueDiffers, {\r\n useFactory: function (parent) {\r\n if (lang_1.isBlank(parent)) {\r\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\r\n // to\r\n // bootstrap(), which would override default pipes instead of extending them.\r\n throw new exceptions_1.BaseException('Cannot extend KeyValueDiffers without a parent injector');\r\n }\r\n return KeyValueDiffers.create(factories, parent);\r\n },\r\n // Dependency technically isn't optional, but we can provide a better error message this way.\r\n deps: [[KeyValueDiffers, new di_1.SkipSelfMetadata(), new di_1.OptionalMetadata()]]\r\n });\r\n };\r\n KeyValueDiffers.prototype.find = function (kv) {\r\n var factory = this.factories.find(function (f) { return f.supports(kv); });\r\n if (lang_1.isPresent(factory)) {\r\n return factory;\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Cannot find a differ supporting object '\" + kv + \"'\");\r\n }\r\n };\r\n KeyValueDiffers = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Array])\r\n ], KeyValueDiffers);\r\n return KeyValueDiffers;\r\n}());\r\nexports.KeyValueDiffers = KeyValueDiffers;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5dmFsdWVfZGlmZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9rZXl2YWx1ZV9kaWZmZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBd0MsMEJBQTBCLENBQUMsQ0FBQTtBQUNuRSwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUUzRCxtQkFBdUUsc0JBQXNCLENBQUMsQ0FBQTtBQWtCOUY7O0dBRUc7QUFFSDtJQUNFLHlCQUFtQixTQUFrQztRQUFsQyxjQUFTLEdBQVQsU0FBUyxDQUF5QjtJQUFHLENBQUM7SUFFbEQsc0JBQU0sR0FBYixVQUFjLFNBQWtDLEVBQUUsTUFBd0I7UUFDeEUsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxNQUFNLEdBQUcsd0JBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0ksc0JBQU0sR0FBYixVQUFjLFNBQWtDO1FBQzlDLE1BQU0sQ0FBQyxJQUFJLGFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDbkMsVUFBVSxFQUFFLFVBQUMsTUFBdUI7Z0JBQ2xDLEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLDBGQUEwRjtvQkFDMUYsS0FBSztvQkFDTCw2RUFBNkU7b0JBQzdFLE1BQU0sSUFBSSwwQkFBYSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFDRCw2RkFBNkY7WUFDN0YsSUFBSSxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxxQkFBZ0IsRUFBRSxFQUFFLElBQUkscUJBQWdCLEVBQUUsQ0FBQyxDQUFDO1NBQzFFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw4QkFBSSxHQUFKLFVBQUssRUFBVTtRQUNiLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBZCxDQUFjLENBQUMsQ0FBQztRQUN2RCxFQUFFLENBQUMsQ0FBQyxnQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSwwQkFBYSxDQUFDLDZDQUEyQyxFQUFFLE1BQUcsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBeERIO1FBQUMsWUFBSyxFQUFFOzt1QkFBQTtJQXlEUixzQkFBQztBQUFELENBQUMsQUF4REQsSUF3REM7QUF4RFksdUJBQWUsa0JBd0QzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIENPTlNUfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuaW1wb3J0IHtQcm92aWRlciwgU2tpcFNlbGZNZXRhZGF0YSwgT3B0aW9uYWxNZXRhZGF0YSwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG4vKipcbiAqIEEgZGlmZmVyIHRoYXQgdHJhY2tzIGNoYW5nZXMgbWFkZSB0byBhbiBvYmplY3Qgb3ZlciB0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVZhbHVlRGlmZmVyIHtcbiAgZGlmZihvYmplY3Q6IGFueSk7XG4gIG9uRGVzdHJveSgpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgZmFjdG9yeSBmb3Ige0BsaW5rIEtleVZhbHVlRGlmZmVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlWYWx1ZURpZmZlckZhY3Rvcnkge1xuICBzdXBwb3J0cyhvYmplY3RzOiBhbnkpOiBib29sZWFuO1xuICBjcmVhdGUoY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKTogS2V5VmFsdWVEaWZmZXI7XG59XG5cbi8qKlxuICogQSByZXBvc2l0b3J5IG9mIGRpZmZlcmVudCBNYXAgZGlmZmluZyBzdHJhdGVnaWVzIHVzZWQgYnkgTmdDbGFzcywgTmdTdHlsZSwgYW5kIG90aGVycy5cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZURpZmZlcnMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmFjdG9yaWVzOiBLZXlWYWx1ZURpZmZlckZhY3RvcnlbXSkge31cblxuICBzdGF0aWMgY3JlYXRlKGZhY3RvcmllczogS2V5VmFsdWVEaWZmZXJGYWN0b3J5W10sIHBhcmVudD86IEtleVZhbHVlRGlmZmVycyk6IEtleVZhbHVlRGlmZmVycyB7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnQpKSB7XG4gICAgICB2YXIgY29waWVkID0gTGlzdFdyYXBwZXIuY2xvbmUocGFyZW50LmZhY3Rvcmllcyk7XG4gICAgICBmYWN0b3JpZXMgPSBmYWN0b3JpZXMuY29uY2F0KGNvcGllZCk7XG4gICAgICByZXR1cm4gbmV3IEtleVZhbHVlRGlmZmVycyhmYWN0b3JpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEtleVZhbHVlRGlmZmVycyhmYWN0b3JpZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhbiBhcnJheSBvZiB7QGxpbmsgS2V5VmFsdWVEaWZmZXJGYWN0b3J5fSBhbmQgcmV0dXJucyBhIHByb3ZpZGVyIHVzZWQgdG8gZXh0ZW5kIHRoZVxuICAgKiBpbmhlcml0ZWQge0BsaW5rIEtleVZhbHVlRGlmZmVyc30gaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgZmFjdG9yaWVzIGFuZCByZXR1cm4gYSBuZXdcbiAgICoge0BsaW5rIEtleVZhbHVlRGlmZmVyc30gaW5zdGFuY2UuXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gZXh0ZW5kIGFuIGV4aXN0aW5nIGxpc3Qgb2YgZmFjdG9yaWVzLFxuICAgICAgICAgKiB3aGljaCB3aWxsIG9ubHkgYmUgYXBwbGllZCB0byB0aGUgaW5qZWN0b3IgZm9yIHRoaXMgY29tcG9uZW50IGFuZCBpdHMgY2hpbGRyZW4uXG4gICAgICAgICAqIFRoaXMgc3RlcCBpcyBhbGwgdGhhdCdzIHJlcXVpcmVkIHRvIG1ha2UgYSBuZXcge0BsaW5rIEtleVZhbHVlRGlmZmVyfSBhdmFpbGFibGUuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIGBgYFxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICB2aWV3UHJvdmlkZXJzOiBbXG4gICAqICAgICBLZXlWYWx1ZURpZmZlcnMuZXh0ZW5kKFtuZXcgSW1tdXRhYmxlTWFwRGlmZmVyKCldKVxuICAgKiAgIF1cbiAgICogfSlcbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgZXh0ZW5kKGZhY3RvcmllczogS2V5VmFsdWVEaWZmZXJGYWN0b3J5W10pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBQcm92aWRlcihLZXlWYWx1ZURpZmZlcnMsIHtcbiAgICAgIHVzZUZhY3Rvcnk6IChwYXJlbnQ6IEtleVZhbHVlRGlmZmVycykgPT4ge1xuICAgICAgICBpZiAoaXNCbGFuayhwYXJlbnQpKSB7XG4gICAgICAgICAgLy8gVHlwaWNhbGx5IHdvdWxkIG9jY3VyIHdoZW4gY2FsbGluZyBLZXlWYWx1ZURpZmZlcnMuZXh0ZW5kIGluc2lkZSBvZiBkZXBlbmRlbmNpZXMgcGFzc2VkXG4gICAgICAgICAgLy8gdG9cbiAgICAgICAgICAvLyBib290c3RyYXAoKSwgd2hpY2ggd291bGQgb3ZlcnJpZGUgZGVmYXVsdCBwaXBlcyBpbnN0ZWFkIG9mIGV4dGVuZGluZyB0aGVtLlxuICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdDYW5ub3QgZXh0ZW5kIEtleVZhbHVlRGlmZmVycyB3aXRob3V0IGEgcGFyZW50IGluamVjdG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEtleVZhbHVlRGlmZmVycy5jcmVhdGUoZmFjdG9yaWVzLCBwYXJlbnQpO1xuICAgICAgfSxcbiAgICAgIC8vIERlcGVuZGVuY3kgdGVjaG5pY2FsbHkgaXNuJ3Qgb3B0aW9uYWwsIGJ1dCB3ZSBjYW4gcHJvdmlkZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIHRoaXMgd2F5LlxuICAgICAgZGVwczogW1tLZXlWYWx1ZURpZmZlcnMsIG5ldyBTa2lwU2VsZk1ldGFkYXRhKCksIG5ldyBPcHRpb25hbE1ldGFkYXRhKCldXVxuICAgIH0pO1xuICB9XG5cbiAgZmluZChrdjogT2JqZWN0KTogS2V5VmFsdWVEaWZmZXJGYWN0b3J5IHtcbiAgICB2YXIgZmFjdG9yeSA9IHRoaXMuZmFjdG9yaWVzLmZpbmQoZiA9PiBmLnN1cHBvcnRzKGt2KSk7XG4gICAgaWYgKGlzUHJlc2VudChmYWN0b3J5KSkge1xuICAgICAgcmV0dXJuIGZhY3Rvcnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHtrdn0nYCk7XG4gICAgfVxuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar DefaultKeyValueDifferFactory = (function () {\r\n function DefaultKeyValueDifferFactory() {\r\n }\r\n DefaultKeyValueDifferFactory.prototype.supports = function (obj) { return obj instanceof Map || lang_1.isJsObject(obj); };\r\n DefaultKeyValueDifferFactory.prototype.create = function (cdRef) { return new DefaultKeyValueDiffer(); };\r\n DefaultKeyValueDifferFactory = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], DefaultKeyValueDifferFactory);\r\n return DefaultKeyValueDifferFactory;\r\n}());\r\nexports.DefaultKeyValueDifferFactory = DefaultKeyValueDifferFactory;\r\nvar DefaultKeyValueDiffer = (function () {\r\n function DefaultKeyValueDiffer() {\r\n this._records = new Map();\r\n this._mapHead = null;\r\n this._previousMapHead = null;\r\n this._changesHead = null;\r\n this._changesTail = null;\r\n this._additionsHead = null;\r\n this._additionsTail = null;\r\n this._removalsHead = null;\r\n this._removalsTail = null;\r\n }\r\n Object.defineProperty(DefaultKeyValueDiffer.prototype, \"isDirty\", {\r\n get: function () {\r\n return this._additionsHead !== null || this._changesHead !== null ||\r\n this._removalsHead !== null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DefaultKeyValueDiffer.prototype.forEachItem = function (fn) {\r\n var record;\r\n for (record = this._mapHead; record !== null; record = record._next) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachPreviousItem = function (fn) {\r\n var record;\r\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachChangedItem = function (fn) {\r\n var record;\r\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachAddedItem = function (fn) {\r\n var record;\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachRemovedItem = function (fn) {\r\n var record;\r\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.diff = function (map) {\r\n if (lang_1.isBlank(map))\r\n map = collection_1.MapWrapper.createFromPairs([]);\r\n if (!(map instanceof Map || lang_1.isJsObject(map))) {\r\n throw new exceptions_1.BaseException(\"Error trying to diff '\" + map + \"'\");\r\n }\r\n if (this.check(map)) {\r\n return this;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.onDestroy = function () { };\r\n DefaultKeyValueDiffer.prototype.check = function (map) {\r\n var _this = this;\r\n this._reset();\r\n var records = this._records;\r\n var oldSeqRecord = this._mapHead;\r\n var lastOldSeqRecord = null;\r\n var lastNewSeqRecord = null;\r\n var seqChanged = false;\r\n this._forEach(map, function (value, key) {\r\n var newSeqRecord;\r\n if (oldSeqRecord !== null && key === oldSeqRecord.key) {\r\n newSeqRecord = oldSeqRecord;\r\n if (!lang_1.looseIdentical(value, oldSeqRecord.currentValue)) {\r\n oldSeqRecord.previousValue = oldSeqRecord.currentValue;\r\n oldSeqRecord.currentValue = value;\r\n _this._addToChanges(oldSeqRecord);\r\n }\r\n }\r\n else {\r\n seqChanged = true;\r\n if (oldSeqRecord !== null) {\r\n oldSeqRecord._next = null;\r\n _this._removeFromSeq(lastOldSeqRecord, oldSeqRecord);\r\n _this._addToRemovals(oldSeqRecord);\r\n }\r\n if (records.has(key)) {\r\n newSeqRecord = records.get(key);\r\n }\r\n else {\r\n newSeqRecord = new KeyValueChangeRecord(key);\r\n records.set(key, newSeqRecord);\r\n newSeqRecord.currentValue = value;\r\n _this._addToAdditions(newSeqRecord);\r\n }\r\n }\r\n if (seqChanged) {\r\n if (_this._isInRemovals(newSeqRecord)) {\r\n _this._removeFromRemovals(newSeqRecord);\r\n }\r\n if (lastNewSeqRecord == null) {\r\n _this._mapHead = newSeqRecord;\r\n }\r\n else {\r\n lastNewSeqRecord._next = newSeqRecord;\r\n }\r\n }\r\n lastOldSeqRecord = oldSeqRecord;\r\n lastNewSeqRecord = newSeqRecord;\r\n oldSeqRecord = oldSeqRecord === null ? null : oldSeqRecord._next;\r\n });\r\n this._truncate(lastOldSeqRecord, oldSeqRecord);\r\n return this.isDirty;\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._reset = function () {\r\n if (this.isDirty) {\r\n var record;\r\n // Record the state of the mapping\r\n for (record = this._previousMapHead = this._mapHead; record !== null; record = record._next) {\r\n record._nextPrevious = record._next;\r\n }\r\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\r\n record.previousValue = record.currentValue;\r\n }\r\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\r\n record.previousValue = record.currentValue;\r\n }\r\n // todo(vicb) once assert is supported\r\n // assert(() {\r\n // var r = _changesHead;\r\n // while (r != null) {\r\n // var nextRecord = r._nextChanged;\r\n // r._nextChanged = null;\r\n // r = nextRecord;\r\n // }\r\n //\r\n // r = _additionsHead;\r\n // while (r != null) {\r\n // var nextRecord = r._nextAdded;\r\n // r._nextAdded = null;\r\n // r = nextRecord;\r\n // }\r\n //\r\n // r = _removalsHead;\r\n // while (r != null) {\r\n // var nextRecord = r._nextRemoved;\r\n // r._nextRemoved = null;\r\n // r = nextRecord;\r\n // }\r\n //\r\n // return true;\r\n //});\r\n this._changesHead = this._changesTail = null;\r\n this._additionsHead = this._additionsTail = null;\r\n this._removalsHead = this._removalsTail = null;\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._truncate = function (lastRecord, record) {\r\n while (record !== null) {\r\n if (lastRecord === null) {\r\n this._mapHead = null;\r\n }\r\n else {\r\n lastRecord._next = null;\r\n }\r\n var nextRecord = record._next;\r\n // todo(vicb) assert\r\n // assert((() {\r\n // record._next = null;\r\n // return true;\r\n //}));\r\n this._addToRemovals(record);\r\n lastRecord = record;\r\n record = nextRecord;\r\n }\r\n for (var rec = this._removalsHead; rec !== null; rec = rec._nextRemoved) {\r\n rec.previousValue = rec.currentValue;\r\n rec.currentValue = null;\r\n this._records.delete(rec.key);\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._isInRemovals = function (record) {\r\n return record === this._removalsHead || record._nextRemoved !== null ||\r\n record._prevRemoved !== null;\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._addToRemovals = function (record) {\r\n // todo(vicb) assert\r\n // assert(record._next == null);\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n // assert(record._nextRemoved == null);\r\n // assert(record._prevRemoved == null);\r\n if (this._removalsHead === null) {\r\n this._removalsHead = this._removalsTail = record;\r\n }\r\n else {\r\n this._removalsTail._nextRemoved = record;\r\n record._prevRemoved = this._removalsTail;\r\n this._removalsTail = record;\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._removeFromSeq = function (prev, record) {\r\n var next = record._next;\r\n if (prev === null) {\r\n this._mapHead = next;\r\n }\r\n else {\r\n prev._next = next;\r\n }\r\n // todo(vicb) assert\r\n // assert((() {\r\n // record._next = null;\r\n // return true;\r\n //})());\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._removeFromRemovals = function (record) {\r\n // todo(vicb) assert\r\n // assert(record._next == null);\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n var prev = record._prevRemoved;\r\n var next = record._nextRemoved;\r\n if (prev === null) {\r\n this._removalsHead = next;\r\n }\r\n else {\r\n prev._nextRemoved = next;\r\n }\r\n if (next === null) {\r\n this._removalsTail = prev;\r\n }\r\n else {\r\n next._prevRemoved = prev;\r\n }\r\n record._prevRemoved = record._nextRemoved = null;\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._addToAdditions = function (record) {\r\n // todo(vicb): assert\r\n // assert(record._next == null);\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n // assert(record._nextRemoved == null);\r\n // assert(record._prevRemoved == null);\r\n if (this._additionsHead === null) {\r\n this._additionsHead = this._additionsTail = record;\r\n }\r\n else {\r\n this._additionsTail._nextAdded = record;\r\n this._additionsTail = record;\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._addToChanges = function (record) {\r\n // todo(vicb) assert\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n // assert(record._nextRemoved == null);\r\n // assert(record._prevRemoved == null);\r\n if (this._changesHead === null) {\r\n this._changesHead = this._changesTail = record;\r\n }\r\n else {\r\n this._changesTail._nextChanged = record;\r\n this._changesTail = record;\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.toString = function () {\r\n var items = [];\r\n var previous = [];\r\n var changes = [];\r\n var additions = [];\r\n var removals = [];\r\n var record;\r\n for (record = this._mapHead; record !== null; record = record._next) {\r\n items.push(lang_1.stringify(record));\r\n }\r\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\r\n previous.push(lang_1.stringify(record));\r\n }\r\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\r\n changes.push(lang_1.stringify(record));\r\n }\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n additions.push(lang_1.stringify(record));\r\n }\r\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\r\n removals.push(lang_1.stringify(record));\r\n }\r\n return \"map: \" + items.join(', ') + \"\\n\" + \"previous: \" + previous.join(', ') + \"\\n\" +\r\n \"additions: \" + additions.join(', ') + \"\\n\" + \"changes: \" + changes.join(', ') + \"\\n\" +\r\n \"removals: \" + removals.join(', ') + \"\\n\";\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._forEach = function (obj, fn) {\r\n if (obj instanceof Map) {\r\n obj.forEach(fn);\r\n }\r\n else {\r\n collection_1.StringMapWrapper.forEach(obj, fn);\r\n }\r\n };\r\n return DefaultKeyValueDiffer;\r\n}());\r\nexports.DefaultKeyValueDiffer = DefaultKeyValueDiffer;\r\nvar KeyValueChangeRecord = (function () {\r\n function KeyValueChangeRecord(key) {\r\n this.key = key;\r\n this.previousValue = null;\r\n this.currentValue = null;\r\n /** @internal */\r\n this._nextPrevious = null;\r\n /** @internal */\r\n this._next = null;\r\n /** @internal */\r\n this._nextAdded = null;\r\n /** @internal */\r\n this._nextRemoved = null;\r\n /** @internal */\r\n this._prevRemoved = null;\r\n /** @internal */\r\n this._nextChanged = null;\r\n }\r\n KeyValueChangeRecord.prototype.toString = function () {\r\n return lang_1.looseIdentical(this.previousValue, this.currentValue) ?\r\n lang_1.stringify(this.key) :\r\n (lang_1.stringify(this.key) + '[' + lang_1.stringify(this.previousValue) + '->' +\r\n lang_1.stringify(this.currentValue) + ']');\r\n };\r\n return KeyValueChangeRecord;\r\n}());\r\nexports.KeyValueChangeRecord = KeyValueChangeRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9rZXl2YWx1ZV9kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2RpZmZlcnMvZGVmYXVsdF9rZXl2YWx1ZV9kaWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDJCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzVFLHFCQUFvRSwwQkFBMEIsQ0FBQyxDQUFBO0FBQy9GLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBSzdEO0lBQUE7SUFJQSxDQUFDO0lBSEMsK0NBQVEsR0FBUixVQUFTLEdBQVEsSUFBYSxNQUFNLENBQUMsR0FBRyxZQUFZLEdBQUcsSUFBSSxpQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3RSw2Q0FBTSxHQUFOLFVBQU8sS0FBd0IsSUFBb0IsTUFBTSxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFKMUY7UUFBQyxZQUFLLEVBQUU7O29DQUFBO0lBS1IsbUNBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQztBQUpZLG9DQUE0QiwrQkFJeEMsQ0FBQTtBQUVEO0lBQUE7UUFDVSxhQUFRLEdBQWtCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEMsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFDdEMscUJBQWdCLEdBQXlCLElBQUksQ0FBQztRQUM5QyxpQkFBWSxHQUF5QixJQUFJLENBQUM7UUFDMUMsaUJBQVksR0FBeUIsSUFBSSxDQUFDO1FBQzFDLG1CQUFjLEdBQXlCLElBQUksQ0FBQztRQUM1QyxtQkFBYyxHQUF5QixJQUFJLENBQUM7UUFDNUMsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLGtCQUFhLEdBQXlCLElBQUksQ0FBQztJQXVUckQsQ0FBQztJQXJUQyxzQkFBSSwwQ0FBTzthQUFY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c0NvbnRlbnQiOlsiaW1wb3J0IHtNYXBXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtzdHJpbmdpZnksIGxvb3NlSWRlbnRpY2FsLCBpc0pzT2JqZWN0LCBDT05TVCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuaW1wb3J0IHtLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJGYWN0b3J5fSBmcm9tICcuLi9kaWZmZXJzL2tleXZhbHVlX2RpZmZlcnMnO1xuXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRLZXlWYWx1ZURpZmZlckZhY3RvcnkgaW1wbGVtZW50cyBLZXlWYWx1ZURpZmZlckZhY3Rvcnkge1xuICBzdXBwb3J0cyhvYmo6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gb2JqIGluc3RhbmNlb2YgTWFwIHx8IGlzSnNPYmplY3Qob2JqKTsgfVxuXG4gIGNyZWF0ZShjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiBLZXlWYWx1ZURpZmZlciB7IHJldHVybiBuZXcgRGVmYXVsdEtleVZhbHVlRGlmZmVyKCk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIERlZmF1bHRLZXlWYWx1ZURpZmZlciBpbXBsZW1lbnRzIEtleVZhbHVlRGlmZmVyIHtcbiAgcHJpdmF0ZSBfcmVjb3JkczogTWFwPGFueSwgYW55PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBfbWFwSGVhZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9wcmV2aW91c01hcEhlYWQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfY2hhbmdlc0hlYWQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfY2hhbmdlc1RhaWw6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfYWRkaXRpb25zSGVhZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9hZGRpdGlvbnNUYWlsOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX3JlbW92YWxzSGVhZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9yZW1vdmFsc1RhaWw6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcblxuICBnZXQgaXNEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkaXRpb25zSGVhZCAhPT0gbnVsbCB8fCB0aGlzLl9jaGFuZ2VzSGVhZCAhPT0gbnVsbCB8fFxuICAgICAgICAgICB0aGlzLl9yZW1vdmFsc0hlYWQgIT09IG51bGw7XG4gIH1cblxuICBmb3JFYWNoSXRlbShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX21hcEhlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0KSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hQcmV2aW91c0l0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9wcmV2aW91c01hcEhlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0UHJldmlvdXMpIHtcbiAgICAgIGZuKHJlY29yZCk7XG4gICAgfVxuICB9XG5cbiAgZm9yRWFjaENoYW5nZWRJdGVtKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5fY2hhbmdlc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0Q2hhbmdlZCkge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoQWRkZWRJdGVtKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5fYWRkaXRpb25zSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRBZGRlZCkge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoUmVtb3ZlZEl0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9yZW1vdmFsc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0UmVtb3ZlZCkge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBkaWZmKG1hcDogTWFwPGFueSwgYW55Pik6IGFueSB7XG4gICAgaWYgKGlzQmxhbmsobWFwKSkgbWFwID0gTWFwV3JhcHBlci5jcmVhdGVGcm9tUGFpcnMoW10pO1xuICAgIGlmICghKG1hcCBpbnN0YW5jZW9mIE1hcCB8fCBpc0pzT2JqZWN0KG1hcCkpKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgRXJyb3IgdHJ5aW5nIHRvIGRpZmYgJyR7bWFwfSdgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGVjayhtYXApKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgb25EZXN0cm95KCkge31cblxuICBjaGVjayhtYXA6IE1hcDxhbnksIGFueT4pOiBib29sZWFuIHtcbiAgICB0aGlzLl9yZXNldCgpO1xuICAgIHZhciByZWNvcmRzID0gdGhpcy5fcmVjb3JkcztcbiAgICB2YXIgb2xkU2VxUmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IHRoaXMuX21hcEhlYWQ7XG4gICAgdmFyIGxhc3RPbGRTZXFSZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgICB2YXIgbGFzdE5ld1NlcVJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAgIHZhciBzZXFDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0aGlzLl9mb3JFYWNoKG1hcCwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIHZhciBuZXdTZXFSZWNvcmQ7XG4gICAgICBpZiAob2xkU2VxUmVjb3JkICE9PSBudWxsICYmIGtleSA9PT0gb2xkU2VxUmVjb3JkLmtleSkge1xuICAgICAgICBuZXdTZXFSZWNvcmQgPSBvbGRTZXFSZWNvcmQ7XG4gICAgICAgIGlmICghbG9vc2VJZGVudGljYWwodmFsdWUsIG9sZFNlcVJlY29yZC5jdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgb2xkU2VxUmVjb3JkLnByZXZpb3VzVmFsdWUgPSBvbGRTZXFSZWNvcmQuY3VycmVudFZhbHVlO1xuICAgICAgICAgIG9sZFNlcVJlY29yZC5jdXJyZW50VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLl9hZGRUb0NoYW5nZXMob2xkU2VxUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VxQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIGlmIChvbGRTZXFSZWNvcmQgIT09IG51bGwpIHtcbiAgICAgICAgICBvbGRTZXFSZWNvcmQuX25leHQgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21TZXEobGFzdE9sZFNlcVJlY29yZCwgb2xkU2VxUmVjb3JkKTtcbiAgICAgICAgICB0aGlzLl9hZGRUb1JlbW92YWxzKG9sZFNlcVJlY29yZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlY29yZHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBuZXdTZXFSZWNvcmQgPSByZWNvcmRzLmdldChrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1NlcVJlY29yZCA9IG5ldyBLZXlWYWx1ZUNoYW5nZVJlY29yZChrZXkpO1xuICAgICAgICAgIHJlY29yZHMuc2V0KGtleSwgbmV3U2VxUmVjb3JkKTtcbiAgICAgICAgICBuZXdTZXFSZWNvcmQuY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5fYWRkVG9BZGRpdGlvbnMobmV3U2VxUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VxQ2hhbmdlZCkge1xuICAgICAgICBpZiAodGhpcy5faXNJblJlbW92YWxzKG5ld1NlcVJlY29yZCkpIHtcbiAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tUmVtb3ZhbHMobmV3U2VxUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdE5ld1NlcVJlY29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5fbWFwSGVhZCA9IG5ld1NlcVJlY29yZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsYXN0TmV3U2VxUmVjb3JkLl9uZXh0ID0gbmV3U2VxUmVjb3JkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsYXN0T2xkU2VxUmVjb3JkID0gb2xkU2VxUmVjb3JkO1xuICAgICAgbGFzdE5ld1NlcVJlY29yZCA9IG5ld1NlcVJlY29yZDtcbiAgICAgIG9sZFNlcVJlY29yZCA9IG9sZFNlcVJlY29yZCA9PT0gbnVsbCA/IG51bGwgOiBvbGRTZXFSZWNvcmQuX25leHQ7XG4gICAgfSk7XG4gICAgdGhpcy5fdHJ1bmNhdGUobGFzdE9sZFNlcVJlY29yZCwgb2xkU2VxUmVjb3JkKTtcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5O1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVzZXQoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXJ0eSkge1xuICAgICAgdmFyIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ7XG4gICAgICAvLyBSZWNvcmQgdGhlIHN0YXRlIG9mIHRoZSBtYXBwaW5nXG4gICAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3ByZXZpb3VzTWFwSGVhZCA9IHRoaXMuX21hcEhlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0KSB7XG4gICAgICAgIHJlY29yZC5fbmV4dFByZXZpb3VzID0gcmVjb3JkLl9uZXh0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHJlY29yZCA9IHRoaXMuX2NoYW5nZXNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dENoYW5nZWQpIHtcbiAgICAgICAgcmVjb3JkLnByZXZpb3VzVmFsdWUgPSByZWNvcmQuY3VycmVudFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHJlY29yZCA9IHRoaXMuX2FkZGl0aW9uc0hlYWQ7IHJlY29yZCAhPSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRBZGRlZCkge1xuICAgICAgICByZWNvcmQucHJldmlvdXNWYWx1ZSA9IHJlY29yZC5jdXJyZW50VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRvZG8odmljYikgb25jZSBhc3NlcnQgaXMgc3VwcG9ydGVkXG4gICAgICAvLyBhc3NlcnQoKCkge1xuICAgICAgLy8gIHZhciByID0gX2NoYW5nZXNIZWFkO1xuICAgICAgLy8gIHdoaWxlIChyICE9IG51bGwpIHtcbiAgICAgIC8vICAgIHZhciBuZXh0UmVjb3JkID0gci5fbmV4dENoYW5nZWQ7XG4gICAgICAvLyAgICByLl9uZXh0Q2hhbmdlZCA9IG51bGw7XG4gICAgICAvLyAgICByID0gbmV4dFJlY29yZDtcbiAgICAgIC8vICB9XG4gICAgICAvL1xuICAgICAgLy8gIHIgPSBfYWRkaXRpb25zSGVhZDtcbiAgICAgIC8vICB3aGlsZSAociAhPSBudWxsKSB7XG4gICAgICAvLyAgICB2YXIgbmV4dFJlY29yZCA9IHIuX25leHRBZGRlZDtcbiAgICAgIC8vICAgIHIuX25leHRBZGRlZCA9IG51bGw7XG4gICAgICAvLyAgICByID0gbmV4dFJlY29yZDtcbiAgICAgIC8vICB9XG4gICAgICAvL1xuICAgICAgLy8gIHIgPSBfcmVtb3ZhbHNIZWFkO1xuICAgICAgLy8gIHdoaWxlIChyICE9IG51bGwpIHtcbiAgICAgIC8vICAgIHZhciBuZXh0UmVjb3JkID0gci5fbmV4dFJlbW92ZWQ7XG4gICAgICAvLyAgICByLl9uZXh0UmVtb3ZlZCA9IG51bGw7XG4gICAgICAvLyAgICByID0gbmV4dFJlY29yZDtcbiAgICAgIC8vICB9XG4gICAgICAvL1xuICAgICAgLy8gIHJldHVybiB0cnVlO1xuICAgICAgLy99KTtcbiAgICAgIHRoaXMuX2NoYW5nZXNIZWFkID0gdGhpcy5fY2hhbmdlc1RhaWwgPSBudWxsO1xuICAgICAgdGhpcy5fYWRkaXRpb25zSGVhZCA9IHRoaXMuX2FkZGl0aW9uc1RhaWwgPSBudWxsO1xuICAgICAgdGhpcy5fcmVtb3ZhbHNIZWFkID0gdGhpcy5fcmVtb3ZhbHNUYWlsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF90cnVuY2F0ZShsYXN0UmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCwgcmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkge1xuICAgIHdoaWxlIChyZWNvcmQgIT09IG51bGwpIHtcbiAgICAgIGlmIChsYXN0UmVjb3JkID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX21hcEhlYWQgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdFJlY29yZC5fbmV4dCA9IG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgbmV4dFJlY29yZCA9IHJlY29yZC5fbmV4dDtcbiAgICAgIC8vIHRvZG8odmljYikgYXNzZXJ0XG4gICAgICAvLyBhc3NlcnQoKCgpIHtcbiAgICAgIC8vICByZWNvcmQuX25leHQgPSBudWxsO1xuICAgICAgLy8gIHJldHVybiB0cnVlO1xuICAgICAgLy99KSk7XG4gICAgICB0aGlzLl9hZGRUb1JlbW92YWxzKHJlY29yZCk7XG4gICAgICBsYXN0UmVjb3JkID0gcmVjb3JkO1xuICAgICAgcmVjb3JkID0gbmV4dFJlY29yZDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciByZWM6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gdGhpcy5fcmVtb3ZhbHNIZWFkOyByZWMgIT09IG51bGw7IHJlYyA9IHJlYy5fbmV4dFJlbW92ZWQpIHtcbiAgICAgIHJlYy5wcmV2aW91c1ZhbHVlID0gcmVjLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHJlYy5jdXJyZW50VmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5fcmVjb3Jkcy5kZWxldGUocmVjLmtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaXNJblJlbW92YWxzKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpIHtcbiAgICByZXR1cm4gcmVjb3JkID09PSB0aGlzLl9yZW1vdmFsc0hlYWQgfHwgcmVjb3JkLl9uZXh0UmVtb3ZlZCAhPT0gbnVsbCB8fFxuICAgICAgICAgICByZWNvcmQuX3ByZXZSZW1vdmVkICE9PSBudWxsO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkVG9SZW1vdmFscyhyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSB7XG4gICAgLy8gdG9kbyh2aWNiKSBhc3NlcnRcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0ID09IG51bGwpO1xuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRBZGRlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0Q2hhbmdlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0UmVtb3ZlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9wcmV2UmVtb3ZlZCA9PSBudWxsKTtcbiAgICBpZiAodGhpcy5fcmVtb3ZhbHNIZWFkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9yZW1vdmFsc0hlYWQgPSB0aGlzLl9yZW1vdmFsc1RhaWwgPSByZWNvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQgPSByZWNvcmQ7XG4gICAgICByZWNvcmQuX3ByZXZSZW1vdmVkID0gdGhpcy5fcmVtb3ZhbHNUYWlsO1xuICAgICAgdGhpcy5fcmVtb3ZhbHNUYWlsID0gcmVjb3JkO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3JlbW92ZUZyb21TZXEocHJldjogS2V5VmFsdWVDaGFuZ2VSZWNvcmQsIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpIHtcbiAgICB2YXIgbmV4dCA9IHJlY29yZC5fbmV4dDtcbiAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fbWFwSGVhZCA9IG5leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXYuX25leHQgPSBuZXh0O1xuICAgIH1cbiAgICAvLyB0b2RvKHZpY2IpIGFzc2VydFxuICAgIC8vIGFzc2VydCgoKCkge1xuICAgIC8vICByZWNvcmQuX25leHQgPSBudWxsO1xuICAgIC8vICByZXR1cm4gdHJ1ZTtcbiAgICAvL30pKCkpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVtb3ZlRnJvbVJlbW92YWxzKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpIHtcbiAgICAvLyB0b2RvKHZpY2IpIGFzc2VydFxuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dEFkZGVkID09IG51bGwpO1xuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRDaGFuZ2VkID09IG51bGwpO1xuXG4gICAgdmFyIHByZXYgPSByZWNvcmQuX3ByZXZSZW1vdmVkO1xuICAgIHZhciBuZXh0ID0gcmVjb3JkLl9uZXh0UmVtb3ZlZDtcbiAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fcmVtb3ZhbHNIZWFkID0gbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldi5fbmV4dFJlbW92ZWQgPSBuZXh0O1xuICAgIH1cbiAgICBpZiAobmV4dCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fcmVtb3ZhbHNUYWlsID0gcHJldjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dC5fcHJldlJlbW92ZWQgPSBwcmV2O1xuICAgIH1cbiAgICByZWNvcmQuX3ByZXZSZW1vdmVkID0gcmVjb3JkLl9uZXh0UmVtb3ZlZCA9IG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9hZGRUb0FkZGl0aW9ucyhyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSB7XG4gICAgLy8gdG9kbyh2aWNiKTogYXNzZXJ0XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0QWRkZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dENoYW5nZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dFJlbW92ZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fcHJldlJlbW92ZWQgPT0gbnVsbCk7XG4gICAgaWYgKHRoaXMuX2FkZGl0aW9uc0hlYWQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2FkZGl0aW9uc0hlYWQgPSB0aGlzLl9hZGRpdGlvbnNUYWlsID0gcmVjb3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQgPSByZWNvcmQ7XG4gICAgICB0aGlzLl9hZGRpdGlvbnNUYWlsID0gcmVjb3JkO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZFRvQ2hhbmdlcyhyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSB7XG4gICAgLy8gdG9kbyh2aWNiKSBhc3NlcnRcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0QWRkZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dENoYW5nZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dFJlbW92ZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fcHJldlJlbW92ZWQgPT0gbnVsbCk7XG4gICAgaWYgKHRoaXMuX2NoYW5nZXNIZWFkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9jaGFuZ2VzSGVhZCA9IHRoaXMuX2NoYW5nZXNUYWlsID0gcmVjb3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQgPSByZWNvcmQ7XG4gICAgICB0aGlzLl9jaGFuZ2VzVGFpbCA9IHJlY29yZDtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHZhciBpdGVtcyA9IFtdO1xuICAgIHZhciBwcmV2aW91cyA9IFtdO1xuICAgIHZhciBjaGFuZ2VzID0gW107XG4gICAgdmFyIGFkZGl0aW9ucyA9IFtdO1xuICAgIHZhciByZW1vdmFscyA9IFtdO1xuICAgIHZhciByZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkO1xuXG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9tYXBIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dCkge1xuICAgICAgaXRlbXMucHVzaChzdHJpbmdpZnkocmVjb3JkKSk7XG4gICAgfVxuICAgIGZvciAocmVjb3JkID0gdGhpcy5fcHJldmlvdXNNYXBIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dFByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cy5wdXNoKHN0cmluZ2lmeShyZWNvcmQpKTtcbiAgICB9XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9jaGFuZ2VzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRDaGFuZ2VkKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goc3RyaW5naWZ5KHJlY29yZCkpO1xuICAgIH1cbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX2FkZGl0aW9uc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0QWRkZWQpIHtcbiAgICAgIGFkZGl0aW9ucy5wdXNoKHN0cmluZ2lmeShyZWNvcmQpKTtcbiAgICB9XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9yZW1vdmFsc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0UmVtb3ZlZCkge1xuICAgICAgcmVtb3ZhbHMucHVzaChzdHJpbmdpZnkocmVjb3JkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwibWFwOiBcIiArIGl0ZW1zLmpvaW4oJywgJykgKyBcIlxcblwiICsgXCJwcmV2aW91czogXCIgKyBwcmV2aW91cy5qb2luKCcsICcpICsgXCJcXG5cIiArXG4gICAgICAgICAgIFwiYWRkaXRpb25zOiBcIiArIGFkZGl0aW9ucy5qb2luKCcsICcpICsgXCJcXG5cIiArIFwiY2hhbmdlczogXCIgKyBjaGFuZ2VzLmpvaW4oJywgJykgKyBcIlxcblwiICtcbiAgICAgICAgICAgXCJyZW1vdmFsczogXCIgKyByZW1vdmFscy5qb2luKCcsICcpICsgXCJcXG5cIjtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2ZvckVhY2gob2JqLCBmbjogRnVuY3Rpb24pIHtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAoPE1hcDxhbnksIGFueT4+b2JqKS5mb3JFYWNoKDxhbnk+Zm4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2gob2JqLCBmbik7XG4gICAgfVxuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEtleVZhbHVlQ2hhbmdlUmVjb3JkIHtcbiAgcHJldmlvdXNWYWx1ZTogYW55ID0gbnVsbDtcbiAgY3VycmVudFZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHRQcmV2aW91czogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0OiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHRBZGRlZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0UmVtb3ZlZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9wcmV2UmVtb3ZlZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0Q2hhbmdlZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IGFueSkge31cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBsb29zZUlkZW50aWNhbCh0aGlzLnByZXZpb3VzVmFsdWUsIHRoaXMuY3VycmVudFZhbHVlKSA/XG4gICAgICAgICAgICAgICBzdHJpbmdpZnkodGhpcy5rZXkpIDpcbiAgICAgICAgICAgICAgIChzdHJpbmdpZnkodGhpcy5rZXkpICsgJ1snICsgc3RyaW5naWZ5KHRoaXMucHJldmlvdXNWYWx1ZSkgKyAnLT4nICtcbiAgICAgICAgICAgICAgICBzdHJpbmdpZnkodGhpcy5jdXJyZW50VmFsdWUpICsgJ10nKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Describes the current state of the change detector.\r\n */\r\n(function (ChangeDetectorState) {\r\n /**\r\n * `NeverChecked` means that the change detector has not been checked yet, and\r\n * initialization methods should be called during detection.\r\n */\r\n ChangeDetectorState[ChangeDetectorState[\"NeverChecked\"] = 0] = \"NeverChecked\";\r\n /**\r\n * `CheckedBefore` means that the change detector has successfully completed at least\r\n * one detection previously.\r\n */\r\n ChangeDetectorState[ChangeDetectorState[\"CheckedBefore\"] = 1] = \"CheckedBefore\";\r\n /**\r\n * `Errored` means that the change detector encountered an error checking a binding\r\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\r\n * detectors in this state will no longer detect changes.\r\n */\r\n ChangeDetectorState[ChangeDetectorState[\"Errored\"] = 2] = \"Errored\";\r\n})(exports.ChangeDetectorState || (exports.ChangeDetectorState = {}));\r\nvar ChangeDetectorState = exports.ChangeDetectorState;\r\n/**\r\n * Describes within the change detector which strategy will be used the next time change\r\n * detection is triggered.\r\n */\r\n(function (ChangeDetectionStrategy) {\r\n /**\r\n * `CheckedOnce` means that after calling detectChanges the mode of the change detector\r\n * will become `Checked`.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"CheckOnce\"] = 0] = \"CheckOnce\";\r\n /**\r\n * `Checked` means that the change detector should be skipped until its mode changes to\r\n * `CheckOnce`.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Checked\"] = 1] = \"Checked\";\r\n /**\r\n * `CheckAlways` means that after calling detectChanges the mode of the change detector\r\n * will remain `CheckAlways`.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"CheckAlways\"] = 2] = \"CheckAlways\";\r\n /**\r\n * `Detached` means that the change detector sub tree is not a part of the main tree and\r\n * should be skipped.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Detached\"] = 3] = \"Detached\";\r\n /**\r\n * `OnPush` means that the change detector's mode will be set to `CheckOnce` during hydration.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 4] = \"OnPush\";\r\n /**\r\n * `Default` means that the change detector's mode will be set to `CheckAlways` during hydration.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 5] = \"Default\";\r\n})(exports.ChangeDetectionStrategy || (exports.ChangeDetectionStrategy = {}));\r\nvar ChangeDetectionStrategy = exports.ChangeDetectionStrategy;\r\n/**\r\n * List of possible {@link ChangeDetectionStrategy} values.\r\n */\r\nexports.CHANGE_DETECTION_STRATEGY_VALUES = [\r\n ChangeDetectionStrategy.CheckOnce,\r\n ChangeDetectionStrategy.Checked,\r\n ChangeDetectionStrategy.CheckAlways,\r\n ChangeDetectionStrategy.Detached,\r\n ChangeDetectionStrategy.OnPush,\r\n ChangeDetectionStrategy.Default\r\n];\r\n/**\r\n * List of possible {@link ChangeDetectorState} values.\r\n */\r\nexports.CHANGE_DETECTOR_STATE_VALUES = [\r\n ChangeDetectorState.NeverChecked,\r\n ChangeDetectorState.CheckedBefore,\r\n ChangeDetectorState.Errored\r\n];\r\nfunction isDefaultChangeDetectionStrategy(changeDetectionStrategy) {\r\n return lang_1.isBlank(changeDetectionStrategy) ||\r\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\r\n}\r\nexports.isDefaultChangeDetectionStrategy = isDefaultChangeDetectionStrategy;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUFvRCwwQkFBMEIsQ0FBQyxDQUFBO0FBRS9FOztHQUVHO0FBQ0gsV0FBWSxtQkFBbUI7SUFDN0I7OztPQUdHO0lBQ0gsNkVBQVksQ0FBQTtJQUVaOzs7T0FHRztJQUNILCtFQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsbUVBQU8sQ0FBQTtBQUNULENBQUMsRUFuQlcsMkJBQW1CLEtBQW5CLDJCQUFtQixRQW1COUI7QUFuQkQsSUFBWSxtQkFBbUIsR0FBbkIsMkJBbUJYLENBQUE7QUFHRDs7O0dBR0c7QUFDSCxXQUFZLHVCQUF1QjtJQUNqQzs7O09BR0c7SUFDSCwrRUFBUyxDQUFBO0lBRVQ7OztPQUdHO0lBQ0gsMkVBQU8sQ0FBQTtJQUVQOzs7T0FHRztJQUNILG1GQUFXLENBQUE7SUFFWDs7O09BR0c7SUFDSCw2RUFBUSxDQUFBO0lBRVI7O09BRUc7SUFDSCx5RUFBTSxDQUFBO0lBRU47O09BRUc7SUFDSCwyRUFBTyxDQUFBO0FBQ1QsQ0FBQyxFQWxDVywrQkFBdUIsS0FBdkIsK0JBQXVCLFFBa0NsQztBQWxDRCxJQUFZLHVCQUF1QixHQUF2QiwrQkFrQ1gsQ0FBQTtBQUVEOztHQUVHO0FBQ1Esd0NBQWdDLEdBQUc7SUFDNUMsdUJBQXVCLENBQUMsU0FBUztJQUNqQyx1QkFBdUIsQ0FBQyxPQUFPO0lBQy9CLHVCQUF1QixDQUFDLFdBQVc7SUFDbkMsdUJBQXVCLENBQUMsUUFBUTtJQUNoQyx1QkFBdUIsQ0FBQyxNQUFNO0lBQzlCLHVCQUF1QixDQUFDLE9BQU87Q0FDaEMsQ0FBQztBQUVGOztHQUVHO0FBQ1Esb0NBQTRCLEdBQUc7SUFDeEMsbUJBQW1CLENBQUMsWUFBWTtJQUNoQyxtQkFBbUIsQ0FBQyxhQUFhO0lBQ2pDLG1CQUFtQixDQUFDLE9BQU87Q0FDNUIsQ0FBQztBQUVGLDBDQUNJLHVCQUFnRDtJQUNsRCxNQUFNLENBQUMsY0FBTyxDQUFDLHVCQUF1QixDQUFDO1FBQ2hDLHVCQUF1QixLQUFLLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztBQUNyRSxDQUFDO0FBSmUsd0NBQWdDLG1DQUkvQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdHJpbmdXcmFwcGVyLCBub3JtYWxpemVCb29sLCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2hhbmdlIGRldGVjdG9yLlxuICovXG5leHBvcnQgZW51bSBDaGFuZ2VEZXRlY3RvclN0YXRlIHtcbiAgLyoqXG4gICAqIGBOZXZlckNoZWNrZWRgIG1lYW5zIHRoYXQgdGhlIGNoYW5nZSBkZXRlY3RvciBoYXMgbm90IGJlZW4gY2hlY2tlZCB5ZXQsIGFuZFxuICAgKiBpbml0aWFsaXphdGlvbiBtZXRob2RzIHNob3VsZCBiZSBjYWxsZWQgZHVyaW5nIGRldGVjdGlvbi5cbiAgICovXG4gIE5ldmVyQ2hlY2tlZCxcblxuICAvKipcbiAgICogYENoZWNrZWRCZWZvcmVgIG1lYW5zIHRoYXQgdGhlIGNoYW5nZSBkZXRlY3RvciBoYXMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCBhdCBsZWFzdFxuICAgKiBvbmUgZGV0ZWN0aW9uIHByZXZpb3VzbHkuXG4gICAqL1xuICBDaGVja2VkQmVmb3JlLFxuXG4gIC8qKlxuICAgKiBgRXJyb3JlZGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yIGVuY291bnRlcmVkIGFuIGVycm9yIGNoZWNraW5nIGEgYmluZGluZ1xuICAgKiBvciBjYWxsaW5nIGEgZGlyZWN0aXZlIGxpZmVjeWNsZSBtZXRob2QgYW5kIGlzIG5vdyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuIENoYW5nZVxuICAgKiBkZXRlY3RvcnMgaW4gdGhpcyBzdGF0ZSB3aWxsIG5vIGxvbmdlciBkZXRlY3QgY2hhbmdlcy5cbiAgICovXG4gIEVycm9yZWRcbn1cblxuXG4vKipcbiAqIERlc2NyaWJlcyB3aXRoaW4gdGhlIGNoYW5nZSBkZXRlY3RvciB3aGljaCBzdHJhdGVneSB3aWxsIGJlIHVzZWQgdGhlIG5leHQgdGltZSBjaGFuZ2VcbiAqIGRldGVjdGlvbiBpcyB0cmlnZ2VyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIGBDaGVja2VkT25jZWAgbWVhbnMgdGhhdCBhZnRlciBjYWxsaW5nIGRldGVjdENoYW5nZXMgdGhlIG1vZGUgb2YgdGhlIGNoYW5nZSBkZXRlY3RvclxuICAgKiB3aWxsIGJlY29tZSBgQ2hlY2tlZGAuXG4gICAqL1xuICBDaGVja09uY2UsXG5cbiAgLyoqXG4gICAqIGBDaGVja2VkYCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgZGV0ZWN0b3Igc2hvdWxkIGJlIHNraXBwZWQgdW50aWwgaXRzIG1vZGUgY2hhbmdlcyB0b1xuICAgKiBgQ2hlY2tPbmNlYC5cbiAgICovXG4gIENoZWNrZWQsXG5cbiAgLyoqXG4gICAqIGBDaGVja0Fsd2F5c2AgbWVhbnMgdGhhdCBhZnRlciBjYWxsaW5nIGRldGVjdENoYW5nZXMgdGhlIG1vZGUgb2YgdGhlIGNoYW5nZSBkZXRlY3RvclxuICAgKiB3aWxsIHJlbWFpbiBgQ2hlY2tBbHdheXNgLlxuICAgKi9cbiAgQ2hlY2tBbHdheXMsXG5cbiAgLyoqXG4gICAqIGBEZXRhY2hlZGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yIHN1YiB0cmVlIGlzIG5vdCBhIHBhcnQgb2YgdGhlIG1haW4gdHJlZSBhbmRcbiAgICogc2hvdWxkIGJlIHNraXBwZWQuXG4gICAqL1xuICBEZXRhY2hlZCxcblxuICAvKipcbiAgICogYE9uUHVzaGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yJ3MgbW9kZSB3aWxsIGJlIHNldCB0byBgQ2hlY2tPbmNlYCBkdXJpbmcgaHlkcmF0aW9uLlxuICAgKi9cbiAgT25QdXNoLFxuXG4gIC8qKlxuICAgKiBgRGVmYXVsdGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yJ3MgbW9kZSB3aWxsIGJlIHNldCB0byBgQ2hlY2tBbHdheXNgIGR1cmluZyBoeWRyYXRpb24uXG4gICAqL1xuICBEZWZhdWx0LFxufVxuXG4vKipcbiAqIExpc3Qgb2YgcG9zc2libGUge0BsaW5rIENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCB2YXIgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWV9WQUxVRVMgPSBbXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tBbHdheXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRldGFjaGVkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcbl07XG5cbi8qKlxuICogTGlzdCBvZiBwb3NzaWJsZSB7QGxpbmsgQ2hhbmdlRGV0ZWN0b3JTdGF0ZX0gdmFsdWVzLlxuICovXG5leHBvcnQgdmFyIENIQU5HRV9ERVRFQ1RPUl9TVEFURV9WQUxVRVMgPSBbXG4gIENoYW5nZURldGVjdG9yU3RhdGUuTmV2ZXJDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3RvclN0YXRlLkNoZWNrZWRCZWZvcmUsXG4gIENoYW5nZURldGVjdG9yU3RhdGUuRXJyb3JlZFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVmYXVsdENoYW5nZURldGVjdGlvblN0cmF0ZWd5KFxuICAgIGNoYW5nZURldGVjdGlvblN0cmF0ZWd5OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNCbGFuayhjaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSkgfHxcbiAgICAgICAgIGNoYW5nZURldGVjdGlvblN0cmF0ZWd5ID09PSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0O1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar ChangeDetectorRef = (function () {\r\n function ChangeDetectorRef() {\r\n }\r\n return ChangeDetectorRef;\r\n}());\r\nexports.ChangeDetectorRef = ChangeDetectorRef;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdG9yX3JlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdG9yX3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7SUFBQTtJQStMQSxDQUFDO0lBQUQsd0JBQUM7QUFBRCxDQUFDLEFBL0xELElBK0xDO0FBL0xxQix5QkFBaUIsb0JBK0x0QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIENoYW5nZURldGVjdG9yUmVmIHtcbiAgLyoqXG4gICAqIE1hcmtzIGFsbCB7QGxpbmsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kjT25QdXNofSBhbmNlc3RvcnMgYXMgdG8gYmUgY2hlY2tlZC5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaW5rIHRvIGEgY2hhcHRlciBvbiBPblB1c2ggY29tcG9uZW50cyAtLT5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0dDNTEyYj9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnY21wJyxcbiAgICogICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICogICB0ZW1wbGF0ZTogYE51bWJlciBvZiB0aWNrczoge3tudW1iZXJPZlRpY2tzfX1gXG4gICAqIH0pXG4gICAqIGNsYXNzIENtcCB7XG4gICAqICAgbnVtYmVyT2ZUaWNrcyA9IDA7XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IocmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLm51bWJlck9mVGlja3MgKytcbiAgICogICAgICAgLy8gdGhlIGZvbGxvd2luZyBpcyByZXF1aXJlZCwgb3RoZXJ3aXNlIHRoZSB2aWV3IHdpbGwgbm90IGJlIHVwZGF0ZWRcbiAgICogICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAqICAgICB9LCAxMDAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgKiAgIHRlbXBsYXRlOiBgXG4gICAqICAgICA8Y21wPjxjbXA+XG4gICAqICAgYCxcbiAgICogICBkaXJlY3RpdmVzOiBbQ21wXVxuICAgKiB9KVxuICAgKiBjbGFzcyBBcHAge1xuICAgKiB9XG4gICAqXG4gICAqIGJvb3RzdHJhcChBcHApO1xuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IG1hcmtGb3JDaGVjaygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyB0aGUgY2hhbmdlIGRldGVjdG9yIGZyb20gdGhlIGNoYW5nZSBkZXRlY3RvciB0cmVlLlxuICAgKlxuICAgKiBUaGUgZGV0YWNoZWQgY2hhbmdlIGRldGVjdG9yIHdpbGwgbm90IGJlIGNoZWNrZWQgdW50aWwgaXQgaXMgcmVhdHRhY2hlZC5cbiAgICpcbiAgICogVGhpcyBjYW4gYWxzbyBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgge0BsaW5rIENoYW5nZURldGVjdG9yUmVmI2RldGVjdENoYW5nZXN9IHRvIGltcGxlbWVudFxuICAgKiBsb2NhbCBjaGFuZ2VcbiAgICogZGV0ZWN0aW9uIGNoZWNrcy5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaW5rIHRvIGEgY2hhcHRlciBvbiBkZXRhY2gvcmVhdHRhY2gvbG9jYWwgZGlnZXN0IC0tPlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpdmUgZGVtbyBvbmNlIHJlZi5kZXRlY3RDaGFuZ2VzIGlzIG1lcmdlZCBpbnRvIG1hc3RlciAtLT5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlZmluZXMgYSBjb21wb25lbnQgd2l0aCBhIGxhcmdlIGxpc3Qgb2YgcmVhZG9ubHkgZGF0YS5cbiAgICogSW1hZ2luZSB0aGUgZGF0YSBjaGFuZ2VzIGNvbnN0YW50bHksIG1hbnkgdGltZXMgcGVyIHNlY29uZC4gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsXG4gICAqIHdlIHdhbnQgdG8gY2hlY2sgYW5kIHVwZGF0ZSB0aGUgbGlzdCBldmVyeSBmaXZlIHNlY29uZHMuIFdlIGNhbiBkbyB0aGF0IGJ5IGRldGFjaGluZ1xuICAgKiB0aGUgY29tcG9uZW50J3MgY2hhbmdlIGRldGVjdG9yIGFuZCBkb2luZyBhIGxvY2FsIGNoZWNrIGV2ZXJ5IGZpdmUgc2Vjb25kcy5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBEYXRhUHJvdmlkZXIge1xuICAgKiAgIC8vIGluIGEgcmVhbCBhcHBsaWNhdGlvbiB0aGUgcmV0dXJuZWQgZGF0YSB3aWxsIGJlIGRpZmZlcmVudCBldmVyeSB0aW1lXG4gICAqICAgZ2V0IGRhdGEoKSB7XG4gICAqICAgICByZXR1cm4gWzEsMiwzLDQsNV07XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnZ2lhbnQtbGlzdCcsXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIDxsaSAqbmdGb3I9XCJsZXQgZCBvZiBkYXRhUHJvdmlkZXIuZGF0YVwiPkRhdGEge3tkfX08L2xpZz5cbiAgICogICBgLFxuICAgKiAgIGRpcmVjdGl2ZXM6IFtOZ0Zvcl1cbiAgICogfSlcbiAgICogY2xhc3MgR2lhbnRMaXN0IHtcbiAgICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGF0YVByb3ZpZGVyOkRhdGFQcm92aWRlcikge1xuICAgKiAgICAgcmVmLmRldGFjaCgpO1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAqICAgICB9LCA1MDAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHByb3ZpZGVyczogW0RhdGFQcm92aWRlcl0sXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIDxnaWFudC1saXN0PjxnaWFudC1saXN0PlxuICAgKiAgIGAsXG4gICAqICAgZGlyZWN0aXZlczogW0dpYW50TGlzdF1cbiAgICogfSlcbiAgICogY2xhc3MgQXBwIHtcbiAgICogfVxuICAgKlxuICAgKiBib290c3RyYXAoQXBwKTtcbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBkZXRhY2goKTogdm9pZDtcblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogVGhpcyBjYW4gYWxzbyBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgge0BsaW5rIENoYW5nZURldGVjdG9yUmVmI2RldGFjaH0gdG8gaW1wbGVtZW50IGxvY2FsXG4gICAqIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogY2hlY2tzLlxuICAgKlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpbmsgdG8gYSBjaGFwdGVyIG9uIGRldGFjaC9yZWF0dGFjaC9sb2NhbCBkaWdlc3QgLS0+XG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGl2ZSBkZW1vIG9uY2UgcmVmLmRldGVjdENoYW5nZXMgaXMgbWVyZ2VkIGludG8gbWFzdGVyIC0tPlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGNvbXBvbmVudCB3aXRoIGEgbGFyZ2UgbGlzdCBvZiByZWFkb25seSBkYXRhLlxuICAgKiBJbWFnaW5lLCB0aGUgZGF0YSBjaGFuZ2VzIGNvbnN0YW50bHksIG1hbnkgdGltZXMgcGVyIHNlY29uZC4gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsXG4gICAqIHdlIHdhbnQgdG8gY2hlY2sgYW5kIHVwZGF0ZSB0aGUgbGlzdCBldmVyeSBmaXZlIHNlY29uZHMuXG4gICAqXG4gICAqIFdlIGNhbiBkbyB0aGF0IGJ5IGRldGFjaGluZyB0aGUgY29tcG9uZW50J3MgY2hhbmdlIGRldGVjdG9yIGFuZCBkb2luZyBhIGxvY2FsIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogY2hlY2tcbiAgICogZXZlcnkgZml2ZSBzZWNvbmRzLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIENoYW5nZURldGVjdG9yUmVmI2RldGFjaH0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICBhYnN0cmFjdCBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgY2hhbmdlIGRldGVjdG9yIGFuZCBpdHMgY2hpbGRyZW4sIGFuZCB0aHJvd3MgaWYgYW55IGNoYW5nZXMgYXJlIGRldGVjdGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSB0byB2ZXJpZnkgdGhhdCBydW5uaW5nIGNoYW5nZSBkZXRlY3Rpb24gZG9lc24ndCBpbnRyb2R1Y2VcbiAgICogb3RoZXIgY2hhbmdlcy5cbiAgICovXG4gIGFic3RyYWN0IGNoZWNrTm9DaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlYXR0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgdG8gdGhlIGNoYW5nZSBkZXRlY3RvciB0cmVlLlxuICAgKlxuICAgKiBUaGlzIGFsc28gbWFya3MgT25QdXNoIGFuY2VzdG9ycyBhcyB0byBiZSBjaGVja2VkLiBUaGlzIHJlYXR0YWNoZWQgY2hhbmdlIGRldGVjdG9yIHdpbGwgYmVcbiAgICogY2hlY2tlZCBkdXJpbmcgdGhlIG5leHQgY2hhbmdlIGRldGVjdGlvbiBydW4uXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byBhIGNoYXB0ZXIgb24gZGV0YWNoL3JlYXR0YWNoL2xvY2FsIGRpZ2VzdCAtLT5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2FVaFpoYT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGNvbXBvbmVudCBkaXNwbGF5aW5nIGBsaXZlYCBkYXRhLiBUaGUgY29tcG9uZW50IHdpbGwgZGV0YWNoXG4gICAqIGl0cyBjaGFuZ2UgZGV0ZWN0b3IgZnJvbSB0aGUgbWFpbiBjaGFuZ2UgZGV0ZWN0b3IgdHJlZSB3aGVuIHRoZSBjb21wb25lbnQncyBsaXZlIHByb3BlcnR5XG4gICAqIGlzIHNldCB0byBmYWxzZS5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBEYXRhUHJvdmlkZXIge1xuICAgKiAgIGRhdGEgPSAxO1xuICAgKlxuICAgKiAgIGNvbnN0cnVjdG9yKCkge1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEgKiAyO1xuICAgKiAgICAgfSwgNTAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdsaXZlLWRhdGEnLFxuICAgKiAgIGlucHV0czogWydsaXZlJ10sXG4gICAqICAgdGVtcGxhdGU6IGBEYXRhOiB7e2RhdGFQcm92aWRlci5kYXRhfX1gXG4gICAqIH0pXG4gICAqIGNsYXNzIExpdmVEYXRhIHtcbiAgICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGF0YVByb3ZpZGVyOkRhdGFQcm92aWRlcikge31cbiAgICpcbiAgICogICBzZXQgbGl2ZSh2YWx1ZSkge1xuICAgKiAgICAgaWYgKHZhbHVlKVxuICAgKiAgICAgICB0aGlzLnJlZi5yZWF0dGFjaCgpO1xuICAgKiAgICAgZWxzZVxuICAgKiAgICAgICB0aGlzLnJlZi5kZXRhY2goKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHByb3ZpZGVyczogW0RhdGFQcm92aWRlcl0sXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIExpdmUgVXBkYXRlOiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJsaXZlXCI+XG4gICAqICAgICA8bGl2ZS1kYXRhIFtsaXZlXT1cImxpdmVcIj48bGl2ZS1kYXRhPlxuICAgKiAgIGAsXG4gICAqICAgZGlyZWN0aXZlczogW0xpdmVEYXRhLCBGT1JNX0RJUkVDVElWRVNdXG4gICAqIH0pXG4gICAqIGNsYXNzIEFwcCB7XG4gICAqICAgbGl2ZSA9IHRydWU7XG4gICAqIH1cbiAgICpcbiAgICogYm9vdHN0cmFwKEFwcCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgcmVhdHRhY2goKTogdm9pZDtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_2 = require('angular2/src/facade/lang');\r\nexports.looseIdentical = lang_2.looseIdentical;\r\nexports.uninitialized = lang_1.CONST_EXPR(new Object());\r\nfunction devModeEqual(a, b) {\r\n if (collection_1.isListLikeIterable(a) && collection_1.isListLikeIterable(b)) {\r\n return collection_1.areIterablesEqual(a, b, devModeEqual);\r\n }\r\n else if (!collection_1.isListLikeIterable(a) && !lang_1.isPrimitive(a) && !collection_1.isListLikeIterable(b) &&\r\n !lang_1.isPrimitive(b)) {\r\n return true;\r\n }\r\n else {\r\n return lang_1.looseIdentical(a, b);\r\n }\r\n}\r\nexports.devModeEqual = devModeEqual;\r\n/**\r\n * Indicates that the result of a {@link PipeMetadata} transformation has changed even though the\r\n * reference\r\n * has not changed.\r\n *\r\n * The wrapped value will be unwrapped by change detection, and the unwrapped value will be stored.\r\n *\r\n * Example:\r\n *\r\n * ```\r\n * if (this._latestValue === this._latestReturnedValue) {\r\n * return this._latestReturnedValue;\r\n * } else {\r\n * this._latestReturnedValue = this._latestValue;\r\n * return WrappedValue.wrap(this._latestValue); // this will force update\r\n * }\r\n * ```\r\n */\r\nvar WrappedValue = (function () {\r\n function WrappedValue(wrapped) {\r\n this.wrapped = wrapped;\r\n }\r\n WrappedValue.wrap = function (value) { return new WrappedValue(value); };\r\n return WrappedValue;\r\n}());\r\nexports.WrappedValue = WrappedValue;\r\n/**\r\n * Helper class for unwrapping WrappedValue s\r\n */\r\nvar ValueUnwrapper = (function () {\r\n function ValueUnwrapper() {\r\n this.hasWrappedValue = false;\r\n }\r\n ValueUnwrapper.prototype.unwrap = function (value) {\r\n if (value instanceof WrappedValue) {\r\n this.hasWrappedValue = true;\r\n return value.wrapped;\r\n }\r\n return value;\r\n };\r\n ValueUnwrapper.prototype.reset = function () { this.hasWrappedValue = false; };\r\n return ValueUnwrapper;\r\n}());\r\nexports.ValueUnwrapper = ValueUnwrapper;\r\n/**\r\n * Represents a basic change from a previous to a new value.\r\n */\r\nvar SimpleChange = (function () {\r\n function SimpleChange(previousValue, currentValue) {\r\n this.previousValue = previousValue;\r\n this.currentValue = currentValue;\r\n }\r\n /**\r\n * Check whether the new value is the first value assigned.\r\n */\r\n SimpleChange.prototype.isFirstChange = function () { return this.previousValue === exports.uninitialized; };\r\n return SimpleChange;\r\n}());\r\nexports.SimpleChange = SimpleChange;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbl91dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUErRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzFGLDJCQUlPLGdDQUFnQyxDQUFDLENBQUE7QUFFeEMscUJBQTZCLDBCQUEwQixDQUFDO0FBQWhELCtDQUFnRDtBQUM3QyxxQkFBYSxHQUFXLGlCQUFVLENBQVMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLHNCQUE2QixDQUFNLEVBQUUsQ0FBTTtJQUN6QyxFQUFFLENBQUMsQ0FBQywrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSwrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLDhCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFL0MsQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDLGtCQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFZCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMscUJBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztBQUNILENBQUM7QUFYZSxvQkFBWSxlQVczQixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0g7SUFDRSxzQkFBbUIsT0FBWTtRQUFaLFlBQU8sR0FBUCxPQUFPLENBQUs7SUFBRyxDQUFDO0lBRTVCLGlCQUFJLEdBQVgsVUFBWSxLQUFVLElBQWtCLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsbUJBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQztBQUpZLG9CQUFZLGVBSXhCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQUE7UUFDUyxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQVdqQyxDQUFDO0lBVEMsK0JBQU0sR0FBTixVQUFPLEtBQVU7UUFDZixFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN2QixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCw4QkFBSyxHQUFMLGNBQVUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLHFCQUFDO0FBQUQsQ0FBQyxBQVpELElBWUM7QUFaWSxzQkFBYyxpQkFZMUIsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFDRSxzQkFBbUIsYUFBa0IsRUFBUyxZQUFpQjtRQUE1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBSztRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFLO0lBQUcsQ0FBQztJQUVuRTs7T0FFRztJQUNILG9DQUFhLEdBQWIsY0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUsscUJBQWEsQ0FBQyxDQUFDLENBQUM7SUFDM0UsbUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLG9CQUFZLGVBT3hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNUX0VYUFIsIGlzQmxhbmssIGxvb3NlSWRlbnRpY2FsLCBpc1ByaW1pdGl2ZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7XG4gIFN0cmluZ01hcFdyYXBwZXIsXG4gIGlzTGlzdExpa2VJdGVyYWJsZSxcbiAgYXJlSXRlcmFibGVzRXF1YWxcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuZXhwb3J0IHtsb29zZUlkZW50aWNhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmV4cG9ydCB2YXIgdW5pbml0aWFsaXplZDogT2JqZWN0ID0gQ09OU1RfRVhQUjxPYmplY3Q+KG5ldyBPYmplY3QoKSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXZNb2RlRXF1YWwoYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKGlzTGlzdExpa2VJdGVyYWJsZShhKSAmJiBpc0xpc3RMaWtlSXRlcmFibGUoYikpIHtcbiAgICByZXR1cm4gYXJlSXRlcmFibGVzRXF1YWwoYSwgYiwgZGV2TW9kZUVxdWFsKTtcblxuICB9IGVsc2UgaWYgKCFpc0xpc3RMaWtlSXRlcmFibGUoYSkgJiYgIWlzUHJpbWl0aXZlKGEpICYmICFpc0xpc3RMaWtlSXRlcmFibGUoYikgJiZcbiAgICAgICAgICAgICAhaXNQcmltaXRpdmUoYikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb29zZUlkZW50aWNhbChhLCBiKTtcbiAgfVxufVxuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgYSB7QGxpbmsgUGlwZU1ldGFkYXRhfSB0cmFuc2Zvcm1hdGlvbiBoYXMgY2hhbmdlZCBldmVuIHRob3VnaCB0aGVcbiAqIHJlZmVyZW5jZVxuICogaGFzIG5vdCBjaGFuZ2VkLlxuICpcbiAqIFRoZSB3cmFwcGVkIHZhbHVlIHdpbGwgYmUgdW53cmFwcGVkIGJ5IGNoYW5nZSBkZXRlY3Rpb24sIGFuZCB0aGUgdW53cmFwcGVkIHZhbHVlIHdpbGwgYmUgc3RvcmVkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBpZiAodGhpcy5fbGF0ZXN0VmFsdWUgPT09IHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUpIHtcbiAqICAgIHJldHVybiB0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlO1xuICogIH0gZWxzZSB7XG4gKiAgICB0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlID0gdGhpcy5fbGF0ZXN0VmFsdWU7XG4gKiAgICByZXR1cm4gV3JhcHBlZFZhbHVlLndyYXAodGhpcy5fbGF0ZXN0VmFsdWUpOyAvLyB0aGlzIHdpbGwgZm9yY2UgdXBkYXRlXG4gKiAgfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkVmFsdWUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgd3JhcHBlZDogYW55KSB7fVxuXG4gIHN0YXRpYyB3cmFwKHZhbHVlOiBhbnkpOiBXcmFwcGVkVmFsdWUgeyByZXR1cm4gbmV3IFdyYXBwZWRWYWx1ZSh2YWx1ZSk7IH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIHVud3JhcHBpbmcgV3JhcHBlZFZhbHVlIHNcbiAqL1xuZXhwb3J0IGNsYXNzIFZhbHVlVW53cmFwcGVyIHtcbiAgcHVibGljIGhhc1dyYXBwZWRWYWx1ZSA9IGZhbHNlO1xuXG4gIHVud3JhcCh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBXcmFwcGVkVmFsdWUpIHtcbiAgICAgIHRoaXMuaGFzV3JhcHBlZFZhbHVlID0gdHJ1ZTtcbiAgICAgIHJldHVybiB2YWx1ZS53cmFwcGVkO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXNldCgpIHsgdGhpcy5oYXNXcmFwcGVkVmFsdWUgPSBmYWxzZTsgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBiYXNpYyBjaGFuZ2UgZnJvbSBhIHByZXZpb3VzIHRvIGEgbmV3IHZhbHVlLlxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlQ2hhbmdlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHByZXZpb3VzVmFsdWU6IGFueSwgcHVibGljIGN1cnJlbnRWYWx1ZTogYW55KSB7fVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZSBuZXcgdmFsdWUgaXMgdGhlIGZpcnN0IHZhbHVlIGFzc2lnbmVkLlxuICAgKi9cbiAgaXNGaXJzdENoYW5nZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucHJldmlvdXNWYWx1ZSA9PT0gdW5pbml0aWFsaXplZDsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar iterable_differs_1 = require('./differs/iterable_differs');\r\nvar default_iterable_differ_1 = require('./differs/default_iterable_differ');\r\nvar keyvalue_differs_1 = require('./differs/keyvalue_differs');\r\nvar default_keyvalue_differ_1 = require('./differs/default_keyvalue_differ');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar default_keyvalue_differ_2 = require('./differs/default_keyvalue_differ');\r\nexports.DefaultKeyValueDifferFactory = default_keyvalue_differ_2.DefaultKeyValueDifferFactory;\r\nexports.KeyValueChangeRecord = default_keyvalue_differ_2.KeyValueChangeRecord;\r\nvar default_iterable_differ_2 = require('./differs/default_iterable_differ');\r\nexports.DefaultIterableDifferFactory = default_iterable_differ_2.DefaultIterableDifferFactory;\r\nexports.CollectionChangeRecord = default_iterable_differ_2.CollectionChangeRecord;\r\nvar constants_1 = require('./constants');\r\nexports.ChangeDetectionStrategy = constants_1.ChangeDetectionStrategy;\r\nexports.CHANGE_DETECTION_STRATEGY_VALUES = constants_1.CHANGE_DETECTION_STRATEGY_VALUES;\r\nexports.ChangeDetectorState = constants_1.ChangeDetectorState;\r\nexports.CHANGE_DETECTOR_STATE_VALUES = constants_1.CHANGE_DETECTOR_STATE_VALUES;\r\nexports.isDefaultChangeDetectionStrategy = constants_1.isDefaultChangeDetectionStrategy;\r\nvar change_detector_ref_1 = require('./change_detector_ref');\r\nexports.ChangeDetectorRef = change_detector_ref_1.ChangeDetectorRef;\r\nvar iterable_differs_2 = require('./differs/iterable_differs');\r\nexports.IterableDiffers = iterable_differs_2.IterableDiffers;\r\nvar keyvalue_differs_2 = require('./differs/keyvalue_differs');\r\nexports.KeyValueDiffers = keyvalue_differs_2.KeyValueDiffers;\r\nvar change_detection_util_1 = require('./change_detection_util');\r\nexports.WrappedValue = change_detection_util_1.WrappedValue;\r\nexports.ValueUnwrapper = change_detection_util_1.ValueUnwrapper;\r\nexports.SimpleChange = change_detection_util_1.SimpleChange;\r\nexports.devModeEqual = change_detection_util_1.devModeEqual;\r\nexports.looseIdentical = change_detection_util_1.looseIdentical;\r\nexports.uninitialized = change_detection_util_1.uninitialized;\r\n/**\r\n * Structural diffing for `Object`s and `Map`s.\r\n */\r\nexports.keyValDiff = lang_1.CONST_EXPR([lang_1.CONST_EXPR(new default_keyvalue_differ_1.DefaultKeyValueDifferFactory())]);\r\n/**\r\n * Structural diffing for `Iterable` types such as `Array`s.\r\n */\r\nexports.iterableDiff = lang_1.CONST_EXPR([lang_1.CONST_EXPR(new default_iterable_differ_1.DefaultIterableDifferFactory())]);\r\nexports.defaultIterableDiffers = lang_1.CONST_EXPR(new iterable_differs_1.IterableDiffers(exports.iterableDiff));\r\nexports.defaultKeyValueDiffers = lang_1.CONST_EXPR(new keyvalue_differs_1.KeyValueDiffers(exports.keyValDiff));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUNBQXFELDRCQUE0QixDQUFDLENBQUE7QUFDbEYsd0NBQTJDLG1DQUFtQyxDQUFDLENBQUE7QUFDL0UsaUNBQXFELDRCQUE0QixDQUFDLENBQUE7QUFDbEYsd0NBR08sbUNBQW1DLENBQUMsQ0FBQTtBQUMzQyxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUVwRCx3Q0FHTyxtQ0FBbUMsQ0FBQztBQUZ6Qyw4RkFBNEI7QUFDNUIsOEVBQ3lDO0FBQzNDLHdDQUdPLG1DQUFtQyxDQUFDO0FBRnpDLDhGQUE0QjtBQUM1QixrRkFDeUM7QUFFM0MsMEJBTU8sYUFBYSxDQUFDO0FBTG5CLHNFQUF1QjtBQUN2Qix3RkFBZ0M7QUFDaEMsOERBQW1CO0FBQ25CLGdGQUE0QjtBQUM1Qix3RkFDbUI7QUFDckIsb0NBQWdDLHVCQUF1QixDQUFDO0FBQWhELG9FQUFnRDtBQUN4RCxpQ0FLTyw0QkFBNEIsQ0FBQztBQUpsQyw2REFJa0M7QUFDcEMsaUNBQXFFLDRCQUE0QixDQUFDO0FBQTFGLDZEQUEwRjtBQUdsRyxzQ0FPTyx5QkFBeUIsQ0FBQztBQU4vQiw0REFBWTtBQUNaLGdFQUFjO0FBQ2QsNERBQVk7QUFDWiw0REFBWTtBQUNaLGdFQUFjO0FBQ2QsOERBQytCO0FBRWpDOztHQUVHO0FBQ1Usa0JBQVUsR0FDbkIsaUJBQVUsQ0FBQyxDQUFDLGlCQUFVLENBQUMsSUFBSSxzREFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpFOztHQUVHO0FBQ1Usb0JBQVksR0FDckIsaUJBQVUsQ0FBQyxDQUFDLGlCQUFVLENBQUMsSUFBSSxzREFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXBELDhCQUFzQixHQUFHLGlCQUFVLENBQUMsSUFBSSxrQ0FBZSxDQUFDLG9CQUFZLENBQUMsQ0FBQyxDQUFDO0FBRXZFLDhCQUFzQixHQUFHLGlCQUFVLENBQUMsSUFBSSxrQ0FBZSxDQUFDLGtCQUFVLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJdGVyYWJsZURpZmZlcnMsIEl0ZXJhYmxlRGlmZmVyRmFjdG9yeX0gZnJvbSAnLi9kaWZmZXJzL2l0ZXJhYmxlX2RpZmZlcnMnO1xuaW1wb3J0IHtEZWZhdWx0SXRlcmFibGVEaWZmZXJGYWN0b3J5fSBmcm9tICcuL2RpZmZlcnMvZGVmYXVsdF9pdGVyYWJsZV9kaWZmZXInO1xuaW1wb3J0IHtLZXlWYWx1ZURpZmZlcnMsIEtleVZhbHVlRGlmZmVyRmFjdG9yeX0gZnJvbSAnLi9kaWZmZXJzL2tleXZhbHVlX2RpZmZlcnMnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeSxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmRcbn0gZnJvbSAnLi9kaWZmZXJzL2RlZmF1bHRfa2V5dmFsdWVfZGlmZmVyJztcbmltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuZXhwb3J0IHtcbiAgRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeSxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmRcbn0gZnJvbSAnLi9kaWZmZXJzL2RlZmF1bHRfa2V5dmFsdWVfZGlmZmVyJztcbmV4cG9ydCB7XG4gIERlZmF1bHRJdGVyYWJsZURpZmZlckZhY3RvcnksXG4gIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmRcbn0gZnJvbSAnLi9kaWZmZXJzL2RlZmF1bHRfaXRlcmFibGVfZGlmZmVyJztcblxuZXhwb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1lfVkFMVUVTLFxuICBDaGFuZ2VEZXRlY3RvclN0YXRlLFxuICBDSEFOR0VfREVURUNUT1JfU1RBVEVfVkFMVUVTLFxuICBpc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQge0NoYW5nZURldGVjdG9yUmVmfSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuZXhwb3J0IHtcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBJdGVyYWJsZURpZmZlcixcbiAgSXRlcmFibGVEaWZmZXJGYWN0b3J5LFxuICBUcmFja0J5Rm5cbn0gZnJvbSAnLi9kaWZmZXJzL2l0ZXJhYmxlX2RpZmZlcnMnO1xuZXhwb3J0IHtLZXlWYWx1ZURpZmZlcnMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlckZhY3Rvcnl9IGZyb20gJy4vZGlmZmVycy9rZXl2YWx1ZV9kaWZmZXJzJztcbmV4cG9ydCB7UGlwZVRyYW5zZm9ybX0gZnJvbSAnLi9waXBlX3RyYW5zZm9ybSc7XG5cbmV4cG9ydCB7XG4gIFdyYXBwZWRWYWx1ZSxcbiAgVmFsdWVVbndyYXBwZXIsXG4gIFNpbXBsZUNoYW5nZSxcbiAgZGV2TW9kZUVxdWFsLFxuICBsb29zZUlkZW50aWNhbCxcbiAgdW5pbml0aWFsaXplZFxufSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rpb25fdXRpbCc7XG5cbi8qKlxuICogU3RydWN0dXJhbCBkaWZmaW5nIGZvciBgT2JqZWN0YHMgYW5kIGBNYXBgcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGtleVZhbERpZmY6IEtleVZhbHVlRGlmZmVyRmFjdG9yeVtdID1cbiAgICBDT05TVF9FWFBSKFtDT05TVF9FWFBSKG5ldyBEZWZhdWx0S2V5VmFsdWVEaWZmZXJGYWN0b3J5KCkpXSk7XG5cbi8qKlxuICogU3RydWN0dXJhbCBkaWZmaW5nIGZvciBgSXRlcmFibGVgIHR5cGVzIHN1Y2ggYXMgYEFycmF5YHMuXG4gKi9cbmV4cG9ydCBjb25zdCBpdGVyYWJsZURpZmY6IEl0ZXJhYmxlRGlmZmVyRmFjdG9yeVtdID1cbiAgICBDT05TVF9FWFBSKFtDT05TVF9FWFBSKG5ldyBEZWZhdWx0SXRlcmFibGVEaWZmZXJGYWN0b3J5KCkpXSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SXRlcmFibGVEaWZmZXJzID0gQ09OU1RfRVhQUihuZXcgSXRlcmFibGVEaWZmZXJzKGl0ZXJhYmxlRGlmZikpO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEtleVZhbHVlRGlmZmVycyA9IENPTlNUX0VYUFIobmV3IEtleVZhbHVlRGlmZmVycyhrZXlWYWxEaWZmKSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar RenderComponentType = (function () {\r\n function RenderComponentType(id, templateUrl, slotCount, encapsulation, styles) {\r\n this.id = id;\r\n this.templateUrl = templateUrl;\r\n this.slotCount = slotCount;\r\n this.encapsulation = encapsulation;\r\n this.styles = styles;\r\n }\r\n return RenderComponentType;\r\n}());\r\nexports.RenderComponentType = RenderComponentType;\r\nvar RenderDebugInfo = (function () {\r\n function RenderDebugInfo() {\r\n }\r\n Object.defineProperty(RenderDebugInfo.prototype, \"injector\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderDebugInfo.prototype, \"component\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderDebugInfo.prototype, \"providerTokens\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderDebugInfo.prototype, \"locals\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderDebugInfo.prototype, \"source\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RenderDebugInfo;\r\n}());\r\nexports.RenderDebugInfo = RenderDebugInfo;\r\nvar Renderer = (function () {\r\n function Renderer() {\r\n }\r\n return Renderer;\r\n}());\r\nexports.Renderer = Renderer;\r\n/**\r\n * Injectable service that provides a low-level interface for modifying the UI.\r\n *\r\n * Use this service to bypass Angular's templating and make custom UI changes that can't be\r\n * expressed declaratively. For example if you need to set a property or an attribute whose name is\r\n * not statically known, use {@link #setElementProperty} or {@link #setElementAttribute}\r\n * respectively.\r\n *\r\n * If you are implementing a custom renderer, you must implement this interface.\r\n *\r\n * The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.\r\n */\r\nvar RootRenderer = (function () {\r\n function RootRenderer() {\r\n }\r\n return RootRenderer;\r\n}());\r\nexports.RootRenderer = RootRenderer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFJN0Q7SUFDRSw2QkFBbUIsRUFBVSxFQUFTLFdBQW1CLEVBQVMsU0FBaUIsRUFDaEUsYUFBZ0MsRUFBUyxNQUE2QjtRQUR0RSxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2hFLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQXVCO0lBQUcsQ0FBQztJQUMvRiwwQkFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksMkJBQW1CLHNCQUcvQixDQUFBO0FBRUQ7SUFBQTtJQU1BLENBQUM7SUFMQyxzQkFBSSxxQ0FBUTthQUFaLGNBQTJCLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUNwRCxzQkFBSSxzQ0FBUzthQUFiLGNBQXVCLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUNoRCxzQkFBSSwyQ0FBYzthQUFsQixjQUE4QixNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDdkQsc0JBQUksbUNBQU07YUFBVixjQUF3QyxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDakUsc0JBQUksbUNBQU07YUFBVixjQUF1QixNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDbEQsc0JBQUM7QUFBRCxDQUFDLEFBTkQsSUFNQztBQU5xQix1QkFBZSxrQkFNcEMsQ0FBQTtBQUVEO0lBQUE7SUF5Q0EsQ0FBQztJQUFELGVBQUM7QUFBRCxDQUFDLEFBekNELElBeUNDO0FBekNxQixnQkFBUSxXQXlDN0IsQ0FBQTtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBRUg7SUFBQTtJQUVBLENBQUM7SUFBRCxtQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRnFCLG9CQUFZLGVBRWpDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1ZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS92aWV3JztcbmltcG9ydCB7SW5qZWN0b3IsIEluamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuZXhwb3J0IGNsYXNzIFJlbmRlckNvbXBvbmVudFR5cGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IHN0cmluZywgcHVibGljIHRlbXBsYXRlVXJsOiBzdHJpbmcsIHB1YmxpYyBzbG90Q291bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLCBwdWJsaWMgc3R5bGVzOiBBcnJheTxzdHJpbmcgfCBhbnlbXT4pIHt9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZW5kZXJEZWJ1Z0luZm8ge1xuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG4gIGdldCBjb21wb25lbnQoKTogYW55IHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxuICBnZXQgcHJvdmlkZXJUb2tlbnMoKTogYW55W10geyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG4gIGdldCBsb2NhbHMoKToge1trZXk6IHN0cmluZ106IHN0cmluZ30geyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG4gIGdldCBzb3VyY2UoKTogc3RyaW5nIHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVuZGVyZXIge1xuICBhYnN0cmFjdCBzZWxlY3RSb290RWxlbWVudChzZWxlY3Rvck9yTm9kZTogc3RyaW5nIHwgYW55LCBkZWJ1Z0luZm86IFJlbmRlckRlYnVnSW5mbyk6IGFueTtcblxuICBhYnN0cmFjdCBjcmVhdGVFbGVtZW50KHBhcmVudEVsZW1lbnQ6IGFueSwgbmFtZTogc3RyaW5nLCBkZWJ1Z0luZm86IFJlbmRlckRlYnVnSW5mbyk6IGFueTtcblxuICBhYnN0cmFjdCBjcmVhdGVWaWV3Um9vdChob3N0RWxlbWVudDogYW55KTogYW55O1xuXG4gIGFic3RyYWN0IGNyZWF0ZVRlbXBsYXRlQW5jaG9yKHBhcmVudEVsZW1lbnQ6IGFueSwgZGVidWdJbmZvOiBSZW5kZXJEZWJ1Z0luZm8pOiBhbnk7XG5cbiAgYWJzdHJhY3QgY3JlYXRlVGV4dChwYXJlbnRFbGVtZW50OiBhbnksIHZhbHVlOiBzdHJpbmcsIGRlYnVnSW5mbzogUmVuZGVyRGVidWdJbmZvKTogYW55O1xuXG4gIGFic3RyYWN0IHByb2plY3ROb2RlcyhwYXJlbnRFbGVtZW50OiBhbnksIG5vZGVzOiBhbnlbXSk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgYXR0YWNoVmlld0FmdGVyKG5vZGU6IGFueSwgdmlld1Jvb3ROb2RlczogYW55W10pOiB2b2lkO1xuXG4gIGFic3RyYWN0IGRldGFjaFZpZXcodmlld1Jvb3ROb2RlczogYW55W10pOiB2b2lkO1xuXG4gIGFic3RyYWN0IGRlc3Ryb3lWaWV3KGhvc3RFbGVtZW50OiBhbnksIHZpZXdBbGxOb2RlczogYW55W10pOiB2b2lkO1xuXG4gIGFic3RyYWN0IGxpc3RlbihyZW5kZXJFbGVtZW50OiBhbnksIG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogRnVuY3Rpb247XG5cbiAgYWJzdHJhY3QgbGlzdGVuR2xvYmFsKHRhcmdldDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbik6IEZ1bmN0aW9uO1xuXG4gIGFic3RyYWN0IHNldEVsZW1lbnRQcm9wZXJ0eShyZW5kZXJFbGVtZW50OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHNldEVsZW1lbnRBdHRyaWJ1dGUocmVuZGVyRWxlbWVudDogYW55LCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVzZWQgb25seSBpbiBkZWJ1ZyBtb2RlIHRvIHNlcmlhbGl6ZSBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGRvbSBub2RlcyBhcyBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgYWJzdHJhY3Qgc2V0QmluZGluZ0RlYnVnSW5mbyhyZW5kZXJFbGVtZW50OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5VmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgYWJzdHJhY3Qgc2V0RWxlbWVudENsYXNzKHJlbmRlckVsZW1lbnQ6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcsIGlzQWRkOiBib29sZWFuKTtcblxuICBhYnN0cmFjdCBzZXRFbGVtZW50U3R5bGUocmVuZGVyRWxlbWVudDogYW55LCBzdHlsZU5hbWU6IHN0cmluZywgc3R5bGVWYWx1ZTogc3RyaW5nKTtcblxuICBhYnN0cmFjdCBpbnZva2VFbGVtZW50TWV0aG9kKHJlbmRlckVsZW1lbnQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSk7XG5cbiAgYWJzdHJhY3Qgc2V0VGV4dChyZW5kZXJOb2RlOiBhbnksIHRleHQ6IHN0cmluZyk7XG59XG5cbi8qKlxuICogSW5qZWN0YWJsZSBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgYSBsb3ctbGV2ZWwgaW50ZXJmYWNlIGZvciBtb2RpZnlpbmcgdGhlIFVJLlxuICpcbiAqIFVzZSB0aGlzIHNlcnZpY2UgdG8gYnlwYXNzIEFuZ3VsYXIncyB0ZW1wbGF0aW5nIGFuZCBtYWtlIGN1c3RvbSBVSSBjaGFuZ2VzIHRoYXQgY2FuJ3QgYmVcbiAqIGV4cHJlc3NlZCBkZWNsYXJhdGl2ZWx5LiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCB0byBzZXQgYSBwcm9wZXJ0eSBvciBhbiBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xuICogbm90IHN0YXRpY2FsbHkga25vd24sIHVzZSB7QGxpbmsgI3NldEVsZW1lbnRQcm9wZXJ0eX0gb3Ige0BsaW5rICNzZXRFbGVtZW50QXR0cmlidXRlfVxuICogcmVzcGVjdGl2ZWx5LlxuICpcbiAqIElmIHlvdSBhcmUgaW1wbGVtZW50aW5nIGEgY3VzdG9tIHJlbmRlcmVyLCB5b3UgbXVzdCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuXG4gKlxuICogVGhlIGRlZmF1bHQgUmVuZGVyZXIgaW1wbGVtZW50YXRpb24gaXMgYERvbVJlbmRlcmVyYC4gQWxzbyBhdmFpbGFibGUgaXMgYFdlYldvcmtlclJlbmRlcmVyYC5cbiAqL1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUm9vdFJlbmRlcmVyIHtcbiAgYWJzdHJhY3QgcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFJlbmRlckNvbXBvbmVudFR5cGUpOiBSZW5kZXJlcjtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar _nextClassId = 0;\r\nfunction extractAnnotation(annotation) {\r\n if (lang_1.isFunction(annotation) && annotation.hasOwnProperty('annotation')) {\r\n // it is a decorator, extract annotation\r\n annotation = annotation.annotation;\r\n }\r\n return annotation;\r\n}\r\nfunction applyParams(fnOrArray, key) {\r\n if (fnOrArray === Object || fnOrArray === String || fnOrArray === Function ||\r\n fnOrArray === Number || fnOrArray === Array) {\r\n throw new Error(\"Can not use native \" + lang_1.stringify(fnOrArray) + \" as constructor\");\r\n }\r\n if (lang_1.isFunction(fnOrArray)) {\r\n return fnOrArray;\r\n }\r\n else if (fnOrArray instanceof Array) {\r\n var annotations = fnOrArray;\r\n var fn = fnOrArray[fnOrArray.length - 1];\r\n if (!lang_1.isFunction(fn)) {\r\n throw new Error(\"Last position of Class method array must be Function in key \" + key + \" was '\" + lang_1.stringify(fn) + \"'\");\r\n }\r\n var annoLength = annotations.length - 1;\r\n if (annoLength != fn.length) {\r\n throw new Error(\"Number of annotations (\" + annoLength + \") does not match number of arguments (\" + fn.length + \") in the function: \" + lang_1.stringify(fn));\r\n }\r\n var paramsAnnotations = [];\r\n for (var i = 0, ii = annotations.length - 1; i < ii; i++) {\r\n var paramAnnotations = [];\r\n paramsAnnotations.push(paramAnnotations);\r\n var annotation = annotations[i];\r\n if (annotation instanceof Array) {\r\n for (var j = 0; j < annotation.length; j++) {\r\n paramAnnotations.push(extractAnnotation(annotation[j]));\r\n }\r\n }\r\n else if (lang_1.isFunction(annotation)) {\r\n paramAnnotations.push(extractAnnotation(annotation));\r\n }\r\n else {\r\n paramAnnotations.push(annotation);\r\n }\r\n }\r\n Reflect.defineMetadata('parameters', paramsAnnotations, fn);\r\n return fn;\r\n }\r\n else {\r\n throw new Error(\"Only Function or Array is supported in Class definition for key '\" + key + \"' is '\" + lang_1.stringify(fnOrArray) + \"'\");\r\n }\r\n}\r\n/**\r\n * Provides a way for expressing ES6 classes with parameter annotations in ES5.\r\n *\r\n * ## Basic Example\r\n *\r\n * ```\r\n * var Greeter = ng.Class({\r\n * constructor: function(name) {\r\n * this.name = name;\r\n * },\r\n *\r\n * greet: function() {\r\n * alert('Hello ' + this.name + '!');\r\n * }\r\n * });\r\n * ```\r\n *\r\n * is equivalent to ES6:\r\n *\r\n * ```\r\n * class Greeter {\r\n * constructor(name) {\r\n * this.name = name;\r\n * }\r\n *\r\n * greet() {\r\n * alert('Hello ' + this.name + '!');\r\n * }\r\n * }\r\n * ```\r\n *\r\n * or equivalent to ES5:\r\n *\r\n * ```\r\n * var Greeter = function (name) {\r\n * this.name = name;\r\n * }\r\n *\r\n * Greeter.prototype.greet = function () {\r\n * alert('Hello ' + this.name + '!');\r\n * }\r\n * ```\r\n *\r\n * ### Example with parameter annotations\r\n *\r\n * ```\r\n * var MyService = ng.Class({\r\n * constructor: [String, [new Query(), QueryList], function(name, queryList) {\r\n * ...\r\n * }]\r\n * });\r\n * ```\r\n *\r\n * is equivalent to ES6:\r\n *\r\n * ```\r\n * class MyService {\r\n * constructor(name: string, @Query() queryList: QueryList) {\r\n * ...\r\n * }\r\n * }\r\n * ```\r\n *\r\n * ### Example with inheritance\r\n *\r\n * ```\r\n * var Shape = ng.Class({\r\n * constructor: (color) {\r\n * this.color = color;\r\n * }\r\n * });\r\n *\r\n * var Square = ng.Class({\r\n * extends: Shape,\r\n * constructor: function(color, size) {\r\n * Shape.call(this, color);\r\n * this.size = size;\r\n * }\r\n * });\r\n * ```\r\n */\r\nfunction Class(clsDef) {\r\n var constructor = applyParams(clsDef.hasOwnProperty('constructor') ? clsDef.constructor : undefined, 'constructor');\r\n var proto = constructor.prototype;\r\n if (clsDef.hasOwnProperty('extends')) {\r\n if (lang_1.isFunction(clsDef.extends)) {\r\n constructor.prototype = proto =\r\n Object.create(clsDef.extends.prototype);\r\n }\r\n else {\r\n throw new Error(\"Class definition 'extends' property must be a constructor function was: \" + lang_1.stringify(clsDef.extends));\r\n }\r\n }\r\n for (var key in clsDef) {\r\n if (key != 'extends' && key != 'prototype' && clsDef.hasOwnProperty(key)) {\r\n proto[key] = applyParams(clsDef[key], key);\r\n }\r\n }\r\n if (this && this.annotations instanceof Array) {\r\n Reflect.defineMetadata('annotations', this.annotations, constructor);\r\n }\r\n if (!constructor['name']) {\r\n constructor['overriddenName'] = \"class\" + _nextClassId++;\r\n }\r\n return constructor;\r\n}\r\nexports.Class = Class;\r\nvar Reflect = lang_1.global.Reflect;\r\n// Throw statement at top-level is disallowed by closure compiler in ES6 input.\r\n// Wrap in an IIFE as a work-around.\r\n(function checkReflect() {\r\n if (!(Reflect && Reflect.getMetadata)) {\r\n throw 'reflect-metadata shim is required when using class decorators';\r\n }\r\n})();\r\nfunction makeDecorator(annotationCls, chainFn) {\r\n if (chainFn === void 0) { chainFn = null; }\r\n function DecoratorFactory(objOrType) {\r\n var annotationInstance = new annotationCls(objOrType);\r\n if (this instanceof annotationCls) {\r\n return annotationInstance;\r\n }\r\n else {\r\n var chainAnnotation = lang_1.isFunction(this) && this.annotations instanceof Array ? this.annotations : [];\r\n chainAnnotation.push(annotationInstance);\r\n var TypeDecorator = function TypeDecorator(cls) {\r\n var annotations = Reflect.getOwnMetadata('annotations', cls);\r\n annotations = annotations || [];\r\n annotations.push(annotationInstance);\r\n Reflect.defineMetadata('annotations', annotations, cls);\r\n return cls;\r\n };\r\n TypeDecorator.annotations = chainAnnotation;\r\n TypeDecorator.Class = Class;\r\n if (chainFn)\r\n chainFn(TypeDecorator);\r\n return TypeDecorator;\r\n }\r\n }\r\n DecoratorFactory.prototype = Object.create(annotationCls.prototype);\r\n return DecoratorFactory;\r\n}\r\nexports.makeDecorator = makeDecorator;\r\nfunction makeParamDecorator(annotationCls) {\r\n function ParamDecoratorFactory() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i - 0] = arguments[_i];\r\n }\r\n var annotationInstance = Object.create(annotationCls.prototype);\r\n annotationCls.apply(annotationInstance, args);\r\n if (this instanceof annotationCls) {\r\n return annotationInstance;\r\n }\r\n else {\r\n ParamDecorator.annotation = annotationInstance;\r\n return ParamDecorator;\r\n }\r\n function ParamDecorator(cls, unusedKey, index) {\r\n var parameters = Reflect.getMetadata('parameters', cls);\r\n parameters = parameters || [];\r\n // there might be gaps if some in between parameters do not have annotations.\r\n // we pad with nulls.\r\n while (parameters.length <= index) {\r\n parameters.push(null);\r\n }\r\n parameters[index] = parameters[index] || [];\r\n var annotationsForParam = parameters[index];\r\n annotationsForParam.push(annotationInstance);\r\n Reflect.defineMetadata('parameters', parameters, cls);\r\n return cls;\r\n }\r\n }\r\n ParamDecoratorFactory.prototype = Object.create(annotationCls.prototype);\r\n return ParamDecoratorFactory;\r\n}\r\nexports.makeParamDecorator = makeParamDecorator;\r\nfunction makePropDecorator(decoratorCls) {\r\n function PropDecoratorFactory() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i - 0] = arguments[_i];\r\n }\r\n var decoratorInstance = Object.create(decoratorCls.prototype);\r\n decoratorCls.apply(decoratorInstance, args);\r\n if (this instanceof decoratorCls) {\r\n return decoratorInstance;\r\n }\r\n else {\r\n return function PropDecorator(target, name) {\r\n var meta = Reflect.getOwnMetadata('propMetadata', target.constructor);\r\n meta = meta || {};\r\n meta[name] = meta[name] || [];\r\n meta[name].unshift(decoratorInstance);\r\n Reflect.defineMetadata('propMetadata', meta, target.constructor);\r\n };\r\n }\r\n }\r\n PropDecoratorFactory.prototype = Object.create(decoratorCls.prototype);\r\n return PropDecoratorFactory;\r\n}\r\nexports.makePropDecorator = makePropDecorator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3V0aWwvZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQWdFLDBCQUEwQixDQUFDLENBQUE7QUFFM0YsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBNEVyQiwyQkFBMkIsVUFBZTtJQUN4QyxFQUFFLENBQUMsQ0FBQyxpQkFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLHdDQUF3QztRQUN4QyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQscUJBQXFCLFNBQTZCLEVBQUUsR0FBVztJQUM3RCxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLFFBQVE7UUFDdEUsU0FBUyxLQUFLLE1BQU0sSUFBSSxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUFzQixnQkFBUyxDQUFDLFNBQVMsQ0FBQyxvQkFBaUIsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxpQkFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQVcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxXQUFXLEdBQVUsU0FBUyxDQUFDO1FBQ25DLElBQUksRUFBRSxHQUFhLFNBQVMsQ0FBQyxT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Q0FBQyxDQUFDO2dCQUN0QyxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25FLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDO0FBbkJlLHlCQUFpQixvQkFtQmhDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmNyZXRlVHlwZSwgZ2xvYmFsLCBUeXBlLCBpc0Z1bmN0aW9uLCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbnZhciBfbmV4dENsYXNzSWQgPSAwO1xuXG4vKipcbiAqIERlY2xhcmVzIHRoZSBpbnRlcmZhY2UgdG8gYmUgdXNlZCB3aXRoIHtAbGluayBDbGFzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFyZ3VtZW50IGZvciBzcGVjaWZ5aW5nIHRoZSBzdXBlcmNsYXNzLlxuICAgKi9cbiAgZXh0ZW5kcz86IFR5cGU7XG5cbiAgLyoqXG4gICAqIFJlcXVpcmVkIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBhIGNsYXNzLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gbWF5IGJlIG9wdGlvbmFsbHkgd3JhcHBlZCBpbiBhbiBgQXJyYXlgLCBpbiB3aGljaCBjYXNlIGFkZGl0aW9uYWwgcGFyYW1ldGVyXG4gICAqIGFubm90YXRpb25zIG1heSBiZSBzcGVjaWZpZWQuXG4gICAqIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlciBhbm5vdGF0aW9ucyBtdXN0IG1hdGNoLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIENsYXNzfSBmb3IgZXhhbXBsZSBvZiB1c2FnZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yOiBGdW5jdGlvbiB8IGFueVtdO1xuXG4gIC8qKlxuICAgKiBPdGhlciBtZXRob2RzIG9uIHRoZSBjbGFzcy4gTm90ZSB0aGF0IHZhbHVlcyBzaG91bGQgaGF2ZSB0eXBlICdGdW5jdGlvbicgYnV0IFRTIHJlcXVpcmVzXG4gICAqIGFsbCBwcm9wZXJ0aWVzIHRvIGhhdmUgYSBuYXJyb3dlciB0eXBlIHRoYW4gdGhlIGluZGV4IHNpZ25hdHVyZS5cbiAgICovXG4gIFt4OiBzdHJpbmddOiBUeXBlIHwgRnVuY3Rpb24gfCBhbnlbXTtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgYWxsIEFuZ3VsYXIgdHlwZSBkZWNvcmF0b3JzLCB3aGljaCBhbGxvd3MgdGhlbSB0byBiZSB1c2VkIGFzIEVTN1xuICogZGVjb3JhdG9ycyBhcyB3ZWxsIGFzXG4gKiBBbmd1bGFyIERTTCBzeW50YXguXG4gKlxuICogRFNMIHN5bnRheDpcbiAqXG4gKiBgYGBcbiAqIHZhciBNeUNsYXNzID0gbmdcbiAqICAgLkNvbXBvbmVudCh7Li4ufSlcbiAqICAgLlZpZXcoey4uLn0pXG4gKiAgIC5DbGFzcyh7Li4ufSk7XG4gKiBgYGBcbiAqXG4gKiBFUzcgc3ludGF4OlxuICpcbiAqIGBgYFxuICogQG5nLkNvbXBvbmVudCh7Li4ufSlcbiAqIEBuZy5WaWV3KHsuLi59KVxuICogY2xhc3MgTXlDbGFzcyB7Li4ufVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURlY29yYXRvciB7XG4gIC8qKlxuICAgKiBJbnZva2UgYXMgRVM3IGRlY29yYXRvci5cbiAgICovXG4gIDxUIGV4dGVuZHMgVHlwZT4odHlwZTogVCk6IFQ7XG5cbiAgLy8gTWFrZSBUeXBlRGVjb3JhdG9yIGFzc2lnbmFibGUgdG8gYnVpbHQtaW4gUGFyYW1ldGVyRGVjb3JhdG9yIHR5cGUuXG4gIC8vIFBhcmFtZXRlckRlY29yYXRvciBpcyBkZWNsYXJlZCBpbiBsaWIuZC50cyBhcyBhIGBkZWNsYXJlIHR5cGVgXG4gIC8vIHNvIHdlIGNhbm5vdCBkZWNsYXJlIHRoaXMgaW50ZXJmYWNlIGFzIGEgc3VidHlwZS5cbiAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzMzNzkjaXNzdWVjb21tZW50LTEyNjE2OTQxN1xuICAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5Pzogc3RyaW5nIHwgc3ltYm9sLCBwYXJhbWV0ZXJJbmRleD86IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UgZm9yIHRoZSBhY2N1bXVsYXRlZCBhbm5vdGF0aW9ucyBzbyBmYXIgdXNlZCBieSB0aGUgRFNMIHN5bnRheC5cbiAgICpcbiAgICogVXNlZCBieSB7QGxpbmsgQ2xhc3N9IHRvIGFubm90YXRlIHRoZSBnZW5lcmF0ZWQgY2xhc3MuXG4gICAqL1xuICBhbm5vdGF0aW9uczogYW55W107XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgY2xhc3MgZnJvbSB0aGUgZGVmaW5pdGlvbiBhbmQgYW5ub3RhdGUgaXQgd2l0aCB7QGxpbmsgVHlwZURlY29yYXRvciNhbm5vdGF0aW9uc30uXG4gICAqL1xuICBDbGFzcyhvYmo6IENsYXNzRGVmaW5pdGlvbik6IENvbmNyZXRlVHlwZTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFubm90YXRpb24oYW5ub3RhdGlvbjogYW55KTogYW55IHtcbiAgaWYgKGlzRnVuY3Rpb24oYW5ub3RhdGlvbikgJiYgYW5ub3RhdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYW5ub3RhdGlvbicpKSB7XG4gICAgLy8gaXQgaXMgYSBkZWNvcmF0b3IsIGV4dHJhY3QgYW5ub3RhdGlvblxuICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9uLmFubm90YXRpb247XG4gIH1cbiAgcmV0dXJuIGFubm90YXRpb247XG59XG5cbmZ1bmN0aW9uIGFwcGx5UGFyYW1zKGZuT3JBcnJheTogKEZ1bmN0aW9uIHwgYW55W10pLCBrZXk6IHN0cmluZyk6IEZ1bmN0aW9uIHtcbiAgaWYgKGZuT3JBcnJheSA9PT0gT2JqZWN0IHx8IGZuT3JBcnJheSA9PT0gU3RyaW5nIHx8IGZuT3JBcnJheSA9PT0gRnVuY3Rpb24gfHxcbiAgICAgIGZuT3JBcnJheSA9PT0gTnVtYmVyIHx8IGZuT3JBcnJheSA9PT0gQXJyYXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgdXNlIG5hdGl2ZSAke3N0cmluZ2lmeShmbk9yQXJyYXkpfSBhcyBjb25zdHJ1Y3RvcmApO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKGZuT3JBcnJheSkpIHtcbiAgICByZXR1cm4gPEZ1bmN0aW9uPmZuT3JBcnJheTtcbiAgfSBlbHNlIGlmIChmbk9yQXJyYXkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIHZhciBhbm5vdGF0aW9uczogYW55W10gPSBmbk9yQXJyYXk7XG4gICAgdmFyIGZuOiBGdW5jdGlvbiA9IGZuT3JBcnJheVtmbk9yQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFpc0Z1bmN0aW9uKGZuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBMYXN0IHBvc2l0aW9uIG9mIENsYXNzIG1ldGhvZCBhcnJheSBtdXN0IGJlIEZ1bmN0aW9uIGluIGtleSAke2tleX0gd2FzICcke3N0cmluZ2lmeShmbil9J2ApO1xuICAgIH1cbiAgICB2YXIgYW5ub0xlbmd0aCA9IGFubm90YXRpb25zLmxlbmd0aCAtIDE7XG4gICAgaWYgKGFubm9MZW5ndGggIT0gZm4ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE51bWJlciBvZiBhbm5vdGF0aW9ucyAoJHthbm5vTGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIGFyZ3VtZW50cyAoJHtmbi5sZW5ndGh9KSBpbiB0aGUgZnVuY3Rpb246ICR7c3RyaW5naWZ5KGZuKX1gKTtcbiAgICB9XG4gICAgdmFyIHBhcmFtc0Fubm90YXRpb25zOiBhbnlbXVtdID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGlpID0gYW5ub3RhdGlvbnMubGVuZ3RoIC0gMTsgaSA8IGlpOyBpKyspIHtcbiAgICAgIHZhciBwYXJhbUFubm90YXRpb25zOiBhbnlbXSA9IFtdO1xuICAgICAgcGFyYW1zQW5ub3RhdGlvbnMucHVzaChwYXJhbUFubm90YXRpb25zKTtcbiAgICAgIHZhciBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnNbaV07XG4gICAgICBpZiAoYW5ub3RhdGlvbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYW5ub3RhdGlvbi5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHBhcmFtQW5ub3RhdGlvbnMucHVzaChleHRyYWN0QW5ub3RhdGlvbihhbm5vdGF0aW9uW2pdKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihhbm5vdGF0aW9uKSkge1xuICAgICAgICBwYXJhbUFubm90YXRpb25zLnB1c2goZXh0cmFjdEFubm90YXRpb24oYW5ub3RhdGlvbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1Bbm5vdGF0aW9ucy5wdXNoKGFubm90YXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdwYXJhbWV0ZXJzJywgcGFyYW1zQW5ub3RhdGlvbnMsIGZuKTtcbiAgICByZXR1cm4gZm47XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgT25seSBGdW5jdGlvbiBvciBBcnJheSBpcyBzdXBwb3J0ZWQgaW4gQ2xhc3MgZGVmaW5pdGlvbiBmb3Iga2V5ICcke2tleX0nIGlzICcke3N0cmluZ2lmeShmbk9yQXJyYXkpfSdgKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgd2F5IGZvciBleHByZXNzaW5nIEVTNiBjbGFzc2VzIHdpdGggcGFyYW1ldGVyIGFubm90YXRpb25zIGluIEVTNS5cbiAqXG4gKiAjIyBCYXNpYyBFeGFtcGxlXG4gKlxuICogYGBgXG4gKiB2YXIgR3JlZXRlciA9IG5nLkNsYXNzKHtcbiAqICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKG5hbWUpIHtcbiAqICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICogICB9LFxuICpcbiAqICAgZ3JlZXQ6IGZ1bmN0aW9uKCkge1xuICogICAgIGFsZXJ0KCdIZWxsbyAnICsgdGhpcy5uYW1lICsgJyEnKTtcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBpcyBlcXVpdmFsZW50IHRvIEVTNjpcbiAqXG4gKiBgYGBcbiAqIGNsYXNzIEdyZWV0ZXIge1xuICogICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gKiAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAqICAgfVxuICpcbiAqICAgZ3JlZXQoKSB7XG4gKiAgICAgYWxlcnQoJ0hlbGxvICcgKyB0aGlzLm5hbWUgKyAnIScpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBvciBlcXVpdmFsZW50IHRvIEVTNTpcbiAqXG4gKiBgYGBcbiAqIHZhciBHcmVldGVyID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAqICAgdGhpcy5uYW1lID0gbmFtZTtcbiAqIH1cbiAqXG4gKiBHcmVldGVyLnByb3RvdHlwZS5ncmVldCA9IGZ1bmN0aW9uICgpIHtcbiAqICAgYWxlcnQoJ0hlbGxvICcgKyB0aGlzLm5hbWUgKyAnIScpO1xuICogfVxuICogYGBgXG4gKlxuICogIyMjIEV4YW1wbGUgd2l0aCBwYXJhbWV0ZXIgYW5ub3RhdGlvbnNcbiAqXG4gKiBgYGBcbiAqIHZhciBNeVNlcnZpY2UgPSBuZy5DbGFzcyh7XG4gKiAgIGNvbnN0cnVjdG9yOiBbU3RyaW5nLCBbbmV3IFF1ZXJ5KCksIFF1ZXJ5TGlzdF0sIGZ1bmN0aW9uKG5hbWUsIHF1ZXJ5TGlzdCkge1xuICogICAgIC4uLlxuICogICB9XVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBpcyBlcXVpdmFsZW50IHRvIEVTNjpcbiAqXG4gKiBgYGBcbiAqIGNsYXNzIE15U2VydmljZSB7XG4gKiAgIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgQFF1ZXJ5KCkgcXVlcnlMaXN0OiBRdWVyeUxpc3QpIHtcbiAqICAgICAuLi5cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIEV4YW1wbGUgd2l0aCBpbmhlcml0YW5jZVxuICpcbiAqIGBgYFxuICogdmFyIFNoYXBlID0gbmcuQ2xhc3Moe1xuICogICBjb25zdHJ1Y3RvcjogKGNvbG9yKSB7XG4gKiAgICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICogICB9XG4gKiB9KTtcbiAqXG4gKiB2YXIgU3F1YXJlID0gbmcuQ2xhc3Moe1xuICogICBleHRlbmRzOiBTaGFwZSxcbiAqICAgY29uc3RydWN0b3I6IGZ1bmN0aW9uKGNvbG9yLCBzaXplKSB7XG4gKiAgICAgU2hhcGUuY2FsbCh0aGlzLCBjb2xvcik7XG4gKiAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENsYXNzKGNsc0RlZjogQ2xhc3NEZWZpbml0aW9uKTogQ29uY3JldGVUeXBlIHtcbiAgdmFyIGNvbnN0cnVjdG9yID0gYXBwbHlQYXJhbXMoXG4gICAgICBjbHNEZWYuaGFzT3duUHJvcGVydHkoJ2NvbnN0cnVjdG9yJykgPyBjbHNEZWYuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsICdjb25zdHJ1Y3RvcicpO1xuICB2YXIgcHJvdG8gPSBjb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIGlmIChjbHNEZWYuaGFzT3duUHJvcGVydHkoJ2V4dGVuZHMnKSkge1xuICAgIGlmIChpc0Z1bmN0aW9uKGNsc0RlZi5leHRlbmRzKSkge1xuICAgICAgKDxGdW5jdGlvbj5jb25zdHJ1Y3RvcikucHJvdG90eXBlID0gcHJvdG8gPVxuICAgICAgICAgIE9iamVjdC5jcmVhdGUoKDxGdW5jdGlvbj5jbHNEZWYuZXh0ZW5kcykucHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDbGFzcyBkZWZpbml0aW9uICdleHRlbmRzJyBwcm9wZXJ0eSBtdXN0IGJlIGEgY29uc3RydWN0b3IgZnVuY3Rpb24gd2FzOiAke3N0cmluZ2lmeShjbHNEZWYuZXh0ZW5kcyl9YCk7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGtleSBpbiBjbHNEZWYpIHtcbiAgICBpZiAoa2V5ICE9ICdleHRlbmRzJyAmJiBrZXkgIT0gJ3Byb3RvdHlwZScgJiYgY2xzRGVmLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHByb3RvW2tleV0gPSBhcHBseVBhcmFtcyhjbHNEZWZba2V5XSwga2V5KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcyAmJiB0aGlzLmFubm90YXRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdhbm5vdGF0aW9ucycsIHRoaXMuYW5ub3RhdGlvbnMsIGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICghY29uc3RydWN0b3JbJ25hbWUnXSkge1xuICAgIGNvbnN0cnVjdG9yWydvdmVycmlkZGVuTmFtZSddID0gYGNsYXNzJHtfbmV4dENsYXNzSWQrK31gO1xuICB9XG5cbiAgcmV0dXJuIDxDb25jcmV0ZVR5cGU+Y29uc3RydWN0b3I7XG59XG5cbnZhciBSZWZsZWN0ID0gZ2xvYmFsLlJlZmxlY3Q7XG4vLyBUaHJvdyBzdGF0ZW1lbnQgYXQgdG9wLWxldmVsIGlzIGRpc2FsbG93ZWQgYnkgY2xvc3VyZSBjb21waWxlciBpbiBFUzYgaW5wdXQuXG4vLyBXcmFwIGluIGFuIElJRkUgYXMgYSB3b3JrLWFyb3VuZC5cbihmdW5jdGlvbiBjaGVja1JlZmxlY3QoKSB7XG4gIGlmICghKFJlZmxlY3QgJiYgUmVmbGVjdC5nZXRNZXRhZGF0YSkpIHtcbiAgICB0aHJvdyAncmVmbGVjdC1tZXRhZGF0YSBzaGltIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgY2xhc3MgZGVjb3JhdG9ycyc7XG4gIH1cbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRGVjb3JhdG9yKFxuICAgIGFubm90YXRpb25DbHMsIGNoYWluRm46IChmbjogRnVuY3Rpb24pID0+IHZvaWQgPSBudWxsKTogKC4uLmFyZ3M6IGFueVtdKSA9PiAoY2xzOiBhbnkpID0+IGFueSB7XG4gIGZ1bmN0aW9uIERlY29yYXRvckZhY3Rvcnkob2JqT3JUeXBlKTogKGNsczogYW55KSA9PiBhbnkge1xuICAgIHZhciBhbm5vdGF0aW9uSW5zdGFuY2UgPSBuZXcgKDxhbnk+YW5ub3RhdGlvbkNscykob2JqT3JUeXBlKTtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGFubm90YXRpb25DbHMpIHtcbiAgICAgIHJldHVybiBhbm5vdGF0aW9uSW5zdGFuY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjaGFpbkFubm90YXRpb24gPVxuICAgICAgICAgIGlzRnVuY3Rpb24odGhpcykgJiYgdGhpcy5hbm5vdGF0aW9ucyBpbnN0YW5jZW9mIEFycmF5ID8gdGhpcy5hbm5vdGF0aW9ucyA6IFtdO1xuICAgICAgY2hhaW5Bbm5vdGF0aW9uLnB1c2goYW5ub3RhdGlvbkluc3RhbmNlKTtcbiAgICAgIHZhciBUeXBlRGVjb3JhdG9yOiBUeXBlRGVjb3JhdG9yID0gPFR5cGVEZWNvcmF0b3I+ZnVuY3Rpb24gVHlwZURlY29yYXRvcihjbHMpIHtcbiAgICAgICAgdmFyIGFubm90YXRpb25zID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YSgnYW5ub3RhdGlvbnMnLCBjbHMpO1xuICAgICAgICBhbm5vdGF0aW9ucyA9IGFubm90YXRpb25zIHx8IFtdO1xuICAgICAgICBhbm5vdGF0aW9ucy5wdXNoKGFubm90YXRpb25JbnN0YW5jZSk7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2Fubm90YXRpb25zJywgYW5ub3RhdGlvbnMsIGNscyk7XG4gICAgICAgIHJldHVybiBjbHM7XG4gICAgICB9O1xuICAgICAgVHlwZURlY29yYXRvci5hbm5vdGF0aW9ucyA9IGNoYWluQW5ub3RhdGlvbjtcbiAgICAgIFR5cGVEZWNvcmF0b3IuQ2xhc3MgPSBDbGFzcztcbiAgICAgIGlmIChjaGFpbkZuKSBjaGFpbkZuKFR5cGVEZWNvcmF0b3IpO1xuICAgICAgcmV0dXJuIFR5cGVEZWNvcmF0b3I7XG4gICAgfVxuICB9XG4gIERlY29yYXRvckZhY3RvcnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShhbm5vdGF0aW9uQ2xzLnByb3RvdHlwZSk7XG4gIHJldHVybiBEZWNvcmF0b3JGYWN0b3J5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVBhcmFtRGVjb3JhdG9yKGFubm90YXRpb25DbHMpOiBhbnkge1xuICBmdW5jdGlvbiBQYXJhbURlY29yYXRvckZhY3RvcnkoLi4uYXJncyk6IGFueSB7XG4gICAgdmFyIGFubm90YXRpb25JbnN0YW5jZSA9IE9iamVjdC5jcmVhdGUoYW5ub3RhdGlvbkNscy5wcm90b3R5cGUpO1xuICAgIGFubm90YXRpb25DbHMuYXBwbHkoYW5ub3RhdGlvbkluc3RhbmNlLCBhcmdzKTtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGFubm90YXRpb25DbHMpIHtcbiAgICAgIHJldHVybiBhbm5vdGF0aW9uSW5zdGFuY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICg8YW55PlBhcmFtRGVjb3JhdG9yKS5hbm5vdGF0aW9uID0gYW5ub3RhdGlvbkluc3RhbmNlO1xuICAgICAgcmV0dXJuIFBhcmFtRGVjb3JhdG9yO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gUGFyYW1EZWNvcmF0b3IoY2xzLCB1bnVzZWRLZXksIGluZGV4KTogYW55IHtcbiAgICAgIHZhciBwYXJhbWV0ZXJzOiBhbnlbXVtdID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgncGFyYW1ldGVycycsIGNscyk7XG4gICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCBbXTtcblxuICAgICAgLy8gdGhlcmUgbWlnaHQgYmUgZ2FwcyBpZiBzb21lIGluIGJldHdlZW4gcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBhbm5vdGF0aW9ucy5cbiAgICAgIC8vIHdlIHBhZCB3aXRoIG51bGxzLlxuICAgICAgd2hpbGUgKHBhcmFtZXRlcnMubGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgIHBhcmFtZXRlcnMucHVzaChudWxsKTtcbiAgICAgIH1cblxuICAgICAgcGFyYW1ldGVyc1tpbmRleF0gPSBwYXJhbWV0ZXJzW2luZGV4XSB8fCBbXTtcbiAgICAgIHZhciBhbm5vdGF0aW9uc0ZvclBhcmFtOiBhbnlbXSA9IHBhcmFtZXRlcnNbaW5kZXhdO1xuICAgICAgYW5ub3RhdGlvbnNGb3JQYXJhbS5wdXNoKGFubm90YXRpb25JbnN0YW5jZSk7XG5cbiAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ3BhcmFtZXRlcnMnLCBwYXJhbWV0ZXJzLCBjbHMpO1xuICAgICAgcmV0dXJuIGNscztcbiAgICB9XG4gIH1cbiAgUGFyYW1EZWNvcmF0b3JGYWN0b3J5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoYW5ub3RhdGlvbkNscy5wcm90b3R5cGUpO1xuICByZXR1cm4gUGFyYW1EZWNvcmF0b3JGYWN0b3J5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVByb3BEZWNvcmF0b3IoZGVjb3JhdG9yQ2xzKTogYW55IHtcbiAgZnVuY3Rpb24gUHJvcERlY29yYXRvckZhY3RvcnkoLi4uYXJncyk6IGFueSB7XG4gICAgdmFyIGRlY29yYXRvckluc3RhbmNlID0gT2JqZWN0LmNyZWF0ZShkZWNvcmF0b3JDbHMucHJvdG90eXBlKTtcbiAgICBkZWNvcmF0b3JDbHMuYXBwbHkoZGVjb3JhdG9ySW5zdGFuY2UsIGFyZ3MpO1xuXG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBkZWNvcmF0b3JDbHMpIHtcbiAgICAgIHJldHVybiBkZWNvcmF0b3JJbnN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIFByb3BEZWNvcmF0b3IodGFyZ2V0OiBhbnksIG5hbWU6IHN0cmluZykge1xuICAgICAgICB2YXIgbWV0YSA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoJ3Byb3BNZXRhZGF0YScsIHRhcmdldC5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIG1ldGEgPSBtZXRhIHx8IHt9O1xuICAgICAgICBtZXRhW25hbWVdID0gbWV0YVtuYW1lXSB8fCBbXTtcbiAgICAgICAgbWV0YVtuYW1lXS51bnNoaWZ0KGRlY29yYXRvckluc3RhbmNlKTtcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgncHJvcE1ldGFkYXRhJywgbWV0YSwgdGFyZ2V0LmNvbnN0cnVjdG9yKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIFByb3BEZWNvcmF0b3JGYWN0b3J5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZGVjb3JhdG9yQ2xzLnByb3RvdHlwZSk7XG4gIHJldHVybiBQcm9wRGVjb3JhdG9yRmFjdG9yeTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar metadata_1 = require('./metadata');\r\nvar decorators_1 = require('../util/decorators');\r\n/**\r\n * Factory for creating {@link InjectMetadata}.\r\n */\r\nexports.Inject = decorators_1.makeParamDecorator(metadata_1.InjectMetadata);\r\n/**\r\n * Factory for creating {@link OptionalMetadata}.\r\n */\r\nexports.Optional = decorators_1.makeParamDecorator(metadata_1.OptionalMetadata);\r\n/**\r\n * Factory for creating {@link InjectableMetadata}.\r\n */\r\nexports.Injectable = decorators_1.makeDecorator(metadata_1.InjectableMetadata);\r\n/**\r\n * Factory for creating {@link SelfMetadata}.\r\n */\r\nexports.Self = decorators_1.makeParamDecorator(metadata_1.SelfMetadata);\r\n/**\r\n * Factory for creating {@link HostMetadata}.\r\n */\r\nexports.Host = decorators_1.makeParamDecorator(metadata_1.HostMetadata);\r\n/**\r\n * Factory for creating {@link SkipSelfMetadata}.\r\n */\r\nexports.SkipSelf = decorators_1.makeParamDecorator(metadata_1.SkipSelfMetadata);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2RpL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlCQU9PLFlBQVksQ0FBQyxDQUFBO0FBQ3BCLDJCQUFnRCxvQkFBb0IsQ0FBQyxDQUFBO0FBa0RyRTs7R0FFRztBQUNRLGNBQU0sR0FBMEIsK0JBQWtCLENBQUMseUJBQWMsQ0FBQyxDQUFDO0FBRTlFOztHQUVHO0FBQ1EsZ0JBQVEsR0FBNEIsK0JBQWtCLENBQUMsMkJBQWdCLENBQUMsQ0FBQztBQUVwRjs7R0FFRztBQUNRLGtCQUFVLEdBQ1UsMEJBQWEsQ0FBQyw2QkFBa0IsQ0FBQyxDQUFDO0FBRWpFOztHQUVHO0FBQ1EsWUFBSSxHQUF3QiwrQkFBa0IsQ0FBQyx1QkFBWSxDQUFDLENBQUM7QUFFeEU7O0dBRUc7QUFDUSxZQUFJLEdBQXdCLCtCQUFrQixDQUFDLHVCQUFZLENBQUMsQ0FBQztBQUV4RTs7R0FFRztBQUNRLGdCQUFRLEdBQTRCLCtCQUFrQixDQUFDLDJCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RNZXRhZGF0YSxcbiAgT3B0aW9uYWxNZXRhZGF0YSxcbiAgSW5qZWN0YWJsZU1ldGFkYXRhLFxuICBTZWxmTWV0YWRhdGEsXG4gIEhvc3RNZXRhZGF0YSxcbiAgU2tpcFNlbGZNZXRhZGF0YVxufSBmcm9tICcuL21ldGFkYXRhJztcbmltcG9ydCB7bWFrZURlY29yYXRvciwgbWFrZVBhcmFtRGVjb3JhdG9yfSBmcm9tICcuLi91dGlsL2RlY29yYXRvcnMnO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBJbmplY3RNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0TWV0YWRhdGFGYWN0b3J5IHtcbiAgKHRva2VuOiBhbnkpOiBhbnk7XG4gIG5ldyAodG9rZW46IGFueSk6IEluamVjdE1ldGFkYXRhO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBPcHRpb25hbE1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE1ldGFkYXRhRmFjdG9yeSB7XG4gICgpOiBhbnk7XG4gIG5ldyAoKTogT3B0aW9uYWxNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgSW5qZWN0YWJsZU1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmplY3RhYmxlTWV0YWRhdGFGYWN0b3J5IHtcbiAgKCk6IGFueTtcbiAgbmV3ICgpOiBJbmplY3RhYmxlTWV0YWRhdGE7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIFNlbGZNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZk1ldGFkYXRhRmFjdG9yeSB7XG4gICgpOiBhbnk7XG4gIG5ldyAoKTogU2VsZk1ldGFkYXRhO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBIb3N0TWV0YWRhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RNZXRhZGF0YUZhY3Rvcnkge1xuICAoKTogYW55O1xuICBuZXcgKCk6IEhvc3RNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgU2tpcFNlbGZNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2tpcFNlbGZNZXRhZGF0YUZhY3Rvcnkge1xuICAoKTogYW55O1xuICBuZXcgKCk6IFNraXBTZWxmTWV0YWRhdGE7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIEluamVjdE1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHZhciBJbmplY3Q6IEluamVjdE1ldGFkYXRhRmFjdG9yeSA9IG1ha2VQYXJhbURlY29yYXRvcihJbmplY3RNZXRhZGF0YSk7XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIE9wdGlvbmFsTWV0YWRhdGF9LlxuICovXG5leHBvcnQgdmFyIE9wdGlvbmFsOiBPcHRpb25hbE1ldGFkYXRhRmFjdG9yeSA9IG1ha2VQYXJhbURlY29yYXRvcihPcHRpb25hbE1ldGFkYXRhKTtcblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgSW5qZWN0YWJsZU1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHZhciBJbmplY3RhYmxlOiBJbmplY3RhYmxlTWV0YWRhdGFGYWN0b3J5ID1cbiAgICA8SW5qZWN0YWJsZU1ldGFkYXRhRmFjdG9yeT5tYWtlRGVjb3JhdG9yKEluamVjdGFibGVNZXRhZGF0YSk7XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIFNlbGZNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCB2YXIgU2VsZjogU2VsZk1ldGFkYXRhRmFjdG9yeSA9IG1ha2VQYXJhbURlY29yYXRvcihTZWxmTWV0YWRhdGEpO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBIb3N0TWV0YWRhdGF9LlxuICovXG5leHBvcnQgdmFyIEhvc3Q6IEhvc3RNZXRhZGF0YUZhY3RvcnkgPSBtYWtlUGFyYW1EZWNvcmF0b3IoSG9zdE1ldGFkYXRhKTtcblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgU2tpcFNlbGZNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCB2YXIgU2tpcFNlbGY6IFNraXBTZWxmTWV0YWRhdGFGYWN0b3J5ID0gbWFrZVBhcmFtRGVjb3JhdG9yKFNraXBTZWxmTWV0YWRhdGEpOyJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar _THROW_IF_NOT_FOUND = lang_1.CONST_EXPR(new Object());\r\nexports.THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\r\nvar Injector = (function () {\r\n function Injector() {\r\n }\r\n /**\r\n * Retrieves an instance from the injector based on the provided token.\r\n * If not found:\r\n * - Throws {@link NoProviderError} if no `notFoundValue` that is not equal to\r\n * Injector.THROW_IF_NOT_FOUND is given\r\n * - Returns the `notFoundValue` otherwise\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/HeXSHg?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = ReflectiveInjector.resolveAndCreate([\r\n * provide(\"validToken\", {useValue: \"Value\"})\r\n * ]);\r\n * expect(injector.get(\"validToken\")).toEqual(\"Value\");\r\n * expect(() => injector.get(\"invalidToken\")).toThrowError();\r\n * ```\r\n *\r\n * `Injector` returns itself when given `Injector` as a token.\r\n *\r\n * ```typescript\r\n * var injector = ReflectiveInjector.resolveAndCreate([]);\r\n * expect(injector.get(Injector)).toBe(injector);\r\n * ```\r\n */\r\n Injector.prototype.get = function (token, notFoundValue) { return exceptions_1.unimplemented(); };\r\n Injector.THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\r\n return Injector;\r\n}());\r\nexports.Injector = Injector;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kaS9pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFDcEQsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFFN0QsSUFBTSxtQkFBbUIsR0FBRyxpQkFBVSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN4QywwQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztBQUV0RDtJQUFBO0lBNEJBLENBQUM7SUF6QkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdUJHO0lBQ0gsc0JBQUcsR0FBSCxVQUFJLEtBQVUsRUFBRSxhQUFtQixJQUFTLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBMUI5RCwyQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztJQTJCbEQsZUFBQztBQUFELENBQUMsQUE1QkQsSUE0QkM7QUE1QnFCLGdCQUFRLFdBNEI3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHt1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuXG5jb25zdCBfVEhST1dfSUZfTk9UX0ZPVU5EID0gQ09OU1RfRVhQUihuZXcgT2JqZWN0KCkpO1xuZXhwb3J0IGNvbnN0IFRIUk9XX0lGX05PVF9GT1VORCA9IF9USFJPV19JRl9OT1RfRk9VTkQ7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbmplY3RvciB7XG4gIHN0YXRpYyBUSFJPV19JRl9OT1RfRk9VTkQgPSBfVEhST1dfSUZfTk9UX0ZPVU5EO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2UgZnJvbSB0aGUgaW5qZWN0b3IgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRva2VuLlxuICAgKiBJZiBub3QgZm91bmQ6XG4gICAqIC0gVGhyb3dzIHtAbGluayBOb1Byb3ZpZGVyRXJyb3J9IGlmIG5vIGBub3RGb3VuZFZhbHVlYCB0aGF0IGlzIG5vdCBlcXVhbCB0b1xuICAgKiBJbmplY3Rvci5USFJPV19JRl9OT1RfRk9VTkQgaXMgZ2l2ZW5cbiAgICogLSBSZXR1cm5zIHRoZSBgbm90Rm91bmRWYWx1ZWAgb3RoZXJ3aXNlXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9IZVhTSGc/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXIgaW5qZWN0b3IgPSBSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgcHJvdmlkZShcInZhbGlkVG9rZW5cIiwge3VzZVZhbHVlOiBcIlZhbHVlXCJ9KVxuICAgKiBdKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChcInZhbGlkVG9rZW5cIikpLnRvRXF1YWwoXCJWYWx1ZVwiKTtcbiAgICogZXhwZWN0KCgpID0+IGluamVjdG9yLmdldChcImludmFsaWRUb2tlblwiKSkudG9UaHJvd0Vycm9yKCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBgSW5qZWN0b3JgIHJldHVybnMgaXRzZWxmIHdoZW4gZ2l2ZW4gYEluamVjdG9yYCBhcyBhIHRva2VuLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtdKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChJbmplY3RvcikpLnRvQmUoaW5qZWN0b3IpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55IHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar reflective_provider_1 = require('./reflective_provider');\r\nvar reflective_exceptions_1 = require('./reflective_exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar reflective_key_1 = require('./reflective_key');\r\nvar metadata_1 = require('./metadata');\r\nvar injector_1 = require('./injector');\r\nvar __unused; // avoid unused import when Type union types are erased\r\n// Threshold for the dynamic version\r\nvar _MAX_CONSTRUCTION_COUNTER = 10;\r\nvar UNDEFINED = lang_1.CONST_EXPR(new Object());\r\nvar ReflectiveProtoInjectorInlineStrategy = (function () {\r\n function ReflectiveProtoInjectorInlineStrategy(protoEI, providers) {\r\n this.provider0 = null;\r\n this.provider1 = null;\r\n this.provider2 = null;\r\n this.provider3 = null;\r\n this.provider4 = null;\r\n this.provider5 = null;\r\n this.provider6 = null;\r\n this.provider7 = null;\r\n this.provider8 = null;\r\n this.provider9 = null;\r\n this.keyId0 = null;\r\n this.keyId1 = null;\r\n this.keyId2 = null;\r\n this.keyId3 = null;\r\n this.keyId4 = null;\r\n this.keyId5 = null;\r\n this.keyId6 = null;\r\n this.keyId7 = null;\r\n this.keyId8 = null;\r\n this.keyId9 = null;\r\n var length = providers.length;\r\n if (length > 0) {\r\n this.provider0 = providers[0];\r\n this.keyId0 = providers[0].key.id;\r\n }\r\n if (length > 1) {\r\n this.provider1 = providers[1];\r\n this.keyId1 = providers[1].key.id;\r\n }\r\n if (length > 2) {\r\n this.provider2 = providers[2];\r\n this.keyId2 = providers[2].key.id;\r\n }\r\n if (length > 3) {\r\n this.provider3 = providers[3];\r\n this.keyId3 = providers[3].key.id;\r\n }\r\n if (length > 4) {\r\n this.provider4 = providers[4];\r\n this.keyId4 = providers[4].key.id;\r\n }\r\n if (length > 5) {\r\n this.provider5 = providers[5];\r\n this.keyId5 = providers[5].key.id;\r\n }\r\n if (length > 6) {\r\n this.provider6 = providers[6];\r\n this.keyId6 = providers[6].key.id;\r\n }\r\n if (length > 7) {\r\n this.provider7 = providers[7];\r\n this.keyId7 = providers[7].key.id;\r\n }\r\n if (length > 8) {\r\n this.provider8 = providers[8];\r\n this.keyId8 = providers[8].key.id;\r\n }\r\n if (length > 9) {\r\n this.provider9 = providers[9];\r\n this.keyId9 = providers[9].key.id;\r\n }\r\n }\r\n ReflectiveProtoInjectorInlineStrategy.prototype.getProviderAtIndex = function (index) {\r\n if (index == 0)\r\n return this.provider0;\r\n if (index == 1)\r\n return this.provider1;\r\n if (index == 2)\r\n return this.provider2;\r\n if (index == 3)\r\n return this.provider3;\r\n if (index == 4)\r\n return this.provider4;\r\n if (index == 5)\r\n return this.provider5;\r\n if (index == 6)\r\n return this.provider6;\r\n if (index == 7)\r\n return this.provider7;\r\n if (index == 8)\r\n return this.provider8;\r\n if (index == 9)\r\n return this.provider9;\r\n throw new reflective_exceptions_1.OutOfBoundsError(index);\r\n };\r\n ReflectiveProtoInjectorInlineStrategy.prototype.createInjectorStrategy = function (injector) {\r\n return new ReflectiveInjectorInlineStrategy(injector, this);\r\n };\r\n return ReflectiveProtoInjectorInlineStrategy;\r\n}());\r\nexports.ReflectiveProtoInjectorInlineStrategy = ReflectiveProtoInjectorInlineStrategy;\r\nvar ReflectiveProtoInjectorDynamicStrategy = (function () {\r\n function ReflectiveProtoInjectorDynamicStrategy(protoInj, providers) {\r\n this.providers = providers;\r\n var len = providers.length;\r\n this.keyIds = collection_1.ListWrapper.createFixedSize(len);\r\n for (var i = 0; i < len; i++) {\r\n this.keyIds[i] = providers[i].key.id;\r\n }\r\n }\r\n ReflectiveProtoInjectorDynamicStrategy.prototype.getProviderAtIndex = function (index) {\r\n if (index < 0 || index >= this.providers.length) {\r\n throw new reflective_exceptions_1.OutOfBoundsError(index);\r\n }\r\n return this.providers[index];\r\n };\r\n ReflectiveProtoInjectorDynamicStrategy.prototype.createInjectorStrategy = function (ei) {\r\n return new ReflectiveInjectorDynamicStrategy(this, ei);\r\n };\r\n return ReflectiveProtoInjectorDynamicStrategy;\r\n}());\r\nexports.ReflectiveProtoInjectorDynamicStrategy = ReflectiveProtoInjectorDynamicStrategy;\r\nvar ReflectiveProtoInjector = (function () {\r\n function ReflectiveProtoInjector(providers) {\r\n this.numberOfProviders = providers.length;\r\n this._strategy = providers.length > _MAX_CONSTRUCTION_COUNTER ?\r\n new ReflectiveProtoInjectorDynamicStrategy(this, providers) :\r\n new ReflectiveProtoInjectorInlineStrategy(this, providers);\r\n }\r\n ReflectiveProtoInjector.fromResolvedProviders = function (providers) {\r\n return new ReflectiveProtoInjector(providers);\r\n };\r\n ReflectiveProtoInjector.prototype.getProviderAtIndex = function (index) {\r\n return this._strategy.getProviderAtIndex(index);\r\n };\r\n return ReflectiveProtoInjector;\r\n}());\r\nexports.ReflectiveProtoInjector = ReflectiveProtoInjector;\r\nvar ReflectiveInjectorInlineStrategy = (function () {\r\n function ReflectiveInjectorInlineStrategy(injector, protoStrategy) {\r\n this.injector = injector;\r\n this.protoStrategy = protoStrategy;\r\n this.obj0 = UNDEFINED;\r\n this.obj1 = UNDEFINED;\r\n this.obj2 = UNDEFINED;\r\n this.obj3 = UNDEFINED;\r\n this.obj4 = UNDEFINED;\r\n this.obj5 = UNDEFINED;\r\n this.obj6 = UNDEFINED;\r\n this.obj7 = UNDEFINED;\r\n this.obj8 = UNDEFINED;\r\n this.obj9 = UNDEFINED;\r\n }\r\n ReflectiveInjectorInlineStrategy.prototype.resetConstructionCounter = function () { this.injector._constructionCounter = 0; };\r\n ReflectiveInjectorInlineStrategy.prototype.instantiateProvider = function (provider) {\r\n return this.injector._new(provider);\r\n };\r\n ReflectiveInjectorInlineStrategy.prototype.getObjByKeyId = function (keyId) {\r\n var p = this.protoStrategy;\r\n var inj = this.injector;\r\n if (p.keyId0 === keyId) {\r\n if (this.obj0 === UNDEFINED) {\r\n this.obj0 = inj._new(p.provider0);\r\n }\r\n return this.obj0;\r\n }\r\n if (p.keyId1 === keyId) {\r\n if (this.obj1 === UNDEFINED) {\r\n this.obj1 = inj._new(p.provider1);\r\n }\r\n return this.obj1;\r\n }\r\n if (p.keyId2 === keyId) {\r\n if (this.obj2 === UNDEFINED) {\r\n this.obj2 = inj._new(p.provider2);\r\n }\r\n return this.obj2;\r\n }\r\n if (p.keyId3 === keyId) {\r\n if (this.obj3 === UNDEFINED) {\r\n this.obj3 = inj._new(p.provider3);\r\n }\r\n return this.obj3;\r\n }\r\n if (p.keyId4 === keyId) {\r\n if (this.obj4 === UNDEFINED) {\r\n this.obj4 = inj._new(p.provider4);\r\n }\r\n return this.obj4;\r\n }\r\n if (p.keyId5 === keyId) {\r\n if (this.obj5 === UNDEFINED) {\r\n this.obj5 = inj._new(p.provider5);\r\n }\r\n return this.obj5;\r\n }\r\n if (p.keyId6 === keyId) {\r\n if (this.obj6 === UNDEFINED) {\r\n this.obj6 = inj._new(p.provider6);\r\n }\r\n return this.obj6;\r\n }\r\n if (p.keyId7 === keyId) {\r\n if (this.obj7 === UNDEFINED) {\r\n this.obj7 = inj._new(p.provider7);\r\n }\r\n return this.obj7;\r\n }\r\n if (p.keyId8 === keyId) {\r\n if (this.obj8 === UNDEFINED) {\r\n this.obj8 = inj._new(p.provider8);\r\n }\r\n return this.obj8;\r\n }\r\n if (p.keyId9 === keyId) {\r\n if (this.obj9 === UNDEFINED) {\r\n this.obj9 = inj._new(p.provider9);\r\n }\r\n return this.obj9;\r\n }\r\n return UNDEFINED;\r\n };\r\n ReflectiveInjectorInlineStrategy.prototype.getObjAtIndex = function (index) {\r\n if (index == 0)\r\n return this.obj0;\r\n if (index == 1)\r\n return this.obj1;\r\n if (index == 2)\r\n return this.obj2;\r\n if (index == 3)\r\n return this.obj3;\r\n if (index == 4)\r\n return this.obj4;\r\n if (index == 5)\r\n return this.obj5;\r\n if (index == 6)\r\n return this.obj6;\r\n if (index == 7)\r\n return this.obj7;\r\n if (index == 8)\r\n return this.obj8;\r\n if (index == 9)\r\n return this.obj9;\r\n throw new reflective_exceptions_1.OutOfBoundsError(index);\r\n };\r\n ReflectiveInjectorInlineStrategy.prototype.getMaxNumberOfObjects = function () { return _MAX_CONSTRUCTION_COUNTER; };\r\n return ReflectiveInjectorInlineStrategy;\r\n}());\r\nexports.ReflectiveInjectorInlineStrategy = ReflectiveInjectorInlineStrategy;\r\nvar ReflectiveInjectorDynamicStrategy = (function () {\r\n function ReflectiveInjectorDynamicStrategy(protoStrategy, injector) {\r\n this.protoStrategy = protoStrategy;\r\n this.injector = injector;\r\n this.objs = collection_1.ListWrapper.createFixedSize(protoStrategy.providers.length);\r\n collection_1.ListWrapper.fill(this.objs, UNDEFINED);\r\n }\r\n ReflectiveInjectorDynamicStrategy.prototype.resetConstructionCounter = function () { this.injector._constructionCounter = 0; };\r\n ReflectiveInjectorDynamicStrategy.prototype.instantiateProvider = function (provider) {\r\n return this.injector._new(provider);\r\n };\r\n ReflectiveInjectorDynamicStrategy.prototype.getObjByKeyId = function (keyId) {\r\n var p = this.protoStrategy;\r\n for (var i = 0; i < p.keyIds.length; i++) {\r\n if (p.keyIds[i] === keyId) {\r\n if (this.objs[i] === UNDEFINED) {\r\n this.objs[i] = this.injector._new(p.providers[i]);\r\n }\r\n return this.objs[i];\r\n }\r\n }\r\n return UNDEFINED;\r\n };\r\n ReflectiveInjectorDynamicStrategy.prototype.getObjAtIndex = function (index) {\r\n if (index < 0 || index >= this.objs.length) {\r\n throw new reflective_exceptions_1.OutOfBoundsError(index);\r\n }\r\n return this.objs[index];\r\n };\r\n ReflectiveInjectorDynamicStrategy.prototype.getMaxNumberOfObjects = function () { return this.objs.length; };\r\n return ReflectiveInjectorDynamicStrategy;\r\n}());\r\nexports.ReflectiveInjectorDynamicStrategy = ReflectiveInjectorDynamicStrategy;\r\n/**\r\n * A ReflectiveDependency injection container used for instantiating objects and resolving\r\n * dependencies.\r\n *\r\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\r\n * constructor dependencies.\r\n *\r\n * In typical use, application code asks for the dependencies in the constructor and they are\r\n * resolved by the `Injector`.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\r\n *\r\n * The following example creates an `Injector` configured to create `Engine` and `Car`.\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\r\n * var car = injector.get(Car);\r\n * expect(car instanceof Car).toBe(true);\r\n * expect(car.engine instanceof Engine).toBe(true);\r\n * ```\r\n *\r\n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\r\n * resolve all of the object's dependencies automatically.\r\n */\r\nvar ReflectiveInjector = (function () {\r\n function ReflectiveInjector() {\r\n }\r\n /**\r\n * Turns an array of provider definitions into an array of resolved providers.\r\n *\r\n * A resolution is a process of flattening multiple nested arrays and converting individual\r\n * providers into an array of {@link ResolvedReflectiveProvider}s.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\r\n *\r\n * expect(providers.length).toEqual(2);\r\n *\r\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\r\n * expect(providers[0].key.displayName).toBe(\"Car\");\r\n * expect(providers[0].dependencies.length).toEqual(1);\r\n * expect(providers[0].factory).toBeDefined();\r\n *\r\n * expect(providers[1].key.displayName).toBe(\"Engine\");\r\n * });\r\n * ```\r\n *\r\n * See {@link ReflectiveInjector#fromResolvedProviders} for more info.\r\n */\r\n ReflectiveInjector.resolve = function (providers) {\r\n return reflective_provider_1.resolveReflectiveProviders(providers);\r\n };\r\n /**\r\n * Resolves an array of providers and creates an injector from those providers.\r\n *\r\n * The passed-in providers can be an array of `Type`, {@link Provider},\r\n * or a recursive array of more providers.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\r\n * expect(injector.get(Car) instanceof Car).toBe(true);\r\n * ```\r\n *\r\n * This function is slower than the corresponding `fromResolvedProviders`\r\n * because it needs to resolve the passed-in providers first.\r\n * See {@link Injector#resolve} and {@link Injector#fromResolvedProviders}.\r\n */\r\n ReflectiveInjector.resolveAndCreate = function (providers, parent) {\r\n if (parent === void 0) { parent = null; }\r\n var ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\r\n return ReflectiveInjector.fromResolvedProviders(ResolvedReflectiveProviders, parent);\r\n };\r\n /**\r\n * Creates an injector from previously resolved providers.\r\n *\r\n * This API is the recommended way to construct injectors in performance-sensitive parts.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\r\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\r\n * expect(injector.get(Car) instanceof Car).toBe(true);\r\n * ```\r\n */\r\n ReflectiveInjector.fromResolvedProviders = function (providers, parent) {\r\n if (parent === void 0) { parent = null; }\r\n return new ReflectiveInjector_(ReflectiveProtoInjector.fromResolvedProviders(providers), parent);\r\n };\r\n /**\r\n * @deprecated\r\n */\r\n ReflectiveInjector.fromResolvedBindings = function (providers) {\r\n return ReflectiveInjector.fromResolvedProviders(providers);\r\n };\r\n Object.defineProperty(ReflectiveInjector.prototype, \"parent\", {\r\n /**\r\n * Parent of this injector.\r\n *\r\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\r\n * -->\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/eosMGo?p=preview))\r\n *\r\n * ```typescript\r\n * var parent = ReflectiveInjector.resolveAndCreate([]);\r\n * var child = parent.resolveAndCreateChild([]);\r\n * expect(child.parent).toBe(parent);\r\n * ```\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @internal\r\n */\r\n ReflectiveInjector.prototype.debugContext = function () { return null; };\r\n /**\r\n * Resolves an array of providers and creates a child injector from those providers.\r\n *\r\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\r\n * -->\r\n *\r\n * The passed-in providers can be an array of `Type`, {@link Provider},\r\n * or a recursive array of more providers.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/opB3T4?p=preview))\r\n *\r\n * ```typescript\r\n * class ParentProvider {}\r\n * class ChildProvider {}\r\n *\r\n * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);\r\n * var child = parent.resolveAndCreateChild([ChildProvider]);\r\n *\r\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\r\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\r\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\r\n * ```\r\n *\r\n * This function is slower than the corresponding `createChildFromResolved`\r\n * because it needs to resolve the passed-in providers first.\r\n * See {@link Injector#resolve} and {@link Injector#createChildFromResolved}.\r\n */\r\n ReflectiveInjector.prototype.resolveAndCreateChild = function (providers) {\r\n return exceptions_1.unimplemented();\r\n };\r\n /**\r\n * Creates a child injector from previously resolved providers.\r\n *\r\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\r\n * -->\r\n *\r\n * This API is the recommended way to construct injectors in performance-sensitive parts.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/VhyfjN?p=preview))\r\n *\r\n * ```typescript\r\n * class ParentProvider {}\r\n * class ChildProvider {}\r\n *\r\n * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);\r\n * var childProviders = ReflectiveInjector.resolve([ChildProvider]);\r\n *\r\n * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);\r\n * var child = parent.createChildFromResolved(childProviders);\r\n *\r\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\r\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\r\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\r\n * ```\r\n */\r\n ReflectiveInjector.prototype.createChildFromResolved = function (providers) {\r\n return exceptions_1.unimplemented();\r\n };\r\n /**\r\n * Resolves a provider and instantiates an object in the context of the injector.\r\n *\r\n * The created object does not get cached by the injector.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/yvVXoB?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\r\n *\r\n * var car = injector.resolveAndInstantiate(Car);\r\n * expect(car.engine).toBe(injector.get(Engine));\r\n * expect(car).not.toBe(injector.resolveAndInstantiate(Car));\r\n * ```\r\n */\r\n ReflectiveInjector.prototype.resolveAndInstantiate = function (provider) { return exceptions_1.unimplemented(); };\r\n /**\r\n * Instantiates an object using a resolved provider in the context of the injector.\r\n *\r\n * The created object does not get cached by the injector.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ptCImQ?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = ReflectiveInjector.resolveAndCreate([Engine]);\r\n * var carProvider = ReflectiveInjector.resolve([Car])[0];\r\n * var car = injector.instantiateResolved(carProvider);\r\n * expect(car.engine).toBe(injector.get(Engine));\r\n * expect(car).not.toBe(injector.instantiateResolved(carProvider));\r\n * ```\r\n */\r\n ReflectiveInjector.prototype.instantiateResolved = function (provider) { return exceptions_1.unimplemented(); };\r\n return ReflectiveInjector;\r\n}());\r\nexports.ReflectiveInjector = ReflectiveInjector;\r\nvar ReflectiveInjector_ = (function () {\r\n /**\r\n * Private\r\n */\r\n function ReflectiveInjector_(_proto /* ProtoInjector */, _parent, _debugContext) {\r\n if (_parent === void 0) { _parent = null; }\r\n if (_debugContext === void 0) { _debugContext = null; }\r\n this._debugContext = _debugContext;\r\n /** @internal */\r\n this._constructionCounter = 0;\r\n this._proto = _proto;\r\n this._parent = _parent;\r\n this._strategy = _proto._strategy.createInjectorStrategy(this);\r\n }\r\n /**\r\n * @internal\r\n */\r\n ReflectiveInjector_.prototype.debugContext = function () { return this._debugContext(); };\r\n ReflectiveInjector_.prototype.get = function (token, notFoundValue) {\r\n if (notFoundValue === void 0) { notFoundValue = injector_1.THROW_IF_NOT_FOUND; }\r\n return this._getByKey(reflective_key_1.ReflectiveKey.get(token), null, null, notFoundValue);\r\n };\r\n ReflectiveInjector_.prototype.getAt = function (index) { return this._strategy.getObjAtIndex(index); };\r\n Object.defineProperty(ReflectiveInjector_.prototype, \"parent\", {\r\n get: function () { return this._parent; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReflectiveInjector_.prototype, \"internalStrategy\", {\r\n /**\r\n * @internal\r\n * Internal. Do not use.\r\n * We return `any` not to export the InjectorStrategy type.\r\n */\r\n get: function () { return this._strategy; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ReflectiveInjector_.prototype.resolveAndCreateChild = function (providers) {\r\n var ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\r\n return this.createChildFromResolved(ResolvedReflectiveProviders);\r\n };\r\n ReflectiveInjector_.prototype.createChildFromResolved = function (providers) {\r\n var proto = new ReflectiveProtoInjector(providers);\r\n var inj = new ReflectiveInjector_(proto);\r\n inj._parent = this;\r\n return inj;\r\n };\r\n ReflectiveInjector_.prototype.resolveAndInstantiate = function (provider) {\r\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\r\n };\r\n ReflectiveInjector_.prototype.instantiateResolved = function (provider) {\r\n return this._instantiateProvider(provider);\r\n };\r\n /** @internal */\r\n ReflectiveInjector_.prototype._new = function (provider) {\r\n if (this._constructionCounter++ > this._strategy.getMaxNumberOfObjects()) {\r\n throw new reflective_exceptions_1.CyclicDependencyError(this, provider.key);\r\n }\r\n return this._instantiateProvider(provider);\r\n };\r\n ReflectiveInjector_.prototype._instantiateProvider = function (provider) {\r\n if (provider.multiProvider) {\r\n var res = collection_1.ListWrapper.createFixedSize(provider.resolvedFactories.length);\r\n for (var i = 0; i < provider.resolvedFactories.length; ++i) {\r\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\r\n }\r\n return res;\r\n }\r\n else {\r\n return this._instantiate(provider, provider.resolvedFactories[0]);\r\n }\r\n };\r\n ReflectiveInjector_.prototype._instantiate = function (provider, ResolvedReflectiveFactory) {\r\n var factory = ResolvedReflectiveFactory.factory;\r\n var deps = ResolvedReflectiveFactory.dependencies;\r\n var length = deps.length;\r\n var d0;\r\n var d1;\r\n var d2;\r\n var d3;\r\n var d4;\r\n var d5;\r\n var d6;\r\n var d7;\r\n var d8;\r\n var d9;\r\n var d10;\r\n var d11;\r\n var d12;\r\n var d13;\r\n var d14;\r\n var d15;\r\n var d16;\r\n var d17;\r\n var d18;\r\n var d19;\r\n try {\r\n d0 = length > 0 ? this._getByReflectiveDependency(provider, deps[0]) : null;\r\n d1 = length > 1 ? this._getByReflectiveDependency(provider, deps[1]) : null;\r\n d2 = length > 2 ? this._getByReflectiveDependency(provider, deps[2]) : null;\r\n d3 = length > 3 ? this._getByReflectiveDependency(provider, deps[3]) : null;\r\n d4 = length > 4 ? this._getByReflectiveDependency(provider, deps[4]) : null;\r\n d5 = length > 5 ? this._getByReflectiveDependency(provider, deps[5]) : null;\r\n d6 = length > 6 ? this._getByReflectiveDependency(provider, deps[6]) : null;\r\n d7 = length > 7 ? this._getByReflectiveDependency(provider, deps[7]) : null;\r\n d8 = length > 8 ? this._getByReflectiveDependency(provider, deps[8]) : null;\r\n d9 = length > 9 ? this._getByReflectiveDependency(provider, deps[9]) : null;\r\n d10 = length > 10 ? this._getByReflectiveDependency(provider, deps[10]) : null;\r\n d11 = length > 11 ? this._getByReflectiveDependency(provider, deps[11]) : null;\r\n d12 = length > 12 ? this._getByReflectiveDependency(provider, deps[12]) : null;\r\n d13 = length > 13 ? this._getByReflectiveDependency(provider, deps[13]) : null;\r\n d14 = length > 14 ? this._getByReflectiveDependency(provider, deps[14]) : null;\r\n d15 = length > 15 ? this._getByReflectiveDependency(provider, deps[15]) : null;\r\n d16 = length > 16 ? this._getByReflectiveDependency(provider, deps[16]) : null;\r\n d17 = length > 17 ? this._getByReflectiveDependency(provider, deps[17]) : null;\r\n d18 = length > 18 ? this._getByReflectiveDependency(provider, deps[18]) : null;\r\n d19 = length > 19 ? this._getByReflectiveDependency(provider, deps[19]) : null;\r\n }\r\n catch (e) {\r\n if (e instanceof reflective_exceptions_1.AbstractProviderError || e instanceof reflective_exceptions_1.InstantiationError) {\r\n e.addKey(this, provider.key);\r\n }\r\n throw e;\r\n }\r\n var obj;\r\n try {\r\n switch (length) {\r\n case 0:\r\n obj = factory();\r\n break;\r\n case 1:\r\n obj = factory(d0);\r\n break;\r\n case 2:\r\n obj = factory(d0, d1);\r\n break;\r\n case 3:\r\n obj = factory(d0, d1, d2);\r\n break;\r\n case 4:\r\n obj = factory(d0, d1, d2, d3);\r\n break;\r\n case 5:\r\n obj = factory(d0, d1, d2, d3, d4);\r\n break;\r\n case 6:\r\n obj = factory(d0, d1, d2, d3, d4, d5);\r\n break;\r\n case 7:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6);\r\n break;\r\n case 8:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7);\r\n break;\r\n case 9:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8);\r\n break;\r\n case 10:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9);\r\n break;\r\n case 11:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10);\r\n break;\r\n case 12:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11);\r\n break;\r\n case 13:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12);\r\n break;\r\n case 14:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13);\r\n break;\r\n case 15:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14);\r\n break;\r\n case 16:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);\r\n break;\r\n case 17:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16);\r\n break;\r\n case 18:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17);\r\n break;\r\n case 19:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18);\r\n break;\r\n case 20:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19);\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Cannot instantiate '\" + provider.key.displayName + \"' because it has more than 20 dependencies\");\r\n }\r\n }\r\n catch (e) {\r\n throw new reflective_exceptions_1.InstantiationError(this, e, e.stack, provider.key);\r\n }\r\n return obj;\r\n };\r\n ReflectiveInjector_.prototype._getByReflectiveDependency = function (provider, dep) {\r\n return this._getByKey(dep.key, dep.lowerBoundVisibility, dep.upperBoundVisibility, dep.optional ? null : injector_1.THROW_IF_NOT_FOUND);\r\n };\r\n ReflectiveInjector_.prototype._getByKey = function (key, lowerBoundVisibility, upperBoundVisibility, notFoundValue) {\r\n if (key === INJECTOR_KEY) {\r\n return this;\r\n }\r\n if (upperBoundVisibility instanceof metadata_1.SelfMetadata) {\r\n return this._getByKeySelf(key, notFoundValue);\r\n }\r\n else {\r\n return this._getByKeyDefault(key, notFoundValue, lowerBoundVisibility);\r\n }\r\n };\r\n /** @internal */\r\n ReflectiveInjector_.prototype._throwOrNull = function (key, notFoundValue) {\r\n if (notFoundValue !== injector_1.THROW_IF_NOT_FOUND) {\r\n return notFoundValue;\r\n }\r\n else {\r\n throw new reflective_exceptions_1.NoProviderError(this, key);\r\n }\r\n };\r\n /** @internal */\r\n ReflectiveInjector_.prototype._getByKeySelf = function (key, notFoundValue) {\r\n var obj = this._strategy.getObjByKeyId(key.id);\r\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\r\n };\r\n /** @internal */\r\n ReflectiveInjector_.prototype._getByKeyDefault = function (key, notFoundValue, lowerBoundVisibility) {\r\n var inj;\r\n if (lowerBoundVisibility instanceof metadata_1.SkipSelfMetadata) {\r\n inj = this._parent;\r\n }\r\n else {\r\n inj = this;\r\n }\r\n while (inj instanceof ReflectiveInjector_) {\r\n var inj_ = inj;\r\n var obj = inj_._strategy.getObjByKeyId(key.id);\r\n if (obj !== UNDEFINED)\r\n return obj;\r\n inj = inj_._parent;\r\n }\r\n if (inj !== null) {\r\n return inj.get(key.token, notFoundValue);\r\n }\r\n else {\r\n return this._throwOrNull(key, notFoundValue);\r\n }\r\n };\r\n Object.defineProperty(ReflectiveInjector_.prototype, \"displayName\", {\r\n get: function () {\r\n return \"ReflectiveInjector(providers: [\" + _mapProviders(this, function (b) { return (\" \\\"\" + b.key.displayName + \"\\\" \"); }).join(\", \") + \"])\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ReflectiveInjector_.prototype.toString = function () { return this.displayName; };\r\n return ReflectiveInjector_;\r\n}());\r\nexports.ReflectiveInjector_ = ReflectiveInjector_;\r\nvar INJECTOR_KEY = reflective_key_1.ReflectiveKey.get(injector_1.Injector);\r\nfunction _mapProviders(injector, fn) {\r\n var res = [];\r\n for (var i = 0; i < injector._proto.numberOfProviders; ++i) {\r\n res.push(fn(injector._proto.getProviderAtIndex(i)));\r\n }\r\n return res;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGl2ZV9pbmplY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2RpL3JlZmxlY3RpdmVfaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTVFLG9DQUtPLHVCQUF1QixDQUFDLENBQUE7QUFDL0Isc0NBT08seUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxxQkFBMEMsMEJBQTBCLENBQUMsQ0FBQTtBQUNyRSwyQkFBMkMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM1RSwrQkFBNEIsa0JBQWtCLENBQUMsQ0FBQTtBQUMvQyx5QkFBMkQsWUFBWSxDQUFDLENBQUE7QUFDeEUseUJBQTJDLFlBQVksQ0FBQyxDQUFBO0FBRXhELElBQUksUUFBYyxDQUFDLENBQUUsdURBQXVEO0FBRTVFLG9DQUFvQztBQUNwQyxJQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxJQUFNLFNBQVMsR0FBRyxpQkFBVSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztBQU8zQztJQXVCRSwrQ0FBWSxPQUFnQyxFQUFFLFNBQXVDO1FBdEJyRixjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUM3QyxjQUFTLEdBQStCLElBQUksQ0FBQztRQUU3QyxXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxJQUFJLENBQUM7UUFDdEIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxJQUFJLENBQUM7UUFDdEIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxJQUFJLENBQUM7UUFDdEIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBR3BCLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFFOUIsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsa0VBQWtCLEdBQWxCLFVBQW1CLEtBQWE7UUFDOUIsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSx3Q0FBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsc0VBQXNCLEdBQXRCLFVBQXVCLFFBQTZCO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLGdDQUFnQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0gsNENBQUM7QUFBRCxDQUFDLEFBckZELElBcUZDO0FBckZZLDZDQUFxQyx3Q0FxRmpELENBQUE7QUFFRDtJQUdFLGdEQUFZLFFBQWlDLEVBQVMsU0FBdUM7UUFBdkMsY0FBUyxHQUFULFNBQVMsQ0FBOEI7UUFDM0YsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUUzQixJQUFJLENBQUMsTUFBTSxHQUFHLHdCQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9DLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1FQUFrQixHQUFsQixVQUFtQixLQUFhO1FBQzlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRCxNQUFNLElBQUksd0NBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCx1RUFBc0IsR0FBdEIsVUFBdUIsRUFBdUI7UUFDNUMsTUFBTSxDQUFDLElBQUksaUNBQWlDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDSCw2Q0FBQztBQUFELENBQUMsQUF2QkQsSUF1QkM7QUF2QlksOENBQXNDLHlDQXVCbEQsQ0FBQTtBQUVEO0lBU0UsaUNBQVksU0FBdUM7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLHlCQUF5QjtZQUN4QyxJQUFJLHNDQUFzQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7WUFDM0QsSUFBSSxxQ0FBcUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQWJNLDZDQUFxQixHQUE1QixVQUE2QixTQUF1QztRQUNsRSxNQUFNLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBYUQsb0RBQWtCLEdBQWxCLFVBQW1CLEtBQWE7UUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNILDhCQUFDO0FBQUQsQ0FBQyxBQW5CRCxJQW1CQztBQW5CWSwrQkFBdUIsMEJBbUJuQyxDQUFBO0FBYUQ7SUFZRSwwQ0FBbUIsUUFBNkIsRUFDN0IsYUFBb0Q7UUFEcEQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQXVDO1FBWnZFLFNBQUksR0FBUSxTQUFTLENBQUM7UUFDdEIsU0FBSSxHQUFRLFNBQVMsQ0FBQztRQUN0QixTQUFJLEdBQVEsU0FBUyxDQUFDO1FBQ3RCLFNBQUksR0FBUSxTQUFTLENBQUM7UUFDdEIsU0FBSSxHQUFRLFNBQVMsQ0FBQztRQUN0QixTQUFJLEdBQVEsU0FBUyxDQUFDO1FBQ3RCLFNBQUksR0FBUSxTQUFTLENBQUM7UUFDdEIsU0FBSSxHQUFRLFNBQVMsQ0FBQztRQUN0QixTQUFJLEdBQVEsU0FBUyxDQUFDO1FBQ3RCLFNBQUksR0FBUSxTQUFTLENBQUM7SUFHb0QsQ0FBQztJQUUzRSxtRUFBd0IsR0FBeEIsY0FBbUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLDhEQUFtQixHQUFuQixVQUFvQixRQUFvQztRQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHdEQUFhLEdBQWIsVUFBYyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV4QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsd0RBQWEsR0FBYixVQUFjLEtBQWE7UUFDekIsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSx3Q0FBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0VBQXFCLEdBQXJCLGNBQWtDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7SUFDdkUsdUNBQUM7QUFBRCxDQUFDLEFBeEdELElBd0dDO0FBeEdZLHdDQUFnQyxtQ0F3RzVDLENBQUE7QUFHRDtJQUdFLDJDQUFtQixhQUFxRCxFQUNyRCxRQUE2QjtRQUQ3QixrQkFBYSxHQUFiLGFBQWEsQ0FBd0M7UUFDckQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyx3QkFBVyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hFLHdCQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9FQUF3QixHQUF4QixjQUFtQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUUsK0RBQW1CLEdBQW5CLFVBQW9CLFFBQW9DO1FBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseURBQWEsR0FBYixVQUFjLEtBQWE7UUFDekIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUUzQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQseURBQWEsR0FBYixVQUFjLEtBQWE7UUFDekIsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sSUFBSSx3Q0FBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGlFQUFxQixHQUFyQixjQUFrQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELHdDQUFDO0FBQUQsQ0FBQyxBQXhDRCxJQXdDQztBQXhDWSx5Q0FBaUMsb0NBd0M3QyxDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBQ0g7SUFBQTtJQWlQQSxDQUFDO0lBaFBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWdDRztJQUNJLDBCQUFPLEdBQWQsVUFBZSxTQUF5QztRQUN0RCxNQUFNLENBQUMsZ0RBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeUJHO0lBQ0ksbUNBQWdCLEdBQXZCLFVBQXdCLFNBQXlDLEVBQ3pDLE1BQXVCO1FBQXZCLHNCQUF1QixHQUF2QixhQUF1QjtRQUM3QyxJQUFJLDJCQUEyQixHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFDSSx3Q0FBcUIsR0FBNUIsVUFBNkIsU0FBdUMsRUFDdkMsTUFBdUI7UUFBdkIsc0JBQXVCLEdBQXZCLGFBQXVCO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUN4RCxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSx1Q0FBb0IsR0FBM0IsVUFBNEIsU0FBdUM7UUFDakUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFpQkQsc0JBQUksc0NBQU07UUFkVjs7Ozs7Ozs7Ozs7OztXQWFHO2FBQ0gsY0FBeUIsTUFBTSxDQUFDLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBR2xEOztPQUVHO0lBQ0gseUNBQVksR0FBWixjQUFzQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQkc7SUFDSCxrREFBcUIsR0FBckIsVUFBc0IsU0FBeUM7UUFDN0QsTUFBTSxDQUFDLDBCQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXdCRztJQUNILG9EQUF1QixHQUF2QixVQUF3QixTQUF1QztRQUM3RCxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxrREFBcUIsR0FBckIsVUFBc0IsUUFBeUIsSUFBUyxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVqRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxnREFBbUIsR0FBbkIsVUFBb0IsUUFBb0MsSUFBUyxNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUc1Rix5QkFBQztBQUFELENBQUMsQUFqUEQsSUFpUEM7QUFqUHFCLDBCQUFrQixxQkFpUHZDLENBQUE7QUFFRDtJQVFFOztPQUVHO0lBQ0gsNkJBQVksTUFBVyxDQUFDLG1CQUFtQixFQUFFLE9BQXdCLEVBQ2pELGFBQThCO1FBREwsdUJBQXdCLEdBQXhCLGNBQXdCO1FBQ3pELDZCQUFzQyxHQUF0QyxvQkFBc0M7UUFBOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBVmxELGdCQUFnQjtRQUNoQix5QkFBb0IsR0FBVyxDQUFDLENBQUM7UUFVL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNILDBDQUFZLEdBQVosY0FBc0IsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFcEQsaUNBQUcsR0FBSCxVQUFJLEtBQVUsRUFBRSxhQUF1QztRQUF2Qyw2QkFBdUMsR0FBdkMsNkNBQXVDO1FBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELG1DQUFLLEdBQUwsVUFBTSxLQUFhLElBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6RSxzQkFBSSx1Q0FBTTthQUFWLGNBQXlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFPL0Msc0JBQUksaURBQWdCO1FBTHBCOzs7O1dBSUc7YUFDSCxjQUE4QixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBRXRELG1EQUFxQixHQUFyQixVQUFzQixTQUF5QztRQUM3RCxJQUFJLDJCQUEyQixHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELHFEQUF1QixHQUF2QixVQUF3QixTQUF1QztRQUM3RCxJQUFJLEtBQUssR0FBRyxJQUFJLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELElBQUksR0FBRyxHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxtREFBcUIsR0FBckIsVUFBc0IsUUFBeUI7UUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGlEQUFtQixHQUFuQixVQUFvQixRQUFvQztRQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsa0NBQUksR0FBSixVQUFLLFFBQW9DO1FBQ3ZDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekUsTUFBTSxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGtEQUFvQixHQUE1QixVQUE2QixRQUFvQztRQUMvRCxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLEdBQUcsR0FBRyx3QkFBVyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLDBDQUFZLEdBQXBCLFVBQXFCLFFBQW9DLEVBQ3BDLHlCQUFvRDtRQUN2RSxJQUFJLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7UUFDaEQsSUFBSSxJQUFJLEdBQUcseUJBQXlCLENBQUMsWUFBWSxDQUFDO1FBQ2xELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFekIsSUFBSSxFQUFPLENBQUM7UUFDWixJQUFJLEVBQU8sQ0FBQztRQUNaLElBQUksRUFBTyxDQUFDO1FBQ1osSUFBSSxFQUFPLENBQUM7UUFDWixJQUFJLEVBQU8sQ0FBQztRQUNaLElBQUksRUFBTyxDQUFDO1FBQ1osSUFBSSxFQUFPLENBQUM7UUFDWixJQUFJLEVBQU8sQ0FBQztRQUNaLElBQUksRUFBTyxDQUFDO1FBQ1osSUFBSSxFQUFPLENBQUM7UUFDWixJQUFJLEdBQVEsQ0FBQztRQUNiLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxHQUFRLENBQUM7UUFDYixJQUFJLEdBQVEsQ0FBQztRQUNiLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxHQUFRLENBQUM7UUFDYixJQUFJLEdBQVEsQ0FBQztRQUNiLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxHQUFRLENBQUM7UUFDYixJQUFJLEdBQVEsQ0FBQztRQUNiLElBQUksQ0FBQztZQUNILEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVFLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9FLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pGLENBQUU7UUFBQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1gsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLDZDQUFxQixJQUFJLENBQUMsWUFBWSwwQ0FBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQ0QsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO1FBRUQsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNmLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ2hCLEtBQUssQ0FBQztnQkFDUixLQUFLLENBQUM7b0JBQ0osR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbEIsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDdEIsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFCLEtBQUssQ0FBQztnQkFDUixLQUFLLENBQUM7b0JBQ0osR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDbEMsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLEtBQUssQ0FBQztnQkFDUixLQUFLLENBQUM7b0JBQ0osR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDMUMsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUMsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQztvQkFDSixHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xELEtBQUssQ0FBQztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDdEQsS0FBSyxDQUFDO2dCQUNSLEtBQUssRUFBRTtvQkFDTCxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDM0QsS0FBSyxDQUFDO2dCQUNSLEtBQUssRUFBRTtvQkFDTCxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2hFLEtBQUssQ0FBQztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDckUsS0FBSyxDQUFDO2dCQUNSLEtBQUssRUFBRTtvQkFDTCxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDMUUsS0FBSyxDQUFDO2dCQUNSLEtBQUssRUFBRTtvQkFDTCxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQy9FLEtBQUssQ0FBQztnQkFDUixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFF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QUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwLCBNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UHJvdmlkZXIsIFByb3ZpZGVyQnVpbGRlciwgcHJvdmlkZX0gZnJvbSAnLi9wcm92aWRlcic7XG5pbXBvcnQge1xuICBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcixcbiAgUmVmbGVjdGl2ZURlcGVuZGVuY3ksXG4gIFJlc29sdmVkUmVmbGVjdGl2ZUZhY3RvcnksXG4gIHJlc29sdmVSZWZsZWN0aXZlUHJvdmlkZXJzXG59IGZyb20gJy4vcmVmbGVjdGl2ZV9wcm92aWRlcic7XG5pbXBvcnQge1xuICBBYnN0cmFjdFByb3ZpZGVyRXJyb3IsXG4gIE5vUHJvdmlkZXJFcnJvcixcbiAgQ3ljbGljRGVwZW5kZW5jeUVycm9yLFxuICBJbnN0YW50aWF0aW9uRXJyb3IsXG4gIEludmFsaWRQcm92aWRlckVycm9yLFxuICBPdXRPZkJvdW5kc0Vycm9yXG59IGZyb20gJy4vcmVmbGVjdGl2ZV9leGNlcHRpb25zJztcbmltcG9ydCB7VHlwZSwgQ09OU1RfRVhQUiwgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCB1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtSZWZsZWN0aXZlS2V5fSBmcm9tICcuL3JlZmxlY3RpdmVfa2V5JztcbmltcG9ydCB7U2VsZk1ldGFkYXRhLCBIb3N0TWV0YWRhdGEsIFNraXBTZWxmTWV0YWRhdGF9IGZyb20gJy4vbWV0YWRhdGEnO1xuaW1wb3J0IHtJbmplY3RvciwgVEhST1dfSUZfTk9UX0ZPVU5EfSBmcm9tICcuL2luamVjdG9yJztcblxudmFyIF9fdW51c2VkOiBUeXBlOyAgLy8gYXZvaWQgdW51c2VkIGltcG9ydCB3aGVuIFR5cGUgdW5pb24gdHlwZXMgYXJlIGVyYXNlZFxuXG4vLyBUaHJlc2hvbGQgZm9yIHRoZSBkeW5hbWljIHZlcnNpb25cbmNvbnN0IF9NQVhfQ09OU1RSVUNUSU9OX0NPVU5URVIgPSAxMDtcbmNvbnN0IFVOREVGSU5FRCA9IENPTlNUX0VYUFIobmV3IE9iamVjdCgpKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWZsZWN0aXZlUHJvdG9JbmplY3RvclN0cmF0ZWd5IHtcbiAgZ2V0UHJvdmlkZXJBdEluZGV4KGluZGV4OiBudW1iZXIpOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcjtcbiAgY3JlYXRlSW5qZWN0b3JTdHJhdGVneShpbmo6IFJlZmxlY3RpdmVJbmplY3Rvcl8pOiBSZWZsZWN0aXZlSW5qZWN0b3JTdHJhdGVneTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlZmxlY3RpdmVQcm90b0luamVjdG9ySW5saW5lU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZsZWN0aXZlUHJvdG9JbmplY3RvclN0cmF0ZWd5IHtcbiAgcHJvdmlkZXIwOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlciA9IG51bGw7XG4gIHByb3ZpZGVyMTogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIgPSBudWxsO1xuICBwcm92aWRlcjI6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXIzOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlciA9IG51bGw7XG4gIHByb3ZpZGVyNDogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIgPSBudWxsO1xuICBwcm92aWRlcjU6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI2OiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlciA9IG51bGw7XG4gIHByb3ZpZGVyNzogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIgPSBudWxsO1xuICBwcm92aWRlcjg6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI5OiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlciA9IG51bGw7XG5cbiAga2V5SWQwOiBudW1iZXIgPSBudWxsO1xuICBrZXlJZDE6IG51bWJlciA9IG51bGw7XG4gIGtleUlkMjogbnVtYmVyID0gbnVsbDtcbiAga2V5SWQzOiBudW1iZXIgPSBudWxsO1xuICBrZXlJZDQ6IG51bWJlciA9IG51bGw7XG4gIGtleUlkNTogbnVtYmVyID0gbnVsbDtcbiAga2V5SWQ2OiBudW1iZXIgPSBudWxsO1xuICBrZXlJZDc6IG51bWJlciA9IG51bGw7XG4gIGtleUlkODogbnVtYmVyID0gbnVsbDtcbiAga2V5SWQ5OiBudW1iZXIgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RvRUk6IFJlZmxlY3RpdmVQcm90b0luamVjdG9yLCBwcm92aWRlcnM6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyW10pIHtcbiAgICB2YXIgbGVuZ3RoID0gcHJvdmlkZXJzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb3ZpZGVyMCA9IHByb3ZpZGVyc1swXTtcbiAgICAgIHRoaXMua2V5SWQwID0gcHJvdmlkZXJzWzBdLmtleS5pZDtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMucHJvdmlkZXIxID0gcHJvdmlkZXJzWzFdO1xuICAgICAgdGhpcy5rZXlJZDEgPSBwcm92aWRlcnNbMV0ua2V5LmlkO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gMikge1xuICAgICAgdGhpcy5wcm92aWRlcjIgPSBwcm92aWRlcnNbMl07XG4gICAgICB0aGlzLmtleUlkMiA9IHByb3ZpZGVyc1syXS5rZXkuaWQ7XG4gICAgfVxuICAgIGlmIChsZW5ndGggPiAzKSB7XG4gICAgICB0aGlzLnByb3ZpZGVyMyA9IHByb3ZpZGVyc1szXTtcbiAgICAgIHRoaXMua2V5SWQzID0gcHJvdmlkZXJzWzNdLmtleS5pZDtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCA+IDQpIHtcbiAgICAgIHRoaXMucHJvdmlkZXI0ID0gcHJvdmlkZXJzWzRdO1xuICAgICAgdGhpcy5rZXlJZDQgPSBwcm92aWRlcnNbNF0ua2V5LmlkO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gNSkge1xuICAgICAgdGhpcy5wcm92aWRlcjUgPSBwcm92aWRlcnNbNV07XG4gICAgICB0aGlzLmtleUlkNSA9IHByb3ZpZGVyc1s1XS5rZXkuaWQ7XG4gICAgfVxuICAgIGlmIChsZW5ndGggPiA2KSB7XG4gICAgICB0aGlzLnByb3ZpZGVyNiA9IHByb3ZpZGVyc1s2XTtcbiAgICAgIHRoaXMua2V5SWQ2ID0gcHJvdmlkZXJzWzZdLmtleS5pZDtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCA+IDcpIHtcbiAgICAgIHRoaXMucHJvdmlkZXI3ID0gcHJvdmlkZXJzWzddO1xuICAgICAgdGhpcy5rZXlJZDcgPSBwcm92aWRlcnNbN10ua2V5LmlkO1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gOCkge1xuICAgICAgdGhpcy5wcm92aWRlcjggPSBwcm92aWRlcnNbOF07XG4gICAgICB0aGlzLmtleUlkOCA9IHByb3ZpZGVyc1s4XS5rZXkuaWQ7XG4gICAgfVxuICAgIGlmIChsZW5ndGggPiA5KSB7XG4gICAgICB0aGlzLnByb3ZpZGVyOSA9IHByb3ZpZGVyc1s5XTtcbiAgICAgIHRoaXMua2V5SWQ5ID0gcHJvdmlkZXJzWzldLmtleS5pZDtcbiAgICB9XG4gIH1cblxuICBnZXRQcm92aWRlckF0SW5kZXgoaW5kZXg6IG51bWJlcik6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyIHtcbiAgICBpZiAoaW5kZXggPT0gMCkgcmV0dXJuIHRoaXMucHJvdmlkZXIwO1xuICAgIGlmIChpbmRleCA9PSAxKSByZXR1cm4gdGhpcy5wcm92aWRlcjE7XG4gICAgaWYgKGluZGV4ID09IDIpIHJldHVybiB0aGlzLnByb3ZpZGVyMjtcbiAgICBpZiAoaW5kZXggPT0gMykgcmV0dXJuIHRoaXMucHJvdmlkZXIzO1xuICAgIGlmIChpbmRleCA9PSA0KSByZXR1cm4gdGhpcy5wcm92aWRlcjQ7XG4gICAgaWYgKGluZGV4ID09IDUpIHJldHVybiB0aGlzLnByb3ZpZGVyNTtcbiAgICBpZiAoaW5kZXggPT0gNikgcmV0dXJuIHRoaXMucHJvdmlkZXI2O1xuICAgIGlmIChpbmRleCA9PSA3KSByZXR1cm4gdGhpcy5wcm92aWRlcjc7XG4gICAgaWYgKGluZGV4ID09IDgpIHJldHVybiB0aGlzLnByb3ZpZGVyODtcbiAgICBpZiAoaW5kZXggPT0gOSkgcmV0dXJuIHRoaXMucHJvdmlkZXI5O1xuICAgIHRocm93IG5ldyBPdXRPZkJvdW5kc0Vycm9yKGluZGV4KTtcbiAgfVxuXG4gIGNyZWF0ZUluamVjdG9yU3RyYXRlZ3koaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvcl8pOiBSZWZsZWN0aXZlSW5qZWN0b3JTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBSZWZsZWN0aXZlSW5qZWN0b3JJbmxpbmVTdHJhdGVneShpbmplY3RvciwgdGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZmxlY3RpdmVQcm90b0luamVjdG9yRHluYW1pY1N0cmF0ZWd5IGltcGxlbWVudHMgUmVmbGVjdGl2ZVByb3RvSW5qZWN0b3JTdHJhdGVneSB7XG4gIGtleUlkczogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IocHJvdG9Jbmo6IFJlZmxlY3RpdmVQcm90b0luamVjdG9yLCBwdWJsaWMgcHJvdmlkZXJzOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcltdKSB7XG4gICAgdmFyIGxlbiA9IHByb3ZpZGVycy5sZW5ndGg7XG5cbiAgICB0aGlzLmtleUlkcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShsZW4pO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgdGhpcy5rZXlJZHNbaV0gPSBwcm92aWRlcnNbaV0ua2V5LmlkO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3ZpZGVyQXRJbmRleChpbmRleDogbnVtYmVyKTogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5wcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgT3V0T2ZCb3VuZHNFcnJvcihpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3ZpZGVyc1tpbmRleF07XG4gIH1cblxuICBjcmVhdGVJbmplY3RvclN0cmF0ZWd5KGVpOiBSZWZsZWN0aXZlSW5qZWN0b3JfKTogUmVmbGVjdGl2ZUluamVjdG9yU3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgUmVmbGVjdGl2ZUluamVjdG9yRHluYW1pY1N0cmF0ZWd5KHRoaXMsIGVpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVmbGVjdGl2ZVByb3RvSW5qZWN0b3Ige1xuICBzdGF0aWMgZnJvbVJlc29sdmVkUHJvdmlkZXJzKHByb3ZpZGVyczogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXJbXSk6IFJlZmxlY3RpdmVQcm90b0luamVjdG9yIHtcbiAgICByZXR1cm4gbmV3IFJlZmxlY3RpdmVQcm90b0luamVjdG9yKHByb3ZpZGVycyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9zdHJhdGVneTogUmVmbGVjdGl2ZVByb3RvSW5qZWN0b3JTdHJhdGVneTtcbiAgbnVtYmVyT2ZQcm92aWRlcnM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcm92aWRlcnM6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyW10pIHtcbiAgICB0aGlzLm51bWJlck9mUHJvdmlkZXJzID0gcHJvdmlkZXJzLmxlbmd0aDtcbiAgICB0aGlzLl9zdHJhdGVneSA9IHByb3ZpZGVycy5sZW5ndGggPiBfTUFYX0NPTlNUUlVDVElPTl9DT1VOVEVSID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVmbGVjdGl2ZVByb3RvSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3kodGhpcywgcHJvdmlkZXJzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJlZmxlY3RpdmVQcm90b0luamVjdG9ySW5saW5lU3RyYXRlZ3kodGhpcywgcHJvdmlkZXJzKTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyQXRJbmRleChpbmRleDogbnVtYmVyKTogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIge1xuICAgIHJldHVybiB0aGlzLl9zdHJhdGVneS5nZXRQcm92aWRlckF0SW5kZXgoaW5kZXgpO1xuICB9XG59XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmxlY3RpdmVJbmplY3RvclN0cmF0ZWd5IHtcbiAgZ2V0T2JqQnlLZXlJZChrZXlJZDogbnVtYmVyKTogYW55O1xuICBnZXRPYmpBdEluZGV4KGluZGV4OiBudW1iZXIpOiBhbnk7XG4gIGdldE1heE51bWJlck9mT2JqZWN0cygpOiBudW1iZXI7XG5cbiAgcmVzZXRDb25zdHJ1Y3Rpb25Db3VudGVyKCk6IHZvaWQ7XG4gIGluc3RhbnRpYXRlUHJvdmlkZXIocHJvdmlkZXI6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyKTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgUmVmbGVjdGl2ZUluamVjdG9ySW5saW5lU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZsZWN0aXZlSW5qZWN0b3JTdHJhdGVneSB7XG4gIG9iajA6IGFueSA9IFVOREVGSU5FRDtcbiAgb2JqMTogYW55ID0gVU5ERUZJTkVEO1xuICBvYmoyOiBhbnkgPSBVTkRFRklORUQ7XG4gIG9iajM6IGFueSA9IFVOREVGSU5FRDtcbiAgb2JqNDogYW55ID0gVU5ERUZJTkVEO1xuICBvYmo1OiBhbnkgPSBVTkRFRklORUQ7XG4gIG9iajY6IGFueSA9IFVOREVGSU5FRDtcbiAgb2JqNzogYW55ID0gVU5ERUZJTkVEO1xuICBvYmo4OiBhbnkgPSBVTkRFRklORUQ7XG4gIG9iajk6IGFueSA9IFVOREVGSU5FRDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvcl8sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm90b1N0cmF0ZWd5OiBSZWZsZWN0aXZlUHJvdG9JbmplY3RvcklubGluZVN0cmF0ZWd5KSB7fVxuXG4gIHJlc2V0Q29uc3RydWN0aW9uQ291bnRlcigpOiB2b2lkIHsgdGhpcy5pbmplY3Rvci5fY29uc3RydWN0aW9uQ291bnRlciA9IDA7IH1cblxuICBpbnN0YW50aWF0ZVByb3ZpZGVyKHByb3ZpZGVyOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuX25ldyhwcm92aWRlcik7XG4gIH1cblxuICBnZXRPYmpCeUtleUlkKGtleUlkOiBudW1iZXIpOiBhbnkge1xuICAgIHZhciBwID0gdGhpcy5wcm90b1N0cmF0ZWd5O1xuICAgIHZhciBpbmogPSB0aGlzLmluamVjdG9yO1xuXG4gICAgaWYgKHAua2V5SWQwID09PSBrZXlJZCkge1xuICAgICAgaWYgKHRoaXMub2JqMCA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqMCA9IGluai5fbmV3KHAucHJvdmlkZXIwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajA7XG4gICAgfVxuICAgIGlmIChwLmtleUlkMSA9PT0ga2V5SWQpIHtcbiAgICAgIGlmICh0aGlzLm9iajEgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajEgPSBpbmouX25ldyhwLnByb3ZpZGVyMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmoxO1xuICAgIH1cbiAgICBpZiAocC5rZXlJZDIgPT09IGtleUlkKSB7XG4gICAgICBpZiAodGhpcy5vYmoyID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5vYmoyID0gaW5qLl9uZXcocC5wcm92aWRlcjIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub2JqMjtcbiAgICB9XG4gICAgaWYgKHAua2V5SWQzID09PSBrZXlJZCkge1xuICAgICAgaWYgKHRoaXMub2JqMyA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqMyA9IGluai5fbmV3KHAucHJvdmlkZXIzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajM7XG4gICAgfVxuICAgIGlmIChwLmtleUlkNCA9PT0ga2V5SWQpIHtcbiAgICAgIGlmICh0aGlzLm9iajQgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajQgPSBpbmouX25ldyhwLnByb3ZpZGVyNCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmo0O1xuICAgIH1cbiAgICBpZiAocC5rZXlJZDUgPT09IGtleUlkKSB7XG4gICAgICBpZiAodGhpcy5vYmo1ID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5vYmo1ID0gaW5qLl9uZXcocC5wcm92aWRlcjUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub2JqNTtcbiAgICB9XG4gICAgaWYgKHAua2V5SWQ2ID09PSBrZXlJZCkge1xuICAgICAgaWYgKHRoaXMub2JqNiA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqNiA9IGluai5fbmV3KHAucHJvdmlkZXI2KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajY7XG4gICAgfVxuICAgIGlmIChwLmtleUlkNyA9PT0ga2V5SWQpIHtcbiAgICAgIGlmICh0aGlzLm9iajcgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajcgPSBpbmouX25ldyhwLnByb3ZpZGVyNyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmo3O1xuICAgIH1cbiAgICBpZiAocC5rZXlJZDggPT09IGtleUlkKSB7XG4gICAgICBpZiAodGhpcy5vYmo4ID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5vYmo4ID0gaW5qLl9uZXcocC5wcm92aWRlcjgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub2JqODtcbiAgICB9XG4gICAgaWYgKHAua2V5SWQ5ID09PSBrZXlJZCkge1xuICAgICAgaWYgKHRoaXMub2JqOSA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqOSA9IGluai5fbmV3KHAucHJvdmlkZXI5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFVOREVGSU5FRDtcbiAgfVxuXG4gIGdldE9iakF0SW5kZXgoaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgaWYgKGluZGV4ID09IDApIHJldHVybiB0aGlzLm9iajA7XG4gICAgaWYgKGluZGV4ID09IDEpIHJldHVybiB0aGlzLm9iajE7XG4gICAgaWYgKGluZGV4ID09IDIpIHJldHVybiB0aGlzLm9iajI7XG4gICAgaWYgKGluZGV4ID09IDMpIHJldHVybiB0aGlzLm9iajM7XG4gICAgaWYgKGluZGV4ID09IDQpIHJldHVybiB0aGlzLm9iajQ7XG4gICAgaWYgKGluZGV4ID09IDUpIHJldHVybiB0aGlzLm9iajU7XG4gICAgaWYgKGluZGV4ID09IDYpIHJldHVybiB0aGlzLm9iajY7XG4gICAgaWYgKGluZGV4ID09IDcpIHJldHVybiB0aGlzLm9iajc7XG4gICAgaWYgKGluZGV4ID09IDgpIHJldHVybiB0aGlzLm9iajg7XG4gICAgaWYgKGluZGV4ID09IDkpIHJldHVybiB0aGlzLm9iajk7XG4gICAgdGhyb3cgbmV3IE91dE9mQm91bmRzRXJyb3IoaW5kZXgpO1xuICB9XG5cbiAgZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCk6IG51bWJlciB7IHJldHVybiBfTUFYX0NPTlNUUlVDVElPTl9DT1VOVEVSOyB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlZmxlY3RpdmVJbmplY3RvckR5bmFtaWNTdHJhdGVneSBpbXBsZW1lbnRzIFJlZmxlY3RpdmVJbmplY3RvclN0cmF0ZWd5IHtcbiAgb2JqczogYW55W107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb3RvU3RyYXRlZ3k6IFJlZmxlY3RpdmVQcm90b0luamVjdG9yRHluYW1pY1N0cmF0ZWd5LFxuICAgICAgICAgICAgICBwdWJsaWMgaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvcl8pIHtcbiAgICB0aGlzLm9ianMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUocHJvdG9TdHJhdGVneS5wcm92aWRlcnMubGVuZ3RoKTtcbiAgICBMaXN0V3JhcHBlci5maWxsKHRoaXMub2JqcywgVU5ERUZJTkVEKTtcbiAgfVxuXG4gIHJlc2V0Q29uc3RydWN0aW9uQ291bnRlcigpOiB2b2lkIHsgdGhpcy5pbmplY3Rvci5fY29uc3RydWN0aW9uQ291bnRlciA9IDA7IH1cblxuICBpbnN0YW50aWF0ZVByb3ZpZGVyKHByb3ZpZGVyOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuX25ldyhwcm92aWRlcik7XG4gIH1cblxuICBnZXRPYmpCeUtleUlkKGtleUlkOiBudW1iZXIpOiBhbnkge1xuICAgIHZhciBwID0gdGhpcy5wcm90b1N0cmF0ZWd5O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmtleUlkcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHAua2V5SWRzW2ldID09PSBrZXlJZCkge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgICB0aGlzLm9ianNbaV0gPSB0aGlzLmluamVjdG9yLl9uZXcocC5wcm92aWRlcnNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub2Jqc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gVU5ERUZJTkVEO1xuICB9XG5cbiAgZ2V0T2JqQXRJbmRleChpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMub2Jqcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBPdXRPZkJvdW5kc0Vycm9yKGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vYmpzW2luZGV4XTtcbiAgfVxuXG4gIGdldE1heE51bWJlck9mT2JqZWN0cygpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5vYmpzLmxlbmd0aDsgfVxufVxuXG4vKipcbiAqIEEgUmVmbGVjdGl2ZURlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRhaW5lciB1c2VkIGZvciBpbnN0YW50aWF0aW5nIG9iamVjdHMgYW5kIHJlc29sdmluZ1xuICogZGVwZW5kZW5jaWVzLlxuICpcbiAqIEFuIGBJbmplY3RvcmAgaXMgYSByZXBsYWNlbWVudCBmb3IgYSBgbmV3YCBvcGVyYXRvciwgd2hpY2ggY2FuIGF1dG9tYXRpY2FsbHkgcmVzb2x2ZSB0aGVcbiAqIGNvbnN0cnVjdG9yIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBJbiB0eXBpY2FsIHVzZSwgYXBwbGljYXRpb24gY29kZSBhc2tzIGZvciB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBjb25zdHJ1Y3RvciBhbmQgdGhleSBhcmVcbiAqIHJlc29sdmVkIGJ5IHRoZSBgSW5qZWN0b3JgLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9qemplYzA/cD1wcmV2aWV3KSlcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhbiBgSW5qZWN0b3JgIGNvbmZpZ3VyZWQgdG8gY3JlYXRlIGBFbmdpbmVgIGFuZCBgQ2FyYC5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBFbmdpbmUge1xuICogfVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIENhciB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmdpbmU6RW5naW5lKSB7fVxuICogfVxuICpcbiAqIHZhciBpbmplY3RvciA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtDYXIsIEVuZ2luZV0pO1xuICogdmFyIGNhciA9IGluamVjdG9yLmdldChDYXIpO1xuICogZXhwZWN0KGNhciBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAqIGV4cGVjdChjYXIuZW5naW5lIGluc3RhbmNlb2YgRW5naW5lKS50b0JlKHRydWUpO1xuICogYGBgXG4gKlxuICogTm90aWNlLCB3ZSBkb24ndCB1c2UgdGhlIGBuZXdgIG9wZXJhdG9yIGJlY2F1c2Ugd2UgZXhwbGljaXRseSB3YW50IHRvIGhhdmUgdGhlIGBJbmplY3RvcmBcbiAqIHJlc29sdmUgYWxsIG9mIHRoZSBvYmplY3QncyBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlZmxlY3RpdmVJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcbiAgLyoqXG4gICAqIFR1cm5zIGFuIGFycmF5IG9mIHByb3ZpZGVyIGRlZmluaXRpb25zIGludG8gYW4gYXJyYXkgb2YgcmVzb2x2ZWQgcHJvdmlkZXJzLlxuICAgKlxuICAgKiBBIHJlc29sdXRpb24gaXMgYSBwcm9jZXNzIG9mIGZsYXR0ZW5pbmcgbXVsdGlwbGUgbmVzdGVkIGFycmF5cyBhbmQgY29udmVydGluZyBpbmRpdmlkdWFsXG4gICAqIHByb3ZpZGVycyBpbnRvIGFuIGFycmF5IG9mIHtAbGluayBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcn1zLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvQWlYVEhpP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogQEluamVjdGFibGUoKVxuICAgKiBjbGFzcyBFbmdpbmUge1xuICAgKiB9XG4gICAqXG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgQ2FyIHtcbiAgICogICBjb25zdHJ1Y3RvcihwdWJsaWMgZW5naW5lOkVuZ2luZSkge31cbiAgICogfVxuICAgKlxuICAgKiB2YXIgcHJvdmlkZXJzID0gUmVmbGVjdGl2ZUluamVjdG9yLnJlc29sdmUoW0NhciwgW1tFbmdpbmVdXV0pO1xuICAgKlxuICAgKiBleHBlY3QocHJvdmlkZXJzLmxlbmd0aCkudG9FcXVhbCgyKTtcbiAgICpcbiAgICogZXhwZWN0KHByb3ZpZGVyc1swXSBpbnN0YW5jZW9mIFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyKS50b0JlKHRydWUpO1xuICAgKiBleHBlY3QocHJvdmlkZXJzWzBdLmtleS5kaXNwbGF5TmFtZSkudG9CZShcIkNhclwiKTtcbiAgICogZXhwZWN0KHByb3ZpZGVyc1swXS5kZXBlbmRlbmNpZXMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgKiBleHBlY3QocHJvdmlkZXJzWzBdLmZhY3RvcnkpLnRvQmVEZWZpbmVkKCk7XG4gICAqXG4gICAqIGV4cGVjdChwcm92aWRlcnNbMV0ua2V5LmRpc3BsYXlOYW1lKS50b0JlKFwiRW5naW5lXCIpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgUmVmbGVjdGl2ZUluamVjdG9yI2Zyb21SZXNvbHZlZFByb3ZpZGVyc30gZm9yIG1vcmUgaW5mby5cbiAgICovXG4gIHN0YXRpYyByZXNvbHZlKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+KTogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIHJlc29sdmVSZWZsZWN0aXZlUHJvdmlkZXJzKHByb3ZpZGVycyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYW4gYXJyYXkgb2YgcHJvdmlkZXJzIGFuZCBjcmVhdGVzIGFuIGluamVjdG9yIGZyb20gdGhvc2UgcHJvdmlkZXJzLlxuICAgKlxuICAgKiBUaGUgcGFzc2VkLWluIHByb3ZpZGVycyBjYW4gYmUgYW4gYXJyYXkgb2YgYFR5cGVgLCB7QGxpbmsgUHJvdmlkZXJ9LFxuICAgKiBvciBhIHJlY3Vyc2l2ZSBhcnJheSBvZiBtb3JlIHByb3ZpZGVycy5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2VQT2NjQT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgRW5naW5lIHtcbiAgICogfVxuICAgKlxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIENhciB7XG4gICAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTpFbmdpbmUpIHt9XG4gICAqIH1cbiAgICpcbiAgICogdmFyIGluamVjdG9yID0gUmVmbGVjdGl2ZUluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0NhciwgRW5naW5lXSk7XG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoQ2FyKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICogYGBgXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgc2xvd2VyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgYGZyb21SZXNvbHZlZFByb3ZpZGVyc2BcbiAgICogYmVjYXVzZSBpdCBuZWVkcyB0byByZXNvbHZlIHRoZSBwYXNzZWQtaW4gcHJvdmlkZXJzIGZpcnN0LlxuICAgKiBTZWUge0BsaW5rIEluamVjdG9yI3Jlc29sdmV9IGFuZCB7QGxpbmsgSW5qZWN0b3IjZnJvbVJlc29sdmVkUHJvdmlkZXJzfS5cbiAgICovXG4gIHN0YXRpYyByZXNvbHZlQW5kQ3JlYXRlKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IEluamVjdG9yID0gbnVsbCk6IFJlZmxlY3RpdmVJbmplY3RvciB7XG4gICAgdmFyIFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVycyA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlKHByb3ZpZGVycyk7XG4gICAgcmV0dXJuIFJlZmxlY3RpdmVJbmplY3Rvci5mcm9tUmVzb2x2ZWRQcm92aWRlcnMoUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXJzLCBwYXJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5qZWN0b3IgZnJvbSBwcmV2aW91c2x5IHJlc29sdmVkIHByb3ZpZGVycy5cbiAgICpcbiAgICogVGhpcyBBUEkgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBjb25zdHJ1Y3QgaW5qZWN0b3JzIGluIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBwYXJ0cy5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0tyU01jaT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgRW5naW5lIHtcbiAgICogfVxuICAgKlxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIENhciB7XG4gICAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTpFbmdpbmUpIHt9XG4gICAqIH1cbiAgICpcbiAgICogdmFyIHByb3ZpZGVycyA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlKFtDYXIsIEVuZ2luZV0pO1xuICAgKiB2YXIgaW5qZWN0b3IgPSBSZWZsZWN0aXZlSW5qZWN0b3IuZnJvbVJlc29sdmVkUHJvdmlkZXJzKHByb3ZpZGVycyk7XG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoQ2FyKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc29sdmVkUHJvdmlkZXJzKHByb3ZpZGVyczogUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXJbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IEluamVjdG9yID0gbnVsbCk6IFJlZmxlY3RpdmVJbmplY3RvciB7XG4gICAgcmV0dXJuIG5ldyBSZWZsZWN0aXZlSW5qZWN0b3JfKFJlZmxlY3RpdmVQcm90b0luamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhwcm92aWRlcnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc29sdmVkQmluZGluZ3MocHJvdmlkZXJzOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcltdKTogUmVmbGVjdGl2ZUluamVjdG9yIHtcbiAgICByZXR1cm4gUmVmbGVjdGl2ZUluamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhwcm92aWRlcnMpO1xuICB9XG5cblxuICAvKipcbiAgICogUGFyZW50IG9mIHRoaXMgaW5qZWN0b3IuXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byB0aGUgc2VjdGlvbiBvZiB0aGUgdXNlciBndWlkZSB0YWxraW5nIGFib3V0IGhpZXJhcmNoaWNhbCBpbmplY3Rpb24uXG4gICAqIC0tPlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvZW9zTUdvP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIHBhcmVudCA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtdKTtcbiAgICogdmFyIGNoaWxkID0gcGFyZW50LnJlc29sdmVBbmRDcmVhdGVDaGlsZChbXSk7XG4gICAqIGV4cGVjdChjaGlsZC5wYXJlbnQpLnRvQmUocGFyZW50KTtcbiAgICogYGBgXG4gICAqL1xuICBnZXQgcGFyZW50KCk6IEluamVjdG9yIHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxuXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGVidWdDb250ZXh0KCk6IGFueSB7IHJldHVybiBudWxsOyB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGFycmF5IG9mIHByb3ZpZGVycyBhbmQgY3JlYXRlcyBhIGNoaWxkIGluamVjdG9yIGZyb20gdGhvc2UgcHJvdmlkZXJzLlxuICAgKlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpbmsgdG8gdGhlIHNlY3Rpb24gb2YgdGhlIHVzZXIgZ3VpZGUgdGFsa2luZyBhYm91dCBoaWVyYXJjaGljYWwgaW5qZWN0aW9uLlxuICAgKiAtLT5cbiAgICpcbiAgICogVGhlIHBhc3NlZC1pbiBwcm92aWRlcnMgY2FuIGJlIGFuIGFycmF5IG9mIGBUeXBlYCwge0BsaW5rIFByb3ZpZGVyfSxcbiAgICogb3IgYSByZWN1cnNpdmUgYXJyYXkgb2YgbW9yZSBwcm92aWRlcnMuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9vcEIzVDQ/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBQYXJlbnRQcm92aWRlciB7fVxuICAgKiBjbGFzcyBDaGlsZFByb3ZpZGVyIHt9XG4gICAqXG4gICAqIHZhciBwYXJlbnQgPSBSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbUGFyZW50UHJvdmlkZXJdKTtcbiAgICogdmFyIGNoaWxkID0gcGFyZW50LnJlc29sdmVBbmRDcmVhdGVDaGlsZChbQ2hpbGRQcm92aWRlcl0pO1xuICAgKlxuICAgKiBleHBlY3QoY2hpbGQuZ2V0KFBhcmVudFByb3ZpZGVyKSBpbnN0YW5jZW9mIFBhcmVudFByb3ZpZGVyKS50b0JlKHRydWUpO1xuICAgKiBleHBlY3QoY2hpbGQuZ2V0KENoaWxkUHJvdmlkZXIpIGluc3RhbmNlb2YgQ2hpbGRQcm92aWRlcikudG9CZSh0cnVlKTtcbiAgICogZXhwZWN0KGNoaWxkLmdldChQYXJlbnRQcm92aWRlcikpLnRvQmUocGFyZW50LmdldChQYXJlbnRQcm92aWRlcikpO1xuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBzbG93ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBgY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWRgXG4gICAqIGJlY2F1c2UgaXQgbmVlZHMgdG8gcmVzb2x2ZSB0aGUgcGFzc2VkLWluIHByb3ZpZGVycyBmaXJzdC5cbiAgICogU2VlIHtAbGluayBJbmplY3RvciNyZXNvbHZlfSBhbmQge0BsaW5rIEluamVjdG9yI2NyZWF0ZUNoaWxkRnJvbVJlc29sdmVkfS5cbiAgICovXG4gIHJlc29sdmVBbmRDcmVhdGVDaGlsZChwcm92aWRlcnM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFJlZmxlY3RpdmVJbmplY3RvciB7XG4gICAgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY2hpbGQgaW5qZWN0b3IgZnJvbSBwcmV2aW91c2x5IHJlc29sdmVkIHByb3ZpZGVycy5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaW5rIHRvIHRoZSBzZWN0aW9uIG9mIHRoZSB1c2VyIGd1aWRlIHRhbGtpbmcgYWJvdXQgaGllcmFyY2hpY2FsIGluamVjdGlvbi5cbiAgICogLS0+XG4gICAqXG4gICAqIFRoaXMgQVBJIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY29uc3RydWN0IGluamVjdG9ycyBpbiBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgcGFydHMuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9WaHlmak4/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBQYXJlbnRQcm92aWRlciB7fVxuICAgKiBjbGFzcyBDaGlsZFByb3ZpZGVyIHt9XG4gICAqXG4gICAqIHZhciBwYXJlbnRQcm92aWRlcnMgPSBSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZShbUGFyZW50UHJvdmlkZXJdKTtcbiAgICogdmFyIGNoaWxkUHJvdmlkZXJzID0gUmVmbGVjdGl2ZUluamVjdG9yLnJlc29sdmUoW0NoaWxkUHJvdmlkZXJdKTtcbiAgICpcbiAgICogdmFyIHBhcmVudCA9IFJlZmxlY3RpdmVJbmplY3Rvci5mcm9tUmVzb2x2ZWRQcm92aWRlcnMocGFyZW50UHJvdmlkZXJzKTtcbiAgICogdmFyIGNoaWxkID0gcGFyZW50LmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKGNoaWxkUHJvdmlkZXJzKTtcbiAgICpcbiAgICogZXhwZWN0KGNoaWxkLmdldChQYXJlbnRQcm92aWRlcikgaW5zdGFuY2VvZiBQYXJlbnRQcm92aWRlcikudG9CZSh0cnVlKTtcbiAgICogZXhwZWN0KGNoaWxkLmdldChDaGlsZFByb3ZpZGVyKSBpbnN0YW5jZW9mIENoaWxkUHJvdmlkZXIpLnRvQmUodHJ1ZSk7XG4gICAqIGV4cGVjdChjaGlsZC5nZXQoUGFyZW50UHJvdmlkZXIpKS50b0JlKHBhcmVudC5nZXQoUGFyZW50UHJvdmlkZXIpKTtcbiAgICogYGBgXG4gICAqL1xuICBjcmVhdGVDaGlsZEZyb21SZXNvbHZlZChwcm92aWRlcnM6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyW10pOiBSZWZsZWN0aXZlSW5qZWN0b3Ige1xuICAgIHJldHVybiB1bmltcGxlbWVudGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSBwcm92aWRlciBhbmQgaW5zdGFudGlhdGVzIGFuIG9iamVjdCBpbiB0aGUgY29udGV4dCBvZiB0aGUgaW5qZWN0b3IuXG4gICAqXG4gICAqIFRoZSBjcmVhdGVkIG9iamVjdCBkb2VzIG5vdCBnZXQgY2FjaGVkIGJ5IHRoZSBpbmplY3Rvci5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3l2VlhvQj9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgRW5naW5lIHtcbiAgICogfVxuICAgKlxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIENhciB7XG4gICAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTpFbmdpbmUpIHt9XG4gICAqIH1cbiAgICpcbiAgICogdmFyIGluamVjdG9yID0gUmVmbGVjdGl2ZUluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0VuZ2luZV0pO1xuICAgKlxuICAgKiB2YXIgY2FyID0gaW5qZWN0b3IucmVzb2x2ZUFuZEluc3RhbnRpYXRlKENhcik7XG4gICAqIGV4cGVjdChjYXIuZW5naW5lKS50b0JlKGluamVjdG9yLmdldChFbmdpbmUpKTtcbiAgICogZXhwZWN0KGNhcikubm90LnRvQmUoaW5qZWN0b3IucmVzb2x2ZUFuZEluc3RhbnRpYXRlKENhcikpO1xuICAgKiBgYGBcbiAgICovXG4gIHJlc29sdmVBbmRJbnN0YW50aWF0ZShwcm92aWRlcjogVHlwZSB8IFByb3ZpZGVyKTogYW55IHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZXMgYW4gb2JqZWN0IHVzaW5nIGEgcmVzb2x2ZWQgcHJvdmlkZXIgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluamVjdG9yLlxuICAgKlxuICAgKiBUaGUgY3JlYXRlZCBvYmplY3QgZG9lcyBub3QgZ2V0IGNhY2hlZCBieSB0aGUgaW5qZWN0b3IuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9wdENJbVE/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIEVuZ2luZSB7XG4gICAqIH1cbiAgICpcbiAgICogQEluamVjdGFibGUoKVxuICAgKiBjbGFzcyBDYXIge1xuICAgKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmdpbmU6RW5naW5lKSB7fVxuICAgKiB9XG4gICAqXG4gICAqIHZhciBpbmplY3RvciA9IFJlZmxlY3RpdmVJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtFbmdpbmVdKTtcbiAgICogdmFyIGNhclByb3ZpZGVyID0gUmVmbGVjdGl2ZUluamVjdG9yLnJlc29sdmUoW0Nhcl0pWzBdO1xuICAgKiB2YXIgY2FyID0gaW5qZWN0b3IuaW5zdGFudGlhdGVSZXNvbHZlZChjYXJQcm92aWRlcik7XG4gICAqIGV4cGVjdChjYXIuZW5naW5lKS50b0JlKGluamVjdG9yLmdldChFbmdpbmUpKTtcbiAgICogZXhwZWN0KGNhcikubm90LnRvQmUoaW5qZWN0b3IuaW5zdGFudGlhdGVSZXNvbHZlZChjYXJQcm92aWRlcikpO1xuICAgKiBgYGBcbiAgICovXG4gIGluc3RhbnRpYXRlUmVzb2x2ZWQocHJvdmlkZXI6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyKTogYW55IHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxuXG4gIGFic3RyYWN0IGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgUmVmbGVjdGl2ZUluamVjdG9yXyBpbXBsZW1lbnRzIFJlZmxlY3RpdmVJbmplY3RvciB7XG4gIHByaXZhdGUgX3N0cmF0ZWd5OiBSZWZsZWN0aXZlSW5qZWN0b3JTdHJhdGVneTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY29uc3RydWN0aW9uQ291bnRlcjogbnVtYmVyID0gMDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgX3Byb3RvOiBhbnkgLyogUHJvdG9JbmplY3RvciAqLztcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgX3BhcmVudDogSW5qZWN0b3I7XG4gIC8qKlxuICAgKiBQcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihfcHJvdG86IGFueSAvKiBQcm90b0luamVjdG9yICovLCBfcGFyZW50OiBJbmplY3RvciA9IG51bGwsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RlYnVnQ29udGV4dDogRnVuY3Rpb24gPSBudWxsKSB7XG4gICAgdGhpcy5fcHJvdG8gPSBfcHJvdG87XG4gICAgdGhpcy5fcGFyZW50ID0gX3BhcmVudDtcbiAgICB0aGlzLl9zdHJhdGVneSA9IF9wcm90by5fc3RyYXRlZ3kuY3JlYXRlSW5qZWN0b3JTdHJhdGVneSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRlYnVnQ29udGV4dCgpOiBhbnkgeyByZXR1cm4gdGhpcy5fZGVidWdDb250ZXh0KCk7IH1cblxuICBnZXQodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZTogYW55ID0gVEhST1dfSUZfTk9UX0ZPVU5EKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0QnlLZXkoUmVmbGVjdGl2ZUtleS5nZXQodG9rZW4pLCBudWxsLCBudWxsLCBub3RGb3VuZFZhbHVlKTtcbiAgfVxuXG4gIGdldEF0KGluZGV4OiBudW1iZXIpOiBhbnkgeyByZXR1cm4gdGhpcy5fc3RyYXRlZ3kuZ2V0T2JqQXRJbmRleChpbmRleCk7IH1cblxuICBnZXQgcGFyZW50KCk6IEluamVjdG9yIHsgcmV0dXJuIHRoaXMuX3BhcmVudDsgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwuIERvIG5vdCB1c2UuXG4gICAqIFdlIHJldHVybiBgYW55YCBub3QgdG8gZXhwb3J0IHRoZSBJbmplY3RvclN0cmF0ZWd5IHR5cGUuXG4gICAqL1xuICBnZXQgaW50ZXJuYWxTdHJhdGVneSgpOiBhbnkgeyByZXR1cm4gdGhpcy5fc3RyYXRlZ3k7IH1cblxuICByZXNvbHZlQW5kQ3JlYXRlQ2hpbGQocHJvdmlkZXJzOiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4pOiBSZWZsZWN0aXZlSW5qZWN0b3Ige1xuICAgIHZhciBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcnMgPSBSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZShwcm92aWRlcnMpO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoaWxkRnJvbVJlc29sdmVkKFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVycyk7XG4gIH1cblxuICBjcmVhdGVDaGlsZEZyb21SZXNvbHZlZChwcm92aWRlcnM6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyW10pOiBSZWZsZWN0aXZlSW5qZWN0b3Ige1xuICAgIHZhciBwcm90byA9IG5ldyBSZWZsZWN0aXZlUHJvdG9JbmplY3Rvcihwcm92aWRlcnMpO1xuICAgIHZhciBpbmogPSBuZXcgUmVmbGVjdGl2ZUluamVjdG9yXyhwcm90byk7XG4gICAgaW5qLl9wYXJlbnQgPSB0aGlzO1xuICAgIHJldHVybiBpbmo7XG4gIH1cblxuICByZXNvbHZlQW5kSW5zdGFudGlhdGUocHJvdmlkZXI6IFR5cGUgfCBQcm92aWRlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFudGlhdGVSZXNvbHZlZChSZWZsZWN0aXZlSW5qZWN0b3IucmVzb2x2ZShbcHJvdmlkZXJdKVswXSk7XG4gIH1cblxuICBpbnN0YW50aWF0ZVJlc29sdmVkKHByb3ZpZGVyOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIocHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV3KHByb3ZpZGVyOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcik6IGFueSB7XG4gICAgaWYgKHRoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXIrKyA+IHRoaXMuX3N0cmF0ZWd5LmdldE1heE51bWJlck9mT2JqZWN0cygpKSB7XG4gICAgICB0aHJvdyBuZXcgQ3ljbGljRGVwZW5kZW5jeUVycm9yKHRoaXMsIHByb3ZpZGVyLmtleSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luc3RhbnRpYXRlUHJvdmlkZXIocHJvdmlkZXI6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyKTogYW55IHtcbiAgICBpZiAocHJvdmlkZXIubXVsdGlQcm92aWRlcikge1xuICAgICAgdmFyIHJlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShwcm92aWRlci5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm92aWRlci5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7ICsraSkge1xuICAgICAgICByZXNbaV0gPSB0aGlzLl9pbnN0YW50aWF0ZShwcm92aWRlciwgcHJvdmlkZXIucmVzb2x2ZWRGYWN0b3JpZXNbaV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlKHByb3ZpZGVyLCBwcm92aWRlci5yZXNvbHZlZEZhY3Rvcmllc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5zdGFudGlhdGUocHJvdmlkZXI6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlZFJlZmxlY3RpdmVGYWN0b3J5OiBSZXNvbHZlZFJlZmxlY3RpdmVGYWN0b3J5KTogYW55IHtcbiAgICB2YXIgZmFjdG9yeSA9IFJlc29sdmVkUmVmbGVjdGl2ZUZhY3RvcnkuZmFjdG9yeTtcbiAgICB2YXIgZGVwcyA9IFJlc29sdmVkUmVmbGVjdGl2ZUZhY3RvcnkuZGVwZW5kZW5jaWVzO1xuICAgIHZhciBsZW5ndGggPSBkZXBzLmxlbmd0aDtcblxuICAgIHZhciBkMDogYW55O1xuICAgIHZhciBkMTogYW55O1xuICAgIHZhciBkMjogYW55O1xuICAgIHZhciBkMzogYW55O1xuICAgIHZhciBkNDogYW55O1xuICAgIHZhciBkNTogYW55O1xuICAgIHZhciBkNjogYW55O1xuICAgIHZhciBkNzogYW55O1xuICAgIHZhciBkODogYW55O1xuICAgIHZhciBkOTogYW55O1xuICAgIHZhciBkMTA6IGFueTtcbiAgICB2YXIgZDExOiBhbnk7XG4gICAgdmFyIGQxMjogYW55O1xuICAgIHZhciBkMTM6IGFueTtcbiAgICB2YXIgZDE0OiBhbnk7XG4gICAgdmFyIGQxNTogYW55O1xuICAgIHZhciBkMTY6IGFueTtcbiAgICB2YXIgZDE3OiBhbnk7XG4gICAgdmFyIGQxODogYW55O1xuICAgIHZhciBkMTk6IGFueTtcbiAgICB0cnkge1xuICAgICAgZDAgPSBsZW5ndGggPiAwID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1swXSkgOiBudWxsO1xuICAgICAgZDEgPSBsZW5ndGggPiAxID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1sxXSkgOiBudWxsO1xuICAgICAgZDIgPSBsZW5ndGggPiAyID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1syXSkgOiBudWxsO1xuICAgICAgZDMgPSBsZW5ndGggPiAzID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1szXSkgOiBudWxsO1xuICAgICAgZDQgPSBsZW5ndGggPiA0ID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s0XSkgOiBudWxsO1xuICAgICAgZDUgPSBsZW5ndGggPiA1ID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s1XSkgOiBudWxsO1xuICAgICAgZDYgPSBsZW5ndGggPiA2ID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s2XSkgOiBudWxsO1xuICAgICAgZDcgPSBsZW5ndGggPiA3ID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s3XSkgOiBudWxsO1xuICAgICAgZDggPSBsZW5ndGggPiA4ID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s4XSkgOiBudWxsO1xuICAgICAgZDkgPSBsZW5ndGggPiA5ID8gdGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s5XSkgOiBudWxsO1xuICAgICAgZDEwID0gbGVuZ3RoID4gMTAgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzEwXSkgOiBudWxsO1xuICAgICAgZDExID0gbGVuZ3RoID4gMTEgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzExXSkgOiBudWxsO1xuICAgICAgZDEyID0gbGVuZ3RoID4gMTIgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzEyXSkgOiBudWxsO1xuICAgICAgZDEzID0gbGVuZ3RoID4gMTMgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzEzXSkgOiBudWxsO1xuICAgICAgZDE0ID0gbGVuZ3RoID4gMTQgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE0XSkgOiBudWxsO1xuICAgICAgZDE1ID0gbGVuZ3RoID4gMTUgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE1XSkgOiBudWxsO1xuICAgICAgZDE2ID0gbGVuZ3RoID4gMTYgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE2XSkgOiBudWxsO1xuICAgICAgZDE3ID0gbGVuZ3RoID4gMTcgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE3XSkgOiBudWxsO1xuICAgICAgZDE4ID0gbGVuZ3RoID4gMTggPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE4XSkgOiBudWxsO1xuICAgICAgZDE5ID0gbGVuZ3RoID4gMTkgPyB0aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE5XSkgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgQWJzdHJhY3RQcm92aWRlckVycm9yIHx8IGUgaW5zdGFuY2VvZiBJbnN0YW50aWF0aW9uRXJyb3IpIHtcbiAgICAgICAgZS5hZGRLZXkodGhpcywgcHJvdmlkZXIua2V5KTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFyIG9iajtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyLCBkMTMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyLCBkMTMsIGQxNCwgZDE1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyLCBkMTMsIGQxNCwgZDE1LCBkMTYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0LCBkMTUsIGQxNixcbiAgICAgICAgICAgICAgICAgICAgICAgIGQxNyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4LCBkOSwgZDEwLCBkMTEsIGQxMiwgZDEzLCBkMTQsIGQxNSwgZDE2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZDE3LCBkMTgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0LCBkMTUsIGQxNixcbiAgICAgICAgICAgICAgICAgICAgICAgIGQxNywgZDE4LCBkMTkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgICAgICBgQ2Fubm90IGluc3RhbnRpYXRlICcke3Byb3ZpZGVyLmtleS5kaXNwbGF5TmFtZX0nIGJlY2F1c2UgaXQgaGFzIG1vcmUgdGhhbiAyMCBkZXBlbmRlbmNpZXNgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW5zdGFudGlhdGlvbkVycm9yKHRoaXMsIGUsIGUuc3RhY2ssIHByb3ZpZGVyLmtleSk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIF9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHByb3ZpZGVyOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXA6IFJlZmxlY3RpdmVEZXBlbmRlbmN5KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0QnlLZXkoZGVwLmtleSwgZGVwLmxvd2VyQm91bmRWaXNpYmlsaXR5LCBkZXAudXBwZXJCb3VuZFZpc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC5vcHRpb25hbCA/IG51bGwgOiBUSFJPV19JRl9OT1RfRk9VTkQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QnlLZXkoa2V5OiBSZWZsZWN0aXZlS2V5LCBsb3dlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0LCB1cHBlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0LFxuICAgICAgICAgICAgICAgICAgICBub3RGb3VuZFZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChrZXkgPT09IElOSkVDVE9SX0tFWSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHVwcGVyQm91bmRWaXNpYmlsaXR5IGluc3RhbmNlb2YgU2VsZk1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QnlLZXlTZWxmKGtleSwgbm90Rm91bmRWYWx1ZSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldEJ5S2V5RGVmYXVsdChrZXksIG5vdEZvdW5kVmFsdWUsIGxvd2VyQm91bmRWaXNpYmlsaXR5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF90aHJvd09yTnVsbChrZXk6IFJlZmxlY3RpdmVLZXksIG5vdEZvdW5kVmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKG5vdEZvdW5kVmFsdWUgIT09IFRIUk9XX0lGX05PVF9GT1VORCkge1xuICAgICAgcmV0dXJuIG5vdEZvdW5kVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBOb1Byb3ZpZGVyRXJyb3IodGhpcywga2V5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZXRCeUtleVNlbGYoa2V5OiBSZWZsZWN0aXZlS2V5LCBub3RGb3VuZFZhbHVlOiBhbnkpOiBhbnkge1xuICAgIHZhciBvYmogPSB0aGlzLl9zdHJhdGVneS5nZXRPYmpCeUtleUlkKGtleS5pZCk7XG4gICAgcmV0dXJuIChvYmogIT09IFVOREVGSU5FRCkgPyBvYmogOiB0aGlzLl90aHJvd09yTnVsbChrZXksIG5vdEZvdW5kVmFsdWUpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2V0QnlLZXlEZWZhdWx0KGtleTogUmVmbGVjdGl2ZUtleSwgbm90Rm91bmRWYWx1ZTogYW55LCBsb3dlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0KTogYW55IHtcbiAgICB2YXIgaW5qOiBJbmplY3RvcjtcblxuICAgIGlmIChsb3dlckJvdW5kVmlzaWJpbGl0eSBpbnN0YW5jZW9mIFNraXBTZWxmTWV0YWRhdGEpIHtcbiAgICAgIGluaiA9IHRoaXMuX3BhcmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5qID0gdGhpcztcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5qIGluc3RhbmNlb2YgUmVmbGVjdGl2ZUluamVjdG9yXykge1xuICAgICAgdmFyIGlual8gPSA8UmVmbGVjdGl2ZUluamVjdG9yXz5pbmo7XG4gICAgICB2YXIgb2JqID0gaW5qXy5fc3RyYXRlZ3kuZ2V0T2JqQnlLZXlJZChrZXkuaWQpO1xuICAgICAgaWYgKG9iaiAhPT0gVU5ERUZJTkVEKSByZXR1cm4gb2JqO1xuICAgICAgaW5qID0gaW5qXy5fcGFyZW50O1xuICAgIH1cbiAgICBpZiAoaW5qICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gaW5qLmdldChrZXkudG9rZW4sIG5vdEZvdW5kVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fdGhyb3dPck51bGwoa2V5LCBub3RGb3VuZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFJlZmxlY3RpdmVJbmplY3Rvcihwcm92aWRlcnM6IFske19tYXBQcm92aWRlcnModGhpcywgKGI6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyKSA9PiBgIFwiJHtiLmtleS5kaXNwbGF5TmFtZX1cIiBgKS5qb2luKFwiLCBcIil9XSlgO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZGlzcGxheU5hbWU7IH1cbn1cblxudmFyIElOSkVDVE9SX0tFWSA9IFJlZmxlY3RpdmVLZXkuZ2V0KEluamVjdG9yKTtcblxuZnVuY3Rpb24gX21hcFByb3ZpZGVycyhpbmplY3RvcjogUmVmbGVjdGl2ZUluamVjdG9yXywgZm46IEZ1bmN0aW9uKTogYW55W10ge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5qZWN0b3IuX3Byb3RvLm51bWJlck9mUHJvdmlkZXJzOyArK2kpIHtcbiAgICByZXMucHVzaChmbihpbmplY3Rvci5fcHJvdG8uZ2V0UHJvdmlkZXJBdEluZGV4KGkpKSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require(\"angular2/src/facade/lang\");\r\n/**\r\n * A parameter metadata that specifies a dependency.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/6uHYJK?p=preview))\r\n *\r\n * ```typescript\r\n * class Engine {}\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * engine;\r\n * constructor(@Inject(\"MyEngine\") engine:Engine) {\r\n * this.engine = engine;\r\n * }\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(\"MyEngine\", {useClass: Engine}),\r\n * Car\r\n * ]);\r\n *\r\n * expect(injector.get(Car).engine instanceof Engine).toBe(true);\r\n * ```\r\n *\r\n * When `@Inject()` is not present, {@link Injector} will use the type annotation of the parameter.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * class Engine {}\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine: Engine) {} //same as constructor(@Inject(Engine) engine:Engine)\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Engine, Car]);\r\n * expect(injector.get(Car).engine instanceof Engine).toBe(true);\r\n * ```\r\n */\r\nvar InjectMetadata = (function () {\r\n function InjectMetadata(token) {\r\n this.token = token;\r\n }\r\n InjectMetadata.prototype.toString = function () { return \"@Inject(\" + lang_1.stringify(this.token) + \")\"; };\r\n InjectMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], InjectMetadata);\r\n return InjectMetadata;\r\n}());\r\nexports.InjectMetadata = InjectMetadata;\r\n/**\r\n * A parameter metadata that marks a dependency as optional. {@link Injector} provides `null` if\r\n * the dependency is not found.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/AsryOm?p=preview))\r\n *\r\n * ```typescript\r\n * class Engine {}\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * engine;\r\n * constructor(@Optional() engine:Engine) {\r\n * this.engine = engine;\r\n * }\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Car]);\r\n * expect(injector.get(Car).engine).toBeNull();\r\n * ```\r\n */\r\nvar OptionalMetadata = (function () {\r\n function OptionalMetadata() {\r\n }\r\n OptionalMetadata.prototype.toString = function () { return \"@Optional()\"; };\r\n OptionalMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], OptionalMetadata);\r\n return OptionalMetadata;\r\n}());\r\nexports.OptionalMetadata = OptionalMetadata;\r\n/**\r\n * `DependencyMetadata` is used by the framework to extend DI.\r\n * This is internal to Angular and should not be used directly.\r\n */\r\nvar DependencyMetadata = (function () {\r\n function DependencyMetadata() {\r\n }\r\n Object.defineProperty(DependencyMetadata.prototype, \"token\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DependencyMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], DependencyMetadata);\r\n return DependencyMetadata;\r\n}());\r\nexports.DependencyMetadata = DependencyMetadata;\r\n/**\r\n * A marker metadata that marks a class as available to {@link Injector} for creation.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/Wk4DMQ?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class UsefulService {}\r\n *\r\n * @Injectable()\r\n * class NeedsService {\r\n * constructor(public service:UsefulService) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([NeedsService, UsefulService]);\r\n * expect(injector.get(NeedsService).service instanceof UsefulService).toBe(true);\r\n * ```\r\n * {@link Injector} will throw {@link NoAnnotationError} when trying to instantiate a class that\r\n * does not have `@Injectable` marker, as shown in the example below.\r\n *\r\n * ```typescript\r\n * class UsefulService {}\r\n *\r\n * class NeedsService {\r\n * constructor(public service:UsefulService) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([NeedsService, UsefulService]);\r\n * expect(() => injector.get(NeedsService)).toThrowError();\r\n * ```\r\n */\r\nvar InjectableMetadata = (function () {\r\n function InjectableMetadata() {\r\n }\r\n InjectableMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], InjectableMetadata);\r\n return InjectableMetadata;\r\n}());\r\nexports.InjectableMetadata = InjectableMetadata;\r\n/**\r\n * Specifies that an {@link Injector} should retrieve a dependency only from itself.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/NeagAg?p=preview))\r\n *\r\n * ```typescript\r\n * class Dependency {\r\n * }\r\n *\r\n * @Injectable()\r\n * class NeedsDependency {\r\n * dependency;\r\n * constructor(@Self() dependency:Dependency) {\r\n * this.dependency = dependency;\r\n * }\r\n * }\r\n *\r\n * var inj = Injector.resolveAndCreate([Dependency, NeedsDependency]);\r\n * var nd = inj.get(NeedsDependency);\r\n *\r\n * expect(nd.dependency instanceof Dependency).toBe(true);\r\n *\r\n * var inj = Injector.resolveAndCreate([Dependency]);\r\n * var child = inj.resolveAndCreateChild([NeedsDependency]);\r\n * expect(() => child.get(NeedsDependency)).toThrowError();\r\n * ```\r\n */\r\nvar SelfMetadata = (function () {\r\n function SelfMetadata() {\r\n }\r\n SelfMetadata.prototype.toString = function () { return \"@Self()\"; };\r\n SelfMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], SelfMetadata);\r\n return SelfMetadata;\r\n}());\r\nexports.SelfMetadata = SelfMetadata;\r\n/**\r\n * Specifies that the dependency resolution should start from the parent injector.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/Wchdzb?p=preview))\r\n *\r\n * ```typescript\r\n * class Dependency {\r\n * }\r\n *\r\n * @Injectable()\r\n * class NeedsDependency {\r\n * dependency;\r\n * constructor(@SkipSelf() dependency:Dependency) {\r\n * this.dependency = dependency;\r\n * }\r\n * }\r\n *\r\n * var parent = Injector.resolveAndCreate([Dependency]);\r\n * var child = parent.resolveAndCreateChild([NeedsDependency]);\r\n * expect(child.get(NeedsDependency).dependency instanceof Depedency).toBe(true);\r\n *\r\n * var inj = Injector.resolveAndCreate([Dependency, NeedsDependency]);\r\n * expect(() => inj.get(NeedsDependency)).toThrowError();\r\n * ```\r\n */\r\nvar SkipSelfMetadata = (function () {\r\n function SkipSelfMetadata() {\r\n }\r\n SkipSelfMetadata.prototype.toString = function () { return \"@SkipSelf()\"; };\r\n SkipSelfMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], SkipSelfMetadata);\r\n return SkipSelfMetadata;\r\n}());\r\nexports.SkipSelfMetadata = SkipSelfMetadata;\r\n/**\r\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\r\n * closest host.\r\n *\r\n * In Angular, a component element is automatically declared as a host for all the injectors in\r\n * its view.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/GX79pV?p=preview))\r\n *\r\n * In the following example `App` contains `ParentCmp`, which contains `ChildDirective`.\r\n * So `ParentCmp` is the host of `ChildDirective`.\r\n *\r\n * `ChildDirective` depends on two services: `HostService` and `OtherService`.\r\n * `HostService` is defined at `ParentCmp`, and `OtherService` is defined at `App`.\r\n *\r\n *```typescript\r\n * class OtherService {}\r\n * class HostService {}\r\n *\r\n * @Directive({\r\n * selector: 'child-directive'\r\n * })\r\n * class ChildDirective {\r\n * constructor(@Optional() @Host() os:OtherService, @Optional() @Host() hs:HostService){\r\n * console.log(\"os is null\", os);\r\n * console.log(\"hs is NOT null\", hs);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'parent-cmp',\r\n * providers: [HostService],\r\n * template: `\r\n * Dir: <child-directive></child-directive>\r\n * `,\r\n * directives: [ChildDirective]\r\n * })\r\n * class ParentCmp {\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * providers: [OtherService],\r\n * template: `\r\n * Parent: <parent-cmp></parent-cmp>\r\n * `,\r\n * directives: [ParentCmp]\r\n * })\r\n * class App {\r\n * }\r\n *\r\n * bootstrap(App);\r\n *```\r\n */\r\nvar HostMetadata = (function () {\r\n function HostMetadata() {\r\n }\r\n HostMetadata.prototype.toString = function () { return \"@Host()\"; };\r\n HostMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], HostMetadata);\r\n return HostMetadata;\r\n}());\r\nexports.HostMetadata = HostMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kaS9tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEscUJBQStELDBCQUEwQixDQUFDLENBQUE7QUFFMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUVIO0lBQ0Usd0JBQW1CLEtBQUs7UUFBTCxVQUFLLEdBQUwsS0FBSyxDQUFBO0lBQUcsQ0FBQztJQUM1QixpQ0FBUSxHQUFSLGNBQXFCLE1BQU0sQ0FBQyxhQUFXLGdCQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFHLENBQUMsQ0FBQyxDQUFDO0lBSHBFO1FBQUMsWUFBSyxFQUFFOztzQkFBQTtJQUlSLHFCQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIWSxzQkFBYyxpQkFHMUIsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVIO0lBQUE7SUFFQSxDQUFDO0lBREMsbUNBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUY5QztRQUFDLFlBQUssRUFBRTs7d0JBQUE7SUFHUix1QkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksd0JBQWdCLG1CQUU1QixDQUFBO0FBRUQ7OztHQUdHO0FBRUg7SUFBQTtJQUVBLENBQUM7SUFEQyxzQkFBSSxxQ0FBSzthQUFULGNBQWMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBRjlCO1FBQUMsWUFBSyxFQUFFOzswQkFBQTtJQUdSLHlCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFGWSwwQkFBa0IscUJBRTlCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBRUg7SUFDRTtJQUFlLENBQUM7SUFGbEI7UUFBQyxZQUFLLEVBQUU7OzBCQUFBO0lBR1IseUJBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUZZLDBCQUFrQixxQkFFOUIsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUVIO0lBQUE7SUFFQSxDQUFDO0lBREMsK0JBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUYxQztRQUFDLFlBQUssRUFBRTs7b0JBQUE7SUFHUixtQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksb0JBQVksZUFFeEIsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFFSDtJQUFBO0lBRUEsQ0FBQztJQURDLG1DQUFRLEdBQVIsY0FBcUIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFGOUM7UUFBQyxZQUFLLEVBQUU7O3dCQUFBO0lBR1IsdUJBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQztBQUZZLHdCQUFnQixtQkFFNUIsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFERztBQUVIO0lBQUE7SUFFQSxDQUFDO0lBREMsK0JBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUYxQztRQUFDLFlBQUssRUFBRTs7b0JBQUE7SUFHUixtQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksb0JBQVksZUFFeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1QsIENPTlNUX0VYUFIsIHN0cmluZ2lmeSwgaXNCbGFuaywgaXNQcmVzZW50fSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nXCI7XG5cbi8qKlxuICogQSBwYXJhbWV0ZXIgbWV0YWRhdGEgdGhhdCBzcGVjaWZpZXMgYSBkZXBlbmRlbmN5LlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC82dUhZSks/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBFbmdpbmUge31cbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBDYXIge1xuICogICBlbmdpbmU7XG4gKiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoXCJNeUVuZ2luZVwiKSBlbmdpbmU6RW5naW5lKSB7XG4gKiAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAqICBwcm92aWRlKFwiTXlFbmdpbmVcIiwge3VzZUNsYXNzOiBFbmdpbmV9KSxcbiAqICBDYXJcbiAqIF0pO1xuICpcbiAqIGV4cGVjdChpbmplY3Rvci5nZXQoQ2FyKS5lbmdpbmUgaW5zdGFuY2VvZiBFbmdpbmUpLnRvQmUodHJ1ZSk7XG4gKiBgYGBcbiAqXG4gKiBXaGVuIGBASW5qZWN0KClgIGlzIG5vdCBwcmVzZW50LCB7QGxpbmsgSW5qZWN0b3J9IHdpbGwgdXNlIHRoZSB0eXBlIGFubm90YXRpb24gb2YgdGhlIHBhcmFtZXRlci5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEVuZ2luZSB7fVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIENhciB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmdpbmU6IEVuZ2luZSkge30gLy9zYW1lIGFzIGNvbnN0cnVjdG9yKEBJbmplY3QoRW5naW5lKSBlbmdpbmU6RW5naW5lKVxuICogfVxuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0VuZ2luZSwgQ2FyXSk7XG4gKiBleHBlY3QoaW5qZWN0b3IuZ2V0KENhcikuZW5naW5lIGluc3RhbmNlb2YgRW5naW5lKS50b0JlKHRydWUpO1xuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgSW5qZWN0TWV0YWRhdGEge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9rZW4pIHt9XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQEluamVjdCgke3N0cmluZ2lmeSh0aGlzLnRva2VuKX0pYDsgfVxufVxuXG4vKipcbiAqIEEgcGFyYW1ldGVyIG1ldGFkYXRhIHRoYXQgbWFya3MgYSBkZXBlbmRlbmN5IGFzIG9wdGlvbmFsLiB7QGxpbmsgSW5qZWN0b3J9IHByb3ZpZGVzIGBudWxsYCBpZlxuICogdGhlIGRlcGVuZGVuY3kgaXMgbm90IGZvdW5kLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9Bc3J5T20/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBFbmdpbmUge31cbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBDYXIge1xuICogICBlbmdpbmU7XG4gKiAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIGVuZ2luZTpFbmdpbmUpIHtcbiAqICAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0Nhcl0pO1xuICogZXhwZWN0KGluamVjdG9yLmdldChDYXIpLmVuZ2luZSkudG9CZU51bGwoKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIE9wdGlvbmFsTWV0YWRhdGEge1xuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYEBPcHRpb25hbCgpYDsgfVxufVxuXG4vKipcbiAqIGBEZXBlbmRlbmN5TWV0YWRhdGFgIGlzIHVzZWQgYnkgdGhlIGZyYW1ld29yayB0byBleHRlbmQgREkuXG4gKiBUaGlzIGlzIGludGVybmFsIHRvIEFuZ3VsYXIgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS5cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmN5TWV0YWRhdGEge1xuICBnZXQgdG9rZW4oKSB7IHJldHVybiBudWxsOyB9XG59XG5cbi8qKlxuICogQSBtYXJrZXIgbWV0YWRhdGEgdGhhdCBtYXJrcyBhIGNsYXNzIGFzIGF2YWlsYWJsZSB0byB7QGxpbmsgSW5qZWN0b3J9IGZvciBjcmVhdGlvbi5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvV2s0RE1RP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgVXNlZnVsU2VydmljZSB7fVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIE5lZWRzU2VydmljZSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOlVzZWZ1bFNlcnZpY2UpIHt9XG4gKiB9XG4gKlxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbTmVlZHNTZXJ2aWNlLCBVc2VmdWxTZXJ2aWNlXSk7XG4gKiBleHBlY3QoaW5qZWN0b3IuZ2V0KE5lZWRzU2VydmljZSkuc2VydmljZSBpbnN0YW5jZW9mIFVzZWZ1bFNlcnZpY2UpLnRvQmUodHJ1ZSk7XG4gKiBgYGBcbiAqIHtAbGluayBJbmplY3Rvcn0gd2lsbCB0aHJvdyB7QGxpbmsgTm9Bbm5vdGF0aW9uRXJyb3J9IHdoZW4gdHJ5aW5nIHRvIGluc3RhbnRpYXRlIGEgY2xhc3MgdGhhdFxuICogZG9lcyBub3QgaGF2ZSBgQEluamVjdGFibGVgIG1hcmtlciwgYXMgc2hvd24gaW4gdGhlIGV4YW1wbGUgYmVsb3cuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlZnVsU2VydmljZSB7fVxuICpcbiAqIGNsYXNzIE5lZWRzU2VydmljZSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOlVzZWZ1bFNlcnZpY2UpIHt9XG4gKiB9XG4gKlxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbTmVlZHNTZXJ2aWNlLCBVc2VmdWxTZXJ2aWNlXSk7XG4gKiBleHBlY3QoKCkgPT4gaW5qZWN0b3IuZ2V0KE5lZWRzU2VydmljZSkpLnRvVGhyb3dFcnJvcigpO1xuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgSW5qZWN0YWJsZU1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IoKSB7fVxufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGF0IGFuIHtAbGluayBJbmplY3Rvcn0gc2hvdWxkIHJldHJpZXZlIGEgZGVwZW5kZW5jeSBvbmx5IGZyb20gaXRzZWxmLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9OZWFnQWc/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBEZXBlbmRlbmN5IHtcbiAqIH1cbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBOZWVkc0RlcGVuZGVuY3kge1xuICogICBkZXBlbmRlbmN5O1xuICogICBjb25zdHJ1Y3RvcihAU2VsZigpIGRlcGVuZGVuY3k6RGVwZW5kZW5jeSkge1xuICogICAgIHRoaXMuZGVwZW5kZW5jeSA9IGRlcGVuZGVuY3k7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgaW5qID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbRGVwZW5kZW5jeSwgTmVlZHNEZXBlbmRlbmN5XSk7XG4gKiB2YXIgbmQgPSBpbmouZ2V0KE5lZWRzRGVwZW5kZW5jeSk7XG4gKlxuICogZXhwZWN0KG5kLmRlcGVuZGVuY3kgaW5zdGFuY2VvZiBEZXBlbmRlbmN5KS50b0JlKHRydWUpO1xuICpcbiAqIHZhciBpbmogPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtEZXBlbmRlbmN5XSk7XG4gKiB2YXIgY2hpbGQgPSBpbmoucmVzb2x2ZUFuZENyZWF0ZUNoaWxkKFtOZWVkc0RlcGVuZGVuY3ldKTtcbiAqIGV4cGVjdCgoKSA9PiBjaGlsZC5nZXQoTmVlZHNEZXBlbmRlbmN5KSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBTZWxmTWV0YWRhdGEge1xuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYEBTZWxmKClgOyB9XG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoYXQgdGhlIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiBzaG91bGQgc3RhcnQgZnJvbSB0aGUgcGFyZW50IGluamVjdG9yLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9XY2hkemI/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBEZXBlbmRlbmN5IHtcbiAqIH1cbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBOZWVkc0RlcGVuZGVuY3kge1xuICogICBkZXBlbmRlbmN5O1xuICogICBjb25zdHJ1Y3RvcihAU2tpcFNlbGYoKSBkZXBlbmRlbmN5OkRlcGVuZGVuY3kpIHtcbiAqICAgICB0aGlzLmRlcGVuZGVuY3kgPSBkZXBlbmRlbmN5O1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIHBhcmVudCA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0RlcGVuZGVuY3ldKTtcbiAqIHZhciBjaGlsZCA9IHBhcmVudC5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQoW05lZWRzRGVwZW5kZW5jeV0pO1xuICogZXhwZWN0KGNoaWxkLmdldChOZWVkc0RlcGVuZGVuY3kpLmRlcGVuZGVuY3kgaW5zdGFuY2VvZiBEZXBlZGVuY3kpLnRvQmUodHJ1ZSk7XG4gKlxuICogdmFyIGluaiA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0RlcGVuZGVuY3ksIE5lZWRzRGVwZW5kZW5jeV0pO1xuICogZXhwZWN0KCgpID0+IGluai5nZXQoTmVlZHNEZXBlbmRlbmN5KSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBTa2lwU2VsZk1ldGFkYXRhIHtcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGBAU2tpcFNlbGYoKWA7IH1cbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhhdCBhbiBpbmplY3RvciBzaG91bGQgcmV0cmlldmUgYSBkZXBlbmRlbmN5IGZyb20gYW55IGluamVjdG9yIHVudGlsIHJlYWNoaW5nIHRoZVxuICogY2xvc2VzdCBob3N0LlxuICpcbiAqIEluIEFuZ3VsYXIsIGEgY29tcG9uZW50IGVsZW1lbnQgaXMgYXV0b21hdGljYWxseSBkZWNsYXJlZCBhcyBhIGhvc3QgZm9yIGFsbCB0aGUgaW5qZWN0b3JzIGluXG4gKiBpdHMgdmlldy5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvR1g3OXBWP3A9cHJldmlldykpXG4gKlxuICogSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIGBBcHBgIGNvbnRhaW5zIGBQYXJlbnRDbXBgLCB3aGljaCBjb250YWlucyBgQ2hpbGREaXJlY3RpdmVgLlxuICogU28gYFBhcmVudENtcGAgaXMgdGhlIGhvc3Qgb2YgYENoaWxkRGlyZWN0aXZlYC5cbiAqXG4gKiBgQ2hpbGREaXJlY3RpdmVgIGRlcGVuZHMgb24gdHdvIHNlcnZpY2VzOiBgSG9zdFNlcnZpY2VgIGFuZCBgT3RoZXJTZXJ2aWNlYC5cbiAqIGBIb3N0U2VydmljZWAgaXMgZGVmaW5lZCBhdCBgUGFyZW50Q21wYCwgYW5kIGBPdGhlclNlcnZpY2VgIGlzIGRlZmluZWQgYXQgYEFwcGAuXG4gKlxuICpgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBPdGhlclNlcnZpY2Uge31cbiAqIGNsYXNzIEhvc3RTZXJ2aWNlIHt9XG4gKlxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnY2hpbGQtZGlyZWN0aXZlJ1xuICogfSlcbiAqIGNsYXNzIENoaWxkRGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEhvc3QoKSBvczpPdGhlclNlcnZpY2UsIEBPcHRpb25hbCgpIEBIb3N0KCkgaHM6SG9zdFNlcnZpY2Upe1xuICogICAgIGNvbnNvbGUubG9nKFwib3MgaXMgbnVsbFwiLCBvcyk7XG4gKiAgICAgY29uc29sZS5sb2coXCJocyBpcyBOT1QgbnVsbFwiLCBocyk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdwYXJlbnQtY21wJyxcbiAqICAgcHJvdmlkZXJzOiBbSG9zdFNlcnZpY2VdLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIERpcjogPGNoaWxkLWRpcmVjdGl2ZT48L2NoaWxkLWRpcmVjdGl2ZT5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkRGlyZWN0aXZlXVxuICogfSlcbiAqIGNsYXNzIFBhcmVudENtcCB7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgcHJvdmlkZXJzOiBbT3RoZXJTZXJ2aWNlXSxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICBQYXJlbnQ6IDxwYXJlbnQtY21wPjwvcGFyZW50LWNtcD5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW1BhcmVudENtcF1cbiAqIH0pXG4gKiBjbGFzcyBBcHAge1xuICogfVxuICpcbiAqIGJvb3RzdHJhcChBcHApO1xuICpgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBIb3N0TWV0YWRhdGEge1xuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYEBIb3N0KClgOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * Describes how the {@link Injector} should instantiate a given token.\r\n *\r\n * See {@link provide}.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/GNAyj6K6PfYg2NBzgwZ5?p%3Dpreview&p=preview))\r\n *\r\n * ```javascript\r\n * var injector = Injector.resolveAndCreate([\r\n * new Provider(\"message\", { useValue: 'Hello' })\r\n * ]);\r\n *\r\n * expect(injector.get(\"message\")).toEqual('Hello');\r\n * ```\r\n */\r\nvar Provider = (function () {\r\n function Provider(token, _a) {\r\n var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\r\n this.token = token;\r\n this.useClass = useClass;\r\n this.useValue = useValue;\r\n this.useExisting = useExisting;\r\n this.useFactory = useFactory;\r\n this.dependencies = deps;\r\n this._multi = multi;\r\n }\r\n Object.defineProperty(Provider.prototype, \"multi\", {\r\n // TODO: Provide a full working example after alpha38 is released.\r\n /**\r\n * Creates multiple providers matching the same token (a multi-provider).\r\n *\r\n * Multi-providers are used for creating pluggable service, where the system comes\r\n * with some default providers, and the user can register additional providers.\r\n * The combination of the default providers and the additional providers will be\r\n * used to drive the behavior of the system.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * new Provider(\"Strings\", { useValue: \"String1\", multi: true}),\r\n * new Provider(\"Strings\", { useValue: \"String2\", multi: true})\r\n * ]);\r\n *\r\n * expect(injector.get(\"Strings\")).toEqual([\"String1\", \"String2\"]);\r\n * ```\r\n *\r\n * Multi-providers and regular providers cannot be mixed. The following\r\n * will throw an exception:\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * new Provider(\"Strings\", { useValue: \"String1\", multi: true }),\r\n * new Provider(\"Strings\", { useValue: \"String2\"})\r\n * ]);\r\n * ```\r\n */\r\n get: function () { return lang_1.normalizeBool(this._multi); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Provider = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], Provider);\r\n return Provider;\r\n}());\r\nexports.Provider = Provider;\r\n/**\r\n * See {@link Provider} instead.\r\n *\r\n * @deprecated\r\n */\r\nvar Binding = (function (_super) {\r\n __extends(Binding, _super);\r\n function Binding(token, _a) {\r\n var toClass = _a.toClass, toValue = _a.toValue, toAlias = _a.toAlias, toFactory = _a.toFactory, deps = _a.deps, multi = _a.multi;\r\n _super.call(this, token, {\r\n useClass: toClass,\r\n useValue: toValue,\r\n useExisting: toAlias,\r\n useFactory: toFactory,\r\n deps: deps,\r\n multi: multi\r\n });\r\n }\r\n Object.defineProperty(Binding.prototype, \"toClass\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useClass; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Binding.prototype, \"toAlias\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useExisting; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Binding.prototype, \"toFactory\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useFactory; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Binding.prototype, \"toValue\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useValue; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Binding = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], Binding);\r\n return Binding;\r\n}(Provider));\r\nexports.Binding = Binding;\r\n/**\r\n * Creates a {@link Provider}.\r\n *\r\n * To construct a {@link Provider}, bind a `token` to either a class, a value, a factory function,\r\n * or\r\n * to an existing `token`.\r\n * See {@link ProviderBuilder} for more details.\r\n *\r\n * The `token` is most commonly a class or {@link OpaqueToken-class.html}.\r\n *\r\n * @deprecated\r\n */\r\nfunction bind(token) {\r\n return new ProviderBuilder(token);\r\n}\r\nexports.bind = bind;\r\n/**\r\n * Helper class for the {@link bind} function.\r\n */\r\nvar ProviderBuilder = (function () {\r\n function ProviderBuilder(token) {\r\n this.token = token;\r\n }\r\n /**\r\n * Binds a DI token to a class.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ZpBCSYqv6e2ud5KXLdxQ?p=preview))\r\n *\r\n * Because `toAlias` and `toClass` are often confused, the example contains\r\n * both use cases for easy comparison.\r\n *\r\n * ```typescript\r\n * class Vehicle {}\r\n *\r\n * class Car extends Vehicle {}\r\n *\r\n * var injectorClass = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useClass: Car})\r\n * ]);\r\n * var injectorAlias = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useExisting: Car})\r\n * ]);\r\n *\r\n * expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car));\r\n * expect(injectorClass.get(Vehicle) instanceof Car).toBe(true);\r\n *\r\n * expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car));\r\n * expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true);\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toClass = function (type) {\r\n if (!lang_1.isType(type)) {\r\n throw new exceptions_1.BaseException(\"Trying to create a class provider but \\\"\" + lang_1.stringify(type) + \"\\\" is not a class!\");\r\n }\r\n return new Provider(this.token, { useClass: type });\r\n };\r\n /**\r\n * Binds a DI token to a value.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/G024PFHmDL0cJFgfZK8O?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide('message', {useValue: 'Hello'})\r\n * ]);\r\n *\r\n * expect(injector.get('message')).toEqual('Hello');\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toValue = function (value) { return new Provider(this.token, { useValue: value }); };\r\n /**\r\n * Binds a DI token to an existing token.\r\n *\r\n * Angular will return the same instance as if the provided token was used. (This is\r\n * in contrast to `useClass` where a separate instance of `useClass` will be returned.)\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/uBaoF2pN5cfc5AfZapNw?p=preview))\r\n *\r\n * Because `toAlias` and `toClass` are often confused, the example contains\r\n * both use cases for easy comparison.\r\n *\r\n * ```typescript\r\n * class Vehicle {}\r\n *\r\n * class Car extends Vehicle {}\r\n *\r\n * var injectorAlias = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useExisting: Car})\r\n * ]);\r\n * var injectorClass = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useClass: Car})\r\n * ]);\r\n *\r\n * expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car));\r\n * expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true);\r\n *\r\n * expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car));\r\n * expect(injectorClass.get(Vehicle) instanceof Car).toBe(true);\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toAlias = function (aliasToken) {\r\n if (lang_1.isBlank(aliasToken)) {\r\n throw new exceptions_1.BaseException(\"Can not alias \" + lang_1.stringify(this.token) + \" to a blank value!\");\r\n }\r\n return new Provider(this.token, { useExisting: aliasToken });\r\n };\r\n /**\r\n * Binds a DI token to a function which computes the value.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/OejNIfTT3zb1iBxaIYOb?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(Number, {useFactory: () => { return 1+2; }}),\r\n * provide(String, {useFactory: (v) => { return \"Value: \" + v; }, deps: [Number]})\r\n * ]);\r\n *\r\n * expect(injector.get(Number)).toEqual(3);\r\n * expect(injector.get(String)).toEqual('Value: 3');\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toFactory = function (factory, dependencies) {\r\n if (!lang_1.isFunction(factory)) {\r\n throw new exceptions_1.BaseException(\"Trying to create a factory provider but \\\"\" + lang_1.stringify(factory) + \"\\\" is not a function!\");\r\n }\r\n return new Provider(this.token, { useFactory: factory, deps: dependencies });\r\n };\r\n return ProviderBuilder;\r\n}());\r\nexports.ProviderBuilder = ProviderBuilder;\r\n/**\r\n * Creates a {@link Provider}.\r\n *\r\n * See {@link Provider} for more details.\r\n *\r\n * <!-- TODO: improve the docs -->\r\n */\r\nfunction provide(token, _a) {\r\n var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\r\n return new Provider(token, {\r\n useClass: useClass,\r\n useValue: useValue,\r\n useExisting: useExisting,\r\n useFactory: useFactory,\r\n deps: deps,\r\n multi: multi\r\n });\r\n}\r\nexports.provide = provide;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kaS9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFRTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUg7SUFrSUUsa0JBQVksS0FBSyxFQUFFLEVBT2xCO1lBUG1CLHNCQUFRLEVBQUUsc0JBQVEsRUFBRSw0QkFBVyxFQUFFLDBCQUFVLEVBQUUsY0FBSSxFQUFFLGdCQUFLO1FBUTFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFnQ0Qsc0JBQUksMkJBQUs7UUE5QlQsa0VBQWtFO1FBQ2xFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBNEJHO2FBQ0gsY0FBdUIsTUFBTSxDQUFDLG9CQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFsTDdEO1FBQUMsWUFBSyxFQUFFOztnQkFBQTtJQW1MUixlQUFDO0FBQUQsQ0FBQyxBQWxMRCxJQWtMQztBQWxMWSxnQkFBUSxXQWtMcEIsQ0FBQTtBQUVEOzs7O0dBSUc7QUFFSDtJQUE2QiwyQkFBUTtJQUNuQyxpQkFBWSxL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QVMsQ0FBQyxPQUFPLENBQUMsMEJBQXNCLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFwSEQsSUFvSEM7QUFwSFksdUJBQWUsa0JBb0gzQixDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsaUJBQXdCLEtBQUssRUFBRSxFQU85QjtRQVArQixzQkFBUSxFQUFFLHNCQUFRLEVBQUUsNEJBQVcsRUFBRSwwQkFBVSxFQUFFLGNBQUksRUFBRSxnQkFBSztJQVF0RixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFO1FBQ3pCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFdBQVcsRUFBRSxXQUFXO1FBQ3hCLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEtBQUs7S0FDYixDQUFDLENBQUM7QUFDTCxDQUFDO0FBaEJlLGVBQU8sVUFnQnRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBub3JtYWxpemVCb29sLFxuICBUeXBlLFxuICBDT05TVCxcbiAgaXNUeXBlLFxuICBpc0JsYW5rLFxuICBpc0Z1bmN0aW9uLFxuICBzdHJpbmdpZnlcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcblxuLyoqXG4gKiBEZXNjcmliZXMgaG93IHRoZSB7QGxpbmsgSW5qZWN0b3J9IHNob3VsZCBpbnN0YW50aWF0ZSBhIGdpdmVuIHRva2VuLlxuICpcbiAqIFNlZSB7QGxpbmsgcHJvdmlkZX0uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0dOQXlqNks2UGZZZzJOQnpnd1o1P3AlM0RwcmV2aWV3JnA9cHJldmlldykpXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gKiAgIG5ldyBQcm92aWRlcihcIm1lc3NhZ2VcIiwgeyB1c2VWYWx1ZTogJ0hlbGxvJyB9KVxuICogXSk7XG4gKlxuICogZXhwZWN0KGluamVjdG9yLmdldChcIm1lc3NhZ2VcIikpLnRvRXF1YWwoJ0hlbGxvJyk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBQcm92aWRlciB7XG4gIC8qKlxuICAgKiBUb2tlbiB1c2VkIHdoZW4gcmV0cmlldmluZyB0aGlzIHByb3ZpZGVyLiBVc3VhbGx5LCBpdCBpcyBhIHR5cGUge0BsaW5rIFR5cGV9LlxuICAgKi9cbiAgdG9rZW47XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYW4gaW1wbGVtZW50YXRpb24gY2xhc3MuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9SU1RHODZxZ21veEN5ajlTV1B3WT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBCZWNhdXNlIGB1c2VFeGlzdGluZ2AgYW5kIGB1c2VDbGFzc2AgYXJlIG9mdGVuIGNvbmZ1c2VkLCB0aGUgZXhhbXBsZSBjb250YWluc1xuICAgKiBib3RoIHVzZSBjYXNlcyBmb3IgZWFzeSBjb21wYXJpc29uLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNsYXNzIFZlaGljbGUge31cbiAgICpcbiAgICogY2xhc3MgQ2FyIGV4dGVuZHMgVmVoaWNsZSB7fVxuICAgKlxuICAgKiB2YXIgaW5qZWN0b3JDbGFzcyA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIENhcixcbiAgICogICBuZXcgUHJvdmlkZXIoVmVoaWNsZSwgeyB1c2VDbGFzczogQ2FyIH0pXG4gICAqIF0pO1xuICAgKiB2YXIgaW5qZWN0b3JBbGlhcyA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIENhcixcbiAgICogICBuZXcgUHJvdmlkZXIoVmVoaWNsZSwgeyB1c2VFeGlzdGluZzogQ2FyIH0pXG4gICAqIF0pO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3JDbGFzcy5nZXQoVmVoaWNsZSkpLm5vdC50b0JlKGluamVjdG9yQ2xhc3MuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JDbGFzcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckFsaWFzLmdldChWZWhpY2xlKSkudG9CZShpbmplY3RvckFsaWFzLmdldChDYXIpKTtcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpIGluc3RhbmNlb2YgQ2FyKS50b0JlKHRydWUpO1xuICAgKiBgYGBcbiAgICovXG4gIHVzZUNsYXNzOiBUeXBlO1xuXG4gIC8qKlxuICAgKiBCaW5kcyBhIERJIHRva2VuIHRvIGEgdmFsdWUuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9VRlZzTVZRSURlN2w0d2FXemlFUz9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIG5ldyBQcm92aWRlcihcIm1lc3NhZ2VcIiwgeyB1c2VWYWx1ZTogJ0hlbGxvJyB9KVxuICAgKiBdKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChcIm1lc3NhZ2VcIikpLnRvRXF1YWwoJ0hlbGxvJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgdXNlVmFsdWU7XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYW4gZXhpc3RpbmcgdG9rZW4uXG4gICAqXG4gICAqIHtAbGluayBJbmplY3Rvcn0gcmV0dXJucyB0aGUgc2FtZSBpbnN0YW5jZSBhcyBpZiB0aGUgcHJvdmlkZWQgdG9rZW4gd2FzIHVzZWQuXG4gICAqIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gYHVzZUNsYXNzYCB3aGVyZSBhIHNlcGFyYXRlIGluc3RhbmNlIG9mIGB1c2VDbGFzc2AgaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9Rc2F0c09KSjZQOFQyZk1lOWdyOD9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBCZWNhdXNlIGB1c2VFeGlzdGluZ2AgYW5kIGB1c2VDbGFzc2AgYXJlIG9mdGVuIGNvbmZ1c2VkIHRoZSBleGFtcGxlIGNvbnRhaW5zXG4gICAqIGJvdGggdXNlIGNhc2VzIGZvciBlYXN5IGNvbXBhcmlzb24uXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY2xhc3MgVmVoaWNsZSB7fVxuICAgKlxuICAgKiBjbGFzcyBDYXIgZXh0ZW5kcyBWZWhpY2xlIHt9XG4gICAqXG4gICAqIHZhciBpbmplY3RvckFsaWFzID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgQ2FyLFxuICAgKiAgIG5ldyBQcm92aWRlcihWZWhpY2xlLCB7IHVzZUV4aXN0aW5nOiBDYXIgfSlcbiAgICogXSk7XG4gICAqIHZhciBpbmplY3RvckNsYXNzID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgQ2FyLFxuICAgKiAgIG5ldyBQcm92aWRlcihWZWhpY2xlLCB7IHVzZUNsYXNzOiBDYXIgfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckFsaWFzLmdldChWZWhpY2xlKSkudG9CZShpbmplY3RvckFsaWFzLmdldChDYXIpKTtcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpIGluc3RhbmNlb2YgQ2FyKS50b0JlKHRydWUpO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3JDbGFzcy5nZXQoVmVoaWNsZSkpLm5vdC50b0JlKGluamVjdG9yQ2xhc3MuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JDbGFzcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdXNlRXhpc3Rpbmc7XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYSBmdW5jdGlvbiB3aGljaCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9TY294eTBwSk5xS0dBUFpZMVZWQz9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIG5ldyBQcm92aWRlcihOdW1iZXIsIHsgdXNlRmFjdG9yeTogKCkgPT4geyByZXR1cm4gMSsyOyB9fSksXG4gICAqICAgbmV3IFByb3ZpZGVyKFN0cmluZywgeyB1c2VGYWN0b3J5OiAodmFsdWUpID0+IHsgcmV0dXJuIFwiVmFsdWU6IFwiICsgdmFsdWU7IH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBkZXBzOiBbTnVtYmVyXSB9KVxuICAgKiBdKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChOdW1iZXIpKS50b0VxdWFsKDMpO1xuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KFN0cmluZykpLnRvRXF1YWwoJ1ZhbHVlOiAzJyk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgdXNlRmFjdG9yeTogRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHNldCBvZiBkZXBlbmRlbmNpZXNcbiAgICogKGFzIGB0b2tlbmBzKSB3aGljaCBzaG91bGQgYmUgaW5qZWN0ZWQgaW50byB0aGUgZmFjdG9yeSBmdW5jdGlvbi5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1Njb3h5MHBKTnFLR0FQWlkxVlZDP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgbmV3IFByb3ZpZGVyKE51bWJlciwgeyB1c2VGYWN0b3J5OiAoKSA9PiB7IHJldHVybiAxKzI7IH19KSxcbiAgICogICBuZXcgUHJvdmlkZXIoU3RyaW5nLCB7IHVzZUZhY3Rvcnk6ICh2YWx1ZSkgPT4geyByZXR1cm4gXCJWYWx1ZTogXCIgKyB2YWx1ZTsgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IFtOdW1iZXJdIH0pXG4gICAqIF0pO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KE51bWJlcikpLnRvRXF1YWwoMyk7XG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoU3RyaW5nKSkudG9FcXVhbCgnVmFsdWU6IDMnKTtcbiAgICogYGBgXG4gICAqXG4gICAqIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgdXNlRmFjdG9yeWAuXG4gICAqL1xuICBkZXBlbmRlbmNpZXM6IE9iamVjdFtdO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX211bHRpOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuLCB7dXNlQ2xhc3MsIHVzZVZhbHVlLCB1c2VFeGlzdGluZywgdXNlRmFjdG9yeSwgZGVwcywgbXVsdGl9OiB7XG4gICAgdXNlQ2xhc3M/OiBUeXBlLFxuICAgIHVzZVZhbHVlPzogYW55LFxuICAgIHVzZUV4aXN0aW5nPzogYW55LFxuICAgIHVzZUZhY3Rvcnk/OiBGdW5jdGlvbixcbiAgICBkZXBzPzogT2JqZWN0W10sXG4gICAgbXVsdGk/OiBib29sZWFuXG4gIH0pIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy51c2VDbGFzcyA9IHVzZUNsYXNzO1xuICAgIHRoaXMudXNlVmFsdWUgPSB1c2VWYWx1ZTtcbiAgICB0aGlzLnVzZUV4aXN0aW5nID0gdXNlRXhpc3Rpbmc7XG4gICAgdGhpcy51c2VGYWN0b3J5ID0gdXNlRmFjdG9yeTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IGRlcHM7XG4gICAgdGhpcy5fbXVsdGkgPSBtdWx0aTtcbiAgfVxuXG4gIC8vIFRPRE86IFByb3ZpZGUgYSBmdWxsIHdvcmtpbmcgZXhhbXBsZSBhZnRlciBhbHBoYTM4IGlzIHJlbGVhc2VkLlxuICAvKipcbiAgICogQ3JlYXRlcyBtdWx0aXBsZSBwcm92aWRlcnMgbWF0Y2hpbmcgdGhlIHNhbWUgdG9rZW4gKGEgbXVsdGktcHJvdmlkZXIpLlxuICAgKlxuICAgKiBNdWx0aS1wcm92aWRlcnMgYXJlIHVzZWQgZm9yIGNyZWF0aW5nIHBsdWdnYWJsZSBzZXJ2aWNlLCB3aGVyZSB0aGUgc3lzdGVtIGNvbWVzXG4gICAqIHdpdGggc29tZSBkZWZhdWx0IHByb3ZpZGVycywgYW5kIHRoZSB1c2VyIGNhbiByZWdpc3RlciBhZGRpdGlvbmFsIHByb3ZpZGVycy5cbiAgICogVGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBkZWZhdWx0IHByb3ZpZGVycyBhbmQgdGhlIGFkZGl0aW9uYWwgcHJvdmlkZXJzIHdpbGwgYmVcbiAgICogdXNlZCB0byBkcml2ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHN5c3RlbS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBuZXcgUHJvdmlkZXIoXCJTdHJpbmdzXCIsIHsgdXNlVmFsdWU6IFwiU3RyaW5nMVwiLCBtdWx0aTogdHJ1ZX0pLFxuICAgKiAgIG5ldyBQcm92aWRlcihcIlN0cmluZ3NcIiwgeyB1c2VWYWx1ZTogXCJTdHJpbmcyXCIsIG11bHRpOiB0cnVlfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoXCJTdHJpbmdzXCIpKS50b0VxdWFsKFtcIlN0cmluZzFcIiwgXCJTdHJpbmcyXCJdKTtcbiAgICogYGBgXG4gICAqXG4gICAqIE11bHRpLXByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92aWRlcnMgY2Fubm90IGJlIG1peGVkLiBUaGUgZm9sbG93aW5nXG4gICAqIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uOlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIG5ldyBQcm92aWRlcihcIlN0cmluZ3NcIiwgeyB1c2VWYWx1ZTogXCJTdHJpbmcxXCIsIG11bHRpOiB0cnVlIH0pLFxuICAgKiAgIG5ldyBQcm92aWRlcihcIlN0cmluZ3NcIiwgeyB1c2VWYWx1ZTogXCJTdHJpbmcyXCJ9KVxuICAgKiBdKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXQgbXVsdGkoKTogYm9vbGVhbiB7IHJldHVybiBub3JtYWxpemVCb29sKHRoaXMuX211bHRpKTsgfVxufVxuXG4vKipcbiAqIFNlZSB7QGxpbmsgUHJvdmlkZXJ9IGluc3RlYWQuXG4gKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBCaW5kaW5nIGV4dGVuZHMgUHJvdmlkZXIge1xuICBjb25zdHJ1Y3Rvcih0b2tlbiwge3RvQ2xhc3MsIHRvVmFsdWUsIHRvQWxpYXMsIHRvRmFjdG9yeSwgZGVwcywgbXVsdGl9OiB7XG4gICAgdG9DbGFzcz86IFR5cGUsXG4gICAgdG9WYWx1ZT86IGFueSxcbiAgICB0b0FsaWFzPzogYW55LFxuICAgIHRvRmFjdG9yeTogRnVuY3Rpb24sIGRlcHM/OiBPYmplY3RbXSwgbXVsdGk/OiBib29sZWFuXG4gIH0pIHtcbiAgICBzdXBlcih0b2tlbiwge1xuICAgICAgdXNlQ2xhc3M6IHRvQ2xhc3MsXG4gICAgICB1c2VWYWx1ZTogdG9WYWx1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiB0b0FsaWFzLFxuICAgICAgdXNlRmFjdG9yeTogdG9GYWN0b3J5LFxuICAgICAgZGVwczogZGVwcyxcbiAgICAgIG11bHRpOiBtdWx0aVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXQgdG9DbGFzcygpIHsgcmV0dXJuIHRoaXMudXNlQ2xhc3M7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGdldCB0b0FsaWFzKCkgeyByZXR1cm4gdGhpcy51c2VFeGlzdGluZzsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0IHRvRmFjdG9yeSgpIHsgcmV0dXJuIHRoaXMudXNlRmFjdG9yeTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0IHRvVmFsdWUoKSB7IHJldHVybiB0aGlzLnVzZVZhbHVlOyB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBQcm92aWRlcn0uXG4gKlxuICogVG8gY29uc3RydWN0IGEge0BsaW5rIFByb3ZpZGVyfSwgYmluZCBhIGB0b2tlbmAgdG8gZWl0aGVyIGEgY2xhc3MsIGEgdmFsdWUsIGEgZmFjdG9yeSBmdW5jdGlvbixcbiAqIG9yXG4gKiB0byBhbiBleGlzdGluZyBgdG9rZW5gLlxuICogU2VlIHtAbGluayBQcm92aWRlckJ1aWxkZXJ9IGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogVGhlIGB0b2tlbmAgaXMgbW9zdCBjb21tb25seSBhIGNsYXNzIG9yIHtAbGluayBPcGFxdWVUb2tlbi1jbGFzcy5odG1sfS5cbiAqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZCh0b2tlbik6IFByb3ZpZGVyQnVpbGRlciB7XG4gIHJldHVybiBuZXcgUHJvdmlkZXJCdWlsZGVyKHRva2VuKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIHRoZSB7QGxpbmsgYmluZH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm92aWRlckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9rZW4pIHt9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYSBjbGFzcy5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1pwQkNTWXF2NmUydWQ1S1hMZHhRP3A9cHJldmlldykpXG4gICAqXG4gICAqIEJlY2F1c2UgYHRvQWxpYXNgIGFuZCBgdG9DbGFzc2AgYXJlIG9mdGVuIGNvbmZ1c2VkLCB0aGUgZXhhbXBsZSBjb250YWluc1xuICAgKiBib3RoIHVzZSBjYXNlcyBmb3IgZWFzeSBjb21wYXJpc29uLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNsYXNzIFZlaGljbGUge31cbiAgICpcbiAgICogY2xhc3MgQ2FyIGV4dGVuZHMgVmVoaWNsZSB7fVxuICAgKlxuICAgKiB2YXIgaW5qZWN0b3JDbGFzcyA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIENhcixcbiAgICogICBwcm92aWRlKFZlaGljbGUsIHt1c2VDbGFzczogQ2FyfSlcbiAgICogXSk7XG4gICAqIHZhciBpbmplY3RvckFsaWFzID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgQ2FyLFxuICAgKiAgIHByb3ZpZGUoVmVoaWNsZSwge3VzZUV4aXN0aW5nOiBDYXJ9KVxuICAgKiBdKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yQ2xhc3MuZ2V0KFZlaGljbGUpKS5ub3QudG9CZShpbmplY3RvckNsYXNzLmdldChDYXIpKTtcbiAgICogZXhwZWN0KGluamVjdG9yQ2xhc3MuZ2V0KFZlaGljbGUpIGluc3RhbmNlb2YgQ2FyKS50b0JlKHRydWUpO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3JBbGlhcy5nZXQoVmVoaWNsZSkpLnRvQmUoaW5qZWN0b3JBbGlhcy5nZXQoQ2FyKSk7XG4gICAqIGV4cGVjdChpbmplY3RvckFsaWFzLmdldChWZWhpY2xlKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICogYGBgXG4gICAqL1xuICB0b0NsYXNzKHR5cGU6IFR5cGUpOiBQcm92aWRlciB7XG4gICAgaWYgKCFpc1R5cGUodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgIGBUcnlpbmcgdG8gY3JlYXRlIGEgY2xhc3MgcHJvdmlkZXIgYnV0IFwiJHtzdHJpbmdpZnkodHlwZSl9XCIgaXMgbm90IGEgY2xhc3MhYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvdmlkZXIodGhpcy50b2tlbiwge3VzZUNsYXNzOiB0eXBlfSk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBESSB0b2tlbiB0byBhIHZhbHVlLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvRzAyNFBGSG1ETDBjSkZnZlpLOE8/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBwcm92aWRlKCdtZXNzYWdlJywge3VzZVZhbHVlOiAnSGVsbG8nfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoJ21lc3NhZ2UnKSkudG9FcXVhbCgnSGVsbG8nKTtcbiAgICogYGBgXG4gICAqL1xuICB0b1ZhbHVlKHZhbHVlOiBhbnkpOiBQcm92aWRlciB7IHJldHVybiBuZXcgUHJvdmlkZXIodGhpcy50b2tlbiwge3VzZVZhbHVlOiB2YWx1ZX0pOyB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYW4gZXhpc3RpbmcgdG9rZW4uXG4gICAqXG4gICAqIEFuZ3VsYXIgd2lsbCByZXR1cm4gdGhlIHNhbWUgaW5zdGFuY2UgYXMgaWYgdGhlIHByb3ZpZGVkIHRva2VuIHdhcyB1c2VkLiAoVGhpcyBpc1xuICAgKiBpbiBjb250cmFzdCB0byBgdXNlQ2xhc3NgIHdoZXJlIGEgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgYHVzZUNsYXNzYCB3aWxsIGJlIHJldHVybmVkLilcbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3VCYW9GMnBONWNmYzVBZlphcE53P3A9cHJldmlldykpXG4gICAqXG4gICAqIEJlY2F1c2UgYHRvQWxpYXNgIGFuZCBgdG9DbGFzc2AgYXJlIG9mdGVuIGNvbmZ1c2VkLCB0aGUgZXhhbXBsZSBjb250YWluc1xuICAgKiBib3RoIHVzZSBjYXNlcyBmb3IgZWFzeSBjb21wYXJpc29uLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNsYXNzIFZlaGljbGUge31cbiAgICpcbiAgICogY2xhc3MgQ2FyIGV4dGVuZHMgVmVoaWNsZSB7fVxuICAgKlxuICAgKiB2YXIgaW5qZWN0b3JBbGlhcyA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIENhcixcbiAgICogICBwcm92aWRlKFZlaGljbGUsIHt1c2VFeGlzdGluZzogQ2FyfSlcbiAgICogXSk7XG4gICAqIHZhciBpbmplY3RvckNsYXNzID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgQ2FyLFxuICAgKiAgIHByb3ZpZGUoVmVoaWNsZSwge3VzZUNsYXNzOiBDYXJ9KVxuICAgKiBdKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpKS50b0JlKGluamVjdG9yQWxpYXMuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JBbGlhcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSkubm90LnRvQmUoaW5qZWN0b3JDbGFzcy5nZXQoQ2FyKSk7XG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICogYGBgXG4gICAqL1xuICB0b0FsaWFzKGFsaWFzVG9rZW46IC8qVHlwZSovIGFueSk6IFByb3ZpZGVyIHtcbiAgICBpZiAoaXNCbGFuayhhbGlhc1Rva2VuKSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENhbiBub3QgYWxpYXMgJHtzdHJpbmdpZnkodGhpcy50b2tlbil9IHRvIGEgYmxhbmsgdmFsdWUhYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvdmlkZXIodGhpcy50b2tlbiwge3VzZUV4aXN0aW5nOiBhbGlhc1Rva2VufSk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBESSB0b2tlbiB0byBhIGZ1bmN0aW9uIHdoaWNoIGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L09lak5JZlRUM3piMWlCeGFJWU9iP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgcHJvdmlkZShOdW1iZXIsIHt1c2VGYWN0b3J5OiAoKSA9PiB7IHJldHVybiAxKzI7IH19KSxcbiAgICogICBwcm92aWRlKFN0cmluZywge3VzZUZhY3Rvcnk6ICh2KSA9PiB7IHJldHVybiBcIlZhbHVlOiBcIiArIHY7IH0sIGRlcHM6IFtOdW1iZXJdfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoTnVtYmVyKSkudG9FcXVhbCgzKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChTdHJpbmcpKS50b0VxdWFsKCdWYWx1ZTogMycpO1xuICAgKiBgYGBcbiAgICovXG4gIHRvRmFjdG9yeShmYWN0b3J5OiBGdW5jdGlvbiwgZGVwZW5kZW5jaWVzPzogYW55W10pOiBQcm92aWRlciB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uKGZhY3RvcnkpKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICBgVHJ5aW5nIHRvIGNyZWF0ZSBhIGZhY3RvcnkgcHJvdmlkZXIgYnV0IFwiJHtzdHJpbmdpZnkoZmFjdG9yeSl9XCIgaXMgbm90IGEgZnVuY3Rpb24hYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvdmlkZXIodGhpcy50b2tlbiwge3VzZUZhY3Rvcnk6IGZhY3RvcnksIGRlcHM6IGRlcGVuZGVuY2llc30pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBQcm92aWRlcn0uXG4gKlxuICogU2VlIHtAbGluayBQcm92aWRlcn0gZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiA8IS0tIFRPRE86IGltcHJvdmUgdGhlIGRvY3MgLS0+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlKHRva2VuLCB7dXNlQ2xhc3MsIHVzZVZhbHVlLCB1c2VFeGlzdGluZywgdXNlRmFjdG9yeSwgZGVwcywgbXVsdGl9OiB7XG4gIHVzZUNsYXNzPzogVHlwZSxcbiAgdXNlVmFsdWU/OiBhbnksXG4gIHVzZUV4aXN0aW5nPzogYW55LFxuICB1c2VGYWN0b3J5PzogRnVuY3Rpb24sXG4gIGRlcHM/OiBPYmplY3RbXSxcbiAgbXVsdGk/OiBib29sZWFuXG59KTogUHJvdmlkZXIge1xuICByZXR1cm4gbmV3IFByb3ZpZGVyKHRva2VuLCB7XG4gICAgdXNlQ2xhc3M6IHVzZUNsYXNzLFxuICAgIHVzZVZhbHVlOiB1c2VWYWx1ZSxcbiAgICB1c2VFeGlzdGluZzogdXNlRXhpc3RpbmcsXG4gICAgdXNlRmFjdG9yeTogdXNlRmFjdG9yeSxcbiAgICBkZXBzOiBkZXBzLFxuICAgIG11bHRpOiBtdWx0aVxuICB9KTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar reflective_key_1 = require('./reflective_key');\r\nvar metadata_1 = require('./metadata');\r\nvar reflective_exceptions_1 = require('./reflective_exceptions');\r\nvar forward_ref_1 = require('./forward_ref');\r\nvar provider_1 = require('./provider');\r\n/**\r\n * `Dependency` is used by the framework to extend DI.\r\n * This is internal to Angular and should not be used directly.\r\n */\r\nvar ReflectiveDependency = (function () {\r\n function ReflectiveDependency(key, optional, lowerBoundVisibility, upperBoundVisibility, properties) {\r\n this.key = key;\r\n this.optional = optional;\r\n this.lowerBoundVisibility = lowerBoundVisibility;\r\n this.upperBoundVisibility = upperBoundVisibility;\r\n this.properties = properties;\r\n }\r\n ReflectiveDependency.fromKey = function (key) {\r\n return new ReflectiveDependency(key, false, null, null, []);\r\n };\r\n return ReflectiveDependency;\r\n}());\r\nexports.ReflectiveDependency = ReflectiveDependency;\r\nvar _EMPTY_LIST = lang_1.CONST_EXPR([]);\r\nvar ResolvedReflectiveProvider_ = (function () {\r\n function ResolvedReflectiveProvider_(key, resolvedFactories, multiProvider) {\r\n this.key = key;\r\n this.resolvedFactories = resolvedFactories;\r\n this.multiProvider = multiProvider;\r\n }\r\n Object.defineProperty(ResolvedReflectiveProvider_.prototype, \"resolvedFactory\", {\r\n get: function () { return this.resolvedFactories[0]; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ResolvedReflectiveProvider_;\r\n}());\r\nexports.ResolvedReflectiveProvider_ = ResolvedReflectiveProvider_;\r\n/**\r\n * An internal resolved representation of a factory function created by resolving {@link Provider}.\r\n */\r\nvar ResolvedReflectiveFactory = (function () {\r\n function ResolvedReflectiveFactory(\r\n /**\r\n * Factory function which can return an instance of an object represented by a key.\r\n */\r\n factory, \r\n /**\r\n * Arguments (dependencies) to the `factory` function.\r\n */\r\n dependencies) {\r\n this.factory = factory;\r\n this.dependencies = dependencies;\r\n }\r\n return ResolvedReflectiveFactory;\r\n}());\r\nexports.ResolvedReflectiveFactory = ResolvedReflectiveFactory;\r\n/**\r\n * Resolve a single provider.\r\n */\r\nfunction resolveReflectiveFactory(provider) {\r\n var factoryFn;\r\n var resolvedDeps;\r\n if (lang_1.isPresent(provider.useClass)) {\r\n var useClass = forward_ref_1.resolveForwardRef(provider.useClass);\r\n factoryFn = reflection_1.reflector.factory(useClass);\r\n resolvedDeps = _dependenciesFor(useClass);\r\n }\r\n else if (lang_1.isPresent(provider.useExisting)) {\r\n factoryFn = function (aliasInstance) { return aliasInstance; };\r\n resolvedDeps = [ReflectiveDependency.fromKey(reflective_key_1.ReflectiveKey.get(provider.useExisting))];\r\n }\r\n else if (lang_1.isPresent(provider.useFactory)) {\r\n factoryFn = provider.useFactory;\r\n resolvedDeps = constructDependencies(provider.useFactory, provider.dependencies);\r\n }\r\n else {\r\n factoryFn = function () { return provider.useValue; };\r\n resolvedDeps = _EMPTY_LIST;\r\n }\r\n return new ResolvedReflectiveFactory(factoryFn, resolvedDeps);\r\n}\r\nexports.resolveReflectiveFactory = resolveReflectiveFactory;\r\n/**\r\n * Converts the {@link Provider} into {@link ResolvedProvider}.\r\n *\r\n * {@link Injector} internally only uses {@link ResolvedProvider}, {@link Provider} contains\r\n * convenience provider syntax.\r\n */\r\nfunction resolveReflectiveProvider(provider) {\r\n return new ResolvedReflectiveProvider_(reflective_key_1.ReflectiveKey.get(provider.token), [resolveReflectiveFactory(provider)], provider.multi);\r\n}\r\nexports.resolveReflectiveProvider = resolveReflectiveProvider;\r\n/**\r\n * Resolve a list of Providers.\r\n */\r\nfunction resolveReflectiveProviders(providers) {\r\n var normalized = _normalizeProviders(providers, []);\r\n var resolved = normalized.map(resolveReflectiveProvider);\r\n return collection_1.MapWrapper.values(mergeResolvedReflectiveProviders(resolved, new Map()));\r\n}\r\nexports.resolveReflectiveProviders = resolveReflectiveProviders;\r\n/**\r\n * Merges a list of ResolvedProviders into a list where\r\n * each key is contained exactly once and multi providers\r\n * have been merged.\r\n */\r\nfunction mergeResolvedReflectiveProviders(providers, normalizedProvidersMap) {\r\n for (var i = 0; i < providers.length; i++) {\r\n var provider = providers[i];\r\n var existing = normalizedProvidersMap.get(provider.key.id);\r\n if (lang_1.isPresent(existing)) {\r\n if (provider.multiProvider !== existing.multiProvider) {\r\n throw new reflective_exceptions_1.MixingMultiProvidersWithRegularProvidersError(existing, provider);\r\n }\r\n if (provider.multiProvider) {\r\n for (var j = 0; j < provider.resolvedFactories.length; j++) {\r\n existing.resolvedFactories.push(provider.resolvedFactories[j]);\r\n }\r\n }\r\n else {\r\n normalizedProvidersMap.set(provider.key.id, provider);\r\n }\r\n }\r\n else {\r\n var resolvedProvider;\r\n if (provider.multiProvider) {\r\n resolvedProvider = new ResolvedReflectiveProvider_(provider.key, collection_1.ListWrapper.clone(provider.resolvedFactories), provider.multiProvider);\r\n }\r\n else {\r\n resolvedProvider = provider;\r\n }\r\n normalizedProvidersMap.set(provider.key.id, resolvedProvider);\r\n }\r\n }\r\n return normalizedProvidersMap;\r\n}\r\nexports.mergeResolvedReflectiveProviders = mergeResolvedReflectiveProviders;\r\nfunction _normalizeProviders(providers, res) {\r\n providers.forEach(function (b) {\r\n if (b instanceof lang_1.Type) {\r\n res.push(provider_1.provide(b, { useClass: b }));\r\n }\r\n else if (b instanceof provider_1.Provider) {\r\n res.push(b);\r\n }\r\n else if (b instanceof Array) {\r\n _normalizeProviders(b, res);\r\n }\r\n else if (b instanceof provider_1.ProviderBuilder) {\r\n throw new reflective_exceptions_1.InvalidProviderError(b.token);\r\n }\r\n else {\r\n throw new reflective_exceptions_1.InvalidProviderError(b);\r\n }\r\n });\r\n return res;\r\n}\r\nfunction constructDependencies(typeOrFunc, dependencies) {\r\n if (lang_1.isBlank(dependencies)) {\r\n return _dependenciesFor(typeOrFunc);\r\n }\r\n else {\r\n var params = dependencies.map(function (t) { return [t]; });\r\n return dependencies.map(function (t) { return _extractToken(typeOrFunc, t, params); });\r\n }\r\n}\r\nexports.constructDependencies = constructDependencies;\r\nfunction _dependenciesFor(typeOrFunc) {\r\n var params = reflection_1.reflector.parameters(typeOrFunc);\r\n if (lang_1.isBlank(params))\r\n return [];\r\n if (params.some(lang_1.isBlank)) {\r\n throw new reflective_exceptions_1.NoAnnotationError(typeOrFunc, params);\r\n }\r\n return params.map(function (p) { return _extractToken(typeOrFunc, p, params); });\r\n}\r\nfunction _extractToken(typeOrFunc, metadata /*any[] | any*/, params) {\r\n var depProps = [];\r\n var token = null;\r\n var optional = false;\r\n if (!lang_1.isArray(metadata)) {\r\n if (metadata instanceof metadata_1.InjectMetadata) {\r\n return _createDependency(metadata.token, optional, null, null, depProps);\r\n }\r\n else {\r\n return _createDependency(metadata, optional, null, null, depProps);\r\n }\r\n }\r\n var lowerBoundVisibility = null;\r\n var upperBoundVisibility = null;\r\n for (var i = 0; i < metadata.length; ++i) {\r\n var paramMetadata = metadata[i];\r\n if (paramMetadata instanceof lang_1.Type) {\r\n token = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.InjectMetadata) {\r\n token = paramMetadata.token;\r\n }\r\n else if (paramMetadata instanceof metadata_1.OptionalMetadata) {\r\n optional = true;\r\n }\r\n else if (paramMetadata instanceof metadata_1.SelfMetadata) {\r\n upperBoundVisibility = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.HostMetadata) {\r\n upperBoundVisibility = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.SkipSelfMetadata) {\r\n lowerBoundVisibility = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.DependencyMetadata) {\r\n if (lang_1.isPresent(paramMetadata.token)) {\r\n token = paramMetadata.token;\r\n }\r\n depProps.push(paramMetadata);\r\n }\r\n }\r\n token = forward_ref_1.resolveForwardRef(token);\r\n if (lang_1.isPresent(token)) {\r\n return _createDependency(token, optional, lowerBoundVisibility, upperBoundVisibility, depProps);\r\n }\r\n else {\r\n throw new reflective_exceptions_1.NoAnnotationError(typeOrFunc, params);\r\n }\r\n}\r\nfunction _createDependency(token, optional, lowerBoundVisibility, upperBoundVisibility, depProps) {\r\n return new ReflectiveDependency(reflective_key_1.ReflectiveKey.get(token), optional, lowerBoundVisibility, upperBoundVisibility, depProps);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGl2ZV9wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2RpL3JlZmxlY3RpdmVfcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQVFPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQXNDLGdDQUFnQyxDQUFDLENBQUE7QUFDdkUsMkJBQXdCLHlDQUF5QyxDQUFDLENBQUE7QUFDbEUsK0JBQTRCLGtCQUFrQixDQUFDLENBQUE7QUFDL0MseUJBUU8sWUFBWSxDQUFDLENBQUE7QUFDcEIsc0NBSU8seUJBQXlCLENBQUMsQ0FBQTtBQUNqQyw0QkFBZ0MsZUFBZSxDQUFDLENBQUE7QUFDaEQseUJBQWlELFlBQVksQ0FBQyxDQUFBO0FBRTlEOzs7R0FHRztBQUNIO0lBQ0UsOEJBQW1CLEdBQWtCLEVBQVMsUUFBaUIsRUFBUyxvQkFBeUIsRUFDOUUsb0JBQXlCLEVBQVMsVUFBaUI7UUFEbkQsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVM7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQUs7UUFDOUUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFLO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBTztJQUFHLENBQUM7SUFFbkUsNEJBQU8sR0FBZCxVQUFlLEdBQWtCO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0gsMkJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLDRCQUFvQix1QkFPaEMsQ0FBQTtBQUVELElBQU0sV0FBVyxHQUFHLGlCQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUEwQ25DO0lBQ0UscUNBQW1CLEdB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QUM7UUFDckIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxJQUFJLHlDQUFpQixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0FBQ0gsQ0FBQztBQUVELDJCQUEyQixLQUFLLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUMzRCxRQUFRO0lBQ2pDLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixDQUFDLDhCQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFDeEQsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFR5cGUsXG4gIGlzQmxhbmssXG4gIGlzUHJlc2VudCxcbiAgQ09OU1QsXG4gIENPTlNUX0VYUFIsXG4gIGlzQXJyYXksXG4gIGlzVHlwZVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtSZWZsZWN0aXZlS2V5fSBmcm9tICcuL3JlZmxlY3RpdmVfa2V5JztcbmltcG9ydCB7XG4gIEluamVjdE1ldGFkYXRhLFxuICBJbmplY3RhYmxlTWV0YWRhdGEsXG4gIE9wdGlvbmFsTWV0YWRhdGEsXG4gIFNlbGZNZXRhZGF0YSxcbiAgSG9zdE1ldGFkYXRhLFxuICBTa2lwU2VsZk1ldGFkYXRhLFxuICBEZXBlbmRlbmN5TWV0YWRhdGFcbn0gZnJvbSAnLi9tZXRhZGF0YSc7XG5pbXBvcnQge1xuICBOb0Fubm90YXRpb25FcnJvcixcbiAgTWl4aW5nTXVsdGlQcm92aWRlcnNXaXRoUmVndWxhclByb3ZpZGVyc0Vycm9yLFxuICBJbnZhbGlkUHJvdmlkZXJFcnJvclxufSBmcm9tICcuL3JlZmxlY3RpdmVfZXhjZXB0aW9ucyc7XG5pbXBvcnQge3Jlc29sdmVGb3J3YXJkUmVmfSBmcm9tICcuL2ZvcndhcmRfcmVmJztcbmltcG9ydCB7UHJvdmlkZXIsIFByb3ZpZGVyQnVpbGRlciwgcHJvdmlkZX0gZnJvbSAnLi9wcm92aWRlcic7XG5cbi8qKlxuICogYERlcGVuZGVuY3lgIGlzIHVzZWQgYnkgdGhlIGZyYW1ld29yayB0byBleHRlbmQgREkuXG4gKiBUaGlzIGlzIGludGVybmFsIHRvIEFuZ3VsYXIgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmxlY3RpdmVEZXBlbmRlbmN5IHtcbiAgY29uc3RydWN0b3IocHVibGljIGtleTogUmVmbGVjdGl2ZUtleSwgcHVibGljIG9wdGlvbmFsOiBib29sZWFuLCBwdWJsaWMgbG93ZXJCb3VuZFZpc2liaWxpdHk6IGFueSxcbiAgICAgICAgICAgICAgcHVibGljIHVwcGVyQm91bmRWaXNpYmlsaXR5OiBhbnksIHB1YmxpYyBwcm9wZXJ0aWVzOiBhbnlbXSkge31cblxuICBzdGF0aWMgZnJvbUtleShrZXk6IFJlZmxlY3RpdmVLZXkpOiBSZWZsZWN0aXZlRGVwZW5kZW5jeSB7XG4gICAgcmV0dXJuIG5ldyBSZWZsZWN0aXZlRGVwZW5kZW5jeShrZXksIGZhbHNlLCBudWxsLCBudWxsLCBbXSk7XG4gIH1cbn1cblxuY29uc3QgX0VNUFRZX0xJU1QgPSBDT05TVF9FWFBSKFtdKTtcblxuLyoqXG4gKiBBbiBpbnRlcm5hbCByZXNvbHZlZCByZXByZXNlbnRhdGlvbiBvZiBhIHtAbGluayBQcm92aWRlcn0gdXNlZCBieSB0aGUge0BsaW5rIEluamVjdG9yfS5cbiAqXG4gKiBJdCBpcyB1c3VhbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBgSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZWAuXG4gKlxuICogSXQgY2FuIGJlIGNyZWF0ZWQgbWFudWFsbHksIGFzIGZvbGxvd3M6XG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1JmRW5oaDhrVUVJMEczcXNuSWVUP3AlM0RwcmV2aWV3JnA9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdmFyIHJlc29sdmVkUHJvdmlkZXJzID0gSW5qZWN0b3IucmVzb2x2ZShbbmV3IFByb3ZpZGVyKCdtZXNzYWdlJywge3VzZVZhbHVlOiAnSGVsbG8nfSldKTtcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhyZXNvbHZlZFByb3ZpZGVycyk7XG4gKlxuICogZXhwZWN0KGluamVjdG9yLmdldCgnbWVzc2FnZScpKS50b0VxdWFsKCdIZWxsbycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIge1xuICAvKipcbiAgICogQSBrZXksIHVzdWFsbHkgYSBgVHlwZWAuXG4gICAqL1xuICBrZXk6IFJlZmxlY3RpdmVLZXk7XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggY2FuIHJldHVybiBhbiBpbnN0YW5jZSBvZiBhbiBvYmplY3QgcmVwcmVzZW50ZWQgYnkgYSBrZXkuXG4gICAqL1xuICByZXNvbHZlZEZhY3RvcmllczogUmVzb2x2ZWRSZWZsZWN0aXZlRmFjdG9yeVtdO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHByb3ZpZGVyIGlzIGEgbXVsdGktcHJvdmlkZXIgb3IgYSByZWd1bGFyIHByb3ZpZGVyLlxuICAgKi9cbiAgbXVsdGlQcm92aWRlcjogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZWUge0BsaW5rIFJlc29sdmVkUHJvdmlkZXJ9IGluc3RlYWQuXG4gKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFJlZmxlY3RpdmVCaW5kaW5nIGV4dGVuZHMgUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXIge31cblxuZXhwb3J0IGNsYXNzIFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyXyBpbXBsZW1lbnRzIFJlc29sdmVkUmVmbGVjdGl2ZUJpbmRpbmcge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMga2V5OiBSZWZsZWN0aXZlS2V5LCBwdWJsaWMgcmVzb2x2ZWRGYWN0b3JpZXM6IFJlc29sdmVkUmVmbGVjdGl2ZUZhY3RvcnlbXSxcbiAgICAgICAgICAgICAgcHVibGljIG11bHRpUHJvdmlkZXI6IGJvb2xlYW4pIHt9XG5cbiAgZ2V0IHJlc29sdmVkRmFjdG9yeSgpOiBSZXNvbHZlZFJlZmxlY3RpdmVGYWN0b3J5IHsgcmV0dXJuIHRoaXMucmVzb2x2ZWRGYWN0b3JpZXNbMF07IH1cbn1cblxuLyoqXG4gKiBBbiBpbnRlcm5hbCByZXNvbHZlZCByZXByZXNlbnRhdGlvbiBvZiBhIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlZCBieSByZXNvbHZpbmcge0BsaW5rIFByb3ZpZGVyfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc29sdmVkUmVmbGVjdGl2ZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIC8qKlxuICAgICAgICogRmFjdG9yeSBmdW5jdGlvbiB3aGljaCBjYW4gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGFuIG9iamVjdCByZXByZXNlbnRlZCBieSBhIGtleS5cbiAgICAgICAqL1xuICAgICAgcHVibGljIGZhY3Rvcnk6IEZ1bmN0aW9uLFxuXG4gICAgICAvKipcbiAgICAgICAqIEFyZ3VtZW50cyAoZGVwZW5kZW5jaWVzKSB0byB0aGUgYGZhY3RvcnlgIGZ1bmN0aW9uLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZGVwZW5kZW5jaWVzOiBSZWZsZWN0aXZlRGVwZW5kZW5jeVtdKSB7fVxufVxuXG5cbi8qKlxuICogUmVzb2x2ZSBhIHNpbmdsZSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWZsZWN0aXZlRmFjdG9yeShwcm92aWRlcjogUHJvdmlkZXIpOiBSZXNvbHZlZFJlZmxlY3RpdmVGYWN0b3J5IHtcbiAgdmFyIGZhY3RvcnlGbjogRnVuY3Rpb247XG4gIHZhciByZXNvbHZlZERlcHM7XG4gIGlmIChpc1ByZXNlbnQocHJvdmlkZXIudXNlQ2xhc3MpKSB7XG4gICAgdmFyIHVzZUNsYXNzID0gcmVzb2x2ZUZvcndhcmRSZWYocHJvdmlkZXIudXNlQ2xhc3MpO1xuICAgIGZhY3RvcnlGbiA9IHJlZmxlY3Rvci5mYWN0b3J5KHVzZUNsYXNzKTtcbiAgICByZXNvbHZlZERlcHMgPSBfZGVwZW5kZW5jaWVzRm9yKHVzZUNsYXNzKTtcbiAgfSBlbHNlIGlmIChpc1ByZXNlbnQocHJvdmlkZXIudXNlRXhpc3RpbmcpKSB7XG4gICAgZmFjdG9yeUZuID0gKGFsaWFzSW5zdGFuY2UpID0+IGFsaWFzSW5zdGFuY2U7XG4gICAgcmVzb2x2ZWREZXBzID0gW1JlZmxlY3RpdmVEZXBlbmRlbmN5LmZyb21LZXkoUmVmbGVjdGl2ZUtleS5nZXQocHJvdmlkZXIudXNlRXhpc3RpbmcpKV07XG4gIH0gZWxzZSBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUZhY3RvcnkpKSB7XG4gICAgZmFjdG9yeUZuID0gcHJvdmlkZXIudXNlRmFjdG9yeTtcbiAgICByZXNvbHZlZERlcHMgPSBjb25zdHJ1Y3REZXBlbmRlbmNpZXMocHJvdmlkZXIudXNlRmFjdG9yeSwgcHJvdmlkZXIuZGVwZW5kZW5jaWVzKTtcbiAgfSBlbHNlIHtcbiAgICBmYWN0b3J5Rm4gPSAoKSA9PiBwcm92aWRlci51c2VWYWx1ZTtcbiAgICByZXNvbHZlZERlcHMgPSBfRU1QVFlfTElTVDtcbiAgfVxuICByZXR1cm4gbmV3IFJlc29sdmVkUmVmbGVjdGl2ZUZhY3RvcnkoZmFjdG9yeUZuLCByZXNvbHZlZERlcHMpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSB7QGxpbmsgUHJvdmlkZXJ9IGludG8ge0BsaW5rIFJlc29sdmVkUHJvdmlkZXJ9LlxuICpcbiAqIHtAbGluayBJbmplY3Rvcn0gaW50ZXJuYWxseSBvbmx5IHVzZXMge0BsaW5rIFJlc29sdmVkUHJvdmlkZXJ9LCB7QGxpbmsgUHJvdmlkZXJ9IGNvbnRhaW5zXG4gKiBjb252ZW5pZW5jZSBwcm92aWRlciBzeW50YXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmVmbGVjdGl2ZVByb3ZpZGVyKHByb3ZpZGVyOiBQcm92aWRlcik6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyIHtcbiAgcmV0dXJuIG5ldyBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcl8oUmVmbGVjdGl2ZUtleS5nZXQocHJvdmlkZXIudG9rZW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVzb2x2ZVJlZmxlY3RpdmVGYWN0b3J5KHByb3ZpZGVyKV0sIHByb3ZpZGVyLm11bHRpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgbGlzdCBvZiBQcm92aWRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmVmbGVjdGl2ZVByb3ZpZGVycyhcbiAgICBwcm92aWRlcnM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyW10ge1xuICB2YXIgbm9ybWFsaXplZCA9IF9ub3JtYWxpemVQcm92aWRlcnMocHJvdmlkZXJzLCBbXSk7XG4gIHZhciByZXNvbHZlZCA9IG5vcm1hbGl6ZWQubWFwKHJlc29sdmVSZWZsZWN0aXZlUHJvdmlkZXIpO1xuICByZXR1cm4gTWFwV3JhcHBlci52YWx1ZXMoXG4gICAgICBtZXJnZVJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVycyhyZXNvbHZlZCwgbmV3IE1hcDxudW1iZXIsIFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyPigpKSk7XG59XG5cbi8qKlxuICogTWVyZ2VzIGEgbGlzdCBvZiBSZXNvbHZlZFByb3ZpZGVycyBpbnRvIGEgbGlzdCB3aGVyZVxuICogZWFjaCBrZXkgaXMgY29udGFpbmVkIGV4YWN0bHkgb25jZSBhbmQgbXVsdGkgcHJvdmlkZXJzXG4gKiBoYXZlIGJlZW4gbWVyZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcnMoXG4gICAgcHJvdmlkZXJzOiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcltdLFxuICAgIG5vcm1hbGl6ZWRQcm92aWRlcnNNYXA6IE1hcDxudW1iZXIsIFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyPik6XG4gICAgTWFwPG51bWJlciwgUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXI+IHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm92aWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvdmlkZXIgPSBwcm92aWRlcnNbaV07XG4gICAgdmFyIGV4aXN0aW5nID0gbm9ybWFsaXplZFByb3ZpZGVyc01hcC5nZXQocHJvdmlkZXIua2V5LmlkKTtcbiAgICBpZiAoaXNQcmVzZW50KGV4aXN0aW5nKSkge1xuICAgICAgaWYgKHByb3ZpZGVyLm11bHRpUHJvdmlkZXIgIT09IGV4aXN0aW5nLm11bHRpUHJvdmlkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IE1peGluZ011bHRpUHJvdmlkZXJzV2l0aFJlZ3VsYXJQcm92aWRlcnNFcnJvcihleGlzdGluZywgcHJvdmlkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3ZpZGVyLm11bHRpUHJvdmlkZXIpIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm92aWRlci5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGV4aXN0aW5nLnJlc29sdmVkRmFjdG9yaWVzLnB1c2gocHJvdmlkZXIucmVzb2x2ZWRGYWN0b3JpZXNbal0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemVkUHJvdmlkZXJzTWFwLnNldChwcm92aWRlci5rZXkuaWQsIHByb3ZpZGVyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlc29sdmVkUHJvdmlkZXI7XG4gICAgICBpZiAocHJvdmlkZXIubXVsdGlQcm92aWRlcikge1xuICAgICAgICByZXNvbHZlZFByb3ZpZGVyID0gbmV3IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyXyhcbiAgICAgICAgICAgIHByb3ZpZGVyLmtleSwgTGlzdFdyYXBwZXIuY2xvbmUocHJvdmlkZXIucmVzb2x2ZWRGYWN0b3JpZXMpLCBwcm92aWRlci5tdWx0aVByb3ZpZGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmVkUHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgICAgIH1cbiAgICAgIG5vcm1hbGl6ZWRQcm92aWRlcnNNYXAuc2V0KHByb3ZpZGVyLmtleS5pZCwgcmVzb2x2ZWRQcm92aWRlcik7XG4gICAgfVxuICB9XG4gIHJldHVybiBub3JtYWxpemVkUHJvdmlkZXJzTWFwO1xufVxuXG5mdW5jdGlvbiBfbm9ybWFsaXplUHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgUHJvdmlkZXJCdWlsZGVyIHwgYW55W10+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXM6IFByb3ZpZGVyW10pOiBQcm92aWRlcltdIHtcbiAgcHJvdmlkZXJzLmZvckVhY2goYiA9PiB7XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBUeXBlKSB7XG4gICAgICByZXMucHVzaChwcm92aWRlKGIsIHt1c2VDbGFzczogYn0pKTtcblxuICAgIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIFByb3ZpZGVyKSB7XG4gICAgICByZXMucHVzaChiKTtcblxuICAgIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBfbm9ybWFsaXplUHJvdmlkZXJzKGIsIHJlcyk7XG5cbiAgICB9IGVsc2UgaWYgKGIgaW5zdGFuY2VvZiBQcm92aWRlckJ1aWxkZXIpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUHJvdmlkZXJFcnJvcihiLnRva2VuKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFByb3ZpZGVyRXJyb3IoYik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RGVwZW5kZW5jaWVzKHR5cGVPckZ1bmM6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBhbnlbXSk6IFJlZmxlY3RpdmVEZXBlbmRlbmN5W10ge1xuICBpZiAoaXNCbGFuayhkZXBlbmRlbmNpZXMpKSB7XG4gICAgcmV0dXJuIF9kZXBlbmRlbmNpZXNGb3IodHlwZU9yRnVuYyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcmFtczogYW55W11bXSA9IGRlcGVuZGVuY2llcy5tYXAodCA9PiBbdF0pO1xuICAgIHJldHVybiBkZXBlbmRlbmNpZXMubWFwKHQgPT4gX2V4dHJhY3RUb2tlbih0eXBlT3JGdW5jLCB0LCBwYXJhbXMpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVwZW5kZW5jaWVzRm9yKHR5cGVPckZ1bmM6IGFueSk6IFJlZmxlY3RpdmVEZXBlbmRlbmN5W10ge1xuICB2YXIgcGFyYW1zID0gcmVmbGVjdG9yLnBhcmFtZXRlcnModHlwZU9yRnVuYyk7XG4gIGlmIChpc0JsYW5rKHBhcmFtcykpIHJldHVybiBbXTtcbiAgaWYgKHBhcmFtcy5zb21lKGlzQmxhbmspKSB7XG4gICAgdGhyb3cgbmV3IE5vQW5ub3RhdGlvbkVycm9yKHR5cGVPckZ1bmMsIHBhcmFtcyk7XG4gIH1cbiAgcmV0dXJuIHBhcmFtcy5tYXAoKHA6IGFueVtdKSA9PiBfZXh0cmFjdFRva2VuKHR5cGVPckZ1bmMsIHAsIHBhcmFtcykpO1xufVxuXG5mdW5jdGlvbiBfZXh0cmFjdFRva2VuKHR5cGVPckZ1bmMsIG1ldGFkYXRhIC8qYW55W10gfCBhbnkqLyxcbiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBhbnlbXVtdKTogUmVmbGVjdGl2ZURlcGVuZGVuY3kge1xuICB2YXIgZGVwUHJvcHMgPSBbXTtcbiAgdmFyIHRva2VuID0gbnVsbDtcbiAgdmFyIG9wdGlvbmFsID0gZmFsc2U7XG5cbiAgaWYgKCFpc0FycmF5KG1ldGFkYXRhKSkge1xuICAgIGlmIChtZXRhZGF0YSBpbnN0YW5jZW9mIEluamVjdE1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gX2NyZWF0ZURlcGVuZGVuY3kobWV0YWRhdGEudG9rZW4sIG9wdGlvbmFsLCBudWxsLCBudWxsLCBkZXBQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBfY3JlYXRlRGVwZW5kZW5jeShtZXRhZGF0YSwgb3B0aW9uYWwsIG51bGwsIG51bGwsIGRlcFByb3BzKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbG93ZXJCb3VuZFZpc2liaWxpdHkgPSBudWxsO1xuICB2YXIgdXBwZXJCb3VuZFZpc2liaWxpdHkgPSBudWxsO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0YWRhdGEubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyYW1NZXRhZGF0YSA9IG1ldGFkYXRhW2ldO1xuXG4gICAgaWYgKHBhcmFtTWV0YWRhdGEgaW5zdGFuY2VvZiBUeXBlKSB7XG4gICAgICB0b2tlbiA9IHBhcmFtTWV0YWRhdGE7XG5cbiAgICB9IGVsc2UgaWYgKHBhcmFtTWV0YWRhdGEgaW5zdGFuY2VvZiBJbmplY3RNZXRhZGF0YSkge1xuICAgICAgdG9rZW4gPSBwYXJhbU1ldGFkYXRhLnRva2VuO1xuXG4gICAgfSBlbHNlIGlmIChwYXJhbU1ldGFkYXRhIGluc3RhbmNlb2YgT3B0aW9uYWxNZXRhZGF0YSkge1xuICAgICAgb3B0aW9uYWwgPSB0cnVlO1xuXG4gICAgfSBlbHNlIGlmIChwYXJhbU1ldGFkYXRhIGluc3RhbmNlb2YgU2VsZk1ldGFkYXRhKSB7XG4gICAgICB1cHBlckJvdW5kVmlzaWJpbGl0eSA9IHBhcmFtTWV0YWRhdGE7XG5cbiAgICB9IGVsc2UgaWYgKHBhcmFtTWV0YWRhdGEgaW5zdGFuY2VvZiBIb3N0TWV0YWRhdGEpIHtcbiAgICAgIHVwcGVyQm91bmRWaXNpYmlsaXR5ID0gcGFyYW1NZXRhZGF0YTtcblxuICAgIH0gZWxzZSBpZiAocGFyYW1NZXRhZGF0YSBpbnN0YW5jZW9mIFNraXBTZWxmTWV0YWRhdGEpIHtcbiAgICAgIGxvd2VyQm91bmRWaXNpYmlsaXR5ID0gcGFyYW1NZXRhZGF0YTtcblxuICAgIH0gZWxzZSBpZiAocGFyYW1NZXRhZGF0YSBpbnN0YW5jZW9mIERlcGVuZGVuY3lNZXRhZGF0YSkge1xuICAgICAgaWYgKGlzUHJlc2VudChwYXJhbU1ldGFkYXRhLnRva2VuKSkge1xuICAgICAgICB0b2tlbiA9IHBhcmFtTWV0YWRhdGEudG9rZW47XG4gICAgICB9XG4gICAgICBkZXBQcm9wcy5wdXNoKHBhcmFtTWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHRva2VuID0gcmVzb2x2ZUZvcndhcmRSZWYodG9rZW4pO1xuXG4gIGlmIChpc1ByZXNlbnQodG9rZW4pKSB7XG4gICAgcmV0dXJuIF9jcmVhdGVEZXBlbmRlbmN5KHRva2VuLCBvcHRpb25hbCwgbG93ZXJCb3VuZFZpc2liaWxpdHksIHVwcGVyQm91bmRWaXNpYmlsaXR5LCBkZXBQcm9wcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IE5vQW5ub3RhdGlvbkVycm9yKHR5cGVPckZ1bmMsIHBhcmFtcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZURlcGVuZGVuY3kodG9rZW4sIG9wdGlvbmFsLCBsb3dlckJvdW5kVmlzaWJpbGl0eSwgdXBwZXJCb3VuZFZpc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBQcm9wcyk6IFJlZmxlY3RpdmVEZXBlbmRlbmN5IHtcbiAgcmV0dXJuIG5ldyBSZWZsZWN0aXZlRGVwZW5kZW5jeShSZWZsZWN0aXZlS2V5LmdldCh0b2tlbiksIG9wdGlvbmFsLCBsb3dlckJvdW5kVmlzaWJpbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlckJvdW5kVmlzaWJpbGl0eSwgZGVwUHJvcHMpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Allows to refer to references which are not yet defined.\r\n *\r\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\r\n * DI is declared,\r\n * but not yet defined. It is also used when the `token` which we use when creating a query is not\r\n * yet defined.\r\n *\r\n * ### Example\r\n * {@example core/di/ts/forward_ref/forward_ref.ts region='forward_ref'}\r\n */\r\nfunction forwardRef(forwardRefFn) {\r\n forwardRefFn.__forward_ref__ = forwardRef;\r\n forwardRefFn.toString = function () { return lang_1.stringify(this()); };\r\n return forwardRefFn;\r\n}\r\nexports.forwardRef = forwardRef;\r\n/**\r\n * Lazily retrieves the reference value from a forwardRef.\r\n *\r\n * Acts as the identity function when given a non-forward-ref value.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/GU72mJrk1fiodChcmiDR?p=preview))\r\n *\r\n * ```typescript\r\n * var ref = forwardRef(() => \"refValue\");\r\n * expect(resolveForwardRef(ref)).toEqual(\"refValue\");\r\n * expect(resolveForwardRef(\"regularValue\")).toEqual(\"regularValue\");\r\n * ```\r\n *\r\n * See: {@link forwardRef}\r\n */\r\nfunction resolveForwardRef(type) {\r\n if (lang_1.isFunction(type) && type.hasOwnProperty('__forward_ref__') &&\r\n type.__forward_ref__ === forwardRef) {\r\n return type();\r\n }\r\n else {\r\n return type;\r\n }\r\n}\r\nexports.resolveForwardRef = resolveForwardRef;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZF9yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kaS9mb3J3YXJkX3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQTBDLDBCQUEwQixDQUFDLENBQUE7QUFXckU7Ozs7Ozs7Ozs7R0FVRztBQUNILG9CQUEyQixZQUEwQjtJQUM3QyxZQUFhLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztJQUMzQyxZQUFhLENBQUMsUUFBUSxHQUFHLGNBQWEsTUFBTSxDQUFDLGdCQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQWEsWUFBYSxDQUFDO0FBQ25DLENBQUM7QUFKZSxrQkFBVSxhQUl6QixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCwyQkFBa0MsSUFBUztJQUN6QyxFQUFFLENBQUMsQ0FBQyxpQkFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBZ0IsSUFBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBUGUseUJBQWlCLG9CQU9oQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlLCBzdHJpbmdpZnksIGlzRnVuY3Rpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHRoYXQgYSBmdW5jdGlvbiBwYXNzZWQgaW50byB7QGxpbmsgZm9yd2FyZFJlZn0gaGFzIHRvIGltcGxlbWVudC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL2RpL3RzL2ZvcndhcmRfcmVmL2ZvcndhcmRfcmVmLnRzIHJlZ2lvbj0nZm9yd2FyZF9yZWZfZm4nfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcndhcmRSZWZGbiB7ICgpOiBhbnk7IH1cblxuLyoqXG4gKiBBbGxvd3MgdG8gcmVmZXIgdG8gcmVmZXJlbmNlcyB3aGljaCBhcmUgbm90IHlldCBkZWZpbmVkLlxuICpcbiAqIEZvciBpbnN0YW5jZSwgYGZvcndhcmRSZWZgIGlzIHVzZWQgd2hlbiB0aGUgYHRva2VuYCB3aGljaCB3ZSBuZWVkIHRvIHJlZmVyIHRvIGZvciB0aGUgcHVycG9zZXMgb2ZcbiAqIERJIGlzIGRlY2xhcmVkLFxuICogYnV0IG5vdCB5ZXQgZGVmaW5lZC4gSXQgaXMgYWxzbyB1c2VkIHdoZW4gdGhlIGB0b2tlbmAgd2hpY2ggd2UgdXNlIHdoZW4gY3JlYXRpbmcgYSBxdWVyeSBpcyBub3RcbiAqIHlldCBkZWZpbmVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKiB7QGV4YW1wbGUgY29yZS9kaS90cy9mb3J3YXJkX3JlZi9mb3J3YXJkX3JlZi50cyByZWdpb249J2ZvcndhcmRfcmVmJ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRSZWYoZm9yd2FyZFJlZkZuOiBGb3J3YXJkUmVmRm4pOiBUeXBlIHtcbiAgKDxhbnk+Zm9yd2FyZFJlZkZuKS5fX2ZvcndhcmRfcmVmX18gPSBmb3J3YXJkUmVmO1xuICAoPGFueT5mb3J3YXJkUmVmRm4pLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBzdHJpbmdpZnkodGhpcygpKTsgfTtcbiAgcmV0dXJuICg8VHlwZT48YW55PmZvcndhcmRSZWZGbik7XG59XG5cbi8qKlxuICogTGF6aWx5IHJldHJpZXZlcyB0aGUgcmVmZXJlbmNlIHZhbHVlIGZyb20gYSBmb3J3YXJkUmVmLlxuICpcbiAqIEFjdHMgYXMgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIHdoZW4gZ2l2ZW4gYSBub24tZm9yd2FyZC1yZWYgdmFsdWUuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0dVNzJtSnJrMWZpb2RDaGNtaURSP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdmFyIHJlZiA9IGZvcndhcmRSZWYoKCkgPT4gXCJyZWZWYWx1ZVwiKTtcbiAqIGV4cGVjdChyZXNvbHZlRm9yd2FyZFJlZihyZWYpKS50b0VxdWFsKFwicmVmVmFsdWVcIik7XG4gKiBleHBlY3QocmVzb2x2ZUZvcndhcmRSZWYoXCJyZWd1bGFyVmFsdWVcIikpLnRvRXF1YWwoXCJyZWd1bGFyVmFsdWVcIik7XG4gKiBgYGBcbiAqXG4gKiBTZWU6IHtAbGluayBmb3J3YXJkUmVmfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZvcndhcmRSZWYodHlwZTogYW55KTogYW55IHtcbiAgaWYgKGlzRnVuY3Rpb24odHlwZSkgJiYgdHlwZS5oYXNPd25Qcm9wZXJ0eSgnX19mb3J3YXJkX3JlZl9fJykgJiZcbiAgICAgIHR5cGUuX19mb3J3YXJkX3JlZl9fID09PSBmb3J3YXJkUmVmKSB7XG4gICAgcmV0dXJuICg8Rm9yd2FyZFJlZkZuPnR5cGUpKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar forward_ref_1 = require('./forward_ref');\r\n/**\r\n * A unique object used for retrieving items from the {@link ReflectiveInjector}.\r\n *\r\n * Keys have:\r\n * - a system-wide unique `id`.\r\n * - a `token`.\r\n *\r\n * `Key` is used internally by {@link ReflectiveInjector} because its system-wide unique `id` allows\r\n * the\r\n * injector to store created objects in a more efficient way.\r\n *\r\n * `Key` should not be created directly. {@link ReflectiveInjector} creates keys automatically when\r\n * resolving\r\n * providers.\r\n */\r\nvar ReflectiveKey = (function () {\r\n /**\r\n * Private\r\n */\r\n function ReflectiveKey(token, id) {\r\n this.token = token;\r\n this.id = id;\r\n if (lang_1.isBlank(token)) {\r\n throw new exceptions_1.BaseException('Token must be defined!');\r\n }\r\n }\r\n Object.defineProperty(ReflectiveKey.prototype, \"displayName\", {\r\n /**\r\n * Returns a stringified token.\r\n */\r\n get: function () { return lang_1.stringify(this.token); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Retrieves a `Key` for a token.\r\n */\r\n ReflectiveKey.get = function (token) {\r\n return _globalKeyRegistry.get(forward_ref_1.resolveForwardRef(token));\r\n };\r\n Object.defineProperty(ReflectiveKey, \"numberOfKeys\", {\r\n /**\r\n * @returns the number of keys registered in the system.\r\n */\r\n get: function () { return _globalKeyRegistry.numberOfKeys; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ReflectiveKey;\r\n}());\r\nexports.ReflectiveKey = ReflectiveKey;\r\n/**\r\n * @internal\r\n */\r\nvar KeyRegistry = (function () {\r\n function KeyRegistry() {\r\n this._allKeys = new Map();\r\n }\r\n KeyRegistry.prototype.get = function (token) {\r\n if (token instanceof ReflectiveKey)\r\n return token;\r\n if (this._allKeys.has(token)) {\r\n return this._allKeys.get(token);\r\n }\r\n var newKey = new ReflectiveKey(token, ReflectiveKey.numberOfKeys);\r\n this._allKeys.set(token, newKey);\r\n return newKey;\r\n };\r\n Object.defineProperty(KeyRegistry.prototype, \"numberOfKeys\", {\r\n get: function () { return this._allKeys.size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return KeyRegistry;\r\n}());\r\nexports.KeyRegistry = KeyRegistry;\r\nvar _globalKeyRegistry = new KeyRegistry();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGl2ZV9rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kaS9yZWZsZWN0aXZlX2tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQThDLDBCQUEwQixDQUFDLENBQUE7QUFDekUsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UsNEJBQWdDLGVBQWUsQ0FBQyxDQUFBO0FBRWhEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0g7SUFDRTs7T0FFRztJQUNILHVCQUFtQixLQUFhLEVBQVMsRUFBVTtRQUFoQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNqRCxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLE1BQU0sSUFBSSwwQkFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFLRCxzQkFBSSxzQ0FBVztRQUhmOztXQUVHO2FBQ0gsY0FBNEIsTUFBTSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFM0Q7O09BRUc7SUFDSSxpQkFBRyxHQUFWLFVBQVcsS0FBYTtRQUN0QixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLCtCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUtELHNCQUFXLDZCQUFZO1FBSHZCOztXQUVHO2FBQ0gsY0FBb0MsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQy9FLG9CQUFDO0FBQUQsQ0FBQyxBQTFCRCxJQTBCQztBQTFCWSxxQkFBYSxnQkEwQnpCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQUE7UUFDVSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7SUFldEQsQ0FBQztJQWJDLHlCQUFHLEdBQUgsVUFBSSxLQUFhO1FBQ2YsRUFBRSxDQUFDLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQztZQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFakQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsc0JBQUkscUNBQVk7YUFBaEIsY0FBNkIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDM0Qsa0JBQUM7QUFBRCxDQUFDLEFBaEJELElBZ0JDO0FBaEJZLG1CQUFXLGNBZ0J2QixDQUFBO0FBRUQsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJpbmdpZnksIENPTlNULCBUeXBlLCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnLi9mb3J3YXJkX3JlZic7XG5cbi8qKlxuICogQSB1bmlxdWUgb2JqZWN0IHVzZWQgZm9yIHJldHJpZXZpbmcgaXRlbXMgZnJvbSB0aGUge0BsaW5rIFJlZmxlY3RpdmVJbmplY3Rvcn0uXG4gKlxuICogS2V5cyBoYXZlOlxuICogLSBhIHN5c3RlbS13aWRlIHVuaXF1ZSBgaWRgLlxuICogLSBhIGB0b2tlbmAuXG4gKlxuICogYEtleWAgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHtAbGluayBSZWZsZWN0aXZlSW5qZWN0b3J9IGJlY2F1c2UgaXRzIHN5c3RlbS13aWRlIHVuaXF1ZSBgaWRgIGFsbG93c1xuICogdGhlXG4gKiBpbmplY3RvciB0byBzdG9yZSBjcmVhdGVkIG9iamVjdHMgaW4gYSBtb3JlIGVmZmljaWVudCB3YXkuXG4gKlxuICogYEtleWAgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGRpcmVjdGx5LiB7QGxpbmsgUmVmbGVjdGl2ZUluamVjdG9yfSBjcmVhdGVzIGtleXMgYXV0b21hdGljYWxseSB3aGVuXG4gKiByZXNvbHZpbmdcbiAqIHByb3ZpZGVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmxlY3RpdmVLZXkge1xuICAvKipcbiAgICogUHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHRva2VuOiBPYmplY3QsIHB1YmxpYyBpZDogbnVtYmVyKSB7XG4gICAgaWYgKGlzQmxhbmsodG9rZW4pKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignVG9rZW4gbXVzdCBiZSBkZWZpbmVkIScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5naWZpZWQgdG9rZW4uXG4gICAqL1xuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHN0cmluZ2lmeSh0aGlzLnRva2VuKTsgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBgS2V5YCBmb3IgYSB0b2tlbi5cbiAgICovXG4gIHN0YXRpYyBnZXQodG9rZW46IE9iamVjdCk6IFJlZmxlY3RpdmVLZXkge1xuICAgIHJldHVybiBfZ2xvYmFsS2V5UmVnaXN0cnkuZ2V0KHJlc29sdmVGb3J3YXJkUmVmKHRva2VuKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIHJlZ2lzdGVyZWQgaW4gdGhlIHN5c3RlbS5cbiAgICovXG4gIHN0YXRpYyBnZXQgbnVtYmVyT2ZLZXlzKCk6IG51bWJlciB7IHJldHVybiBfZ2xvYmFsS2V5UmVnaXN0cnkubnVtYmVyT2ZLZXlzOyB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlSZWdpc3RyeSB7XG4gIHByaXZhdGUgX2FsbEtleXMgPSBuZXcgTWFwPE9iamVjdCwgUmVmbGVjdGl2ZUtleT4oKTtcblxuICBnZXQodG9rZW46IE9iamVjdCk6IFJlZmxlY3RpdmVLZXkge1xuICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFJlZmxlY3RpdmVLZXkpIHJldHVybiB0b2tlbjtcblxuICAgIGlmICh0aGlzLl9hbGxLZXlzLmhhcyh0b2tlbikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hbGxLZXlzLmdldCh0b2tlbik7XG4gICAgfVxuXG4gICAgdmFyIG5ld0tleSA9IG5ldyBSZWZsZWN0aXZlS2V5KHRva2VuLCBSZWZsZWN0aXZlS2V5Lm51bWJlck9mS2V5cyk7XG4gICAgdGhpcy5fYWxsS2V5cy5zZXQodG9rZW4sIG5ld0tleSk7XG4gICAgcmV0dXJuIG5ld0tleTtcbiAgfVxuXG4gIGdldCBudW1iZXJPZktleXMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2FsbEtleXMuc2l6ZTsgfVxufVxuXG52YXIgX2dsb2JhbEtleVJlZ2lzdHJ5ID0gbmV3IEtleVJlZ2lzdHJ5KCk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nfunction findFirstClosedCycle(keys) {\r\n var res = [];\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (collection_1.ListWrapper.contains(res, keys[i])) {\r\n res.push(keys[i]);\r\n return res;\r\n }\r\n else {\r\n res.push(keys[i]);\r\n }\r\n }\r\n return res;\r\n}\r\nfunction constructResolvingPath(keys) {\r\n if (keys.length > 1) {\r\n var reversed = findFirstClosedCycle(collection_1.ListWrapper.reversed(keys));\r\n var tokenStrs = reversed.map(function (k) { return lang_1.stringify(k.token); });\r\n return \" (\" + tokenStrs.join(' -> ') + \")\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n/**\r\n * Base class for all errors arising from misconfigured providers.\r\n */\r\nvar AbstractProviderError = (function (_super) {\r\n __extends(AbstractProviderError, _super);\r\n function AbstractProviderError(injector, key, constructResolvingMessage) {\r\n _super.call(this, \"DI Exception\");\r\n this.keys = [key];\r\n this.injectors = [injector];\r\n this.constructResolvingMessage = constructResolvingMessage;\r\n this.message = this.constructResolvingMessage(this.keys);\r\n }\r\n AbstractProviderError.prototype.addKey = function (injector, key) {\r\n this.injectors.push(injector);\r\n this.keys.push(key);\r\n this.message = this.constructResolvingMessage(this.keys);\r\n };\r\n Object.defineProperty(AbstractProviderError.prototype, \"context\", {\r\n get: function () { return this.injectors[this.injectors.length - 1].debugContext(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbstractProviderError;\r\n}(exceptions_1.BaseException));\r\nexports.AbstractProviderError = AbstractProviderError;\r\n/**\r\n * Thrown when trying to retrieve a dependency by `Key` from {@link Injector}, but the\r\n * {@link Injector} does not have a {@link Provider} for {@link Key}.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\r\n *\r\n * ```typescript\r\n * class A {\r\n * constructor(b:B) {}\r\n * }\r\n *\r\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\r\n * ```\r\n */\r\nvar NoProviderError = (function (_super) {\r\n __extends(NoProviderError, _super);\r\n function NoProviderError(injector, key) {\r\n _super.call(this, injector, key, function (keys) {\r\n var first = lang_1.stringify(collection_1.ListWrapper.first(keys).token);\r\n return \"No provider for \" + first + \"!\" + constructResolvingPath(keys);\r\n });\r\n }\r\n return NoProviderError;\r\n}(AbstractProviderError));\r\nexports.NoProviderError = NoProviderError;\r\n/**\r\n * Thrown when dependencies form a cycle.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(\"one\", {useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]}),\r\n * provide(\"two\", {useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]})\r\n * ]);\r\n *\r\n * expect(() => injector.get(\"one\")).toThrowError();\r\n * ```\r\n *\r\n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\r\n */\r\nvar CyclicDependencyError = (function (_super) {\r\n __extends(CyclicDependencyError, _super);\r\n function CyclicDependencyError(injector, key) {\r\n _super.call(this, injector, key, function (keys) {\r\n return \"Cannot instantiate cyclic dependency!\" + constructResolvingPath(keys);\r\n });\r\n }\r\n return CyclicDependencyError;\r\n}(AbstractProviderError));\r\nexports.CyclicDependencyError = CyclicDependencyError;\r\n/**\r\n * Thrown when a constructing type returns with an Error.\r\n *\r\n * The `InstantiationError` class contains the original error plus the dependency graph which caused\r\n * this object to be instantiated.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\r\n *\r\n * ```typescript\r\n * class A {\r\n * constructor() {\r\n * throw new Error('message');\r\n * }\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([A]);\r\n\r\n * try {\r\n * injector.get(A);\r\n * } catch (e) {\r\n * expect(e instanceof InstantiationError).toBe(true);\r\n * expect(e.originalException.message).toEqual(\"message\");\r\n * expect(e.originalStack).toBeDefined();\r\n * }\r\n * ```\r\n */\r\nvar InstantiationError = (function (_super) {\r\n __extends(InstantiationError, _super);\r\n function InstantiationError(injector, originalException, originalStack, key) {\r\n _super.call(this, \"DI Exception\", originalException, originalStack, null);\r\n this.keys = [key];\r\n this.injectors = [injector];\r\n }\r\n InstantiationError.prototype.addKey = function (injector, key) {\r\n this.injectors.push(injector);\r\n this.keys.push(key);\r\n };\r\n Object.defineProperty(InstantiationError.prototype, \"wrapperMessage\", {\r\n get: function () {\r\n var first = lang_1.stringify(collection_1.ListWrapper.first(this.keys).token);\r\n return \"Error during instantiation of \" + first + \"!\" + constructResolvingPath(this.keys) + \".\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InstantiationError.prototype, \"causeKey\", {\r\n get: function () { return this.keys[0]; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InstantiationError.prototype, \"context\", {\r\n get: function () { return this.injectors[this.injectors.length - 1].debugContext(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return InstantiationError;\r\n}(exceptions_1.WrappedException));\r\nexports.InstantiationError = InstantiationError;\r\n/**\r\n * Thrown when an object other then {@link Provider} (or `Type`) is passed to {@link Injector}\r\n * creation.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\r\n *\r\n * ```typescript\r\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\r\n * ```\r\n */\r\nvar InvalidProviderError = (function (_super) {\r\n __extends(InvalidProviderError, _super);\r\n function InvalidProviderError(provider) {\r\n _super.call(this, \"Invalid provider - only instances of Provider and Type are allowed, got: \" +\r\n provider.toString());\r\n }\r\n return InvalidProviderError;\r\n}(exceptions_1.BaseException));\r\nexports.InvalidProviderError = InvalidProviderError;\r\n/**\r\n * Thrown when the class has no annotation information.\r\n *\r\n * Lack of annotation information prevents the {@link Injector} from determining which dependencies\r\n * need to be injected into the constructor.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\r\n *\r\n * ```typescript\r\n * class A {\r\n * constructor(b) {}\r\n * }\r\n *\r\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\r\n * ```\r\n *\r\n * This error is also thrown when the class not marked with {@link Injectable} has parameter types.\r\n *\r\n * ```typescript\r\n * class B {}\r\n *\r\n * class A {\r\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\r\n * }\r\n *\r\n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\r\n * ```\r\n */\r\nvar NoAnnotationError = (function (_super) {\r\n __extends(NoAnnotationError, _super);\r\n function NoAnnotationError(typeOrFunc, params) {\r\n _super.call(this, NoAnnotationError._genMessage(typeOrFunc, params));\r\n }\r\n NoAnnotationError._genMessage = function (typeOrFunc, params) {\r\n var signature = [];\r\n for (var i = 0, ii = params.length; i < ii; i++) {\r\n var parameter = params[i];\r\n if (lang_1.isBlank(parameter) || parameter.length == 0) {\r\n signature.push('?');\r\n }\r\n else {\r\n signature.push(parameter.map(lang_1.stringify).join(' '));\r\n }\r\n }\r\n return \"Cannot resolve all parameters for '\" + lang_1.stringify(typeOrFunc) + \"'(\" +\r\n signature.join(', ') + \"). \" +\r\n \"Make sure that all the parameters are decorated with Inject or have valid type annotations and that '\" +\r\n lang_1.stringify(typeOrFunc) + \"' is decorated with Injectable.\";\r\n };\r\n return NoAnnotationError;\r\n}(exceptions_1.BaseException));\r\nexports.NoAnnotationError = NoAnnotationError;\r\n/**\r\n * Thrown when getting an object by index.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\r\n *\r\n * ```typescript\r\n * class A {}\r\n *\r\n * var injector = Injector.resolveAndCreate([A]);\r\n *\r\n * expect(() => injector.getAt(100)).toThrowError();\r\n * ```\r\n */\r\nvar OutOfBoundsError = (function (_super) {\r\n __extends(OutOfBoundsError, _super);\r\n function OutOfBoundsError(index) {\r\n _super.call(this, \"Index \" + index + \" is out-of-bounds.\");\r\n }\r\n return OutOfBoundsError;\r\n}(exceptions_1.BaseException));\r\nexports.OutOfBoundsError = OutOfBoundsError;\r\n// TODO: add a working example after alpha38 is released\r\n/**\r\n * Thrown when a multi provider and a regular provider are bound to the same token.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * expect(() => Injector.resolveAndCreate([\r\n * new Provider(\"Strings\", {useValue: \"string1\", multi: true}),\r\n * new Provider(\"Strings\", {useValue: \"string2\", multi: false})\r\n * ])).toThrowError();\r\n * ```\r\n */\r\nvar MixingMultiProvidersWithRegularProvidersError = (function (_super) {\r\n __extends(MixingMultiProvidersWithRegularProvidersError, _super);\r\n function MixingMultiProvidersWithRegularProvidersError(provider1, provider2) {\r\n _super.call(this, \"Cannot mix multi providers and regular providers, got: \" + provider1.toString() + \" \" +\r\n provider2.toString());\r\n }\r\n return MixingMultiProvidersWithRegularProvidersError;\r\n}(exceptions_1.BaseException));\r\nexports.MixingMultiProvidersWithRegularProvidersError = MixingMultiProvidersWithRegularProvidersError;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGl2ZV9leGNlcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvZGkvcmVmbGVjdGl2ZV9leGNlcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzNELHFCQUFpQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzVELDJCQUE2RCxnQ0FBZ0MsQ0FBQyxDQUFBO0FBSTlGLDhCQUE4QixJQUFXO0lBQ3ZDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNiLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JDLEVBQUUsQ0FBQyxDQUFDLHdCQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsZ0NBQWdDLElBQVc7SUFDekMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksUUFBUSxHQUFHLG9CQUFvQixDQUFDLHdCQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7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QWEsR0FvQm5EO0FBcEJZLHlCQUFpQixvQkFvQjdCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSDtJQUFzQyxvQ0FBYTtJQUNqRCwwQkFBWSxLQUFLO1FBQUksa0JBQU0sV0FBUyxLQUFLLHVCQUFvQixDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ25FLHVCQUFDO0FBQUQsQ0FBQyxBQUZELENBQXNDLDBCQUFhLEdBRWxEO0FBRlksd0JBQWdCLG1CQUU1QixDQUFBO0FBRUQsd0RBQXdEO0FBQ3hEOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7SUFBbUUsaUVBQWE7SUFDOUUsdURBQVksU0FBUyxFQUFFLFNBQVM7UUFDOUIsa0JBQU0seURBQXlELEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUc7WUFDdEYsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNILG9EQUFDO0FBQUQsQ0FBQyxBQUxELENBQW1FLDBCQUFhLEdBSy9FO0FBTFkscURBQTZDLGdEQUt6RCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7c3RyaW5naWZ5LCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9uLCB1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtSZWZsZWN0aXZlS2V5fSBmcm9tICcuL3JlZmxlY3RpdmVfa2V5JztcbmltcG9ydCB7UmVmbGVjdGl2ZUluamVjdG9yfSBmcm9tICcuL3JlZmxlY3RpdmVfaW5qZWN0b3InO1xuXG5mdW5jdGlvbiBmaW5kRmlyc3RDbG9zZWRDeWNsZShrZXlzOiBhbnlbXSk6IGFueVtdIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoTGlzdFdyYXBwZXIuY29udGFpbnMocmVzLCBrZXlzW2ldKSkge1xuICAgICAgcmVzLnB1c2goa2V5c1tpXSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMucHVzaChrZXlzW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0UmVzb2x2aW5nUGF0aChrZXlzOiBhbnlbXSk6IHN0cmluZyB7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgcmV2ZXJzZWQgPSBmaW5kRmlyc3RDbG9zZWRDeWNsZShMaXN0V3JhcHBlci5yZXZlcnNlZChrZXlzKSk7XG4gICAgdmFyIHRva2VuU3RycyA9IHJldmVyc2VkLm1hcChrID0+IHN0cmluZ2lmeShrLnRva2VuKSk7XG4gICAgcmV0dXJuIFwiIChcIiArIHRva2VuU3Rycy5qb2luKCcgLT4gJykgKyBcIilcIjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxufVxuXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIGVycm9ycyBhcmlzaW5nIGZyb20gbWlzY29uZmlndXJlZCBwcm92aWRlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdFByb3ZpZGVyRXJyb3IgZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBrZXlzOiBSZWZsZWN0aXZlS2V5W107XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBpbmplY3RvcnM6IFJlZmxlY3RpdmVJbmplY3RvcltdO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZTogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvciwga2V5OiBSZWZsZWN0aXZlS2V5LFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlOiBGdW5jdGlvbikge1xuICAgIHN1cGVyKFwiREkgRXhjZXB0aW9uXCIpO1xuICAgIHRoaXMua2V5cyA9IFtrZXldO1xuICAgIHRoaXMuaW5qZWN0b3JzID0gW2luamVjdG9yXTtcbiAgICB0aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UgPSBjb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlO1xuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZSh0aGlzLmtleXMpO1xuICB9XG5cbiAgYWRkS2V5KGluamVjdG9yOiBSZWZsZWN0aXZlSW5qZWN0b3IsIGtleTogUmVmbGVjdGl2ZUtleSk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0b3JzLnB1c2goaW5qZWN0b3IpO1xuICAgIHRoaXMua2V5cy5wdXNoKGtleSk7XG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlKHRoaXMua2V5cyk7XG4gIH1cblxuICBnZXQgY29udGV4dCgpIHsgcmV0dXJuIHRoaXMuaW5qZWN0b3JzW3RoaXMuaW5qZWN0b3JzLmxlbmd0aCAtIDFdLmRlYnVnQ29udGV4dCgpOyB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gdHJ5aW5nIHRvIHJldHJpZXZlIGEgZGVwZW5kZW5jeSBieSBgS2V5YCBmcm9tIHtAbGluayBJbmplY3Rvcn0sIGJ1dCB0aGVcbiAqIHtAbGluayBJbmplY3Rvcn0gZG9lcyBub3QgaGF2ZSBhIHtAbGluayBQcm92aWRlcn0gZm9yIHtAbGluayBLZXl9LlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC92cThEM0ZSQjlhR2JuV0pxdEVQRT9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEEge1xuICogICBjb25zdHJ1Y3RvcihiOkIpIHt9XG4gKiB9XG4gKlxuICogZXhwZWN0KCgpID0+IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0FdKSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5vUHJvdmlkZXJFcnJvciBleHRlbmRzIEFic3RyYWN0UHJvdmlkZXJFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBSZWZsZWN0aXZlSW5qZWN0b3IsIGtleTogUmVmbGVjdGl2ZUtleSkge1xuICAgIHN1cGVyKGluamVjdG9yLCBrZXksIGZ1bmN0aW9uKGtleXM6IGFueVtdKSB7XG4gICAgICB2YXIgZmlyc3QgPSBzdHJpbmdpZnkoTGlzdFdyYXBwZXIuZmlyc3Qoa2V5cykudG9rZW4pO1xuICAgICAgcmV0dXJuIGBObyBwcm92aWRlciBmb3IgJHtmaXJzdH0hJHtjb25zdHJ1Y3RSZXNvbHZpbmdQYXRoKGtleXMpfWA7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBkZXBlbmRlbmNpZXMgZm9ybSBhIGN5Y2xlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC93WVFkTm9zMFR6cWwzZWkxRVY5aj9wPWluZm8pKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICogICBwcm92aWRlKFwib25lXCIsIHt1c2VGYWN0b3J5OiAodHdvKSA9PiBcInR3b1wiLCBkZXBzOiBbW25ldyBJbmplY3QoXCJ0d29cIildXX0pLFxuICogICBwcm92aWRlKFwidHdvXCIsIHt1c2VGYWN0b3J5OiAob25lKSA9PiBcIm9uZVwiLCBkZXBzOiBbW25ldyBJbmplY3QoXCJvbmVcIildXX0pXG4gKiBdKTtcbiAqXG4gKiBleHBlY3QoKCkgPT4gaW5qZWN0b3IuZ2V0KFwib25lXCIpKS50b1Rocm93RXJyb3IoKTtcbiAqIGBgYFxuICpcbiAqIFJldHJpZXZpbmcgYEFgIG9yIGBCYCB0aHJvd3MgYSBgQ3ljbGljRGVwZW5kZW5jeUVycm9yYCBhcyB0aGUgZ3JhcGggYWJvdmUgY2Fubm90IGJlIGNvbnN0cnVjdGVkLlxuICovXG5leHBvcnQgY2xhc3MgQ3ljbGljRGVwZW5kZW5jeUVycm9yIGV4dGVuZHMgQWJzdHJhY3RQcm92aWRlckVycm9yIHtcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvciwga2V5OiBSZWZsZWN0aXZlS2V5KSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGtleSwgZnVuY3Rpb24oa2V5czogYW55W10pIHtcbiAgICAgIHJldHVybiBgQ2Fubm90IGluc3RhbnRpYXRlIGN5Y2xpYyBkZXBlbmRlbmN5ISR7Y29uc3RydWN0UmVzb2x2aW5nUGF0aChrZXlzKX1gO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSBjb25zdHJ1Y3RpbmcgdHlwZSByZXR1cm5zIHdpdGggYW4gRXJyb3IuXG4gKlxuICogVGhlIGBJbnN0YW50aWF0aW9uRXJyb3JgIGNsYXNzIGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBlcnJvciBwbHVzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIHdoaWNoIGNhdXNlZFxuICogdGhpcyBvYmplY3QgdG8gYmUgaW5zdGFudGlhdGVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC83YVdZZGNxVFFzUDBlTnFFZFVBZj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEEge1xuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UnKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0FdKTtcblxuICogdHJ5IHtcbiAqICAgaW5qZWN0b3IuZ2V0KEEpO1xuICogfSBjYXRjaCAoZSkge1xuICogICBleHBlY3QoZSBpbnN0YW5jZW9mIEluc3RhbnRpYXRpb25FcnJvcikudG9CZSh0cnVlKTtcbiAqICAgZXhwZWN0KGUub3JpZ2luYWxFeGNlcHRpb24ubWVzc2FnZSkudG9FcXVhbChcIm1lc3NhZ2VcIik7XG4gKiAgIGV4cGVjdChlLm9yaWdpbmFsU3RhY2spLnRvQmVEZWZpbmVkKCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEluc3RhbnRpYXRpb25FcnJvciBleHRlbmRzIFdyYXBwZWRFeGNlcHRpb24ge1xuICAvKiogQGludGVybmFsICovXG4gIGtleXM6IFJlZmxlY3RpdmVLZXlbXTtcblxuICAvKiogQGludGVybmFsICovXG4gIGluamVjdG9yczogUmVmbGVjdGl2ZUluamVjdG9yW107XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvciwgb3JpZ2luYWxFeGNlcHRpb24sIG9yaWdpbmFsU3RhY2ssIGtleTogUmVmbGVjdGl2ZUtleSkge1xuICAgIHN1cGVyKFwiREkgRXhjZXB0aW9uXCIsIG9yaWdpbmFsRXhjZXB0aW9uLCBvcmlnaW5hbFN0YWNrLCBudWxsKTtcbiAgICB0aGlzLmtleXMgPSBba2V5XTtcbiAgICB0aGlzLmluamVjdG9ycyA9IFtpbmplY3Rvcl07XG4gIH1cblxuICBhZGRLZXkoaW5qZWN0b3I6IFJlZmxlY3RpdmVJbmplY3Rvciwga2V5OiBSZWZsZWN0aXZlS2V5KTogdm9pZCB7XG4gICAgdGhpcy5pbmplY3RvcnMucHVzaChpbmplY3Rvcik7XG4gICAgdGhpcy5rZXlzLnB1c2goa2V5KTtcbiAgfVxuXG4gIGdldCB3cmFwcGVyTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHZhciBmaXJzdCA9IHN0cmluZ2lmeShMaXN0V3JhcHBlci5maXJzdCh0aGlzLmtleXMpLnRva2VuKTtcbiAgICByZXR1cm4gYEVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICR7Zmlyc3R9ISR7Y29uc3RydWN0UmVzb2x2aW5nUGF0aCh0aGlzLmtleXMpfS5gO1xuICB9XG5cbiAgZ2V0IGNhdXNlS2V5KCk6IFJlZmxlY3RpdmVLZXkgeyByZXR1cm4gdGhpcy5rZXlzWzBdOyB9XG5cbiAgZ2V0IGNvbnRleHQoKSB7IHJldHVybiB0aGlzLmluamVjdG9yc1t0aGlzLmluamVjdG9ycy5sZW5ndGggLSAxXS5kZWJ1Z0NvbnRleHQoKTsgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIG9iamVjdCBvdGhlciB0aGVuIHtAbGluayBQcm92aWRlcn0gKG9yIGBUeXBlYCkgaXMgcGFzc2VkIHRvIHtAbGluayBJbmplY3Rvcn1cbiAqIGNyZWF0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9ZYXRDRmJQQU1DTDBKU1NRNG12SD9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cGVjdCgoKSA9PiBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcIm5vdCBhIHR5cGVcIl0pKS50b1Rocm93RXJyb3IoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZFByb3ZpZGVyRXJyb3IgZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IocHJvdmlkZXIpIHtcbiAgICBzdXBlcihcIkludmFsaWQgcHJvdmlkZXIgLSBvbmx5IGluc3RhbmNlcyBvZiBQcm92aWRlciBhbmQgVHlwZSBhcmUgYWxsb3dlZCwgZ290OiBcIiArXG4gICAgICAgICAgcHJvdmlkZXIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiB0aGUgY2xhc3MgaGFzIG5vIGFubm90YXRpb24gaW5mb3JtYXRpb24uXG4gKlxuICogTGFjayBvZiBhbm5vdGF0aW9uIGluZm9ybWF0aW9uIHByZXZlbnRzIHRoZSB7QGxpbmsgSW5qZWN0b3J9IGZyb20gZGV0ZXJtaW5pbmcgd2hpY2ggZGVwZW5kZW5jaWVzXG4gKiBuZWVkIHRvIGJlIGluamVjdGVkIGludG8gdGhlIGNvbnN0cnVjdG9yLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9ySG5adGxOUzd2Sk9QUTZwY1ZrbT9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEEge1xuICogICBjb25zdHJ1Y3RvcihiKSB7fVxuICogfVxuICpcbiAqIGV4cGVjdCgoKSA9PiBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtBXSkpLnRvVGhyb3dFcnJvcigpO1xuICogYGBgXG4gKlxuICogVGhpcyBlcnJvciBpcyBhbHNvIHRocm93biB3aGVuIHRoZSBjbGFzcyBub3QgbWFya2VkIHdpdGgge0BsaW5rIEluamVjdGFibGV9IGhhcyBwYXJhbWV0ZXIgdHlwZXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgQiB7fVxuICpcbiAqIGNsYXNzIEEge1xuICogICBjb25zdHJ1Y3RvcihiOkIpIHt9IC8vIG5vIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXJhbWV0ZXIgdHlwZXMgb2YgQSBpcyBhdmFpbGFibGUgYXQgcnVudGltZS5cbiAqIH1cbiAqXG4gKiBleHBlY3QoKCkgPT4gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbQSxCXSkpLnRvVGhyb3dFcnJvcigpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBOb0Fubm90YXRpb25FcnJvciBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3Rvcih0eXBlT3JGdW5jLCBwYXJhbXM6IGFueVtdW10pIHtcbiAgICBzdXBlcihOb0Fubm90YXRpb25FcnJvci5fZ2VuTWVzc2FnZSh0eXBlT3JGdW5jLCBwYXJhbXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9nZW5NZXNzYWdlKHR5cGVPckZ1bmMsIHBhcmFtczogYW55W11bXSkge1xuICAgIHZhciBzaWduYXR1cmUgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBwYXJhbXMubGVuZ3RoOyBpIDwgaWk7IGkrKykge1xuICAgICAgdmFyIHBhcmFtZXRlciA9IHBhcmFtc1tpXTtcbiAgICAgIGlmIChpc0JsYW5rKHBhcmFtZXRlcikgfHwgcGFyYW1ldGVyLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHNpZ25hdHVyZS5wdXNoKCc/Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWduYXR1cmUucHVzaChwYXJhbWV0ZXIubWFwKHN0cmluZ2lmeSkuam9pbignICcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFwiQ2Fubm90IHJlc29sdmUgYWxsIHBhcmFtZXRlcnMgZm9yICdcIiArIHN0cmluZ2lmeSh0eXBlT3JGdW5jKSArIFwiJyhcIiArXG4gICAgICAgICAgIHNpZ25hdHVyZS5qb2luKCcsICcpICsgXCIpLiBcIiArXG4gICAgICAgICAgIFwiTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWNvcmF0ZWQgd2l0aCBJbmplY3Qgb3IgaGF2ZSB2YWxpZCB0eXBlIGFubm90YXRpb25zIGFuZCB0aGF0ICdcIiArXG4gICAgICAgICAgIHN0cmluZ2lmeSh0eXBlT3JGdW5jKSArIFwiJyBpcyBkZWNvcmF0ZWQgd2l0aCBJbmplY3RhYmxlLlwiO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gZ2V0dGluZyBhbiBvYmplY3QgYnkgaW5kZXguXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2JSczBTWDJPVFFpSnpxdmpnbDhQP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgQSB7fVxuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0FdKTtcbiAqXG4gKiBleHBlY3QoKCkgPT4gaW5qZWN0b3IuZ2V0QXQoMTAwKSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE91dE9mQm91bmRzRXJyb3IgZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IoaW5kZXgpIHsgc3VwZXIoYEluZGV4ICR7aW5kZXh9IGlzIG91dC1vZi1ib3VuZHMuYCk7IH1cbn1cblxuLy8gVE9ETzogYWRkIGEgd29ya2luZyBleGFtcGxlIGFmdGVyIGFscGhhMzggaXMgcmVsZWFzZWRcbi8qKlxuICogVGhyb3duIHdoZW4gYSBtdWx0aSBwcm92aWRlciBhbmQgYSByZWd1bGFyIHByb3ZpZGVyIGFyZSBib3VuZCB0byB0aGUgc2FtZSB0b2tlbi5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cGVjdCgoKSA9PiBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAqICAgbmV3IFByb3ZpZGVyKFwiU3RyaW5nc1wiLCB7dXNlVmFsdWU6IFwic3RyaW5nMVwiLCBtdWx0aTogdHJ1ZX0pLFxuICogICBuZXcgUHJvdmlkZXIoXCJTdHJpbmdzXCIsIHt1c2VWYWx1ZTogXCJzdHJpbmcyXCIsIG11bHRpOiBmYWxzZX0pXG4gKiBdKSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE1peGluZ011bHRpUHJvdmlkZXJzV2l0aFJlZ3VsYXJQcm92aWRlcnNFcnJvciBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcm92aWRlcjEsIHByb3ZpZGVyMikge1xuICAgIHN1cGVyKFwiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzLCBnb3Q6IFwiICsgcHJvdmlkZXIxLnRvU3RyaW5nKCkgKyBcIiBcIiArXG4gICAgICAgICAgcHJvdmlkZXIyLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Creates a token that can be used in a DI Provider.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/Ys9ezXpj2Mnoy3Uc8KBp?p=preview))\r\n *\r\n * ```typescript\r\n * var t = new OpaqueToken(\"value\");\r\n *\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(t, {useValue: \"bindingValue\"})\r\n * ]);\r\n *\r\n * expect(injector.get(t)).toEqual(\"bindingValue\");\r\n * ```\r\n *\r\n * Using an `OpaqueToken` is preferable to using strings as tokens because of possible collisions\r\n * caused by multiple providers using the same string as two different tokens.\r\n *\r\n * Using an `OpaqueToken` is preferable to using an `Object` as tokens because it provides better\r\n * error messages.\r\n */\r\nvar OpaqueToken = (function () {\r\n function OpaqueToken(_desc) {\r\n this._desc = _desc;\r\n }\r\n OpaqueToken.prototype.toString = function () { return \"Token \" + this._desc; };\r\n OpaqueToken = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], OpaqueToken);\r\n return OpaqueToken;\r\n}());\r\nexports.OpaqueToken = OpaqueToken;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BhcXVlX3Rva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvZGkvb3BhcXVlX3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxxQkFBb0IsMEJBQTBCLENBQUMsQ0FBQTtBQUUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSDtJQUNFLHFCQUFvQixLQUFhO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUFHLENBQUM7SUFFckMsOEJBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsV0FBUyxJQUFJLENBQUMsS0FBTyxDQUFDLENBQUMsQ0FBQztJQUp0RDtRQUFDLFlBQUssRUFBRTs7bUJBQUE7SUFLUixrQkFBQztBQUFELENBQUMsQUFKRCxJQUlDO0FBSlksbUJBQVcsY0FJdkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBESSBQcm92aWRlci5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvWXM5ZXpYcGoyTW5veTNVYzhLQnA/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB2YXIgdCA9IG5ldyBPcGFxdWVUb2tlbihcInZhbHVlXCIpO1xuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICogICBwcm92aWRlKHQsIHt1c2VWYWx1ZTogXCJiaW5kaW5nVmFsdWVcIn0pXG4gKiBdKTtcbiAqXG4gKiBleHBlY3QoaW5qZWN0b3IuZ2V0KHQpKS50b0VxdWFsKFwiYmluZGluZ1ZhbHVlXCIpO1xuICogYGBgXG4gKlxuICogVXNpbmcgYW4gYE9wYXF1ZVRva2VuYCBpcyBwcmVmZXJhYmxlIHRvIHVzaW5nIHN0cmluZ3MgYXMgdG9rZW5zIGJlY2F1c2Ugb2YgcG9zc2libGUgY29sbGlzaW9uc1xuICogY2F1c2VkIGJ5IG11bHRpcGxlIHByb3ZpZGVycyB1c2luZyB0aGUgc2FtZSBzdHJpbmcgYXMgdHdvIGRpZmZlcmVudCB0b2tlbnMuXG4gKlxuICogVXNpbmcgYW4gYE9wYXF1ZVRva2VuYCBpcyBwcmVmZXJhYmxlIHRvIHVzaW5nIGFuIGBPYmplY3RgIGFzIHRva2VucyBiZWNhdXNlIGl0IHByb3ZpZGVzIGJldHRlclxuICogZXJyb3IgbWVzc2FnZXMuXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgT3BhcXVlVG9rZW4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXNjOiBzdHJpbmcpIHt9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGBUb2tlbiAke3RoaXMuX2Rlc2N9YDsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * The `di` module provides dependency injection container services.\r\n */\r\n\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nvar metadata_1 = require('./di/metadata');\r\nexports.InjectMetadata = metadata_1.InjectMetadata;\r\nexports.OptionalMetadata = metadata_1.OptionalMetadata;\r\nexports.InjectableMetadata = metadata_1.InjectableMetadata;\r\nexports.SelfMetadata = metadata_1.SelfMetadata;\r\nexports.HostMetadata = metadata_1.HostMetadata;\r\nexports.SkipSelfMetadata = metadata_1.SkipSelfMetadata;\r\nexports.DependencyMetadata = metadata_1.DependencyMetadata;\r\n// we have to reexport * because Dart and TS export two different sets of types\r\n__export(require('./di/decorators'));\r\nvar forward_ref_1 = require('./di/forward_ref');\r\nexports.forwardRef = forward_ref_1.forwardRef;\r\nexports.resolveForwardRef = forward_ref_1.resolveForwardRef;\r\nvar injector_1 = require('./di/injector');\r\nexports.Injector = injector_1.Injector;\r\nvar reflective_injector_1 = require('./di/reflective_injector');\r\nexports.ReflectiveInjector = reflective_injector_1.ReflectiveInjector;\r\nvar provider_1 = require('./di/provider');\r\nexports.Binding = provider_1.Binding;\r\nexports.ProviderBuilder = provider_1.ProviderBuilder;\r\nexports.bind = provider_1.bind;\r\nexports.Provider = provider_1.Provider;\r\nexports.provide = provider_1.provide;\r\nvar reflective_provider_1 = require('./di/reflective_provider');\r\nexports.ResolvedReflectiveFactory = reflective_provider_1.ResolvedReflectiveFactory;\r\nexports.ReflectiveDependency = reflective_provider_1.ReflectiveDependency;\r\nvar reflective_key_1 = require('./di/reflective_key');\r\nexports.ReflectiveKey = reflective_key_1.ReflectiveKey;\r\nvar reflective_exceptions_1 = require('./di/reflective_exceptions');\r\nexports.NoProviderError = reflective_exceptions_1.NoProviderError;\r\nexports.AbstractProviderError = reflective_exceptions_1.AbstractProviderError;\r\nexports.CyclicDependencyError = reflective_exceptions_1.CyclicDependencyError;\r\nexports.InstantiationError = reflective_exceptions_1.InstantiationError;\r\nexports.InvalidProviderError = reflective_exceptions_1.InvalidProviderError;\r\nexports.NoAnnotationError = reflective_exceptions_1.NoAnnotationError;\r\nexports.OutOfBoundsError = reflective_exceptions_1.OutOfBoundsError;\r\nvar opaque_token_1 = require('./di/opaque_token');\r\nexports.OpaqueToken = opaque_token_1.OpaqueToken;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9kaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHOzs7OztBQUVILHlCQVFPLGVBQWUsQ0FBQztBQVByQixtREFBYztBQUNkLHVEQUFnQjtBQUNoQiwyREFBa0I7QUFDbEIsK0NBQVk7QUFDWiwrQ0FBWTtBQUNaLHVEQUFnQjtBQUNoQiwyREFDcUI7QUFFdkIsK0VBQStFO0FBQy9FLGlCQUFjLGlCQUFpQixDQUFDLEVBQUE7QUFFaEMsNEJBQTBELGtCQUFrQixDQUFDO0FBQXJFLDhDQUFVO0FBQUUsNERBQXlEO0FBRTdFLHlCQUF1QixlQUFlLENBQUM7QUFBL0IsdUNBQStCO0FBQ3ZDLG9DQUFpQywwQkFBMEIsQ0FBQztBQUFwRCxzRUFBb0Q7QUFDNUQseUJBT08sZUFBZSxDQUFDO0FBTnJCLHFDQUFPO0FBQ1AscURBQWU7QUFDZiwrQkFBSTtBQUVKLHVDQUFRO0FBQ1IscUNBQ3FCO0FBQ3ZCLG9DQU1PLDBCQUEwQixDQUFDO0FBSmhDLG9GQUF5QjtBQUN6QiwwRUFHZ0M7QUFDbEMsK0JBQTRCLHFCQUFxQixDQUFDO0FBQTFDLHVEQUEwQztBQUNsRCxzQ0FRTyw0QkFBNEIsQ0FBQztBQVBsQyxrRUFBZTtBQUNmLDhFQUFxQjtBQUNyQiw4RUFBcUI7QUFDckIsd0VBQWtCO0FBQ2xCLDRFQUFvQjtBQUNwQixzRUFBaUI7QUFDakIsb0VBQ2tDO0FBQ3BDLDZCQUEwQixtQkFBbUIsQ0FBQztBQUF0QyxpREFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGBkaWAgbW9kdWxlIHByb3ZpZGVzIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRhaW5lciBzZXJ2aWNlcy5cbiAqL1xuXG5leHBvcnQge1xuICBJbmplY3RNZXRhZGF0YSxcbiAgT3B0aW9uYWxNZXRhZGF0YSxcbiAgSW5qZWN0YWJsZU1ldGFkYXRhLFxuICBTZWxmTWV0YWRhdGEsXG4gIEhvc3RNZXRhZGF0YSxcbiAgU2tpcFNlbGZNZXRhZGF0YSxcbiAgRGVwZW5kZW5jeU1ldGFkYXRhXG59IGZyb20gJy4vZGkvbWV0YWRhdGEnO1xuXG4vLyB3ZSBoYXZlIHRvIHJlZXhwb3J0ICogYmVjYXVzZSBEYXJ0IGFuZCBUUyBleHBvcnQgdHdvIGRpZmZlcmVudCBzZXRzIG9mIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL2RpL2RlY29yYXRvcnMnO1xuXG5leHBvcnQge2ZvcndhcmRSZWYsIHJlc29sdmVGb3J3YXJkUmVmLCBGb3J3YXJkUmVmRm59IGZyb20gJy4vZGkvZm9yd2FyZF9yZWYnO1xuXG5leHBvcnQge0luamVjdG9yfSBmcm9tICcuL2RpL2luamVjdG9yJztcbmV4cG9ydCB7UmVmbGVjdGl2ZUluamVjdG9yfSBmcm9tICcuL2RpL3JlZmxlY3RpdmVfaW5qZWN0b3InO1xuZXhwb3J0IHtcbiAgQmluZGluZyxcbiAgUHJvdmlkZXJCdWlsZGVyLFxuICBiaW5kLFxuXG4gIFByb3ZpZGVyLFxuICBwcm92aWRlXG59IGZyb20gJy4vZGkvcHJvdmlkZXInO1xuZXhwb3J0IHtcbiAgUmVzb2x2ZWRSZWZsZWN0aXZlQmluZGluZyxcbiAgUmVzb2x2ZWRSZWZsZWN0aXZlRmFjdG9yeSxcbiAgUmVmbGVjdGl2ZURlcGVuZGVuY3ksXG5cbiAgUmVzb2x2ZWRSZWZsZWN0aXZlUHJvdmlkZXJcbn0gZnJvbSAnLi9kaS9yZWZsZWN0aXZlX3Byb3ZpZGVyJztcbmV4cG9ydCB7UmVmbGVjdGl2ZUtleX0gZnJvbSAnLi9kaS9yZWZsZWN0aXZlX2tleSc7XG5leHBvcnQge1xuICBOb1Byb3ZpZGVyRXJyb3IsXG4gIEFic3RyYWN0UHJvdmlkZXJFcnJvcixcbiAgQ3ljbGljRGVwZW5kZW5jeUVycm9yLFxuICBJbnN0YW50aWF0aW9uRXJyb3IsXG4gIEludmFsaWRQcm92aWRlckVycm9yLFxuICBOb0Fubm90YXRpb25FcnJvcixcbiAgT3V0T2ZCb3VuZHNFcnJvclxufSBmcm9tICcuL2RpL3JlZmxlY3RpdmVfZXhjZXB0aW9ucyc7XG5leHBvcnQge09wYXF1ZVRva2VufSBmcm9tICcuL2RpL29wYXF1ZV90b2tlbic7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A DI Token representing a unique string id assigned to the application by Angular and used\r\n * primarily for prefixing application attributes and CSS styles when\r\n * {@link ViewEncapsulation#Emulated} is being used.\r\n *\r\n * If you need to avoid randomly generated value to be used as an application id, you can provide\r\n * a custom value via a DI provider <!-- TODO: provider --> configuring the root {@link Injector}\r\n * using this token.\r\n */\r\nexports.APP_ID = lang_1.CONST_EXPR(new di_1.OpaqueToken('AppId'));\r\nfunction _appIdRandomProviderFactory() {\r\n return \"\" + _randomChar() + _randomChar() + _randomChar();\r\n}\r\n/**\r\n * Providers that will generate a random APP_ID_TOKEN.\r\n */\r\nexports.APP_ID_RANDOM_PROVIDER = lang_1.CONST_EXPR(new di_1.Provider(exports.APP_ID, { useFactory: _appIdRandomProviderFactory, deps: [] }));\r\nfunction _randomChar() {\r\n return lang_1.StringWrapper.fromCharCode(97 + lang_1.Math.floor(lang_1.Math.random() * 25));\r\n}\r\n/**\r\n * A function that will be executed when a platform is initialized.\r\n */\r\nexports.PLATFORM_INITIALIZER = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Platform Initializer\"));\r\n/**\r\n * A function that will be executed when an application is initialized.\r\n */\r\nexports.APP_INITIALIZER = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Application Initializer\"));\r\n/**\r\n * A token which indicates the root directory of the application\r\n */\r\nexports.PACKAGE_ROOT_URL = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Application Packages Root URL\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBb0Msc0JBQXNCLENBQUMsQ0FBQTtBQUMzRCxxQkFBOEMsMEJBQTBCLENBQUMsQ0FBQTtBQUV6RTs7Ozs7Ozs7R0FRRztBQUNVLGNBQU0sR0FBZ0IsaUJBQVUsQ0FBQyxJQUFJLGdCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUV4RTtJQUNFLE1BQU0sQ0FBQyxLQUFHLFdBQVcsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLFdBQVcsRUFBSSxDQUFDO0FBQzVELENBQUM7QUFFRDs7R0FFRztBQUNVLDhCQUFzQixHQUMvQixpQkFBVSxDQUFDLElBQUksYUFBUSxDQUFDLGNBQU0sRUFBRSxFQUFDLFVBQVUsRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTFGO0lBQ0UsTUFBTSxDQUFDLG9CQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxXQUFJLENBQUMsS0FBSyxDQUFDLFdBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7R0FFRztBQUNVLDRCQUFvQixHQUM3QixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7QUFFeEQ7O0dBRUc7QUFDVSx1QkFBZSxHQUFnQixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7QUFFbkc7O0dBRUc7QUFDVSx3QkFBZ0IsR0FDekIsaUJBQVUsQ0FBQyxJQUFJLGdCQUFXLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGFxdWVUb2tlbiwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7Q09OU1RfRVhQUiwgTWF0aCwgU3RyaW5nV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBBIERJIFRva2VuIHJlcHJlc2VudGluZyBhIHVuaXF1ZSBzdHJpbmcgaWQgYXNzaWduZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGJ5IEFuZ3VsYXIgYW5kIHVzZWRcbiAqIHByaW1hcmlseSBmb3IgcHJlZml4aW5nIGFwcGxpY2F0aW9uIGF0dHJpYnV0ZXMgYW5kIENTUyBzdHlsZXMgd2hlblxuICoge0BsaW5rIFZpZXdFbmNhcHN1bGF0aW9uI0VtdWxhdGVkfSBpcyBiZWluZyB1c2VkLlxuICpcbiAqIElmIHlvdSBuZWVkIHRvIGF2b2lkIHJhbmRvbWx5IGdlbmVyYXRlZCB2YWx1ZSB0byBiZSB1c2VkIGFzIGFuIGFwcGxpY2F0aW9uIGlkLCB5b3UgY2FuIHByb3ZpZGVcbiAqIGEgY3VzdG9tIHZhbHVlIHZpYSBhIERJIHByb3ZpZGVyIDwhLS0gVE9ETzogcHJvdmlkZXIgLS0+IGNvbmZpZ3VyaW5nIHRoZSByb290IHtAbGluayBJbmplY3Rvcn1cbiAqIHVzaW5nIHRoaXMgdG9rZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfSUQ6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oJ0FwcElkJykpO1xuXG5mdW5jdGlvbiBfYXBwSWRSYW5kb21Qcm92aWRlckZhY3RvcnkoKSB7XG4gIHJldHVybiBgJHtfcmFuZG9tQ2hhcigpfSR7X3JhbmRvbUNoYXIoKX0ke19yYW5kb21DaGFyKCl9YDtcbn1cblxuLyoqXG4gKiBQcm92aWRlcnMgdGhhdCB3aWxsIGdlbmVyYXRlIGEgcmFuZG9tIEFQUF9JRF9UT0tFTi5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9JRF9SQU5ET01fUFJPVklERVI6IFByb3ZpZGVyID1cbiAgICBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihBUFBfSUQsIHt1c2VGYWN0b3J5OiBfYXBwSWRSYW5kb21Qcm92aWRlckZhY3RvcnksIGRlcHM6IFtdfSkpO1xuXG5mdW5jdGlvbiBfcmFuZG9tQ2hhcigpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUoOTcgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNSkpO1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gYSBwbGF0Zm9ybSBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0lOSVRJQUxJWkVSOiBPcGFxdWVUb2tlbiA9XG4gICAgQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJQbGF0Zm9ybSBJbml0aWFsaXplclwiKSk7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9JTklUSUFMSVpFUjogT3BhcXVlVG9rZW4gPSBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbihcIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyXCIpKTtcblxuLyoqXG4gKiBBIHRva2VuIHdoaWNoIGluZGljYXRlcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGFwcGxpY2F0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBQQUNLQUdFX1JPT1RfVVJMOiBPcGFxdWVUb2tlbiA9XG4gICAgQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJBcHBsaWNhdGlvbiBQYWNrYWdlcyBSb290IFVSTFwiKSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar element_1 = require('./element');\r\nvar exceptions_2 = require('./exceptions');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar api_1 = require('angular2/src/core/render/api');\r\nvar application_tokens_1 = require('angular2/src/core/application_tokens');\r\nvar ViewUtils = (function () {\r\n function ViewUtils(_renderer, _appId) {\r\n this._renderer = _renderer;\r\n this._appId = _appId;\r\n this._nextCompTypeId = 0;\r\n }\r\n /**\r\n * Used by the generated code\r\n */\r\n ViewUtils.prototype.createRenderComponentType = function (templateUrl, slotCount, encapsulation, styles) {\r\n return new api_1.RenderComponentType(this._appId + \"-\" + this._nextCompTypeId++, templateUrl, slotCount, encapsulation, styles);\r\n };\r\n /** @internal */\r\n ViewUtils.prototype.renderComponent = function (renderComponentType) {\r\n return this._renderer.renderComponent(renderComponentType);\r\n };\r\n ViewUtils = __decorate([\r\n di_1.Injectable(),\r\n __param(1, di_1.Inject(application_tokens_1.APP_ID)), \r\n __metadata('design:paramtypes', [api_1.RootRenderer, String])\r\n ], ViewUtils);\r\n return ViewUtils;\r\n}());\r\nexports.ViewUtils = ViewUtils;\r\nfunction flattenNestedViewRenderNodes(nodes) {\r\n return _flattenNestedViewRenderNodes(nodes, []);\r\n}\r\nexports.flattenNestedViewRenderNodes = flattenNestedViewRenderNodes;\r\nfunction _flattenNestedViewRenderNodes(nodes, renderNodes) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n var node = nodes[i];\r\n if (node instanceof element_1.AppElement) {\r\n var appEl = node;\r\n renderNodes.push(appEl.nativeElement);\r\n if (lang_1.isPresent(appEl.nestedViews)) {\r\n for (var k = 0; k < appEl.nestedViews.length; k++) {\r\n _flattenNestedViewRenderNodes(appEl.nestedViews[k].rootNodesOrAppElements, renderNodes);\r\n }\r\n }\r\n }\r\n else {\r\n renderNodes.push(node);\r\n }\r\n }\r\n return renderNodes;\r\n}\r\nvar EMPTY_ARR = lang_1.CONST_EXPR([]);\r\nfunction ensureSlotCount(projectableNodes, expectedSlotCount) {\r\n var res;\r\n if (lang_1.isBlank(projectableNodes)) {\r\n res = EMPTY_ARR;\r\n }\r\n else if (projectableNodes.length < expectedSlotCount) {\r\n var givenSlotCount = projectableNodes.length;\r\n res = collection_1.ListWrapper.createFixedSize(expectedSlotCount);\r\n for (var i = 0; i < expectedSlotCount; i++) {\r\n res[i] = (i < givenSlotCount) ? projectableNodes[i] : EMPTY_ARR;\r\n }\r\n }\r\n else {\r\n res = projectableNodes;\r\n }\r\n return res;\r\n}\r\nexports.ensureSlotCount = ensureSlotCount;\r\nexports.MAX_INTERPOLATION_VALUES = 9;\r\nfunction interpolate(valueCount, c0, a1, c1, a2, c2, a3, c3, a4, c4, a5, c5, a6, c6, a7, c7, a8, c8, a9, c9) {\r\n switch (valueCount) {\r\n case 1:\r\n return c0 + _toStringWithNull(a1) + c1;\r\n case 2:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2;\r\n case 3:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3;\r\n case 4:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3 + _toStringWithNull(a4) + c4;\r\n case 5:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5;\r\n case 6:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\r\n c6;\r\n case 7:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\r\n c6 + _toStringWithNull(a7) + c7;\r\n case 8:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\r\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8;\r\n case 9:\r\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\r\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\r\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8 + _toStringWithNull(a9) +\r\n c9;\r\n default:\r\n throw new exceptions_1.BaseException(\"Does not support more than 9 expressions\");\r\n }\r\n}\r\nexports.interpolate = interpolate;\r\nfunction _toStringWithNull(v) {\r\n return v != null ? v.toString() : '';\r\n}\r\nfunction checkBinding(throwOnChange, oldValue, newValue) {\r\n if (throwOnChange) {\r\n if (!change_detection_1.devModeEqual(oldValue, newValue)) {\r\n throw new exceptions_2.ExpressionChangedAfterItHasBeenCheckedException(oldValue, newValue, null);\r\n }\r\n return false;\r\n }\r\n else {\r\n return !lang_1.looseIdentical(oldValue, newValue);\r\n }\r\n}\r\nexports.checkBinding = checkBinding;\r\nfunction arrayLooseIdentical(a, b) {\r\n if (a.length != b.length)\r\n return false;\r\n for (var i = 0; i < a.length; ++i) {\r\n if (!lang_1.looseIdentical(a[i], b[i]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nexports.arrayLooseIdentical = arrayLooseIdentical;\r\nfunction mapLooseIdentical(m1, m2) {\r\n var k1 = collection_1.StringMapWrapper.keys(m1);\r\n var k2 = collection_1.StringMapWrapper.keys(m2);\r\n if (k1.length != k2.length) {\r\n return false;\r\n }\r\n var key;\r\n for (var i = 0; i < k1.length; i++) {\r\n key = k1[i];\r\n if (!lang_1.looseIdentical(m1[key], m2[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.mapLooseIdentical = mapLooseIdentical;\r\nfunction castByValue(input, value) {\r\n return input;\r\n}\r\nexports.castByValue = castByValue;\r\nfunction pureProxy1(fn) {\r\n var result;\r\n var v0;\r\n v0 = change_detection_1.uninitialized;\r\n return function (p0) {\r\n if (!lang_1.looseIdentical(v0, p0)) {\r\n v0 = p0;\r\n result = fn(p0);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy1 = pureProxy1;\r\nfunction pureProxy2(fn) {\r\n var result;\r\n var v0, v1;\r\n v0 = v1 = change_detection_1.uninitialized;\r\n return function (p0, p1) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1)) {\r\n v0 = p0;\r\n v1 = p1;\r\n result = fn(p0, p1);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy2 = pureProxy2;\r\nfunction pureProxy3(fn) {\r\n var result;\r\n var v0, v1, v2;\r\n v0 = v1 = v2 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n result = fn(p0, p1, p2);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy3 = pureProxy3;\r\nfunction pureProxy4(fn) {\r\n var result;\r\n var v0, v1, v2, v3;\r\n v0 = v1 = v2 = v3 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n result = fn(p0, p1, p2, p3);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy4 = pureProxy4;\r\nfunction pureProxy5(fn) {\r\n var result;\r\n var v0, v1, v2, v3, v4;\r\n v0 = v1 = v2 = v3 = v4 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3, p4) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3) || !lang_1.looseIdentical(v4, p4)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n v4 = p4;\r\n result = fn(p0, p1, p2, p3, p4);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy5 = pureProxy5;\r\nfunction pureProxy6(fn) {\r\n var result;\r\n var v0, v1, v2, v3, v4, v5;\r\n v0 = v1 = v2 = v3 = v4 = v5 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3, p4, p5) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3) || !lang_1.looseIdentical(v4, p4) || !lang_1.looseIdentical(v5, p5)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n v4 = p4;\r\n v5 = p5;\r\n result = fn(p0, p1, p2, p3, p4, p5);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy6 = pureProxy6;\r\nfunction pureProxy7(fn) {\r\n var result;\r\n var v0, v1, v2, v3, v4, v5, v6;\r\n v0 = v1 = v2 = v3 = v4 = v5 = v6 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3, p4, p5, p6) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3) || !lang_1.looseIdentical(v4, p4) || !lang_1.looseIdentical(v5, p5) ||\r\n !lang_1.looseIdentical(v6, p6)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n v4 = p4;\r\n v5 = p5;\r\n v6 = p6;\r\n result = fn(p0, p1, p2, p3, p4, p5, p6);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy7 = pureProxy7;\r\nfunction pureProxy8(fn) {\r\n var result;\r\n var v0, v1, v2, v3, v4, v5, v6, v7;\r\n v0 = v1 = v2 = v3 = v4 = v5 = v6 = v7 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3, p4, p5, p6, p7) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3) || !lang_1.looseIdentical(v4, p4) || !lang_1.looseIdentical(v5, p5) ||\r\n !lang_1.looseIdentical(v6, p6) || !lang_1.looseIdentical(v7, p7)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n v4 = p4;\r\n v5 = p5;\r\n v6 = p6;\r\n v7 = p7;\r\n result = fn(p0, p1, p2, p3, p4, p5, p6, p7);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy8 = pureProxy8;\r\nfunction pureProxy9(fn) {\r\n var result;\r\n var v0, v1, v2, v3, v4, v5, v6, v7, v8;\r\n v0 = v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3, p4, p5, p6, p7, p8) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3) || !lang_1.looseIdentical(v4, p4) || !lang_1.looseIdentical(v5, p5) ||\r\n !lang_1.looseIdentical(v6, p6) || !lang_1.looseIdentical(v7, p7) || !lang_1.looseIdentical(v8, p8)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n v4 = p4;\r\n v5 = p5;\r\n v6 = p6;\r\n v7 = p7;\r\n v8 = p8;\r\n result = fn(p0, p1, p2, p3, p4, p5, p6, p7, p8);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy9 = pureProxy9;\r\nfunction pureProxy10(fn) {\r\n var result;\r\n var v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;\r\n v0 = v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = change_detection_1.uninitialized;\r\n return function (p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) {\r\n if (!lang_1.looseIdentical(v0, p0) || !lang_1.looseIdentical(v1, p1) || !lang_1.looseIdentical(v2, p2) ||\r\n !lang_1.looseIdentical(v3, p3) || !lang_1.looseIdentical(v4, p4) || !lang_1.looseIdentical(v5, p5) ||\r\n !lang_1.looseIdentical(v6, p6) || !lang_1.looseIdentical(v7, p7) || !lang_1.looseIdentical(v8, p8) ||\r\n !lang_1.looseIdentical(v9, p9)) {\r\n v0 = p0;\r\n v1 = p1;\r\n v2 = p2;\r\n v3 = p3;\r\n v4 = p4;\r\n v5 = p5;\r\n v6 = p6;\r\n v7 = p7;\r\n v8 = p8;\r\n v9 = p9;\r\n result = fn(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);\r\n }\r\n return result;\r\n };\r\n}\r\nexports.pureProxy10 = pureProxy10;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld191dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELHdCQUF5QixXQUFXLENBQUMsQ0FBQTtBQUNyQywyQkFBOEQsY0FBYyxDQUFDLENBQUE7QUFDN0UsaUNBQTBDLHFEQUFxRCxDQUFDLENBQUE7QUFDaEcsbUJBQWlDLHNCQUFzQixDQUFDLENBQUE7QUFDeEQsb0JBQTBELDhCQUE4QixDQUFDLENBQUE7QUFDekYsbUNBQXFCLHNDQUFzQyxDQUFDLENBQUE7QUFJNUQ7SUFHRSxtQkFBb0IsU0FBdUIsRUFBMEIsTUFBYztRQUEvRCxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQTBCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGM0Usb0JBQWUsR0FBVyxDQUFDLENBQUM7SUFFa0QsQ0FBQztJQUV2Rjs7T0FFRztJQUNILDZDQUF5QixHQUF6QixVQUEwQixXQUFtQixFQUFFLFNBQWlCLEVBQ3RDLGFBQWdDLEVBQ2hDLE1BQTZCO1FBQ3JELE1BQU0sQ0FBQyxJQUFJLHlCQUFtQixDQUFJLElBQUksQ0FBQyxNQUFNLFNBQUksSUFBSSxDQUFDLGVBQWUsRUFBSSxFQUFFLFdBQVcsRUFDdkQsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLG1DQUFlLEdBQWYsVUFBZ0IsbUJBQXdDO1FBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdE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M0MsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLGdDQUFhLENBQUM7SUFDaEUsTUFBTSxDQUFDLFVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM1QyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDN0UsQ0FBQyxxQkFBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzdFLENBQUMscUJBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUM3RSxDQUFDLHFCQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNSLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNSLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNSLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ1IsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDO0FBekJlLG1CQUFXLGNBeUIxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNCbGFuayxcbiAgaXNQcmVzZW50LFxuICBUeXBlLFxuICBzdHJpbmdpZnksXG4gIENPTlNUX0VYUFIsXG4gIGxvb3NlSWRlbnRpY2FsXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtBcHBFbGVtZW50fSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHtFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvbn0gZnJvbSAnLi9leGNlcHRpb25zJztcbmltcG9ydCB7ZGV2TW9kZUVxdWFsLCB1bmluaXRpYWxpemVkfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7Um9vdFJlbmRlcmVyLCBSZW5kZXJDb21wb25lbnRUeXBlLCBSZW5kZXJlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaSc7XG5pbXBvcnQge0FQUF9JRH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fdG9rZW5zJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmlld1V0aWxzIHtcbiAgcHJpdmF0ZSBfbmV4dENvbXBUeXBlSWQ6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJvb3RSZW5kZXJlciwgQEluamVjdChBUFBfSUQpIHByaXZhdGUgX2FwcElkOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgdGhlIGdlbmVyYXRlZCBjb2RlXG4gICAqL1xuICBjcmVhdGVSZW5kZXJDb21wb25lbnRUeXBlKHRlbXBsYXRlVXJsOiBzdHJpbmcsIHNsb3RDb3VudDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogQXJyYXk8c3RyaW5nIHwgYW55W10+KTogUmVuZGVyQ29tcG9uZW50VHlwZSB7XG4gICAgcmV0dXJuIG5ldyBSZW5kZXJDb21wb25lbnRUeXBlKGAke3RoaXMuX2FwcElkfS0ke3RoaXMuX25leHRDb21wVHlwZUlkKyt9YCwgdGVtcGxhdGVVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RDb3VudCwgZW5jYXBzdWxhdGlvbiwgc3R5bGVzKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcmVuZGVyQ29tcG9uZW50KHJlbmRlckNvbXBvbmVudFR5cGU6IFJlbmRlckNvbXBvbmVudFR5cGUpOiBSZW5kZXJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcmVyLnJlbmRlckNvbXBvbmVudChyZW5kZXJDb21wb25lbnRUeXBlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyhub2RlczogYW55W10pOiBhbnlbXSB7XG4gIHJldHVybiBfZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyhub2RlcywgW10pO1xufVxuXG5mdW5jdGlvbiBfZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyhub2RlczogYW55W10sIHJlbmRlck5vZGVzOiBhbnlbXSk6IGFueVtdIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBcHBFbGVtZW50KSB7XG4gICAgICB2YXIgYXBwRWwgPSA8QXBwRWxlbWVudD5ub2RlO1xuICAgICAgcmVuZGVyTm9kZXMucHVzaChhcHBFbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIGlmIChpc1ByZXNlbnQoYXBwRWwubmVzdGVkVmlld3MpKSB7XG4gICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYXBwRWwubmVzdGVkVmlld3MubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICBfZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2RlcyhhcHBFbC5uZXN0ZWRWaWV3c1trXS5yb290Tm9kZXNPckFwcEVsZW1lbnRzLCByZW5kZXJOb2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVyTm9kZXMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbmRlck5vZGVzO1xufVxuXG5jb25zdCBFTVBUWV9BUlIgPSBDT05TVF9FWFBSKFtdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVNsb3RDb3VudChwcm9qZWN0YWJsZU5vZGVzOiBhbnlbXVtdLCBleHBlY3RlZFNsb3RDb3VudDogbnVtYmVyKTogYW55W11bXSB7XG4gIHZhciByZXM7XG4gIGlmIChpc0JsYW5rKHByb2plY3RhYmxlTm9kZXMpKSB7XG4gICAgcmVzID0gRU1QVFlfQVJSO1xuICB9IGVsc2UgaWYgKHByb2plY3RhYmxlTm9kZXMubGVuZ3RoIDwgZXhwZWN0ZWRTbG90Q291bnQpIHtcbiAgICB2YXIgZ2l2ZW5TbG90Q291bnQgPSBwcm9qZWN0YWJsZU5vZGVzLmxlbmd0aDtcbiAgICByZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUoZXhwZWN0ZWRTbG90Q291bnQpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRTbG90Q291bnQ7IGkrKykge1xuICAgICAgcmVzW2ldID0gKGkgPCBnaXZlblNsb3RDb3VudCkgPyBwcm9qZWN0YWJsZU5vZGVzW2ldIDogRU1QVFlfQVJSO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXMgPSBwcm9qZWN0YWJsZU5vZGVzO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBjb25zdCBNQVhfSU5URVJQT0xBVElPTl9WQUxVRVMgPSA5O1xuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJwb2xhdGUodmFsdWVDb3VudDogbnVtYmVyLCBjMDogc3RyaW5nLCBhMTogYW55LCBjMTogc3RyaW5nLCBhMj86IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMj86IHN0cmluZywgYTM/OiBhbnksIGMzPzogc3RyaW5nLCBhND86IGFueSwgYzQ/OiBzdHJpbmcsIGE1PzogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM1Pzogc3RyaW5nLCBhNj86IGFueSwgYzY/OiBzdHJpbmcsIGE3PzogYW55LCBjNz86IHN0cmluZywgYTg/OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzg/OiBzdHJpbmcsIGE5PzogYW55LCBjOT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAodmFsdWVDb3VudCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBjMCArIF90b1N0cmluZ1dpdGhOdWxsKGExKSArIGMxO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBjMCArIF90b1N0cmluZ1dpdGhOdWxsKGExKSArIGMxICsgX3RvU3RyaW5nV2l0aE51bGwoYTIpICsgYzI7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIGMwICsgX3RvU3RyaW5nV2l0aE51bGwoYTEpICsgYzEgKyBfdG9TdHJpbmdXaXRoTnVsbChhMikgKyBjMiArIF90b1N0cmluZ1dpdGhOdWxsKGEzKSArXG4gICAgICAgICAgICAgYzM7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIGMwICsgX3RvU3RyaW5nV2l0aE51bGwoYTEpICsgYzEgKyBfdG9TdHJpbmdXaXRoTnVsbChhMikgKyBjMiArIF90b1N0cmluZ1dpdGhOdWxsKGEzKSArXG4gICAgICAgICAgICAgYzMgKyBfdG9TdHJpbmdXaXRoTnVsbChhNCkgKyBjNDtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gYzAgKyBfdG9TdHJpbmdXaXRoTnVsbChhMSkgKyBjMSArIF90b1N0cmluZ1dpdGhOdWxsKGEyKSArIGMyICsgX3RvU3RyaW5nV2l0aE51bGwoYTMpICtcbiAgICAgICAgICAgICBjMyArIF90b1N0cmluZ1dpdGhOdWxsKGE0KSArIGM0ICsgX3RvU3RyaW5nV2l0aE51bGwoYTUpICsgYzU7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIGMwICsgX3RvU3RyaW5nV2l0aE51bGwoYTEpICsgYzEgKyBfdG9TdHJpbmdXaXRoTnVsbChhMikgKyBjMiArIF90b1N0cmluZ1dpdGhOdWxsKGEzKSArXG4gICAgICAgICAgICAgYzMgKyBfdG9TdHJpbmdXaXRoTnVsbChhNCkgKyBjNCArIF90b1N0cmluZ1dpdGhOdWxsKGE1KSArIGM1ICsgX3RvU3RyaW5nV2l0aE51bGwoYTYpICtcbiAgICAgICAgICAgICBjNjtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gYzAgKyBfdG9TdHJpbmdXaXRoTnVsbChhMSkgKyBjMSArIF90b1N0cmluZ1dpdGhOdWxsKGEyKSArIGMyICsgX3RvU3RyaW5nV2l0aE51bGwoYTMpICtcbiAgICAgICAgICAgICBjMyArIF90b1N0cmluZ1dpdGhOdWxsKGE0KSArIGM0ICsgX3RvU3RyaW5nV2l0aE51bGwoYTUpICsgYzUgKyBfdG9TdHJpbmdXaXRoTnVsbChhNikgK1xuICAgICAgICAgICAgIGM2ICsgX3RvU3RyaW5nV2l0aE51bGwoYTcpICsgYzc7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIGMwICsgX3RvU3RyaW5nV2l0aE51bGwoYTEpICsgYzEgKyBfdG9TdHJpbmdXaXRoTnVsbChhMikgKyBjMiArIF90b1N0cmluZ1dpdGhOdWxsKGEzKSArXG4gICAgICAgICAgICAgYzMgKyBfdG9TdHJpbmdXaXRoTnVsbChhNCkgKyBjNCArIF90b1N0cmluZ1dpdGhOdWxsKGE1KSArIGM1ICsgX3RvU3RyaW5nV2l0aE51bGwoYTYpICtcbiAgICAgICAgICAgICBjNiArIF90b1N0cmluZ1dpdGhOdWxsKGE3KSArIGM3ICsgX3RvU3RyaW5nV2l0aE51bGwoYTgpICsgYzg7XG4gICAgY2FzZSA5OlxuICAgICAgcmV0dXJuIGMwICsgX3RvU3RyaW5nV2l0aE51bGwoYTEpICsgYzEgKyBfdG9TdHJpbmdXaXRoTnVsbChhMikgKyBjMiArIF90b1N0cmluZ1dpdGhOdWxsKGEzKSArXG4gICAgICAgICAgICAgYzMgKyBfdG9TdHJpbmdXaXRoTnVsbChhNCkgKyBjNCArIF90b1N0cmluZ1dpdGhOdWxsKGE1KSArIGM1ICsgX3RvU3RyaW5nV2l0aE51bGwoYTYpICtcbiAgICAgICAgICAgICBjNiArIF90b1N0cmluZ1dpdGhOdWxsKGE3KSArIGM3ICsgX3RvU3RyaW5nV2l0aE51bGwoYTgpICsgYzggKyBfdG9TdHJpbmdXaXRoTnVsbChhOSkgK1xuICAgICAgICAgICAgIGM5O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgRG9lcyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gOSBleHByZXNzaW9uc2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIF90b1N0cmluZ1dpdGhOdWxsKHY6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiB2ICE9IG51bGwgPyB2LnRvU3RyaW5nKCkgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQmluZGluZyh0aHJvd09uQ2hhbmdlOiBib29sZWFuLCBvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0aHJvd09uQ2hhbmdlKSB7XG4gICAgaWYgKCFkZXZNb2RlRXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXhjZXB0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSwgbnVsbCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gIWxvb3NlSWRlbnRpY2FsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5TG9vc2VJZGVudGljYWwoYTogYW55W10sIGI6IGFueVtdKTogYm9vbGVhbiB7XG4gIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBMb29zZUlkZW50aWNhbDxWPihtMToge1trZXk6IHN0cmluZ106IFZ9LCBtMjoge1trZXk6IHN0cmluZ106IFZ9KTogYm9vbGVhbiB7XG4gIHZhciBrMSA9IFN0cmluZ01hcFdyYXBwZXIua2V5cyhtMSk7XG4gIHZhciBrMiA9IFN0cmluZ01hcFdyYXBwZXIua2V5cyhtMik7XG4gIGlmIChrMS5sZW5ndGggIT0gazIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBrZXk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazEubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrMVtpXTtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKG0xW2tleV0sIG0yW2tleV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FzdEJ5VmFsdWU8VD4oaW5wdXQ6IGFueSwgdmFsdWU6IFQpOiBUIHtcbiAgcmV0dXJuIDxUPmlucHV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZVByb3h5MTxQMCwgUj4oZm46IChwMDogUDApID0+IFIpOiAocDA6IFAwKSA9PiBSIHtcbiAgdmFyIHJlc3VsdDogUjtcbiAgdmFyIHYwO1xuICB2MCA9IHVuaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiAocDApID0+IHtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHYwLCBwMCkpIHtcbiAgICAgIHYwID0gcDA7XG4gICAgICByZXN1bHQgPSBmbihwMCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXJlUHJveHkyPFAwLCBQMSwgUj4oZm46IChwMDogUDAsIHAxOiBQMSkgPT4gUik6IChwMDogUDAsIHAxOiBQMSkgPT4gUiB7XG4gIHZhciByZXN1bHQ6IFI7XG4gIHZhciB2MCwgdjE7XG4gIHYwID0gdjEgPSB1bmluaXRpYWxpemVkO1xuICByZXR1cm4gKHAwLCBwMSkgPT4ge1xuICAgIGlmICghbG9vc2VJZGVudGljYWwodjAsIHAwKSB8fCAhbG9vc2VJZGVudGljYWwodjEsIHAxKSkge1xuICAgICAgdjAgPSBwMDtcbiAgICAgIHYxID0gcDE7XG4gICAgICByZXN1bHQgPSBmbihwMCwgcDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZVByb3h5MzxQMCwgUDEsIFAyLCBSPihmbjogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIpID0+IFIpOiAocDA6IFAwLCBwMTogUDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDI6IFAyKSA9PiBSIHtcbiAgdmFyIHJlc3VsdDogUjtcbiAgdmFyIHYwLCB2MSwgdjI7XG4gIHYwID0gdjEgPSB2MiA9IHVuaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiAocDAsIHAxLCBwMikgPT4ge1xuICAgIGlmICghbG9vc2VJZGVudGljYWwodjAsIHAwKSB8fCAhbG9vc2VJZGVudGljYWwodjEsIHAxKSB8fCAhbG9vc2VJZGVudGljYWwodjIsIHAyKSkge1xuICAgICAgdjAgPSBwMDtcbiAgICAgIHYxID0gcDE7XG4gICAgICB2MiA9IHAyO1xuICAgICAgcmVzdWx0ID0gZm4ocDAsIHAxLCBwMik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXJlUHJveHk0PFAwLCBQMSwgUDIsIFAzLCBSPihmbjogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIsIHAzOiBQMykgPT4gUik6IChcbiAgICBwMDogUDAsIHAxOiBQMSwgcDI6IFAyLCBwMzogUDMpID0+IFIge1xuICB2YXIgcmVzdWx0OiBSO1xuICB2YXIgdjAsIHYxLCB2MiwgdjM7XG4gIHYwID0gdjEgPSB2MiA9IHYzID0gdW5pbml0aWFsaXplZDtcbiAgcmV0dXJuIChwMCwgcDEsIHAyLCBwMykgPT4ge1xuICAgIGlmICghbG9vc2VJZGVudGljYWwodjAsIHAwKSB8fCAhbG9vc2VJZGVudGljYWwodjEsIHAxKSB8fCAhbG9vc2VJZGVudGljYWwodjIsIHAyKSB8fFxuICAgICAgICAhbG9vc2VJZGVudGljYWwodjMsIHAzKSkge1xuICAgICAgdjAgPSBwMDtcbiAgICAgIHYxID0gcDE7XG4gICAgICB2MiA9IHAyO1xuICAgICAgdjMgPSBwMztcbiAgICAgIHJlc3VsdCA9IGZuKHAwLCBwMSwgcDIsIHAzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1cmVQcm94eTU8UDAsIFAxLCBQMiwgUDMsIFA0LCBSPihcbiAgICBmbjogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIsIHAzOiBQMywgcDQ6IFA0KSA9PiBSKTogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIsIHAzOiBQMywgcDQ6IFA0KSA9PlxuICAgIFIge1xuICB2YXIgcmVzdWx0OiBSO1xuICB2YXIgdjAsIHYxLCB2MiwgdjMsIHY0O1xuICB2MCA9IHYxID0gdjIgPSB2MyA9IHY0ID0gdW5pbml0aWFsaXplZDtcbiAgcmV0dXJuIChwMCwgcDEsIHAyLCBwMywgcDQpID0+IHtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHYwLCBwMCkgfHwgIWxvb3NlSWRlbnRpY2FsKHYxLCBwMSkgfHwgIWxvb3NlSWRlbnRpY2FsKHYyLCBwMikgfHxcbiAgICAgICAgIWxvb3NlSWRlbnRpY2FsKHYzLCBwMykgfHwgIWxvb3NlSWRlbnRpY2FsKHY0LCBwNCkpIHtcbiAgICAgIHYwID0gcDA7XG4gICAgICB2MSA9IHAxO1xuICAgICAgdjIgPSBwMjtcbiAgICAgIHYzID0gcDM7XG4gICAgICB2NCA9IHA0O1xuICAgICAgcmVzdWx0ID0gZm4ocDAsIHAxLCBwMiwgcDMsIHA0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZVByb3h5NjxQMCwgUDEsIFAyLCBQMywgUDQsIFA1LCBSPihcbiAgICBmbjogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIsIHAzOiBQMywgcDQ6IFA0LCBwNTogUDUpID0+IFIpOiAocDA6IFAwLCBwMTogUDEsIHAyOiBQMiwgcDM6IFAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwNDogUDQsIHA1OiBQNSkgPT4gUiB7XG4gIHZhciByZXN1bHQ6IFI7XG4gIHZhciB2MCwgdjEsIHYyLCB2MywgdjQsIHY1O1xuICB2MCA9IHYxID0gdjIgPSB2MyA9IHY0ID0gdjUgPSB1bmluaXRpYWxpemVkO1xuICByZXR1cm4gKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpID0+IHtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHYwLCBwMCkgfHwgIWxvb3NlSWRlbnRpY2FsKHYxLCBwMSkgfHwgIWxvb3NlSWRlbnRpY2FsKHYyLCBwMikgfHxcbiAgICAgICAgIWxvb3NlSWRlbnRpY2FsKHYzLCBwMykgfHwgIWxvb3NlSWRlbnRpY2FsKHY0LCBwNCkgfHwgIWxvb3NlSWRlbnRpY2FsKHY1LCBwNSkpIHtcbiAgICAgIHYwID0gcDA7XG4gICAgICB2MSA9IHAxO1xuICAgICAgdjIgPSBwMjtcbiAgICAgIHYzID0gcDM7XG4gICAgICB2NCA9IHA0O1xuICAgICAgdjUgPSBwNTtcbiAgICAgIHJlc3VsdCA9IGZuKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZVByb3h5NzxQMCwgUDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUj4oXG4gICAgZm46IChwMDogUDAsIHAxOiBQMSwgcDI6IFAyLCBwMzogUDMsIHA0OiBQNCwgcDU6IFA1LCBwNjogUDYpID0+XG4gICAgICAgIFIpOiAocDA6IFAwLCBwMTogUDEsIHAyOiBQMiwgcDM6IFAzLCBwNDogUDQsIHA1OiBQNSwgcDY6IFA2KSA9PiBSIHtcbiAgdmFyIHJlc3VsdDogUjtcbiAgdmFyIHYwLCB2MSwgdjIsIHYzLCB2NCwgdjUsIHY2O1xuICB2MCA9IHYxID0gdjIgPSB2MyA9IHY0ID0gdjUgPSB2NiA9IHVuaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiAocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpID0+IHtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHYwLCBwMCkgfHwgIWxvb3NlSWRlbnRpY2FsKHYxLCBwMSkgfHwgIWxvb3NlSWRlbnRpY2FsKHYyLCBwMikgfHxcbiAgICAgICAgIWxvb3NlSWRlbnRpY2FsKHYzLCBwMykgfHwgIWxvb3NlSWRlbnRpY2FsKHY0LCBwNCkgfHwgIWxvb3NlSWRlbnRpY2FsKHY1LCBwNSkgfHxcbiAgICAgICAgIWxvb3NlSWRlbnRpY2FsKHY2LCBwNikpIHtcbiAgICAgIHYwID0gcDA7XG4gICAgICB2MSA9IHAxO1xuICAgICAgdjIgPSBwMjtcbiAgICAgIHYzID0gcDM7XG4gICAgICB2NCA9IHA0O1xuICAgICAgdjUgPSBwNTtcbiAgICAgIHY2ID0gcDY7XG4gICAgICByZXN1bHQgPSBmbihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXJlUHJveHk4PFAwLCBQMSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUj4oXG4gICAgZm46IChwMDogUDAsIHAxOiBQMSwgcDI6IFAyLCBwMzogUDMsIHA0OiBQNCwgcDU6IFA1LCBwNjogUDYsIHA3OiBQNykgPT5cbiAgICAgICAgUik6IChwMDogUDAsIHAxOiBQMSwgcDI6IFAyLCBwMzogUDMsIHA0OiBQNCwgcDU6IFA1LCBwNjogUDYsIHA3OiBQNykgPT4gUiB7XG4gIHZhciByZXN1bHQ6IFI7XG4gIHZhciB2MCwgdjEsIHYyLCB2MywgdjQsIHY1LCB2Niwgdjc7XG4gIHYwID0gdjEgPSB2MiA9IHYzID0gdjQgPSB2NSA9IHY2ID0gdjcgPSB1bmluaXRpYWxpemVkO1xuICByZXR1cm4gKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNykgPT4ge1xuICAgIGlmICghbG9vc2VJZGVudGljYWwodjAsIHAwKSB8fCAhbG9vc2VJZGVudGljYWwodjEsIHAxKSB8fCAhbG9vc2VJZGVudGljYWwodjIsIHAyKSB8fFxuICAgICAgICAhbG9vc2VJZGVudGljYWwodjMsIHAzKSB8fCAhbG9vc2VJZGVudGljYWwodjQsIHA0KSB8fCAhbG9vc2VJZGVudGljYWwodjUsIHA1KSB8fFxuICAgICAgICAhbG9vc2VJZGVudGljYWwodjYsIHA2KSB8fCAhbG9vc2VJZGVudGljYWwodjcsIHA3KSkge1xuICAgICAgdjAgPSBwMDtcbiAgICAgIHYxID0gcDE7XG4gICAgICB2MiA9IHAyO1xuICAgICAgdjMgPSBwMztcbiAgICAgIHY0ID0gcDQ7XG4gICAgICB2NSA9IHA1O1xuICAgICAgdjYgPSBwNjtcbiAgICAgIHY3ID0gcDc7XG4gICAgICByZXN1bHQgPSBmbihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZVByb3h5OTxQMCwgUDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUDcsIFA4LCBSPihcbiAgICBmbjogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIsIHAzOiBQMywgcDQ6IFA0LCBwNTogUDUsIHA2OiBQNiwgcDc6IFA3LCBwODogUDgpID0+XG4gICAgICAgIFIpOiAocDA6IFAwLCBwMTogUDEsIHAyOiBQMiwgcDM6IFAzLCBwNDogUDQsIHA1OiBQNSwgcDY6IFA2LCBwNzogUDcsIHA4OiBQOCkgPT4gUiB7XG4gIHZhciByZXN1bHQ6IFI7XG4gIHZhciB2MCwgdjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4O1xuICB2MCA9IHYxID0gdjIgPSB2MyA9IHY0ID0gdjUgPSB2NiA9IHY3ID0gdjggPSB1bmluaXRpYWxpemVkO1xuICByZXR1cm4gKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpID0+IHtcbiAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHYwLCBwMCkgfHwgIWxvb3NlSWRlbnRpY2FsKHYxLCBwMSkgfHwgIWxvb3NlSWRlbnRpY2FsKHYyLCBwMikgfHxcbiAgICAgICAgIWxvb3NlSWRlbnRpY2FsKHYzLCBwMykgfHwgIWxvb3NlSWRlbnRpY2FsKHY0LCBwNCkgfHwgIWxvb3NlSWRlbnRpY2FsKHY1LCBwNSkgfHxcbiAgICAgICAgIWxvb3NlSWRlbnRpY2FsKHY2LCBwNikgfHwgIWxvb3NlSWRlbnRpY2FsKHY3LCBwNykgfHwgIWxvb3NlSWRlbnRpY2FsKHY4LCBwOCkpIHtcbiAgICAgIHYwID0gcDA7XG4gICAgICB2MSA9IHAxO1xuICAgICAgdjIgPSBwMjtcbiAgICAgIHYzID0gcDM7XG4gICAgICB2NCA9IHA0O1xuICAgICAgdjUgPSBwNTtcbiAgICAgIHY2ID0gcDY7XG4gICAgICB2NyA9IHA3O1xuICAgICAgdjggPSBwODtcbiAgICAgIHJlc3VsdCA9IGZuKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVyZVByb3h5MTA8UDAsIFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYsIFA3LCBQOCwgUDksIFI+KFxuICAgIGZuOiAocDA6IFAwLCBwMTogUDEsIHAyOiBQMiwgcDM6IFAzLCBwNDogUDQsIHA1OiBQNSwgcDY6IFA2LCBwNzogUDcsIHA4OiBQOCwgcDk6IFA5KSA9PlxuICAgICAgICBSKTogKHAwOiBQMCwgcDE6IFAxLCBwMjogUDIsIHAzOiBQMywgcDQ6IFA0LCBwNTogUDUsIHA2OiBQNiwgcDc6IFA3LCBwODogUDgsIHA5OiBQOSkgPT4gUiB7XG4gIHZhciByZXN1bHQ6IFI7XG4gIHZhciB2MCwgdjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OTtcbiAgdjAgPSB2MSA9IHYyID0gdjMgPSB2NCA9IHY1ID0gdjYgPSB2NyA9IHY4ID0gdjkgPSB1bmluaXRpYWxpemVkO1xuICByZXR1cm4gKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5KSA9PiB7XG4gICAgaWYgKCFsb29zZUlkZW50aWNhbCh2MCwgcDApIHx8ICFsb29zZUlkZW50aWNhbCh2MSwgcDEpIHx8ICFsb29zZUlkZW50aWNhbCh2MiwgcDIpIHx8XG4gICAgICAgICFsb29zZUlkZW50aWNhbCh2MywgcDMpIHx8ICFsb29zZUlkZW50aWNhbCh2NCwgcDQpIHx8ICFsb29zZUlkZW50aWNhbCh2NSwgcDUpIHx8XG4gICAgICAgICFsb29zZUlkZW50aWNhbCh2NiwgcDYpIHx8ICFsb29zZUlkZW50aWNhbCh2NywgcDcpIHx8ICFsb29zZUlkZW50aWNhbCh2OCwgcDgpIHx8XG4gICAgICAgICFsb29zZUlkZW50aWNhbCh2OSwgcDkpKSB7XG4gICAgICB2MCA9IHAwO1xuICAgICAgdjEgPSBwMTtcbiAgICAgIHYyID0gcDI7XG4gICAgICB2MyA9IHAzO1xuICAgICAgdjQgPSBwNDtcbiAgICAgIHY1ID0gcDU7XG4gICAgICB2NiA9IHA2O1xuICAgICAgdjcgPSBwNztcbiAgICAgIHY4ID0gcDg7XG4gICAgICB2OSA9IHA5O1xuICAgICAgcmVzdWx0ID0gZm4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar view_utils_1 = require('./view_utils');\r\n/**\r\n * Represents an instance of a Component created via a {@link ComponentFactory}.\r\n *\r\n * `ComponentRef` provides access to the Component Instance as well other objects related to this\r\n * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}\r\n * method.\r\n */\r\nvar ComponentRef = (function () {\r\n function ComponentRef() {\r\n }\r\n Object.defineProperty(ComponentRef.prototype, \"location\", {\r\n /**\r\n * Location of the Host Element of this Component Instance.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentRef.prototype, \"injector\", {\r\n /**\r\n * The injector on which the component instance exists.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentRef.prototype, \"instance\", {\r\n /**\r\n * The instance of the Component.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ComponentRef.prototype, \"hostView\", {\r\n /**\r\n * The {@link ViewRef} of the Host View of this Component instance.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ComponentRef.prototype, \"changeDetectorRef\", {\r\n /**\r\n * The {@link ChangeDetectorRef} of the Component instance.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentRef.prototype, \"componentType\", {\r\n /**\r\n * The component type.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ComponentRef;\r\n}());\r\nexports.ComponentRef = ComponentRef;\r\nvar ComponentRef_ = (function (_super) {\r\n __extends(ComponentRef_, _super);\r\n function ComponentRef_(_hostElement, _componentType) {\r\n _super.call(this);\r\n this._hostElement = _hostElement;\r\n this._componentType = _componentType;\r\n }\r\n Object.defineProperty(ComponentRef_.prototype, \"location\", {\r\n get: function () { return this._hostElement.elementRef; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentRef_.prototype, \"injector\", {\r\n get: function () { return this._hostElement.injector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentRef_.prototype, \"instance\", {\r\n get: function () { return this._hostElement.component; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ComponentRef_.prototype, \"hostView\", {\r\n get: function () { return this._hostElement.parentView.ref; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ComponentRef_.prototype, \"changeDetectorRef\", {\r\n get: function () { return this.hostView; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ComponentRef_.prototype, \"componentType\", {\r\n get: function () { return this._componentType; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ComponentRef_.prototype.destroy = function () { this._hostElement.parentView.destroy(); };\r\n ComponentRef_.prototype.onDestroy = function (callback) { this.hostView.onDestroy(callback); };\r\n return ComponentRef_;\r\n}(ComponentRef));\r\nexports.ComponentRef_ = ComponentRef_;\r\nvar ComponentFactory = (function () {\r\n function ComponentFactory(selector, _viewFactory, _componentType) {\r\n this.selector = selector;\r\n this._viewFactory = _viewFactory;\r\n this._componentType = _componentType;\r\n }\r\n Object.defineProperty(ComponentFactory.prototype, \"componentType\", {\r\n get: function () { return this._componentType; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new component.\r\n */\r\n ComponentFactory.prototype.create = function (injector, projectableNodes, rootSelectorOrNode) {\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n if (rootSelectorOrNode === void 0) { rootSelectorOrNode = null; }\r\n var vu = injector.get(view_utils_1.ViewUtils);\r\n if (lang_1.isBlank(projectableNodes)) {\r\n projectableNodes = [];\r\n }\r\n // Note: Host views don't need a declarationAppElement!\r\n var hostView = this._viewFactory(vu, injector, null);\r\n var hostElement = hostView.create(projectableNodes, rootSelectorOrNode);\r\n return new ComponentRef_(hostElement, this._componentType);\r\n };\r\n ComponentFactory = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String, Function, lang_1.Type])\r\n ], ComponentFactory);\r\n return ComponentFactory;\r\n}());\r\nexports.ComponentFactory = ComponentFactory;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50X2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvY29tcG9uZW50X2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EscUJBQThDLDBCQUEwQixDQUFDLENBQUE7QUFDekUsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFJN0QsMkJBQXdCLGNBQWMsQ0FBQyxDQUFBO0FBR3ZDOzs7Ozs7R0FNRztBQUNIO0lBQUE7SUF3Q0EsQ0FBQztJQXBDQyxzQkFBSSxrQ0FBUTtRQUhaOztXQUVHO2FBQ0gsY0FBNkIsTUFBTSxDQUFDLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBS3RELHNCQUFJLGtDQUFRO1FBSFo7O1dBRUc7YUFDSCxjQUEyQixNQUFNLENBQUMsMEJBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFLcEQsc0JBQUksa0NBQVE7UUFIWjs7V0FFRzthQUNILGNBQXNCLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTs7SUFLL0Msc0JBQUksa0NBQVE7UUFIWjs7V0FFRzthQUNILGNBQTBCLE1BQU0sQ0FBQywwQkFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTs7SUFLbkQsc0JBQUksMkNBQWlCO1FBSHJCOztXQUVHO2FBQ0gsY0FBNkMsTUFBTSxDQUFDLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBS3RFLHNCQUFJLHVDQUFhO1FBSGpCOztXQUVHO2FBQ0gsY0FBNEIsTUFBTSxDQUFDLDBCQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBV3ZELG1CQUFDO0FBQUQsQ0FBQyxBQXhDRCxJQXdDQztBQXhDcUIsb0JBQVksZUF3Q2pDLENBQUE7QUFFRDtJQUFtQyxpQ0FBWTtJQUM3Qyx1QkFBb0IsWUFBd0IsRUFBVSxjQUFvQjtRQUFJLGlCQUFPLENBQUM7UUFBbEUsaUJBQVksR0FBWixZQUFZLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBTTtJQUFhLENBQUM7SUFDeEYsc0JBQUksbUNBQVE7YUFBWixjQUE2QixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUNuRSxzQkFBSSxtQ0FBUTthQUFaLGNBQTJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQy9ELHNCQUFJLG1DQUFRO2FBQVosY0FBc0IsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7O0lBQzNELHNCQUFJLG1DQUFRO2FBQVosY0FBMEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7OztPQUFBOztJQUNwRSxzQkFBSSw0Q0FBaUI7YUFBckIsY0FBNkMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTs7SUFDcEUsc0JBQUksd0NBQWE7YUFBakIsY0FBNEIsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUV6RCwrQkFBTyxHQUFQLGNBQWtCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxpQ0FBUyxHQUFULFVBQVUsUUFBa0IsSUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsb0JBQUM7QUFBRCxDQUFDLEFBWEQsQ0FBbUMsWUFBWSxHQVc5QztBQVhZLHFCQUFhLGdCQVd6QixDQUFBO0FBR0Q7SUFDRSwwQkFBbUIsUUFBZ0IsRUFBVSxZQUFzQixFQUMvQyxjQUFvQjtRQURyQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDL0MsbUJBQWMsR0FBZCxjQUFjLENBQU07SUFBRyxDQUFDO0lBRTVDLHNCQUFJLDJDQUFhO2FBQWpCLGNBQTRCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFekQ7O09BRUc7SUFDSCxpQ0FBTSxHQUFOLFVBQU8sUUFBa0IsRUFBRSxnQkFBZ0MsRUFDcEQsa0JBQXVDO1FBRG5CLGdDQUFnQyxHQUFoQyx1QkFBZ0M7UUFDcEQsa0NBQXVDLEdBQXZDLHlCQUF1QztRQUM1QyxJQUFJLEVBQUUsR0FBYyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFTLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsQ0FBQyxjQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCx1REFBdUQ7UUFDdkQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBcEJIO1FBQUMsWUFBSyxFQUFFOzt3QkFBQTtJQXFCUix1QkFBQztBQUFELENBQUMsQUFwQkQsSUFvQkM7QUFwQlksd0JBQWdCLG1CQW9CNUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VHlwZSwgQ09OU1QsIGlzUHJlc2VudCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7dW5pbXBsZW1lbnRlZH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnLi9lbGVtZW50X3JlZic7XG5pbXBvcnQge1ZpZXdSZWYsIFZpZXdSZWZffSBmcm9tICcuL3ZpZXdfcmVmJztcbmltcG9ydCB7QXBwRWxlbWVudH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7Vmlld1V0aWxzfSBmcm9tICcuL3ZpZXdfdXRpbHMnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGluc3RhbmNlIG9mIGEgQ29tcG9uZW50IGNyZWF0ZWQgdmlhIGEge0BsaW5rIENvbXBvbmVudEZhY3Rvcnl9LlxuICpcbiAqIGBDb21wb25lbnRSZWZgIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgQ29tcG9uZW50IEluc3RhbmNlIGFzIHdlbGwgb3RoZXIgb2JqZWN0cyByZWxhdGVkIHRvIHRoaXNcbiAqIENvbXBvbmVudCBJbnN0YW5jZSBhbmQgYWxsb3dzIHlvdSB0byBkZXN0cm95IHRoZSBDb21wb25lbnQgSW5zdGFuY2UgdmlhIHRoZSB7QGxpbmsgI2Rlc3Ryb3l9XG4gKiBtZXRob2QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnRSZWYge1xuICAvKipcbiAgICogTG9jYXRpb24gb2YgdGhlIEhvc3QgRWxlbWVudCBvZiB0aGlzIENvbXBvbmVudCBJbnN0YW5jZS5cbiAgICovXG4gIGdldCBsb2NhdGlvbigpOiBFbGVtZW50UmVmIHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5qZWN0b3Igb24gd2hpY2ggdGhlIGNvbXBvbmVudCBpbnN0YW5jZSBleGlzdHMuXG4gICAqL1xuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSBvZiB0aGUgQ29tcG9uZW50LlxuICAgKi9cbiAgZ2V0IGluc3RhbmNlKCk6IGFueSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH07XG5cbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgVmlld1JlZn0gb2YgdGhlIEhvc3QgVmlldyBvZiB0aGlzIENvbXBvbmVudCBpbnN0YW5jZS5cbiAgICovXG4gIGdldCBob3N0VmlldygpOiBWaWV3UmVmIHsgcmV0dXJuIHVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICAvKipcbiAgICogVGhlIHtAbGluayBDaGFuZ2VEZXRlY3RvclJlZn0gb2YgdGhlIENvbXBvbmVudCBpbnN0YW5jZS5cbiAgICovXG4gIGdldCBjaGFuZ2VEZXRlY3RvclJlZigpOiBDaGFuZ2VEZXRlY3RvclJlZiB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cblxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB0eXBlLlxuICAgKi9cbiAgZ2V0IGNvbXBvbmVudFR5cGUoKTogVHlwZSB7IHJldHVybiB1bmltcGxlbWVudGVkKCk7IH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIGNvbXBvbmVudCBpbnN0YW5jZSBhbmQgYWxsIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICAgKi9cbiAgYWJzdHJhY3QgZGVzdHJveSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gICAqL1xuICBhYnN0cmFjdCBvbkRlc3Ryb3koY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudFJlZl8gZXh0ZW5kcyBDb21wb25lbnRSZWYge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0RWxlbWVudDogQXBwRWxlbWVudCwgcHJpdmF0ZSBfY29tcG9uZW50VHlwZTogVHlwZSkgeyBzdXBlcigpOyB9XG4gIGdldCBsb2NhdGlvbigpOiBFbGVtZW50UmVmIHsgcmV0dXJuIHRoaXMuX2hvc3RFbGVtZW50LmVsZW1lbnRSZWY7IH1cbiAgZ2V0IGluamVjdG9yKCk6IEluamVjdG9yIHsgcmV0dXJuIHRoaXMuX2hvc3RFbGVtZW50LmluamVjdG9yOyB9XG4gIGdldCBpbnN0YW5jZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5faG9zdEVsZW1lbnQuY29tcG9uZW50OyB9O1xuICBnZXQgaG9zdFZpZXcoKTogVmlld1JlZiB7IHJldHVybiB0aGlzLl9ob3N0RWxlbWVudC5wYXJlbnRWaWV3LnJlZjsgfTtcbiAgZ2V0IGNoYW5nZURldGVjdG9yUmVmKCk6IENoYW5nZURldGVjdG9yUmVmIHsgcmV0dXJuIHRoaXMuaG9zdFZpZXc7IH07XG4gIGdldCBjb21wb25lbnRUeXBlKCk6IFR5cGUgeyByZXR1cm4gdGhpcy5fY29tcG9uZW50VHlwZTsgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7IHRoaXMuX2hvc3RFbGVtZW50LnBhcmVudFZpZXcuZGVzdHJveSgpOyB9XG4gIG9uRGVzdHJveShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHsgdGhpcy5ob3N0Vmlldy5vbkRlc3Ryb3koY2FsbGJhY2spOyB9XG59XG5cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZWxlY3Rvcjogc3RyaW5nLCBwcml2YXRlIF92aWV3RmFjdG9yeTogRnVuY3Rpb24sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NvbXBvbmVudFR5cGU6IFR5cGUpIHt9XG5cbiAgZ2V0IGNvbXBvbmVudFR5cGUoKTogVHlwZSB7IHJldHVybiB0aGlzLl9jb21wb25lbnRUeXBlOyB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29tcG9uZW50LlxuICAgKi9cbiAgY3JlYXRlKGluamVjdG9yOiBJbmplY3RvciwgcHJvamVjdGFibGVOb2RlczogYW55W11bXSA9IG51bGwsXG4gICAgICAgICByb290U2VsZWN0b3JPck5vZGU6IHN0cmluZyB8IGFueSA9IG51bGwpOiBDb21wb25lbnRSZWYge1xuICAgIHZhciB2dTogVmlld1V0aWxzID0gaW5qZWN0b3IuZ2V0KFZpZXdVdGlscyk7XG4gICAgaWYgKGlzQmxhbmsocHJvamVjdGFibGVOb2RlcykpIHtcbiAgICAgIHByb2plY3RhYmxlTm9kZXMgPSBbXTtcbiAgICB9XG4gICAgLy8gTm90ZTogSG9zdCB2aWV3cyBkb24ndCBuZWVkIGEgZGVjbGFyYXRpb25BcHBFbGVtZW50IVxuICAgIHZhciBob3N0VmlldyA9IHRoaXMuX3ZpZXdGYWN0b3J5KHZ1LCBpbmplY3RvciwgbnVsbCk7XG4gICAgdmFyIGhvc3RFbGVtZW50ID0gaG9zdFZpZXcuY3JlYXRlKHByb2plY3RhYmxlTm9kZXMsIHJvb3RTZWxlY3Rvck9yTm9kZSk7XG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRSZWZfKGhvc3RFbGVtZW50LCB0aGlzLl9jb21wb25lbnRUeXBlKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar component_factory_1 = require('./component_factory');\r\n/**\r\n * Low-level service for loading {@link ComponentFactory}s, which\r\n * can later be used to create and render a Component instance.\r\n */\r\nvar ComponentResolver = (function () {\r\n function ComponentResolver() {\r\n }\r\n return ComponentResolver;\r\n}());\r\nexports.ComponentResolver = ComponentResolver;\r\nfunction _isComponentFactory(type) {\r\n return type instanceof component_factory_1.ComponentFactory;\r\n}\r\nvar ReflectorComponentResolver = (function (_super) {\r\n __extends(ReflectorComponentResolver, _super);\r\n function ReflectorComponentResolver() {\r\n _super.apply(this, arguments);\r\n }\r\n ReflectorComponentResolver.prototype.resolveComponent = function (componentType) {\r\n var metadatas = reflection_1.reflector.annotations(componentType);\r\n var componentFactory = metadatas.find(_isComponentFactory);\r\n if (lang_1.isBlank(componentFactory)) {\r\n throw new exceptions_1.BaseException(\"No precompiled component \" + lang_1.stringify(componentType) + \" found\");\r\n }\r\n return async_1.PromiseWrapper.resolve(componentFactory);\r\n };\r\n ReflectorComponentResolver.prototype.clearCache = function () { };\r\n ReflectorComponentResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], ReflectorComponentResolver);\r\n return ReflectorComponentResolver;\r\n}(ComponentResolver));\r\nexports.ReflectorComponentResolver = ReflectorComponentResolver;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50X3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2NvbXBvbmVudF9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCxzQkFBNkIsMkJBQTJCLENBQUMsQ0FBQTtBQUN6RCwyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUNsRSxrQ0FBK0IscUJBQXFCLENBQUMsQ0FBQTtBQUVyRDs7O0dBR0c7QUFDSDtJQUFBO0lBR0EsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FBQyxBQUhELElBR0M7QUFIcUIseUJBQWlCLG9CQUd0QyxDQUFBO0FBRUQsNkJBQTZCLElBQVM7SUFDcEMsTUFBTSxDQUFDLElBQUksWUFBWSxvQ0FBZ0IsQ0FBQztBQUMxQyxDQUFDO0FBR0Q7SUFBZ0QsOENBQWlCO0lBQWpFO1FBQWdELDhCQUFpQjtJQVdqRSxDQUFDO0lBVkMscURBQWdCLEdBQWhCLFVBQWlCLGFBQW1CO1FBQ2xDLElBQUksU0FBUyxHQUFHLHNCQUFTLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNELEVBQUUsQ0FBQyxDQUFDLGNBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLElBQUksMEJBQWEsQ0FBQyw4QkFBNEIsZ0JBQVMsQ0FBQyxhQUFhLENBQUMsV0FBUSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE1BQU0sQ0FBQyxzQkFBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCwrQ0FBVSxHQUFWLGNBQWMsQ0FBQztJQVhqQjtRQUFDLGVBQVUsRUFBRTs7a0NBQUE7SUFZYixpQ0FBQztBQUFELENBQUMsQUFYRCxDQUFnRCxpQkFBaUIsR0FXaEU7QUFYWSxrQ0FBMEIsNkJBV3RDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VHlwZSwgaXNCbGFuaywgc3RyaW5naWZ5fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtQcm9taXNlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge3JlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcbmltcG9ydCB7Q29tcG9uZW50RmFjdG9yeX0gZnJvbSAnLi9jb21wb25lbnRfZmFjdG9yeSc7XG5cbi8qKlxuICogTG93LWxldmVsIHNlcnZpY2UgZm9yIGxvYWRpbmcge0BsaW5rIENvbXBvbmVudEZhY3Rvcnl9cywgd2hpY2hcbiAqIGNhbiBsYXRlciBiZSB1c2VkIHRvIGNyZWF0ZSBhbmQgcmVuZGVyIGEgQ29tcG9uZW50IGluc3RhbmNlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcG9uZW50UmVzb2x2ZXIge1xuICBhYnN0cmFjdCByZXNvbHZlQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFR5cGUpOiBQcm9taXNlPENvbXBvbmVudEZhY3Rvcnk+O1xuICBhYnN0cmFjdCBjbGVhckNhY2hlKCk7XG59XG5cbmZ1bmN0aW9uIF9pc0NvbXBvbmVudEZhY3RvcnkodHlwZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlIGluc3RhbmNlb2YgQ29tcG9uZW50RmFjdG9yeTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZmxlY3RvckNvbXBvbmVudFJlc29sdmVyIGV4dGVuZHMgQ29tcG9uZW50UmVzb2x2ZXIge1xuICByZXNvbHZlQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFR5cGUpOiBQcm9taXNlPENvbXBvbmVudEZhY3Rvcnk+IHtcbiAgICB2YXIgbWV0YWRhdGFzID0gcmVmbGVjdG9yLmFubm90YXRpb25zKGNvbXBvbmVudFR5cGUpO1xuICAgIHZhciBjb21wb25lbnRGYWN0b3J5ID0gbWV0YWRhdGFzLmZpbmQoX2lzQ29tcG9uZW50RmFjdG9yeSk7XG5cbiAgICBpZiAoaXNCbGFuayhjb21wb25lbnRGYWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYE5vIHByZWNvbXBpbGVkIGNvbXBvbmVudCAke3N0cmluZ2lmeShjb21wb25lbnRUeXBlKX0gZm91bmRgKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLnJlc29sdmUoY29tcG9uZW50RmFjdG9yeSk7XG4gIH1cbiAgY2xlYXJDYWNoZSgpIHt9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar component_resolver_1 = require('./component_resolver');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Service for instantiating a Component and attaching it to a View at a specified location.\r\n */\r\nvar DynamicComponentLoader = (function () {\r\n function DynamicComponentLoader() {\r\n }\r\n return DynamicComponentLoader;\r\n}());\r\nexports.DynamicComponentLoader = DynamicComponentLoader;\r\nvar DynamicComponentLoader_ = (function (_super) {\r\n __extends(DynamicComponentLoader_, _super);\r\n function DynamicComponentLoader_(_compiler) {\r\n _super.call(this);\r\n this._compiler = _compiler;\r\n }\r\n DynamicComponentLoader_.prototype.loadAsRoot = function (type, overrideSelectorOrNode, injector, onDispose, projectableNodes) {\r\n return this._compiler.resolveComponent(type).then(function (componentFactory) {\r\n var componentRef = componentFactory.create(injector, projectableNodes, lang_1.isPresent(overrideSelectorOrNode) ? overrideSelectorOrNode : componentFactory.selector);\r\n if (lang_1.isPresent(onDispose)) {\r\n componentRef.onDestroy(onDispose);\r\n }\r\n return componentRef;\r\n });\r\n };\r\n DynamicComponentLoader_.prototype.loadNextToLocation = function (type, location, providers, projectableNodes) {\r\n if (providers === void 0) { providers = null; }\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n return this._compiler.resolveComponent(type).then(function (componentFactory) {\r\n var contextInjector = location.parentInjector;\r\n var childInjector = lang_1.isPresent(providers) && providers.length > 0 ?\r\n di_1.ReflectiveInjector.fromResolvedProviders(providers, contextInjector) :\r\n contextInjector;\r\n return location.createComponent(componentFactory, location.length, childInjector, projectableNodes);\r\n });\r\n };\r\n DynamicComponentLoader_ = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [component_resolver_1.ComponentResolver])\r\n ], DynamicComponentLoader_);\r\n return DynamicComponentLoader_;\r\n}(DynamicComponentLoader));\r\nexports.DynamicComponentLoader_ = DynamicComponentLoader_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY19jb21wb25lbnRfbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2R5bmFtaWNfY29tcG9uZW50X2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQkFLTyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLG1DQUFnQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3ZELHFCQUFpRCwwQkFBMEIsQ0FBQyxDQUFBO0FBSTVFOztHQUVHO0FBQ0g7SUFBQTtJQWlHQSxDQUFDO0lBQUQsNkJBQUM7QUFBRCxDQUFDLEFBakdELElBaUdDO0FBakdxQiw4QkFBc0IseUJBaUczQyxDQUFBO0FBR0Q7SUFBNkMsMkNBQXNCO0lBQ2pFLGlDQUFvQixTQUE0QjtRQUFJLGlCQUFPLENBQUM7UUFBeEMsY0FBUyxHQUFULFNBQVMsQ0FBbUI7SUFBYSxDQUFDO0lBRTlELDRDQUFVLEdBQVYsVUFBVyxJQUFVLEVBQUUsc0JBQW9DLEVBQUUsUUFBa0IsRUFDcEUsU0FBc0IsRUFBRSxnQkFBMEI7UUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsZ0JBQWdCO1lBQ2hFLElBQUksWUFBWSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDdEMsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixnQkFBUyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUYsRUFBRSxDQUFDLENBQUMsZ0JBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQWtCLEdBQWxCLFVBQW1CLElBQVUsRUFBRSxRQUEwQixFQUN0QyxTQUE4QyxFQUM5QyxnQkFBZ0M7UUFEaEMseUJBQThDLEdBQTlDLGdCQUE4QztRQUM5QyxnQ0FBZ0MsR0FBaEMsdUJBQWdDO1FBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLGdCQUFnQjtZQUNoRSxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzlDLElBQUksYUFBYSxHQUFHLGdCQUFTLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUN4Qyx1QkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDO2dCQUNwRSxlQUFlLENBQUM7WUFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQ2hELGdCQUFnQixDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBNUJIO1FBQUMsZUFBVSxFQUFFOzsrQkFBQTtJQTZCYiw4QkFBQztBQUFELENBQUMsQUE1QkQsQ0FBNkMsc0JBQXNCLEdBNEJsRTtBQTVCWSwrQkFBdUIsMEJBNEJuQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0b3IsXG4gIFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyLFxuICBJbmplY3RhYmxlLFxuICBSZWZsZWN0aXZlSW5qZWN0b3Jcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtDb21wb25lbnRSZXNvbHZlcn0gZnJvbSAnLi9jb21wb25lbnRfcmVzb2x2ZXInO1xuaW1wb3J0IHtpc1R5cGUsIFR5cGUsIHN0cmluZ2lmeSwgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtDb21wb25lbnRSZWZ9IGZyb20gJy4vY29tcG9uZW50X2ZhY3RvcnknO1xuaW1wb3J0IHtWaWV3Q29udGFpbmVyUmVmfSBmcm9tICcuL3ZpZXdfY29udGFpbmVyX3JlZic7XG5cbi8qKlxuICogU2VydmljZSBmb3IgaW5zdGFudGlhdGluZyBhIENvbXBvbmVudCBhbmQgYXR0YWNoaW5nIGl0IHRvIGEgVmlldyBhdCBhIHNwZWNpZmllZCBsb2NhdGlvbi5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIER5bmFtaWNDb21wb25lbnRMb2FkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIENvbXBvbmVudCBgdHlwZWAgYW5kIGF0dGFjaGVzIGl0IHRvIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZVxuICAgKiBwbGF0Zm9ybS1zcGVjaWZpYyBnbG9iYWwgdmlldyB0aGF0IG1hdGNoZXMgdGhlIGNvbXBvbmVudCdzIHNlbGVjdG9yLlxuICAgKlxuICAgKiBJbiBhIGJyb3dzZXIgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGdsb2JhbCB2aWV3IGlzIHRoZSBtYWluIERPTSBEb2N1bWVudC5cbiAgICpcbiAgICogSWYgbmVlZGVkLCB0aGUgY29tcG9uZW50J3Mgc2VsZWN0b3IgY2FuIGJlIG92ZXJyaWRkZW4gdmlhIGBvdmVycmlkZVNlbGVjdG9yYC5cbiAgICpcbiAgICogWW91IGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgYGluamVjdG9yYCBhbmQgdGhpcyB7QGxpbmsgSW5qZWN0b3J9IHdpbGwgYmUgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGVcbiAgICogQ29tcG9uZW50LlxuICAgKlxuICAgKiBUbyBiZSBub3RpZmllZCB3aGVuIHRoaXMgQ29tcG9uZW50IGluc3RhbmNlIGlzIGRlc3Ryb3llZCwgeW91IGNhbiBhbHNvIG9wdGlvbmFsbHkgcHJvdmlkZVxuICAgKiBgb25EaXNwb3NlYCBjYWxsYmFjay5cbiAgICpcbiAgICogUmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSB7QGxpbmsgQ29tcG9uZW50UmVmfSByZXByZXNlbnRpbmcgdGhlIG5ld2x5IGNyZWF0ZWQgQ29tcG9uZW50LlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdjaGlsZC1jb21wb25lbnQnLFxuICAgKiAgIHRlbXBsYXRlOiAnQ2hpbGQnXG4gICAqIH0pXG4gICAqIGNsYXNzIENoaWxkQ29tcG9uZW50IHtcbiAgICogfVxuICAgKlxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ215LWFwcCcsXG4gICAqICAgdGVtcGxhdGU6ICdQYXJlbnQgKDxjaGlsZCBpZD1cImNoaWxkXCI+PC9jaGlsZD4pJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBNeUFwcCB7XG4gICAqICAgY29uc3RydWN0b3IoZGNsOiBEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICogICAgIGRjbC5sb2FkQXNSb290KENoaWxkQ29tcG9uZW50LCAnI2NoaWxkJywgaW5qZWN0b3IpO1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBib290c3RyYXAoTXlBcHApO1xuICAgKiBgYGBcbiAgICpcbiAgICogUmVzdWx0aW5nIERPTTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxteS1hcHA+XG4gICAqICAgUGFyZW50IChcbiAgICogICAgIDxjaGlsZCBpZD1cImNoaWxkXCI+Q2hpbGQ8L2NoaWxkPlxuICAgKiAgIClcbiAgICogPC9teS1hcHA+XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZEFzUm9vdCh0eXBlOiBUeXBlLCBvdmVycmlkZVNlbGVjdG9yT3JOb2RlOiBzdHJpbmcgfCBhbnksIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICBvbkRpc3Bvc2U/OiAoKSA9PiB2b2lkLCBwcm9qZWN0YWJsZU5vZGVzPzogYW55W11bXSk6IFByb21pc2U8Q29tcG9uZW50UmVmPjtcblxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEgQ29tcG9uZW50IGFuZCBhdHRhY2hlcyBpdCB0byB0aGUgVmlldyBDb250YWluZXIgZm91bmQgYXQgdGhlXG4gICAqIGBsb2NhdGlvbmAgc3BlY2lmaWVkIGFzIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfS5cbiAgICpcbiAgICogWW91IGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgYHByb3ZpZGVyc2AgdG8gY29uZmlndXJlIHRoZSB7QGxpbmsgSW5qZWN0b3J9IHByb3Zpc2lvbmVkIGZvciB0aGlzXG4gICAqIENvbXBvbmVudCBJbnN0YW5jZS5cbiAgICpcbiAgICogUmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSB7QGxpbmsgQ29tcG9uZW50UmVmfSByZXByZXNlbnRpbmcgdGhlIG5ld2x5IGNyZWF0ZWQgQ29tcG9uZW50LlxuICAgKlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdjaGlsZC1jb21wb25lbnQnLFxuICAgKiAgIHRlbXBsYXRlOiAnQ2hpbGQnXG4gICAqIH0pXG4gICAqIGNsYXNzIENoaWxkQ29tcG9uZW50IHtcbiAgICogfVxuICAgKlxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ215LWFwcCcsXG4gICAqICAgdGVtcGxhdGU6ICdQYXJlbnQnXG4gICAqIH0pXG4gICAqIGNsYXNzIE15QXBwIHtcbiAgICogICBjb25zdHJ1Y3RvcihkY2w6IER5bmFtaWNDb21wb25lbnRMb2FkZXIsIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICogICAgIGRjbC5sb2FkTmV4dFRvTG9jYXRpb24oQ2hpbGRDb21wb25lbnQsIHZpZXdDb250YWluZXJSZWYpO1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBib290c3RyYXAoTXlBcHApO1xuICAgKiBgYGBcbiAgICpcbiAgICogUmVzdWx0aW5nIERPTTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxteS1hcHA+UGFyZW50PC9teS1hcHA+XG4gICAqIDxjaGlsZC1jb21wb25lbnQ+Q2hpbGQ8L2NoaWxkLWNvbXBvbmVudD5cbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBsb2FkTmV4dFRvTG9jYXRpb24odHlwZTogVHlwZSwgbG9jYXRpb246IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcnM/OiBSZXNvbHZlZFJlZmxlY3RpdmVQcm92aWRlcltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2Rlcz86IGFueVtdW10pOiBQcm9taXNlPENvbXBvbmVudFJlZj47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ29tcG9uZW50TG9hZGVyXyBleHRlbmRzIER5bmFtaWNDb21wb25lbnRMb2FkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb21waWxlcjogQ29tcG9uZW50UmVzb2x2ZXIpIHsgc3VwZXIoKTsgfVxuXG4gIGxvYWRBc1Jvb3QodHlwZTogVHlwZSwgb3ZlcnJpZGVTZWxlY3Rvck9yTm9kZTogc3RyaW5nIHwgYW55LCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgb25EaXNwb3NlPzogKCkgPT4gdm9pZCwgcHJvamVjdGFibGVOb2Rlcz86IGFueVtdW10pOiBQcm9taXNlPENvbXBvbmVudFJlZj4ge1xuICAgIHJldHVybiB0aGlzLl9jb21waWxlci5yZXNvbHZlQ29tcG9uZW50KHR5cGUpLnRoZW4oY29tcG9uZW50RmFjdG9yeSA9PiB7XG4gICAgICB2YXIgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUoXG4gICAgICAgICAgaW5qZWN0b3IsIHByb2plY3RhYmxlTm9kZXMsXG4gICAgICAgICAgaXNQcmVzZW50KG92ZXJyaWRlU2VsZWN0b3JPck5vZGUpID8gb3ZlcnJpZGVTZWxlY3Rvck9yTm9kZSA6IGNvbXBvbmVudEZhY3Rvcnkuc2VsZWN0b3IpO1xuICAgICAgaWYgKGlzUHJlc2VudChvbkRpc3Bvc2UpKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5vbkRlc3Ryb3kob25EaXNwb3NlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgfSk7XG4gIH1cblxuICBsb2FkTmV4dFRvTG9jYXRpb24odHlwZTogVHlwZSwgbG9jYXRpb246IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFJlc29sdmVkUmVmbGVjdGl2ZVByb3ZpZGVyW10gPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2RlczogYW55W11bXSA9IG51bGwpOiBQcm9taXNlPENvbXBvbmVudFJlZj4ge1xuICAgIHJldHVybiB0aGlzLl9jb21waWxlci5yZXNvbHZlQ29tcG9uZW50KHR5cGUpLnRoZW4oY29tcG9uZW50RmFjdG9yeSA9PiB7XG4gICAgICB2YXIgY29udGV4dEluamVjdG9yID0gbG9jYXRpb24ucGFyZW50SW5qZWN0b3I7XG4gICAgICB2YXIgY2hpbGRJbmplY3RvciA9IGlzUHJlc2VudChwcm92aWRlcnMpICYmIHByb3ZpZGVycy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmxlY3RpdmVJbmplY3Rvci5mcm9tUmVzb2x2ZWRQcm92aWRlcnMocHJvdmlkZXJzLCBjb250ZXh0SW5qZWN0b3IpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRJbmplY3RvcjtcbiAgICAgIHJldHVybiBsb2NhdGlvbi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSwgbG9jYXRpb24ubGVuZ3RoLCBjaGlsZEluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0YWJsZU5vZGVzKTtcbiAgICB9KTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar application_tokens_1 = require('./application_tokens');\r\nvar application_ref_1 = require('./application_ref');\r\nvar change_detection_1 = require('./change_detection/change_detection');\r\nvar view_utils_1 = require(\"./linker/view_utils\");\r\nvar component_resolver_1 = require('./linker/component_resolver');\r\nvar dynamic_component_loader_1 = require('./linker/dynamic_component_loader');\r\nvar __unused; // avoid unused import when Type union types are erased\r\n/**\r\n * A default set of providers which should be included in any Angular\r\n * application, regardless of the platform it runs onto.\r\n */\r\nexports.APPLICATION_COMMON_PROVIDERS = lang_1.CONST_EXPR([\r\n application_ref_1.APPLICATION_CORE_PROVIDERS,\r\n new di_1.Provider(component_resolver_1.ComponentResolver, { useClass: component_resolver_1.ReflectorComponentResolver }),\r\n application_tokens_1.APP_ID_RANDOM_PROVIDER,\r\n view_utils_1.ViewUtils,\r\n new di_1.Provider(change_detection_1.IterableDiffers, { useValue: change_detection_1.defaultIterableDiffers }),\r\n new di_1.Provider(change_detection_1.KeyValueDiffers, { useValue: change_detection_1.defaultKeyValueDiffers }),\r\n new di_1.Provider(dynamic_component_loader_1.DynamicComponentLoader, { useClass: dynamic_component_loader_1.DynamicComponentLoader_ })\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fY29tbW9uX3Byb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL2FwcGxpY2F0aW9uX2NvbW1vbl9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFCQUErQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQzFELG1CQUF1RCxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlFLG1DQUFxQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzVELGdDQUF5QyxtQkFBbUIsQ0FBQyxDQUFBO0FBQzdELGlDQUtPLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsMkJBQXdCLHFCQUFxQixDQUFDLENBQUE7QUFDOUMsbUNBQTRELDZCQUE2QixDQUFDLENBQUE7QUFDMUYseUNBQThELG1DQUFtQyxDQUFDLENBQUE7QUFFbEcsSUFBSSxRQUFjLENBQUMsQ0FBRSx1REFBdUQ7QUFFNUU7OztHQUdHO0FBQ1Usb0NBQTRCLEdBQW1DLGlCQUFVLENBQUM7SUFDckYsNENBQTBCO0lBQzFCLElBQUksYUFBUSxDQUFDLHNDQUFpQixFQUFFLEVBQUMsUUFBUSxFQUFFLCtDQUEwQixFQUFDLENBQUM7SUFDdkUsMkNBQXNCO0lBQ3RCLHNCQUFTO0lBQ1QsSUFBSSxhQUFRLENBQUMsa0NBQWUsRUFBRSxFQUFDLFFBQVEsRUFBRSx5Q0FBc0IsRUFBQyxDQUFDO0lBQ2pFLElBQUksYUFBUSxDQUFDLGtDQUFlLEVBQUUsRUFBQyxRQUFRLEVBQUUseUNBQXNCLEVBQUMsQ0FBQztJQUNqRSxJQUFJLGFBQVEsQ0FBQyxpREFBc0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxrREFBdUIsRUFBQyxDQUFDO0NBQzFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZSwgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7cHJvdmlkZSwgUHJvdmlkZXIsIEluamVjdG9yLCBPcGFxdWVUb2tlbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtBUFBfSURfUkFORE9NX1BST1ZJREVSfSBmcm9tICcuL2FwcGxpY2F0aW9uX3Rva2Vucyc7XG5pbXBvcnQge0FQUExJQ0FUSU9OX0NPUkVfUFJPVklERVJTfSBmcm9tICcuL2FwcGxpY2F0aW9uX3JlZic7XG5pbXBvcnQge1xuICBJdGVyYWJsZURpZmZlcnMsXG4gIGRlZmF1bHRJdGVyYWJsZURpZmZlcnMsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgZGVmYXVsdEtleVZhbHVlRGlmZmVyc1xufSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG5pbXBvcnQge1ZpZXdVdGlsc30gZnJvbSBcIi4vbGlua2VyL3ZpZXdfdXRpbHNcIjtcbmltcG9ydCB7Q29tcG9uZW50UmVzb2x2ZXIsIFJlZmxlY3RvckNvbXBvbmVudFJlc29sdmVyfSBmcm9tICcuL2xpbmtlci9jb21wb25lbnRfcmVzb2x2ZXInO1xuaW1wb3J0IHtEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBEeW5hbWljQ29tcG9uZW50TG9hZGVyX30gZnJvbSAnLi9saW5rZXIvZHluYW1pY19jb21wb25lbnRfbG9hZGVyJztcblxudmFyIF9fdW51c2VkOiBUeXBlOyAgLy8gYXZvaWQgdW51c2VkIGltcG9ydCB3aGVuIFR5cGUgdW5pb24gdHlwZXMgYXJlIGVyYXNlZFxuXG4vKipcbiAqIEEgZGVmYXVsdCBzZXQgb2YgcHJvdmlkZXJzIHdoaWNoIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBhbnkgQW5ndWxhclxuICogYXBwbGljYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtIGl0IHJ1bnMgb250by5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUExJQ0FUSU9OX0NPTU1PTl9QUk9WSURFUlM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPiA9IENPTlNUX0VYUFIoW1xuICBBUFBMSUNBVElPTl9DT1JFX1BST1ZJREVSUyxcbiAgbmV3IFByb3ZpZGVyKENvbXBvbmVudFJlc29sdmVyLCB7dXNlQ2xhc3M6IFJlZmxlY3RvckNvbXBvbmVudFJlc29sdmVyfSksXG4gIEFQUF9JRF9SQU5ET01fUFJPVklERVIsXG4gIFZpZXdVdGlscyxcbiAgbmV3IFByb3ZpZGVyKEl0ZXJhYmxlRGlmZmVycywge3VzZVZhbHVlOiBkZWZhdWx0SXRlcmFibGVEaWZmZXJzfSksXG4gIG5ldyBQcm92aWRlcihLZXlWYWx1ZURpZmZlcnMsIHt1c2VWYWx1ZTogZGVmYXVsdEtleVZhbHVlRGlmZmVyc30pLFxuICBuZXcgUHJvdmlkZXIoRHluYW1pY0NvbXBvbmVudExvYWRlciwge3VzZUNsYXNzOiBEeW5hbWljQ29tcG9uZW50TG9hZGVyX30pXG5dKTsiXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\n/**\r\n * Provides read-only access to reflection data about symbols. Used internally by Angular\r\n * to power dependency injection and compilation.\r\n */\r\nvar ReflectorReader = (function () {\r\n function ReflectorReader() {\r\n }\r\n return ReflectorReader;\r\n}());\r\nexports.ReflectorReader = ReflectorReader;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yX3JlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdG9yX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHO0FBQ0g7SUFBQTtJQUtBLENBQUM7SUFBRCxzQkFBQztBQUFELENBQUMsQUFMRCxJQUtDO0FBTHFCLHVCQUFlLGtCQUtwQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHJlZmxlY3Rpb24gZGF0YSBhYm91dCBzeW1ib2xzLiBVc2VkIGludGVybmFsbHkgYnkgQW5ndWxhclxuICogdG8gcG93ZXIgZGVwZW5kZW5jeSBpbmplY3Rpb24gYW5kIGNvbXBpbGF0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVmbGVjdG9yUmVhZGVyIHtcbiAgYWJzdHJhY3QgcGFyYW1ldGVycyh0eXBlT3JGdW5jOiAvKlR5cGUqLyBhbnkpOiBhbnlbXVtdO1xuICBhYnN0cmFjdCBhbm5vdGF0aW9ucyh0eXBlT3JGdW5jOiAvKlR5cGUqLyBhbnkpOiBhbnlbXTtcbiAgYWJzdHJhY3QgcHJvcE1ldGFkYXRhKHR5cGVPckZ1bmM6IC8qVHlwZSovIGFueSk6IHtba2V5OiBzdHJpbmddOiBhbnlbXX07XG4gIGFic3RyYWN0IGltcG9ydFVyaSh0eXBlT3JGdW5jOiAvKlR5cGUqLyBhbnkpOiBzdHJpbmc7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar reflector_reader_1 = require('./reflector_reader');\r\n/**\r\n * Reflective information about a symbol, including annotations, interfaces, and other metadata.\r\n */\r\nvar ReflectionInfo = (function () {\r\n function ReflectionInfo(annotations, parameters, factory, interfaces, propMetadata) {\r\n this.annotations = annotations;\r\n this.parameters = parameters;\r\n this.factory = factory;\r\n this.interfaces = interfaces;\r\n this.propMetadata = propMetadata;\r\n }\r\n return ReflectionInfo;\r\n}());\r\nexports.ReflectionInfo = ReflectionInfo;\r\n/**\r\n * Provides access to reflection data about symbols. Used internally by Angular\r\n * to power dependency injection and compilation.\r\n */\r\nvar Reflector = (function (_super) {\r\n __extends(Reflector, _super);\r\n function Reflector(reflectionCapabilities) {\r\n _super.call(this);\r\n /** @internal */\r\n this._injectableInfo = new collection_1.Map();\r\n /** @internal */\r\n this._getters = new collection_1.Map();\r\n /** @internal */\r\n this._setters = new collection_1.Map();\r\n /** @internal */\r\n this._methods = new collection_1.Map();\r\n this._usedKeys = null;\r\n this.reflectionCapabilities = reflectionCapabilities;\r\n }\r\n Reflector.prototype.isReflectionEnabled = function () { return this.reflectionCapabilities.isReflectionEnabled(); };\r\n /**\r\n * Causes `this` reflector to track keys used to access\r\n * {@link ReflectionInfo} objects.\r\n */\r\n Reflector.prototype.trackUsage = function () { this._usedKeys = new collection_1.Set(); };\r\n /**\r\n * Lists types for which reflection information was not requested since\r\n * {@link #trackUsage} was called. This list could later be audited as\r\n * potential dead code.\r\n */\r\n Reflector.prototype.listUnusedKeys = function () {\r\n var _this = this;\r\n if (this._usedKeys == null) {\r\n throw new exceptions_1.BaseException('Usage tracking is disabled');\r\n }\r\n var allTypes = collection_1.MapWrapper.keys(this._injectableInfo);\r\n return allTypes.filter(function (key) { return !collection_1.SetWrapper.has(_this._usedKeys, key); });\r\n };\r\n Reflector.prototype.registerFunction = function (func, funcInfo) {\r\n this._injectableInfo.set(func, funcInfo);\r\n };\r\n Reflector.prototype.registerType = function (type, typeInfo) {\r\n this._injectableInfo.set(type, typeInfo);\r\n };\r\n Reflector.prototype.registerGetters = function (getters) { _mergeMaps(this._getters, getters); };\r\n Reflector.prototype.registerSetters = function (setters) { _mergeMaps(this._setters, setters); };\r\n Reflector.prototype.registerMethods = function (methods) { _mergeMaps(this._methods, methods); };\r\n Reflector.prototype.factory = function (type) {\r\n if (this._containsReflectionInfo(type)) {\r\n var res = this._getReflectionInfo(type).factory;\r\n return lang_1.isPresent(res) ? res : null;\r\n }\r\n else {\r\n return this.reflectionCapabilities.factory(type);\r\n }\r\n };\r\n Reflector.prototype.parameters = function (typeOrFunc) {\r\n if (this._injectableInfo.has(typeOrFunc)) {\r\n var res = this._getReflectionInfo(typeOrFunc).parameters;\r\n return lang_1.isPresent(res) ? res : [];\r\n }\r\n else {\r\n return this.reflectionCapabilities.parameters(typeOrFunc);\r\n }\r\n };\r\n Reflector.prototype.annotations = function (typeOrFunc) {\r\n if (this._injectableInfo.has(typeOrFunc)) {\r\n var res = this._getReflectionInfo(typeOrFunc).annotations;\r\n return lang_1.isPresent(res) ? res : [];\r\n }\r\n else {\r\n return this.reflectionCapabilities.annotations(typeOrFunc);\r\n }\r\n };\r\n Reflector.prototype.propMetadata = function (typeOrFunc) {\r\n if (this._injectableInfo.has(typeOrFunc)) {\r\n var res = this._getReflectionInfo(typeOrFunc).propMetadata;\r\n return lang_1.isPresent(res) ? res : {};\r\n }\r\n else {\r\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\r\n }\r\n };\r\n Reflector.prototype.interfaces = function (type) {\r\n if (this._injectableInfo.has(type)) {\r\n var res = this._getReflectionInfo(type).interfaces;\r\n return lang_1.isPresent(res) ? res : [];\r\n }\r\n else {\r\n return this.reflectionCapabilities.interfaces(type);\r\n }\r\n };\r\n Reflector.prototype.getter = function (name) {\r\n if (this._getters.has(name)) {\r\n return this._getters.get(name);\r\n }\r\n else {\r\n return this.reflectionCapabilities.getter(name);\r\n }\r\n };\r\n Reflector.prototype.setter = function (name) {\r\n if (this._setters.has(name)) {\r\n return this._setters.get(name);\r\n }\r\n else {\r\n return this.reflectionCapabilities.setter(name);\r\n }\r\n };\r\n Reflector.prototype.method = function (name) {\r\n if (this._methods.has(name)) {\r\n return this._methods.get(name);\r\n }\r\n else {\r\n return this.reflectionCapabilities.method(name);\r\n }\r\n };\r\n /** @internal */\r\n Reflector.prototype._getReflectionInfo = function (typeOrFunc) {\r\n if (lang_1.isPresent(this._usedKeys)) {\r\n this._usedKeys.add(typeOrFunc);\r\n }\r\n return this._injectableInfo.get(typeOrFunc);\r\n };\r\n /** @internal */\r\n Reflector.prototype._containsReflectionInfo = function (typeOrFunc) { return this._injectableInfo.has(typeOrFunc); };\r\n Reflector.prototype.importUri = function (type) { return this.reflectionCapabilities.importUri(type); };\r\n return Reflector;\r\n}(reflector_reader_1.ReflectorReader));\r\nexports.Reflector = Reflector;\r\nfunction _mergeMaps(target, config) {\r\n collection_1.StringMapWrapper.forEach(config, function (v, k) { return target.set(k, v); });\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscUJBQXlDLDBCQUEwQixDQUFDLENBQUE7QUFDcEUsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UsMkJBT08sZ0NBQWdDLENBQUMsQ0FBQTtBQUV4QyxpQ0FBOEIsb0JBQW9CLENBQUMsQ0FBQTtBQUtuRDs7R0FFRztBQUNIO0lBQ0Usd0JBQW1CLFdBQW1CLEVBQVMsVUFBb0IsRUFBUyxPQUFrQixFQUMzRSxVQUFrQixFQUFTLFlBQXFDO1FBRGhFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBVTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDM0UsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUF5QjtJQUFHLENBQUM7SUFDekYscUJBQUM7QUFBRCxDQUFDLEFBSEQsSUFHQztBQUhZLHNCQUFjLGlCQUcxQixDQUFBO0FBRUQ7OztHQUdHO0FBQ0g7SUFBK0IsNkJBQWU7SUFhNUMsbUJBQVksc0JBQXNEO1FBQ2hFLGlCQUFPLENBQUM7UUFiVixnQkFBZ0I7UUFDaEIsb0JBQWUsR0FBRyxJQUFJLGdCQUFHLEVBQXVCLENBQUM7UUFDakQsZ0JBQWdCO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLGdCQUFHLEVBQW9CLENBQUM7UUFDdkMsZ0JBQWdCO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLGdCQUFHLEVBQW9CLENBQUM7UUFDdkMsZ0JBQWdCO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLGdCQUFHLEVBQW9CLENBQUM7UUFPckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLHNC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QUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLHNDQUFrQixHQUFsQixVQUFtQixVQUFlO1FBQ2hDLEVBQUUsQ0FBQyxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsMkNBQXVCLEdBQXZCLFVBQXdCLFVBQWUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpGLDZCQUFTLEdBQVQsVUFBVSxJQUFVLElBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLGdCQUFDO0FBQUQsQ0FBQyxBQXZJRCxDQUErQixrQ0FBZSxHQXVJN0M7QUF2SVksaUJBQVMsWUF1SXJCLENBQUE7QUFFRCxvQkFBb0IsTUFBNkIsRUFBRSxNQUFpQztJQUNsRiw2QkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQUMsQ0FBVyxFQUFFLENBQVMsSUFBSyxPQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFoQixDQUFnQixDQUFDLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZSwgaXNQcmVzZW50LCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1xuICBMaXN0V3JhcHBlcixcbiAgTWFwLFxuICBNYXBXcmFwcGVyLFxuICBTZXQsXG4gIFNldFdyYXBwZXIsXG4gIFN0cmluZ01hcFdyYXBwZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7U2V0dGVyRm4sIEdldHRlckZuLCBNZXRob2RGbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1JlZmxlY3RvclJlYWRlcn0gZnJvbSAnLi9yZWZsZWN0b3JfcmVhZGVyJztcbmltcG9ydCB7UGxhdGZvcm1SZWZsZWN0aW9uQ2FwYWJpbGl0aWVzfSBmcm9tICcuL3BsYXRmb3JtX3JlZmxlY3Rpb25fY2FwYWJpbGl0aWVzJztcbmV4cG9ydCB7U2V0dGVyRm4sIEdldHRlckZuLCBNZXRob2RGbn0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQge1BsYXRmb3JtUmVmbGVjdGlvbkNhcGFiaWxpdGllc30gZnJvbSAnLi9wbGF0Zm9ybV9yZWZsZWN0aW9uX2NhcGFiaWxpdGllcyc7XG5cbi8qKlxuICogUmVmbGVjdGl2ZSBpbmZvcm1hdGlvbiBhYm91dCBhIHN5bWJvbCwgaW5jbHVkaW5nIGFubm90YXRpb25zLCBpbnRlcmZhY2VzLCBhbmQgb3RoZXIgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZsZWN0aW9uSW5mbyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhbm5vdGF0aW9ucz86IGFueVtdLCBwdWJsaWMgcGFyYW1ldGVycz86IGFueVtdW10sIHB1YmxpYyBmYWN0b3J5PzogRnVuY3Rpb24sXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnRlcmZhY2VzPzogYW55W10sIHB1YmxpYyBwcm9wTWV0YWRhdGE/OiB7W2tleTogc3RyaW5nXTogYW55W119KSB7fVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGFjY2VzcyB0byByZWZsZWN0aW9uIGRhdGEgYWJvdXQgc3ltYm9scy4gVXNlZCBpbnRlcm5hbGx5IGJ5IEFuZ3VsYXJcbiAqIHRvIHBvd2VyIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGFuZCBjb21waWxhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmxlY3RvciBleHRlbmRzIFJlZmxlY3RvclJlYWRlciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2luamVjdGFibGVJbmZvID0gbmV3IE1hcDxhbnksIFJlZmxlY3Rpb25JbmZvPigpO1xuICAvKiogQGludGVybmFsICovXG4gIF9nZXR0ZXJzID0gbmV3IE1hcDxzdHJpbmcsIEdldHRlckZuPigpO1xuICAvKiogQGludGVybmFsICovXG4gIF9zZXR0ZXJzID0gbmV3IE1hcDxzdHJpbmcsIFNldHRlckZuPigpO1xuICAvKiogQGludGVybmFsICovXG4gIF9tZXRob2RzID0gbmV3IE1hcDxzdHJpbmcsIE1ldGhvZEZuPigpO1xuICAvKiogQGludGVybmFsICovXG4gIF91c2VkS2V5czogU2V0PGFueT47XG4gIHJlZmxlY3Rpb25DYXBhYmlsaXRpZXM6IFBsYXRmb3JtUmVmbGVjdGlvbkNhcGFiaWxpdGllcztcblxuICBjb25zdHJ1Y3RvcihyZWZsZWN0aW9uQ2FwYWJpbGl0aWVzOiBQbGF0Zm9ybVJlZmxlY3Rpb25DYXBhYmlsaXRpZXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3VzZWRLZXlzID0gbnVsbDtcbiAgICB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMgPSByZWZsZWN0aW9uQ2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgaXNSZWZsZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pc1JlZmxlY3Rpb25FbmFibGVkKCk7IH1cblxuICAvKipcbiAgICogQ2F1c2VzIGB0aGlzYCByZWZsZWN0b3IgdG8gdHJhY2sga2V5cyB1c2VkIHRvIGFjY2Vzc1xuICAgKiB7QGxpbmsgUmVmbGVjdGlvbkluZm99IG9iamVjdHMuXG4gICAqL1xuICB0cmFja1VzYWdlKCk6IHZvaWQgeyB0aGlzLl91c2VkS2V5cyA9IG5ldyBTZXQoKTsgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyB0eXBlcyBmb3Igd2hpY2ggcmVmbGVjdGlvbiBpbmZvcm1hdGlvbiB3YXMgbm90IHJlcXVlc3RlZCBzaW5jZVxuICAgKiB7QGxpbmsgI3RyYWNrVXNhZ2V9IHdhcyBjYWxsZWQuIFRoaXMgbGlzdCBjb3VsZCBsYXRlciBiZSBhdWRpdGVkIGFzXG4gICAqIHBvdGVudGlhbCBkZWFkIGNvZGUuXG4gICAqL1xuICBsaXN0VW51c2VkS2V5cygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuX3VzZWRLZXlzID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdVc2FnZSB0cmFja2luZyBpcyBkaXNhYmxlZCcpO1xuICAgIH1cbiAgICB2YXIgYWxsVHlwZXMgPSBNYXBXcmFwcGVyLmtleXModGhpcy5faW5qZWN0YWJsZUluZm8pO1xuICAgIHJldHVybiBhbGxUeXBlcy5maWx0ZXIoa2V5ID0+ICFTZXRXcmFwcGVyLmhhcyh0aGlzLl91c2VkS2V5cywga2V5KSk7XG4gIH1cblxuICByZWdpc3RlckZ1bmN0aW9uKGZ1bmM6IEZ1bmN0aW9uLCBmdW5jSW5mbzogUmVmbGVjdGlvbkluZm8pOiB2b2lkIHtcbiAgICB0aGlzLl9pbmplY3RhYmxlSW5mby5zZXQoZnVuYywgZnVuY0luZm8pO1xuICB9XG5cbiAgcmVnaXN0ZXJUeXBlKHR5cGU6IFR5cGUsIHR5cGVJbmZvOiBSZWZsZWN0aW9uSW5mbyk6IHZvaWQge1xuICAgIHRoaXMuX2luamVjdGFibGVJbmZvLnNldCh0eXBlLCB0eXBlSW5mbyk7XG4gIH1cblxuICByZWdpc3RlckdldHRlcnMoZ2V0dGVyczoge1trZXk6IHN0cmluZ106IEdldHRlckZufSk6IHZvaWQgeyBfbWVyZ2VNYXBzKHRoaXMuX2dldHRlcnMsIGdldHRlcnMpOyB9XG5cbiAgcmVnaXN0ZXJTZXR0ZXJzKHNldHRlcnM6IHtba2V5OiBzdHJpbmddOiBTZXR0ZXJGbn0pOiB2b2lkIHsgX21lcmdlTWFwcyh0aGlzLl9zZXR0ZXJzLCBzZXR0ZXJzKTsgfVxuXG4gIHJlZ2lzdGVyTWV0aG9kcyhtZXRob2RzOiB7W2tleTogc3RyaW5nXTogTWV0aG9kRm59KTogdm9pZCB7IF9tZXJnZU1hcHModGhpcy5fbWV0aG9kcywgbWV0aG9kcyk7IH1cblxuICBmYWN0b3J5KHR5cGU6IFR5cGUpOiBGdW5jdGlvbiB7XG4gICAgaWYgKHRoaXMuX2NvbnRhaW5zUmVmbGVjdGlvbkluZm8odHlwZSkpIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLl9nZXRSZWZsZWN0aW9uSW5mbyh0eXBlKS5mYWN0b3J5O1xuICAgICAgcmV0dXJuIGlzUHJlc2VudChyZXMpID8gcmVzIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5mYWN0b3J5KHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtZXRlcnModHlwZU9yRnVuYzogLypUeXBlKi8gYW55KTogYW55W11bXSB7XG4gICAgaWYgKHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlT3JGdW5jKSkge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2dldFJlZmxlY3Rpb25JbmZvKHR5cGVPckZ1bmMpLnBhcmFtZXRlcnM7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KHJlcykgPyByZXMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wYXJhbWV0ZXJzKHR5cGVPckZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIGFubm90YXRpb25zKHR5cGVPckZ1bmM6IC8qVHlwZSovIGFueSk6IGFueVtdIHtcbiAgICBpZiAodGhpcy5faW5qZWN0YWJsZUluZm8uaGFzKHR5cGVPckZ1bmMpKSB7XG4gICAgICB2YXIgcmVzID0gdGhpcy5fZ2V0UmVmbGVjdGlvbkluZm8odHlwZU9yRnVuYykuYW5ub3RhdGlvbnM7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KHJlcykgPyByZXMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0eXBlT3JGdW5jKTtcbiAgICB9XG4gIH1cblxuICBwcm9wTWV0YWRhdGEodHlwZU9yRnVuYzogLypUeXBlKi8gYW55KToge1trZXk6IHN0cmluZ106IGFueVtdfSB7XG4gICAgaWYgKHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlT3JGdW5jKSkge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2dldFJlZmxlY3Rpb25JbmZvKHR5cGVPckZ1bmMpLnByb3BNZXRhZGF0YTtcbiAgICAgIHJldHVybiBpc1ByZXNlbnQocmVzKSA/IHJlcyA6IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnByb3BNZXRhZGF0YSh0eXBlT3JGdW5jKTtcbiAgICB9XG4gIH1cblxuICBpbnRlcmZhY2VzKHR5cGU6IFR5cGUpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlKSkge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2dldFJlZmxlY3Rpb25JbmZvKHR5cGUpLmludGVyZmFjZXM7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KHJlcykgPyByZXMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pbnRlcmZhY2VzKHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldHRlcihuYW1lOiBzdHJpbmcpOiBHZXR0ZXJGbiB7XG4gICAgaWYgKHRoaXMuX2dldHRlcnMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0dGVycy5nZXQobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuZ2V0dGVyKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldHRlcihuYW1lOiBzdHJpbmcpOiBTZXR0ZXJGbiB7XG4gICAgaWYgKHRoaXMuX3NldHRlcnMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0dGVycy5nZXQobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuc2V0dGVyKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIG1ldGhvZChuYW1lOiBzdHJpbmcpOiBNZXRob2RGbiB7XG4gICAgaWYgKHRoaXMuX21ldGhvZHMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbWV0aG9kcy5nZXQobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dldFJlZmxlY3Rpb25JbmZvKHR5cGVPckZ1bmM6IGFueSk6IFJlZmxlY3Rpb25JbmZvIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3VzZWRLZXlzKSkge1xuICAgICAgdGhpcy5fdXNlZEtleXMuYWRkKHR5cGVPckZ1bmMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW5qZWN0YWJsZUluZm8uZ2V0KHR5cGVPckZ1bmMpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY29udGFpbnNSZWZsZWN0aW9uSW5mbyh0eXBlT3JGdW5jOiBhbnkpIHsgcmV0dXJuIHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlT3JGdW5jKTsgfVxuXG4gIGltcG9ydFVyaSh0eXBlOiBUeXBlKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pbXBvcnRVcmkodHlwZSk7IH1cbn1cblxuZnVuY3Rpb24gX21lcmdlTWFwcyh0YXJnZXQ6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPiwgY29uZmlnOiB7W2tleTogc3RyaW5nXTogRnVuY3Rpb259KTogdm9pZCB7XG4gIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChjb25maWcsICh2OiBGdW5jdGlvbiwgazogc3RyaW5nKSA9PiB0YXJnZXQuc2V0KGssIHYpKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n/**\r\n * A base class for the WrappedException that can be used to identify\r\n * a WrappedException from ExceptionHandler without adding circular\r\n * dependency.\r\n */\r\nvar BaseWrappedException = (function (_super) {\r\n __extends(BaseWrappedException, _super);\r\n function BaseWrappedException(message) {\r\n _super.call(this, message);\r\n }\r\n Object.defineProperty(BaseWrappedException.prototype, \"wrapperMessage\", {\r\n get: function () { return ''; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"wrapperStack\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"originalException\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"originalStack\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"context\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"message\", {\r\n get: function () { return ''; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BaseWrappedException;\r\n}(Error));\r\nexports.BaseWrappedException = BaseWrappedException;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93cmFwcGVkX2V4Y2VwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvYmFzZV93cmFwcGVkX2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztHQUlHO0FBQ0g7SUFBMEMsd0NBQUs7SUFDN0MsOEJBQVksT0FBZTtRQUFJLGtCQUFNLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUVoRCxzQkFBSSxnREFBYzthQUFsQixjQUErQixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDM0Msc0JBQUksOENBQVk7YUFBaEIsY0FBMEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ3hDLHNCQUFJLG1EQUFpQjthQUFyQixjQUErQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFDN0Msc0JBQUksK0NBQWE7YUFBakIsY0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ3pDLHNCQUFJLHlDQUFPO2FBQVgsY0FBcUIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ25DLHNCQUFJLHlDQUFPO2FBQVgsY0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ3RDLDJCQUFDO0FBQUQsQ0FBQyxBQVRELENBQTBDLEtBQUssR0FTOUM7QUFUWSw0QkFBb0IsdUJBU2hDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgdGhlIFdyYXBwZWRFeGNlcHRpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeVxuICogYSBXcmFwcGVkRXhjZXB0aW9uIGZyb20gRXhjZXB0aW9uSGFuZGxlciB3aXRob3V0IGFkZGluZyBjaXJjdWxhclxuICogZGVwZW5kZW5jeS5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VXcmFwcGVkRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHsgc3VwZXIobWVzc2FnZSk7IH1cblxuICBnZXQgd3JhcHBlck1lc3NhZ2UoKTogc3RyaW5nIHsgcmV0dXJuICcnOyB9XG4gIGdldCB3cmFwcGVyU3RhY2soKTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgZ2V0IG9yaWdpbmFsRXhjZXB0aW9uKCk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIGdldCBvcmlnaW5hbFN0YWNrKCk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIGdldCBjb250ZXh0KCk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiAnJzsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar base_wrapped_exception_1 = require('angular2/src/facade/base_wrapped_exception');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar _ArrayLogger = (function () {\r\n function _ArrayLogger() {\r\n this.res = [];\r\n }\r\n _ArrayLogger.prototype.log = function (s) { this.res.push(s); };\r\n _ArrayLogger.prototype.logError = function (s) { this.res.push(s); };\r\n _ArrayLogger.prototype.logGroup = function (s) { this.res.push(s); };\r\n _ArrayLogger.prototype.logGroupEnd = function () { };\r\n ;\r\n return _ArrayLogger;\r\n}());\r\n/**\r\n * Provides a hook for centralized exception handling.\r\n *\r\n * The default implementation of `ExceptionHandler` prints error messages to the `Console`. To\r\n * intercept error handling,\r\n * write a custom exception handler that replaces this default as appropriate for your app.\r\n *\r\n * ### Example\r\n *\r\n * ```javascript\r\n *\r\n * class MyExceptionHandler implements ExceptionHandler {\r\n * call(error, stackTrace = null, reason = null) {\r\n * // do something with the exception\r\n * }\r\n * }\r\n *\r\n * bootstrap(MyApp, [provide(ExceptionHandler, {useClass: MyExceptionHandler})])\r\n *\r\n * ```\r\n */\r\nvar ExceptionHandler = (function () {\r\n function ExceptionHandler(_logger, _rethrowException) {\r\n if (_rethrowException === void 0) { _rethrowException = true; }\r\n this._logger = _logger;\r\n this._rethrowException = _rethrowException;\r\n }\r\n ExceptionHandler.exceptionToString = function (exception, stackTrace, reason) {\r\n if (stackTrace === void 0) { stackTrace = null; }\r\n if (reason === void 0) { reason = null; }\r\n var l = new _ArrayLogger();\r\n var e = new ExceptionHandler(l, false);\r\n e.call(exception, stackTrace, reason);\r\n return l.res.join(\"\\n\");\r\n };\r\n ExceptionHandler.prototype.call = function (exception, stackTrace, reason) {\r\n if (stackTrace === void 0) { stackTrace = null; }\r\n if (reason === void 0) { reason = null; }\r\n var originalException = this._findOriginalException(exception);\r\n var originalStack = this._findOriginalStack(exception);\r\n var context = this._findContext(exception);\r\n this._logger.logGroup(\"EXCEPTION: \" + this._extractMessage(exception));\r\n if (lang_1.isPresent(stackTrace) && lang_1.isBlank(originalStack)) {\r\n this._logger.logError(\"STACKTRACE:\");\r\n this._logger.logError(this._longStackTrace(stackTrace));\r\n }\r\n if (lang_1.isPresent(reason)) {\r\n this._logger.logError(\"REASON: \" + reason);\r\n }\r\n if (lang_1.isPresent(originalException)) {\r\n this._logger.logError(\"ORIGINAL EXCEPTION: \" + this._extractMessage(originalException));\r\n }\r\n if (lang_1.isPresent(originalStack)) {\r\n this._logger.logError(\"ORIGINAL STACKTRACE:\");\r\n this._logger.logError(this._longStackTrace(originalStack));\r\n }\r\n if (lang_1.isPresent(context)) {\r\n this._logger.logError(\"ERROR CONTEXT:\");\r\n this._logger.logError(context);\r\n }\r\n this._logger.logGroupEnd();\r\n // We rethrow exceptions, so operations like 'bootstrap' will result in an error\r\n // when an exception happens. If we do not rethrow, bootstrap will always succeed.\r\n if (this._rethrowException)\r\n throw exception;\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._extractMessage = function (exception) {\r\n return exception instanceof base_wrapped_exception_1.BaseWrappedException ? exception.wrapperMessage :\r\n exception.toString();\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._longStackTrace = function (stackTrace) {\r\n return collection_1.isListLikeIterable(stackTrace) ? stackTrace.join(\"\\n\\n-----async gap-----\\n\") :\r\n stackTrace.toString();\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._findContext = function (exception) {\r\n try {\r\n if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))\r\n return null;\r\n return lang_1.isPresent(exception.context) ? exception.context :\r\n this._findContext(exception.originalException);\r\n }\r\n catch (e) {\r\n // exception.context can throw an exception. if it happens, we ignore the context.\r\n return null;\r\n }\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._findOriginalException = function (exception) {\r\n if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))\r\n return null;\r\n var e = exception.originalException;\r\n while (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {\r\n e = e.originalException;\r\n }\r\n return e;\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._findOriginalStack = function (exception) {\r\n if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))\r\n return null;\r\n var e = exception;\r\n var stack = exception.originalStack;\r\n while (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {\r\n e = e.originalException;\r\n if (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {\r\n stack = e.originalStack;\r\n }\r\n }\r\n return stack;\r\n };\r\n return ExceptionHandler;\r\n}());\r\nexports.ExceptionHandler = ExceptionHandler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uX2hhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbl9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBd0MsMEJBQTBCLENBQUMsQ0FBQTtBQUNuRSx1Q0FBbUMsNENBQTRDLENBQUMsQ0FBQTtBQUNoRiwyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUUvRTtJQUFBO1FBQ0UsUUFBRyxHQUFVLEVBQUUsQ0FBQztJQUtsQixDQUFDO0lBSkMsMEJBQUcsR0FBSCxVQUFJLENBQU0sSUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsK0JBQVEsR0FBUixVQUFTLENBQU0sSUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsK0JBQVEsR0FBUixVQUFTLENBQU0sSUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsa0NBQVcsR0FBWCxjQUFjLENBQUM7O0lBQ2pCLG1CQUFDO0FBQUQsQ0FBQyxBQU5ELElBTUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSDtJQUNFLDBCQUFvQixPQUFZLEVBQVUsaUJBQWlDO1FBQXpDLGlDQUF5QyxHQUF6Qyx3QkFBeUM7UUFBdkQsWUFBTyxHQUFQLE9BQU8sQ0FBSztRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7SUFBRyxDQUFDO0lBRXhFLGtDQUFpQixHQUF4QixVQUF5QixTQUFjLEVBQUUsVUFBc0IsRUFBRSxNQUFxQjtRQUE3QywwQkFBc0IsR0FBdEIsaUJBQXNCO1FBQUUsc0JBQXFCLEdBQXJCLGFBQXFC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QUFJLENBQUM7UUFFOUQsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDcEMsT0FBTyxDQUFDLFlBQVksNkNBQW9CLElBQUksZ0JBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzNFLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFDeEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLDZDQUFvQixJQUFJLGdCQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBbEdELElBa0dDO0FBbEdZLHdCQUFnQixtQkFrRzVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudCwgaXNCbGFuaywgcHJpbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2Jhc2Vfd3JhcHBlZF9leGNlcHRpb24nO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgaXNMaXN0TGlrZUl0ZXJhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5jbGFzcyBfQXJyYXlMb2dnZXIge1xuICByZXM6IGFueVtdID0gW107XG4gIGxvZyhzOiBhbnkpOiB2b2lkIHsgdGhpcy5yZXMucHVzaChzKTsgfVxuICBsb2dFcnJvcihzOiBhbnkpOiB2b2lkIHsgdGhpcy5yZXMucHVzaChzKTsgfVxuICBsb2dHcm91cChzOiBhbnkpOiB2b2lkIHsgdGhpcy5yZXMucHVzaChzKTsgfVxuICBsb2dHcm91cEVuZCgpe307XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBob29rIGZvciBjZW50cmFsaXplZCBleGNlcHRpb24gaGFuZGxpbmcuXG4gKlxuICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYEV4Y2VwdGlvbkhhbmRsZXJgIHByaW50cyBlcnJvciBtZXNzYWdlcyB0byB0aGUgYENvbnNvbGVgLiBUb1xuICogaW50ZXJjZXB0IGVycm9yIGhhbmRsaW5nLFxuICogd3JpdGUgYSBjdXN0b20gZXhjZXB0aW9uIGhhbmRsZXIgdGhhdCByZXBsYWNlcyB0aGlzIGRlZmF1bHQgYXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICpcbiAqIGNsYXNzIE15RXhjZXB0aW9uSGFuZGxlciBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICogICBjYWxsKGVycm9yLCBzdGFja1RyYWNlID0gbnVsbCwgcmVhc29uID0gbnVsbCkge1xuICogICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBleGNlcHRpb25cbiAqICAgfVxuICogfVxuICpcbiAqIGJvb3RzdHJhcChNeUFwcCwgW3Byb3ZpZGUoRXhjZXB0aW9uSGFuZGxlciwge3VzZUNsYXNzOiBNeUV4Y2VwdGlvbkhhbmRsZXJ9KV0pXG4gKlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9nZ2VyOiBhbnksIHByaXZhdGUgX3JldGhyb3dFeGNlcHRpb246IGJvb2xlYW4gPSB0cnVlKSB7fVxuXG4gIHN0YXRpYyBleGNlcHRpb25Ub1N0cmluZyhleGNlcHRpb246IGFueSwgc3RhY2tUcmFjZTogYW55ID0gbnVsbCwgcmVhc29uOiBzdHJpbmcgPSBudWxsKTogc3RyaW5nIHtcbiAgICB2YXIgbCA9IG5ldyBfQXJyYXlMb2dnZXIoKTtcbiAgICB2YXIgZSA9IG5ldyBFeGNlcHRpb25IYW5kbGVyKGwsIGZhbHNlKTtcbiAgICBlLmNhbGwoZXhjZXB0aW9uLCBzdGFja1RyYWNlLCByZWFzb24pO1xuICAgIHJldHVybiBsLnJlcy5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgY2FsbChleGNlcHRpb246IGFueSwgc3RhY2tUcmFjZTogYW55ID0gbnVsbCwgcmVhc29uOiBzdHJpbmcgPSBudWxsKTogdm9pZCB7XG4gICAgdmFyIG9yaWdpbmFsRXhjZXB0aW9uID0gdGhpcy5fZmluZE9yaWdpbmFsRXhjZXB0aW9uKGV4Y2VwdGlvbik7XG4gICAgdmFyIG9yaWdpbmFsU3RhY2sgPSB0aGlzLl9maW5kT3JpZ2luYWxTdGFjayhleGNlcHRpb24pO1xuICAgIHZhciBjb250ZXh0ID0gdGhpcy5fZmluZENvbnRleHQoZXhjZXB0aW9uKTtcblxuICAgIHRoaXMuX2xvZ2dlci5sb2dHcm91cChgRVhDRVBUSU9OOiAke3RoaXMuX2V4dHJhY3RNZXNzYWdlKGV4Y2VwdGlvbil9YCk7XG5cbiAgICBpZiAoaXNQcmVzZW50KHN0YWNrVHJhY2UpICYmIGlzQmxhbmsob3JpZ2luYWxTdGFjaykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcihcIlNUQUNLVFJBQ0U6XCIpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmxvZ0Vycm9yKHRoaXMuX2xvbmdTdGFja1RyYWNlKHN0YWNrVHJhY2UpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KHJlYXNvbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcihgUkVBU09OOiAke3JlYXNvbn1gKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KG9yaWdpbmFsRXhjZXB0aW9uKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmxvZ0Vycm9yKGBPUklHSU5BTCBFWENFUFRJT046ICR7dGhpcy5fZXh0cmFjdE1lc3NhZ2Uob3JpZ2luYWxFeGNlcHRpb24pfWApO1xuICAgIH1cblxuICAgIGlmIChpc1ByZXNlbnQob3JpZ2luYWxTdGFjaykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcihcIk9SSUdJTkFMIFNUQUNLVFJBQ0U6XCIpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmxvZ0Vycm9yKHRoaXMuX2xvbmdTdGFja1RyYWNlKG9yaWdpbmFsU3RhY2spKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KGNvbnRleHQpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIubG9nRXJyb3IoXCJFUlJPUiBDT05URVhUOlwiKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcihjb250ZXh0KTtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIubG9nR3JvdXBFbmQoKTtcblxuICAgIC8vIFdlIHJldGhyb3cgZXhjZXB0aW9ucywgc28gb3BlcmF0aW9ucyBsaWtlICdib290c3RyYXAnIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yXG4gICAgLy8gd2hlbiBhbiBleGNlcHRpb24gaGFwcGVucy4gSWYgd2UgZG8gbm90IHJldGhyb3csIGJvb3RzdHJhcCB3aWxsIGFsd2F5cyBzdWNjZWVkLlxuICAgIGlmICh0aGlzLl9yZXRocm93RXhjZXB0aW9uKSB0aHJvdyBleGNlcHRpb247XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9leHRyYWN0TWVzc2FnZShleGNlcHRpb246IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGV4Y2VwdGlvbiBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uID8gZXhjZXB0aW9uLndyYXBwZXJNZXNzYWdlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24udG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2xvbmdTdGFja1RyYWNlKHN0YWNrVHJhY2U6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGlzTGlzdExpa2VJdGVyYWJsZShzdGFja1RyYWNlKSA/ICg8YW55W10+c3RhY2tUcmFjZSkuam9pbihcIlxcblxcbi0tLS0tYXN5bmMgZ2FwLS0tLS1cXG5cIikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja1RyYWNlLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9maW5kQ29udGV4dChleGNlcHRpb246IGFueSk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghKGV4Y2VwdGlvbiBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uKSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KGV4Y2VwdGlvbi5jb250ZXh0KSA/IGV4Y2VwdGlvbi5jb250ZXh0IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmluZENvbnRleHQoZXhjZXB0aW9uLm9yaWdpbmFsRXhjZXB0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBleGNlcHRpb24uY29udGV4dCBjYW4gdGhyb3cgYW4gZXhjZXB0aW9uLiBpZiBpdCBoYXBwZW5zLCB3ZSBpZ25vcmUgdGhlIGNvbnRleHQuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9maW5kT3JpZ2luYWxFeGNlcHRpb24oZXhjZXB0aW9uOiBhbnkpOiBhbnkge1xuICAgIGlmICghKGV4Y2VwdGlvbiBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uKSkgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgZSA9IGV4Y2VwdGlvbi5vcmlnaW5hbEV4Y2VwdGlvbjtcbiAgICB3aGlsZSAoZSBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uICYmIGlzUHJlc2VudChlLm9yaWdpbmFsRXhjZXB0aW9uKSkge1xuICAgICAgZSA9IGUub3JpZ2luYWxFeGNlcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9maW5kT3JpZ2luYWxTdGFjayhleGNlcHRpb246IGFueSk6IGFueSB7XG4gICAgaWYgKCEoZXhjZXB0aW9uIGluc3RhbmNlb2YgQmFzZVdyYXBwZWRFeGNlcHRpb24pKSByZXR1cm4gbnVsbDtcblxuICAgIHZhciBlID0gZXhjZXB0aW9uO1xuICAgIHZhciBzdGFjayA9IGV4Y2VwdGlvbi5vcmlnaW5hbFN0YWNrO1xuICAgIHdoaWxlIChlIGluc3RhbmNlb2YgQmFzZVdyYXBwZWRFeGNlcHRpb24gJiYgaXNQcmVzZW50KGUub3JpZ2luYWxFeGNlcHRpb24pKSB7XG4gICAgICBlID0gZS5vcmlnaW5hbEV4Y2VwdGlvbjtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgQmFzZVdyYXBwZWRFeGNlcHRpb24gJiYgaXNQcmVzZW50KGUub3JpZ2luYWxFeGNlcHRpb24pKSB7XG4gICAgICAgIHN0YWNrID0gZS5vcmlnaW5hbFN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar base_wrapped_exception_1 = require('./base_wrapped_exception');\r\nvar exception_handler_1 = require('./exception_handler');\r\nvar exception_handler_2 = require('./exception_handler');\r\nexports.ExceptionHandler = exception_handler_2.ExceptionHandler;\r\nvar BaseException = (function (_super) {\r\n __extends(BaseException, _super);\r\n function BaseException(message) {\r\n if (message === void 0) { message = \"--\"; }\r\n _super.call(this, message);\r\n this.message = message;\r\n this.stack = (new Error(message)).stack;\r\n }\r\n BaseException.prototype.toString = function () { return this.message; };\r\n return BaseException;\r\n}(Error));\r\nexports.BaseException = BaseException;\r\n/**\r\n * Wraps an exception and provides additional context or information.\r\n */\r\nvar WrappedException = (function (_super) {\r\n __extends(WrappedException, _super);\r\n function WrappedException(_wrapperMessage, _originalException, _originalStack, _context) {\r\n _super.call(this, _wrapperMessage);\r\n this._wrapperMessage = _wrapperMessage;\r\n this._originalException = _originalException;\r\n this._originalStack = _originalStack;\r\n this._context = _context;\r\n this._wrapperStack = (new Error(_wrapperMessage)).stack;\r\n }\r\n Object.defineProperty(WrappedException.prototype, \"wrapperMessage\", {\r\n get: function () { return this._wrapperMessage; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"wrapperStack\", {\r\n get: function () { return this._wrapperStack; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"originalException\", {\r\n get: function () { return this._originalException; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"originalStack\", {\r\n get: function () { return this._originalStack; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"context\", {\r\n get: function () { return this._context; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"message\", {\r\n get: function () { return exception_handler_1.ExceptionHandler.exceptionToString(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WrappedException.prototype.toString = function () { return this.message; };\r\n return WrappedException;\r\n}(base_wrapped_exception_1.BaseWrappedException));\r\nexports.WrappedException = WrappedException;\r\nfunction makeTypeError(message) {\r\n return new TypeError(message);\r\n}\r\nexports.makeTypeError = makeTypeError;\r\nfunction unimplemented() {\r\n throw new BaseException('unimplemented');\r\n}\r\nexports.unimplemented = unimplemented;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1Q0FBbUMsMEJBQTBCLENBQUMsQ0FBQTtBQUM5RCxrQ0FBK0IscUJBQXFCLENBQUMsQ0FBQTtBQUVyRCxrQ0FBK0IscUJBQXFCLENBQUM7QUFBN0MsZ0VBQTZDO0FBRXJEO0lBQW1DLGlDQUFLO0lBRXRDLHVCQUFtQixPQUFzQjtRQUE3Qix1QkFBNkIsR0FBN0IsY0FBNkI7UUFDdkMsa0JBQU0sT0FBTyxDQUFDLENBQUM7UUFERSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBRXZDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQsZ0NBQVEsR0FBUixjQUFxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0Msb0JBQUM7QUFBRCxDQUFDLEFBUkQsQ0FBbUMsS0FBSyxHQVF2QztBQVJZLHFCQUFhLGdCQVF6QixDQUFBO0FBRUQ7O0dBRUc7QUFDSDtJQUFzQyxvQ0FBb0I7SUFHeEQsMEJBQW9CLGVBQXVCLEVBQVUsa0JBQWtCLEVBQVUsY0FBZSxFQUM1RSxRQUFTO1FBQzNCLGtCQUFNLGVBQWUsQ0FBQyxDQUFDO1FBRkwsb0JBQWUsR0FBZixlQUFlLENBQVE7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQUE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBQztRQUM1RSxhQUFRLEdBQVIsUUFBUSxDQUFDO1FBRTNCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvRCxDQUFDO0lBRUQsc0JBQUksNENBQWM7YUFBbEIsY0FBK0IsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUU3RCxzQkFBSSwwQ0FBWTthQUFoQixjQUEwQixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBR3RELHNCQUFJLCtDQUFpQjthQUFyQixjQUErQixNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFaEUsc0JBQUksMkNBQWE7YUFBakIsY0FBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUd4RCxzQkFBSSxxQ0FBTzthQUFYLGNBQXFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFFNUMsc0JBQUkscUNBQU87YUFBWCxjQUF3QixNQUFNLENBQUMsb0NBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUUxRSxtQ0FBUSxHQUFSLGNBQXFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3Qyx1QkFBQztBQUFELENBQUMsQUF4QkQsQ0FBc0MsNkNBQW9CLEdBd0J6RDtBQXhCWSx3QkFBZ0IsbUJBd0I1QixDQUFBO0FBRUQsdUJBQThCLE9BQWdCO0lBQzVDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRmUscUJBQWEsZ0JBRTVCLENBQUE7QUFFRDtJQUNFLE1BQU0sSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUZlLHFCQUFhLGdCQUU1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCYXNlV3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnLi9iYXNlX3dyYXBwZWRfZXhjZXB0aW9uJztcbmltcG9ydCB7RXhjZXB0aW9uSGFuZGxlcn0gZnJvbSAnLi9leGNlcHRpb25faGFuZGxlcic7XG5cbmV4cG9ydCB7RXhjZXB0aW9uSGFuZGxlcn0gZnJvbSAnLi9leGNlcHRpb25faGFuZGxlcic7XG5cbmV4cG9ydCBjbGFzcyBCYXNlRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgc3RhY2s6IGFueTtcbiAgY29uc3RydWN0b3IocHVibGljIG1lc3NhZ2U6IHN0cmluZyA9IFwiLS1cIikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuc3RhY2sgPSAoPGFueT5uZXcgRXJyb3IobWVzc2FnZSkpLnN0YWNrO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMubWVzc2FnZTsgfVxufVxuXG4vKipcbiAqIFdyYXBzIGFuIGV4Y2VwdGlvbiBhbmQgcHJvdmlkZXMgYWRkaXRpb25hbCBjb250ZXh0IG9yIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgV3JhcHBlZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VXcmFwcGVkRXhjZXB0aW9uIHtcbiAgcHJpdmF0ZSBfd3JhcHBlclN0YWNrOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd3JhcHBlck1lc3NhZ2U6IHN0cmluZywgcHJpdmF0ZSBfb3JpZ2luYWxFeGNlcHRpb24sIHByaXZhdGUgX29yaWdpbmFsU3RhY2s/LFxuICAgICAgICAgICAgICBwcml2YXRlIF9jb250ZXh0Pykge1xuICAgIHN1cGVyKF93cmFwcGVyTWVzc2FnZSk7XG4gICAgdGhpcy5fd3JhcHBlclN0YWNrID0gKDxhbnk+bmV3IEVycm9yKF93cmFwcGVyTWVzc2FnZSkpLnN0YWNrO1xuICB9XG5cbiAgZ2V0IHdyYXBwZXJNZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl93cmFwcGVyTWVzc2FnZTsgfVxuXG4gIGdldCB3cmFwcGVyU3RhY2soKTogYW55IHsgcmV0dXJuIHRoaXMuX3dyYXBwZXJTdGFjazsgfVxuXG5cbiAgZ2V0IG9yaWdpbmFsRXhjZXB0aW9uKCk6IGFueSB7IHJldHVybiB0aGlzLl9vcmlnaW5hbEV4Y2VwdGlvbjsgfVxuXG4gIGdldCBvcmlnaW5hbFN0YWNrKCk6IGFueSB7IHJldHVybiB0aGlzLl9vcmlnaW5hbFN0YWNrOyB9XG5cblxuICBnZXQgY29udGV4dCgpOiBhbnkgeyByZXR1cm4gdGhpcy5fY29udGV4dDsgfVxuXG4gIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiBFeGNlcHRpb25IYW5kbGVyLmV4Y2VwdGlvblRvU3RyaW5nKHRoaXMpOyB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMubWVzc2FnZTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVR5cGVFcnJvcihtZXNzYWdlPzogc3RyaW5nKTogRXJyb3Ige1xuICByZXR1cm4gbmV3IFR5cGVFcnJvcihtZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaW1wbGVtZW50ZWQoKTogYW55IHtcbiAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ3VuaW1wbGVtZW50ZWQnKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar ReflectionCapabilities = (function () {\r\n function ReflectionCapabilities(reflect) {\r\n this._reflect = lang_1.isPresent(reflect) ? reflect : lang_1.global.Reflect;\r\n }\r\n ReflectionCapabilities.prototype.isReflectionEnabled = function () { return true; };\r\n ReflectionCapabilities.prototype.factory = function (t) {\r\n switch (t.length) {\r\n case 0:\r\n return function () { return new t(); };\r\n case 1:\r\n return function (a1) { return new t(a1); };\r\n case 2:\r\n return function (a1, a2) { return new t(a1, a2); };\r\n case 3:\r\n return function (a1, a2, a3) { return new t(a1, a2, a3); };\r\n case 4:\r\n return function (a1, a2, a3, a4) { return new t(a1, a2, a3, a4); };\r\n case 5:\r\n return function (a1, a2, a3, a4, a5) { return new t(a1, a2, a3, a4, a5); };\r\n case 6:\r\n return function (a1, a2, a3, a4, a5, a6) {\r\n return new t(a1, a2, a3, a4, a5, a6);\r\n };\r\n case 7:\r\n return function (a1, a2, a3, a4, a5, a6, a7) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7);\r\n };\r\n case 8:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8);\r\n };\r\n case 9:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9);\r\n };\r\n case 10:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\r\n };\r\n case 11:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\r\n };\r\n case 12:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);\r\n };\r\n case 13:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);\r\n };\r\n case 14:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);\r\n };\r\n case 15:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\r\n };\r\n case 16:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);\r\n };\r\n case 17:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);\r\n };\r\n case 18:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);\r\n };\r\n case 19:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);\r\n };\r\n case 20:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);\r\n };\r\n }\r\n ;\r\n throw new Error(\"Cannot create a factory for '\" + lang_1.stringify(t) + \"' because its constructor has more than 20 arguments\");\r\n };\r\n /** @internal */\r\n ReflectionCapabilities.prototype._zipTypesAndAnnotations = function (paramTypes, paramAnnotations) {\r\n var result;\r\n if (typeof paramTypes === 'undefined') {\r\n result = new Array(paramAnnotations.length);\r\n }\r\n else {\r\n result = new Array(paramTypes.length);\r\n }\r\n for (var i = 0; i < result.length; i++) {\r\n // TS outputs Object for parameters without types, while Traceur omits\r\n // the annotations. For now we preserve the Traceur behavior to aid\r\n // migration, but this can be revisited.\r\n if (typeof paramTypes === 'undefined') {\r\n result[i] = [];\r\n }\r\n else if (paramTypes[i] != Object) {\r\n result[i] = [paramTypes[i]];\r\n }\r\n else {\r\n result[i] = [];\r\n }\r\n if (lang_1.isPresent(paramAnnotations) && lang_1.isPresent(paramAnnotations[i])) {\r\n result[i] = result[i].concat(paramAnnotations[i]);\r\n }\r\n }\r\n return result;\r\n };\r\n ReflectionCapabilities.prototype.parameters = function (typeOrFunc) {\r\n // Prefer the direct API.\r\n if (lang_1.isPresent(typeOrFunc.parameters)) {\r\n return typeOrFunc.parameters;\r\n }\r\n if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {\r\n var paramAnnotations = this._reflect.getMetadata('parameters', typeOrFunc);\r\n var paramTypes = this._reflect.getMetadata('design:paramtypes', typeOrFunc);\r\n if (lang_1.isPresent(paramTypes) || lang_1.isPresent(paramAnnotations)) {\r\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\r\n }\r\n }\r\n // The array has to be filled with `undefined` because holes would be skipped by `some`\r\n var parameters = new Array(typeOrFunc.length);\r\n parameters.fill(undefined);\r\n return parameters;\r\n };\r\n ReflectionCapabilities.prototype.annotations = function (typeOrFunc) {\r\n // Prefer the direct API.\r\n if (lang_1.isPresent(typeOrFunc.annotations)) {\r\n var annotations = typeOrFunc.annotations;\r\n if (lang_1.isFunction(annotations) && annotations.annotations) {\r\n annotations = annotations.annotations;\r\n }\r\n return annotations;\r\n }\r\n if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {\r\n var annotations = this._reflect.getMetadata('annotations', typeOrFunc);\r\n if (lang_1.isPresent(annotations))\r\n return annotations;\r\n }\r\n return [];\r\n };\r\n ReflectionCapabilities.prototype.propMetadata = function (typeOrFunc) {\r\n // Prefer the direct API.\r\n if (lang_1.isPresent(typeOrFunc.propMetadata)) {\r\n var propMetadata = typeOrFunc.propMetadata;\r\n if (lang_1.isFunction(propMetadata) && propMetadata.propMetadata) {\r\n propMetadata = propMetadata.propMetadata;\r\n }\r\n return propMetadata;\r\n }\r\n if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {\r\n var propMetadata = this._reflect.getMetadata('propMetadata', typeOrFunc);\r\n if (lang_1.isPresent(propMetadata))\r\n return propMetadata;\r\n }\r\n return {};\r\n };\r\n ReflectionCapabilities.prototype.interfaces = function (type) {\r\n throw new exceptions_1.BaseException(\"JavaScript does not support interfaces\");\r\n };\r\n ReflectionCapabilities.prototype.getter = function (name) { return new Function('o', 'return o.' + name + ';'); };\r\n ReflectionCapabilities.prototype.setter = function (name) {\r\n return new Function('o', 'v', 'return o.' + name + ' = v;');\r\n };\r\n ReflectionCapabilities.prototype.method = function (name) {\r\n var functionBody = \"if (!o.\" + name + \") throw new Error('\\\"\" + name + \"\\\" is undefined');\\n return o.\" + name + \".apply(o, args);\";\r\n return new Function('o', 'args', functionBody);\r\n };\r\n // There is not a concept of import uri in Js, but this is useful in developing Dart applications.\r\n ReflectionCapabilities.prototype.importUri = function (type) { return \"./\" + lang_1.stringify(type); };\r\n return ReflectionCapabilities;\r\n}());\r\nexports.ReflectionCapabilities = ReflectionCapabilities;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGlvbl9jYXBhYmlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb25fY2FwYWJpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBSTdEO0lBR0UsZ0NBQVksT0FBYTtRQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsYUFBTSxDQUFDLE9BQU8sQ0FBQztJQUFDLENBQUM7SUFFN0Ysb0RBQW1CLEdBQW5CLGNBQWlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRS9DLHdDQUFPLEdBQVAsVUFBUSxDQUFlO1FBQ3JCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEtBQUssQ0FBQztnQkFDSixNQUFNLENBQUMsY0FBTSxPQUFBLElBQUksQ0FBQyxFQUFFLEVBQVAsQ0FBTyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQztnQkFDSixNQUFNLENBQUMsVUFBQyxFQUFPLElBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBVCxDQUFTLENBQUM7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLE1BQU0sQ0FBQyxVQUFDLEVBQU8sRUFBRSxFQUFPLElBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQWIsQ0FBYSxDQUFDO1lBQzdDLEtBQUssQ0FBQztnQkFDSixNQUFNLENBQUMsVUFBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sSUFBSyxPQUFBLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxD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RSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUFsRSxDQUFrRSxDQUFDO1lBQ2hGLEtBQUssRUFBRTtnQkFDTCxNQUFNLENBQUMsVUFBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFDL0UsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRO29CQUN2RCxPQUFBLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUF2RSxDQUF1RSxDQUFDO1lBQ3JGLEtBQUssRUFBRTtnQkFDTCxNQUFNLENBQUMsVUFBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFDL0UsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUTtvQkFDakUsT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQTVFLENBQTRFLENBQUM7WUFDMUYsS0FBSyxFQUFFO2dCQUNMLE1BQU0sQ0FBQyxVQUFDLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUMvRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUTtvQkFDM0UsT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQ3JFLEdBQUcsQ0FBQztnQkFEVixDQUNVLENBQUM7WUFDeEIsS0FBSyxFQUFFO2dCQUNMLE1BQU0sQ0FBQyxVQUFDLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUMvRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUM5RSxHQUFRO29CQUFLLE9BQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQ2hFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQURwQixDQUNvQixDQUFDO1lBQzVDLEtBQUssRUFBRTtnQkFDTCxNQUFNLENBQUMsVUFBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFDL0UsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFDOUUsR0FBUSxFQUFFLEdBQVE7b0JBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQ3RELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQURuQyxDQUNtQyxDQUFDO1lBQ3JFLEtBQUssRUFBRTtnQkFDTCxNQUFNLENBQUMsVUFBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQU8sRUFDL0UsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRLEVBQUUsR0FBUSxFQUFFLEdBQVEsRUFDOUUsR0FBUSxFQUFFLEdBQVEsRUFBRSxHQUFRO29CQUFLLE9BQUEsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFDNUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JB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O0lBQ2xHLDBDQUFTLEdBQVQsVUFBVSxJQUFVLElBQVksTUFBTSxDQUFDLE9BQUssZ0JBQVMsQ0FBQyxJQUFJLENBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEUsNkJBQUM7QUFBRCxDQUFDLEFBckxELElBcUxDO0FBckxZLDhCQUFzQix5QkFxTGxDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUeXBlLFxuICBpc1ByZXNlbnQsXG4gIGlzRnVuY3Rpb24sXG4gIGdsb2JhbCxcbiAgc3RyaW5naWZ5LFxuICBDb25jcmV0ZVR5cGVcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7R2V0dGVyRm4sIFNldHRlckZuLCBNZXRob2RGbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1BsYXRmb3JtUmVmbGVjdGlvbkNhcGFiaWxpdGllc30gZnJvbSAnLi9wbGF0Zm9ybV9yZWZsZWN0aW9uX2NhcGFiaWxpdGllcyc7XG5cbmV4cG9ydCBjbGFzcyBSZWZsZWN0aW9uQ2FwYWJpbGl0aWVzIGltcGxlbWVudHMgUGxhdGZvcm1SZWZsZWN0aW9uQ2FwYWJpbGl0aWVzIHtcbiAgcHJpdmF0ZSBfcmVmbGVjdDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHJlZmxlY3Q/OiBhbnkpIHsgdGhpcy5fcmVmbGVjdCA9IGlzUHJlc2VudChyZWZsZWN0KSA/IHJlZmxlY3QgOiBnbG9iYWwuUmVmbGVjdDsgfVxuXG4gIGlzUmVmbGVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0cnVlOyB9XG5cbiAgZmFjdG9yeSh0OiBDb25jcmV0ZVR5cGUpOiBGdW5jdGlvbiB7XG4gICAgc3dpdGNoICh0Lmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICByZXR1cm4gKCkgPT4gbmV3IHQoKTtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIChhMTogYW55KSA9PiBuZXcgdChhMSk7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSkgPT4gbmV3IHQoYTEsIGEyKTtcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzKTtcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCk7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSkgPT4gbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1KTtcbiAgICAgIGNhc2UgNjpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgIG5ldyB0KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpO1xuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpO1xuICAgICAgY2FzZSA4OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTtcbiAgICAgIGNhc2UgOTpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgIG5ldyB0KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpO1xuICAgICAgY2FzZSAxMDpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApO1xuICAgICAgY2FzZSAxMTpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSkgPT4gbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEpO1xuICAgICAgY2FzZSAxMjpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSwgYTEyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMik7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnksIGExMTogYW55LCBhMTI6IGFueSwgYTEzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzKTtcbiAgICAgIGNhc2UgMTQ6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSwgYTE0OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQpO1xuICAgICAgY2FzZSAxNTpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSwgYTEyOiBhbnksIGExMzogYW55LCBhMTQ6IGFueSwgYTE1OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSk7XG4gICAgICBjYXNlIDE2OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnksIGExMTogYW55LCBhMTI6IGFueSwgYTEzOiBhbnksIGExNDogYW55LCBhMTU6IGFueSwgYTE2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSwgYTE2KTtcbiAgICAgIGNhc2UgMTc6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSwgYTE0OiBhbnksIGExNTogYW55LCBhMTY6IGFueSwgYTE3OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSwgYTE2LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGExNyk7XG4gICAgICBjYXNlIDE4OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnksIGExMTogYW55LCBhMTI6IGFueSwgYTEzOiBhbnksIGExNDogYW55LCBhMTU6IGFueSwgYTE2OiBhbnksIGExNzogYW55LFxuICAgICAgICAgICAgICAgIGExODogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhMTYsIGExNywgYTE4KTtcbiAgICAgIGNhc2UgMTk6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSwgYTE0OiBhbnksIGExNTogYW55LCBhMTY6IGFueSwgYTE3OiBhbnksXG4gICAgICAgICAgICAgICAgYTE4OiBhbnksIGExOTogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhMTQsIGExNSwgYTE2LCBhMTcsIGExOCwgYTE5KTtcbiAgICAgIGNhc2UgMjA6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSwgYTE0OiBhbnksIGExNTogYW55LCBhMTY6IGFueSwgYTE3OiBhbnksXG4gICAgICAgICAgICAgICAgYTE4OiBhbnksIGExOTogYW55LCBhMjA6IGFueSkgPT4gbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7XG4gICAgfTtcblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCBjcmVhdGUgYSBmYWN0b3J5IGZvciAnJHtzdHJpbmdpZnkodCl9JyBiZWNhdXNlIGl0cyBjb25zdHJ1Y3RvciBoYXMgbW9yZSB0aGFuIDIwIGFyZ3VtZW50c2ApO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfemlwVHlwZXNBbmRBbm5vdGF0aW9ucyhwYXJhbVR5cGVzLCBwYXJhbUFubm90YXRpb25zKTogYW55W11bXSB7XG4gICAgdmFyIHJlc3VsdDtcblxuICAgIGlmICh0eXBlb2YgcGFyYW1UeXBlcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBBcnJheShwYXJhbUFubm90YXRpb25zLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBBcnJheShwYXJhbVR5cGVzLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIFRTIG91dHB1dHMgT2JqZWN0IGZvciBwYXJhbWV0ZXJzIHdpdGhvdXQgdHlwZXMsIHdoaWxlIFRyYWNldXIgb21pdHNcbiAgICAgIC8vIHRoZSBhbm5vdGF0aW9ucy4gRm9yIG5vdyB3ZSBwcmVzZXJ2ZSB0aGUgVHJhY2V1ciBiZWhhdmlvciB0byBhaWRcbiAgICAgIC8vIG1pZ3JhdGlvbiwgYnV0IHRoaXMgY2FuIGJlIHJldmlzaXRlZC5cbiAgICAgIGlmICh0eXBlb2YgcGFyYW1UeXBlcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmVzdWx0W2ldID0gW107XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtVHlwZXNbaV0gIT0gT2JqZWN0KSB7XG4gICAgICAgIHJlc3VsdFtpXSA9IFtwYXJhbVR5cGVzW2ldXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtpXSA9IFtdO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChwYXJhbUFubm90YXRpb25zKSAmJiBpc1ByZXNlbnQocGFyYW1Bbm5vdGF0aW9uc1tpXSkpIHtcbiAgICAgICAgcmVzdWx0W2ldID0gcmVzdWx0W2ldLmNvbmNhdChwYXJhbUFubm90YXRpb25zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHBhcmFtZXRlcnModHlwZU9yRnVuYzogVHlwZSk6IGFueVtdW10ge1xuICAgIC8vIFByZWZlciB0aGUgZGlyZWN0IEFQSS5cbiAgICBpZiAoaXNQcmVzZW50KCg8YW55PnR5cGVPckZ1bmMpLnBhcmFtZXRlcnMpKSB7XG4gICAgICByZXR1cm4gKDxhbnk+dHlwZU9yRnVuYykucGFyYW1ldGVycztcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9yZWZsZWN0KSAmJiBpc1ByZXNlbnQodGhpcy5fcmVmbGVjdC5nZXRNZXRhZGF0YSkpIHtcbiAgICAgIHZhciBwYXJhbUFubm90YXRpb25zID0gdGhpcy5fcmVmbGVjdC5nZXRNZXRhZGF0YSgncGFyYW1ldGVycycsIHR5cGVPckZ1bmMpO1xuICAgICAgdmFyIHBhcmFtVHlwZXMgPSB0aGlzLl9yZWZsZWN0LmdldE1ldGFkYXRhKCdkZXNpZ246cGFyYW10eXBlcycsIHR5cGVPckZ1bmMpO1xuICAgICAgaWYgKGlzUHJlc2VudChwYXJhbVR5cGVzKSB8fCBpc1ByZXNlbnQocGFyYW1Bbm5vdGF0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMocGFyYW1UeXBlcywgcGFyYW1Bbm5vdGF0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFRoZSBhcnJheSBoYXMgdG8gYmUgZmlsbGVkIHdpdGggYHVuZGVmaW5lZGAgYmVjYXVzZSBob2xlcyB3b3VsZCBiZSBza2lwcGVkIGJ5IGBzb21lYFxuICAgIGxldCBwYXJhbWV0ZXJzID0gbmV3IEFycmF5KCg8YW55PnR5cGVPckZ1bmMubGVuZ3RoKSk7XG4gICAgcGFyYW1ldGVycy5maWxsKHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG4gIH1cblxuICBhbm5vdGF0aW9ucyh0eXBlT3JGdW5jOiBUeXBlKTogYW55W10ge1xuICAgIC8vIFByZWZlciB0aGUgZGlyZWN0IEFQSS5cbiAgICBpZiAoaXNQcmVzZW50KCg8YW55PnR5cGVPckZ1bmMpLmFubm90YXRpb25zKSkge1xuICAgICAgdmFyIGFubm90YXRpb25zID0gKDxhbnk+dHlwZU9yRnVuYykuYW5ub3RhdGlvbnM7XG4gICAgICBpZiAoaXNGdW5jdGlvbihhbm5vdGF0aW9ucykgJiYgYW5ub3RhdGlvbnMuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucy5hbm5vdGF0aW9ucztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhbm5vdGF0aW9ucztcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9yZWZsZWN0KSAmJiBpc1ByZXNlbnQodGhpcy5fcmVmbGVjdC5nZXRNZXRhZGF0YSkpIHtcbiAgICAgIHZhciBhbm5vdGF0aW9ucyA9IHRoaXMuX3JlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Fubm90YXRpb25zJywgdHlwZU9yRnVuYyk7XG4gICAgICBpZiAoaXNQcmVzZW50KGFubm90YXRpb25zKSkgcmV0dXJuIGFubm90YXRpb25zO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm9wTWV0YWRhdGEodHlwZU9yRnVuYzogYW55KToge1trZXk6IHN0cmluZ106IGFueVtdfSB7XG4gICAgLy8gUHJlZmVyIHRoZSBkaXJlY3QgQVBJLlxuICAgIGlmIChpc1ByZXNlbnQoKDxhbnk+dHlwZU9yRnVuYykucHJvcE1ldGFkYXRhKSkge1xuICAgICAgdmFyIHByb3BNZXRhZGF0YSA9ICg8YW55PnR5cGVPckZ1bmMpLnByb3BNZXRhZGF0YTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHByb3BNZXRhZGF0YSkgJiYgcHJvcE1ldGFkYXRhLnByb3BNZXRhZGF0YSkge1xuICAgICAgICBwcm9wTWV0YWRhdGEgPSBwcm9wTWV0YWRhdGEucHJvcE1ldGFkYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BNZXRhZGF0YTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9yZWZsZWN0KSAmJiBpc1ByZXNlbnQodGhpcy5fcmVmbGVjdC5nZXRNZXRhZGF0YSkpIHtcbiAgICAgIHZhciBwcm9wTWV0YWRhdGEgPSB0aGlzLl9yZWZsZWN0LmdldE1ldGFkYXRhKCdwcm9wTWV0YWRhdGEnLCB0eXBlT3JGdW5jKTtcbiAgICAgIGlmIChpc1ByZXNlbnQocHJvcE1ldGFkYXRhKSkgcmV0dXJuIHByb3BNZXRhZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaW50ZXJmYWNlcyh0eXBlOiBUeXBlKTogYW55W10ge1xuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFwiSmF2YVNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IGludGVyZmFjZXNcIik7XG4gIH1cblxuICBnZXR0ZXIobmFtZTogc3RyaW5nKTogR2V0dGVyRm4geyByZXR1cm4gPEdldHRlckZuPm5ldyBGdW5jdGlvbignbycsICdyZXR1cm4gby4nICsgbmFtZSArICc7Jyk7IH1cblxuICBzZXR0ZXIobmFtZTogc3RyaW5nKTogU2V0dGVyRm4ge1xuICAgIHJldHVybiA8U2V0dGVyRm4+bmV3IEZ1bmN0aW9uKCdvJywgJ3YnLCAncmV0dXJuIG8uJyArIG5hbWUgKyAnID0gdjsnKTtcbiAgfVxuXG4gIG1ldGhvZChuYW1lOiBzdHJpbmcpOiBNZXRob2RGbiB7XG4gICAgbGV0IGZ1bmN0aW9uQm9keSA9IGBpZiAoIW8uJHtuYW1lfSkgdGhyb3cgbmV3IEVycm9yKCdcIiR7bmFtZX1cIiBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuIG8uJHtuYW1lfS5hcHBseShvLCBhcmdzKTtgO1xuICAgIHJldHVybiA8TWV0aG9kRm4+bmV3IEZ1bmN0aW9uKCdvJywgJ2FyZ3MnLCBmdW5jdGlvbkJvZHkpO1xuICB9XG5cbiAgLy8gVGhlcmUgaXMgbm90IGEgY29uY2VwdCBvZiBpbXBvcnQgdXJpIGluIEpzLCBidXQgdGhpcyBpcyB1c2VmdWwgaW4gZGV2ZWxvcGluZyBEYXJ0IGFwcGxpY2F0aW9ucy5cbiAgaW1wb3J0VXJpKHR5cGU6IFR5cGUpOiBzdHJpbmcgeyByZXR1cm4gYC4vJHtzdHJpbmdpZnkodHlwZSl9YDsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar reflector_1 = require('./reflector');\r\nvar reflector_2 = require('./reflector');\r\nexports.Reflector = reflector_2.Reflector;\r\nexports.ReflectionInfo = reflector_2.ReflectionInfo;\r\nvar reflection_capabilities_1 = require('./reflection_capabilities');\r\n/**\r\n * The {@link Reflector} used internally in Angular to access metadata\r\n * about symbols.\r\n */\r\nexports.reflector = new reflector_1.Reflector(new reflection_capabilities_1.ReflectionCapabilities());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsMEJBQXdCLGFBQWEsQ0FBQyxDQUFBO0FBQ3RDLDBCQUF3QyxhQUFhLENBQUM7QUFBOUMsMENBQVM7QUFBRSxvREFBbUM7QUFDdEQsd0NBQXFDLDJCQUEyQixDQUFDLENBQUE7QUFFakU7OztHQUdHO0FBQ1EsaUJBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsSUFBSSxnREFBc0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGUsIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1JlZmxlY3Rvcn0gZnJvbSAnLi9yZWZsZWN0b3InO1xuZXhwb3J0IHtSZWZsZWN0b3IsIFJlZmxlY3Rpb25JbmZvfSBmcm9tICcuL3JlZmxlY3Rvcic7XG5pbXBvcnQge1JlZmxlY3Rpb25DYXBhYmlsaXRpZXN9IGZyb20gJy4vcmVmbGVjdGlvbl9jYXBhYmlsaXRpZXMnO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgUmVmbGVjdG9yfSB1c2VkIGludGVybmFsbHkgaW4gQW5ndWxhciB0byBhY2Nlc3MgbWV0YWRhdGFcbiAqIGFib3V0IHN5bWJvbHMuXG4gKi9cbmV4cG9ydCB2YXIgcmVmbGVjdG9yID0gbmV3IFJlZmxlY3RvcihuZXcgUmVmbGVjdGlvbkNhcGFiaWxpdGllcygpKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * @module\r\n * @description\r\n * Starting point to import all public core APIs.\r\n */\r\n__export(require('./src/core/metadata'));\r\n__export(require('./src/core/util'));\r\n__export(require('./src/core/prod_mode'));\r\n__export(require('./src/core/di'));\r\n__export(require('./src/facade/facade'));\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.enableProdMode = lang_1.enableProdMode;\r\nvar application_ref_1 = require('./src/core/application_ref');\r\nexports.createPlatform = application_ref_1.createPlatform;\r\nexports.assertPlatform = application_ref_1.assertPlatform;\r\nexports.disposePlatform = application_ref_1.disposePlatform;\r\nexports.getPlatform = application_ref_1.getPlatform;\r\nexports.coreBootstrap = application_ref_1.coreBootstrap;\r\nexports.coreLoadAndBootstrap = application_ref_1.coreLoadAndBootstrap;\r\nexports.createNgZone = application_ref_1.createNgZone;\r\nexports.PlatformRef = application_ref_1.PlatformRef;\r\nexports.ApplicationRef = application_ref_1.ApplicationRef;\r\nvar application_tokens_1 = require('./src/core/application_tokens');\r\nexports.APP_ID = application_tokens_1.APP_ID;\r\nexports.APP_INITIALIZER = application_tokens_1.APP_INITIALIZER;\r\nexports.PACKAGE_ROOT_URL = application_tokens_1.PACKAGE_ROOT_URL;\r\nexports.PLATFORM_INITIALIZER = application_tokens_1.PLATFORM_INITIALIZER;\r\n__export(require('./src/core/zone'));\r\n__export(require('./src/core/render'));\r\n__export(require('./src/core/linker'));\r\nvar debug_node_1 = require('./src/core/debug/debug_node');\r\nexports.DebugElement = debug_node_1.DebugElement;\r\nexports.DebugNode = debug_node_1.DebugNode;\r\nexports.asNativeElements = debug_node_1.asNativeElements;\r\n__export(require('./src/core/testability/testability'));\r\n__export(require('./src/core/change_detection'));\r\n__export(require('./src/core/platform_directives_and_pipes'));\r\n__export(require('./src/core/platform_common_providers'));\r\n__export(require('./src/core/application_common_providers'));\r\n__export(require('./src/core/reflection/reflection'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0dBSUc7QUFDSCxpQkFBYyxxQkFBcUIsQ0FBQyxFQUFBO0FBQ3BDLGlCQUFjLGlCQUFpQixDQUFDLEVBQUE7QUFDaEMsaUJBQWMsc0JBQXNCLENBQUMsRUFBQTtBQUNyQyxpQkFBYyxlQUFlLENBQUMsRUFBQTtBQUM5QixpQkFBYyxxQkFBcUIsQ0FBQyxFQUFBO0FBQ3BDLHFCQUE2QiwwQkFBMEIsQ0FBQztBQUFoRCwrQ0FBZ0Q7QUFDeEQsZ0NBVU8sNEJBQTRCLENBQUM7QUFUbEMsMERBQWM7QUFDZCwwREFBYztBQUNkLDREQUFlO0FBQ2Ysb0RBQVc7QUFDWCx3REFBYTtBQUNiLHNFQUFvQjtBQUNwQixzREFBWTtBQUNaLG9EQUFXO0FBQ1gsMERBQ2tDO0FBQ3BDLG1DQUtPLCtCQUErQixDQUFDO0FBSnJDLDZDQUFNO0FBQ04sK0RBQWU7QUFDZixpRUFBZ0I7QUFDaEIseUVBQ3FDO0FBQ3ZDLGlCQUFjLGlCQUFpQixDQUFDLEVBQUE7QUFDaEMsaUJBQWMsbUJBQW1CLENBQUMsRUFBQTtBQUNsQyxpQkFBYyxtQkFBbUIsQ0FBQyxFQUFBO0FBQ2xDLDJCQUF3RCw2QkFBNkIsQ0FBQztBQUE5RSxpREFBWTtBQUFFLDJDQUFTO0FBQUUseURBQXFEO0FBQ3RGLGlCQUFjLG9DQUFvQyxDQUFDLEVBQUE7QUFDbkQsaUJBQWMsNkJBQTZCLENBQUMsRUFBQTtBQUM1QyxpQkFBYywwQ0FBMEMsQ0FBQyxFQUFBO0FBQ3pELGlCQUFjLHNDQUFzQyxDQUFDLEVBQUE7QUFDckQsaUJBQWMseUNBQXlDLENBQUMsRUFBQTtBQUN4RCxpQkFBYyxrQ0FBa0MsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN0YXJ0aW5nIHBvaW50IHRvIGltcG9ydCBhbGwgcHVibGljIGNvcmUgQVBJcy5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS9tZXRhZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL3V0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS9wcm9kX21vZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS9kaSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9mYWNhZGUvZmFjYWRlJztcbmV4cG9ydCB7ZW5hYmxlUHJvZE1vZGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5leHBvcnQge1xuICBjcmVhdGVQbGF0Zm9ybSxcbiAgYXNzZXJ0UGxhdGZvcm0sXG4gIGRpc3Bvc2VQbGF0Zm9ybSxcbiAgZ2V0UGxhdGZvcm0sXG4gIGNvcmVCb290c3RyYXAsXG4gIGNvcmVMb2FkQW5kQm9vdHN0cmFwLFxuICBjcmVhdGVOZ1pvbmUsXG4gIFBsYXRmb3JtUmVmLFxuICBBcHBsaWNhdGlvblJlZlxufSBmcm9tICcuL3NyYy9jb3JlL2FwcGxpY2F0aW9uX3JlZic7XG5leHBvcnQge1xuICBBUFBfSUQsXG4gIEFQUF9JTklUSUFMSVpFUixcbiAgUEFDS0FHRV9ST09UX1VSTCxcbiAgUExBVEZPUk1fSU5JVElBTElaRVJcbn0gZnJvbSAnLi9zcmMvY29yZS9hcHBsaWNhdGlvbl90b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS96b25lJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvcmVuZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvbGlua2VyJztcbmV4cG9ydCB7RGVidWdFbGVtZW50LCBEZWJ1Z05vZGUsIGFzTmF0aXZlRWxlbWVudHN9IGZyb20gJy4vc3JjL2NvcmUvZGVidWcvZGVidWdfbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL3Rlc3RhYmlsaXR5L3Rlc3RhYmlsaXR5JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL3BsYXRmb3JtX2RpcmVjdGl2ZXNfYW5kX3BpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvcGxhdGZvcm1fY29tbW9uX3Byb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL2FwcGxpY2F0aW9uX2NvbW1vbl9wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar globalScope;\r\nif (typeof window === 'undefined') {\r\n if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\r\n // TODO: Replace any with WorkerGlobalScope from lib.webworker.d.ts #3492\r\n globalScope = self;\r\n }\r\n else {\r\n globalScope = global;\r\n }\r\n}\r\nelse {\r\n globalScope = window;\r\n}\r\nfunction scheduleMicroTask(fn) {\r\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\r\n}\r\nexports.scheduleMicroTask = scheduleMicroTask;\r\nexports.IS_DART = false;\r\n// Need to declare a new variable for global here since TypeScript\r\n// exports the original value of the symbol.\r\nvar _global = globalScope;\r\nexports.global = _global;\r\nexports.Type = Function;\r\nfunction getTypeNameForDebugging(type) {\r\n if (type['name']) {\r\n return type['name'];\r\n }\r\n return typeof type;\r\n}\r\nexports.getTypeNameForDebugging = getTypeNameForDebugging;\r\nexports.Math = _global.Math;\r\nexports.Date = _global.Date;\r\nvar _devMode = true;\r\nvar _modeLocked = false;\r\nfunction lockMode() {\r\n _modeLocked = true;\r\n}\r\nexports.lockMode = lockMode;\r\n/**\r\n * Disable Angular's development mode, which turns off assertions and other\r\n * checks within the framework.\r\n *\r\n * One important assertion this disables verifies that a change detection pass\r\n * does not result in additional changes to any bindings (also known as\r\n * unidirectional data flow).\r\n */\r\nfunction enableProdMode() {\r\n if (_modeLocked) {\r\n // Cannot use BaseException as that ends up importing from facade/lang.\r\n throw 'Cannot enable prod mode after platform setup.';\r\n }\r\n _devMode = false;\r\n}\r\nexports.enableProdMode = enableProdMode;\r\nfunction assertionsEnabled() {\r\n return _devMode;\r\n}\r\nexports.assertionsEnabled = assertionsEnabled;\r\n// TODO: remove calls to assert in production environment\r\n// Note: Can't just export this and import in in other files\r\n// as `assert` is a reserved keyword in Dart\r\n_global.assert = function assert(condition) {\r\n // TODO: to be fixed properly via #2830, noop for now\r\n};\r\n// This function is needed only to properly support Dart's const expressions\r\n// see https://github.com/angular/ts2dart/pull/151 for more info\r\nfunction CONST_EXPR(expr) {\r\n return expr;\r\n}\r\nexports.CONST_EXPR = CONST_EXPR;\r\nfunction CONST() {\r\n return function (target) { return target; };\r\n}\r\nexports.CONST = CONST;\r\nfunction isPresent(obj) {\r\n return obj !== undefined && obj !== null;\r\n}\r\nexports.isPresent = isPresent;\r\nfunction isBlank(obj) {\r\n return obj === undefined || obj === null;\r\n}\r\nexports.isBlank = isBlank;\r\nfunction isBoolean(obj) {\r\n return typeof obj === \"boolean\";\r\n}\r\nexports.isBoolean = isBoolean;\r\nfunction isNumber(obj) {\r\n return typeof obj === \"number\";\r\n}\r\nexports.isNumber = isNumber;\r\nfunction isString(obj) {\r\n return typeof obj === \"string\";\r\n}\r\nexports.isString = isString;\r\nfunction isFunction(obj) {\r\n return typeof obj === \"function\";\r\n}\r\nexports.isFunction = isFunction;\r\nfunction isType(obj) {\r\n return isFunction(obj);\r\n}\r\nexports.isType = isType;\r\nfunction isStringMap(obj) {\r\n return typeof obj === 'object' && obj !== null;\r\n}\r\nexports.isStringMap = isStringMap;\r\nfunction isPromise(obj) {\r\n return obj instanceof _global.Promise;\r\n}\r\nexports.isPromise = isPromise;\r\nfunction isArray(obj) {\r\n return Array.isArray(obj);\r\n}\r\nexports.isArray = isArray;\r\nfunction isDate(obj) {\r\n return obj instanceof exports.Date && !isNaN(obj.valueOf());\r\n}\r\nexports.isDate = isDate;\r\nfunction noop() { }\r\nexports.noop = noop;\r\nfunction stringify(token) {\r\n if (typeof token === 'string') {\r\n return token;\r\n }\r\n if (token === undefined || token === null) {\r\n return '' + token;\r\n }\r\n if (token.name) {\r\n return token.name;\r\n }\r\n if (token.overriddenName) {\r\n return token.overriddenName;\r\n }\r\n var res = token.toString();\r\n var newLineIndex = res.indexOf(\"\\n\");\r\n return (newLineIndex === -1) ? res : res.substring(0, newLineIndex);\r\n}\r\nexports.stringify = stringify;\r\n// serialize / deserialize enum exist only for consistency with dart API\r\n// enums in typescript don't need to be serialized\r\nfunction serializeEnum(val) {\r\n return val;\r\n}\r\nexports.serializeEnum = serializeEnum;\r\nfunction deserializeEnum(val, values) {\r\n return val;\r\n}\r\nexports.deserializeEnum = deserializeEnum;\r\nfunction resolveEnumToken(enumValue, val) {\r\n return enumValue[val];\r\n}\r\nexports.resolveEnumToken = resolveEnumToken;\r\nvar StringWrapper = (function () {\r\n function StringWrapper() {\r\n }\r\n StringWrapper.fromCharCode = function (code) { return String.fromCharCode(code); };\r\n StringWrapper.charCodeAt = function (s, index) { return s.charCodeAt(index); };\r\n StringWrapper.split = function (s, regExp) { return s.split(regExp); };\r\n StringWrapper.equals = function (s, s2) { return s === s2; };\r\n StringWrapper.stripLeft = function (s, charVal) {\r\n if (s && s.length) {\r\n var pos = 0;\r\n for (var i = 0; i < s.length; i++) {\r\n if (s[i] != charVal)\r\n break;\r\n pos++;\r\n }\r\n s = s.substring(pos);\r\n }\r\n return s;\r\n };\r\n StringWrapper.stripRight = function (s, charVal) {\r\n if (s && s.length) {\r\n var pos = s.length;\r\n for (var i = s.length - 1; i >= 0; i--) {\r\n if (s[i] != charVal)\r\n break;\r\n pos--;\r\n }\r\n s = s.substring(0, pos);\r\n }\r\n return s;\r\n };\r\n StringWrapper.replace = function (s, from, replace) {\r\n return s.replace(from, replace);\r\n };\r\n StringWrapper.replaceAll = function (s, from, replace) {\r\n return s.replace(from, replace);\r\n };\r\n StringWrapper.slice = function (s, from, to) {\r\n if (from === void 0) { from = 0; }\r\n if (to === void 0) { to = null; }\r\n return s.slice(from, to === null ? undefined : to);\r\n };\r\n StringWrapper.replaceAllMapped = function (s, from, cb) {\r\n return s.replace(from, function () {\r\n var matches = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matches[_i - 0] = arguments[_i];\r\n }\r\n // Remove offset & string from the result array\r\n matches.splice(-2, 2);\r\n // The callback receives match, p1, ..., pn\r\n return cb(matches);\r\n });\r\n };\r\n StringWrapper.contains = function (s, substr) { return s.indexOf(substr) != -1; };\r\n StringWrapper.compare = function (a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n return StringWrapper;\r\n}());\r\nexports.StringWrapper = StringWrapper;\r\nvar StringJoiner = (function () {\r\n function StringJoiner(parts) {\r\n if (parts === void 0) { parts = []; }\r\n this.parts = parts;\r\n }\r\n StringJoiner.prototype.add = function (part) { this.parts.push(part); };\r\n StringJoiner.prototype.toString = function () { return this.parts.join(\"\"); };\r\n return StringJoiner;\r\n}());\r\nexports.StringJoiner = StringJoiner;\r\nvar NumberParseError = (function (_super) {\r\n __extends(NumberParseError, _super);\r\n function NumberParseError(message) {\r\n _super.call(this);\r\n this.message = message;\r\n }\r\n NumberParseError.prototype.toString = function () { return this.message; };\r\n return NumberParseError;\r\n}(Error));\r\nexports.NumberParseError = NumberParseError;\r\nvar NumberWrapper = (function () {\r\n function NumberWrapper() {\r\n }\r\n NumberWrapper.toFixed = function (n, fractionDigits) { return n.toFixed(fractionDigits); };\r\n NumberWrapper.equal = function (a, b) { return a === b; };\r\n NumberWrapper.parseIntAutoRadix = function (text) {\r\n var result = parseInt(text);\r\n if (isNaN(result)) {\r\n throw new NumberParseError(\"Invalid integer literal when parsing \" + text);\r\n }\r\n return result;\r\n };\r\n NumberWrapper.parseInt = function (text, radix) {\r\n if (radix == 10) {\r\n if (/^(\\-|\\+)?[0-9]+$/.test(text)) {\r\n return parseInt(text, radix);\r\n }\r\n }\r\n else if (radix == 16) {\r\n if (/^(\\-|\\+)?[0-9ABCDEFabcdef]+$/.test(text)) {\r\n return parseInt(text, radix);\r\n }\r\n }\r\n else {\r\n var result = parseInt(text, radix);\r\n if (!isNaN(result)) {\r\n return result;\r\n }\r\n }\r\n throw new NumberParseError(\"Invalid integer literal when parsing \" + text + \" in base \" +\r\n radix);\r\n };\r\n // TODO: NaN is a valid literal but is returned by parseFloat to indicate an error.\r\n NumberWrapper.parseFloat = function (text) { return parseFloat(text); };\r\n Object.defineProperty(NumberWrapper, \"NaN\", {\r\n get: function () { return NaN; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NumberWrapper.isNaN = function (value) { return isNaN(value); };\r\n NumberWrapper.isInteger = function (value) { return Number.isInteger(value); };\r\n return NumberWrapper;\r\n}());\r\nexports.NumberWrapper = NumberWrapper;\r\nexports.RegExp = _global.RegExp;\r\nvar RegExpWrapper = (function () {\r\n function RegExpWrapper() {\r\n }\r\n RegExpWrapper.create = function (regExpStr, flags) {\r\n if (flags === void 0) { flags = ''; }\r\n flags = flags.replace(/g/g, '');\r\n return new _global.RegExp(regExpStr, flags + 'g');\r\n };\r\n RegExpWrapper.firstMatch = function (regExp, input) {\r\n // Reset multimatch regex state\r\n regExp.lastIndex = 0;\r\n return regExp.exec(input);\r\n };\r\n RegExpWrapper.test = function (regExp, input) {\r\n regExp.lastIndex = 0;\r\n return regExp.test(input);\r\n };\r\n RegExpWrapper.matcher = function (regExp, input) {\r\n // Reset regex state for the case\r\n // someone did not loop over all matches\r\n // last time.\r\n regExp.lastIndex = 0;\r\n return { re: regExp, input: input };\r\n };\r\n RegExpWrapper.replaceAll = function (regExp, input, replace) {\r\n var c = regExp.exec(input);\r\n var res = '';\r\n regExp.lastIndex = 0;\r\n var prev = 0;\r\n while (c) {\r\n res += input.substring(prev, c.index);\r\n res += replace(c);\r\n prev = c.index + c[0].length;\r\n regExp.lastIndex = prev;\r\n c = regExp.exec(input);\r\n }\r\n res += input.substring(prev);\r\n return res;\r\n };\r\n return RegExpWrapper;\r\n}());\r\nexports.RegExpWrapper = RegExpWrapper;\r\nvar RegExpMatcherWrapper = (function () {\r\n function RegExpMatcherWrapper() {\r\n }\r\n RegExpMatcherWrapper.next = function (matcher) {\r\n return matcher.re.exec(matcher.input);\r\n };\r\n return RegExpMatcherWrapper;\r\n}());\r\nexports.RegExpMatcherWrapper = RegExpMatcherWrapper;\r\nvar FunctionWrapper = (function () {\r\n function FunctionWrapper() {\r\n }\r\n FunctionWrapper.apply = function (fn, posArgs) { return fn.apply(null, posArgs); };\r\n return FunctionWrapper;\r\n}());\r\nexports.FunctionWrapper = FunctionWrapper;\r\n// JS has NaN !== NaN\r\nfunction looseIdentical(a, b) {\r\n return a === b || typeof a === \"number\" && typeof b === \"number\" && isNaN(a) && isNaN(b);\r\n}\r\nexports.looseIdentical = looseIdentical;\r\n// JS considers NaN is the same as NaN for map Key (while NaN !== NaN otherwise)\r\n// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\r\nfunction getMapKey(value) {\r\n return value;\r\n}\r\nexports.getMapKey = getMapKey;\r\nfunction normalizeBlank(obj) {\r\n return isBlank(obj) ? null : obj;\r\n}\r\nexports.normalizeBlank = normalizeBlank;\r\nfunction normalizeBool(obj) {\r\n return isBlank(obj) ? false : obj;\r\n}\r\nexports.normalizeBool = normalizeBool;\r\nfunction isJsObject(o) {\r\n return o !== null && (typeof o === \"function\" || typeof o === \"object\");\r\n}\r\nexports.isJsObject = isJsObject;\r\nfunction print(obj) {\r\n console.log(obj);\r\n}\r\nexports.print = print;\r\nfunction warn(obj) {\r\n console.warn(obj);\r\n}\r\nexports.warn = warn;\r\n// Can't be all uppercase as our transpiler would think it is a special directive...\r\nvar Json = (function () {\r\n function Json() {\r\n }\r\n Json.parse = function (s) { return _global.JSON.parse(s); };\r\n Json.stringify = function (data) {\r\n // Dart doesn't take 3 arguments\r\n return _global.JSON.stringify(data, null, 2);\r\n };\r\n return Json;\r\n}());\r\nexports.Json = Json;\r\nvar DateWrapper = (function () {\r\n function DateWrapper() {\r\n }\r\n DateWrapper.create = function (year, month, day, hour, minutes, seconds, milliseconds) {\r\n if (month === void 0) { month = 1; }\r\n if (day === void 0) { day = 1; }\r\n if (hour === void 0) { hour = 0; }\r\n if (minutes === void 0) { minutes = 0; }\r\n if (seconds === void 0) { seconds = 0; }\r\n if (milliseconds === void 0) { milliseconds = 0; }\r\n return new exports.Date(year, month - 1, day, hour, minutes, seconds, milliseconds);\r\n };\r\n DateWrapper.fromISOString = function (str) { return new exports.Date(str); };\r\n DateWrapper.fromMillis = function (ms) { return new exports.Date(ms); };\r\n DateWrapper.toMillis = function (date) { return date.getTime(); };\r\n DateWrapper.now = function () { return new exports.Date(); };\r\n DateWrapper.toJson = function (date) { return date.toJSON(); };\r\n return DateWrapper;\r\n}());\r\nexports.DateWrapper = DateWrapper;\r\nfunction setValueOnPath(global, path, value) {\r\n var parts = path.split('.');\r\n var obj = global;\r\n while (parts.length > 1) {\r\n var name = parts.shift();\r\n if (obj.hasOwnProperty(name) && isPresent(obj[name])) {\r\n obj = obj[name];\r\n }\r\n else {\r\n obj = obj[name] = {};\r\n }\r\n }\r\n if (obj === undefined || obj === null) {\r\n obj = {};\r\n }\r\n obj[parts.shift()] = value;\r\n}\r\nexports.setValueOnPath = setValueOnPath;\r\nvar _symbolIterator = null;\r\nfunction getSymbolIterator() {\r\n if (isBlank(_symbolIterator)) {\r\n if (isPresent(globalScope.Symbol) && isPresent(Symbol.iterator)) {\r\n _symbolIterator = Symbol.iterator;\r\n }\r\n else {\r\n // es6-shim specific logic\r\n var keys = Object.getOwnPropertyNames(Map.prototype);\r\n for (var i = 0; i < keys.length; ++i) {\r\n var key = keys[i];\r\n if (key !== 'entries' && key !== 'size' &&\r\n Map.prototype[key] === Map.prototype['entries']) {\r\n _symbolIterator = key;\r\n }\r\n }\r\n }\r\n }\r\n return _symbolIterator;\r\n}\r\nexports.getSymbolIterator = getSymbolIterator;\r\nfunction evalExpression(sourceUrl, expr, declarations, vars) {\r\n var fnBody = declarations + \"\\nreturn \" + expr + \"\\n//# sourceURL=\" + sourceUrl;\r\n var fnArgNames = [];\r\n var fnArgValues = [];\r\n for (var argName in vars) {\r\n fnArgNames.push(argName);\r\n fnArgValues.push(vars[argName]);\r\n }\r\n return new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat(fnBody))))().apply(void 0, fnArgValues);\r\n}\r\nexports.evalExpression = evalExpression;\r\nfunction isPrimitive(obj) {\r\n return !isJsObject(obj);\r\n}\r\nexports.isPrimitive = isPrimitive;\r\nfunction hasConstructor(value, type) {\r\n return value.constructor === type;\r\n}\r\nexports.hasConstructor = hasConstructor;\r\nfunction bitWiseOr(values) {\r\n return values.reduce(function (a, b) { return a | b; });\r\n}\r\nexports.bitWiseOr = bitWiseOr;\r\nfunction bitWiseAnd(values) {\r\n return values.reduce(function (a, b) { return a & b; });\r\n}\r\nexports.bitWiseAnd = bitWiseAnd;\r\nfunction escape(s) {\r\n return _global.encodeURI(s);\r\n}\r\nexports.escape = escape;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF3QkEsSUFBSSxXQUE4QixDQUFDO0FBQ25DLEVBQUUsQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbEMsRUFBRSxDQUFDLENBQUMsT0FBTyxpQkFBaUIsS0FBSyxXQUFXLElBQUksSUFBSSxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNsRix5RUFBeUU7UUFDekUsV0FBVyxHQUFRLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixXQUFXLEdBQVEsTUFBTSxDQUFDO0lBQzVCLENBQUM7QUFDSCxDQUFDO0FBQUMsSUFBSSxDQUFDLENBQUM7SUFDTixXQUFXLEdBQVEsTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRCwyQkFBa0MsRUFBWTtJQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFGZSx5QkFBaUIsb0JBRWhDLENBQUE7QUFFWSxlQUFPLEdBQUcsS0FBSyxDQUFDO0FBRTdCLGtFQUFrRTtBQUNsRSw0Q0FBNEM7QUFDNUMsSUFBSSxPQUFPLEdBQXNCLFdBQVc7QUFFekIsY0FBTSxXQUZvQjtBQUlsQyxZQUFJLEdBQUcsUUFBUSxDQUFDO0FBZTNCLGlDQUF3QyxJQUFVO0lBQ2hELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDO0FBQ3JCLENBQUM7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QUFVLGFBRXpCLENBQUE7QUFFRCxnQkFBdUIsQ0FBUztJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRmUsY0FBTSxTQUVyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCcm93c2VyTm9kZUdsb2JhbCB7XG4gIE9iamVjdDogdHlwZW9mIE9iamVjdDtcbiAgQXJyYXk6IHR5cGVvZiBBcnJheTtcbiAgTWFwOiB0eXBlb2YgTWFwO1xuICBTZXQ6IHR5cGVvZiBTZXQ7XG4gIERhdGU6IERhdGVDb25zdHJ1Y3RvcjtcbiAgUmVnRXhwOiBSZWdFeHBDb25zdHJ1Y3RvcjtcbiAgSlNPTjogdHlwZW9mIEpTT047XG4gIE1hdGg6IGFueTsgIC8vIHR5cGVvZiBNYXRoO1xuICBhc3NlcnQoY29uZGl0aW9uOiBhbnkpOiB2b2lkO1xuICBSZWZsZWN0OiBhbnk7XG4gIGdldEFuZ3VsYXJUZXN0YWJpbGl0eTogRnVuY3Rpb247XG4gIGdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzOiBGdW5jdGlvbjtcbiAgZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50czogRnVuY3Rpb247XG4gIGZyYW1ld29ya1N0YWJpbGl6ZXJzOiBBcnJheTxGdW5jdGlvbj47XG4gIHNldFRpbWVvdXQ6IEZ1bmN0aW9uO1xuICBjbGVhclRpbWVvdXQ6IEZ1bmN0aW9uO1xuICBzZXRJbnRlcnZhbDogRnVuY3Rpb247XG4gIGNsZWFySW50ZXJ2YWw6IEZ1bmN0aW9uO1xuICBlbmNvZGVVUkk6IEZ1bmN0aW9uO1xufVxuXG4vLyBUT0RPKGp0ZXBsaXR6NjAyKTogTG9hZCBXb3JrZXJHbG9iYWxTY29wZSBmcm9tIGxpYi53ZWJ3b3JrZXIuZC50cyBmaWxlICMzNDkyXG5kZWNsYXJlIHZhciBXb3JrZXJHbG9iYWxTY29wZTtcbnZhciBnbG9iYWxTY29wZTogQnJvd3Nlck5vZGVHbG9iYWw7XG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgaWYgKHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlKSB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSBhbnkgd2l0aCBXb3JrZXJHbG9iYWxTY29wZSBmcm9tIGxpYi53ZWJ3b3JrZXIuZC50cyAjMzQ5MlxuICAgIGdsb2JhbFNjb3BlID0gPGFueT5zZWxmO1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbFNjb3BlID0gPGFueT5nbG9iYWw7XG4gIH1cbn0gZWxzZSB7XG4gIGdsb2JhbFNjb3BlID0gPGFueT53aW5kb3c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlZHVsZU1pY3JvVGFzayhmbjogRnVuY3Rpb24pIHtcbiAgWm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCdzY2hlZHVsZU1pY3JvdGFzaycsIGZuKTtcbn1cblxuZXhwb3J0IGNvbnN0IElTX0RBUlQgPSBmYWxzZTtcblxuLy8gTmVlZCB0byBkZWNsYXJlIGEgbmV3IHZhcmlhYmxlIGZvciBnbG9iYWwgaGVyZSBzaW5jZSBUeXBlU2NyaXB0XG4vLyBleHBvcnRzIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgc3ltYm9sLlxudmFyIF9nbG9iYWw6IEJyb3dzZXJOb2RlR2xvYmFsID0gZ2xvYmFsU2NvcGU7XG5cbmV4cG9ydCB7X2dsb2JhbCBhcyBnbG9iYWx9O1xuXG5leHBvcnQgdmFyIFR5cGUgPSBGdW5jdGlvbjtcblxuLyoqXG4gKiBSdW50aW1lIHJlcHJlc2VudGF0aW9uIGEgdHlwZSB0aGF0IGEgQ29tcG9uZW50IG9yIG90aGVyIG9iamVjdCBpcyBpbnN0YW5jZXMgb2YuXG4gKlxuICogQW4gZXhhbXBsZSBvZiBhIGBUeXBlYCBpcyBgTXlDdXN0b21Db21wb25lbnRgIGNsYXNzLCB3aGljaCBpbiBKYXZhU2NyaXB0IGlzIGJlIHJlcHJlc2VudGVkIGJ5XG4gKiB0aGUgYE15Q3VzdG9tQ29tcG9uZW50YCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlIGV4dGVuZHMgRnVuY3Rpb24ge31cblxuLyoqXG4gKiBSdW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIGEgdHlwZSB0aGF0IGlzIGNvbnN0cnVjdGFibGUgKG5vbi1hYnN0cmFjdCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uY3JldGVUeXBlIGV4dGVuZHMgVHlwZSB7IG5ldyAoLi4uYXJncyk6IGFueTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZU5hbWVGb3JEZWJ1Z2dpbmcodHlwZTogVHlwZSk6IHN0cmluZyB7XG4gIGlmICh0eXBlWyduYW1lJ10pIHtcbiAgICByZXR1cm4gdHlwZVsnbmFtZSddO1xuICB9XG4gIHJldHVybiB0eXBlb2YgdHlwZTtcbn1cblxuXG5leHBvcnQgdmFyIE1hdGggPSBfZ2xvYmFsLk1hdGg7XG5leHBvcnQgdmFyIERhdGUgPSBfZ2xvYmFsLkRhdGU7XG5cbnZhciBfZGV2TW9kZTogYm9vbGVhbiA9IHRydWU7XG52YXIgX21vZGVMb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2tNb2RlKCkge1xuICBfbW9kZUxvY2tlZCA9IHRydWU7XG59XG5cbi8qKlxuICogRGlzYWJsZSBBbmd1bGFyJ3MgZGV2ZWxvcG1lbnQgbW9kZSwgd2hpY2ggdHVybnMgb2ZmIGFzc2VydGlvbnMgYW5kIG90aGVyXG4gKiBjaGVja3Mgd2l0aGluIHRoZSBmcmFtZXdvcmsuXG4gKlxuICogT25lIGltcG9ydGFudCBhc3NlcnRpb24gdGhpcyBkaXNhYmxlcyB2ZXJpZmllcyB0aGF0IGEgY2hhbmdlIGRldGVjdGlvbiBwYXNzXG4gKiBkb2VzIG5vdCByZXN1bHQgaW4gYWRkaXRpb25hbCBjaGFuZ2VzIHRvIGFueSBiaW5kaW5ncyAoYWxzbyBrbm93biBhc1xuICogdW5pZGlyZWN0aW9uYWwgZGF0YSBmbG93KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZVByb2RNb2RlKCkge1xuICBpZiAoX21vZGVMb2NrZWQpIHtcbiAgICAvLyBDYW5ub3QgdXNlIEJhc2VFeGNlcHRpb24gYXMgdGhhdCBlbmRzIHVwIGltcG9ydGluZyBmcm9tIGZhY2FkZS9sYW5nLlxuICAgIHRocm93ICdDYW5ub3QgZW5hYmxlIHByb2QgbW9kZSBhZnRlciBwbGF0Zm9ybSBzZXR1cC4nO1xuICB9XG4gIF9kZXZNb2RlID0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIF9kZXZNb2RlO1xufVxuXG4vLyBUT0RPOiByZW1vdmUgY2FsbHMgdG8gYXNzZXJ0IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbi8vIE5vdGU6IENhbid0IGp1c3QgZXhwb3J0IHRoaXMgYW5kIGltcG9ydCBpbiBpbiBvdGhlciBmaWxlc1xuLy8gYXMgYGFzc2VydGAgaXMgYSByZXNlcnZlZCBrZXl3b3JkIGluIERhcnRcbl9nbG9iYWwuYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikge1xuICAvLyBUT0RPOiB0byBiZSBmaXhlZCBwcm9wZXJseSB2aWEgIzI4MzAsIG5vb3AgZm9yIG5vd1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgb25seSB0byBwcm9wZXJseSBzdXBwb3J0IERhcnQncyBjb25zdCBleHByZXNzaW9uc1xuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3RzMmRhcnQvcHVsbC8xNTEgZm9yIG1vcmUgaW5mb1xuZXhwb3J0IGZ1bmN0aW9uIENPTlNUX0VYUFI8VD4oZXhwcjogVCk6IFQge1xuICByZXR1cm4gZXhwcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENPTlNUKCk6IENsYXNzRGVjb3JhdG9yICYgUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gKHRhcmdldCkgPT4gdGFyZ2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmVzZW50KG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBvYmogIT09IHVuZGVmaW5lZCAmJiBvYmogIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JsYW5rKG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBvYmogPT09IHVuZGVmaW5lZCB8fCBvYmogPT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW4ob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiYm9vbGVhblwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwibnVtYmVyXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNGdW5jdGlvbihvYmopO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNYXAob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgKDxhbnk+X2dsb2JhbCkuUHJvbWlzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShvYmopOiBib29sZWFuIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKG9iai52YWx1ZU9mKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodG9rZW4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIGlmICh0b2tlbiA9PT0gdW5kZWZpbmVkIHx8IHRva2VuID09PSBudWxsKSB7XG4gICAgcmV0dXJuICcnICsgdG9rZW47XG4gIH1cblxuICBpZiAodG9rZW4ubmFtZSkge1xuICAgIHJldHVybiB0b2tlbi5uYW1lO1xuICB9XG4gIGlmICh0b2tlbi5vdmVycmlkZGVuTmFtZSkge1xuICAgIHJldHVybiB0b2tlbi5vdmVycmlkZGVuTmFtZTtcbiAgfVxuXG4gIHZhciByZXMgPSB0b2tlbi50b1N0cmluZygpO1xuICB2YXIgbmV3TGluZUluZGV4ID0gcmVzLmluZGV4T2YoXCJcXG5cIik7XG4gIHJldHVybiAobmV3TGluZUluZGV4ID09PSAtMSkgPyByZXMgOiByZXMuc3Vic3RyaW5nKDAsIG5ld0xpbmVJbmRleCk7XG59XG5cbi8vIHNlcmlhbGl6ZSAvIGRlc2VyaWFsaXplIGVudW0gZXhpc3Qgb25seSBmb3IgY29uc2lzdGVuY3kgd2l0aCBkYXJ0IEFQSVxuLy8gZW51bXMgaW4gdHlwZXNjcmlwdCBkb24ndCBuZWVkIHRvIGJlIHNlcmlhbGl6ZWRcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUVudW0odmFsKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplRW51bSh2YWwsIHZhbHVlczogTWFwPG51bWJlciwgYW55Pik6IGFueSB7XG4gIHJldHVybiB2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRW51bVRva2VuKGVudW1WYWx1ZSwgdmFsKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVudW1WYWx1ZVt2YWxdO1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nV3JhcHBlciB7XG4gIHN0YXRpYyBmcm9tQ2hhckNvZGUoY29kZTogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7IH1cblxuICBzdGF0aWMgY2hhckNvZGVBdChzOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIgeyByZXR1cm4gcy5jaGFyQ29kZUF0KGluZGV4KTsgfVxuXG4gIHN0YXRpYyBzcGxpdChzOiBzdHJpbmcsIHJlZ0V4cDogUmVnRXhwKTogc3RyaW5nW10geyByZXR1cm4gcy5zcGxpdChyZWdFeHApOyB9XG5cbiAgc3RhdGljIGVxdWFscyhzOiBzdHJpbmcsIHMyOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHMgPT09IHMyOyB9XG5cbiAgc3RhdGljIHN0cmlwTGVmdChzOiBzdHJpbmcsIGNoYXJWYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHMgJiYgcy5sZW5ndGgpIHtcbiAgICAgIHZhciBwb3MgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzW2ldICE9IGNoYXJWYWwpIGJyZWFrO1xuICAgICAgICBwb3MrKztcbiAgICAgIH1cbiAgICAgIHMgPSBzLnN1YnN0cmluZyhwb3MpO1xuICAgIH1cbiAgICByZXR1cm4gcztcbiAgfVxuXG4gIHN0YXRpYyBzdHJpcFJpZ2h0KHM6IHN0cmluZywgY2hhclZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocyAmJiBzLmxlbmd0aCkge1xuICAgICAgdmFyIHBvcyA9IHMubGVuZ3RoO1xuICAgICAgZm9yICh2YXIgaSA9IHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKHNbaV0gIT0gY2hhclZhbCkgYnJlYWs7XG4gICAgICAgIHBvcy0tO1xuICAgICAgfVxuICAgICAgcyA9IHMuc3Vic3RyaW5nKDAsIHBvcyk7XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cbiAgc3RhdGljIHJlcGxhY2Uoczogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHJlcGxhY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHMucmVwbGFjZShmcm9tLCByZXBsYWNlKTtcbiAgfVxuXG4gIHN0YXRpYyByZXBsYWNlQWxsKHM6IHN0cmluZywgZnJvbTogUmVnRXhwLCByZXBsYWNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzLnJlcGxhY2UoZnJvbSwgcmVwbGFjZSk7XG4gIH1cblxuICBzdGF0aWMgc2xpY2U8VD4oczogc3RyaW5nLCBmcm9tOiBudW1iZXIgPSAwLCB0bzogbnVtYmVyID0gbnVsbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHMuc2xpY2UoZnJvbSwgdG8gPT09IG51bGwgPyB1bmRlZmluZWQgOiB0byk7XG4gIH1cblxuICBzdGF0aWMgcmVwbGFjZUFsbE1hcHBlZChzOiBzdHJpbmcsIGZyb206IFJlZ0V4cCwgY2I6IEZ1bmN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcy5yZXBsYWNlKGZyb20sIGZ1bmN0aW9uKC4uLm1hdGNoZXMpIHtcbiAgICAgIC8vIFJlbW92ZSBvZmZzZXQgJiBzdHJpbmcgZnJvbSB0aGUgcmVzdWx0IGFycmF5XG4gICAgICBtYXRjaGVzLnNwbGljZSgtMiwgMik7XG4gICAgICAvLyBUaGUgY2FsbGJhY2sgcmVjZWl2ZXMgbWF0Y2gsIHAxLCAuLi4sIHBuXG4gICAgICByZXR1cm4gY2IobWF0Y2hlcyk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgY29udGFpbnMoczogc3RyaW5nLCBzdWJzdHI6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gcy5pbmRleE9mKHN1YnN0cikgIT0gLTE7IH1cblxuICBzdGF0aWMgY29tcGFyZShhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKGEgPCBiKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nSm9pbmVyIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhcnRzID0gW10pIHt9XG5cbiAgYWRkKHBhcnQ6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnBhcnRzLnB1c2gocGFydCk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5wYXJ0cy5qb2luKFwiXCIpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBOdW1iZXJQYXJzZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG1lc3NhZ2U6IHN0cmluZykgeyBzdXBlcigpOyB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMubWVzc2FnZTsgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBOdW1iZXJXcmFwcGVyIHtcbiAgc3RhdGljIHRvRml4ZWQobjogbnVtYmVyLCBmcmFjdGlvbkRpZ2l0czogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIG4udG9GaXhlZChmcmFjdGlvbkRpZ2l0cyk7IH1cblxuICBzdGF0aWMgZXF1YWwoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBib29sZWFuIHsgcmV0dXJuIGEgPT09IGI7IH1cblxuICBzdGF0aWMgcGFyc2VJbnRBdXRvUmFkaXgodGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB2YXIgcmVzdWx0OiBudW1iZXIgPSBwYXJzZUludCh0ZXh0KTtcbiAgICBpZiAoaXNOYU4ocmVzdWx0KSkge1xuICAgICAgdGhyb3cgbmV3IE51bWJlclBhcnNlRXJyb3IoXCJJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgXCIgKyB0ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUludCh0ZXh0OiBzdHJpbmcsIHJhZGl4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChyYWRpeCA9PSAxMCkge1xuICAgICAgaWYgKC9eKFxcLXxcXCspP1swLTldKyQvLnRlc3QodGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRleHQsIHJhZGl4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJhZGl4ID09IDE2KSB7XG4gICAgICBpZiAoL14oXFwtfFxcKyk/WzAtOUFCQ0RFRmFiY2RlZl0rJC8udGVzdCh0ZXh0KSkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGV4dCwgcmFkaXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0OiBudW1iZXIgPSBwYXJzZUludCh0ZXh0LCByYWRpeCk7XG4gICAgICBpZiAoIWlzTmFOKHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IE51bWJlclBhcnNlRXJyb3IoXCJJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgXCIgKyB0ZXh0ICsgXCIgaW4gYmFzZSBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXgpO1xuICB9XG5cbiAgLy8gVE9ETzogTmFOIGlzIGEgdmFsaWQgbGl0ZXJhbCBidXQgaXMgcmV0dXJuZWQgYnkgcGFyc2VGbG9hdCB0byBpbmRpY2F0ZSBhbiBlcnJvci5cbiAgc3RhdGljIHBhcnNlRmxvYXQodGV4dDogc3RyaW5nKTogbnVtYmVyIHsgcmV0dXJuIHBhcnNlRmxvYXQodGV4dCk7IH1cblxuICBzdGF0aWMgZ2V0IE5hTigpOiBudW1iZXIgeyByZXR1cm4gTmFOOyB9XG5cbiAgc3RhdGljIGlzTmFOKHZhbHVlOiBhbnkpOiBib29sZWFuIHsgcmV0dXJuIGlzTmFOKHZhbHVlKTsgfVxuXG4gIHN0YXRpYyBpc0ludGVnZXIodmFsdWU6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7IH1cbn1cblxuZXhwb3J0IHZhciBSZWdFeHAgPSBfZ2xvYmFsLlJlZ0V4cDtcblxuZXhwb3J0IGNsYXNzIFJlZ0V4cFdyYXBwZXIge1xuICBzdGF0aWMgY3JlYXRlKHJlZ0V4cFN0cjogc3RyaW5nLCBmbGFnczogc3RyaW5nID0gJycpOiBSZWdFeHAge1xuICAgIGZsYWdzID0gZmxhZ3MucmVwbGFjZSgvZy9nLCAnJyk7XG4gICAgcmV0dXJuIG5ldyBfZ2xvYmFsLlJlZ0V4cChyZWdFeHBTdHIsIGZsYWdzICsgJ2cnKTtcbiAgfVxuICBzdGF0aWMgZmlyc3RNYXRjaChyZWdFeHA6IFJlZ0V4cCwgaW5wdXQ6IHN0cmluZyk6IFJlZ0V4cEV4ZWNBcnJheSB7XG4gICAgLy8gUmVzZXQgbXVsdGltYXRjaCByZWdleCBzdGF0ZVxuICAgIHJlZ0V4cC5sYXN0SW5kZXggPSAwO1xuICAgIHJldHVybiByZWdFeHAuZXhlYyhpbnB1dCk7XG4gIH1cbiAgc3RhdGljIHRlc3QocmVnRXhwOiBSZWdFeHAsIGlucHV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZWdFeHAubGFzdEluZGV4ID0gMDtcbiAgICByZXR1cm4gcmVnRXhwLnRlc3QoaW5wdXQpO1xuICB9XG4gIHN0YXRpYyBtYXRjaGVyKHJlZ0V4cDogUmVnRXhwLCBpbnB1dDogc3RyaW5nKToge1xuICAgIHJlOiBSZWdFeHA7XG4gICAgaW5wdXQ6IHN0cmluZ1xuICB9XG4gIHtcbiAgICAvLyBSZXNldCByZWdleCBzdGF0ZSBmb3IgdGhlIGNhc2VcbiAgICAvLyBzb21lb25lIGRpZCBub3QgbG9vcCBvdmVyIGFsbCBtYXRjaGVzXG4gICAgLy8gbGFzdCB0aW1lLlxuICAgIHJlZ0V4cC5sYXN0SW5kZXggPSAwO1xuICAgIHJldHVybiB7cmU6IHJlZ0V4cCwgaW5wdXQ6IGlucHV0fTtcbiAgfVxuICBzdGF0aWMgcmVwbGFjZUFsbChyZWdFeHA6IFJlZ0V4cCwgaW5wdXQ6IHN0cmluZywgcmVwbGFjZTogRnVuY3Rpb24pOiBzdHJpbmcge1xuICAgIGxldCBjID0gcmVnRXhwLmV4ZWMoaW5wdXQpO1xuICAgIGxldCByZXMgPSAnJztcbiAgICByZWdFeHAubGFzdEluZGV4ID0gMDtcbiAgICBsZXQgcHJldiA9IDA7XG4gICAgd2hpbGUgKGMpIHtcbiAgICAgIHJlcyArPSBpbnB1dC5zdWJzdHJpbmcocHJldiwgYy5pbmRleCk7XG4gICAgICByZXMgKz0gcmVwbGFjZShjKTtcbiAgICAgIHByZXYgPSBjLmluZGV4ICsgY1swXS5sZW5ndGg7XG4gICAgICByZWdFeHAubGFzdEluZGV4ID0gcHJldjtcbiAgICAgIGMgPSByZWdFeHAuZXhlYyhpbnB1dCk7XG4gICAgfVxuICAgIHJlcyArPSBpbnB1dC5zdWJzdHJpbmcocHJldik7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVnRXhwTWF0Y2hlcldyYXBwZXIge1xuICBzdGF0aWMgbmV4dChtYXRjaGVyOiB7XG4gICAgcmU6IFJlZ0V4cDtcbiAgICBpbnB1dDogc3RyaW5nXG4gIH0pOiBSZWdFeHBFeGVjQXJyYXkge1xuICAgIHJldHVybiBtYXRjaGVyLnJlLmV4ZWMobWF0Y2hlci5pbnB1dCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uV3JhcHBlciB7XG4gIHN0YXRpYyBhcHBseShmbjogRnVuY3Rpb24sIHBvc0FyZ3M6IGFueSk6IGFueSB7IHJldHVybiBmbi5hcHBseShudWxsLCBwb3NBcmdzKTsgfVxufVxuXG4vLyBKUyBoYXMgTmFOICE9PSBOYU5cbmV4cG9ydCBmdW5jdGlvbiBsb29zZUlkZW50aWNhbChhLCBiKTogYm9vbGVhbiB7XG4gIHJldHVybiBhID09PSBiIHx8IHR5cGVvZiBhID09PSBcIm51bWJlclwiICYmIHR5cGVvZiBiID09PSBcIm51bWJlclwiICYmIGlzTmFOKGEpICYmIGlzTmFOKGIpO1xufVxuXG4vLyBKUyBjb25zaWRlcnMgTmFOIGlzIHRoZSBzYW1lIGFzIE5hTiBmb3IgbWFwIEtleSAod2hpbGUgTmFOICE9PSBOYU4gb3RoZXJ3aXNlKVxuLy8gc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL01hcFxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcEtleTxUPih2YWx1ZTogVCk6IFQge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVCbGFuayhvYmo6IE9iamVjdCk6IGFueSB7XG4gIHJldHVybiBpc0JsYW5rKG9iaikgPyBudWxsIDogb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQm9vbChvYmo6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQmxhbmsob2JqKSA/IGZhbHNlIDogb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNKc09iamVjdChvOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIG8gIT09IG51bGwgJiYgKHR5cGVvZiBvID09PSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIG8gPT09IFwib2JqZWN0XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnQob2JqOiBFcnJvciB8IE9iamVjdCkge1xuICBjb25zb2xlLmxvZyhvYmopO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FybihvYmo6IEVycm9yIHwgT2JqZWN0KSB7XG4gIGNvbnNvbGUud2FybihvYmopO1xufVxuXG4vLyBDYW4ndCBiZSBhbGwgdXBwZXJjYXNlIGFzIG91ciB0cmFuc3BpbGVyIHdvdWxkIHRoaW5rIGl0IGlzIGEgc3BlY2lhbCBkaXJlY3RpdmUuLi5cbmV4cG9ydCBjbGFzcyBKc29uIHtcbiAgc3RhdGljIHBhcnNlKHM6IHN0cmluZyk6IE9iamVjdCB7IHJldHVybiBfZ2xvYmFsLkpTT04ucGFyc2Uocyk7IH1cbiAgc3RhdGljIHN0cmluZ2lmeShkYXRhOiBPYmplY3QpOiBzdHJpbmcge1xuICAgIC8vIERhcnQgZG9lc24ndCB0YWtlIDMgYXJndW1lbnRzXG4gICAgcmV0dXJuIF9nbG9iYWwuSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGVXcmFwcGVyIHtcbiAgc3RhdGljIGNyZWF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIgPSAxLCBkYXk6IG51bWJlciA9IDEsIGhvdXI6IG51bWJlciA9IDAsXG4gICAgICAgICAgICAgICAgbWludXRlczogbnVtYmVyID0gMCwgc2Vjb25kczogbnVtYmVyID0gMCwgbWlsbGlzZWNvbmRzOiBudW1iZXIgPSAwKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5LCBob3VyLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMpO1xuICB9XG4gIHN0YXRpYyBmcm9tSVNPU3RyaW5nKHN0cjogc3RyaW5nKTogRGF0ZSB7IHJldHVybiBuZXcgRGF0ZShzdHIpOyB9XG4gIHN0YXRpYyBmcm9tTWlsbGlzKG1zOiBudW1iZXIpOiBEYXRlIHsgcmV0dXJuIG5ldyBEYXRlKG1zKTsgfVxuICBzdGF0aWMgdG9NaWxsaXMoZGF0ZTogRGF0ZSk6IG51bWJlciB7IHJldHVybiBkYXRlLmdldFRpbWUoKTsgfVxuICBzdGF0aWMgbm93KCk6IERhdGUgeyByZXR1cm4gbmV3IERhdGUoKTsgfVxuICBzdGF0aWMgdG9Kc29uKGRhdGU6IERhdGUpOiBzdHJpbmcgeyByZXR1cm4gZGF0ZS50b0pTT04oKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsdWVPblBhdGgoZ2xvYmFsOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHZhciBvYmo6IGFueSA9IGdsb2JhbDtcbiAgd2hpbGUgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgbmFtZSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiBpc1ByZXNlbnQob2JqW25hbWVdKSkge1xuICAgICAgb2JqID0gb2JqW25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmogPSBvYmpbbmFtZV0gPSB7fTtcbiAgICB9XG4gIH1cbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIG9iaiA9IHt9O1xuICB9XG4gIG9ialtwYXJ0cy5zaGlmdCgpXSA9IHZhbHVlO1xufVxuXG4vLyBXaGVuIFN5bWJvbC5pdGVyYXRvciBkb2Vzbid0IGV4aXN0LCByZXRyaWV2ZXMgdGhlIGtleSB1c2VkIGluIGVzNi1zaGltXG5kZWNsYXJlIHZhciBTeW1ib2w7XG52YXIgX3N5bWJvbEl0ZXJhdG9yID0gbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBnZXRTeW1ib2xJdGVyYXRvcigpOiBzdHJpbmcgfCBzeW1ib2wge1xuICBpZiAoaXNCbGFuayhfc3ltYm9sSXRlcmF0b3IpKSB7XG4gICAgaWYgKGlzUHJlc2VudCgoPGFueT5nbG9iYWxTY29wZSkuU3ltYm9sKSAmJiBpc1ByZXNlbnQoU3ltYm9sLml0ZXJhdG9yKSkge1xuICAgICAgX3N5bWJvbEl0ZXJhdG9yID0gU3ltYm9sLml0ZXJhdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlczYtc2hpbSBzcGVjaWZpYyBsb2dpY1xuICAgICAgdmFyIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhNYXAucHJvdG90eXBlKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgaWYgKGtleSAhPT0gJ2VudHJpZXMnICYmIGtleSAhPT0gJ3NpemUnICYmXG4gICAgICAgICAgICBNYXAucHJvdG90eXBlW2tleV0gPT09IE1hcC5wcm90b3R5cGVbJ2VudHJpZXMnXSkge1xuICAgICAgICAgIF9zeW1ib2xJdGVyYXRvciA9IGtleTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gX3N5bWJvbEl0ZXJhdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZhbEV4cHJlc3Npb24oc291cmNlVXJsOiBzdHJpbmcsIGV4cHI6IHN0cmluZywgZGVjbGFyYXRpb25zOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyczoge1trZXk6IHN0cmluZ106IGFueX0pOiBhbnkge1xuICB2YXIgZm5Cb2R5ID0gYCR7ZGVjbGFyYXRpb25zfVxcbnJldHVybiAke2V4cHJ9XFxuLy8jIHNvdXJjZVVSTD0ke3NvdXJjZVVybH1gO1xuICB2YXIgZm5BcmdOYW1lcyA9IFtdO1xuICB2YXIgZm5BcmdWYWx1ZXMgPSBbXTtcbiAgZm9yICh2YXIgYXJnTmFtZSBpbiB2YXJzKSB7XG4gICAgZm5BcmdOYW1lcy5wdXNoKGFyZ05hbWUpO1xuICAgIGZuQXJnVmFsdWVzLnB1c2godmFyc1thcmdOYW1lXSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi5mbkFyZ05hbWVzLmNvbmNhdChmbkJvZHkpKSguLi5mbkFyZ1ZhbHVlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gIWlzSnNPYmplY3Qob2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0NvbnN0cnVjdG9yKHZhbHVlOiBPYmplY3QsIHR5cGU6IFR5cGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yID09PSB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0V2lzZU9yKHZhbHVlczogbnVtYmVyW10pOiBudW1iZXIge1xuICByZXR1cm4gdmFsdWVzLnJlZHVjZSgoYSwgYikgPT4geyByZXR1cm4gYSB8IGI7IH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0V2lzZUFuZCh2YWx1ZXM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoKGEsIGIpID0+IHsgcmV0dXJuIGEgJiBiOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZShzOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gX2dsb2JhbC5lbmNvZGVVUkkocyk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.Map = lang_1.global.Map;\r\nexports.Set = lang_1.global.Set;\r\n// Safari and Internet Explorer do not support the iterable parameter to the\r\n// Map constructor. We work around that by manually adding the items.\r\nvar createMapFromPairs = (function () {\r\n try {\r\n if (new exports.Map([[1, 2]]).size === 1) {\r\n return function createMapFromPairs(pairs) { return new exports.Map(pairs); };\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return function createMapAndPopulateFromPairs(pairs) {\r\n var map = new exports.Map();\r\n for (var i = 0; i < pairs.length; i++) {\r\n var pair = pairs[i];\r\n map.set(pair[0], pair[1]);\r\n }\r\n return map;\r\n };\r\n})();\r\nvar createMapFromMap = (function () {\r\n try {\r\n if (new exports.Map(new exports.Map())) {\r\n return function createMapFromMap(m) { return new exports.Map(m); };\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return function createMapAndPopulateFromMap(m) {\r\n var map = new exports.Map();\r\n m.forEach(function (v, k) { map.set(k, v); });\r\n return map;\r\n };\r\n})();\r\nvar _clearValues = (function () {\r\n if ((new exports.Map()).keys().next) {\r\n return function _clearValues(m) {\r\n var keyIterator = m.keys();\r\n var k;\r\n while (!((k = keyIterator.next()).done)) {\r\n m.set(k.value, null);\r\n }\r\n };\r\n }\r\n else {\r\n return function _clearValuesWithForeEach(m) {\r\n m.forEach(function (v, k) { m.set(k, null); });\r\n };\r\n }\r\n})();\r\n// Safari doesn't implement MapIterator.next(), which is used is Traceur's polyfill of Array.from\r\n// TODO(mlaval): remove the work around once we have a working polyfill of Array.from\r\nvar _arrayFromMap = (function () {\r\n try {\r\n if ((new exports.Map()).values().next) {\r\n return function createArrayFromMap(m, getValues) {\r\n return getValues ? Array.from(m.values()) : Array.from(m.keys());\r\n };\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return function createArrayFromMapWithForeach(m, getValues) {\r\n var res = ListWrapper.createFixedSize(m.size), i = 0;\r\n m.forEach(function (v, k) {\r\n res[i] = getValues ? v : k;\r\n i++;\r\n });\r\n return res;\r\n };\r\n})();\r\nvar MapWrapper = (function () {\r\n function MapWrapper() {\r\n }\r\n MapWrapper.clone = function (m) { return createMapFromMap(m); };\r\n MapWrapper.createFromStringMap = function (stringMap) {\r\n var result = new exports.Map();\r\n for (var prop in stringMap) {\r\n result.set(prop, stringMap[prop]);\r\n }\r\n return result;\r\n };\r\n MapWrapper.toStringMap = function (m) {\r\n var r = {};\r\n m.forEach(function (v, k) { return r[k] = v; });\r\n return r;\r\n };\r\n MapWrapper.createFromPairs = function (pairs) { return createMapFromPairs(pairs); };\r\n MapWrapper.clearValues = function (m) { _clearValues(m); };\r\n MapWrapper.iterable = function (m) { return m; };\r\n MapWrapper.keys = function (m) { return _arrayFromMap(m, false); };\r\n MapWrapper.values = function (m) { return _arrayFromMap(m, true); };\r\n return MapWrapper;\r\n}());\r\nexports.MapWrapper = MapWrapper;\r\n/**\r\n * Wraps Javascript Objects\r\n */\r\nvar StringMapWrapper = (function () {\r\n function StringMapWrapper() {\r\n }\r\n StringMapWrapper.create = function () {\r\n // Note: We are not using Object.create(null) here due to\r\n // performance!\r\n // http://jsperf.com/ng2-object-create-null\r\n return {};\r\n };\r\n StringMapWrapper.contains = function (map, key) {\r\n return map.hasOwnProperty(key);\r\n };\r\n StringMapWrapper.get = function (map, key) {\r\n return map.hasOwnProperty(key) ? map[key] : undefined;\r\n };\r\n StringMapWrapper.set = function (map, key, value) { map[key] = value; };\r\n StringMapWrapper.keys = function (map) { return Object.keys(map); };\r\n StringMapWrapper.values = function (map) {\r\n return Object.keys(map).reduce(function (r, a) {\r\n r.push(map[a]);\r\n return r;\r\n }, []);\r\n };\r\n StringMapWrapper.isEmpty = function (map) {\r\n for (var prop in map) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n StringMapWrapper.delete = function (map, key) { delete map[key]; };\r\n StringMapWrapper.forEach = function (map, callback) {\r\n for (var prop in map) {\r\n if (map.hasOwnProperty(prop)) {\r\n callback(map[prop], prop);\r\n }\r\n }\r\n };\r\n StringMapWrapper.merge = function (m1, m2) {\r\n var m = {};\r\n for (var attr in m1) {\r\n if (m1.hasOwnProperty(attr)) {\r\n m[attr] = m1[attr];\r\n }\r\n }\r\n for (var attr in m2) {\r\n if (m2.hasOwnProperty(attr)) {\r\n m[attr] = m2[attr];\r\n }\r\n }\r\n return m;\r\n };\r\n StringMapWrapper.equals = function (m1, m2) {\r\n var k1 = Object.keys(m1);\r\n var k2 = Object.keys(m2);\r\n if (k1.length != k2.length) {\r\n return false;\r\n }\r\n var key;\r\n for (var i = 0; i < k1.length; i++) {\r\n key = k1[i];\r\n if (m1[key] !== m2[key]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return StringMapWrapper;\r\n}());\r\nexports.StringMapWrapper = StringMapWrapper;\r\nvar ListWrapper = (function () {\r\n function ListWrapper() {\r\n }\r\n // JS has no way to express a statically fixed size list, but dart does so we\r\n // keep both methods.\r\n ListWrapper.createFixedSize = function (size) { return new Array(size); };\r\n ListWrapper.createGrowableSize = function (size) { return new Array(size); };\r\n ListWrapper.clone = function (array) { return array.slice(0); };\r\n ListWrapper.forEachWithIndex = function (array, fn) {\r\n for (var i = 0; i < array.length; i++) {\r\n fn(array[i], i);\r\n }\r\n };\r\n ListWrapper.first = function (array) {\r\n if (!array)\r\n return null;\r\n return array[0];\r\n };\r\n ListWrapper.last = function (array) {\r\n if (!array || array.length == 0)\r\n return null;\r\n return array[array.length - 1];\r\n };\r\n ListWrapper.indexOf = function (array, value, startIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n return array.indexOf(value, startIndex);\r\n };\r\n ListWrapper.contains = function (list, el) { return list.indexOf(el) !== -1; };\r\n ListWrapper.reversed = function (array) {\r\n var a = ListWrapper.clone(array);\r\n return a.reverse();\r\n };\r\n ListWrapper.concat = function (a, b) { return a.concat(b); };\r\n ListWrapper.insert = function (list, index, value) { list.splice(index, 0, value); };\r\n ListWrapper.removeAt = function (list, index) {\r\n var res = list[index];\r\n list.splice(index, 1);\r\n return res;\r\n };\r\n ListWrapper.removeAll = function (list, items) {\r\n for (var i = 0; i < items.length; ++i) {\r\n var index = list.indexOf(items[i]);\r\n list.splice(index, 1);\r\n }\r\n };\r\n ListWrapper.remove = function (list, el) {\r\n var index = list.indexOf(el);\r\n if (index > -1) {\r\n list.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n };\r\n ListWrapper.clear = function (list) { list.length = 0; };\r\n ListWrapper.isEmpty = function (list) { return list.length == 0; };\r\n ListWrapper.fill = function (list, value, start, end) {\r\n if (start === void 0) { start = 0; }\r\n if (end === void 0) { end = null; }\r\n list.fill(value, start, end === null ? list.length : end);\r\n };\r\n ListWrapper.equals = function (a, b) {\r\n if (a.length != b.length)\r\n return false;\r\n for (var i = 0; i < a.length; ++i) {\r\n if (a[i] !== b[i])\r\n return false;\r\n }\r\n return true;\r\n };\r\n ListWrapper.slice = function (l, from, to) {\r\n if (from === void 0) { from = 0; }\r\n if (to === void 0) { to = null; }\r\n return l.slice(from, to === null ? undefined : to);\r\n };\r\n ListWrapper.splice = function (l, from, length) { return l.splice(from, length); };\r\n ListWrapper.sort = function (l, compareFn) {\r\n if (lang_1.isPresent(compareFn)) {\r\n l.sort(compareFn);\r\n }\r\n else {\r\n l.sort();\r\n }\r\n };\r\n ListWrapper.toString = function (l) { return l.toString(); };\r\n ListWrapper.toJSON = function (l) { return JSON.stringify(l); };\r\n ListWrapper.maximum = function (list, predicate) {\r\n if (list.length == 0) {\r\n return null;\r\n }\r\n var solution = null;\r\n var maxValue = -Infinity;\r\n for (var index = 0; index < list.length; index++) {\r\n var candidate = list[index];\r\n if (lang_1.isBlank(candidate)) {\r\n continue;\r\n }\r\n var candidateValue = predicate(candidate);\r\n if (candidateValue > maxValue) {\r\n solution = candidate;\r\n maxValue = candidateValue;\r\n }\r\n }\r\n return solution;\r\n };\r\n ListWrapper.flatten = function (list) {\r\n var target = [];\r\n _flattenArray(list, target);\r\n return target;\r\n };\r\n ListWrapper.addAll = function (list, source) {\r\n for (var i = 0; i < source.length; i++) {\r\n list.push(source[i]);\r\n }\r\n };\r\n return ListWrapper;\r\n}());\r\nexports.ListWrapper = ListWrapper;\r\nfunction _flattenArray(source, target) {\r\n if (lang_1.isPresent(source)) {\r\n for (var i = 0; i < source.length; i++) {\r\n var item = source[i];\r\n if (lang_1.isArray(item)) {\r\n _flattenArray(item, target);\r\n }\r\n else {\r\n target.push(item);\r\n }\r\n }\r\n }\r\n return target;\r\n}\r\nfunction isListLikeIterable(obj) {\r\n if (!lang_1.isJsObject(obj))\r\n return false;\r\n return lang_1.isArray(obj) ||\r\n (!(obj instanceof exports.Map) &&\r\n lang_1.getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop\r\n}\r\nexports.isListLikeIterable = isListLikeIterable;\r\nfunction areIterablesEqual(a, b, comparator) {\r\n var iterator1 = a[lang_1.getSymbolIterator()]();\r\n var iterator2 = b[lang_1.getSymbolIterator()]();\r\n while (true) {\r\n var item1 = iterator1.next();\r\n var item2 = iterator2.next();\r\n if (item1.done && item2.done)\r\n return true;\r\n if (item1.done || item2.done)\r\n return false;\r\n if (!comparator(item1.value, item2.value))\r\n return false;\r\n }\r\n}\r\nexports.areIterablesEqual = areIterablesEqual;\r\nfunction iterateListLike(obj, fn) {\r\n if (lang_1.isArray(obj)) {\r\n for (var i = 0; i < obj.length; i++) {\r\n fn(obj[i]);\r\n }\r\n }\r\n else {\r\n var iterator = obj[lang_1.getSymbolIterator()]();\r\n var item;\r\n while (!((item = iterator.next()).done)) {\r\n fn(item.value);\r\n }\r\n }\r\n}\r\nexports.iterateListLike = iterateListLike;\r\n// Safari and Internet Explorer do not support the iterable parameter to the\r\n// Set constructor. We work around that by manually adding the items.\r\nvar createSetFromList = (function () {\r\n var test = new exports.Set([1, 2, 3]);\r\n if (test.size === 3) {\r\n return function createSetFromList(lst) { return new exports.Set(lst); };\r\n }\r\n else {\r\n return function createSetAndPopulateFromList(lst) {\r\n var res = new exports.Set(lst);\r\n if (res.size !== lst.length) {\r\n for (var i = 0; i < lst.length; i++) {\r\n res.add(lst[i]);\r\n }\r\n }\r\n return res;\r\n };\r\n }\r\n})();\r\nvar SetWrapper = (function () {\r\n function SetWrapper() {\r\n }\r\n SetWrapper.createFromList = function (lst) { return createSetFromList(lst); };\r\n SetWrapper.has = function (s, key) { return s.has(key); };\r\n SetWrapper.delete = function (m, k) { m.delete(k); };\r\n return SetWrapper;\r\n}());\r\nexports.SetWrapper = SetWrapper;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBT08sMEJBQTBCLENBQUMsQ0FBQTtBQUV2QixXQUFHLEdBQUcsYUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNqQixXQUFHLEdBQUcsYUFBTSxDQUFDLEdBQUcsQ0FBQztBQUU1Qiw0RUFBNEU7QUFDNUUsc0VBQXNFO0FBQ3RFLElBQUksa0JBQWtCLEdBQW9DLENBQUM7SUFDekQsSUFBSSxDQUFDO1FBQ0gsRUFBRSxDQUFDLENBQUMsSUFBSSxXQUFHLENBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLDRCQUE0QixLQUFZLElBQW1CLE1BQU0sQ0FBQyxJQUFJLFdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBRTtJQUFBLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxDQUFDLHVDQUF1QyxLQUFZO1FBQ3hELElBQUksR0FBRyxHQUFHLElBQUksV0FBRyxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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QUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxjQUFHLEdBQVYsVUFBYyxDQUFTLEVBQUUsR0FBTSxJQUFhLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxpQkFBTSxHQUFiLFVBQWlCLENBQVMsRUFBRSxDQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsaUJBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQztBQUpZLGtCQUFVLGFBSXRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0pzT2JqZWN0LFxuICBnbG9iYWwsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgaXNBcnJheSxcbiAgZ2V0U3ltYm9sSXRlcmF0b3Jcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuZXhwb3J0IHZhciBNYXAgPSBnbG9iYWwuTWFwO1xuZXhwb3J0IHZhciBTZXQgPSBnbG9iYWwuU2V0O1xuXG4vLyBTYWZhcmkgYW5kIEludGVybmV0IEV4cGxvcmVyIGRvIG5vdCBzdXBwb3J0IHRoZSBpdGVyYWJsZSBwYXJhbWV0ZXIgdG8gdGhlXG4vLyBNYXAgY29uc3RydWN0b3IuICBXZSB3b3JrIGFyb3VuZCB0aGF0IGJ5IG1hbnVhbGx5IGFkZGluZyB0aGUgaXRlbXMuXG52YXIgY3JlYXRlTWFwRnJvbVBhaXJzOiB7KHBhaXJzOiBhbnlbXSk6IE1hcDxhbnksIGFueT59ID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIGlmIChuZXcgTWFwKDxhbnk+W1sxLCAyXV0pLnNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVNYXBGcm9tUGFpcnMocGFpcnM6IGFueVtdKTogTWFwPGFueSwgYW55PiB7IHJldHVybiBuZXcgTWFwKHBhaXJzKTsgfTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlTWFwQW5kUG9wdWxhdGVGcm9tUGFpcnMocGFpcnM6IGFueVtdKTogTWFwPGFueSwgYW55PiB7XG4gICAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGFpciA9IHBhaXJzW2ldO1xuICAgICAgbWFwLnNldChwYWlyWzBdLCBwYWlyWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcbn0pKCk7XG52YXIgY3JlYXRlTWFwRnJvbU1hcDogeyhtOiBNYXA8YW55LCBhbnk+KTogTWFwPGFueSwgYW55Pn0gPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgaWYgKG5ldyBNYXAoPGFueT5uZXcgTWFwKCkpKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlTWFwRnJvbU1hcChtOiBNYXA8YW55LCBhbnk+KTogTWFwPGFueSwgYW55PiB7IHJldHVybiBuZXcgTWFwKDxhbnk+bSk7IH07XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZU1hcEFuZFBvcHVsYXRlRnJvbU1hcChtOiBNYXA8YW55LCBhbnk+KTogTWFwPGFueSwgYW55PiB7XG4gICAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgICBtLmZvckVhY2goKHYsIGspID0+IHsgbWFwLnNldChrLCB2KTsgfSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcbn0pKCk7XG52YXIgX2NsZWFyVmFsdWVzOiB7KG06IE1hcDxhbnksIGFueT4pfSA9IChmdW5jdGlvbigpIHtcbiAgaWYgKCg8YW55PihuZXcgTWFwKCkpLmtleXMoKSkubmV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBfY2xlYXJWYWx1ZXMobTogTWFwPGFueSwgYW55Pikge1xuICAgICAgdmFyIGtleUl0ZXJhdG9yID0gbS5rZXlzKCk7XG4gICAgICB2YXIgaztcbiAgICAgIHdoaWxlICghKChrID0gKDxhbnk+a2V5SXRlcmF0b3IpLm5leHQoKSkuZG9uZSkpIHtcbiAgICAgICAgbS5zZXQoay52YWx1ZSwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gX2NsZWFyVmFsdWVzV2l0aEZvcmVFYWNoKG06IE1hcDxhbnksIGFueT4pIHtcbiAgICAgIG0uZm9yRWFjaCgodiwgaykgPT4geyBtLnNldChrLCBudWxsKTsgfSk7XG4gICAgfTtcbiAgfVxufSkoKTtcbi8vIFNhZmFyaSBkb2Vzbid0IGltcGxlbWVudCBNYXBJdGVyYXRvci5uZXh0KCksIHdoaWNoIGlzIHVzZWQgaXMgVHJhY2V1cidzIHBvbHlmaWxsIG9mIEFycmF5LmZyb21cbi8vIFRPRE8obWxhdmFsKTogcmVtb3ZlIHRoZSB3b3JrIGFyb3VuZCBvbmNlIHdlIGhhdmUgYSB3b3JraW5nIHBvbHlmaWxsIG9mIEFycmF5LmZyb21cbnZhciBfYXJyYXlGcm9tTWFwOiB7KG06IE1hcDxhbnksIGFueT4sIGdldFZhbHVlczogYm9vbGVhbik6IGFueVtdfSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICBpZiAoKDxhbnk+KG5ldyBNYXAoKSkudmFsdWVzKCkpLm5leHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NYXAobTogTWFwPGFueSwgYW55PiwgZ2V0VmFsdWVzOiBib29sZWFuKTogYW55W10ge1xuICAgICAgICByZXR1cm4gZ2V0VmFsdWVzID8gKDxhbnk+QXJyYXkpLmZyb20obS52YWx1ZXMoKSkgOiAoPGFueT5BcnJheSkuZnJvbShtLmtleXMoKSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NYXBXaXRoRm9yZWFjaChtOiBNYXA8YW55LCBhbnk+LCBnZXRWYWx1ZXM6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgdmFyIHJlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShtLnNpemUpLCBpID0gMDtcbiAgICBtLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgIHJlc1tpXSA9IGdldFZhbHVlcyA/IHYgOiBrO1xuICAgICAgaSsrO1xuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgY2xhc3MgTWFwV3JhcHBlciB7XG4gIHN0YXRpYyBjbG9uZTxLLCBWPihtOiBNYXA8SywgVj4pOiBNYXA8SywgVj4geyByZXR1cm4gY3JlYXRlTWFwRnJvbU1hcChtKTsgfVxuICBzdGF0aWMgY3JlYXRlRnJvbVN0cmluZ01hcDxUPihzdHJpbmdNYXA6IHtba2V5OiBzdHJpbmddOiBUfSk6IE1hcDxzdHJpbmcsIFQ+IHtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIFQ+KCk7XG4gICAgZm9yICh2YXIgcHJvcCBpbiBzdHJpbmdNYXApIHtcbiAgICAgIHJlc3VsdC5zZXQocHJvcCwgc3RyaW5nTWFwW3Byb3BdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBzdGF0aWMgdG9TdHJpbmdNYXA8VD4obTogTWFwPHN0cmluZywgVD4pOiB7W2tleTogc3RyaW5nXTogVH0ge1xuICAgIHZhciByOiB7W2tleTogc3RyaW5nXTogVH0gPSB7fTtcbiAgICBtLmZvckVhY2goKHYsIGspID0+IHJba10gPSB2KTtcbiAgICByZXR1cm4gcjtcbiAgfVxuICBzdGF0aWMgY3JlYXRlRnJvbVBhaXJzKHBhaXJzOiBhbnlbXSk6IE1hcDxhbnksIGFueT4geyByZXR1cm4gY3JlYXRlTWFwRnJvbVBhaXJzKHBhaXJzKTsgfVxuICBzdGF0aWMgY2xlYXJWYWx1ZXMobTogTWFwPGFueSwgYW55PikgeyBfY2xlYXJWYWx1ZXMobSk7IH1cbiAgc3RhdGljIGl0ZXJhYmxlPFQ+KG06IFQpOiBUIHsgcmV0dXJuIG07IH1cbiAgc3RhdGljIGtleXM8Sz4obTogTWFwPEssIGFueT4pOiBLW10geyByZXR1cm4gX2FycmF5RnJvbU1hcChtLCBmYWxzZSk7IH1cbiAgc3RhdGljIHZhbHVlczxWPihtOiBNYXA8YW55LCBWPik6IFZbXSB7IHJldHVybiBfYXJyYXlGcm9tTWFwKG0sIHRydWUpOyB9XG59XG5cbi8qKlxuICogV3JhcHMgSmF2YXNjcmlwdCBPYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJpbmdNYXBXcmFwcGVyIHtcbiAgc3RhdGljIGNyZWF0ZSgpOiB7W2s6IC8qYW55Ki8gc3RyaW5nXTogYW55fSB7XG4gICAgLy8gTm90ZTogV2UgYXJlIG5vdCB1c2luZyBPYmplY3QuY3JlYXRlKG51bGwpIGhlcmUgZHVlIHRvXG4gICAgLy8gcGVyZm9ybWFuY2UhXG4gICAgLy8gaHR0cDovL2pzcGVyZi5jb20vbmcyLW9iamVjdC1jcmVhdGUtbnVsbFxuICAgIHJldHVybiB7fTtcbiAgfVxuICBzdGF0aWMgY29udGFpbnMobWFwOiB7W2tleTogc3RyaW5nXTogYW55fSwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWFwLmhhc093blByb3BlcnR5KGtleSk7XG4gIH1cbiAgc3RhdGljIGdldDxWPihtYXA6IHtba2V5OiBzdHJpbmddOiBWfSwga2V5OiBzdHJpbmcpOiBWIHtcbiAgICByZXR1cm4gbWFwLmhhc093blByb3BlcnR5KGtleSkgPyBtYXBba2V5XSA6IHVuZGVmaW5lZDtcbiAgfVxuICBzdGF0aWMgc2V0PFY+KG1hcDoge1trZXk6IHN0cmluZ106IFZ9LCBrZXk6IHN0cmluZywgdmFsdWU6IFYpIHsgbWFwW2tleV0gPSB2YWx1ZTsgfVxuICBzdGF0aWMga2V5cyhtYXA6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogc3RyaW5nW10geyByZXR1cm4gT2JqZWN0LmtleXMobWFwKTsgfVxuICBzdGF0aWMgdmFsdWVzPFQ+KG1hcDoge1trZXk6IHN0cmluZ106IFR9KTogVFtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5yZWR1Y2UoKHIsIGEpID0+IHtcbiAgICAgIHIucHVzaChtYXBbYV0pO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSwgW10pO1xuICB9XG4gIHN0YXRpYyBpc0VtcHR5KG1hcDoge1trZXk6IHN0cmluZ106IGFueX0pOiBib29sZWFuIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIG1hcCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBzdGF0aWMgZGVsZXRlIChtYXA6IHtba2V5OiBzdHJpbmddOiBhbnl9LCBrZXk6IHN0cmluZykgeyBkZWxldGUgbWFwW2tleV07IH1cbiAgc3RhdGljIGZvckVhY2g8SywgVj4obWFwOiB7W2tleTogc3RyaW5nXTogVn0sIGNhbGxiYWNrOiAvKihWLCBLKSA9PiB2b2lkKi8gRnVuY3Rpb24pIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIG1hcCkge1xuICAgICAgaWYgKG1hcC5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICBjYWxsYmFjayhtYXBbcHJvcF0sIHByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtZXJnZTxWPihtMToge1trZXk6IHN0cmluZ106IFZ9LCBtMjoge1trZXk6IHN0cmluZ106IFZ9KToge1trZXk6IHN0cmluZ106IFZ9IHtcbiAgICB2YXIgbToge1trZXk6IHN0cmluZ106IFZ9ID0ge307XG5cbiAgICBmb3IgKHZhciBhdHRyIGluIG0xKSB7XG4gICAgICBpZiAobTEuaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgbVthdHRyXSA9IG0xW2F0dHJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGF0dHIgaW4gbTIpIHtcbiAgICAgIGlmIChtMi5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgICBtW2F0dHJdID0gbTJbYXR0cl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG07XG4gIH1cblxuICBzdGF0aWMgZXF1YWxzPFY+KG0xOiB7W2tleTogc3RyaW5nXTogVn0sIG0yOiB7W2tleTogc3RyaW5nXTogVn0pOiBib29sZWFuIHtcbiAgICB2YXIgazEgPSBPYmplY3Qua2V5cyhtMSk7XG4gICAgdmFyIGsyID0gT2JqZWN0LmtleXMobTIpO1xuICAgIGlmIChrMS5sZW5ndGggIT0gazIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBrZXk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrMS5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gazFbaV07XG4gICAgICBpZiAobTFba2V5XSAhPT0gbTJba2V5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQSBib29sZWFuLXZhbHVlZCBmdW5jdGlvbiBvdmVyIGEgdmFsdWUsIHBvc3NpYmx5IGluY2x1ZGluZyBjb250ZXh0IGluZm9ybWF0aW9uXG4gKiByZWdhcmRpbmcgdGhhdCB2YWx1ZSdzIHBvc2l0aW9uIGluIGFuIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY2F0ZTxUPiB7ICh2YWx1ZTogVCwgaW5kZXg/OiBudW1iZXIsIGFycmF5PzogVFtdKTogYm9vbGVhbjsgfVxuXG5leHBvcnQgY2xhc3MgTGlzdFdyYXBwZXIge1xuICAvLyBKUyBoYXMgbm8gd2F5IHRvIGV4cHJlc3MgYSBzdGF0aWNhbGx5IGZpeGVkIHNpemUgbGlzdCwgYnV0IGRhcnQgZG9lcyBzbyB3ZVxuICAvLyBrZWVwIGJvdGggbWV0aG9kcy5cbiAgc3RhdGljIGNyZWF0ZUZpeGVkU2l6ZShzaXplOiBudW1iZXIpOiBhbnlbXSB7IHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7IH1cbiAgc3RhdGljIGNyZWF0ZUdyb3dhYmxlU2l6ZShzaXplOiBudW1iZXIpOiBhbnlbXSB7IHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7IH1cbiAgc3RhdGljIGNsb25lPFQ+KGFycmF5OiBUW10pOiBUW10geyByZXR1cm4gYXJyYXkuc2xpY2UoMCk7IH1cbiAgc3RhdGljIGZvckVhY2hXaXRoSW5kZXg8VD4oYXJyYXk6IFRbXSwgZm46ICh0OiBULCBuOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBmbihhcnJheVtpXSwgaSk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyBmaXJzdDxUPihhcnJheTogVFtdKTogVCB7XG4gICAgaWYgKCFhcnJheSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGFycmF5WzBdO1xuICB9XG4gIHN0YXRpYyBsYXN0PFQ+KGFycmF5OiBUW10pOiBUIHtcbiAgICBpZiAoIWFycmF5IHx8IGFycmF5Lmxlbmd0aCA9PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG4gIH1cbiAgc3RhdGljIGluZGV4T2Y8VD4oYXJyYXk6IFRbXSwgdmFsdWU6IFQsIHN0YXJ0SW5kZXg6IG51bWJlciA9IDApOiBudW1iZXIge1xuICAgIHJldHVybiBhcnJheS5pbmRleE9mKHZhbHVlLCBzdGFydEluZGV4KTtcbiAgfVxuICBzdGF0aWMgY29udGFpbnM8VD4obGlzdDogVFtdLCBlbDogVCk6IGJvb2xlYW4geyByZXR1cm4gbGlzdC5pbmRleE9mKGVsKSAhPT0gLTE7IH1cbiAgc3RhdGljIHJldmVyc2VkPFQ+KGFycmF5OiBUW10pOiBUW10ge1xuICAgIHZhciBhID0gTGlzdFdyYXBwZXIuY2xvbmUoYXJyYXkpO1xuICAgIHJldHVybiBhLnJldmVyc2UoKTtcbiAgfVxuICBzdGF0aWMgY29uY2F0KGE6IGFueVtdLCBiOiBhbnlbXSk6IGFueVtdIHsgcmV0dXJuIGEuY29uY2F0KGIpOyB9XG4gIHN0YXRpYyBpbnNlcnQ8VD4obGlzdDogVFtdLCBpbmRleDogbnVtYmVyLCB2YWx1ZTogVCkgeyBsaXN0LnNwbGljZShpbmRleCwgMCwgdmFsdWUpOyB9XG4gIHN0YXRpYyByZW1vdmVBdDxUPihsaXN0OiBUW10sIGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICB2YXIgcmVzID0gbGlzdFtpbmRleF07XG4gICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgc3RhdGljIHJlbW92ZUFsbDxUPihsaXN0OiBUW10sIGl0ZW1zOiBUW10pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YoaXRlbXNbaV0pO1xuICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuICBzdGF0aWMgcmVtb3ZlPFQ+KGxpc3Q6IFRbXSwgZWw6IFQpOiBib29sZWFuIHtcbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YoZWwpO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YXRpYyBjbGVhcihsaXN0OiBhbnlbXSkgeyBsaXN0Lmxlbmd0aCA9IDA7IH1cbiAgc3RhdGljIGlzRW1wdHkobGlzdDogYW55W10pOiBib29sZWFuIHsgcmV0dXJuIGxpc3QubGVuZ3RoID09IDA7IH1cbiAgc3RhdGljIGZpbGwobGlzdDogYW55W10sIHZhbHVlOiBhbnksIHN0YXJ0OiBudW1iZXIgPSAwLCBlbmQ6IG51bWJlciA9IG51bGwpIHtcbiAgICBsaXN0LmZpbGwodmFsdWUsIHN0YXJ0LCBlbmQgPT09IG51bGwgPyBsaXN0Lmxlbmd0aCA6IGVuZCk7XG4gIH1cbiAgc3RhdGljIGVxdWFscyhhOiBhbnlbXSwgYjogYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHN0YXRpYyBzbGljZTxUPihsOiBUW10sIGZyb206IG51bWJlciA9IDAsIHRvOiBudW1iZXIgPSBudWxsKTogVFtdIHtcbiAgICByZXR1cm4gbC5zbGljZShmcm9tLCB0byA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHRvKTtcbiAgfVxuICBzdGF0aWMgc3BsaWNlPFQ+KGw6IFRbXSwgZnJvbTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IFRbXSB7IHJldHVybiBsLnNwbGljZShmcm9tLCBsZW5ndGgpOyB9XG4gIHN0YXRpYyBzb3J0PFQ+KGw6IFRbXSwgY29tcGFyZUZuPzogKGE6IFQsIGI6IFQpID0+IG51bWJlcikge1xuICAgIGlmIChpc1ByZXNlbnQoY29tcGFyZUZuKSkge1xuICAgICAgbC5zb3J0KGNvbXBhcmVGbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGwuc29ydCgpO1xuICAgIH1cbiAgfVxuICBzdGF0aWMgdG9TdHJpbmc8VD4obDogVFtdKTogc3RyaW5nIHsgcmV0dXJuIGwudG9TdHJpbmcoKTsgfVxuICBzdGF0aWMgdG9KU09OPFQ+KGw6IFRbXSk6IHN0cmluZyB7IHJldHVybiBKU09OLnN0cmluZ2lmeShsKTsgfVxuXG4gIHN0YXRpYyBtYXhpbXVtPFQ+KGxpc3Q6IFRbXSwgcHJlZGljYXRlOiAodDogVCkgPT4gbnVtYmVyKTogVCB7XG4gICAgaWYgKGxpc3QubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgc29sdXRpb24gPSBudWxsO1xuICAgIHZhciBtYXhWYWx1ZSA9IC1JbmZpbml0eTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBsaXN0W2luZGV4XTtcbiAgICAgIGlmIChpc0JsYW5rKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgY2FuZGlkYXRlVmFsdWUgPSBwcmVkaWNhdGUoY2FuZGlkYXRlKTtcbiAgICAgIGlmIChjYW5kaWRhdGVWYWx1ZSA+IG1heFZhbHVlKSB7XG4gICAgICAgIHNvbHV0aW9uID0gY2FuZGlkYXRlO1xuICAgICAgICBtYXhWYWx1ZSA9IGNhbmRpZGF0ZVZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc29sdXRpb247XG4gIH1cblxuICBzdGF0aWMgZmxhdHRlbjxUPihsaXN0OiBBcnJheTxUIHwgVFtdPik6IFRbXSB7XG4gICAgdmFyIHRhcmdldCA9IFtdO1xuICAgIF9mbGF0dGVuQXJyYXkobGlzdCwgdGFyZ2V0KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgc3RhdGljIGFkZEFsbDxUPihsaXN0OiBBcnJheTxUPiwgc291cmNlOiBBcnJheTxUPik6IHZvaWQge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsaXN0LnB1c2goc291cmNlW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX2ZsYXR0ZW5BcnJheShzb3VyY2U6IGFueVtdLCB0YXJnZXQ6IGFueVtdKTogYW55W10ge1xuICBpZiAoaXNQcmVzZW50KHNvdXJjZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBzb3VyY2VbaV07XG4gICAgICBpZiAoaXNBcnJheShpdGVtKSkge1xuICAgICAgICBfZmxhdHRlbkFycmF5KGl0ZW0sIHRhcmdldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaXN0TGlrZUl0ZXJhYmxlKG9iajogYW55KTogYm9vbGVhbiB7XG4gIGlmICghaXNKc09iamVjdChvYmopKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBpc0FycmF5KG9iaikgfHxcbiAgICAgICAgICghKG9iaiBpbnN0YW5jZW9mIE1hcCkgJiYgICAgICAvLyBKUyBNYXAgYXJlIGl0ZXJhYmxlcyBidXQgcmV0dXJuIGVudHJpZXMgYXMgW2ssIHZdXG4gICAgICAgICAgZ2V0U3ltYm9sSXRlcmF0b3IoKSBpbiBvYmopOyAgLy8gSlMgSXRlcmFibGUgaGF2ZSBhIFN5bWJvbC5pdGVyYXRvciBwcm9wXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmVJdGVyYWJsZXNFcXVhbChhOiBhbnksIGI6IGFueSwgY29tcGFyYXRvcjogRnVuY3Rpb24pOiBib29sZWFuIHtcbiAgdmFyIGl0ZXJhdG9yMSA9IGFbZ2V0U3ltYm9sSXRlcmF0b3IoKV0oKTtcbiAgdmFyIGl0ZXJhdG9yMiA9IGJbZ2V0U3ltYm9sSXRlcmF0b3IoKV0oKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGxldCBpdGVtMSA9IGl0ZXJhdG9yMS5uZXh0KCk7XG4gICAgbGV0IGl0ZW0yID0gaXRlcmF0b3IyLm5leHQoKTtcbiAgICBpZiAoaXRlbTEuZG9uZSAmJiBpdGVtMi5kb25lKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoaXRlbTEuZG9uZSB8fCBpdGVtMi5kb25lKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFjb21wYXJhdG9yKGl0ZW0xLnZhbHVlLCBpdGVtMi52YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXRlcmF0ZUxpc3RMaWtlKG9iajogYW55LCBmbjogRnVuY3Rpb24pIHtcbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmbihvYmpbaV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgaXRlcmF0b3IgPSBvYmpbZ2V0U3ltYm9sSXRlcmF0b3IoKV0oKTtcbiAgICB2YXIgaXRlbTtcbiAgICB3aGlsZSAoISgoaXRlbSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkpIHtcbiAgICAgIGZuKGl0ZW0udmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBTYWZhcmkgYW5kIEludGVybmV0IEV4cGxvcmVyIGRvIG5vdCBzdXBwb3J0IHRoZSBpdGVyYWJsZSBwYXJhbWV0ZXIgdG8gdGhlXG4vLyBTZXQgY29uc3RydWN0b3IuICBXZSB3b3JrIGFyb3VuZCB0aGF0IGJ5IG1hbnVhbGx5IGFkZGluZyB0aGUgaXRlbXMuXG52YXIgY3JlYXRlU2V0RnJvbUxpc3Q6IHsobHN0OiBhbnlbXSk6IFNldDxhbnk+fSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHRlc3QgPSBuZXcgU2V0KFsxLCAyLCAzXSk7XG4gIGlmICh0ZXN0LnNpemUgPT09IDMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlU2V0RnJvbUxpc3QobHN0OiBhbnlbXSk6IFNldDxhbnk+IHsgcmV0dXJuIG5ldyBTZXQobHN0KTsgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlU2V0QW5kUG9wdWxhdGVGcm9tTGlzdChsc3Q6IGFueVtdKTogU2V0PGFueT4ge1xuICAgICAgdmFyIHJlcyA9IG5ldyBTZXQobHN0KTtcbiAgICAgIGlmIChyZXMuc2l6ZSAhPT0gbHN0Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHJlcy5hZGQobHN0W2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICB9XG59KSgpO1xuZXhwb3J0IGNsYXNzIFNldFdyYXBwZXIge1xuICBzdGF0aWMgY3JlYXRlRnJvbUxpc3Q8VD4obHN0OiBUW10pOiBTZXQ8VD4geyByZXR1cm4gY3JlYXRlU2V0RnJvbUxpc3QobHN0KTsgfVxuICBzdGF0aWMgaGFzPFQ+KHM6IFNldDxUPiwga2V5OiBUKTogYm9vbGVhbiB7IHJldHVybiBzLmhhcyhrZXkpOyB9XG4gIHN0YXRpYyBkZWxldGU8Sz4obTogU2V0PEs+LCBrOiBLKSB7IG0uZGVsZXRlKGspOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar _WHEN_DEFAULT = lang_1.CONST_EXPR(new Object());\r\nvar SwitchView = (function () {\r\n function SwitchView(_viewContainerRef, _templateRef) {\r\n this._viewContainerRef = _viewContainerRef;\r\n this._templateRef = _templateRef;\r\n }\r\n SwitchView.prototype.create = function () { this._viewContainerRef.createEmbeddedView(this._templateRef); };\r\n SwitchView.prototype.destroy = function () { this._viewContainerRef.clear(); };\r\n return SwitchView;\r\n}());\r\nexports.SwitchView = SwitchView;\r\n/**\r\n * Adds or removes DOM sub-trees when their match expressions match the switch expression.\r\n *\r\n * Elements within `NgSwitch` but without `NgSwitchWhen` or `NgSwitchDefault` directives will be\r\n * preserved at the location as specified in the template.\r\n *\r\n * `NgSwitch` simply inserts nested elements based on which match expression matches the value\r\n * obtained from the evaluated switch expression. In other words, you define a container element\r\n * (where you place the directive with a switch expression on the\r\n * `[ngSwitch]=\"...\"` attribute), define any inner elements inside of the directive and\r\n * place a `[ngSwitchWhen]` attribute per element.\r\n *\r\n * The `ngSwitchWhen` property is used to inform `NgSwitch` which element to display when the\r\n * expression is evaluated. If a matching expression is not found via a `ngSwitchWhen` property\r\n * then an element with the `ngSwitchDefault` attribute is displayed.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/DQMTII95CbuqWrl3lYAs?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <p>Value = {{value}}</p>\r\n * <button (click)=\"inc()\">Increment</button>\r\n *\r\n * <div [ngSwitch]=\"value\">\r\n * <p *ngSwitchWhen=\"'init'\">increment to start</p>\r\n * <p *ngSwitchWhen=\"0\">0, increment again</p>\r\n * <p *ngSwitchWhen=\"1\">1, increment again</p>\r\n * <p *ngSwitchWhen=\"2\">2, stop incrementing</p>\r\n * <p *ngSwitchDefault>> 2, STOP!</p>\r\n * </div>\r\n *\r\n * <!-- alternate syntax -->\r\n *\r\n * <p [ngSwitch]=\"value\">\r\n * <template ngSwitchWhen=\"init\">increment to start</template>\r\n * <template [ngSwitchWhen]=\"0\">0, increment again</template>\r\n * <template [ngSwitchWhen]=\"1\">1, increment again</template>\r\n * <template [ngSwitchWhen]=\"2\">2, stop incrementing</template>\r\n * <template ngSwitchDefault>> 2, STOP!</template>\r\n * </p>\r\n * `,\r\n * directives: [NgSwitch, NgSwitchWhen, NgSwitchDefault]\r\n * })\r\n * export class App {\r\n * value = 'init';\r\n *\r\n * inc() {\r\n * this.value = this.value === 'init' ? 0 : this.value + 1;\r\n * }\r\n * }\r\n *\r\n * bootstrap(App).catch(err => console.error(err));\r\n * ```\r\n */\r\nvar NgSwitch = (function () {\r\n function NgSwitch() {\r\n this._useDefault = false;\r\n this._valueViews = new collection_1.Map();\r\n this._activeViews = [];\r\n }\r\n Object.defineProperty(NgSwitch.prototype, \"ngSwitch\", {\r\n set: function (value) {\r\n // Empty the currently active ViewContainers\r\n this._emptyAllActiveViews();\r\n // Add the ViewContainers matching the value (with a fallback to default)\r\n this._useDefault = false;\r\n var views = this._valueViews.get(value);\r\n if (lang_1.isBlank(views)) {\r\n this._useDefault = true;\r\n views = lang_1.normalizeBlank(this._valueViews.get(_WHEN_DEFAULT));\r\n }\r\n this._activateViews(views);\r\n this._switchValue = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n NgSwitch.prototype._onWhenValueChanged = function (oldWhen, newWhen, view) {\r\n this._deregisterView(oldWhen, view);\r\n this._registerView(newWhen, view);\r\n if (oldWhen === this._switchValue) {\r\n view.destroy();\r\n collection_1.ListWrapper.remove(this._activeViews, view);\r\n }\r\n else if (newWhen === this._switchValue) {\r\n if (this._useDefault) {\r\n this._useDefault = false;\r\n this._emptyAllActiveViews();\r\n }\r\n view.create();\r\n this._activeViews.push(view);\r\n }\r\n // Switch to default when there is no more active ViewContainers\r\n if (this._activeViews.length === 0 && !this._useDefault) {\r\n this._useDefault = true;\r\n this._activateViews(this._valueViews.get(_WHEN_DEFAULT));\r\n }\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._emptyAllActiveViews = function () {\r\n var activeContainers = this._activeViews;\r\n for (var i = 0; i < activeContainers.length; i++) {\r\n activeContainers[i].destroy();\r\n }\r\n this._activeViews = [];\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._activateViews = function (views) {\r\n // TODO(vicb): assert(this._activeViews.length === 0);\r\n if (lang_1.isPresent(views)) {\r\n for (var i = 0; i < views.length; i++) {\r\n views[i].create();\r\n }\r\n this._activeViews = views;\r\n }\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._registerView = function (value, view) {\r\n var views = this._valueViews.get(value);\r\n if (lang_1.isBlank(views)) {\r\n views = [];\r\n this._valueViews.set(value, views);\r\n }\r\n views.push(view);\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._deregisterView = function (value, view) {\r\n // `_WHEN_DEFAULT` is used a marker for non-registered whens\r\n if (value === _WHEN_DEFAULT)\r\n return;\r\n var views = this._valueViews.get(value);\r\n if (views.length == 1) {\r\n this._valueViews.delete(value);\r\n }\r\n else {\r\n collection_1.ListWrapper.remove(views, view);\r\n }\r\n };\r\n NgSwitch = __decorate([\r\n core_1.Directive({ selector: '[ngSwitch]', inputs: ['ngSwitch'] }), \r\n __metadata('design:paramtypes', [])\r\n ], NgSwitch);\r\n return NgSwitch;\r\n}());\r\nexports.NgSwitch = NgSwitch;\r\n/**\r\n * Insert the sub-tree when the `ngSwitchWhen` expression evaluates to the same value as the\r\n * enclosing switch expression.\r\n *\r\n * If multiple match expression match the switch expression value, all of them are displayed.\r\n *\r\n * See {@link NgSwitch} for more details and example.\r\n */\r\nvar NgSwitchWhen = (function () {\r\n function NgSwitchWhen(viewContainer, templateRef, ngSwitch) {\r\n // `_WHEN_DEFAULT` is used as a marker for a not yet initialized value\r\n /** @internal */\r\n this._value = _WHEN_DEFAULT;\r\n this._switch = ngSwitch;\r\n this._view = new SwitchView(viewContainer, templateRef);\r\n }\r\n Object.defineProperty(NgSwitchWhen.prototype, \"ngSwitchWhen\", {\r\n set: function (value) {\r\n this._switch._onWhenValueChanged(this._value, value, this._view);\r\n this._value = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgSwitchWhen = __decorate([\r\n core_1.Directive({ selector: '[ngSwitchWhen]', inputs: ['ngSwitchWhen'] }),\r\n __param(2, core_1.Host()), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, NgSwitch])\r\n ], NgSwitchWhen);\r\n return NgSwitchWhen;\r\n}());\r\nexports.NgSwitchWhen = NgSwitchWhen;\r\n/**\r\n * Default case statements are displayed when no match expression matches the switch expression\r\n * value.\r\n *\r\n * See {@link NgSwitch} for more details and example.\r\n */\r\nvar NgSwitchDefault = (function () {\r\n function NgSwitchDefault(viewContainer, templateRef, sswitch) {\r\n sswitch._registerView(_WHEN_DEFAULT, new SwitchView(viewContainer, templateRef));\r\n }\r\n NgSwitchDefault = __decorate([\r\n core_1.Directive({ selector: '[ngSwitchDefault]' }),\r\n __param(2, core_1.Host()), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, NgSwitch])\r\n ], NgSwitchDefault);\r\n return NgSwitchDefault;\r\n}());\r\nexports.NgSwitchDefault = NgSwitchDefault;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfc3dpdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX3N3aXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEscUJBQTZELGVBQWUsQ0FBQyxDQUFBO0FBQzdFLHFCQUE2RCwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3hGLDJCQUErQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRWhFLElBQU0sYUFBYSxHQUFHLGlCQUFVLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRS9DO0lBQ0Usb0JBQW9CLGlCQUFtQyxFQUFVLFlBQXlCO1FBQXRFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtJQUFHLENBQUM7SUFFOUYsMkJBQU0sR0FBTixjQUFpQixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRiw0QkFBTyxHQUFQLGNBQWtCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsaUJBQUM7QUFBRCxDQUFDLEFBTkQsSUFNQztBQU5ZLGtCQUFVLGFBTXRCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVERztBQUVIO0lBQUE7UUFFVSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixnQkFBVyxHQUFHLElBQUksZ0JBQUcsRUFBcUIsQ0FBQztRQUMzQyxpQkFBWSxHQUFpQixFQUFFLENBQUM7SUFtRjFDLENBQUM7SUFqRkMsc0JBQUksOEJBQVE7YUFBWixVQUFhLEtBQVU7WUFDckIsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxv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Y2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSG9zdCwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIG5vcm1hbGl6ZUJsYW5rLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgTWFwfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5jb25zdCBfV0hFTl9ERUZBVUxUID0gQ09OU1RfRVhQUihuZXcgT2JqZWN0KCkpO1xuXG5leHBvcnQgY2xhc3MgU3dpdGNoVmlldyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgX3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZikge31cblxuICBjcmVhdGUoKTogdm9pZCB7IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKTsgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKTsgfVxufVxuXG4vKipcbiAqIEFkZHMgb3IgcmVtb3ZlcyBET00gc3ViLXRyZWVzIHdoZW4gdGhlaXIgbWF0Y2ggZXhwcmVzc2lvbnMgbWF0Y2ggdGhlIHN3aXRjaCBleHByZXNzaW9uLlxuICpcbiAqIEVsZW1lbnRzIHdpdGhpbiBgTmdTd2l0Y2hgIGJ1dCB3aXRob3V0IGBOZ1N3aXRjaFdoZW5gIG9yIGBOZ1N3aXRjaERlZmF1bHRgIGRpcmVjdGl2ZXMgd2lsbCBiZVxuICogcHJlc2VydmVkIGF0IHRoZSBsb2NhdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIGBOZ1N3aXRjaGAgc2ltcGx5IGluc2VydHMgbmVzdGVkIGVsZW1lbnRzIGJhc2VkIG9uIHdoaWNoIG1hdGNoIGV4cHJlc3Npb24gbWF0Y2hlcyB0aGUgdmFsdWVcbiAqIG9idGFpbmVkIGZyb20gdGhlIGV2YWx1YXRlZCBzd2l0Y2ggZXhwcmVzc2lvbi4gSW4gb3RoZXIgd29yZHMsIHlvdSBkZWZpbmUgYSBjb250YWluZXIgZWxlbWVudFxuICogKHdoZXJlIHlvdSBwbGFjZSB0aGUgZGlyZWN0aXZlIHdpdGggYSBzd2l0Y2ggZXhwcmVzc2lvbiBvbiB0aGVcbiAqIGBbbmdTd2l0Y2hdPVwiLi4uXCJgIGF0dHJpYnV0ZSksIGRlZmluZSBhbnkgaW5uZXIgZWxlbWVudHMgaW5zaWRlIG9mIHRoZSBkaXJlY3RpdmUgYW5kXG4gKiBwbGFjZSBhIGBbbmdTd2l0Y2hXaGVuXWAgYXR0cmlidXRlIHBlciBlbGVtZW50LlxuICpcbiAqIFRoZSBgbmdTd2l0Y2hXaGVuYCBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZm9ybSBgTmdTd2l0Y2hgIHdoaWNoIGVsZW1lbnQgdG8gZGlzcGxheSB3aGVuIHRoZVxuICogZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuIElmIGEgbWF0Y2hpbmcgZXhwcmVzc2lvbiBpcyBub3QgZm91bmQgdmlhIGEgYG5nU3dpdGNoV2hlbmAgcHJvcGVydHlcbiAqIHRoZW4gYW4gZWxlbWVudCB3aXRoIHRoZSBgbmdTd2l0Y2hEZWZhdWx0YCBhdHRyaWJ1dGUgaXMgZGlzcGxheWVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9EUU1USUk5NUNidXFXcmwzbFlBcz9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPHA+VmFsdWUgPSB7e3ZhbHVlfX08L3A+XG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaW5jKClcIj5JbmNyZW1lbnQ8L2J1dHRvbj5cbiAqXG4gKiAgICAgPGRpdiBbbmdTd2l0Y2hdPVwidmFsdWVcIj5cbiAqICAgICAgIDxwICpuZ1N3aXRjaFdoZW49XCInaW5pdCdcIj5pbmNyZW1lbnQgdG8gc3RhcnQ8L3A+XG4gKiAgICAgICA8cCAqbmdTd2l0Y2hXaGVuPVwiMFwiPjAsIGluY3JlbWVudCBhZ2FpbjwvcD5cbiAqICAgICAgIDxwICpuZ1N3aXRjaFdoZW49XCIxXCI+MSwgaW5jcmVtZW50IGFnYWluPC9wPlxuICogICAgICAgPHAgKm5nU3dpdGNoV2hlbj1cIjJcIj4yLCBzdG9wIGluY3JlbWVudGluZzwvcD5cbiAqICAgICAgIDxwICpuZ1N3aXRjaERlZmF1bHQ+Jmd0OyAyLCBTVE9QITwvcD5cbiAqICAgICA8L2Rpdj5cbiAqXG4gKiAgICAgPCEtLSBhbHRlcm5hdGUgc3ludGF4IC0tPlxuICpcbiAqICAgICA8cCBbbmdTd2l0Y2hdPVwidmFsdWVcIj5cbiAqICAgICAgIDx0ZW1wbGF0ZSBuZ1N3aXRjaFdoZW49XCJpbml0XCI+aW5jcmVtZW50IHRvIHN0YXJ0PC90ZW1wbGF0ZT5cbiAqICAgICAgIDx0ZW1wbGF0ZSBbbmdTd2l0Y2hXaGVuXT1cIjBcIj4wLCBpbmNyZW1lbnQgYWdhaW48L3RlbXBsYXRlPlxuICogICAgICAgPHRlbXBsYXRlIFtuZ1N3aXRjaFdoZW5dPVwiMVwiPjEsIGluY3JlbWVudCBhZ2FpbjwvdGVtcGxhdGU+XG4gKiAgICAgICA8dGVtcGxhdGUgW25nU3dpdGNoV2hlbl09XCIyXCI+Miwgc3RvcCBpbmNyZW1lbnRpbmc8L3RlbXBsYXRlPlxuICogICAgICAgPHRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD4mZ3Q7IDIsIFNUT1AhPC90ZW1wbGF0ZT5cbiAqICAgICA8L3A+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIHZhbHVlID0gJ2luaXQnO1xuICpcbiAqICAgaW5jKCkge1xuICogICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID09PSAnaW5pdCcgPyAwIDogdGhpcy52YWx1ZSArIDE7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ1N3aXRjaF0nLCBpbnB1dHM6IFsnbmdTd2l0Y2gnXX0pXG5leHBvcnQgY2xhc3MgTmdTd2l0Y2gge1xuICBwcml2YXRlIF9zd2l0Y2hWYWx1ZTogYW55O1xuICBwcml2YXRlIF91c2VEZWZhdWx0OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlVmlld3MgPSBuZXcgTWFwPGFueSwgU3dpdGNoVmlld1tdPigpO1xuICBwcml2YXRlIF9hY3RpdmVWaWV3czogU3dpdGNoVmlld1tdID0gW107XG5cbiAgc2V0IG5nU3dpdGNoKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBFbXB0eSB0aGUgY3VycmVudGx5IGFjdGl2ZSBWaWV3Q29udGFpbmVyc1xuICAgIHRoaXMuX2VtcHR5QWxsQWN0aXZlVmlld3MoKTtcblxuICAgIC8vIEFkZCB0aGUgVmlld0NvbnRhaW5lcnMgbWF0Y2hpbmcgdGhlIHZhbHVlICh3aXRoIGEgZmFsbGJhY2sgdG8gZGVmYXVsdClcbiAgICB0aGlzLl91c2VEZWZhdWx0ID0gZmFsc2U7XG4gICAgdmFyIHZpZXdzID0gdGhpcy5fdmFsdWVWaWV3cy5nZXQodmFsdWUpO1xuICAgIGlmIChpc0JsYW5rKHZpZXdzKSkge1xuICAgICAgdGhpcy5fdXNlRGVmYXVsdCA9IHRydWU7XG4gICAgICB2aWV3cyA9IG5vcm1hbGl6ZUJsYW5rKHRoaXMuX3ZhbHVlVmlld3MuZ2V0KF9XSEVOX0RFRkFVTFQpKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZhdGVWaWV3cyh2aWV3cyk7XG5cbiAgICB0aGlzLl9zd2l0Y2hWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfb25XaGVuVmFsdWVDaGFuZ2VkKG9sZFdoZW46IGFueSwgbmV3V2hlbjogYW55LCB2aWV3OiBTd2l0Y2hWaWV3KTogdm9pZCB7XG4gICAgdGhpcy5fZGVyZWdpc3RlclZpZXcob2xkV2hlbiwgdmlldyk7XG4gICAgdGhpcy5fcmVnaXN0ZXJWaWV3KG5ld1doZW4sIHZpZXcpO1xuXG4gICAgaWYgKG9sZFdoZW4gPT09IHRoaXMuX3N3aXRjaFZhbHVlKSB7XG4gICAgICB2aWV3LmRlc3Ryb3koKTtcbiAgICAgIExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLl9hY3RpdmVWaWV3cywgdmlldyk7XG4gICAgfSBlbHNlIGlmIChuZXdXaGVuID09PSB0aGlzLl9zd2l0Y2hWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuX3VzZURlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5fdXNlRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9lbXB0eUFsbEFjdGl2ZVZpZXdzKCk7XG4gICAgICB9XG4gICAgICB2aWV3LmNyZWF0ZSgpO1xuICAgICAgdGhpcy5fYWN0aXZlVmlld3MucHVzaCh2aWV3KTtcbiAgICB9XG5cbiAgICAvLyBTd2l0Y2ggdG8gZGVmYXVsdCB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgYWN0aXZlIFZpZXdDb250YWluZXJzXG4gICAgaWYgKHRoaXMuX2FjdGl2ZVZpZXdzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5fdXNlRGVmYXVsdCkge1xuICAgICAgdGhpcy5fdXNlRGVmYXVsdCA9IHRydWU7XG4gICAgICB0aGlzLl9hY3RpdmF0ZVZpZXdzKHRoaXMuX3ZhbHVlVmlld3MuZ2V0KF9XSEVOX0RFRkFVTFQpKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9lbXB0eUFsbEFjdGl2ZVZpZXdzKCk6IHZvaWQge1xuICAgIHZhciBhY3RpdmVDb250YWluZXJzID0gdGhpcy5fYWN0aXZlVmlld3M7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3RpdmVDb250YWluZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhY3RpdmVDb250YWluZXJzW2ldLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlVmlld3MgPSBbXTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FjdGl2YXRlVmlld3Modmlld3M6IFN3aXRjaFZpZXdbXSk6IHZvaWQge1xuICAgIC8vIFRPRE8odmljYik6IGFzc2VydCh0aGlzLl9hY3RpdmVWaWV3cy5sZW5ndGggPT09IDApO1xuICAgIGlmIChpc1ByZXNlbnQodmlld3MpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZpZXdzW2ldLmNyZWF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fYWN0aXZlVmlld3MgPSB2aWV3cztcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZWdpc3RlclZpZXcodmFsdWU6IGFueSwgdmlldzogU3dpdGNoVmlldyk6IHZvaWQge1xuICAgIHZhciB2aWV3cyA9IHRoaXMuX3ZhbHVlVmlld3MuZ2V0KHZhbHVlKTtcbiAgICBpZiAoaXNCbGFuayh2aWV3cykpIHtcbiAgICAgIHZpZXdzID0gW107XG4gICAgICB0aGlzLl92YWx1ZVZpZXdzLnNldCh2YWx1ZSwgdmlld3MpO1xuICAgIH1cbiAgICB2aWV3cy5wdXNoKHZpZXcpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZGVyZWdpc3RlclZpZXcodmFsdWU6IGFueSwgdmlldzogU3dpdGNoVmlldyk6IHZvaWQge1xuICAgIC8vIGBfV0hFTl9ERUZBVUxUYCBpcyB1c2VkIGEgbWFya2VyIGZvciBub24tcmVnaXN0ZXJlZCB3aGVuc1xuICAgIGlmICh2YWx1ZSA9PT0gX1dIRU5fREVGQVVMVCkgcmV0dXJuO1xuICAgIHZhciB2aWV3cyA9IHRoaXMuX3ZhbHVlVmlld3MuZ2V0KHZhbHVlKTtcbiAgICBpZiAodmlld3MubGVuZ3RoID09IDEpIHtcbiAgICAgIHRoaXMuX3ZhbHVlVmlld3MuZGVsZXRlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdFdyYXBwZXIucmVtb3ZlKHZpZXdzLCB2aWV3KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnNlcnQgdGhlIHN1Yi10cmVlIHdoZW4gdGhlIGBuZ1N3aXRjaFdoZW5gIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZVxuICogZW5jbG9zaW5nIHN3aXRjaCBleHByZXNzaW9uLlxuICpcbiAqIElmIG11bHRpcGxlIG1hdGNoIGV4cHJlc3Npb24gbWF0Y2ggdGhlIHN3aXRjaCBleHByZXNzaW9uIHZhbHVlLCBhbGwgb2YgdGhlbSBhcmUgZGlzcGxheWVkLlxuICpcbiAqIFNlZSB7QGxpbmsgTmdTd2l0Y2h9IGZvciBtb3JlIGRldGFpbHMgYW5kIGV4YW1wbGUuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nU3dpdGNoV2hlbl0nLCBpbnB1dHM6IFsnbmdTd2l0Y2hXaGVuJ119KVxuZXhwb3J0IGNsYXNzIE5nU3dpdGNoV2hlbiB7XG4gIC8vIGBfV0hFTl9ERUZBVUxUYCBpcyB1c2VkIGFzIGEgbWFya2VyIGZvciBhIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgdmFsdWVcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdmFsdWU6IGFueSA9IF9XSEVOX0RFRkFVTFQ7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ZpZXc6IFN3aXRjaFZpZXc7XG4gIHByaXZhdGUgX3N3aXRjaDogTmdTd2l0Y2g7XG5cbiAgY29uc3RydWN0b3Iodmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICBASG9zdCgpIG5nU3dpdGNoOiBOZ1N3aXRjaCkge1xuICAgIHRoaXMuX3N3aXRjaCA9IG5nU3dpdGNoO1xuICAgIHRoaXMuX3ZpZXcgPSBuZXcgU3dpdGNoVmlldyh2aWV3Q29udGFpbmVyLCB0ZW1wbGF0ZVJlZik7XG4gIH1cblxuICBzZXQgbmdTd2l0Y2hXaGVuKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9zd2l0Y2guX29uV2hlblZhbHVlQ2hhbmdlZCh0aGlzLl92YWx1ZSwgdmFsdWUsIHRoaXMuX3ZpZXcpO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZhdWx0IGNhc2Ugc3RhdGVtZW50cyBhcmUgZGlzcGxheWVkIHdoZW4gbm8gbWF0Y2ggZXhwcmVzc2lvbiBtYXRjaGVzIHRoZSBzd2l0Y2ggZXhwcmVzc2lvblxuICogdmFsdWUuXG4gKlxuICogU2VlIHtAbGluayBOZ1N3aXRjaH0gZm9yIG1vcmUgZGV0YWlscyBhbmQgZXhhbXBsZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdTd2l0Y2hEZWZhdWx0XSd9KVxuZXhwb3J0IGNsYXNzIE5nU3dpdGNoRGVmYXVsdCB7XG4gIGNvbnN0cnVjdG9yKHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZixcbiAgICAgICAgICAgICAgQEhvc3QoKSBzc3dpdGNoOiBOZ1N3aXRjaCkge1xuICAgIHNzd2l0Y2guX3JlZ2lzdGVyVmlldyhfV0hFTl9ERUZBVUxULCBuZXcgU3dpdGNoVmlldyh2aWV3Q29udGFpbmVyLCB0ZW1wbGF0ZVJlZikpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar ng_switch_1 = require('./ng_switch');\r\nvar _CATEGORY_DEFAULT = 'other';\r\nvar NgLocalization = (function () {\r\n function NgLocalization() {\r\n }\r\n return NgLocalization;\r\n}());\r\nexports.NgLocalization = NgLocalization;\r\n/**\r\n * `ngPlural` is an i18n directive that displays DOM sub-trees that match the switch expression\r\n * value, or failing that, DOM sub-trees that match the switch expression's pluralization category.\r\n *\r\n * To use this directive, you must provide an extension of `NgLocalization` that maps values to\r\n * category names. You then define a container element that sets the `[ngPlural]` attribute to a\r\n * switch expression.\r\n * - Inner elements defined with an `[ngPluralCase]` attribute will display based on their\r\n * expression.\r\n * - If `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\r\n * matches the switch expression exactly.\r\n * - Otherwise, the view will be treated as a \"category match\", and will only display if exact\r\n * value matches aren't found and the value maps to its category using the `getPluralCategory`\r\n * function provided.\r\n *\r\n * If no matching views are found for a switch expression, inner elements marked\r\n * `[ngPluralCase]=\"other\"` will be displayed.\r\n *\r\n * ```typescript\r\n * class MyLocalization extends NgLocalization {\r\n * getPluralCategory(value: any) {\r\n * if(value < 5) {\r\n * return 'few';\r\n * }\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * providers: [provide(NgLocalization, {useClass: MyLocalization})]\r\n * })\r\n * @View({\r\n * template: `\r\n * <p>Value = {{value}}</p>\r\n * <button (click)=\"inc()\">Increment</button>\r\n *\r\n * <div [ngPlural]=\"value\">\r\n * <template ngPluralCase=\"=0\">there is nothing</template>\r\n * <template ngPluralCase=\"=1\">there is one</template>\r\n * <template ngPluralCase=\"few\">there are a few</template>\r\n * <template ngPluralCase=\"other\">there is some number</template>\r\n * </div>\r\n * `,\r\n * directives: [NgPlural, NgPluralCase]\r\n * })\r\n * export class App {\r\n * value = 'init';\r\n *\r\n * inc() {\r\n * this.value = this.value === 'init' ? 0 : this.value + 1;\r\n * }\r\n * }\r\n *\r\n * ```\r\n */\r\nvar NgPluralCase = (function () {\r\n function NgPluralCase(value, template, viewContainer) {\r\n this.value = value;\r\n this._view = new ng_switch_1.SwitchView(viewContainer, template);\r\n }\r\n NgPluralCase = __decorate([\r\n core_1.Directive({ selector: '[ngPluralCase]' }),\r\n __param(0, core_1.Attribute('ngPluralCase')), \r\n __metadata('design:paramtypes', [String, core_1.TemplateRef, core_1.ViewContainerRef])\r\n ], NgPluralCase);\r\n return NgPluralCase;\r\n}());\r\nexports.NgPluralCase = NgPluralCase;\r\nvar NgPlural = (function () {\r\n function NgPlural(_localization) {\r\n this._localization = _localization;\r\n this._caseViews = new collection_1.Map();\r\n this.cases = null;\r\n }\r\n Object.defineProperty(NgPlural.prototype, \"ngPlural\", {\r\n set: function (value) {\r\n this._switchValue = value;\r\n this._updateView();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgPlural.prototype.ngAfterContentInit = function () {\r\n var _this = this;\r\n this.cases.forEach(function (pluralCase) {\r\n _this._caseViews.set(_this._formatValue(pluralCase), pluralCase._view);\r\n });\r\n this._updateView();\r\n };\r\n /** @internal */\r\n NgPlural.prototype._updateView = function () {\r\n this._clearViews();\r\n var view = this._caseViews.get(this._switchValue);\r\n if (!lang_1.isPresent(view))\r\n view = this._getCategoryView(this._switchValue);\r\n this._activateView(view);\r\n };\r\n /** @internal */\r\n NgPlural.prototype._clearViews = function () {\r\n if (lang_1.isPresent(this._activeView))\r\n this._activeView.destroy();\r\n };\r\n /** @internal */\r\n NgPlural.prototype._activateView = function (view) {\r\n if (!lang_1.isPresent(view))\r\n return;\r\n this._activeView = view;\r\n this._activeView.create();\r\n };\r\n /** @internal */\r\n NgPlural.prototype._getCategoryView = function (value) {\r\n var category = this._localization.getPluralCategory(value);\r\n var categoryView = this._caseViews.get(category);\r\n return lang_1.isPresent(categoryView) ? categoryView : this._caseViews.get(_CATEGORY_DEFAULT);\r\n };\r\n /** @internal */\r\n NgPlural.prototype._isValueView = function (pluralCase) { return pluralCase.value[0] === \"=\"; };\r\n /** @internal */\r\n NgPlural.prototype._formatValue = function (pluralCase) {\r\n return this._isValueView(pluralCase) ? this._stripValue(pluralCase.value) : pluralCase.value;\r\n };\r\n /** @internal */\r\n NgPlural.prototype._stripValue = function (value) { return lang_1.NumberWrapper.parseInt(value.substring(1), 10); };\r\n __decorate([\r\n core_1.ContentChildren(NgPluralCase), \r\n __metadata('design:type', core_1.QueryList)\r\n ], NgPlural.prototype, \"cases\", void 0);\r\n __decorate([\r\n core_1.Input(), \r\n __metadata('design:type', Number), \r\n __metadata('design:paramtypes', [Number])\r\n ], NgPlural.prototype, \"ngPlural\", null);\r\n NgPlural = __decorate([\r\n core_1.Directive({ selector: '[ngPlural]' }), \r\n __metadata('design:paramtypes', [NgLocalization])\r\n ], NgPlural);\r\n return NgPlural;\r\n}());\r\nexports.NgPlural = NgPlural;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfcGx1cmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX3BsdXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEscUJBU08sZUFBZSxDQUFDLENBQUE7QUFDdkIscUJBQXVDLDBCQUEwQixDQUFDLENBQUE7QUFDbEUsMkJBQWtCLGdDQUFnQyxDQUFDLENBQUE7QUFDbkQsMEJBQXlCLGFBQWEsQ0FBQyxDQUFBO0FBRXZDLElBQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRWxDO0lBQUE7SUFBdUYsQ0FBQztJQUFELHFCQUFDO0FBQUQsQ0FBQyxBQUF4RixJQUF3RjtBQUFsRSxzQkFBYyxpQkFBb0QsQ0FBQTtBQUV4Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0RHO0FBR0g7SUFHRSxzQkFBOEMsS0FBYSxFQUFFLFFBQXFCLEVBQ3RFLGFBQStCO1FBREcsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUV6RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksc0JBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQVBIO1FBQUMsZ0JBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDO21CQUl6QixnQkFBUyxDQUFDLGNBQWMsQ0FBQzs7b0JBSkE7SUFReEMsbUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLG9CQUFZLGVBT3hCLENBQUE7QUFJRDtJQU1FLGtCQUFvQixhQUE2QjtRQUE3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFIekMsZUFBVSxHQUFHLElBQUksZ0JBQUcsRUFBbUIsQ0FBQztRQUNqQixVQUFLLEdBQTRCLElBQUksQ0FBQztJQUVqQixDQUFD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QUM7O2dCQUFBO0lBNkRwQyxlQUFDO0FBQUQsQ0FBQyxBQTVERCxJQTREQztBQTVEWSxnQkFBUSxXQTREcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBBdHRyaWJ1dGUsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIElucHV0XG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtpc1ByZXNlbnQsIE51bWJlcldyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge01hcH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7U3dpdGNoVmlld30gZnJvbSAnLi9uZ19zd2l0Y2gnO1xuXG5jb25zdCBfQ0FURUdPUllfREVGQVVMVCA9ICdvdGhlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ0xvY2FsaXphdGlvbiB7IGFic3RyYWN0IGdldFBsdXJhbENhdGVnb3J5KHZhbHVlOiBhbnkpOiBzdHJpbmc7IH1cblxuLyoqXG4gKiBgbmdQbHVyYWxgIGlzIGFuIGkxOG4gZGlyZWN0aXZlIHRoYXQgZGlzcGxheXMgRE9NIHN1Yi10cmVlcyB0aGF0IG1hdGNoIHRoZSBzd2l0Y2ggZXhwcmVzc2lvblxuICogdmFsdWUsIG9yIGZhaWxpbmcgdGhhdCwgRE9NIHN1Yi10cmVlcyB0aGF0IG1hdGNoIHRoZSBzd2l0Y2ggZXhwcmVzc2lvbidzIHBsdXJhbGl6YXRpb24gY2F0ZWdvcnkuXG4gKlxuICogVG8gdXNlIHRoaXMgZGlyZWN0aXZlLCB5b3UgbXVzdCBwcm92aWRlIGFuIGV4dGVuc2lvbiBvZiBgTmdMb2NhbGl6YXRpb25gIHRoYXQgbWFwcyB2YWx1ZXMgdG9cbiAqIGNhdGVnb3J5IG5hbWVzLiBZb3UgdGhlbiBkZWZpbmUgYSBjb250YWluZXIgZWxlbWVudCB0aGF0IHNldHMgdGhlIGBbbmdQbHVyYWxdYCBhdHRyaWJ1dGUgdG8gYVxuICogc3dpdGNoIGV4cHJlc3Npb24uXG4gKiAgICAtIElubmVyIGVsZW1lbnRzIGRlZmluZWQgd2l0aCBhbiBgW25nUGx1cmFsQ2FzZV1gIGF0dHJpYnV0ZSB3aWxsIGRpc3BsYXkgYmFzZWQgb24gdGhlaXJcbiAqIGV4cHJlc3Npb24uXG4gKiAgICAtIElmIGBbbmdQbHVyYWxDYXNlXWAgaXMgc2V0IHRvIGEgdmFsdWUgc3RhcnRpbmcgd2l0aCBgPWAsIGl0IHdpbGwgb25seSBkaXNwbGF5IGlmIHRoZSB2YWx1ZVxuICogbWF0Y2hlcyB0aGUgc3dpdGNoIGV4cHJlc3Npb24gZXhhY3RseS5cbiAqICAgIC0gT3RoZXJ3aXNlLCB0aGUgdmlldyB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBcImNhdGVnb3J5IG1hdGNoXCIsIGFuZCB3aWxsIG9ubHkgZGlzcGxheSBpZiBleGFjdFxuICogdmFsdWUgbWF0Y2hlcyBhcmVuJ3QgZm91bmQgYW5kIHRoZSB2YWx1ZSBtYXBzIHRvIGl0cyBjYXRlZ29yeSB1c2luZyB0aGUgYGdldFBsdXJhbENhdGVnb3J5YFxuICogZnVuY3Rpb24gcHJvdmlkZWQuXG4gKlxuICogSWYgbm8gbWF0Y2hpbmcgdmlld3MgYXJlIGZvdW5kIGZvciBhIHN3aXRjaCBleHByZXNzaW9uLCBpbm5lciBlbGVtZW50cyBtYXJrZWRcbiAqIGBbbmdQbHVyYWxDYXNlXT1cIm90aGVyXCJgIHdpbGwgYmUgZGlzcGxheWVkLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIE15TG9jYWxpemF0aW9uIGV4dGVuZHMgTmdMb2NhbGl6YXRpb24ge1xuICogICAgZ2V0UGx1cmFsQ2F0ZWdvcnkodmFsdWU6IGFueSkge1xuICogICAgICAgaWYodmFsdWUgPCA1KSB7XG4gKiAgICAgICAgICByZXR1cm4gJ2Zldyc7XG4gKiAgICAgICB9XG4gKiAgICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgICBwcm92aWRlcnM6IFtwcm92aWRlKE5nTG9jYWxpemF0aW9uLCB7dXNlQ2xhc3M6IE15TG9jYWxpemF0aW9ufSldXG4gKiB9KVxuICogQFZpZXcoe1xuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxwPlZhbHVlID0ge3t2YWx1ZX19PC9wPlxuICogICAgIDxidXR0b24gKGNsaWNrKT1cImluYygpXCI+SW5jcmVtZW50PC9idXR0b24+XG4gKlxuICogICAgIDxkaXYgW25nUGx1cmFsXT1cInZhbHVlXCI+XG4gKiAgICAgICA8dGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTBcIj50aGVyZSBpcyBub3RoaW5nPC90ZW1wbGF0ZT5cbiAqICAgICAgIDx0ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCI9MVwiPnRoZXJlIGlzIG9uZTwvdGVtcGxhdGU+XG4gKiAgICAgICA8dGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiZmV3XCI+dGhlcmUgYXJlIGEgZmV3PC90ZW1wbGF0ZT5cbiAqICAgICAgIDx0ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCJvdGhlclwiPnRoZXJlIGlzIHNvbWUgbnVtYmVyPC90ZW1wbGF0ZT5cbiAqICAgICA8L2Rpdj5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW05nUGx1cmFsLCBOZ1BsdXJhbENhc2VdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIHZhbHVlID0gJ2luaXQnO1xuICpcbiAqICAgaW5jKCkge1xuICogICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID09PSAnaW5pdCcgPyAwIDogdGhpcy52YWx1ZSArIDE7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBgYGBcbiAqL1xuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ1BsdXJhbENhc2VdJ30pXG5leHBvcnQgY2xhc3MgTmdQbHVyYWxDYXNlIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdmlldzogU3dpdGNoVmlldztcbiAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZSgnbmdQbHVyYWxDYXNlJykgcHVibGljIHZhbHVlOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZixcbiAgICAgICAgICAgICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHRoaXMuX3ZpZXcgPSBuZXcgU3dpdGNoVmlldyh2aWV3Q29udGFpbmVyLCB0ZW1wbGF0ZSk7XG4gIH1cbn1cblxuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ1BsdXJhbF0nfSlcbmV4cG9ydCBjbGFzcyBOZ1BsdXJhbCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBwcml2YXRlIF9zd2l0Y2hWYWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIF9hY3RpdmVWaWV3OiBTd2l0Y2hWaWV3O1xuICBwcml2YXRlIF9jYXNlVmlld3MgPSBuZXcgTWFwPGFueSwgU3dpdGNoVmlldz4oKTtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ1BsdXJhbENhc2UpIGNhc2VzOiBRdWVyeUxpc3Q8TmdQbHVyYWxDYXNlPiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxpemF0aW9uOiBOZ0xvY2FsaXphdGlvbikge31cblxuICBASW5wdXQoKVxuICBzZXQgbmdQbHVyYWwodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N3aXRjaFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fdXBkYXRlVmlldygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuY2FzZXMuZm9yRWFjaCgocGx1cmFsQ2FzZTogTmdQbHVyYWxDYXNlKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLl9jYXNlVmlld3Muc2V0KHRoaXMuX2Zvcm1hdFZhbHVlKHBsdXJhbENhc2UpLCBwbHVyYWxDYXNlLl92aWV3KTtcbiAgICB9KTtcbiAgICB0aGlzLl91cGRhdGVWaWV3KCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF91cGRhdGVWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFyVmlld3MoKTtcblxuICAgIHZhciB2aWV3OiBTd2l0Y2hWaWV3ID0gdGhpcy5fY2FzZVZpZXdzLmdldCh0aGlzLl9zd2l0Y2hWYWx1ZSk7XG4gICAgaWYgKCFpc1ByZXNlbnQodmlldykpIHZpZXcgPSB0aGlzLl9nZXRDYXRlZ29yeVZpZXcodGhpcy5fc3dpdGNoVmFsdWUpO1xuXG4gICAgdGhpcy5fYWN0aXZhdGVWaWV3KHZpZXcpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY2xlYXJWaWV3cygpIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2FjdGl2ZVZpZXcpKSB0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FjdGl2YXRlVmlldyh2aWV3OiBTd2l0Y2hWaWV3KSB7XG4gICAgaWYgKCFpc1ByZXNlbnQodmlldykpIHJldHVybjtcbiAgICB0aGlzLl9hY3RpdmVWaWV3ID0gdmlldztcbiAgICB0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2V0Q2F0ZWdvcnlWaWV3KHZhbHVlOiBudW1iZXIpOiBTd2l0Y2hWaWV3IHtcbiAgICB2YXIgY2F0ZWdvcnk6IHN0cmluZyA9IHRoaXMuX2xvY2FsaXphdGlvbi5nZXRQbHVyYWxDYXRlZ29yeSh2YWx1ZSk7XG4gICAgdmFyIGNhdGVnb3J5VmlldzogU3dpdGNoVmlldyA9IHRoaXMuX2Nhc2VWaWV3cy5nZXQoY2F0ZWdvcnkpO1xuICAgIHJldHVybiBpc1ByZXNlbnQoY2F0ZWdvcnlWaWV3KSA/IGNhdGVnb3J5VmlldyA6IHRoaXMuX2Nhc2VWaWV3cy5nZXQoX0NBVEVHT1JZX0RFRkFVTFQpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaXNWYWx1ZVZpZXcocGx1cmFsQ2FzZTogTmdQbHVyYWxDYXNlKTogYm9vbGVhbiB7IHJldHVybiBwbHVyYWxDYXNlLnZhbHVlWzBdID09PSBcIj1cIjsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2Zvcm1hdFZhbHVlKHBsdXJhbENhc2U6IE5nUGx1cmFsQ2FzZSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmFsdWVWaWV3KHBsdXJhbENhc2UpID8gdGhpcy5fc3RyaXBWYWx1ZShwbHVyYWxDYXNlLnZhbHVlKSA6IHBsdXJhbENhc2UudmFsdWU7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9zdHJpcFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgeyByZXR1cm4gTnVtYmVyV3JhcHBlci5wYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoMSksIDEwKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar ng_class_1 = require('./ng_class');\r\nvar ng_for_1 = require('./ng_for');\r\nvar ng_if_1 = require('./ng_if');\r\nvar ng_template_outlet_1 = require('./ng_template_outlet');\r\nvar ng_style_1 = require('./ng_style');\r\nvar ng_switch_1 = require('./ng_switch');\r\nvar ng_plural_1 = require('./ng_plural');\r\n/**\r\n * A collection of Angular core directives that are likely to be used in each and every Angular\r\n * application.\r\n *\r\n * This collection can be used to quickly enumerate all the built-in directives in the `directives`\r\n * property of the `@Component` annotation.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/yakGwpCdUkg0qfzX5m8g?p=preview))\r\n *\r\n * Instead of writing:\r\n *\r\n * ```typescript\r\n * import {NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault} from 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault, OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n * one could import all the core directives at once:\r\n *\r\n * ```typescript\r\n * import {CORE_DIRECTIVES} from 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [CORE_DIRECTIVES, OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n */\r\nexports.CORE_DIRECTIVES = lang_1.CONST_EXPR([\r\n ng_class_1.NgClass,\r\n ng_for_1.NgFor,\r\n ng_if_1.NgIf,\r\n ng_template_outlet_1.NgTemplateOutlet,\r\n ng_style_1.NgStyle,\r\n ng_switch_1.NgSwitch,\r\n ng_switch_1.NgSwitchWhen,\r\n ng_switch_1.NgSwitchDefault,\r\n ng_plural_1.NgPlural,\r\n ng_plural_1.NgPluralCase\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZV9kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL2NvcmVfZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUJBQStCLDBCQUEwQixDQUFDLENBQUE7QUFDMUQseUJBQXNCLFlBQVksQ0FBQyxDQUFBO0FBQ25DLHVCQUFvQixVQUFVLENBQUMsQ0FBQTtBQUMvQixzQkFBbUIsU0FBUyxDQUFDLENBQUE7QUFDN0IsbUNBQStCLHNCQUFzQixDQUFDLENBQUE7QUFDdEQseUJBQXNCLFlBQVksQ0FBQyxDQUFBO0FBQ25DLDBCQUFzRCxhQUFhLENBQUMsQ0FBQTtBQUNwRSwwQkFBcUMsYUFBYSxDQUFDLENBQUE7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNVLHVCQUFlLEdBQVcsaUJBQVUsQ0FBQztJQUNoRCxrQkFBTztJQUNQLGNBQUs7SUFDTCxZQUFJO0lBQ0oscUNBQWdCO0lBQ2hCLGtCQUFPO0lBQ1Asb0JBQVE7SUFDUix3QkFBWTtJQUNaLDJCQUFlO0lBQ2Ysb0JBQVE7SUFDUix3QkFBWTtDQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUiwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TmdDbGFzc30gZnJvbSAnLi9uZ19jbGFzcyc7XG5pbXBvcnQge05nRm9yfSBmcm9tICcuL25nX2Zvcic7XG5pbXBvcnQge05nSWZ9IGZyb20gJy4vbmdfaWYnO1xuaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICcuL25nX3RlbXBsYXRlX291dGxldCc7XG5pbXBvcnQge05nU3R5bGV9IGZyb20gJy4vbmdfc3R5bGUnO1xuaW1wb3J0IHtOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHR9IGZyb20gJy4vbmdfc3dpdGNoJztcbmltcG9ydCB7TmdQbHVyYWwsIE5nUGx1cmFsQ2FzZX0gZnJvbSAnLi9uZ19wbHVyYWwnO1xuXG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiBBbmd1bGFyIGNvcmUgZGlyZWN0aXZlcyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBlYWNoIGFuZCBldmVyeSBBbmd1bGFyXG4gKiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBUaGlzIGNvbGxlY3Rpb24gY2FuIGJlIHVzZWQgdG8gcXVpY2tseSBlbnVtZXJhdGUgYWxsIHRoZSBidWlsdC1pbiBkaXJlY3RpdmVzIGluIHRoZSBgZGlyZWN0aXZlc2BcbiAqIHByb3BlcnR5IG9mIHRoZSBgQENvbXBvbmVudGAgYW5ub3RhdGlvbi5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQveWFrR3dwQ2RVa2cwcWZ6WDVtOGc/cD1wcmV2aWV3KSlcbiAqXG4gKiBJbnN0ZWFkIG9mIHdyaXRpbmc6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHtOZ0NsYXNzLCBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoV2hlbiwgTmdTd2l0Y2hEZWZhdWx0fSBmcm9tICdhbmd1bGFyMi9jb21tb24nO1xuICogaW1wb3J0IHtPdGhlckRpcmVjdGl2ZX0gZnJvbSAnLi9teURpcmVjdGl2ZXMnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlVXJsOiAnbXlDb21wb25lbnQuaHRtbCcsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ0NsYXNzLCBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoV2hlbiwgTmdTd2l0Y2hEZWZhdWx0LCBPdGhlckRpcmVjdGl2ZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICAuLi5cbiAqIH1cbiAqIGBgYFxuICogb25lIGNvdWxkIGltcG9ydCBhbGwgdGhlIGNvcmUgZGlyZWN0aXZlcyBhdCBvbmNlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7Q09SRV9ESVJFQ1RJVkVTfSBmcm9tICdhbmd1bGFyMi9jb21tb24nO1xuICogaW1wb3J0IHtPdGhlckRpcmVjdGl2ZX0gZnJvbSAnLi9teURpcmVjdGl2ZXMnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlVXJsOiAnbXlDb21wb25lbnQuaHRtbCcsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDT1JFX0RJUkVDVElWRVMsIE90aGVyRGlyZWN0aXZlXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC4uLlxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBDT1JFX0RJUkVDVElWRVM6IFR5cGVbXSA9IENPTlNUX0VYUFIoW1xuICBOZ0NsYXNzLFxuICBOZ0ZvcixcbiAgTmdJZixcbiAgTmdUZW1wbGF0ZU91dGxldCxcbiAgTmdTdHlsZSxcbiAgTmdTd2l0Y2gsXG4gIE5nU3dpdGNoV2hlbixcbiAgTmdTd2l0Y2hEZWZhdWx0LFxuICBOZ1BsdXJhbCxcbiAgTmdQbHVyYWxDYXNlXG5dKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * @module\r\n * @description\r\n * Common directives shipped with Angular.\r\n */\r\nvar ng_class_1 = require('./directives/ng_class');\r\nexports.NgClass = ng_class_1.NgClass;\r\nvar ng_for_1 = require('./directives/ng_for');\r\nexports.NgFor = ng_for_1.NgFor;\r\nvar ng_if_1 = require('./directives/ng_if');\r\nexports.NgIf = ng_if_1.NgIf;\r\nvar ng_template_outlet_1 = require('./directives/ng_template_outlet');\r\nexports.NgTemplateOutlet = ng_template_outlet_1.NgTemplateOutlet;\r\nvar ng_style_1 = require('./directives/ng_style');\r\nexports.NgStyle = ng_style_1.NgStyle;\r\nvar ng_switch_1 = require('./directives/ng_switch');\r\nexports.NgSwitch = ng_switch_1.NgSwitch;\r\nexports.NgSwitchWhen = ng_switch_1.NgSwitchWhen;\r\nexports.NgSwitchDefault = ng_switch_1.NgSwitchDefault;\r\nvar ng_plural_1 = require('./directives/ng_plural');\r\nexports.NgPlural = ng_plural_1.NgPlural;\r\nexports.NgPluralCase = ng_plural_1.NgPluralCase;\r\nexports.NgLocalization = ng_plural_1.NgLocalization;\r\n__export(require('./directives/observable_list_diff'));\r\nvar core_directives_1 = require('./directives/core_directives');\r\nexports.CORE_DIRECTIVES = core_directives_1.CORE_DIRECTIVES;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmZpbmdfcGx1Z2luX3dyYXBwZXItb3V0cHV0X3BhdGgtQlJKZXIxSjkudG1wL2FuZ3VsYXIyL3NyYy9jb21tb24vZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7R0FJRztBQUNILHlCQUFzQix1QkFBdUIsQ0FBQztBQUF0QyxxQ0FBc0M7QUFDOUMsdUJBQW9CLHFCQUFxQixDQUFDO0FBQWxDLCtCQUFrQztBQUMxQyxzQkFBbUIsb0JBQW9CLENBQUM7QUFBaEMsNEJBQWdDO0FBQ3hDLG1DQUErQixpQ0FBaUMsQ0FBQztBQUF6RCxpRUFBeUQ7QUFDakUseUJBQXNCLHVCQUF1QixDQUFDO0FBQXRDLHFDQUFzQztBQUM5QywwQkFBc0Qsd0JBQXdCLENBQUM7QUFBdkUsd0NBQVE7QUFBRSxnREFBWTtBQUFFLHNEQUErQztBQUMvRSwwQkFBcUQsd0JBQXdCLENBQUM7QUFBdEUsd0NBQVE7QUFBRSxnREFBWTtBQUFFLG9EQUE4QztBQUM5RSxpQkFBYyxtQ0FBbUMsQ0FBQyxFQUFBO0FBQ2xELGdDQUE4Qiw4QkFBOEIsQ0FBQztBQUFyRCw0REFBcUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogQ29tbW9uIGRpcmVjdGl2ZXMgc2hpcHBlZCB3aXRoIEFuZ3VsYXIuXG4gKi9cbmV4cG9ydCB7TmdDbGFzc30gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2NsYXNzJztcbmV4cG9ydCB7TmdGb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19mb3InO1xuZXhwb3J0IHtOZ0lmfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfaWYnO1xuZXhwb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfdGVtcGxhdGVfb3V0bGV0JztcbmV4cG9ydCB7TmdTdHlsZX0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX3N0eWxlJztcbmV4cG9ydCB7TmdTd2l0Y2gsIE5nU3dpdGNoV2hlbiwgTmdTd2l0Y2hEZWZhdWx0fSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfc3dpdGNoJztcbmV4cG9ydCB7TmdQbHVyYWwsIE5nUGx1cmFsQ2FzZSwgTmdMb2NhbGl6YXRpb259IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19wbHVyYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL29ic2VydmFibGVfbGlzdF9kaWZmJztcbmV4cG9ydCB7Q09SRV9ESVJFQ1RJVkVTfSBmcm9tICcuL2RpcmVjdGl2ZXMvY29yZV9kaXJlY3RpdmVzJztcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar forms_1 = require('./forms');\r\nvar directives_1 = require('./directives');\r\n/**\r\n * A collection of Angular core directives that are likely to be used in each and every Angular\r\n * application. This includes core directives (e.g., NgIf and NgFor), and forms directives (e.g.,\r\n * NgModel).\r\n *\r\n * This collection can be used to quickly enumerate all the built-in directives in the `directives`\r\n * property of the `@Component` decorator.\r\n *\r\n * ### Example\r\n *\r\n * Instead of writing:\r\n *\r\n * ```typescript\r\n * import {NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault, NgModel, NgForm} from\r\n * 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault, NgModel, NgForm,\r\n * OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n * one could import all the common directives at once:\r\n *\r\n * ```typescript\r\n * import {COMMON_DIRECTIVES} from 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [COMMON_DIRECTIVES, OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n */\r\nexports.COMMON_DIRECTIVES = lang_1.CONST_EXPR([directives_1.CORE_DIRECTIVES, forms_1.FORM_DIRECTIVES]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX2RpcmVjdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmaW5nX3BsdWdpbl93cmFwcGVyLW91dHB1dF9wYXRoLUJSSmVyMUo5LnRtcC9hbmd1bGFyMi9zcmMvY29tbW9uL2NvbW1vbl9kaXJlY3RpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBK0IsMEJBQTBCLENBQUMsQ0FBQTtBQUUxRCxzQkFBOEIsU0FBUyxDQUFDLENBQUE7QUFDeEMsMkJBQThCLGNBQWMsQ0FBQyxDQUFBO0FBRTdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ0c7QUFDVSx5QkFBaUIsR0FBYSxpQkFBVSxDQUFDLENBQUMsNEJBQWUsRUFBRSx1QkFBZSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUiwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtGT1JNX0RJUkVDVElWRVN9IGZyb20gJy4vZm9ybXMnO1xuaW1wb3J0IHtDT1JFX0RJUkVDVElWRVN9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIEFuZ3VsYXIgY29yZSBkaXJlY3RpdmVzIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIGVhY2ggYW5kIGV2ZXJ5IEFuZ3VsYXJcbiAqIGFwcGxpY2F0aW9uLiBUaGlzIGluY2x1ZGVzIGNvcmUgZGlyZWN0aXZlcyAoZS5nLiwgTmdJZiBhbmQgTmdGb3IpLCBhbmQgZm9ybXMgZGlyZWN0aXZlcyAoZS5nLixcbiAqIE5nTW9kZWwpLlxuICpcbiAqIFRoaXMgY29sbGVjdGlvbiBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGVudW1lcmF0ZSBhbGwgdGhlIGJ1aWx0LWluIGRpcmVjdGl2ZXMgaW4gdGhlIGBkaXJlY3RpdmVzYFxuICogcHJvcGVydHkgb2YgdGhlIGBAQ29tcG9uZW50YCBkZWNvcmF0b3IuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBJbnN0ZWFkIG9mIHdyaXRpbmc6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHtOZ0NsYXNzLCBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoV2hlbiwgTmdTd2l0Y2hEZWZhdWx0LCBOZ01vZGVsLCBOZ0Zvcm19IGZyb21cbiAqICdhbmd1bGFyMi9jb21tb24nO1xuICogaW1wb3J0IHtPdGhlckRpcmVjdGl2ZX0gZnJvbSAnLi9teURpcmVjdGl2ZXMnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlVXJsOiAnbXlDb21wb25lbnQuaHRtbCcsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ0NsYXNzLCBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoV2hlbiwgTmdTd2l0Y2hEZWZhdWx0LCBOZ01vZGVsLCBOZ0Zvcm0sXG4gKiBPdGhlckRpcmVjdGl2ZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICAuLi5cbiAqIH1cbiAqIGBgYFxuICogb25lIGNvdWxkIGltcG9ydCBhbGwgdGhlIGNvbW1vbiBkaXJlY3RpdmVzIGF0IG9uY2U6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHtDT01NT05fRElSRUNUSVZFU30gZnJvbSAnYW5ndWxhcjIvY29tbW9uJztcbiAqIGltcG9ydCB7T3RoZXJEaXJlY3RpdmV9IGZyb20gJy4vbXlEaXJlY3RpdmVzJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1jb21wb25lbnQnLFxuICogICB0ZW1wbGF0ZVVybDogJ215Q29tcG9uZW50Lmh0bWwnLFxuICogICBkaXJlY3RpdmVzOiBbQ09NTU9OX0RJUkVDVElWRVMsIE90aGVyRGlyZWN0aXZlXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC4uLlxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBDT01NT05fRElSRUNUSVZFUzogVHlwZVtdW10gPSBDT05TVF9FWFBSKFtDT1JFX0RJUkVDVElWRVMsIEZPUk1fRElSRUNUSVZFU10pO1xuIl19","/* */ \n\"format cjs\";\n'use strict';\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n__export(require('./src/common/pipes'));\r\n__export(require('./src/common/directives'));\r\n__export(require('./src/common/forms'));\r\n__export(require('./src/common/common_directives'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC1CUkplcjFKOS50bXAvYW5ndWxhcjIvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpQkFBYyxvQkFBb0IsQ0FBQyxFQUFBO0FBQ25DLGlCQUFjLHlCQUF5QixDQUFDLEVBQUE7QUFDeEMsaUJBQWMsb0JBQW9CLENBQUMsRUFBQTtBQUNuQyxpQkFBYyxnQ0FBZ0MsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvY29tbW9uL3BpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvbW1vbi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvbW1vbi9mb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb21tb24vY29tbW9uX2RpcmVjdGl2ZXMnO1xuIl19","/* */ \n\"format global\";\n/*\n * DropKick\n *\n * Highly customizable <select> lists\n * https://github.com/robdel12/DropKick\n *\n*/\n(function(factory) {\n var jQuery;\n\n if ( typeof exports === \"object\" ) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n try {\n jQuery = require( \"jquery\" );\n } catch ( e ) {}\n\n module.exports = factory( window, document, jQuery );\n } else {\n // Browser globals (root is window)\n window.Dropkick = factory( window, document, window.jQuery );\n }\n\n}(function( window, document, jQuery, undefined ) {\n\n\nvar\n\n // Browser testing stuff\n isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ),\n isIframe = (window.parent !== window.self && location.host === parent.location.host),\n isIE = navigator.appVersion.indexOf(\"MSIE\")!==-1,\n\n /**\n * # Getting started\n * After you've cloned the repo you will need to add the library to your page. In the `build/js` folder use\n * one of the two DropKick files given. One has a version number in the file name and the other is a version\n * number-less version. You will also need to grab the css from `build/css` and load it on the page.\n *\n * Once those files are imported into the page you can call DropKick on any HTMLSelectElement:\n * `new Dropkick( HTMLSelectElement, Options );` or `new Dropkick( \"ID\", Options );`. This returns the dropkick\n * object to you. It may be useful for you to store this in a var to reference later.\n *\n * If you're using jQuery you can do this instead:\n * `$('#select').dropkick( Options );`\n *\n *\n * @class Dropkick\n * @return { object } DropKick Object for that select. You can call your methods on this if stored in a var\n * @param {elem} sel HTMLSelect Element being passed.\n * @param {opts} options See list of [properties you can pass in here](#list_of_properties)\n * @constructor\n * @example\n * ```js\n * // Pure JS\n * var select = new Dropkick(\"#select\");\n * ```\n * @example\n * ```js\n * // jQuery\n * $(\"#select\").dropkick();\n * ```\n */\n Dropkick = function( sel, opts ) {\n var i, dk;\n\n // Safety if `Dropkick` is called without `new`\n if ( this === window ) {\n return new Dropkick( sel, opts );\n }\n\n if ( typeof sel === \"string\" && sel[0] === \"#\" ) {\n sel = document.getElementById( sel.substr( 1 ) );\n }\n\n // Check if select has already been DK'd and return the DK Object\n for ( i = 0; i < Dropkick.uid; i++) {\n dk = Dropkick.cache[ i ];\n\n if ( dk instanceof Dropkick && dk.data.select === sel ) {\n _.extend( dk.data.settings, opts );\n return dk;\n }\n }\n\n if ( !sel ) {\n console.error(\"You must pass a select to DropKick\");\n return false;\n }\n\n if ( sel.nodeName === \"SELECT\" ) {\n return this.init( sel, opts );\n }\n },\n\n noop = function() {},\n _docListener,\n\n // DK default options\n defaults = {\n\n /**\n * Called once after the DK element is inserted into the DOM.\n * The value of `this` is the Dropkick object itself.\n *\n * @config initialize\n * @type Function\n *\n */\n initialize: noop,\n\n /**\n * Called whenever the value of the Dropkick select changes (by user action or through the API).\n * The value of `this` is the Dropkick object itself.\n *\n * @config change\n * @type Function\n *\n */\n change: noop,\n\n /**\n * Called whenever the Dropkick select is opened. The value of `this` is the Dropkick object itself.\n *\n * @config open\n * @type Function\n *\n */\n open: noop,\n\n /**\n * Called whenever the Dropkick select is closed. The value of `this` is the Dropkick object itself.\n *\n * @config close\n * @type Function\n *\n */\n close: noop,\n\n // Search method; \"strict\", \"partial\", or \"fuzzy\"\n /**\n * `\"strict\"` - The search string matches exactly from the beginning of the option's text value (case insensitive).\n *\n * `\"partial\"` - The search string matches part of the option's text value (case insensitive).\n *\n * `\"fuzzy\"` - The search string matches the characters in the given order (not exclusively).\n * The strongest match is selected first. (case insensitive).\n *\n * @default \"strict\"\n * @config search\n * @type string\n *\n */\n search: \"strict\",\n\n /**\n * Bubble up the custom change event attached to Dropkick to the original element (select).\n */\n bubble: true\n },\n\n // Common Utilities\n _ = {\n\n hasClass: function( elem, classname ) {\n var reg = new RegExp( \"(^|\\\\s+)\" + classname + \"(\\\\s+|$)\" );\n return elem && reg.test( elem.className );\n },\n\n addClass: function( elem, classname ) {\n if( elem && !_.hasClass( elem, classname ) ) {\n elem.className += \" \" + classname;\n }\n },\n\n removeClass: function( elem, classname ) {\n var reg = new RegExp( \"(^|\\\\s+)\" + classname + \"(\\\\s+|$)\" );\n elem && ( elem.className = elem.className.replace( reg, \" \" ) );\n },\n\n toggleClass: function( elem, classname ) {\n var fn = _.hasClass( elem, classname ) ? \"remove\" : \"add\";\n _[ fn + \"Class\" ]( elem, classname );\n },\n\n // Shallow object extend\n extend: function( obj ) {\n Array.prototype.slice.call( arguments, 1 ).forEach( function( source ) {\n if ( source ) { for ( var prop in source ) obj[ prop ] = source[ prop ]; }\n });\n\n return obj;\n },\n\n // Returns the top and left offset of an element\n offset: function( elem ) {\n var box = elem.getBoundingClientRect() || { top: 0, left: 0 },\n docElem = document.documentElement,\n offsetTop = isIE ? docElem.scrollTop : window.pageYOffset,\n offsetLeft = isIE ? docElem.scrollLeft : window.pageXOffset;\n\n return {\n top: box.top + offsetTop - docElem.clientTop,\n left: box.left + offsetLeft - docElem.clientLeft\n };\n },\n\n // Returns the top and left position of an element relative to an ancestor\n position: function( elem, relative ) {\n var pos = { top: 0, left: 0 };\n\n while ( elem && elem !== relative ) {\n pos.top += elem.offsetTop;\n pos.left += elem.offsetLeft;\n elem = elem.parentNode;\n }\n\n return pos;\n },\n\n // Returns the closest ancestor element of the child or false if not found\n closest: function( child, ancestor ) {\n while ( child ) {\n if ( child === ancestor ) { return child; }\n child = child.parentNode;\n }\n return false;\n },\n\n // Creates a DOM node with the specified attributes\n create: function( name, attrs ) {\n var a, node = document.createElement( name );\n\n if ( !attrs ) { attrs = {}; }\n\n for ( a in attrs ) {\n if ( attrs.hasOwnProperty( a ) ) {\n if ( a === \"innerHTML\" ) {\n node.innerHTML = attrs[ a ];\n } else {\n node.setAttribute( a, attrs[ a ] );\n }\n }\n }\n\n return node;\n },\n\n deferred: function( fn ) {\n return function() {\n var args = arguments,\n ctx = this;\n\n window.setTimeout(function() {\n fn.apply(ctx, args);\n }, 1);\n };\n }\n\n };\n\n\n// Cache of DK Objects\nDropkick.cache = {};\nDropkick.uid = 0;\n\n\n// Extends the DK objects's Prototype\nDropkick.prototype = {\n\n // Emulate some of HTMLSelectElement's methods\n\n /**\n * Adds an element to the select. This option will not only add it to the original\n * select, but create a Dropkick option and add it to the Dropkick select.\n *\n * @method add\n * @param {string} elem HTMLOptionElement\n * @param {Node/Integer} before HTMLOptionElement/Index of Element\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.add(\"New option\", 5);\n * ```\n */\n add: function( elem, before ) {\n var text, option, i;\n\n if ( typeof elem === \"string\" ) {\n text = elem;\n elem = document.createElement(\"option\");\n elem.text = text;\n }\n\n if ( elem.nodeName === \"OPTION\" ) {\n option = _.create( \"li\", {\n \"class\": \"dk-option\",\n \"data-value\": elem.value,\n \"innerHTML\": elem.text,\n \"role\": \"option\",\n \"aria-selected\": \"false\",\n \"id\": \"dk\" + this.data.cacheID + \"-\" + ( elem.id || elem.value.replace( \" \", \"-\" ) )\n });\n\n _.addClass( option, elem.className );\n this.length += 1;\n\n if ( elem.disabled ) {\n _.addClass( option, \"dk-option-disabled\" );\n option.setAttribute( \"aria-disabled\", \"true\" );\n }\n\n this.data.select.add( elem, before );\n\n if ( typeof before === \"number\" ) {\n before = this.item( before );\n }\n\n if ( this.options.indexOf( before ) > -1 ) {\n before.parentNode.insertBefore( option, before );\n } else {\n this.data.elem.lastChild.appendChild( option );\n }\n\n option.addEventListener( \"mouseover\", this );\n\n i = this.options.indexOf( before );\n this.options.splice( i, 0, option );\n\n if ( elem.selected ) {\n this.select( i );\n }\n }\n },\n\n /**\n * Selects an option in the list at the desired index (negative numbers select from the end).\n *\n * @method item\n * @param {Integer} index Index of element (positive or negative)\n * @return {Node} The DK option from the list, or null if not found\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.item(4); //returns DOM node of index\n * ```\n */\n item: function( index ) {\n index = index < 0 ? this.options.length + index : index;\n return this.options[ index ] || null;\n },\n\n /**\n * Removes the option (from both the select and Dropkick) at the given index.\n *\n * @method remove\n * @param {Integer} index Index of element (positive or negative)\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.remove(4);\n * ```\n */\n remove: function( index ) {\n var dkOption = this.item( index );\n dkOption.parentNode.removeChild( dkOption );\n this.options.splice( index, 1 );\n this.data.select.remove( index );\n this.select( this.data.select.selectedIndex );\n this.length -= 1;\n },\n\n /**\n * Initializes the DK Object\n *\n * @method init\n * @private\n * @param {Node} sel [description]\n * @param {Object} opts Options to override defaults\n * @return {Object} The DK Object\n */\n init: function( sel, opts ) {\n var i,\n dk = Dropkick.build( sel, \"dk\" + Dropkick.uid );\n\n // Set some data on the DK Object\n this.data = {};\n this.data.select = sel;\n this.data.elem = dk.elem;\n this.data.settings = _.extend({}, defaults, opts );\n\n // Emulate some of HTMLSelectElement's properties\n\n /**\n * Whether the form is currently disabled or not\n *\n * @property {boolean} disabled\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.disabled;\n * ```\n */\n this.disabled = sel.disabled;\n\n /**\n * The form associated with the select\n *\n * @property {node} form\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.form;\n * ```\n */\n this.form = sel.form;\n\n /**\n * The number of options in the select\n *\n * @property {integer} length\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.length;\n * ```\n */\n this.length = sel.length;\n\n /**\n * If this select is a multi-select\n *\n * @property {boolean} multiple\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.multiple;\n * ```\n */\n this.multiple = sel.multiple;\n\n /**\n * An array of Dropkick options\n *\n * @property {array} options\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.options;\n * ```\n */\n this.options = dk.options.slice( 0 );\n\n /**\n * An index of the first selected option\n *\n * @property {integer} selectedIndex\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.selectedIndex;\n * ```\n */\n this.selectedIndex = sel.selectedIndex;\n\n /**\n * An array of selected Dropkick options\n *\n * @property {array} selectedOptions\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.selectedOptions;\n * ```\n */\n this.selectedOptions = dk.selected.slice( 0 );\n\n /**\n * The current value of the select\n *\n * @property {string} value\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.value;\n * ```\n */\n this.value = sel.value;\n\n // Add the DK Object to the cache\n this.data.cacheID = Dropkick.uid;\n Dropkick.cache[ this.data.cacheID ] = this;\n\n // Call the optional initialize function\n this.data.settings.initialize.call( this );\n\n // Increment the index\n Dropkick.uid += 1;\n\n // Add the change listener to the select\n if ( !this._changeListener ) {\n sel.addEventListener( \"change\", this );\n this._changeListener = true;\n }\n\n // Don't continue if we're not rendering on mobile\n if ( !( isMobile && !this.data.settings.mobile ) ) {\n\n // Insert the DK element before the original select\n sel.parentNode.insertBefore( this.data.elem, sel );\n sel.setAttribute( \"data-dkCacheId\", this.data.cacheID );\n\n // Bind events\n this.data.elem.addEventListener( \"click\", this );\n this.data.elem.addEventListener( \"keydown\", this );\n this.data.elem.addEventListener( \"keypress\", this );\n\n if ( this.form ) {\n this.form.addEventListener( \"reset\", this );\n }\n\n if ( !this.multiple ) {\n for ( i = 0; i < this.options.length; i++ ) {\n this.options[ i ].addEventListener( \"mouseover\", this );\n }\n }\n\n if ( !_docListener ) {\n document.addEventListener( \"click\", Dropkick.onDocClick );\n\n if ( isIframe ){\n parent.document.addEventListener( \"click\", Dropkick.onDocClick );\n }\n\n _docListener = true;\n }\n }\n\n return this;\n },\n\n /**\n * Closes the DK dropdown\n *\n * @method close\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.close(); //closes dk dropdown\n * ```\n */\n close: function() {\n var i,\n dk = this.data.elem;\n\n if ( !this.isOpen || this.multiple ) {\n return false;\n }\n\n for ( i = 0; i < this.options.length; i++ ) {\n _.removeClass( this.options[ i ], \"dk-option-highlight\" );\n }\n\n dk.lastChild.setAttribute( \"aria-expanded\", \"false\" );\n _.removeClass( dk.lastChild, \"dk-select-options-highlight\" );\n _.removeClass( dk, \"dk-select-open-(up|down)\" );\n this.isOpen = false;\n\n this.data.settings.close.call( this );\n },\n\n /**\n * Opens the DK dropdown\n *\n * @method open\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.open(); //Opens the dk dropdown\n * ```\n */\n open: _.deferred(function() {\n var dropHeight, above, below, direction, dkTop, dkBottom,\n dk = this.data.elem,\n dkOptsList = dk.lastChild;\n\n if ( isIE ) {\n dkTop = _.offset( dk ).top - document.documentElement.scrollTop;\n } else {\n dkTop = _.offset( dk ).top - window.scrollY;\n }\n\n dkBottom = window.innerHeight - ( dkTop + dk.offsetHeight );\n\n if ( this.isOpen || this.multiple ) { return false; }\n\n dkOptsList.style.display = \"block\";\n dropHeight = dkOptsList.offsetHeight;\n dkOptsList.style.display = \"\";\n\n above = dkTop > dropHeight;\n below = dkBottom > dropHeight;\n direction = above && !below ? \"-up\" : \"-down\";\n\n this.isOpen = true;\n _.addClass( dk, \"dk-select-open\" + direction );\n dkOptsList.setAttribute( \"aria-expanded\", \"true\" );\n this._scrollTo( this.options.length - 1 );\n this._scrollTo( this.selectedIndex );\n\n this.data.settings.open.call( this );\n }),\n\n /**\n * Disables or enables an option; if only a boolean is passed (or nothing),\n * then the entire Dropkick will be disabled or enabled.\n *\n * @method disable\n * @param {Integer} elem The element or index to disable\n * @param {Boolean} disabled Value of disabled\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * // To disable the entire select\n * select.disable();\n *\n * // To disable just an option with an index\n * select.disable(4, true);\n *\n * // To re-enable the entire select\n * select.disable(false);\n *\n * // To re-enable just an option with an index\n * select.disable(4, false);\n * ```\n */\n disable: function( elem, disabled ) {\n var disabledClass = \"dk-option-disabled\";\n\n if ( arguments.length === 0 || typeof elem === \"boolean\" ) {\n disabled = elem === undefined ? true : false;\n elem = this.data.elem;\n disabledClass = \"dk-select-disabled\";\n this.disabled = disabled;\n }\n\n if ( disabled === undefined ) {\n disabled = true;\n }\n\n if ( typeof elem === \"number\" ) {\n elem = this.item( elem );\n }\n\n _[ disabled ? \"addClass\" : \"removeClass\" ]( elem, disabledClass );\n },\n\n /**\n * Selects an option from the list\n *\n * @method select\n * @param {String} elem The element, index, or value to select\n * @param {Boolean} disabled Selects disabled options\n * @return {Node} The selected element\n * @example\n * ```js\n * var elm = new Dropkick(\"#select\");\n *\n * // Select by index\n * elm.select(4); //selects & returns 5th item in the list\n *\n * // Select by value\n * elm.select(\"AL\"); // selects & returns option with the value \"AL\"\n * ```\n */\n select: function( elem, disabled ) {\n var i, index, option, combobox,\n select = this.data.select;\n\n if ( typeof elem === \"number\" ) {\n elem = this.item( elem );\n }\n\n if ( typeof elem === \"string\" ) {\n for ( i = 0; i < this.length; i++ ) {\n if ( this.options[ i ].getAttribute( \"data-value\" ) === elem ) {\n elem = this.options[ i ];\n }\n }\n }\n\n // No element or enabled option\n if ( !elem || typeof elem === \"string\" ||\n ( !disabled && _.hasClass( elem, \"dk-option-disabled\" ) ) ) {\n return false;\n }\n\n if ( _.hasClass( elem, \"dk-option\" ) ) {\n index = this.options.indexOf( elem );\n option = select.options[ index ];\n\n if ( this.multiple ) {\n _.toggleClass( elem, \"dk-option-selected\" );\n option.selected = !option.selected;\n\n if ( _.hasClass( elem, \"dk-option-selected\" ) ) {\n elem.setAttribute( \"aria-selected\", \"true\" );\n this.selectedOptions.push( elem );\n } else {\n elem.setAttribute( \"aria-selected\", \"false\" );\n index = this.selectedOptions.indexOf( elem );\n this.selectedOptions.splice( index, 1 );\n }\n } else {\n combobox = this.data.elem.firstChild;\n\n if ( this.selectedOptions.length ) {\n _.removeClass( this.selectedOptions[0], \"dk-option-selected\" );\n this.selectedOptions[0].setAttribute( \"aria-selected\", \"false\" );\n }\n\n _.addClass( elem, \"dk-option-selected\" );\n elem.setAttribute( \"aria-selected\", \"true\" );\n\n combobox.setAttribute( \"aria-activedescendant\", elem.id );\n combobox.className = \"dk-selected \" + option.className;\n combobox.innerHTML = option.text;\n\n this.selectedOptions[0] = elem;\n option.selected = true;\n }\n\n this.selectedIndex = select.selectedIndex;\n this.value = select.value;\n\n if ( !disabled ) {\n this.data.select.dispatchEvent( new CustomEvent(\"change\", {bubbles: this.data.settings.bubble}));\n }\n\n return elem;\n }\n },\n\n /**\n * Selects a single option from the list and scrolls to it (if the select is open or on multi-selects).\n * Useful for selecting an option after a search by the user. Important to note: this doesn't close the\n * dropdown when selecting. It keeps the dropdown open and scrolls to proper position.\n *\n * @method selectOne\n * @param {Integer} elem The element or index to select\n * @param {Boolean} disabled Selects disabled options\n * @return {Node} The selected element\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.selectOne(4);\n * ```\n */\n selectOne: function( elem, disabled ) {\n this.reset( true );\n this._scrollTo( elem );\n return this.select( elem, disabled );\n },\n\n /**\n * Finds all options who's text matches a pattern (strict, partial, or fuzzy)\n *\n * `\"strict\"` - The search string matches exactly from the beginning of the\n * option's text value (case insensitive).\n *\n * `\"partial\"` - The search string matches part of the option's text value\n * (case insensitive).\n *\n * `\"fuzzy\"` - The search string matches the characters in the given order (not\n * exclusively). The strongest match is selected first. (case insensitive).\n *\n * @method search\n * @param {String} string The string to search for\n * @param {Integer} mode How to search; \"strict\", \"partial\", or \"fuzzy\"\n * @return {Boolean} An Array of matched elements\n */\n search: function( pattern, mode ) {\n var i, tokens, str, tIndex, sIndex, cScore, tScore, reg,\n options = this.data.select.options,\n matches = [];\n\n if ( !pattern ) { return this.options; }\n\n // Fix Mode\n mode = mode ? mode.toLowerCase() : \"strict\";\n mode = mode === \"fuzzy\" ? 2 : mode === \"partial\" ? 1 : 0;\n\n reg = new RegExp( ( mode ? \"\" : \"^\" ) + pattern, \"i\" );\n\n for ( i = 0; i < options.length; i++ ) {\n str = options[ i ].text.toLowerCase();\n\n // Fuzzy\n if ( mode == 2 ) {\n tokens = pattern.toLowerCase().split(\"\");\n tIndex = sIndex = cScore = tScore = 0;\n\n while ( sIndex < str.length ) {\n if ( str[ sIndex ] === tokens[ tIndex ] ) {\n cScore += 1 + cScore;\n tIndex++;\n } else {\n cScore = 0;\n }\n\n tScore += cScore;\n sIndex++;\n }\n\n if ( tIndex === tokens.length ) {\n matches.push({ e: this.options[ i ], s: tScore, i: i });\n }\n\n // Partial or Strict (Default)\n } else {\n reg.test( str ) && matches.push( this.options[ i ] );\n }\n }\n\n // Sort fuzzy results\n if ( mode === 2 ) {\n matches = matches.sort( function ( a, b ) {\n return ( b.s - a.s ) || a.i - b.i;\n }).reduce( function ( p, o ) {\n p[ p.length ] = o.e;\n return p;\n }, [] );\n }\n\n return matches;\n },\n\n /**\n * Brings focus to the proper DK element\n *\n * @method focus\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * $(\"#some_elm\").on(\"click\", function() {\n * select.focus();\n * });\n * ```\n */\n focus: function() {\n if ( !this.disabled ) {\n ( this.multiple ? this.data.elem : this.data.elem.children[0] ).focus();\n }\n },\n\n /**\n * Resets the Dropkick and select to it's original selected options; if `clear` is `true`,\n * It will select the first option by default (or no options for multi-selects).\n *\n * @method reset\n * @param {Boolean} clear Defaults to first option if True\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * // Reset to originally `selected` option\n * select.reset();\n *\n * // Reset to first option in select\n * select.reset(true);\n * ```\n */\n reset: function( clear ) {\n var i,\n select = this.data.select;\n\n this.selectedOptions.length = 0;\n\n for ( i = 0; i < select.options.length; i++ ) {\n select.options[ i ].selected = false;\n _.removeClass( this.options[ i ], \"dk-option-selected\" );\n this.options[ i ].setAttribute( \"aria-selected\", \"false\" );\n if ( !clear && select.options[ i ].defaultSelected ) {\n this.select( i, true );\n }\n }\n\n if ( !this.selectedOptions.length && !this.multiple ) {\n this.select( 0, true );\n }\n },\n\n /**\n * Rebuilds the DK Object\n * (use if HTMLSelectElement has changed)\n *\n * @method refresh\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * //... [change original select] ...\n *\n * select.refresh();\n * ```\n */\n refresh: function() {\n this.dispose().init( this.data.select, this.data.settings );\n },\n\n /**\n * Removes the DK Object from the cache and the element from the DOM\n *\n * @method dispose\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.dispose();\n * ```\n */\n dispose: function() {\n delete Dropkick.cache[ this.data.cacheID ];\n this.data.elem.parentNode.removeChild( this.data.elem );\n this.data.select.removeAttribute( \"data-dkCacheId\" );\n return this;\n },\n\n // Private Methods\n\n /**\n * @method handleEvent\n * @private\n */\n handleEvent: function( event ) {\n if ( this.disabled ) { return; }\n\n switch ( event.type ) {\n case \"click\":\n this._delegate( event );\n break;\n case \"keydown\":\n this._keyHandler( event );\n break;\n case \"keypress\":\n this._searchOptions( event );\n break;\n case \"mouseover\":\n this._highlight( event );\n break;\n case \"reset\":\n this.reset();\n break;\n case \"change\":\n this.data.settings.change.call( this );\n break;\n }\n },\n\n\n /**\n * @method delegate\n * @private\n */\n _delegate: function( event ) {\n var selection, index, firstIndex, lastIndex,\n target = event.target;\n\n if ( _.hasClass( target, \"dk-option-disabled\" ) ) {\n return false;\n }\n\n if ( !this.multiple ) {\n this[ this.isOpen ? \"close\" : \"open\" ]();\n if ( _.hasClass( target, \"dk-option\" ) ) { this.select( target ); }\n } else {\n if ( _.hasClass( target, \"dk-option\" ) ) {\n selection = window.getSelection();\n if ( selection.type === \"Range\" ) selection.collapseToStart();\n\n if ( event.shiftKey ) {\n firstIndex = this.options.indexOf( this.selectedOptions[0] );\n lastIndex = this.options.indexOf( this.selectedOptions[ this.selectedOptions.length - 1 ] );\n index = this.options.indexOf( target );\n\n if ( index > firstIndex && index < lastIndex ) index = firstIndex;\n if ( index > lastIndex && lastIndex > firstIndex ) lastIndex = firstIndex;\n\n this.reset( true );\n\n if ( lastIndex > index ) {\n while ( index < lastIndex + 1 ) { this.select( index++ ); }\n } else {\n while ( index > lastIndex - 1 ) { this.select( index-- ); }\n }\n } else if ( event.ctrlKey || event.metaKey ) {\n this.select( target );\n } else {\n this.reset( true );\n this.select( target );\n }\n }\n }\n },\n\n /**\n * @method highlight\n * @private\n */\n _highlight: function( event ) {\n var i, option = event.target;\n\n if ( !this.multiple ) {\n for ( i = 0; i < this.options.length; i++ ) {\n _.removeClass( this.options[ i ], \"dk-option-highlight\" );\n }\n\n _.addClass( this.data.elem.lastChild, \"dk-select-options-highlight\" );\n _.addClass( option, \"dk-option-highlight\" );\n }\n },\n\n /**\n * @method keyHandler\n * @private\n */\n _keyHandler: function( event ) {\n var lastSelected, j,\n selected = this.selectedOptions,\n options = this.options,\n i = 1,\n keys = {\n tab: 9,\n enter: 13,\n esc: 27,\n space: 32,\n up: 38,\n down: 40\n };\n\n switch ( event.keyCode ) {\n case keys.up:\n i = -1;\n // deliberate fallthrough\n case keys.down:\n event.preventDefault();\n lastSelected = selected[ selected.length - 1 ];\n\n if ( _.hasClass( this.data.elem.lastChild, \"dk-select-options-highlight\" ) ) {\n _.removeClass( this.data.elem.lastChild, \"dk-select-options-highlight\" );\n for ( j = 0; j < options.length; j++ ) {\n if ( _.hasClass( options[ j ], \"dk-option-highlight\" ) ) {\n _.removeClass( options[ j ], \"dk-option-highlight\" );\n lastSelected = options[ j ];\n }\n }\n }\n\n i = options.indexOf( lastSelected ) + i;\n\n if ( i > options.length - 1 ) {\n i = options.length - 1;\n } else if ( i < 0 ) {\n i = 0;\n }\n\n if ( !this.data.select.options[ i ].disabled ) {\n this.reset( true );\n this.select( i );\n this._scrollTo( i );\n }\n break;\n case keys.space:\n if ( !this.isOpen ) {\n event.preventDefault();\n this.open();\n break;\n }\n // deliberate fallthrough\n case keys.tab:\n case keys.enter:\n for ( i = 0; i < options.length; i++ ) {\n if ( _.hasClass( options[ i ], \"dk-option-highlight\" ) ) {\n this.select( i );\n }\n }\n // deliberate fallthrough\n case keys.esc:\n if ( this.isOpen ) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n },\n\n /**\n * @method searchOptions\n * @private\n */\n _searchOptions: function( event ) {\n var results,\n self = this,\n keyChar = String.fromCharCode( event.keyCode || event.which ),\n\n waitToReset = function() {\n if ( self.data.searchTimeout ) {\n clearTimeout( self.data.searchTimeout );\n }\n\n self.data.searchTimeout = setTimeout(function() {\n self.data.searchString = \"\";\n }, 1000 );\n };\n\n if ( this.data.searchString === undefined ) {\n this.data.searchString = \"\";\n }\n\n waitToReset();\n\n this.data.searchString += keyChar;\n results = this.search( this.data.searchString, this.data.settings.search );\n\n if ( results.length ) {\n if ( !_.hasClass( results[0], \"dk-option-disabled\" ) ) {\n this.selectOne( results[0] );\n }\n }\n },\n\n /**\n * @method scrollTo\n * @private\n */\n _scrollTo: function( option ) {\n var optPos, optTop, optBottom,\n dkOpts = this.data.elem.lastChild;\n\n if ( option === -1 || ( typeof option !== \"number\" && !option ) ||\n ( !this.isOpen && !this.multiple ) ) {\n return false;\n }\n\n if ( typeof option === \"number\" ) {\n option = this.item( option );\n }\n\n optPos = _.position( option, dkOpts ).top;\n optTop = optPos - dkOpts.scrollTop;\n optBottom = optTop + option.offsetHeight;\n\n if ( optBottom > dkOpts.offsetHeight ) {\n optPos += option.offsetHeight;\n dkOpts.scrollTop = optPos - dkOpts.offsetHeight;\n } else if ( optTop < 0 ) {\n dkOpts.scrollTop = optPos;\n }\n }\n};\n\n// Static Methods\n\n/**\n * Builds the Dropkick element from a select element\n *\n * @method build\n * @private\n * @param {Node} sel The HTMLSelectElement\n * @return {Object} An object containing the new DK element and it's options\n */\nDropkick.build = function( sel, idpre ) {\n var selOpt, optList, i,\n options = [],\n\n ret = {\n elem: null,\n options: [],\n selected: []\n },\n\n addOption = function ( node ) {\n var option, optgroup, optgroupList, i,\n children = [];\n\n switch ( node.nodeName ) {\n case \"OPTION\":\n option = _.create( \"li\", {\n \"class\": \"dk-option \",\n \"data-value\": node.value,\n \"innerHTML\": node.text,\n \"role\": \"option\",\n \"aria-selected\": \"false\",\n \"id\": idpre + \"-\" + ( node.id || node.value.replace( \" \", \"-\" ) )\n });\n\n _.addClass( option, node.className );\n\n if ( node.disabled ) {\n _.addClass( option, \"dk-option-disabled\" );\n option.setAttribute( \"aria-disabled\", \"true\" );\n }\n\n if ( node.selected ) {\n _.addClass( option, \"dk-option-selected\" );\n option.setAttribute( \"aria-selected\", \"true\" );\n ret.selected.push( option );\n }\n\n ret.options.push( this.appendChild( option ) );\n break;\n case \"OPTGROUP\":\n optgroup = _.create( \"li\", { \"class\": \"dk-optgroup\" });\n\n if ( node.label ) {\n optgroup.appendChild( _.create( \"div\", {\n \"class\": \"dk-optgroup-label\",\n \"innerHTML\": node.label\n }));\n }\n\n optgroupList = _.create( \"ul\", {\n \"class\": \"dk-optgroup-options\"\n });\n\n for ( i = node.children.length; i--; children.unshift( node.children[ i ] ) );\n children.forEach( addOption, optgroupList );\n\n this.appendChild( optgroup ).appendChild( optgroupList );\n break;\n }\n };\n\n ret.elem = _.create( \"div\", {\n \"class\": \"dk-select\" + ( sel.multiple ? \"-multi\" : \"\" )\n });\n\n optList = _.create( \"ul\", {\n \"class\": \"dk-select-options\",\n \"id\": idpre + \"-listbox\",\n \"role\": \"listbox\"\n });\n\n sel.disabled && _.addClass( ret.elem, \"dk-select-disabled\" );\n ret.elem.id = idpre + ( sel.id ? \"-\" + sel.id : \"\" );\n _.addClass( ret.elem, sel.className );\n\n if ( !sel.multiple ) {\n selOpt = sel.options[ sel.selectedIndex ];\n ret.elem.appendChild( _.create( \"div\", {\n \"class\": \"dk-selected \" + selOpt.className,\n \"tabindex\": sel.tabindex || 0,\n \"innerHTML\": selOpt ? selOpt.text : ' ',\n \"id\": idpre + \"-combobox\",\n \"aria-live\": \"assertive\",\n \"aria-owns\": optList.id,\n \"role\": \"combobox\"\n }));\n optList.setAttribute( \"aria-expanded\", \"false\" );\n } else {\n ret.elem.setAttribute( \"tabindex\", sel.getAttribute( \"tabindex\" ) || \"0\" );\n optList.setAttribute( \"aria-multiselectable\", \"true\" );\n }\n\n for ( i = sel.children.length; i--; options.unshift( sel.children[ i ] ) );\n options.forEach( addOption, ret.elem.appendChild( optList ) );\n\n return ret;\n};\n\n/**\n * Focus DK Element when corresponding label is clicked; close all other DK's\n *\n * @method onDocClick\n * @private\n * @param {Object} event Event from document click\n */\nDropkick.onDocClick = function( event ) {\n var tId, i;\n\n if (event.target.nodeType !== 1) {\n return false;\n }\n\n if ( ( tId = event.target.getAttribute( \"data-dkcacheid\" ) ) !== null ) {\n Dropkick.cache[ tId ].focus();\n }\n\n for ( i in Dropkick.cache ) {\n if ( !_.closest( event.target, Dropkick.cache[ i ].data.elem ) && i !== tId ) {\n Dropkick.cache[ i ].disabled || Dropkick.cache[ i ].close();\n }\n }\n};\n\n\n// Add jQuery method\nif ( jQuery !== undefined ) {\n jQuery.fn.dropkick = function () {\n var args = Array.prototype.slice.call( arguments );\n return jQuery( this ).each(function() {\n if ( !args[0] || typeof args[0] === 'object' ) {\n new Dropkick( this, args[0] || {} );\n } else if ( typeof args[0] === 'string' ) {\n Dropkick.prototype[ args[0] ].apply( new Dropkick( this ), args.slice( 1 ) );\n }\n });\n };\n}\n\nreturn Dropkick;\n\n}));\n","module.exports = require(\"github:Robdel12/DropKick@2.1.7/lib/dropkick.js\");","'use strict';\n\nimport {Component, EventEmitter, ElementRef} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\nimport DropKick from 'Robdel12/DropKick';\nimport 'Robdel12/DropKick/build/css/dropkick.css!css';\n\n@Component({\n selector: 'dropdown',\n events: ['change'],\n template: `\n <select (change)=onChange($event.target.value)>\n <ng-content></ng-content>\n </select>\n `,\n directives: [CORE_DIRECTIVES],\n styles: [`\n :host .dk-select{max-width:100%;font-family:Montserrat,sans-serif;font-size:.929em;min-width:100px;width:auto}:host .dk-selected:after{display:none}:host .dk-selected{color:#263238;border-color:rgba(38,50,56,0.5);padding:0.15em 0.6em 0.2em 0.5em;border-radius:2px}:host .dk-select-open-down .dk-selected,:host .dk-selected:focus,:host .dk-selected:hover{border-color:#0033a0;color:#0033a0}:host .dk-selected:before{border-top-color:#263238;border-width:.35em .35em 0}:host .dk-select-open-down .dk-selected:before,:host .dk-select-open-up .dk-selected:before{border-bottom-color:#0033a0}:host .dk-select-multi:focus .dk-select-options,:host .dk-select-open-down .dk-select-options,:host .dk-select-open-up .dk-select-options{border-color:rgba(38,50,56,0.2)}:host .dk-select-options .dk-option-highlight{background:#ffffff}:host .dk-select-options{margin-top:0.2em;padding:0;border-radius:2px;box-shadow:0px 2px 4px 0px rgba(34,36,38,0.12),0px 2px 10px 0px rgba(34,36,38,0.08) !important}:host .dk-option{color:#263238;padding:0.16em 0.6em 0.2em 0.5em}:host .dk-option:hover{background-color:rgba(38,50,56,0.12)}:host .dk-option:focus{background-color:rgba(38,50,56,0.12)}:host .dk-option-selected{background-color:rgba(0,0,0,0.05) !important}\n `]\n})\n@Reflect.metadata('parameters', [[ElementRef]])\nexport class DropDown {\n constructor(elem) {\n this.change = new EventEmitter();\n this.elem = elem.nativeElement;\n }\n\n ngAfterContentInit() {\n this.inst = new DropKick(this.elem.firstElementChild, {autoWidth: true});\n }\n\n onChange(value) {\n this.change.next(value);\n }\n\n destroy() {\n this.inst.dispose();\n }\n}\n","/* */ \nvar IObject = require('./$.iobject'),\n defined = require('./$.defined');\nmodule.exports = function(it) {\n return IObject(defined(it));\n};\n","/* */ \nvar $export = require('./$.export'),\n core = require('./$.core'),\n fails = require('./$.fails');\nmodule.exports = function(KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY],\n exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function() {\n fn(1);\n }), 'Object', exp);\n};\n","/* */ \nvar toIObject = require('./$.to-iobject');\nrequire('./$.object-sap')('getOwnPropertyDescriptor', function($getOwnPropertyDescriptor) {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","/* */ \nvar $ = require('../../modules/$');\nrequire('../../modules/es6.object.get-own-property-descriptor');\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $.getDesc(it, key);\n};\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Object$getOwnPropertyDescriptor = require('../core-js/object/get-own-property-descriptor')[\"default\"];\nexports[\"default\"] = function get(_x, _x2, _x3) {\n var _again = true;\n _function: while (_again) {\n var object = _x,\n property = _x2,\n receiver = _x3;\n _again = false;\n if (object === null)\n object = Function.prototype;\n var desc = _Object$getOwnPropertyDescriptor(object, property);\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n if (parent === null) {\n return undefined;\n } else {\n _x = parent;\n _x2 = property;\n _x3 = receiver;\n _again = true;\n desc = parent = undefined;\n continue _function;\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n if (getter === undefined) {\n return undefined;\n }\n return getter.call(receiver);\n }\n }\n};\nexports.__esModule = true;\n","/* */ \nvar $ = require('../../modules/$');\nmodule.exports = function create(P, D) {\n return $.create(P, D);\n};\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","/* */ \nmodule.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","/* */ \nvar isObject = require('./$.is-object');\nmodule.exports = function(it) {\n if (!isObject(it))\n throw TypeError(it + ' is not an object!');\n return it;\n};\n","/* */ \nvar getDesc = require('./$').getDesc,\n isObject = require('./$.is-object'),\n anObject = require('./$.an-object');\nvar check = function(O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null)\n throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? function(test, buggy, set) {\n try {\n set = require('./$.ctx')(Function.call, getDesc(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) {\n buggy = true;\n }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy)\n O.__proto__ = proto;\n else\n set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","/* */ \nvar $export = require('./$.export');\n$export($export.S, 'Object', {setPrototypeOf: require('./$.set-proto').set});\n","/* */ \nrequire('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/$.core').Object.setPrototypeOf;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Object$create = require('../core-js/object/create')[\"default\"];\nvar _Object$setPrototypeOf = require('../core-js/object/set-prototype-of')[\"default\"];\nexports[\"default\"] = function(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = _Object$create(superClass && superClass.prototype, {constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }});\n if (superClass)\n _Object$setPrototypeOf ? _Object$setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nexports.__esModule = true;\n","/* */ \nvar $ = require('../../modules/$');\nmodule.exports = function defineProperty(it, key, desc) {\n return $.setDesc(it, key, desc);\n};\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Object$defineProperty = require('../core-js/object/define-property')[\"default\"];\nexports[\"default\"] = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor)\n descriptor.writable = true;\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\nexports.__esModule = true;\n","/* */ \n\"use strict\";\n\nexports[\"default\"] = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nexports.__esModule = true;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","/* */ \nmodule.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","/* */ \nvar aFunction = require('./$.a-function');\nmodule.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined)\n return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n};\n","/* */ \nvar global = require('./$.global'),\n core = require('./$.core'),\n ctx = require('./$.ctx'),\n PROTOTYPE = 'prototype';\nvar $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key,\n own,\n out;\n if (IS_GLOBAL)\n source = name;\n for (key in source) {\n own = !IS_FORCED && target && key in target;\n if (own && key in exports)\n continue;\n out = own ? target[key] : source[key];\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] : IS_BIND && own ? ctx(out, global) : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)\n (exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n};\n$export.F = 1;\n$export.G = 2;\n$export.S = 4;\n$export.P = 8;\n$export.B = 16;\n$export.W = 32;\nmodule.exports = $export;\n","/* */ \nvar $Object = Object;\nmodule.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n};","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};","/* */ \nvar defined = require('./$.defined');\nmodule.exports = function(it) {\n return Object(defined(it));\n};\n","/* */ \nvar toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","/* */ \nvar cof = require('./$.cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","/* */ \nmodule.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};","/* */ \nvar $ = require('./$'),\n toObject = require('./$.to-object'),\n IObject = require('./$.iobject');\nmodule.exports = require('./$.fails')(function() {\n var a = Object.assign,\n A = {},\n B = {},\n S = Symbol(),\n K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k) {\n B[k] = k;\n });\n return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;\n}) ? function assign(target, source) {\n var T = toObject(target),\n $$ = arguments,\n $$len = $$.length,\n index = 1,\n getKeys = $.getKeys,\n getSymbols = $.getSymbols,\n isEnum = $.isEnum;\n while ($$len > index) {\n var S = IObject($$[index++]),\n keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S),\n length = keys.length,\n j = 0,\n key;\n while (length > j)\n if (isEnum.call(S, key = keys[j++]))\n T[key] = S[key];\n }\n return T;\n} : Object.assign;\n","/* */ \nvar $export = require('./$.export');\n$export($export.S + $export.F, 'Object', {assign: require('./$.object-assign')});\n","/* */ \nvar core = module.exports = {version: '1.2.6'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","/* */ \nrequire('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/$.core').Object.assign;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","/* */ \n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","module.exports = require(\"npm:foreach@2.0.5/index.js\");","/* */ \n'use strict';\n\nvar each = require('foreach');\nmodule.exports = api;\n\n\n/**\n * Convenience wrapper around the api.\n * Calls `.get` when called with an `object` and a `pointer`.\n * Calls `.set` when also called with `value`.\n * If only supplied `object`, returns a partially applied function, mapped to the object.\n *\n * @param obj\n * @param pointer\n * @param value\n * @returns {*}\n */\n\nfunction api (obj, pointer, value) {\n // .set()\n if (arguments.length === 3) {\n return api.set(obj, pointer, value);\n }\n // .get()\n if (arguments.length === 2) {\n return api.get(obj, pointer);\n }\n // Return a partially applied function on `obj`.\n var wrapped = api.bind(api, obj);\n\n // Support for oo style\n for (var name in api) {\n if (api.hasOwnProperty(name)) {\n wrapped[name] = api[name].bind(wrapped, obj);\n }\n }\n return wrapped;\n}\n\n\n/**\n * Lookup a json pointer in an object\n *\n * @param obj\n * @param pointer\n * @returns {*}\n */\napi.get = function get (obj, pointer) {\n var tok,\n refTokens = api.parse(pointer);\n while (refTokens.length) {\n tok = refTokens.shift();\n if (!(tok in obj)) {\n throw new Error('Invalid reference token: ' + tok);\n }\n obj = obj[tok];\n }\n return obj;\n};\n\n/**\n * Sets a value on an object\n *\n * @param obj\n * @param pointer\n * @param value\n */\napi.set = function set (obj, pointer, value) {\n var refTokens = api.parse(pointer),\n tok,\n nextTok = refTokens[0];\n while (refTokens.length > 1) {\n tok = refTokens.shift();\n if (tok === '-' && Array.isArray(obj)) {\n tok = obj.length;\n }\n nextTok = refTokens[0];\n\n if (!(tok in obj)) {\n if (nextTok.match(/^(\\d+|-)$/)) {\n obj[tok] = [];\n } else {\n obj[tok] = {};\n }\n }\n obj = obj[tok];\n }\n if (nextTok === '-' && Array.isArray(obj)) {\n nextTok = obj.length;\n }\n obj[nextTok] = value;\n return this;\n};\n\n/**\n * Removes an attribute\n *\n * @param obj\n * @param pointer\n */\napi.remove = function (obj, pointer) {\n var refTokens = api.parse(pointer);\n var finalToken = refTokens.pop();\n if (finalToken === undefined) {\n throw new Error('Invalid JSON pointer for remove: \"' + pointer + '\"');\n }\n delete api.get(obj, api.compile(refTokens))[finalToken];\n};\n\n/**\n * Returns a (pointer -> value) dictionary for an object\n *\n * @param obj\n * @param {function} descend\n * @returns {}\n */\napi.dict = function dict (obj, descend) {\n var results = {};\n api.walk(obj, function (value, pointer) {\n results[pointer] = value;\n }, descend);\n return results;\n};\n\n/**\n * Iterates over an object\n * Iterator: function (value, pointer) {}\n *\n * @param obj\n * @param {function} iterator\n * @param {function} descend\n */\napi.walk = function walk (obj, iterator, descend) {\n var refTokens = [];\n\n descend = descend || function (value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Object]' || type === '[object Array]';\n };\n\n (function next (cur) {\n each(cur, function (value, key) {\n refTokens.push(String(key));\n if (descend(value)) {\n next(value);\n } else {\n iterator(value, api.compile(refTokens));\n }\n refTokens.pop();\n });\n }(obj));\n};\n\n/**\n * Tests if an object has a value for a json pointer\n *\n * @param obj\n * @param pointer\n * @returns {boolean}\n */\napi.has = function has (obj, pointer) {\n try {\n api.get(obj, pointer);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * Escapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.escape = function escape (str) {\n return str.toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n};\n\n/**\n * Unescapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.unescape = function unescape (str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n};\n\n/**\n * Converts a json pointer into a array of reference tokens\n *\n * @param pointer\n * @returns {Array}\n */\napi.parse = function parse (pointer) {\n if (pointer === '') { return []; }\n if (pointer.charAt(0) !== '/') { throw new Error('Invalid JSON pointer: ' + pointer); }\n return pointer.substring(1).split(/\\//).map(api.unescape);\n};\n\n/**\n * Builds a json pointer from a array of reference tokens\n *\n * @param refTokens\n * @returns {string}\n */\napi.compile = function compile (refTokens) {\n if (refTokens.length === 0) { return ''; }\n return '/' + refTokens.map(api.escape).join('/');\n};\n","module.exports = require(\"npm:json-pointer@0.3.0/index\");","'use strict';\nimport JsonPointerLib from 'json-pointer';\n\n/**\n * Wrapper for JsonPointer. Provides common operations\n */\nexport class JsonPointer extends JsonPointerLib {\n /**\n * returns last JsonPointer token\n * if level > 1 returns levels last (second last/third last)\n * @example\n * // returns subpath\n * JsonPointerHelper.baseName('/path/0/subpath')\n * // returns foo\n * JsonPointerHelper.baseName('/path/foo/subpath', 2)\n */\n static baseName(pointer, level=1) {\n let tokens = JsonPointer.parse(pointer);\n return tokens[tokens.length - (level)];\n }\n\n /**\n * returns dirname of pointer\n * if level > 1 returns corresponding dirname in the hierarchy\n * @example\n * // returns /path/0\n * JsonPointerHelper.dirName('/path/0/subpath')\n * // returns /path\n * JsonPointerHelper.dirName('/path/foo/subpath', 2)\n */\n static dirName(pointer, level=1) {\n let tokens = JsonPointer.parse(pointer);\n return JsonPointer.compile(tokens.slice(0, tokens.length - level));\n }\n\n /**\n * overridden JsonPointer original parse to take care of prefixing '#' symbol\n * that is not valid JsonPointer\n */\n static parse(pointer) {\n let ptr = pointer;\n if (ptr.charAt(0) === '#') {\n ptr = ptr.substring(1);\n }\n return JsonPointerLib._origParse(ptr);\n }\n\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param {string} base - The base path\n * @param {string|string[]} tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns {string}\n */\n static join(base, tokens) {\n // TODO: optimize\n let baseTokens = JsonPointer.parse(base);\n let resTokens = baseTokens.concat(tokens);\n return JsonPointer.compile(resTokens);\n }\n}\n\nJsonPointerLib._origParse = JsonPointerLib.parse;\nJsonPointerLib.parse = JsonPointer.parse;\n\n\nObject.assign(JsonPointer, JsonPointerLib);\nexport default JsonPointer;\n","'use strict';\n\nimport {ElementRef} from 'angular2/core';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport {DropDown} from '../../common/components/DropDown/dropdown';\nimport JsonPointer from '../../utils/JsonPointer';\n\n@RedocComponent({\n selector: 'json-schema',\n template: `\n <span *ngIf=\"schema.isTrivial\" class=\"param-wrap\">\n <span class=\"param-type param-type-trivial {{schema.type}}\"\n [ngClass]=\"{'with-hint': schema._displayTypeHint}\"\n title=\"{{schema._displayTypeHint}}\">{{schema._displayType}} {{schema._displayFormat}}\n <span class=\"param-range\" *ngIf=\"schema._range\"> {{schema._range}} </span>\n </span>\n <div *ngIf=\"schema.enum\" class=\"param-enum\">\n <span *ngFor=\"let enumItem of schema.enum\" class=\"enum-value {{enumItem.type}}\"> {{enumItem.val | json}} </span>\n </div>\n </span>\n <table *ngIf=\"!schema.isTrivial\" class=\"params-wrap\" [ngClass]=\"{'params-array': schema._isArray}\">\n <!-- <caption> {{_displayType}} </caption> -->\n <template ngFor [ngForOf]=\"schema.properties\" let-prop=\"$implicit\" let-last=\"last\">\n <tr class=\"param\" [ngClass]=\"{'last': last,\n 'discriminator': prop.isDiscriminator && !derivedEmtpy,\n 'complex': prop._pointer,\n 'additional': prop._additional\n }\">\n <td class=\"param-name\">\n <span class=\"param-name-content\">{{prop._name}}</span>\n </td>\n <td class=\"param-info\">\n <div>\n <span class=\"param-type {{prop.type}}\" [ngClass]=\"{'with-hint': prop._displayTypeHint}\"\n title=\"{{prop._displayTypeHint}}\"> {{prop._displayType}} {{prop._displayFormat}}\n <span class=\"param-range\" *ngIf=\"prop._range\"> {{prop._range}} </span>\n </span>\n <span *ngIf=\"prop.required\" class=\"param-required\">Required</span>\n <div *ngIf=\"prop.enum && !prop.isDiscriminator\" class=\"param-enum\">\n <span *ngFor=\"let enumItem of prop.enum\" class=\"enum-value {{enumItem.type}}\"> {{enumItem.val | json}} </span>\n </div>\n </div>\n <div class=\"param-description\" innerHtml=\"{{prop.description | marked}}\"></div>\n <div class=\"discriminator-info\" *ngIf=\"prop.isDiscriminator\">\n <span>This field value determines the exact schema:</span>\n <dropdown (change)=\"selectDerived($event)\">\n <option *ngFor=\"let derived of schema.derived; let i=index\"\n [value]=\"i\">{{derived.name}}</option>\n </dropdown>\n </div>\n </td>\n </tr>\n <tr class=\"param-schema\" [ngClass]=\"{'param-array': prop._isArray, 'last': last}\" *ngIf=\"prop._pointer\">\n <td colspan=\"2\">\n <json-schema class=\"nested-schema\" pointer=\"{{prop._pointer}}\" [isArray]='prop._isArray'\n [nestOdd]=\"!nestOdd\" [skipReadOnly]=\"skipReadOnly\" [attr.nesteven]=\"!nestOdd\">\n </json-schema>\n </td>\n </tr>\n </template>\n <tr *ngIf=\"schema.derived.length\" class=\"param-wrap discriminator-wrap\" [ngClass]=\"{'empty': derivedEmtpy}\">\n <td colspan=\"2\">\n <div class=\"derived-schema\" *ngFor=\"let derived of schema.derived\" [ngClass]=\"{active: derived.active}\">\n <json-schema class=\"discriminator-part\" *ngIf=\"!derived.empty\" [childFor]=\"pointer\"\n pointer=\"{{derived.$ref}}\" [final]=\"derived.final\" [skipReadOnly]=\"skipReadOnly\">\n </json-schema>\n </div>\n </td>\n </tr>\n </table>\n `,\n styles: [`\n .param-name{font-size:0.929em;padding:10px 0 10px 0;font-weight:400;box-sizing:border-box;line-height:20px;border-left:1px solid rgba(0,51,160,0.5);white-space:nowrap;position:relative;vertical-align:top}.param-name-content{padding-right:25px;display:inline-block;font-family:Montserrat,sans-serif}.param-info{padding:10px 0;box-sizing:border-box;border-bottom:1px solid #ccc;width:75%}.param-range{color:rgba(0,51,160,0.7);position:relative;top:1px;padding:0 4px;border-radius:2px;background-color:rgba(0,51,160,0.1);margin-left:6px}.param-description{font-size:13px}.param-required{color:red;font-weight:bold;font-size:12px;line-height:20px;vertical-align:middle}.param-type{color:rgba(38,50,56,0.4);font-size:0.929em;line-height:20px;vertical-align:middle;font-weight:normal}.param-type.array:before{content:\"Array of \";color:#263238;font-weight:300}.param-type.with-hint{display:inline-block;margin-bottom:0.4em;border-bottom:1px dotted rgba(38,50,56,0.4);padding:0;cursor:help}.param-type-trivial{margin:10px 10px 0;display:inline-block}.param-name>span:before{content:\"\";display:inline-block;width:1px;height:7px;background-color:#0033a0;margin:0 10px;vertical-align:middle}.param-name>span:after{content:\"\";position:absolute;border-top:1px solid rgba(0,51,160,0.5);width:10px;left:0;top:21px}.param:first-of-type>.param-name:before{content:\"\";display:block;position:absolute;left:-1px;top:0;border-left:2px solid #fff;height:21px}.param:last-of-type>.param-name,.param.last>.param-name{position:relative}.param:last-of-type>.param-name:after,.param.last>.param-name:after{content:\"\";display:block;position:absolute;left:-2px;border-left:2px solid #fff;top:22px;background-color:white;bottom:0}.param-wrap:last-of-type>.param-schema{border-left-color:transparent}.param-schema .param-wrap:first-of-type .param-name:before{display:none !important}.param-schema.last>td{border-left:0}.param-enum{color:#263238;font-size:13px}.param-enum:before{content:\"Values: {\"}.param-enum:after{content:\"}\"}.param-enum>.enum-value:after{content:\", \"}.param-enum>.enum-value:last-of-type:after{content:none}:host{display:block}.param-schema>td{border-left:1px solid rgba(0,51,160,0.5);padding:0 10px}.derived-schema{display:none}.derived-schema.active{display:block}json-schema.nested-schema{background-color:white;padding:10px 20px;position:relative;border-radius:2px}json-schema.nested-schema:before,json-schema.nested-schema:after{content:\"\";width:0;height:0;position:absolute;top:0;border-style:solid;border-color:transparent;border-width:10px 15px 0;margin-left:-7.5px;border-top-color:#f0f0f0}json-schema.nested-schema:before{left:10%}json-schema.nested-schema:after{right:10%}json-schema.nested-schema .param:first-of-type>.param-name:before,json-schema.nested-schema .param:last-of-type>.param-name:after{border-color:white}json-schema[nesteven=\"true\"]{background-color:#f0f0f0;border-radius:2px}json-schema[nesteven=\"true\"]:before,json-schema[nesteven=\"true\"]:after{border-top-color:white}json-schema[nesteven=\"true\"]>.params-wrap>.param:first-of-type>.param-name:before,json-schema[nesteven=\"true\"]>.params-wrap>.param:last-of-type>.param-name:after{border-color:#f0f0f0}json-schema[nesteven=\"true\"]>.params-wrap>.param:last-of-type>.param-name:after,json-schema[nesteven=\"true\"]>.params-wrap>.param.last>.param-name:after{border-color:#f0f0f0}.param.complex>.param-info{border-bottom:0}.param.additional>.param-name{color:rgba(38,50,56,0.4)}.params-wrap{border-collapse:collapse;width:100%}.params-wrap.params-array:before,.params-wrap.params-array:after{display:block;font-weight:300;color:#263238;font-size:13px;line-height:1.5}.params-wrap.params-array:after{content:\"]\"}.params-wrap.params-array:before{content:\"Array [\";padding-top:1em}.params-wrap.params-array{padding-left:10px}.param-schema.param-array:before{bottom:9.75px;width:10px;border-left-style:dashed;border-bottom:1px dashed rgba(0,51,160,0.5)}.params-wrap.params-array>.param-wrap:first-of-type>.param>.param-name:after{content:\"\";display:block;position:absolute;left:-1px;top:0;border-left:2px solid #fff;height:20px}.params-wrap>.param>.param-schema.param-array{border-left-color:transparent}.param.discriminator>.param-info{padding-bottom:0;border-bottom:0}.param.discriminator>.param-name:after{display:none}.discriminator-info{font-weight:400;margin-bottom:10px}.discriminator-info>span{font-size:0.9em;font-weight:300}.discriminator-wrap:not(.empty)>td{padding:0;position:relative}.discriminator-wrap:not(.empty)>td:before{content:\"\";display:block;position:absolute;left:0;top:0;border-left:1px solid rgba(0,51,160,0.5);height:21px;z-index:1}ul{text-align:left;margin:0;padding:0;display:block}li{margin:0.5em 0.3em 0.2em 0;font-family:Montserrat,sans-serif;font-size:.929em;line-height:.929em;border:0;color:white;padding:2px 8px 4px 8px;border-radius:2px;background-color:rgba(38,50,56,0.3);display:inline-block;cursor:pointer}li:last-of-type{margin-right:0}li.active{background-color:#0033a0}\n `],\n directives: [JsonSchema, DropDown],\n inputs: ['isArray', 'final', 'nestOdd', 'childFor', 'skipReadOnly']\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef]])\nexport default class JsonSchema extends BaseComponent {\n constructor(schemaMgr, elementRef) {\n super(schemaMgr);\n this.$element = elementRef.nativeElement;\n this.final = false;\n }\n\n selectDerived(subClassIdx) {\n let subClass = this.schema.derived[subClassIdx];\n if (!subClass || subClass.active) return;\n this.schema.derived.forEach((subSchema) => {\n subSchema.active = false;\n });\n subClass.active = true;\n this.derivedEmtpy = false;\n if (subClass.empty) this.derivedEmtpy = true;\n }\n\n unwrapArray(schema) {\n var res = schema;\n if (schema && schema.type === 'array') {\n let ptr = schema.items._pointer\n || JsonPointer.join(schema._pointer || this.pointer, ['items']);\n res = schema.items;\n res._isArray = true;\n res._pointer = ptr;\n res = this.unwrapArray(res);\n }\n return res;\n }\n\n prepareModel() {\n if (!this.componentSchema) {\n throw new Error(`Can't load component schema at ${this.pointer}`);\n }\n this.dereference();\n\n let schema = this.componentSchema;\n BaseComponent.joinAllOf(schema, {omitParent: true});\n schema = this.unwrapArray(schema);\n runInjectors(schema, schema, schema._pointer || this.pointer);\n\n schema.derived = schema.derived || [];\n\n if (!schema.isTrivial) {\n this.prepareObjectPropertiesData(schema);\n }\n\n this.schema = schema;\n this.initDerived();\n }\n\n initDerived() {\n if (!this.schema.derived.length) return;\n let enumArr = this.schema.properties[this.schema.properties.length - 1].enum;\n if (enumArr) {\n let enumOrder = {};\n enumArr.forEach((enumItem, idx) => {\n enumOrder[enumItem.val] = idx;\n });\n\n this.schema.derived.sort((a, b) => {\n return enumOrder[a.name] > enumOrder[b.name];\n });\n }\n this.selectDerived(0);\n }\n\n prepareObjectPropertiesData(schema) {\n let requiredMap = {};\n if (schema.required) {\n schema.required.forEach(prop => requiredMap[prop] = true);\n }\n\n let discriminatorFieldIdx = -1;\n let props = schema.properties && Object.keys(schema.properties).map((prop, idx) => {\n let propertySchema = schema.properties[prop];\n let propPointer = propertySchema._pointer ||\n JsonPointer.join(schema._pointer || this.pointer, ['properties', prop]);\n propertySchema = JsonSchema.injectPropertyData(propertySchema, prop, propPointer);\n // stop endless discriminator recursion\n if (propertySchema._pointer === this.childFor) {\n propertySchema._pointer = null;\n }\n propertySchema.required = !!requiredMap[prop];\n propertySchema.isDiscriminator = (schema.discriminator === prop);\n if (propertySchema.isDiscriminator) {\n discriminatorFieldIdx = idx;\n }\n return propertySchema;\n });\n\n props = props || [];\n\n if (schema.additionalProperties && schema.additionalProperties !== false) {\n let propsSchema = this.prepareAdditionalProperties(schema.additionalProperties);\n propsSchema._additional = true;\n props.push(propsSchema);\n }\n\n // Move discriminator field to the end of properties list\n if (discriminatorFieldIdx > -1) {\n let discrProp = props.splice(discriminatorFieldIdx, 1);\n props.push(discrProp[0]);\n }\n if (this.skipReadOnly) {\n props = props.filter(prop => !prop.readOnly);\n }\n schema.properties = props;\n }\n\n prepareAdditionalProperties(schema) {\n return JsonSchema.injectPropertyData(schema, '<Additional Properties> *',\n JsonPointer.join(schema._pointer || this.pointer, ['additionalProperties']));\n }\n\n static injectPropertyData(propertySchema, propertyName, propPointer) {\n propertySchema = Object.assign({}, propertySchema);\n\n propertySchema._name = propertyName;\n runInjectors(propertySchema, propertySchema, propPointer);\n\n return propertySchema;\n }\n}\n\nfunction runInjectors(injectTo, propertySchema, propertyPointer) {\n for (var injName in injectors) {\n let injector = injectors[injName];\n if (injector.check(propertySchema)) {\n injector.inject(injectTo, propertySchema, propertyPointer);\n }\n }\n}\n\nconst injectors = {\n general: {\n check: () => true,\n inject: (injectTo, propertySchema, pointer) => {\n injectTo._pointer = propertySchema._pointer || pointer;\n injectTo._displayType = propertySchema.type;\n if (propertySchema.format) injectTo._displayFormat = `<${propertySchema.format}>`;\n if (propertySchema.enum) {\n injectTo.enum = propertySchema.enum.map((value) => {\n return {val: value, type: typeof value};\n });\n }\n }\n },\n discriminator: {\n check: (propertySchema) => propertySchema.discriminator,\n inject: (injectTo, propertySchema = injectTo, pointer) => {\n injectTo.derived = SchemaManager.instance().findDerivedDefinitions(pointer);\n injectTo.discriminator = propertySchema.discriminator;\n }\n },\n array: {\n check: (propertySchema) => {\n return propertySchema.type === 'array';\n },\n inject: (injectTo, propertySchema = injectTo, propPointer) => {\n injectTo._isArray = true;\n injectTo._pointer = propertySchema.items._pointer\n || JsonPointer.join(propertySchema._pointer || propPointer, ['items']);\n\n runInjectors(injectTo, propertySchema.items, propPointer);\n }\n },\n\n object: {\n check: (propertySchema) => {\n return propertySchema.type === 'object' && propertySchema.properties;\n },\n inject: (injectTo, propertySchema = injectTo) => {\n let baseName = propertySchema._pointer && JsonPointer.baseName(propertySchema._pointer);\n injectTo._displayType = propertySchema.title || baseName || 'object';\n }\n },\n noType: {\n check: (propertySchema) => !propertySchema.type,\n inject: (injectTo) => {\n injectTo._displayType = '< * >';\n injectTo._displayTypeHint = 'This field may contain data of any type';\n injectTo.isTrivial = true;\n }\n },\n\n simpleType: {\n check: (propertySchema) => {\n if (propertySchema.type === 'object') {\n return (!propertySchema.properties || !Object.keys(propertySchema.properties).length)\n && (typeof propertySchema.additionalProperties !== 'object');\n }\n return (propertySchema.type !== 'array') && propertySchema.type;\n },\n inject: (injectTo, propertySchema = injectTo) => {\n injectTo.isTrivial = true;\n if (injectTo._pointer) {\n injectTo._pointer = undefined;\n injectTo._displayType = propertySchema.title ?\n `${propertySchema.title} (${propertySchema.type})` : propertySchema.type;\n }\n }\n },\n integer: {\n check: (propertySchema) => (propertySchema.type === 'integer' || propertySchema.type === 'number'),\n inject: (injectTo, propertySchema = injectTo) => {\n var range = '';\n if (propertySchema.minimum && propertySchema.maximum) {\n range += propertySchema.exclusiveMinimum ? '( ' : '[ ';\n range += propertySchema.minimum;\n range += ' .. ';\n range += propertySchema.maximum;\n range += propertySchema.exclusiveMaximum ? ' )' : ' ]';\n } else if (propertySchema.maximum) {\n range += propertySchema.exclusiveMaximum? '< ' : '<= ';\n range += propertySchema.maximum;\n } else if (propertySchema.minimum) {\n range += propertySchema.exclusiveMinimum ? '> ' : '>= ';\n range += propertySchema.minimum;\n }\n\n if (range) {\n injectTo._range = range;\n }\n }\n },\n string: {\n check: propertySchema => (propertySchema.type === 'string'),\n inject: (injectTo, propertySchema = injectTo) => {\n var range;\n if (propertySchema.minLength && propertySchema.maxLength) {\n range = `[ ${propertySchema.minLength} .. ${propertySchema.maxLength} ]`;\n } else if (propertySchema.maxLength) {\n range = '<= ' + propertySchema.maxLength;\n } else if (propertySchema.minimum) {\n range = '>= ' + propertySchema.minLength;\n }\n\n if (range) {\n injectTo._range = range + ' characters';\n }\n }\n }\n};\n","'use strict';\n\nimport ApiInfo from './ApiInfo/api-info';\nimport ApiLogo from './ApiLogo/api-logo';\nimport Method from './Method/method.js';\nimport MethodsList from './MethodsList/methods-list';\nimport ParamsList from './ParamsList/params-list';\nimport Redoc from './Redoc/redoc';\nimport ResponsesList from './ResponsesList/responses-list';\nimport ResponsesSamples from './ResponsesSamples/responses-samples';\nimport SchemaSample from './SchemaSample/schema-sample';\nimport SideMenu from './SideMenu/side-menu';\nimport JsonSchema from './JsonSchema/json-schema';\n\nconst REDOC_COMPONENTS = [\n ApiInfo,\n ApiLogo,\n JsonSchema,\n Method,\n MethodsList,\n ParamsList,\n Redoc,\n ResponsesList,\n ResponsesSamples,\n SchemaSample,\n SideMenu\n];\n\nexport {\n ApiInfo,\n ApiLogo,\n JsonSchema,\n Method,\n MethodsList,\n ParamsList,\n Redoc,\n ResponsesList,\n ResponsesSamples,\n SchemaSample,\n SideMenu,\n REDOC_COMPONENTS\n};\n","'use strict';\n\nimport {Redoc} from './components/index';\nexport var init = Redoc.init;\n\nwindow.Redoc = Redoc;\nRedoc.autoInit();\n"],"sourceRoot":"/source/"} |